Xah's Programing Blog

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

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

Mouse Size Comparisons. lots photos.

revamped review. ROCCAT Gaming Mouse with Linux Support

Unicode: Unit Symbols ㎜ ㎝ ㎡ ㎥ ㎐

Computer Keyboard: Home/End Key Cluster Arrangement: Horizontal vs Vertical (repost)

Kensington Slimblade trackball TEK 92960
Slimblade Trackball

Razer Ouroboros Mouse, Batman Mouse

Razer Ouroboros mouse 44502
Razer Ouroboros Wireless Gaming Mouse

this is a batman mouse. Fancy, but is it worth $130?

see Razer Ouroboros & Orochi, Wireless Gaming Mouse

NeXT Computer keyboard
“NeXT Computer keyboard” 〔image by John Miranda. Source http://www.johnmirandaphoto.com/next.htm

NeXT Computer Keyboard: I'm changing the world, one keyboard at a time —Steve Jobs

Clojure Functions: polymorphism, guards, destructure binding. Clojure Tutorial: Functions

Unicode: Clocks 🕑 🕒 🕓 🕔

Purpose of Logo and Principle of Logo Design (updated)

Cygwin Essential Install List (minor update)

Thermaltake Level 10M mouse 1
Thermaltake Level 10m Mouse

aspell sucks: Dismal Vocabulary Size (repost)

Mouse with a Thumb Paddle and a Fin-Switch

incredible mouse.

ROCCAT Tyon mouse 98322eeb
ROCCAT Tyon Mouse

Optimus Popularis Keyboard. A keyboard with a 48×48 display on each key.

What's Key Ghosting, N-key Rollover? (minor rewrite)

Happy Hacking keyboard replacements. Keyboards without Numeric Keypad (major rewrite.)

Keyboard: What's the Use of Function Keys? (updated)

PowerShell as cmd.exe or Bash (repost)

more Cheap Gaming Mouse. Now listed in order from best to worst, by user reviews.

New mouse. MADCATZ MOUS 9 wireless mouse. Beautiful, but bad function. Mad Catz RAT 5 Gaming Mouse

What's Jog-Wheel? What's Shuttle-Wheel? (updated)

more agile fuel. eXtreme Programing and Agile Voodoo Diagrams

new from Microsoft: Microsoft Universal Foldable Keyboard

Kensington Expert Mouse

Keyboard for Programers: Layouts, Shortcuts, Macros, RSI ⌨ redesigned index page. Everything you ever want to know about keyboards.

Mac OS X: How to Create Keyboard Layout and Keybinding ⌨ (minor update)

found a new way to download YouTube videos. See Linux Command to Download YouTube Video

Software Skin Cancer

Haskell Designer Paul Hudak Died

Paul died (1952 〜 2015-04-29). Professor at Yale University. Haskell designer.

Yale Haskell logo Yale Haskell bullfrog
Yale Haskell logo. A Lambda Logo Tour (and why LISP languages using λ as logo should not be looked upon kindly)

What's Lisp-1, What's Lisp-2? Bad Jargon or Good Jargon? (updated)

Microsoft Windows Keyboards Shortcuts Complete

Windows: Disable Caps Lock, Disable Windows Key, Key to Launch App …

Windows Logo Key Keyboard Shortcuts

Microsoft Windows Keyboard Shortcuts


HTML Style 1999: Hacker News (added screenshot)

Unicode Cross ✚ ✙ ✝ ✞ ✟ ⛨ ♰ ☯ ☠ (major update)

Unicode Stars ★ ✪ ✭ ✡ ⛤ ❉ ❄ ✿ 🌟 🌠 (new page)

Unicode Weather Symbols ☂ ☃ ⛈ 🌞 🌀 🌈 🌁 (major update)

gittorious closing down. github vs gitlab?

GitLab logo
GitLab logo

What's the difference between github & gitlab? the latter is full open source, and free private hosting.

gitorious closing down. Bought by GitLab. A page in code hosting history.

github, gitlab, gitorious, gitcafe, all written in Ruby. 〔➤ Xah Ruby Tutorial

A new mouse from Logitech, Logitech MX Master Wireless Mouse. This mouse has some quite interesting features that are not in any other mouse in history.

logitech mx master wireless mouse
“Logitech MX Master Wireless Mouse” amazon

see Logitech MX Master Wireless Mouse

for Microsoft Windows, AutoHotkey: Swap Caps Lock, Alt, Control Keys (updated)

computer language char distribution 2015-04-18
Computer Languages Characters Frequency (now you can enter your own source code and get punctuation usage statistics)

discovered a new keylogging software. See: List of Keylogging Software (thanks to comment by Ran Viz)

Linux: Move File to Trash by Command (minor update)

Unicode: Punctuation & Printer's Symbols † ¶ © ® ™ ☙ (minor update)

Unicode: Currency Symbols $ € ¥ £ ¢


PowerShell Tutorial

What's Mouse DPI? Does Mouse DPI Matter in Gaming? (major rewrite)

Unicode: Food, Pizza, Banana, Cake, Beer 🍕 🍌 🍰 🍺 (updated)

Java: Reading and Writing to a File

Linux: Convert File Encoding with iconv (new, on its own page)

Perl: Convert File Encoding (new, on its own page)

Python: Converting File's Encoding (updated)

Logitech created a new one, g300s. Logitech G300s Gaming Mouses

PHP Tutorial by Example (minor update)

PHP: Object Oriented Programing Tutorial (updated formatting)

Python: Reading & Writing File (minor update)

Python: Example of Sets, Union, Intersection (rewrote)

How to Improve Python Doc; Notes on Rewriting Python Regex Doc (repost)

Discovered some cheap numerical keypads. $10 or $15. See List of Programable Keypads

For how, see Keyboard: How to set Number Keypad as Function Keys for Windows, Linux, Mac (major rewrite)

For why, see: Keyboard: What's the Use of Function Keys? (major rewrite)

Neal Stephenson at Google Talk 📺 (repost)

new keyboard curiosity. Point of Sale KSI Keyboard

I do not recommend this mouse.

CM Recon mouse 2015 556
CM Storm Recon Mouse Review

python os.path.walk() is deprecated, and removed in Python 3. Use os.walk() Python: Traverse Directory

Python: How to Read & Parse JSON (minor update)

new addition. Keyboards Without Numeric Keypad, Under $30

Useful AutoHotkey Scripts (minor update)

Unicode in Ruby, Perl, Python, JavaScript, Java, Emacs Lisp, Mathematica (minor update)

Evolution of Laptop Keyboards, No More Page Up/Down Keys!

Unix/Linux Shell Shebang: Who Gets to Use the First Char? (repost)

Linux: Set Keyboard Repeat Rate by Command (minor update)

Linux: Xbindkeys Tutorial ⌨. New.

new finding, cheap ergonomic mouse. Ergonomic Mouse, Vertical Mouse

The Worst Programing Language Tutorial & Documentation Styles (new, on its own page)

Why You Should Swap Mouse Middle-Click & Right-Click? (new, on its own page)

How to Add/Change Firefox Keyboard Shortcuts (minor update)

Linux: How to Swap Mouse Buttons (updated)

repost. Microsoft's TypeScript Will Kill CoffeeScript & Dart❕. Reminder: if you are going to use a wrapper language for JavaScript, TypeScript is better than CoffeeScript or Google Dart.

Linux: How to Set F2 F3 F4 to Cut Copy Paste Globally ⌨

Now you can buy the Truly Ergonomic Keyboard on amazon. See the amazon links in Truly Ergonomic Keyboard

Computing and Its People (major redesign)

every year, i must recommend this for better operational efficiency: Mouse Hover to Auto-Raise Window

and ban double-click: Single-click Open File in Windows & Linux

Linux: How to Find System Info (repost)

new. Linux Keybinding Tutorial Index

Linux: 「wmctrl」 Add Keyboard Shortcuts to Switch to App ⌨ (new. On its own page)

Linux: LXDE: How to Change/Add Keyboard Shortcuts ⌨ (new)

Linux: LXDE Set Key Repeat Rate ⌨ (new)

Ubuntu Linux: Command Line Equivalent to Update Manager (updated)

Linux: LXDE Keyboard Shortcuts ⌨

Notes on A New Kind of Science

Why is Pluto not a planet? Ceres, Pallas, Juno, Vesta, Eris …. Unicode Astronomy & Astrology Symbols ☿ ♆ ♋ 🌙 🌛 🌝 🌞 (major update)

Lots mouse from China are making inroads in USA market. For a 18-buttons mouse, this is half the price than Logitech or Razer. Redragon Perdition 18-Buttons Mouse 红龙 灭世 鼠标

Installing Cygwin Tutorial (repost)


CM Storm Recon Mouse. Added a photo gallery and review.

Linux: Command to View/Delete Metadata in Image Files (major rewrite)

Linux: Shell Commands for GUI Apps (repost)

Linux: How to Set Default App? (minor update)

now on Reddit. See link to reddit at bottom. Programing Challenge: Constructing a Tree Given Its Edges

Python: Function to Get Number of Args of Function

in Python, it is impossible to write a function to get a function's number of args.

# python 2
# get number of args of a function. works for user-defined function only
# code by John Smith

def get_number_of_args(func):
    return len(func.func_code.co_varnames)

def g(a, b): pass

print (get_number_of_args(g))   # 2

it is possible for user-defined functions, at least in python 2. But not for builtin functions.

if possible, it should be here:

In 1961, the IBM 7094 became the first computer to sing, singing the song Daisy Bell. 《2001: A Space Odyssey》 🎶 Daisy Bell in 《2001: A Space Odyssey》 🎶

The Unix Pestilence (some update of logos)

Unicode Smilies (◔ ◡ ◔) (repost)

Why Python's Lambda is Broken and Can't be Fixed (repost)

Bondi Blue iMac Girl, 1999

Past Articles by Date