Xah's Programing Blog

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

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

Linux Shell Util uniq Unicode Bug

this is one of the most popular article on my site. Why LD_LIBRARY_PATH is bad

Esrille keyboard M-system keyboard 2014-10-21
Japan M-Type keyboard, TRON keyboard

if a programing language doc or tutorial starts with a eloquently written tale or intro, throw it in the trash bin immediately.

Truly Ergonomic Keyboard: new models

Truly Ergonomic Computer Keyboard-227 2014-10-20
Truly Ergonomic Keyboard

there's new model of the Truly Ergonomic Keyboard

they are switching from Cherry MX switch to Kailh keyboard switch. Kailh keyboard switch is just Cherry MX clones, made by a company in China. see http://deskthority.net/wiki/Kaihua_PG1511_series. I'm guessing it's not that much different from CHERRY MX.

looks like quite a few keyboards are using the Kailh switch. Supposedly, the Cherry MX has supply problems.

they also have some other minor changes. The ⇧ Shift key is now in conventional position. Ctrl is now at conventional keyboard's Caps Lock position. vim & emacs hackers overjoy! The HYPHEN-MINUS - and LOW LINE _ key are now in the middle, replacing the Tab ↹ there. The Tab ↹ is moved to the upper left corner. And upper right corner has a duplicated ⌫ Backspace key.

Overall, the key layout changes are now more conventional. People really don't wantto change habit. The new layout makes it easier for people to adopt.

JavaScript Array Speed vs C Array

theory of the century from C hackers: 1+1 is faster in machine code than any language.

just had a relevation. call-by-reference and lazy-evaluation can be thought as the same thing. The value is determined when needed. #python #java #haskell

What's immutable, what's mutable? If i didn't change it, it is immutable, else its mutable. Anything else, is idiocies of the hacker type. Programing Language Syntax Soup #lisp #python #haskell

Python 3: Formatting String (minor update)

is Python more clean or Ruby? These two comparison tells: Python: Complex Numbers vs Ruby: Complex Numbers

when you write a opinion piece, if it's not full of color, it's no good.

Paul Graham's ideal language is a lang that's hackable (and he created arc lisp). Actually, the ideal is unhackable lang. Every time you hack, you get a shock. Paul Graham's Infatuation with the Concept of Hacker

oldie goodie State of Theorem Proving Systems 2008

Linux Idiocy: Color Calibration

new monitor after 6 years

My monitor died this morning. The power won't come on. After some searching, i assume it's old or fried capicator problem.

VIZIO E241i-B1 tv monitor 2014
“VIZIO E241i-B1 24-Inch 1080p 60Hz Smart LED HDTV” amazon

as emergency measure, asked my roommate to drive me to Walmart and got this.

it's really a monitor designed for TV.

Vizio turned out to be a US company founded by Chinese in California in 2002, and it's popular for selling TV screens.

For me, it's a upgrade. My old served me good 6 years. It was LG L227WTG, 22″, 1680×1050. Not LED. 〔➤ Why I'm Switching from Mac to Windows

now it's 1920×1080 and 24″ and LED.

it's got what's called Smart TV

for my record, here's spec

VIZIO E241i-B1 monitor/tv Spec


    Screen Size24″
    Screen Size (Diag.)23.54″
    Backlight TypeRazor LED
    Resolution1920×1080 (1080p)
    Effective Refresh Rate60 Hz
    Aspect Ratio16:9
    Viewable Angle (H/V)170°/160°
    Number of Colors16.7 Million
    OSD LanguageEnglish, Spanish, French


    Speakers/Power Output2W × 2
    DTS StudioSound™Yes
    DTS TruSurroundYes, HD
    DTS TruVolume™Yes


    HDMI Ports1 (back)
    Component1 (back)
    Composite1 (back)
    Tuner1 (back)
    Ethernet1 (back)
    USB Ports1 (back)
    PC1 (back)


    Analog Audio Out1 (back)

Multimedia Features

    VIA (VIZIO Internet Apps)Yes, VIZIO Internet Apps Plus®

Additional Features

    Built-in Wi-FiYes, 802.11b /g /n
    Remote ControlXRT112

Energy Savings
Energy Guide

    Energy ComplianceENERGY STAR® 6.0
    Power Consumption25.7W (Avg.)
    Standby Power Consumption<1W

Wall Mount Specifications

    Mount Pattern100mm × 100mm
    Screw SizeM4
    Screw Length10mm

Size and Weight

    Product with Stand Dimensions21.55″W × 14.55″H × 4.39″D
    Product with Stand Weight7.05 lbs
    Product without Stand Dimensions21.55″W × 13.80″H × 2.11″D
    Product without Stand Weight6.83 lbs
    Product Packaging Dimensions24.53″W × 16.38″H × 4.25″D
    Product Packaging Weight9.92 lbs

rule of conduct of a 4chan philosopher

in hacker discussion, there's one thing i despise the most. If you know something, say it loud, swear, insult, that's all fine. If you don't know something, but insist and put on a air, that is the MOST mfkg despicable in my book.

i often post random rants and stuff on computing in social networks. The seriousness of it is made plain in the writing style. When in discussion, if you put on a air on something that you are idiotic of, be prepared for my wrath. (and btw, usually one has too go out of his way to invoke that. So, you don't need to worry.)

also, typically my posts are on programing topics but is not a technical issue that has a straight-forward answer. To illustrate, consider the question “how does y work in lang x”. Vast majority of coders knew this for some x. You and i can goto stackoverflow and get 100% satisfaction. But rather, i usually post subject about, syntax design, semantics, idioms, engineering practice. The discussion quality can be measured thru scientific methods. ⁖ knowledge of history of the subject, depth of logical analysis, or even creative writing. It is never “my experience is this and thus the world should be this” fuck. Example of such are fanatics of the Common Lisper macro is god fk, closure rules fk, array index should be 0 fk, gnu emacs keybinding fk, you must swap capslock/control fk, programing idioms fk.

computer language: mixed list & hashtable

these days, some lang has array/list and hashtable mixed into one. It is popularized by php.

php started that way probably due to a hack. The lang doesn't have arrays, but what it calls array is a mix of hashtable. When used like array, the keys are automatically filled with 0, 1, 2, etc. 〔➤ PHP: Array Basics

JavaScript is a different story, but also hack and incompetence. It did NOT intent to have mixed array/hashtable, but rather, in order to be simple, it's array is implemented as hashtable (which is its object), so it pretent to be array. 〔➤ JavaScript: Understanding JavaScript Array〕.

nobody liked these, because they are even less than a design decision. The JavaScript here is simply fk'd up.

though, i heard lua is also mixed array/hashtable. Anyone know if it's really good?

The Over Flowing StackOverflow

StackOverflow… although useful, but i hesitate to participate in depth. Like all such forums (except usenet), soon it picks up gazillion policies, rules, and cult communities of the subject, where you can't really express a particular view. And, things like, if you don't use the site in a particular way, the community don't consider you good even if you contribute lots answers (not necessary by a policy, but by the behavior of the members.). And, there's this bunch of badges and score shit. On the surface, they are a bit fun for everyone, but mixedin is really a addiction touch, and of course, the site owners know it precisely, that's why they are there. Its called commercialization.

of course, big congregated sites like that make millions, for themselfs, while the open source fanatic idiots, get nothing, defend the site, yet themselfs work for non open source companies making thousands a month, but has the audacity when some poor sob doesn't open source stuff. fk the open source scums. 'its they, gets us today's web, where most news sites are garbage filled with lurid ads, individuals and creative people get nothing, and we must sing ode to open source. 'tis how communism rose.


found this excellent essay: 〔Why I No Longer Contribute to Stackoverflow By Michael T Richter. @ http://michael.richter.name/blogs/why-i-no-longer-contribute-to-stackoverflow

g+ discussion https://plus.google.com/+XahLee/posts/KqpkVPb41fb

PS: personally am very thankful of at least one of the Stackoverflow's founder.

Whatever programmers think about themselves and these towering logic-engines we've erected, we're a lot more superstitious than we realize. We tell and retell this collection of unsourced, inaccurate stories about the nature of the world without ever doing the research ourselves, and there's no other word for that but “mythology”.

read & weep. Language Design: Should Array Index Start at 0 or 1?

glorious photos of the DEC VT100 Terminal

Linux: Set Keyboard Repeat Rate by Command

Linux: xmodmap Tutorial ⌨ (updated)

Kinesis Keyboard Review and RSI (updated the layout diagram)

Closure in Python & JavaScript

from function point of view, closure is function with state, therefore, equivalent to using global variables.

Semicolon vs Apostrophe Frequency in Computer Languages (minor update)

Unicode: Plants, Flowers 🌴 🌵 🍀 🍁 🎄 🌹 🌷

Unicode: Love Symbols, Hearts ♥ 💋 💏 💌 💍 ♥ 💋 💏 💌 💍

Backspace key; Computer Keyboard Key Label's Influence on Key Purpose (minor update)

Mathematica pattern matching
Mathematica pattern matching

Intro to Mathematica Pattern Matching for Lisp Programers (updated)

Unicode: Male/Female/Marriage/Sex Symbols ♂ ♀ ⚨ ⚤ ⚢ ⚣ ⚥ ⚧

Best Unicode Fonts for Programing (updated)

Yuri Khan explains why exception is needed in Haskell. See bottom: Programing: Why I Hate Exceptions

Sackoverflow's like, 90% of questions you don't know the answer of, while the 10% you never get a chance to answer.

Problems of Symbol Congestion in Computer Languages; ASCII Jam vs Unicode (repost)

Programing: Why I Hate Exceptions

On the Realism of Space Battle of Star War vs Star Trek

the most realistic space battle is depicted in Star Wars, where massive ships loom large by inertia, plasma bolts fly like raining swords, and the giant explosion only possible in outer space. On the other hand, Star Trek is not realistic in just about every way. The oddly shaped ships are not space-dynamic, and teleportation has unsolved philosophical issues, the aliens are humans with horns, and silly evasive maneuver, wrap-drive, time travel, holodeck, lol, figment of desire of scifi nerds.

you know you are old when you see heated debates that you participated decades ago. On Unix File System's Case Sensitivity

if you stutter in grammar, have a style tumor you can't excise, or in the plight of sufferage of prolixness, follow wordy english for treatment.

in programing languages, statements should be ban'd. Only expression should be allowed. Programing Language Syntax Soup

fingerprint authentication problem
fingerprint authentication problem. With fingerprint, somebody can unlock it while you sleep, or the cops and FBI.

list comprehension, python, semantics & syntax, and the hacker idiocies

Guido wants to remove {lambda, map, reduce} in python. He wants us to use list comprehension exclusively. see Lambda in Python 3000.

if you don't know what list comprehension is, see Python Tutorial: List Comprehension

list comprehension is no good. see Computer Language Design: What's List Comprehension and Why is It Harmful?

still, the python hacker idts defend it by “its faster”. In which, python compiler idcy comes forward to defend python language idcy, like a snake eating its tail.

however, there's one important semantic advantage of list comprehension. That is, using expressions to build complicated list. The advantage is seen especially with multiple variables. This would be nested map, which is cumbersome. This is also why, Mathematica has the Table[] construct http://reference.wolfram.com/language/ref/Table.html, which is a functional form of list comprehension. (in Common Lisp, the analogous is its loop. However, only Mathematica's syntax is functional. Python and Common Lisp loop syntax are imperative warts on drugs.)

by the way, idts will start to talk about list comprehension as analogous to math's set comprehension and stuff. U no unstand.

math's set comprehension is a idiocy, first of all. see:

or Google search for “calculational proof” by Dijkstra or others, or “calculational math”.

secondly, list comprehension has nothing to do with math's set notation, unless you are talking about purely declarative functional languages or proof system language that actually have some form of comprehension, such as coq or HOL, see:

by the way also, “list comprehension” is one of those fuzzy thing. Any lang that does loop with a non-“for loop” syntax is likely be seen as “list comprehension”. So, on pages such as Wikipedia, you have one hundred languages all trying to demo its list comprehension. Like, “regardless how idtc i am, also ran is my very advanced feature the list comprehension, witness.”.

linux tip: change display resolution, orientation, by command line

you can use the command xrandr to control display resolution, orientation, etc. See man xrandr. (warning: i haven't tried. Use at your own risk.)

thanks to Thomas Funk. see: https://plus.google.com/+XahLee/posts/VQAnaduNVSm

Linux Tutorial: How to Fetch Websites by Command Line? wget, curl, HEAD, GET (updated)

Linus's new keyboard: CM Storm

so, Linus got a new keyboard, and it's Cooler Master Storm.

Cooler Master Storm QuickFire Rapid Keyboard SGK-4000-GKCL1-US
Cooler Master Storm QuickFire Rapid Keyboard

See https://plus.google.com/+XahLee/posts/Tted66P1qy2

you can still buy this classic. IBM Model M keyboard, Unicomp (updated)

this is best for Mac users. Keyboard: Matias Mini Tactile Pro Review (updated)

Keyboard: What's the Difference Between Alt Graph Key, Compose Key, Dead Key? (updated)

Keyboard revolution is here. Introducing, the Axios Keyboard ⌨

programing pains and idiocy: trim whitespace

in emacs, there's a command that trim whitespace. But, wouldn't it be great if when a file is saved, the command auto runs? But then, when working in a team, if you do that, and commit, people will frown upon, as consequences of diff and log all become spurious. Thus, born is various whitespace clean packages, that trim only if the file before edit is whitespace clean, or trim only on the lines you edited.

it's, like, becoming, idioticer and idioticer.

there are several problems here. The core is the most idiotic concept, that code are based on lines of 70 chars or so, which originated from punch cards, and insisted by unix C idiots, and glorified by hacker idiots about style guides and style guide checkers banana.

spurious software complexity that spun out of nowhere. Like, these days, you spend most of the time on the side things of coding. Time to learn the tools, work around the tools, follow new rules due to tools.

Programing Language Syntax Soup

a new index page Computer Keyboard Layouts & Keybinding Tools & Tips ⌨

does linux tiling window really suck? a challenge

a coder i respect highly, Yuri Khan, commented on my article about tiling windows.

i know at least that Yuri is expert at python and JavaScript, and also a master of keyboard config, like myself. He has commented on my blogs for over a year, and that's how i know. Often, i learn something from him, either something technical in a language, or history, Russian programing keyboard or typing issues, etc.

sometimes we disagree. He loves python, i hate python.

anyway, he commented on my tiling windows rant on how he finds it useful. (as a lot hackers do. I despise tiling windows, as i despise most hacker's love, such as the The Idiocy of Happy Hacking Keyboard)

i updated my tiling windows article, to include a alternative workflow, and i challenge anyone to use it for a week, and see if they still find tiling window or workspace useful.

here: Why Tiling Window Manager Sucks (xmonad, ratpoison, dwm, …)

if you don't know how to set the keys, just ask me by leaving a comment there.

you must do this. How to Set Key to Switch to Browser (updated)

another new index page. Computer Keyboard Layouts & Keybinding Design & Analysis ⌨

new index page. Design of Computer Keyboards ⌨. Separated out from Computer Keyboards, Layouts, Hotkeys, Macros, RSI ⌨

new index page: Linux Rants & Ravings, separated out from Xah Linux Tutorial.

What is Gamma in Digital Images

What is High Dynamic Range Image (HDRI)? (updated)

ROCCAT Ryos MK Advanced Mechanical Gaming Keyboard


ROCCAT Ryos MK Keyboard
ROCCAT Ryos MK Advanced Mechanical Gaming Keyboard. amazon

ROCCAT is known as a linux friendly brand. The keyboard driver is available for Linux. No need for Microsoft Windows to set the programable keys.

Repeated “the” Typos in Programing Docs

Linux: Compression How-to: tar gzip bzip2 xz 7zip rar zip (minor update)

Should You Type Space After Comma? and Tiny Space Bar on Japanese Keyboards (minor update)

i needed this recently. GNU Privacy Guard (GPG) Tutorial

Command Line Tool to View Comments in Image Files

What's the Difference Between JPEG JFIF EXIF?

Linux: How to Swap Caps Lock & Escape Keys?

Linux: Show X11 Keycode & Keysym ⌨ (on tis own page)

Linux: How to Find Keyboard Scancode of a Key? ⌨ (on its own page)

Keyboard Layouts Fight! Dvorak, Colemak, Workman, NEO, Bépo, … (minor update)

the most powerful shell command. Master it. Linux: Traverse Directory: find, xargs (minor update)

Linux: How to List & Install Font (repost)

Standard Fonts on Linuxes (repost)

Linux Pain: Google Chrome Korean Font Scrunched Up

Linux: Control Sound Level with Command Line (updated)

UtechSmart Venus Mouse

UtechSmart venus mouse
UtechSmart venus mouse. amazon

new addition. See: Best Mouse for Programers: 17 Buttons

the mouse that killed all other mouses

one cheapo mouse, 5 buttons, 1.5 year battery life, $9.97! TeckNet® M002 2.4G Nano Cordless Optical Mouse

Most Popular Page on xahlee.info

the most popular page on my site is JavaScript: Get Elements by ID, Tag, Name, Class, CSS Selector
13.3% visitors are viewing that page. 13k page views in past 30 days.

the second most popular is The Idiocy of Happy Hacking Keyboard 1.2% of page visits. 1.2k page views in past 30 days.

3rd most popular is Unicode Arrows → ⇒ ⇄ ↑ ↩ ⤢ ↱ ↷ ↻ ► ☛ 1.2% of page visits.

4th most popular is Mac OS X: How to Create Keyboard Layout and Keybinding ⌨ 1% of page visits.

comment at https://plus.google.com/+XahLee/posts/acGmeFmEBcU

Chromebook is actually just a Google Chrome browser, that's ALL. The most popular now is this cheap one: Acer c720 chromebook