Xah's Programing Blog

On programing, languages, functional programing, Unicode, keyboard, hacker culture, ….

Want to master JavaScript in a week? Buy Xah JavaScript Tutorial.

xah keyboard buying guide ⌨

Linux: Shell Commands for GUI Apps (updated)

Mouse Hover to Auto-Raise Window (updated) This is the most useful of all mouse tricks.

Firefox: Set Mouse Autoscroll, Linux (on its own page)

Linux: Mouse Hover-Click

Unicode: Chess, Playing Cards, Dice, Domino, mahjong ♞ 🂱 ♣ ⚄ 🁶 🀄

Unicode: Car, Train, Plane, Boat 🚀 🚁 ⛵ 🚄 🚂 🚚 🚌 🚓 🚘

Unicode: Road Signs, Map Symbols ♿ ⚠ ⛔ ⛽ ⛾ 🚭

Programing: 「or」 Considered Harmful

Linux: Set Default Terminal, File Manager, Image Viewer (major update)

Linux: Bash Prompt, Add Color, DateTime (updated)

linux lxde is now my Window Manager. Much more efficient than xfce.

Linux: How to Switch to LXDE, Xfce (updated)

Unicode: Keyboard Symbols ⌘ ↵ ⇥ ⌫ ⇞ ⇟ ☾⎋ 🔍 (major rewrite)

{python, perl, ruby} tutorial is now separated into individual projects.

here's python. Python Tutorial

the perl and ruby are less mature, but good for beginner.

These tutorials are concrete in style, and example based.

3D Graphics with Clojure: OpenSCAD

3D Printing With Clojure By @Adereth. @ http://adereth.github.io/blog/2014/04/09/3d-printing-with-clojure/

Python: Unicode Tutorial 🐍 (major update)

Linux X11 Mouse Button Numbering

Linux: How to Swap Mouse Buttons updated.

new Unicode emoticon font, Google Noto. see Download Free Unicode Fonts

Keyboard Monster

Maltron mix mash keypad  David Cole 2015-11-07

Keyboard Monster

Scheme Lisp, Hygienic Macro Terminology

in Scheme lisp, there's hygienic macros. That added “hygienic” made it abstruse. A better name is simply macro, or Racket lisp's even better “define-syntax-rule”. The Common Lisp case, is a none-execuseble f*ck.

Unicode: Things Emoticons 💄 💎 🔪 💉 👙 👠 (new)

L-Trac Glow Backlit Trackball

CST25455W glow trackball
L-Trac Glow Backlit Trackball. amazon

there's a new version of the L-trac trackball, now with a glowing glob. See: Slimblade vs L-Trac Trackball

Unicode: Hotel, Factory, Bank 🏩 🏥 🏦 🏧 🏪 🎡 🗽 (new).

Emoji Keyboard

learned a new thing today.

“a thunk is a subroutine that is created, often automatically, to assist a call to another subroutine.”

from Wikipedia Thunk

Logitech G600 Gaming Mouse Review

Logitech G600 mouse 20151101 183141
Logitech G600 mouse. amazon

After eyeing this mouse for 6 years, now i have it.

Full review at Logitech G600 Gaming Mouse Review

Logitech Trackman Marble Mouse review

Logitech Trackman Marble 20151101 181714
“Logitech Trackman Marble Mouse” amazon

after eyeing trackball for 2 decades, now i have it. Full review: Logitech Trackman Marble Mouse Review

currently reading 〔Creating Languages in Racket By Matthew Flatt. @ http://queue.acm.org/detail.cfm?id=2068896〕 rather idiotic.

some people like to teach a lang thru coding game. idiotic. teach one thing at a time!!!

apparently, some school are using that article to teach programing. student ends up learning nothing.

this is how we get: “at school we had lisp course, but i have no idea what's going on.”.

an article trying to teach racket lisp's create lang features by a game. Meanwhile, trying to explain what symbol is, and what cons is? LOL

imagine, how possibly the student or generic reader can learn?

How to Create a APL or Math Symbols Keyboard Layout ⌨ (updated)

interesting read. 〔Clojure, numbers, despair By Mishok13. @ http://blog.mishkovskyi.net/posts/2015/Oct/29/clojure-numbers-despair

see also Xah Clojure Tutorial

What Books to Learn Lisp?

Racket Scheme Lisp. http://docs.racket-lang.org/guide/

Common Lisp. http://www.gigamonkeys.com/book/

Emacs Lisp. Practical Emacs Lisp

Scheme Lisp. http://ds26gte.github.io/tyscheme/index-Z-H-1.html

Clojure Lisp. Clojure Books

lisp's cons business

this (+ 1 . (2)) showcase all that's wrong with lisp's cons business. Try it in racket , emacs lisp, CL , scheme.

racket lisp, explicitly tells the fundamental idiocy of lisp that is Common Lisp. cons business, and macro shit.


Fundamental Problems of Lisp: ① irregular syntax ② cons business Fundamental Problems of Lisp

Can Lisp Macro Change Lisp Syntax? What's Lisp Reader?

A logician's reading of a computer language manual. Computer Language Confusion of Module Package Library

new crop of languages in past few years. elixir, elm, haxe, egison, julia, hack, rust, go, swift. See: Proliferation of Computing Languages

ah, due to brainfuck, suddenly i realized how to formalize abacus! in fact, bf is abacus. Abacus

see also

been doing brainfuck for the past week. Quite a excellent tool to study theoretical comp sci, as well algorithm.

brainfuck makes one painfully aware, unavoidable variations of implementation of the same algorithm.

brainfuck makes it clear that, source code is inherently unreadable and not manageable. Specifically imperative languages.

Brainf*ck Language EOF Design Problem

Mosh (mobile shell), replacement of ssh

seems a interesting tool. Fix the ssh constant disconnection over wifi problem.


Mosh (software)

Lisp, PHP, Perl, Python … Emacs. Interview with Reini Urban

Interview with Reini Urban By Reini Urban. @ http://perlhist.com/perl30/reini-urban

lots interesting things.

Reini Urban is the author of alternative Perl compilers. But if you read the article, it's not really about perl. He's expert of lisp, perl, php, and uses emacs, since few decades ago.

lisp macros, Racket define syntax rule and pattern matching

racket named lisp defmacro as define-syntax-rule. A step forward. Even better is “define-form-rule”, as lisp macro can't change syntax.


note that how it calls macros as pattern matching and or syntax transformation.

in my 20+ of computing career, the Common Lisp fanatics, are the most persistent idiotic bunch.

racket, now i've read most of its doc, clearly tried to fix many of Common lisp's bad persistent notions, and scheme too.

scheme lisp lot is a unfortunate sorry lot. Cult result is obsession with tail recursion, like haskell's monad. Going nowhere, forever.

the most idiotic feature in comp lang, is call-with-current-continuation of scheme fame. This, rivets scheme in lala-land forever.


learn racket scheme lisp in 5 minutes. Racket Start (Install, Setup)

language popularity ranking sites

there's many language popularity ranking sites. The most well-known, is tiobe.


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.

another one, http://langpop.com/, is worse. And badly maintained.

the following is better, because they are specific on what they measure.

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?

Google Puts All 9 Million Source Code Files in One Repo

The Motivation for a Monolithic Codebase Why Google Stores Billions of Lines

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.

Presenter: Rachel Potvin

Google Puts All 9 Million Source Code Files in One Repo. Its own custom source management system called piper.

for context, linux kernel has 15M lines. Google repo has 2G lines. Google human makes 15M lines of code change per week.

Rachel Potvin explains why. But, i'm rather not convinced.

camelCase vs snake_case. Vote. 31 votes there. https://plus.google.com/+XahLee/posts/fNK8fCr4iwd

Past Articles by Date