<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33528550</id><updated>2017-10-27T14:16:01.152-07:00</updated><category term="emacs"/><category term="programing"/><category term="web dev"/><category term="computing"/><category term="society"/><category term="keyboarding"/><category term="pop"/><category term="math"/><category term="arts"/><category term="music"/><category term="internet"/><category term="computer languages"/><category term="sex"/><category term="politics"/><category term="lisp"/><category term="tech geekers"/><category term="humor"/><category term="functional programing"/><category term="second life"/><category term="literature"/><category term="windows"/><category term="Xah Lee"/><category term="linguistics"/><category term="linux"/><category term="xahlee.org"/><category term="seo"/><category term="american"/><category term="china"/><category term="gaming"/><category term="software"/><category term="juggling"/><category term="misc"/><category term="religion"/><category term="mac"/><title type='text'>Xah at Blogger</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Xah Lee</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1844</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33528550.post-2279682532931382217</id><published>2016-06-19T16:20:00.000-07:00</published><updated>2016-06-19T20:37:26.656-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>11 Years of Writing About Emacs</title><content type='html'>

&lt;p&gt;&lt;a href=&quot;http://ergoemacs.org/emacs/emacs_winner_mode.html&quot;&gt;Emacs: Save Split Windows Configuration&lt;/a&gt; (updated.)&lt;/p&gt;

&lt;p&gt;There are about 6 hundred pages of tutorials on this site. About one third are
emacs tutotial, half are elisp tutorial and commands or elisp scripts tutorial, and lots articles on
keybinding and keyboard and Repetitive Strain Injury, and also
commentaries and essays on emacs, emacs community, etc, such as:&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;http://ergoemacs.org/tn/emacs/i/emacs_M-x_donuts_2012-09-15.jpg&quot; alt=&quot;emacs M-x donuts 2012-09-15&quot; width=&quot;173&quot; height=&quot;231&quot; /&gt;
&lt;figcaption&gt;
&lt;a href=&quot;http://ergoemacs.org/misc/M-x_donuts.html&quot;&gt;M-x Donuts&lt;/a&gt;
〔➤see &lt;a href=&quot;http://ergoemacs.org/emacs/emacs_essays_index.html&quot;&gt;Emacs Related Essays&lt;/a&gt;〕
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I update them about daily. What&#39;s to update? lots of things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;code update. Lots of them are enhanced commands, which i use and regulary improve. New features, or fixe bugs.&lt;/li&gt;
&lt;li&gt;emacs, like every other software, changes. I have to keep up. Command name changes, keys change, packages obsoletion, function obsoletion, new feature to do X. All these happens. For example, lexical scope, CL package, magit keys and commands kept changing, etc.&lt;/li&gt;
&lt;li&gt;Writing improvement. Correct typo, improve sentence, or change style, structure, or rewrite whole. Yes. Many tutorial pages began life as blog from a decade ago. Blog tends to be chatty and potshot, and tends to become obsolete fast. They need to be professionalized as tutorial proper. Covering lots topics, organization, structured.&lt;/li&gt;
&lt;li&gt;Website and design issues. Yes, a web site doesn&#39;t maintin itself. CSS, JavaScript, changes faster than speed of light today. You have to keep up. And, design of your site, restructure, navigation bars, and code them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I started to blog about emacs back in 2005. Now, it&#39;s 11 years.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;http://ergoemacs.org/emacs/i/xah_emacs_tutorial_2006_screenshot.png&quot; alt=&quot;xah emacs tutorial 2006 screenshot&quot; width=&quot;883&quot; height=&quot;791&quot; /&gt;
&lt;figcaption&gt;
here&#39;s my emacs tutorial back in 2006 Feb. &lt;a class=&quot;sorc&quot; href=&quot;https://web.archive.org/web/20060221050036/http://xahlee.org/emacs/emacs.html&quot; data-accessed=&quot;2016-06-19&quot;&gt;https://web.archive.org/web/20060221050036/http://xahlee.org/emacs/emacs.html&lt;/a&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;What Tools Are Used to Build This Site?&lt;/h3&gt;

&lt;p&gt;emacs, of course. The following i use daily, and are the main tools to create this site:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;xah-fly-keys.el&lt;/li&gt;
&lt;li&gt;xah-html-mode.el&lt;/li&gt;
&lt;li&gt;xah-css-mode.el&lt;/li&gt;
&lt;li&gt;xah-js-mode.el&lt;/li&gt;
&lt;li&gt;xah-find.el&lt;/li&gt;
&lt;li&gt;htmlize.el (for syntax coloring code in html)&lt;/li&gt;
&lt;li&gt;rsync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and lots of personal emacs commands in my init file.&lt;/p&gt;

&lt;p&gt;I basically write it manually, or semi-manually, with lots of help
of custom emacs commands.
In the very beginning, every html tag is typed manually, char by char.
Now, set of tags are inserted by emacs command on demand.
&lt;/p&gt;

&lt;p&gt;Though, i must say, I think my system is faster,
less keystrokes, more flexible, more efficient — in a scientifically
verifiable way, than any content management system or publishing
system out there. org, markdown, wordpress, jekyll, zen,
what-have-you.&lt;/p&gt;

&lt;p&gt;(actually, the above is not too surprising. Because, if you know a subject well, deeply customized system is far more efficient than any off-the-shelf system, and also, you have precise control.)&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/2279682532931382217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/06/11-years-of-writing-about-emacs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2279682532931382217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2279682532931382217'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/06/11-years-of-writing-about-emacs.html' title='11 Years of Writing About Emacs'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-3339469872847545613</id><published>2016-06-17T15:35:00.000-07:00</published><updated>2016-06-17T15:36:21.929-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>emacs M-x customize, good or bad?</title><content type='html'>&lt;p&gt;Clément Pit-Claudel gave a great answer about why
pulling stuff out of
&lt;code class=&quot;elisp-ƒ&quot;&gt;custom-set-variables&lt;/code&gt;
to &lt;code class=&quot;elisp-ƒ&quot;&gt;setq&lt;/code&gt;
may not work.
See comment at
&lt;a href=&quot;http://ergoemacs.org/emacs/emacs_stop_cursor_enter_prompt.html#comment-2734992432&quot;&gt;Emacs: Stop Cursor Going into Minibuffer Prompt#comment-2734992432&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;also see
comment by bhyde at
&lt;a href=&quot;http://ergoemacs.org/emacs/emacs_custom_system.html#comment-2663524352&quot;&gt;Emacs&#39;s Customization Tutorial#comment-2663524352&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the bottom line is that, if you pull out lines from
&lt;code class=&quot;elisp-ƒ&quot;&gt;custom-set-variables&lt;/code&gt;
and change it to &lt;code class=&quot;elisp-ƒ&quot;&gt;setq&lt;/code&gt;, it may not work.&lt;/p&gt;

&lt;p&gt;i wasn&#39;t too pleased about this. This means, the
&lt;code class=&quot;elisp-ƒ&quot;&gt;defcustom&lt;/code&gt;
is more complex than otherwise
acting as &lt;code class=&quot;elisp-ƒ&quot;&gt;defvar&lt;/code&gt; with a User Interface.&lt;/p&gt;

&lt;p&gt;on this subject, there&#39;s the question about whether emacs&#39;s customize system is a good thing.
(it was controversial).
I think it&#39;s a mixed bag.&lt;/p&gt;

&lt;p&gt;There&#39;s elisp, which is the core of all emacs and all customization.
Why should we add a layer?
Now, there are 2 ways to do the same thing.
Also, the Graphical User Interface layer isn&#39;t complete, as not all customization can be done with it. (e.g. hooks, which is rather quite common and basic.)
On the other hand, it does provide a explicit structure to declare what variables are user
preference
related, and with it, a text based graphical user interface.
&lt;/p&gt;

&lt;p&gt;but, it isn&#39;t a full system, and is not required nor enforced in
packages. The consequence of this is that, there&#39;s inconsistency.&lt;/p&gt;

&lt;p&gt;in general, coding in elisp is full of slack. There&#39;s no API,
nothing is enforced, and you can do something low level or high level
or whichever way. This in intentional from rms. XEmacs had packages
since 1991 or so. rms refused it, till recently. I think rms believes
this shapelessness helps propagate FSF free software. As in, it forces
people to dig into code, not a blackbox API.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/3339469872847545613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/06/emacs-m-x-customize-good-or-bad.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3339469872847545613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3339469872847545613'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/06/emacs-m-x-customize-good-or-bad.html' title='emacs M-x customize, good or bad?'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-6451962233901641493</id><published>2016-06-16T10:11:00.002-07:00</published><updated>2016-06-16T12:05:47.940-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>emacs custom-set-variables vs setq</title><content type='html'>&lt;p&gt;Something strange is going on. It seems, pulling things out of the
&lt;code class=&quot;elisp-ƒ&quot;&gt;custom-set-variables&lt;/code&gt;
no longer works?&lt;/p&gt;

&lt;p&gt;Here&#39;s the test. Put the following in your init, nothing but just the following:&lt;/p&gt;

&lt;pre class=&quot;emacs-lisp&quot;&gt;(custom-set-variables
 &lt;span class=&quot;comment-delimiter&quot;&gt;;; &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;custom-set-variables was added by Custom.
&lt;/span&gt; &lt;span class=&quot;comment-delimiter&quot;&gt;;; &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;If you edit it by hand, you could mess it up, so be careful.
&lt;/span&gt; &lt;span class=&quot;comment-delimiter&quot;&gt;;; &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;Your init file should contain only one such instance.
&lt;/span&gt; &lt;span class=&quot;comment-delimiter&quot;&gt;;; &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;If there is more than one, they won&#39;t work right.
&lt;/span&gt; &#39;(&lt;span class=&quot;variable-name&quot;&gt;minibuffer-prompt-properties&lt;/span&gt;
   (&lt;span class=&quot;keyword&quot;&gt;quote&lt;/span&gt;
    (read-only &lt;span class=&quot;keyword&quot;&gt;t&lt;/span&gt; cursor-intangible &lt;span class=&quot;keyword&quot;&gt;t&lt;/span&gt; face minibuffer-prompt))))&lt;/pre&gt;

&lt;p&gt;Restart emacs. Then, M-x &lt;code class=&quot;elisp-ƒ&quot;&gt;query-replace&lt;/code&gt; and hold left arrow key to see if cursor went over the prompt. Cursor will not move into the prompt.&lt;/p&gt;

&lt;p&gt;Now, delete that init, and use the following instead:&lt;/p&gt;

&lt;pre class=&quot;emacs-lisp&quot;&gt;(&lt;span class=&quot;keyword&quot;&gt;setq&lt;/span&gt; &lt;span class=&quot;variable-name&quot;&gt;minibuffer-prompt-properties&lt;/span&gt; (&lt;span class=&quot;keyword&quot;&gt;quote&lt;/span&gt; (read-only &lt;span class=&quot;keyword&quot;&gt;t&lt;/span&gt; cursor-intangible &lt;span class=&quot;keyword&quot;&gt;t&lt;/span&gt; face minibuffer-prompt)))&lt;/pre&gt;

&lt;p&gt;Restart emacs.&lt;/p&gt;

&lt;p&gt;But now, it doesn&#39;t work?&lt;/p&gt;

&lt;p&gt;This is emacs GNU Emacs 25.0.90.1&lt;/p&gt;

&lt;p&gt;please comment and let me know what happens on your machine, and emacs version. M-x version.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/6451962233901641493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/06/emacs-custom-set-variables-vs-setq.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/6451962233901641493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/6451962233901641493'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/06/emacs-custom-set-variables-vs-setq.html' title='emacs custom-set-variables vs setq'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7598774184420474993</id><published>2016-06-13T11:52:00.001-07:00</published><updated>2016-06-13T11:52:12.051-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computing"/><category scheme="http://www.blogger.com/atom/ns#" term="society"/><title type='text'>Siri, Cortana, Ok Google, Are the Future of AI, the Embodiment of AI</title><content type='html'>&lt;p&gt;talking to myself about Cortana, Siri for an hour. It&#39;s huge.&lt;/p&gt;

&lt;p&gt;They, going to be the AI. For vast majority of people, the general
public, it is they, Cortana, going to be the window to tech. With a
human female voice User Interface, it will also become intimate, in a
natural way. That is, most people, are not tech savvy. They don&#39;t even
know what a browser is. But Cortana (and Siri, ok Google), because it
communicates with user via human language, and being a female, this
will lead to natural connection, and making the user wanting more, and
will thus push and push for Cortana to mature, and meet demand. (and
there&#39;ll be porn aspects, a huge industry, but that&#39;s different topic.
We focus on the average people and phone use here.). Cortana (Siri,
similar services) , will become the Embodiment of Artificial
Intelligence, as the populace have seen in movies. Most people are not
into scifi or tech stuff, but it is via the interaction of human
female voice that help daily things, grow attachment, and become
average people&#39;s connection with tech.&lt;/p&gt;

&lt;p&gt;i think ALL our tech progress, will also become measured by them. As in, how mature, how smart, Cortana, Siri becomes.&lt;/p&gt;

&lt;p&gt;they going to be the #1 software growth in next decade.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7598774184420474993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/06/siri-cortana-ok-google-are-future-of-ai.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7598774184420474993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7598774184420474993'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/06/siri-cortana-ok-google-are-future-of-ai.html' title='Siri, Cortana, Ok Google, Are the Future of AI, the Embodiment of AI'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-839989757020509912</id><published>2016-06-12T14:35:00.002-07:00</published><updated>2016-06-12T14:35:53.063-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>xfce window focus bug</title><content type='html'>&lt;p&gt;lots focus bug mouse hover to raise window, in xfce ubuntu 14.04. upgrading to xfce14.12, then you got wmctrl problem. 4 hours wasted.&lt;/p&gt;

&lt;p&gt;here&#39;s the detail.&lt;/p&gt;

&lt;p&gt;Activating a window from the taskbar doesn&#39;t focus it when &#39;focus follows mouse&#39; &lt;a class=&quot;sorc&quot; href=&quot;https://bugs.launchpad.net/ubuntu/+source/xfwm4/+bug/1292122&quot; data-accessed=&quot;2016-06-12&quot;&gt;https://bugs.launchpad.net/ubuntu/+source/xfwm4/+bug/1292122&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now, its supposedly fixed. See: &lt;a class=&quot;sorc&quot; href=&quot;http://git.xfce.org/xfce/xfwm4/commit/?id=1a20a88&quot; data-accessed=&quot;2016-06-12&quot;&gt;http://git.xfce.org/xfce/xfwm4/commit/?id=1a20a88&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so, now you upgrade xfce to 4.12. &lt;a href=&quot;http://xahlee.info/linux/linux_upgrade_xfce.html&quot;&gt;Linux: How to Upgrade Xfce&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;but now, there&#39;s wmctrl problem. That is,
when you use the wmctrl tool to switch window &lt;code&gt;wmctrl -xa emacs&lt;/code&gt;, it won&#39;t focus, only raise.&lt;/p&gt;

&lt;p&gt;if you turn off mouse raise window, then the problem goes away. But, i want mouse raise window.&lt;/p&gt;

&lt;p&gt;sad face.&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/839989757020509912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/06/xfce-window-focus-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/839989757020509912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/839989757020509912'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/06/xfce-window-focus-bug.html' title='xfce window focus bug'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-2572343390245078379</id><published>2016-04-29T22:08:00.001-07:00</published><updated>2016-04-29T22:33:33.002-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><category scheme="http://www.blogger.com/atom/ns#" term="society"/><title type='text'>on the question of too many programing libraries</title><content type='html'>
&lt;p&gt;in the past 5 years, there seems to be a exponential growth of programing language libraries.&lt;/p&gt;

&lt;p&gt;this can especially be seen in JavaScript land.&lt;/p&gt;

&lt;p&gt;this is different from say 1990s, where, there is usually widely accepted “the best” lib for X.&lt;/p&gt;

&lt;p&gt;today, there are so many, that usually a programer never heard of.&lt;/p&gt;

&lt;p&gt;so, the question to me is, what to do about it?&lt;/p&gt;

&lt;p&gt;i&#39;m the type that tend to know it all, alway keeping a eye on all things. But that has been impossible now, or even, impractical and meaningless.&lt;/p&gt;

&lt;p&gt;i want to think about this, as to have some kinda conclusion or closure on the situation.&lt;/p&gt;

&lt;p&gt;if i do nothing, then, libs will just grow without my awareness. This been the case for many years already. It can be likened to not knowning all latest movies, or all latest comic books published, or Japan comics books published in Japan, or say TV shows published in China, or not keeping up with gaming community, new games, etc. There are, thousands, millions, of them, things, you don&#39;t know. When you were a teen, you might know all the best new video games, or hot movies, or comics books, but not now, because you haven&#39;t been following it, no longer interested, or no time.&lt;/p&gt;

&lt;p&gt;so, what&#39;s the deal with programing language libraries? well, today, not just lib grows exponentially, but also languages, and now programing paradigms.&lt;/p&gt;

&lt;p&gt;〔➤see &lt;a href=&quot;http://xahlee.info/UnixResource_dir/writ/new_langs.html&quot;&gt;Proliferation of Computing Languages&lt;/a&gt;〕&lt;/p&gt;

&lt;p&gt;for example, few years ago, node.js popularized event based programing. Now, reactive programing seems to be hot. There are language and libraries doing it. And, the idea of Persistent data structure seems also getting popular. First popularized by clojure, now Facebook immutable lib for JavaScript. &lt;/p&gt;

&lt;p&gt;in the end, i don&#39;t think there&#39;s much one can do, or should do. Do you know all the movies published in India? In programing, even in the 1990s, not everyone knows about all fields of programing, such as operating systems, database, game programing, networking, scientific programing, etc. &lt;/p&gt;

&lt;p&gt;but if you are a philosopher, a observer, then, you might still try to follow, keep in the know and analyze trends and have opinions about where are we going. In some sense, the task now is harder, and more exciting, then compared to 1990s.&lt;/p&gt;

&lt;p&gt;actually, the phenomenon of exponential growth, is happening not just in programing libs, but every day things too. Everyday things, trends, inventions, practices, behaviors, i think they are all growing. (for example, think of cell phone, payment methods, dating practice) In this regard, am thinking, humanity has entered a era, sometimes depicted in dystopia scifi, where you have massive diverse groups and things each one odd to another.&lt;/p&gt;

&lt;p&gt;i think, the speed and number of new things springing up, is faster than the speed they can be digested or merged with some universal status quo. So, you end up with lots regional phenomenon.&lt;/p&gt;

&lt;p&gt;ok. So far so good.
But, how does this compare to the era before? say, before the internet, or before industrialization?&lt;/p&gt;

&lt;p&gt;before the internet, communication tech isn&#39;t as strong, so, first of all, new things may be happening around the world, just that you don&#39;t know about them.
(the internet made us known things we never know before, such as sexual practices, and all sorts of others things, e.g. we can see and discuss on reddit now.)
before the internet, even old things we don&#39;t know, such as different cultures. For example, to know what Chinese do, you have to be a academic, or go to library to dig book and look at a handful of pictures, or have lived in china. But now, you can know what chinese do daily, or watch their daily lives if you want to. (for example, twitter, facebook.)
&lt;/p&gt;

&lt;p&gt;ok, but do new things happen as much in say 1990s as now? I think in general no.
Today, the tech is vibrant that new things happen far more often.&lt;/p&gt;

&lt;p&gt;now
thinking about before industrialization, i think the above is confirmed.
Without technology, things don&#39;t change much.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/2572343390245078379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/04/on-question-of-too-many-programing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2572343390245078379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2572343390245078379'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/04/on-question-of-too-many-programing.html' title='on the question of too many programing libraries'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7409685979473518039</id><published>2016-04-18T15:37:00.003-07:00</published><updated>2016-04-18T15:37:53.073-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><title type='text'>sigil for my φvariable ξnames</title><content type='html'>&lt;p&gt;fret about whether i should continue using funky sigil for my variable names. As in:&lt;/p&gt;

&lt;pre class=&quot;js&quot;&gt;xd.drawCircle = &lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt; (&lt;span class=&quot;xah-js-function-param&quot;&gt;φcontainer&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φcenter&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φr&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φstyle&lt;/span&gt;) {
    &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt; = &lt;span class=&quot;function-name&quot;&gt;document&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;createElementNS&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;http://www.w3.org/2000/svg&quot;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&quot;circle&quot;&lt;/span&gt;);
    &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;setAttribute&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;cx&quot;&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φcenter&lt;/span&gt;[0]);
    &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;setAttribute&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;cy&quot;&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φcenter&lt;/span&gt;[1]);
    &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;setAttribute&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;r&quot;&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φr&lt;/span&gt;);

    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;xah-js-function-param&quot;&gt;φstyle&lt;/span&gt; !== &lt;span class=&quot;constant&quot;&gt;undefined&lt;/span&gt;) { ( &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;setAttribute&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;style&quot;&lt;/span&gt;, &lt;span class=&quot;xah-js-function-param&quot;&gt;φstyle&lt;/span&gt;)); };

    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; ( &lt;span class=&quot;xah-js-function-param&quot;&gt;φcontainer&lt;/span&gt; === &lt;span class=&quot;constant&quot;&gt;undefined&lt;/span&gt; ) {
        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;;
    } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {
        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;xah-js-function-param&quot;&gt;φcontainer&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;appendChild&lt;/span&gt; (&lt;span class=&quot;xah-js-user-variable&quot;&gt;ξcir&lt;/span&gt;);
    };
};&lt;/pre&gt;

&lt;p&gt;the problem, is people. Other people.&lt;/p&gt;

&lt;p&gt;you see, it&#39;s like the many &lt;a class=&quot;wikipedia-69128&quot; href=&quot;https://en.wikipedia.org/wiki/English-language_spelling_reform&quot; data-accessed=&quot;2016-04-18&quot;&gt;english spelling reform&lt;/a&gt;.
It is sound and good, except, the masses, idiots, will not have it, and is doom&#39;d to failure.&lt;/p&gt;

&lt;p&gt;the reason i want to do it is here:
&lt;a href=&quot;http://xahlee.info/comp/sigil_for_function_parameter_names.html&quot;&gt;Sigil for Function Parameter Names&lt;/a&gt;
and
&lt;a href=&quot;http://xahlee.info/comp/programing_variable_naming.html&quot;&gt;Programing Style: Variable Naming: English Words Considered Harmful&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;but i thought about it more due to the my dilemma of continuing the practice, in JavaScript or any lang other than emacs lisp. I took a walk, talking to myself, for 30 min. Here&#39;s some more insights.&lt;/p&gt;

&lt;p&gt;the essential good of it, is that it embeds semantic info into syntax. That is, you can tell if a variable is a function parameter, or local variable, or not global, just by its name.&lt;/p&gt;

&lt;p&gt;This is in general called sigil. (most popularized by perl, followed by ruby.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/perl/perl_basics_1.html&quot;&gt;Learn Perl in 1 Hour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/ruby/ruby_basics.html&quot;&gt;Ruby: Learn Ruby in 1 Hour&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;there are other examples of widely accepted practice of embedding semantic info in syntax. For example, in Java and python, class names starts with capital letters. This is a strong convention, everyone follows. It is important, because, classes, variable, methods, have very different semantics. Being able to tell by a glance saves you time or error.&lt;/p&gt;

&lt;p&gt;also read, if you are inclined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;wikipedia-69128&quot; href=&quot;https://en.wikipedia.org/wiki/Hungarian_notation&quot; data-accessed=&quot;2016-04-18&quot;&gt;Hungarian notation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;wikipedia-69128&quot; href=&quot;https://en.wikipedia.org/wiki/Identifier_naming_convention&quot; data-accessed=&quot;2016-04-18&quot;&gt;Identifier naming convention&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;but i think am going to stop this geek char sigil practice.
My emacs lisp code base are full of it, it&#39;s hopeless.
For lisp, i probably should push on my way, as lisp is weird already.
But for my JavaScript code, which there isn&#39;t much, am thinking of stop this φsigil ξthing.&lt;/p&gt;

&lt;p&gt;the problem, is that whenever it is exposed and seen by other people, it&#39;s a problem. You&#39;ll need to do explanations, and you&#39;ll win yourself a weirdo badge. And, other consequences. For example, the jslint won&#39;t accept names that starts with Unicode char.&lt;/p&gt;

&lt;p&gt;unless, i keep my code to myself only. Imagine, i, am the greatest coder, couldn&#39;t care less what other coder do or say. I just churning out my own code that rules the world. yeah. I think am too old to wishful-thinking that.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7409685979473518039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/04/sigil-for-my-variable-names.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7409685979473518039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7409685979473518039'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/04/sigil-for-my-variable-names.html' title='sigil for my φvariable ξnames'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7542645967611925397</id><published>2016-03-29T03:06:00.001-07:00</published><updated>2016-03-29T03:06:57.136-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer languages"/><category scheme="http://www.blogger.com/atom/ns#" term="functional programing"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><title type='text'>Functional Notation vs Operator, Ultimate Solution</title><content type='html'>&lt;p&gt;suddenly, am thinking of the ultimate answer to the question of superiority of functional notation vs operator notation once for all&lt;/p&gt;

&lt;p&gt;this is because, when i read, John Baez&#39;s post here&lt;/p&gt;

&lt;p&gt;〔&lt;cite&gt;Zamolodchikov Tetrahedron Equation&lt;/cite&gt; &lt;time&gt;2016-03-15&lt;/time&gt; By John Baez. @ &lt;a class=&quot;sorc&quot; href=&quot;http://blogs.ams.org/visualinsight/2016/03/15/zamolodchikov-tetrahedron-equation/&quot; data-accessed=&quot;2016-03-29&quot;&gt;http://blogs.ams.org/visualinsight/2016/03/15/zamolodchikov-tetrahedron-equation/&lt;/a&gt;〕
(also here, more chatty at:
&lt;a class=&quot;sorc&quot; href=&quot;https://plus.google.com/117663015413546257905/posts/QCrdfbbMYhZ&quot; data-accessed=&quot;2016-03-29&quot;&gt;https://plus.google.com/117663015413546257905/posts/QCrdfbbMYhZ&lt;/a&gt;
)&lt;/p&gt;

&lt;p&gt;the article title is daunting, and it immediately talks about 4D space and monoidal category and morphism.&lt;/p&gt;

&lt;p&gt;but, actually just ignore those jargons. look at the image of braids. It says:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In other words, we can slide a crossing of two strands under a third strand. In topology this is called the third Reidemeister move, one of three basic ways of changing a picture of a knot without changing the topology of the knot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;now that&#39;s the beauty of math. Because, all those equations and symbols, are used only, and necessarily, to capture this simple concepts in a precise and efficient way. In the case here, is braids and movements.&lt;/p&gt;

&lt;p&gt;but i digress.&lt;/p&gt;

&lt;p&gt;what i personally got a omg moment at this point, is that, notice how he said in the Google Plus post:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;My blog article explains it, with pictures.  But in simple terms, the idea is this.  When you think of the commutative law&lt;/p&gt;

&lt;p&gt;xy = yx&lt;/p&gt;

&lt;p&gt;as a process rather than an equation,&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There! “&lt;b&gt;consider communicative law as a process!&lt;/b&gt;”&lt;/p&gt;

&lt;p&gt;Now, that got me thinking. Because, i have thought about this myself. See:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://xahlee.info/math/nature_of_associative_property_of_algebra.html&quot;&gt;the Nature of Associative Property of Algebra&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;in which, i realized the nature of associative law, and in general, the kinda nature of context these laws arise. So, i was thinking now, if thinking of it as a process would give me some more enlightenment.&lt;/p&gt;

&lt;p&gt;but immediately, the associative law &lt;code&gt;(a⊕b)⊕c == a⊕(b⊕c)&lt;/code&gt; don&#39;t have a analogous way as a process to turn it into a braid. You just get 3 staight lines.&lt;/p&gt;

&lt;p&gt;i need to think about this some other time. Now I need to do something else.&lt;/p&gt;

&lt;p&gt;wait, but back to the title. Why is it some ultimate solution of functional notation vs operator?&lt;/p&gt;

&lt;p&gt;you need to read this first:
&lt;a href=&quot;http://xahlee.info/math/function_and_operators.html&quot;&gt;What&#39;s Function, What&#39;s Operator?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;because, notation, and syntax, is my obsession. And, basically, i am suddently prompted at this point to think about whether perhaps there&#39;s a way so that
one of the notation can be eliminated without picking up disadvantages.&lt;/p&gt;

&lt;p&gt;my immediate thought is that, perhaps functional notation can be dropped. Certainly not the other way around, because pure functional notation is too cumbersome (lisp is good example. you can&#39;t write math, in lisp). So, perhaps, somehow, operator notation is supreme… well but one immediate problem is that in general operators can only be for binary function. That is, 2 args, on the left and right sides. But, actually we could have match-fix notation.
(see match-fix explained here &lt;a href=&quot;http://xahlee.info/UnixResource_dir/writ/notations.html&quot;&gt;Concepts ＆ Confusions of {Prefix, Infix, Postfix, Fully Nested} Notations&lt;/a&gt;)
But the issue with match fix is that, then we have to have a way to still use function names. That is, we can&#39;t device thousands type of brackets. So, in order to still have names, then have XML or lisp-like things… but oh, we back. Ok. Stopping here now.
&lt;/p&gt;

&lt;div class=&quot;rltd&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/comp/oop_dot_notation.html&quot;&gt;On the Idiocy of Dot Notation of Object Oriented Programing Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/comp/JavaScript_syntax_soup.html&quot;&gt;JavaScript Syntax Soup: 「p in o」 vs 「for (p in o) {…}」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/comp/python_syntax_soup_in_and_not_in.html&quot;&gt;Python&#39;s Context Dependent Syntax Soup: 「… in …」 And 「… not in …」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/comp/unix_pipes_and_functional_lang.html&quot;&gt;Unix Pipe as Functional Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/math/nature_of_associative_property_of_algebra.html&quot;&gt;the Nature of Associative Property of Algebra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div class=&quot;rltd&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/UnixResource_dir/writ/notations.html&quot;&gt;Concepts ＆ Confusions of {Prefix, Infix, Postfix, Fully Nested} Notations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/cmaci/notation/lang_notation_formalism.html&quot;&gt;Math Notation, Proof System, Computer Algebra, in One Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/cmaci/notation/trad_math_notation.html&quot;&gt;The Problems of Traditional Math Notation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/math/function_and_operators.html&quot;&gt;What&#39;s Function, What&#39;s Operator?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/math/logical_operators.html&quot;&gt;Logical Operators, Truth Table, Unicode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/comp/unicode_math_operators.html&quot;&gt;Unicode: Math Symbols ∑ ∞ ∫ π ∈ ℝ²&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7542645967611925397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2016/03/functional-notation-vs-operator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7542645967611925397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7542645967611925397'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2016/03/functional-notation-vs-operator.html' title='Functional Notation vs Operator, Ultimate Solution'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-3193975514155491720</id><published>2015-11-04T04:03:00.002-08:00</published><updated>2015-11-04T04:03:34.920-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>Gnu Emacs New Leader: John Wiegley</title><content type='html'>
&lt;p&gt;&lt;a class=&quot;sorc&quot; href=&quot;https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg00120.html&quot; data-accessed=&quot;2015-11-04&quot;&gt;https://lists.gnu.org/archive/html/emacs-devel/2015-11/msg00120.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wiegley as maintainer was discussed in the gnu emacs dev mailing list for the past couple of months, hundreds of messages.&lt;/p&gt;

&lt;p&gt;John Wiegley is the author of eshell, among others, and he lives in emacs. 〔➤ &lt;a href=&quot;http://ergoemacs.org/emacs/eshell.html&quot;&gt;Emacs: M-x eshell&lt;/a&gt;〕&lt;/p&gt;

&lt;p&gt;Here&#39;s a couple of video interviews of John.&lt;/p&gt;

&lt;figure&gt;
&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/ytNsHmRLZGM?rel=0&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;
〔&lt;cite&gt;Emacs: Chatting with John Wiegley about the cool things he does with Emacs&lt;/cite&gt; &lt;time&gt;2012-06-27&lt;/time&gt; By Sacha Chua. @ &lt;a class=&quot;sorc&quot; href=&quot;http://sachachua.com/blog/2012/06/emacs-chatting-with-john-wiegley-about-the-cool-things-he-does-with-emacs/&quot; data-accessed=&quot;2015-11-04&quot;&gt;http://sachachua.com/blog/2012/06/emacs-chatting-with-john-wiegley-about-the-cool-things-he-does-with-emacs/&lt;/a&gt;〕
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;
&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/i78exMbYdqA?rel=0&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;Haskell Talks: John Wiegley with FP Complete&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;John is a extreme emacs enthusiast, and his primary platform is Mac with strong desire to make emacs better on Mac too out of the box, and he is a very capable programer, and also a sociable person. I think John will bring a lot good things to emacs. Thanks John.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;John Wiegley github &lt;a class=&quot;sorc&quot; href=&quot;https://github.com/jwiegley&quot; data-accessed=&quot;2015-11-04&quot;&gt;https://github.com/jwiegley&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;John Wiegley twitter &lt;a class=&quot;sorc&quot; href=&quot;https://twitter.com/jwiegley&quot; data-accessed=&quot;2015-11-04&quot;&gt;https://twitter.com/jwiegley&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/3193975514155491720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/11/gnu-emacs-new-leader-john-wiegley.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3193975514155491720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3193975514155491720'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/11/gnu-emacs-new-leader-john-wiegley.html' title='Gnu Emacs New Leader: John Wiegley'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ytNsHmRLZGM/default.jpg" height="72" width="72"/><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-3931305838637708492</id><published>2015-11-03T23:14:00.002-08:00</published><updated>2015-11-03T23:14:27.774-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><category scheme="http://www.blogger.com/atom/ns#" term="web dev"/><title type='text'>JavaScript wuwu quiz</title><content type='html'>

&lt;pre class=&quot;js&quot;&gt;&lt;span class=&quot;comment-delimiter&quot;&gt;// &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;quiz. figure out what does this code do
&lt;/span&gt;&lt;span class=&quot;comment-delimiter&quot;&gt;// &lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;2015-10-29
&lt;/span&gt;
&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt; foo() {
    &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; eleName = &lt;span class=&quot;function-name&quot;&gt;document&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;getElementById&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&quot;x79177&quot;&lt;/span&gt;);
    &lt;span class=&quot;keyword&quot;&gt;alert&lt;/span&gt;(
        (&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;(le) {
            &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;(f) {
                &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; f(f);
            } (&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;(f) {
                &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; le(
                    &lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;(x) { &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; (f(f))(x); }
                );
            });
        }) (&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt; (givenGetDepth) {
            &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt; (element) {
                &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; (element === &lt;span class=&quot;constant&quot;&gt;null&lt;/span&gt;) ? 0 : givenGetDepth(element.&lt;span class=&quot;function-name&quot;&gt;parentNode&lt;/span&gt;) + 1;
            };
        }) (&lt;span class=&quot;function-name&quot;&gt;document&lt;/span&gt;.&lt;span class=&quot;function-name&quot;&gt;getElementById&lt;/span&gt;(eleName))

    );
};
foo();&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/3931305838637708492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/11/javascript-wuwu-quiz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3931305838637708492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/3931305838637708492'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/11/javascript-wuwu-quiz.html' title='JavaScript wuwu quiz'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7983655993207660838</id><published>2015-10-10T03:14:00.000-07:00</published><updated>2015-10-10T03:59:36.708-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer languages"/><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><title type='text'>lisp macros, Racket define syntax rule and pattern matching</title><content type='html'>&lt;p&gt;racket named lisp &lt;code&gt;defmacro&lt;/code&gt; as &lt;code&gt;define-syntax-rule&lt;/code&gt;. A step forward. Even better is “define-form-rule”, as lisp macro can&#39;t change syntax.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;ref&quot;&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://mirror.racket-lang.org/releases/6.2.1/doc/guide/pattern-macros.html&quot; data-accessed=&quot;2015-10-10&quot;&gt;http://mirror.racket-lang.org/releases/6.2.1/doc/guide/pattern-macros.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;note that how it calls macros as pattern matching and or syntax transformation.&lt;/p&gt;

&lt;p&gt;in my 20+ of computing career, the Common Lisp fanatics, are the most persistent idiotic bunch.&lt;/p&gt;

&lt;p&gt;racket, now i&#39;ve read most of its doc, clearly tried to fix many of Common lisp&#39;s bad persistent notions, and scheme too.&lt;/p&gt;

&lt;p&gt;scheme lisp lot is a unfortunate sorry lot. Cult result is obsession with tail recursion, like haskell&#39;s monad. Going nowhere, forever.&lt;/p&gt;

&lt;p&gt;the most idiotic feature in comp lang, is call-with-current-continuation of scheme fame. This, rivets scheme in lala-land forever.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;ref&quot;&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://mirror.racket-lang.org/releases/6.2.1/doc/compatibility/defmacro.html&quot; data-accessed=&quot;2015-10-10&quot;&gt;http://mirror.racket-lang.org/releases/6.2.1/doc/compatibility/defmacro.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7983655993207660838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/10/lisp-macros-racket-define-syntax-rule.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7983655993207660838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7983655993207660838'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/10/lisp-macros-racket-define-syntax-rule.html' title='lisp macros, Racket define syntax rule and pattern matching'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-17869343669168713</id><published>2015-10-06T04:25:00.002-07:00</published><updated>2015-10-06T04:25:35.244-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arts"/><title type='text'>海賊王 One Piece Action Figures</title><content type='html'>
&lt;p&gt;
This is spectacular. Colorful characters, interesting stories.
Think of one Japan anime/magna (that&#39;s Japanese cartoon/comics/animation). Of all, this one, called One Piece, is the most successful, sold more, in history.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;http://xaharts.org/arts/i/One_Piece/One_Piece_figures_007.jpg&quot; alt=&quot;One Piece figures 007&quot; width=&quot;1389&quot; height=&quot;781&quot; /&gt;
&lt;figcaption&gt;
&lt;a href=&quot;http://xaharts.org/arts/One_Piece_anime.html&quot;&gt;海賊王 One Piece Action Figures&lt;/a&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;One Piece, is the title of the comics. It is a story of pirates.
And, there&#39;s this guy, who spent hundred thousand dollars, and collected some thousands of action figures.&lt;/p&gt;

&lt;p&gt;in USA, action figures are crude, typically for small kids. Not so in Japan. They are made of the highest quality, material, and detail, with whatever latest technology in plastics, molding, painting. Some are even custom made. Typically, a good one costs $80, up to $200 a piece.&lt;/p&gt;

&lt;p&gt;Here&#39;s a gallery of the guy&#39;s collection. (only showing ones related to the One Piece series)
&lt;a href=&quot;http://xaharts.org/arts/One_Piece_anime.html&quot;&gt;海賊王 One Piece (Japanese Comics) Action Figures&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;btw, the ones in this picture, you guessed, are the “bad guys”. The bad guys, are always more fun to look at.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/17869343669168713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/10/one-piece-action-figures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/17869343669168713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/17869343669168713'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/10/one-piece-action-figures.html' title='海賊王 One Piece Action Figures'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7767380875047411419</id><published>2015-10-04T01:41:00.000-07:00</published><updated>2015-10-04T01:47:25.802-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><title type='text'>language popularity ranking sites</title><content type='html'>
&lt;p&gt;there&#39;s many  language popularity ranking sites.
The most well-known, is tiobe.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&quot; data-accessed=&quot;2015-10-04&quot;&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think TIOBE index is stupid. Their approach is not good. Mostly because, they tried to be general, as if they know what “popularity” means.&lt;/p&gt;

&lt;p&gt;another one,
&lt;a class=&quot;sorc&quot; href=&quot;http://langpop.com/&quot; data-accessed=&quot;2015-10-04&quot;&gt;http://langpop.com/&lt;/a&gt;, is worse. And badly maintained.&lt;/p&gt;

&lt;p&gt;the following is better, because they are specific on what they measure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/&quot; data-accessed=&quot;2015-10-04&quot;&gt;http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://pypl.github.io/PYPL.html&quot; data-accessed=&quot;2015-10-04&quot;&gt;http://pypl.github.io/PYPL.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;https://github.com/blog/2047-language-trends-on-github&quot; data-accessed=&quot;2015-10-04&quot;&gt;https://github.com/blog/2047-language-trends-on-github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;note: language popularity is a lose concept. Is it more talked about? is it more used? more used by companies or by loud amature programers? Is it more existing code? How do you count code? What about quality code, but are not public?&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7767380875047411419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/10/language-popularity-ranking-sites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7767380875047411419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7767380875047411419'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/10/language-popularity-ranking-sites.html' title='language popularity ranking sites'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7906444569155956692</id><published>2015-10-04T01:37:00.003-07:00</published><updated>2015-10-04T18:09:06.892-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><title type='text'>Google Puts All 9 Million Source Code Files in One Repo</title><content type='html'>&lt;figure&gt;
&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/W71BTkUbdqE?rel=0&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;
The Motivation for a Monolithic Codebase Why Google Stores Billions of Lines&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;blockquote&gt;&lt;p&gt;Published on Sep 14, 2015
This talk will outline the scale of Google’s codebase, describe Google’s custom-built monolithic source repository, and discuss the reasons behind choosing this model of source control management. It will include background on the systems and workflows used at Google that make managing and working productively with a large repository feasible, in addition to a discussion of the advantages and trade-offs of this approach.&lt;/p&gt;

&lt;p&gt;Presenter: Rachel Potvin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Google Puts All 9 Million Source Code Files in One Repo. Its own custom source management system called piper.&lt;/p&gt;

&lt;p&gt;for context, linux kernel has 15M lines. Google repo has 2G lines. Google human makes 15M lines of code change per week.&lt;/p&gt;

&lt;p&gt;Rachel Potvin explains why. But, i&#39;m rather not convinced. Are you?&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7906444569155956692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/10/google-puts-all-9-million-source-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7906444569155956692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7906444569155956692'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/10/google-puts-all-9-million-source-code.html' title='Google Puts All 9 Million Source Code Files in One Repo'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/W71BTkUbdqE/default.jpg" height="72" width="72"/><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-942515092739705205</id><published>2015-09-22T15:17:00.001-07:00</published><updated>2015-09-22T15:17:35.814-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="keyboarding"/><title type='text'>The world, is waiting for me to change. Actually, not me, you</title><content type='html'>

&lt;p&gt;found a new nice wireless number pad, with mechanical keys (Cherry Mx Black). See:
&lt;a href=&quot;http://xahlee.info/kbd/keyboard_add_extra_function_keys.html&quot;&gt;List of Programable Keypads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;this is good for those of you with a compact keyboard.&lt;/p&gt;

&lt;p&gt;you can turn the numpad number keys into function keys.
&lt;a href=&quot;http://xahlee.info/kbd/keyboard_numpad_as_function_keys.html&quot;&gt;How to set Number Keypad as Function Keys {Windows, Linux, Mac}&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or, within emacs.
&lt;a href=&quot;http://ergoemacs.org/misc/emacs_use_numberpad_keys.html&quot;&gt;Emacs: Using Number Pad Keys&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;i know, lots programers don&#39;t like “leaving hand off homerow”. Actually, most don&#39;t know about how to use function keys. But trust me. It&#39;s good. Everything is just one key. Y&#39;know, when you really type a lot, a lot a lot, the very idea, of the picture in your head of your hand touching keyboard while holding Control or Alt down, is PAINFUL. You shudder at that thought. You won&#39;t know this until one day it happened to you. Sure, you are young ＆ healthy, now, i know. I Xah Lee, was, for almost all my life, the pretty, cocky, above you, competitive altheletic-level healthy. Till, one day, you are burdened or obsessed with documentation and write out everything.&lt;/p&gt;

&lt;p&gt;ok, this is getting long and i feel like rant. I&#39;ll tell you, i read enough emacs blogs, emacs key use, for over 15 years now. Actually, about typing and about keyboard since late 1987. 
(there is one thing in my life i&#39;m obsessed about, and that seems to be EFFICIENCY ＆ design)
But, read far more about them every day since about 2007 when i started on
&lt;a href=&quot;http://ergoemacs.org/emacs/ergonomic_emacs_keybinding.html&quot;&gt;ErgoEmacs Keybinding: a Ergonomics Based Keyboard Shortcut System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&#39;ve red, all there is to say, all the blogs, the popular ones or obscure ones, about emacs keybinding. Red, all reviews of keyboards…. Now, here&#39;s my “trolling” comes in: They are all fscking garbage.&lt;/p&gt;

&lt;p&gt;But, actually, in the past 5 years, a lot programers, got the sense now. Look at the ergodox, the keyboardio, the truely ergo, 
〔➤ &lt;a href=&quot;http://ergoemacs.org/emacs/emacs_best_keyboard.html&quot;&gt;Best Keyboard for Emacs&lt;/a&gt;〕
 huge number of them really well designed keyboard coming out, with wide following, sold out, and quite a few on kickstarter yet to come out.&lt;/p&gt;

&lt;p&gt;now, in the keyboard community, you can see there are tens of thousands enthusiasts following these modern keyboards. Yet, there seems to be a separation of groups. On the one hand, you still have, huge number of folks, who, never looked at, or heard of, these new ones, and still cling to the idea of traditional PC keyboard, singing all sorts of praises about, say, &lt;a href=&quot;http://xahlee.info/kbd/idiocy_of_happy_hacking_keyboard.html&quot;&gt;Happy Hacking Keyboard&lt;/a&gt; or the &lt;a href=&quot;http://xahlee.info/kbd/keyboard_IBM_model_m_Unicomp.html&quot;&gt;IBM Model M keyboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;then, i hear you say, but and but and blab…. Y&#39;know, some things, concepts, habits, you grow up with, such as religion, programing language, or, keyboard, will never change. As Steve Jobs said, you just wait for those to die out. As i get older, and clearly, i am getting older, new life experiences comes in, telling me that i belong to the category of “old”, and i started to doubt myself, perhaps lots of my other thoughts about programing are rather too old to be good. (it is very hard to get over the “generation gap”, by the way. Because, the new generation, they start from scratch. They are simply a blank slate, don&#39;t know what&#39;s there even if they tried. While the older, need to actively take in changes and mix with what we already know. (not saying one is better in general, but just illustrating the generation gap thing as a inevitable social phenomenon.))&lt;/p&gt;

&lt;p&gt;i&#39;ve actually written, few hundreds articles about keyboard, keybinding. Suppose you are a emacs die-hard, you are a serious hacker type, you live on reddit or hacker news et al and have diligently absorbed all knowledge vicinity. Then, you might have doubts about what i say. Actually, everything you possibly
ever thought of about keyboard, i&#39;ve written detailed analysis and experimented painfully before.&lt;/p&gt;

&lt;p&gt;well, i haven&#39;t ranted for a while. The world, is waiting for me to change. Actually, not me, you.&lt;/p&gt;

&lt;p&gt;when i got
&lt;a href=&quot;http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html&quot;&gt;Truly Ergonomic Keyboard Review&lt;/a&gt;
3 years ago, the first thing i really missed, is my 20 or so custom function keys.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/942515092739705205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/09/the-world-is-waiting-for-me-to-change.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/942515092739705205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/942515092739705205'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/09/the-world-is-waiting-for-me-to-change.html' title='The world, is waiting for me to change. Actually, not me, you'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-86029923122337426</id><published>2015-09-10T00:33:00.002-07:00</published><updated>2015-09-10T00:33:19.648-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>forking emacs</title><content type='html'>
&lt;blockquote&gt;

&lt;p&gt;With all due respect, Richard, I really think here you&#39;re simply wrong,
and I&#39;d be willing to consider a fork if that&#39;s what it takes.&lt;/p&gt;

&lt;p&gt;Stefan&lt;/p&gt;

&lt;/blockquote&gt;

&lt;figure&gt;
&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;http://www.youtube.com/embed/UtwaK-s9QRI?rel=0&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;rms getting told: Episode 0&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;see &lt;a class=&quot;sorc&quot; href=&quot;https://www.reddit.com/r/programming/comments/2rtumb/current_emacs_maintainer_disagrees_with_rms_id_be/&quot; data-accessed=&quot;2015-09-09&quot;&gt;https://www.reddit.com/r/programming/comments/2rtumb/current_emacs_maintainer_disagrees_with_rms_id_be/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I support Stefan Monnier for forking emacs. It would be a good thing.&lt;/p&gt;

&lt;p&gt;see also &lt;a href=&quot;http://ergoemacs.org/misc/Richard_Stallman_whats_magit_emacs_community_problem_2015.html&quot;&gt;Richard Stallman: What&#39;s magit? Emacs Dev Condition 2015&lt;/a&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/86029923122337426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/09/forking-emacs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/86029923122337426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/86029923122337426'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/09/forking-emacs.html' title='forking emacs'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/UtwaK-s9QRI/default.jpg" height="72" width="72"/><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-7905510805167840101</id><published>2015-09-02T16:49:00.003-07:00</published><updated>2015-09-02T16:57:22.229-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="keyboarding"/><title type='text'>Emacs Keys: Make Return as Control</title><content type='html'>

&lt;p&gt;Bozhidar Batsov gave a tip about making your &lt;kbd&gt;Return ↩&lt;/kbd&gt; key to act as &lt;kbd&gt;Ctrl&lt;/kbd&gt;, when it is held down with another key.&lt;/p&gt;

&lt;p&gt;〔&lt;cite&gt;A Crazy Productivity Boost: Remap Return to Control&lt;/cite&gt; &lt;time&gt;2013-11-12&lt;/time&gt; By Bozhidar Batsov. @ &lt;a class=&quot;sorc&quot; href=&quot;http://emacsredux.com/blog/2013/11/12/a-crazy-productivity-boost-remap-return-to-control/&quot; data-accessed=&quot;2015-09-02&quot;&gt;http://emacsredux.com/blog/2013/11/12/a-crazy-productivity-boost-remap-return-to-control/&lt;/a&gt;〕&lt;/p&gt;

&lt;p&gt;Note: there are several alternatives that are better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Swap &lt;kbd&gt;Ctrl&lt;/kbd&gt; and &lt;kbd&gt;Alt&lt;/kbd&gt;, so the &lt;kbd&gt;Ctrl&lt;/kbd&gt; is at your thumb position.&lt;/li&gt;
&lt;li&gt;Remap all emacs keys so that there&#39;s no key chords.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem, with control on both sides of keyboard is that, sometimes you have a control sequence where the keys are on both sides of keyboard. For example:&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;C-x C-j         dired-jump
C-x C-l         downcase-region
C-x C-u         upcase-region
C-x C-n         set-goal-column
C-x C-o         delete-blank-lines
C-x C-p         mark-page&lt;/pre&gt;

&lt;p&gt;If you have control as a thumb key, then it&#39;s much easier to do such key combination.&lt;/p&gt;

&lt;p&gt;The other suggestion, is just not to use chord keys at all. For detail, see &lt;a href=&quot;http://xahlee.info/kbd/banish_key_chords.html&quot;&gt;Banish Key Chords&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here&#39;s a list of packages that help you in some way of making emacs keys easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;https://github.com/abo-abo/hydra&quot; data-accessed=&quot;2015-09-02&quot;&gt;https://github.com/abo-abo/hydra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;https://github.com/chrisdone/god-mode&quot; data-accessed=&quot;2015-09-02&quot;&gt;https://github.com/chrisdone/god-mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;http://www.emacswiki.org/emacs/key-chord.el&quot; data-accessed=&quot;2015-09-02&quot;&gt;http://www.emacswiki.org/emacs/key-chord.el&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;sorc&quot; href=&quot;https://github.com/vlevit/key-seq.el&quot; data-accessed=&quot;2015-09-02&quot;&gt;https://github.com/vlevit/key-seq.el&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But, they all only solves the problem partially and in some hackish ad-hoc way.&lt;/p&gt;

For real solution, i recommend 2 things.

&lt;p&gt;① get a good, modern, ergonomic keyboard. See: &lt;a href=&quot;http://ergoemacs.org/emacs/emacs_best_keyboard.html&quot;&gt;Best Keyboard for Emacs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of those keyboards pretty much solves all your problems, far better than remapping keys.&lt;/p&gt;

&lt;p&gt;② In addition, or if you are stuck with laptop keyboard, i recommend the following 3 packages, which systematically change how you work with emacs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ergoemacs-mode. This remaps the most important keys to &lt;kbd&gt;Alt&lt;/kbd&gt;, and key choices are based on frequency of command call. &lt;a class=&quot;sorc&quot; href=&quot;https://ergoemacs.github.io/&quot; data-accessed=&quot;2015-08-14&quot;&gt;https://ergoemacs.github.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;evil-mode. This is basically vim ways in emacs. &lt;a class=&quot;sorc&quot; href=&quot;https://bitbucket.org/lyro/evil/wiki/Home&quot; data-accessed=&quot;2015-08-14&quot;&gt;https://bitbucket.org/lyro/evil/wiki/Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;xah-fly-keys. This is like vi, but without vi compatibility baggage. Pure efficency based. Key choices mostly the same with ergoemacs-mode. &lt;a href=&quot;http://ergoemacs.org/misc/ergoemacs_vi_mode.html&quot;&gt;xah fly keys Mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more about keybinding science, see: &lt;a href=&quot;http://xahlee.info/kbd/keyboard_layout_keybinding.html&quot;&gt;Computer Keyboard Layouts ＆ Keybinding, Design ＆ Analysis ⌨&lt;/a&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/7905510805167840101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/09/emacs-keys-make-return-as-control.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7905510805167840101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/7905510805167840101'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/09/emacs-keys-make-return-as-control.html' title='Emacs Keys: Make Return as Control'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-4734364402042849635</id><published>2015-08-11T13:09:00.002-07:00</published><updated>2015-08-11T13:14:45.186-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer languages"/><title type='text'>what&#39;s “operator” in programing language?</title><content type='html'>
&lt;p&gt;in programing languages, the concept of “operator” is completely fscked up.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;http://xahlee.info/comp/i/comp_lang_operator_JavaScript_2015-08-11.png&quot; alt=&quot;comp lang operator JavaScript 2015-08-11&quot; width=&quot;917&quot; height=&quot;515&quot; /&gt;
&lt;figcaption&gt;JavaScript operators&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/js/javascript_operators.html&quot;&gt;JavaScript Operators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xahlee.info/math/function_and_operators.html&quot;&gt;What&#39;s Function, What&#39;s Operator?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/4734364402042849635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/08/whats-operator-in-programing-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4734364402042849635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4734364402042849635'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/08/whats-operator-in-programing-language.html' title='what&#39;s “operator” in programing language?'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-4361304844639493790</id><published>2015-08-10T14:43:00.000-07:00</published><updated>2015-08-10T14:43:08.236-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer languages"/><title type='text'>JavaScript and Wolfram Language: languages that are different from all others</title><content type='html'>&lt;p&gt;of all the languages i know, {
&lt;a href=&quot;http://xahlee.info/java-a-day/java.html&quot;&gt;Java&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/perl/perl_index.html&quot;&gt;Perl&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/php/index.html&quot;&gt;PHP&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/perl-python/index.html&quot;&gt;Python&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/ruby/ruby_index.html&quot;&gt;Ruby&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/js/js.html&quot;&gt;JavaScript&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/clojure/clojure_index.html&quot;&gt;Clojure&lt;/a&gt;,
&lt;a href=&quot;http://ergoemacs.org/emacs/elisp.html&quot;&gt;Emacs Lisp&lt;/a&gt;,
&lt;a href=&quot;http://xahlee.info/M/index.html&quot;&gt;Wolfram Language&lt;/a&gt;
}
, the one standing out are JavaScript, and Wolfram Language.&lt;/p&gt;

&lt;p&gt;so i was riding the bike on the street, and it occurred to me, what an odd language
JavaScript is. Then i thought, is it true, critically? The languages i know of floated in my head and i went over them. I conclude, the 2 really odd, standing out from the others, are JavaScript and Wolfram Language.&lt;/p&gt;

&lt;p&gt;JavaScript because of its &lt;a href=&quot;http://xahlee.info/js/js_object_prototype_inheritance.html&quot;&gt;Prototype Inheritance system&lt;/a&gt;. Wolfram Language because of its &lt;a href=&quot;http://xahlee.info/UnixResource_dir/writ/notations_mma.html&quot;&gt;symbolic pattern matching&lt;/a&gt; (term rewriting language)&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/4361304844639493790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/08/javascript-and-wolfram-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4361304844639493790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4361304844639493790'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/08/javascript-and-wolfram-language.html' title='JavaScript and Wolfram Language: languages that are different from all others'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-4038134783227563618</id><published>2015-07-30T03:32:00.003-07:00</published><updated>2015-07-30T03:32:31.881-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><title type='text'>A Class of Computer Languages: Math Lang</title><content type='html'>&lt;p&gt;canvas is scum. invented by scum. The likes of C, C++, OpenGL, etc, whose tenet is: hi, my name is speed. Ever since, programing is hell.
〔➤ &lt;a href=&quot;http://xahlee.info/js/html5_canvas_vs_SVG.html&quot;&gt;HTML5 Canvas vs SVG&lt;/a&gt;〕
&lt;/p&gt;

&lt;p&gt;vast majority of programers, 99%, have no idea of mathematical language. Talking to them about lang debates, is like talking to idiots.&lt;/p&gt;

&lt;p&gt;all these langs programers are familiar with,eg C C++ java python perl ruby golang even C# and even Haskell, are non-math languages.&lt;/p&gt;

&lt;p&gt;in the other universe, is Mathematica, matlab, APL… (and i think julia), these, are math languages. (note: haskell is NOT.)&lt;/p&gt;

&lt;p&gt;most of these industrial programers, since they&#39;ve never seen a math lang in their life, cannot conceive some points in lang debates.&lt;/p&gt;

&lt;p&gt;thus, debating them is like talking to stone. Even you see their points, but they don&#39;t see yours, after repetition.&lt;/p&gt;

&lt;p&gt;typically, these folks revolve around concepts like reference, pointer, memory, certain “garbage collection”, and “hi, my name is speed.”&lt;/p&gt;

&lt;p&gt;and other stuff they are found of are like: “threads”, “float, int, long, double”, some IEEE fuck stuff, OpenGL&lt;/p&gt;

&lt;p&gt;and, of course, they prefer 0 based index.&lt;/p&gt;

&lt;p&gt;these langs, are like greedy algorithms. They win at outset, but lose big time in the end. As far as efficiency and speed goes.&lt;/p&gt;

&lt;p&gt;but, commercialism is on their side. Thus the rise of C, Unix, the grand danny of all things worst. Thus born Worse Is Better.&lt;/p&gt;

&lt;p&gt;so, there&#39;s these langs, Wolfram lang, Matlab, APL, (R, Julia), not sure if there is a label that characterize them, other than “math”&lt;/p&gt;

&lt;p&gt;“array langs” does not capture them, because eg they all don&#39;t have concepts of memory, ref, float/int. (given or take)&lt;/p&gt;

&lt;p&gt;the distinguishing feature is that they have little to none implementation/hardware concepts. eg ref pointer memory, bytes, bits.&lt;/p&gt;

&lt;p&gt;instead, they focus on programer&#39;s need to deal with data. programing. numbers, string, list, file. a specific aspect of “higher level” lang&lt;/p&gt;

&lt;p&gt;on the other hand, Haskell is a bastard. Seems mathy, seems high-level, but, filled to the brim of computer engineering by-product stuff.&lt;/p&gt;

&lt;p&gt;another term i think capture them is “application languages”. But, this term doesn&#39;t sound good. and people will start to think excel too.&lt;/p&gt;

&lt;p&gt;recap: the group of langs am thinking of is: Wolfram Language, APL, R, Julia, Matlab, Prolog. (please add) possibly include bash, tcl.&lt;/p&gt;

&lt;p&gt;to get insight, its interesting to ask: wtf&#39;s a float. A boat? you end up with cpu ＆ bits. Thus born a computer engineering side effect.&lt;/p&gt;

&lt;p&gt;ever since, programer&#39;s minds are tainted with a world of computer engineering side effects. This crime began with C+Unix.&lt;/p&gt;

&lt;p&gt;in real life, a inevitability, there exist real numbers. And, a representation is decimal number notation. This is not a float. it&#39;s a Real.&lt;/p&gt;

&lt;p&gt;in math langs eg Wolfram Lang, there&#39;s no such thing as float. But, there is Real number with Machine Precision. BIG difference.&lt;/p&gt;

&lt;p&gt;LISP, is perhaps the first lang, that started the road of math langs. But, today&#39;s Common Lispers, no understand it.&lt;/p&gt;

&lt;p&gt;Note: this is not a bash against low level langs. But, against langs that do not separate implementation and language.&lt;/p&gt;

&lt;p&gt;almost all industrial langs, do not separate implementation and language. Much due to C having tainted programer&#39;s brain.&lt;/p&gt;

&lt;p&gt;C is such a virus. Because its defect, it spawn csh tcsh C++ java objc C# and basically all lang&#39;s syntax too. A snowball effect.&lt;/p&gt;

&lt;p&gt;for all javascript&#39;s idiocies, we can actually trace it all back to C, via Java.&lt;/p&gt;

&lt;p&gt;the End.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/4038134783227563618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/07/a-class-of-computer-languages-math-lang.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4038134783227563618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/4038134783227563618'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/07/a-class-of-computer-languages-math-lang.html' title='A Class of Computer Languages: Math Lang'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-2519708939103879422</id><published>2015-07-29T06:01:00.002-07:00</published><updated>2015-07-29T06:01:31.783-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programing"/><category scheme="http://www.blogger.com/atom/ns#" term="web dev"/><title type='text'>SVG pain. inverted y axes; text default scale is absolute</title><content type='html'>
&lt;h4&gt;inverted y axes&lt;/h4&gt;

&lt;p&gt;the y coordinate is inverted from normal&lt;/p&gt;

&lt;p&gt;Solution, attach all your drawing to a group, then apply transformation, like this:&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;gp.setAttribute(&quot;transform&quot;, xd.translate(0, 2*ymin+ywidth) + xd.scale(1,-1) );&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;but, the problem is, if you have text, the entire font gets inverted upside down too.&lt;/p&gt;

&lt;p&gt;So this means, there isn&#39;t simple solution to work with “not invert” y axes. Maybe there&#39;s a attribute to make text not invert or something. Still don&#39;t have a nice solution.&lt;/p&gt;

&lt;p&gt;the inverted y axes is a major pain, because it drains brain when you work with “normal” y-axes, such as in math plots. Either twist your brain, or, you need to remember to attach a transform to every of your drawing primitive. Or, group them and transform.&lt;/p&gt;

&lt;h4&gt;text default scale is absolute&lt;/h4&gt;

&lt;p&gt;you can use svg viewBox to specify your drawing&#39;s coordinate range. that is, xmin, xmax, ymin, ymax&lt;/p&gt;

&lt;p&gt;this makes it convenient. For example, if your app is plotting basic math functions, you can work with coordinate x from -10 to 10, y from -10 to 10. Instead of pixels and whatever is the current width and heigh of view port&lt;/p&gt;

&lt;p&gt;but, if you add text in your drawing, such as axies labels, the text default to font size 16px. So, you have to manually figure out what&#39;s the scaling from your view box to view port, and rescale all your text elements.&lt;/p&gt;

&lt;p&gt;〔➤ &lt;a href=&quot;http://xahlee.info/js/svg_viewBox.html&quot;&gt;SVG Coordinates, Viewport, viewBox&lt;/a&gt;〕&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/2519708939103879422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/07/svg-pain-inverted-y-axes-text-default.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2519708939103879422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/2519708939103879422'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/07/svg-pain-inverted-y-axes-text-default.html' title='SVG pain. inverted y axes; text default scale is absolute'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-512780984630472234</id><published>2015-07-04T17:07:00.002-07:00</published><updated>2015-07-04T17:07:22.714-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>emacs bug: can&#39;t paste into emacs</title><content type='html'>

&lt;section&gt;&lt;div class=&quot;date-α&quot;&gt;&lt;time&gt;2015-07-04&lt;/time&gt;&lt;/div&gt;

&lt;h3&gt;emacs bug: can&#39;t paste into emacs&lt;/h3&gt;

&lt;p&gt;there&#39;s this bug that started to happen about a year ago. Emacs 24, and 25.&lt;/p&gt;

&lt;blockquote&gt;

&lt;ul&gt;
&lt;li&gt;GNU bug report logs - #16737&lt;/li&gt;
&lt;li&gt;From: Sujith Manoharan&lt;/li&gt;
&lt;li&gt;Subject: 24.3.50; Yank causes hang&lt;/li&gt;
&lt;li&gt;Date: Thu, 13 Feb 2014 09:10:55 +0530&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pasting content selected in a browser causes Emacs to hang completely
sometimes. This is not consistently reproducible, but it happens after
a few hours of usage, sometimes days.&lt;/p&gt;

&lt;p&gt;from &lt;a class=&quot;sorc&quot; href=&quot;http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16737#17&quot; data-accessed=&quot;2015-07-04&quot;&gt;http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16737#17&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This happens to me when i use
&lt;code class=&quot;elisp-ƒ&quot;&gt;xah-find-replace-text&lt;/code&gt;
on few thousand files.
〔➤ &lt;a href=&quot;http://ergoemacs.org/emacs/elisp-xah-find-text.html&quot;&gt;Emacs Package: xah-find.el grep/sed in Pure Emacs Lisp&lt;/a&gt;〕
&lt;/p&gt;

&lt;p&gt;not always, but most of the time.&lt;/p&gt;

&lt;p&gt;the number of files doesn&#39;t seem to matter. But what matters is likely the number of replacements.&lt;/p&gt;

&lt;p&gt;there are 10 or so people wrote in that thread who also have the problem.
But, a reproducible step is hard to get.&lt;/p&gt;

&lt;p&gt;however, there&#39;s a reproduction steps described here&lt;/p&gt;

&lt;blockquote&gt;

&lt;pre&gt;

From: &quot;Alan D. Salewski&quot;
To: 16737 @ debbugs.gnu.org
Subject: Re: bug#16737: Timed out waiting for reply from selection owner
Date: Sun, 14 Jun 2015 23:00:34 -0400

The below cookbook works to reproduce the issue for me every time, so I
can now trigger the issue on-demand.

As noted in message #149 above[0], I&#39;m running the
&#39;emacs24-lucid-24.4+1-5&#39; package on Debian GNU/Linux; x86_64; 4 core
Intel i7.

I&#39;m running an X11 window manager (sawfish) with no clipboard manager.

To reproduce the issue:

    1. $ type -a emacs
       emacs is /usr/bin/emacs

       $ readlink -f /usr/bin/emacs
       /usr/bin/emacs24-lucid

       $ emacs -Q

       The &quot;*scratch*&quot; buffer is visible.

    2. M-x server-start

    3. In a terminal window (xterm in my case):

       $ emacsclient -t

       The &quot;*scratch*&quot; buffer is visible here, as well.

    4. Select a sizable bit of text to the X11 clipboard. A small amount
       of text won&#39;t trigger the issue, but I don&#39;t yet know what the
       boundary is. For my testing, I have a browser window open to
       this web page in iceweasel (firefox), and use the &#39;C-a&#39; hotkey in
       that app followed by &#39;C-c&#39; to select the full page of text:

           http://matt.might.net/articles/low-level-web-in-racket/

    5. In the emacsclient window in the terminal emulator, paste the
       text from the clipboard. I use the middle button on my 3-button
       mouse to do this.

    6. Back in iceweasel, select any small amount of text (~20 chars is
       fine) from the same page (again, using &#39;C-c&#39;).

    7. In the X11 emacs frame, position the mouse pointer over the
       blinking cursor and press the middle mouse button to attempt a
       &quot;paste&quot; operation (mouse-yank-primary).

       Emacs appears to hang for about 20 seconds, and then the &quot;Timed
       out waiting for reply...&quot; message appears.

The cookbook works not only with the stock Debian &#39;emacs24-lucid&#39;
package, but also with that package compiled with different build time
options (-g, -O0, -DTRACE_SELECTION). The cookbook also works when I
build with random other debugging code compiled in (all based on the
Debian source package emacs24-24.4+1). It does not seem to be sensitive
to being set up &quot;just right&quot;.

A slight variation of the above cookbook works with the stock &#39;emacs24&#39;
Debian package (same version as the &#39;*-lucid&#39; package above), which is
the variation compiled to use gtk. For this version, the small amount of
text selected in step 6 above does not seem to trigger the issue, but
pasting the full amount of text from the web page does. So the cookbook
variation here is to simply skip step 6 (or replace it with step 4, if
some other process has become the X11 selction &quot;owner&quot;). When running
this version, the paste into the X11 emacs frame is preceeded by a pause
and CPU spiking to 100%, the same as indicated by other reports.

Once the issue has been triggered, no further &quot;paste&quot; operations will
work in any emacs X11 frame that is part of the same emacs process, at
least not without using gdb to jump over these lines in
x_get_foreign_selection (xselect.c):

1241    if (NILP (XCAR (reading_selection_reply)))
1242      error (&quot;Timed out waiting for reply from selection owner&quot;);

Once those are jumped, the &quot;paste&quot; operation completes (the text shows
up on the buffer, as desired), but the state is still hosed.

Pasting into &#39;emacsclient -t&#39; buffers running in terminal emulator
windows (xterm) does continue to work, though. So if somebody is truly
desperate to keep a given emacs process alive, keeping a terminal-based
emacsclient window handy as a target for paste operations could serve as
a workaround once the issue has been triggered.

Thanks,
-Al

[0] message #149
    http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16737#149

&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;/section&gt;</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/512780984630472234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/07/emacs-bug-cant-paste-into-emacs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/512780984630472234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/512780984630472234'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/07/emacs-bug-cant-paste-into-emacs.html' title='emacs bug: can&#39;t paste into emacs'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-1537619703213253226</id><published>2015-06-21T17:58:00.002-07:00</published><updated>2015-06-21T17:58:55.336-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computer languages"/><title type='text'>computer languages = decades of backward compatibility cruft problem</title><content type='html'>
&lt;p&gt;computer languages have a major problem. That is, backward compatibility. Basically all languages, are hit with decades of backward compatibility cruft. And, that seems to the the main problem of languages.&lt;/p&gt;

&lt;p&gt;so, how to solve this?&lt;/p&gt;

&lt;p&gt;it seems, one way, is to somehow magically automatically change all existing code. When old code run, it automatically generates new code, and that source code is run. Βut this doesn&#39;t seem to solve the problem. Because the lang still holds all the old cruft. It only reduces the problem, by making it trivial to update code.&lt;/p&gt;

&lt;p&gt;perhaps another way, is to declare, that the language will forever be unstable. That, by using the language, you assume to continuously update your code. Google&#39;s web products, seems to be taking this approach. (even though it&#39;s not languages, per se. But lots of Google&#39;s API are like that, and comes and go.)&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/1537619703213253226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/06/computer-languages-decades-of-backward.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1537619703213253226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1537619703213253226'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/06/computer-languages-decades-of-backward.html' title='computer languages = decades of backward compatibility cruft problem'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-1120335338002684245</id><published>2015-03-15T17:14:00.000-07:00</published><updated>2015-03-15T17:14:28.465-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>Google Code shutting down, future of ErgoEmacs</title><content type='html'>

&lt;p&gt;Google announced that they are going to shut down Google Code. See &lt;a class=&quot;sorc&quot; href=&quot;http://google-opensource.blogspot.com/2015/03/farewell-to-google-code.html&quot; data-accessed=&quot;2015-03-12&quot;&gt;http://google-opensource.blogspot.com/2015/03/farewell-to-google-code.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ErgoEmacs is hosted on Google Code.
&lt;a class=&quot;sorc&quot; href=&quot;https://code.google.com/p/ergoemacs/&quot; data-accessed=&quot;2015-03-12&quot;&gt;https://code.google.com/p/ergoemacs/&lt;/a&gt;.
What to do?&lt;/p&gt;

&lt;p&gt;ErgoEmacs started in 2008. The goal was to create a binary usable emacs for Microsoft Windows, Mac. Note: a binary, that anyone who never heard of emacs can download and immediatly be productive like a notepad. No tech talk, but dense tech info available for those who look. Not some “welcome to the powerful editor emacs you must have heard, welcome to the elite hacker commu, now git clone this and that and unix then make, and set env var bash linux and open source be with you happy hacking fuck”&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a class=&quot;sorc&quot; href=&quot;http://dacap.com.ar/&quot; data-accessed=&quot;2015-03-12&quot;&gt;David Capello&lt;/a&gt;&#39;s work over the years, the Windows binary became a reality and served its purpose well for a number of years. However, Mac version never came about.&lt;/p&gt;

&lt;p&gt;Since about 2012, ErgoEmacs became largely dormant. David got other things to do, and i also got busy with other things. I still work on lots elisp code, but the last Microsoft Windows binary is in &lt;time&gt;2013-01&lt;/time&gt;.&lt;/p&gt;

&lt;p&gt;During these years, a number of things has happened. Emacs now has a package system. So, installing third-party software becomes easier and coherent. (but still require experienced emacs knowledge and programer know-how.)&lt;/p&gt;

&lt;p&gt;Matthew L Fidler, took over the ErgoEmacs keybinding part (aka “ergoemacs-mode”), which is the main part of ErgoEmacs. Matthew has brought ergoemacs-mode to a new level, and is now released as a independent package at &lt;a class=&quot;sorc&quot; href=&quot;https://ergoemacs.github.io/&quot; data-accessed=&quot;2015-03-12&quot;&gt;https://ergoemacs.github.io/&lt;/a&gt;, and it&#39;s also made into FSF&#39;s Elpa repository, as well as on MELPA repository.&lt;/p&gt;

&lt;p&gt;ergoemacs-mode is the bulk of ErgoEmacs.&lt;/p&gt;

&lt;p&gt;So, now, what should we do with ErgoEmacs? I sure don&#39;t have time to lead in building binaries. A downloadable binary that people can use right away is still lacking in the emacs community. But, i can&#39;t do it.&lt;/p&gt;

&lt;p&gt;I&#39;m thinking, i&#39;ll just use Google&#39;s provided tool to “migrate” to github, and just leave it there. Since 2012 ErgoEmacs binary for Microsoft Windows might still be useful for some.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/1120335338002684245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/03/google-code-shutting-down-future-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1120335338002684245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1120335338002684245'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/03/google-code-shutting-down-future-of.html' title='Google Code shutting down, future of ErgoEmacs'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry><entry><id>tag:blogger.com,1999:blog-33528550.post-1341138804614205691</id><published>2015-02-06T13:46:00.003-08:00</published><updated>2015-02-06T13:46:24.964-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><title type='text'>Emacs Org Mode Bable bug. For emacs lisp, session is always on</title><content type='html'>&lt;p&gt;Emacs Org Mode Bable bug. For emacs lisp, session is always on.&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;* test session; no session

#+BEGIN_SRC emacs-lisp :exports both
(setq x 3)
#+END_SRC

#+RESULTS:
: 3

#+BEGIN_SRC emacs-lisp :exports both
(+ 2 x)
#+END_SRC

#+RESULTS:
: 5&lt;/pre&gt;

&lt;p&gt;save the above as &lt;code class=&quot;path-α&quot;&gt;session-test.org&lt;/code&gt;, then open it, M-x org-mode. Move cursor to the elisp code block, press C-c C-c to eval. Repeat for the second block.&lt;/p&gt;

&lt;p&gt;The expected result for second block should be error of unknown variable x.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://xahlee.blogspot.com/feeds/1341138804614205691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xahlee.blogspot.com/2015/02/emacs-org-mode-bable-bug-for-emacs-lisp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1341138804614205691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33528550/posts/default/1341138804614205691'/><link rel='alternate' type='text/html' href='http://xahlee.blogspot.com/2015/02/emacs-org-mode-bable-bug-for-emacs-lisp.html' title='Emacs Org Mode Bable bug. For emacs lisp, session is always on'/><author><name>Xah Lee</name><uri>https://plus.google.com/112757647855302148298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-pUm2--nei1Y/AAAAAAAAAAI/AAAAAAAAlxU/c6lC81B9R04/s512-c/photo.jpg'/></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1"/><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD"/></entry></feed>