Xah Programing Blog 2010

Discovered a new compression util: XZ Utils. Quote:

XZ Utils (previously LZMA Utils) is a set of free lossless data compressors, including LZMA and xz, for Unix-like operating systems (with experimental support for Windows as of version 4.999.8beta) controlled by a command-line interface. It has been ported to many Unix-like systems including GNU/Linux, Cygwin, and iOS.

See also: ZIP, Open Source, Mother-Son Relationship. (thanks to meowcat.)

Thanks to Remington Furman for $15 donation!

HTML Entities, Ampersand, Unicode, Semantics (thoughts)

Windows Vista has this Quick Launch toolbar. Basically, you can drag icons there and you can click icons there to launch apps. It also has a automatic hotkey feature. Whenever you put a icon there, a hotkey is automatically created for you. The first icon will have hotkey 【❖ Window+1】, and second 【❖ Window+2】, etc. The total number of hotkeys auto-created are limited to 10, from 1 to 9 and 0.

Great feature, but there's one problem. Whenever you create a new icon, or remove one, all your hotkey changes. This is quite annoying.

So, today, i disabled them all, and instead, use AutoHotkey to create hotkeys myself. Like this:

; disable the bunch of launch app keys setup by Quick Launch. Because it change keys whenever you add or delete a icon there.

#7::Run "launch or switch skype.ahk"

See also:

Unicode Box Lines ┌ Blocks ▓

How Are Books Made in 1950? Video of Linotype Machine in Action (nice video)

Unicode Keyboard Symbols ⌘ ⏎ ⌫

Discovered Operation Payback. A internet activist group. Recently, they launched attack on those who attacked Wikileak. [see Wikileak: US Diplomatic Cables Leak] They DDOS attacked sites of Visa, MasterandCard, Paypal, Amazon, and some government sites. In the past, they've attacked sites such as Recording Industry Association of America (RIAA), Motion Picture Association of America (MPAA), Warner Brothers, and also Scientology, etc. Typically, big organizations that cracks down on piracy networks. (See: Scientology and Falun Gong)

I don't support software piracy. [see Software Piracy, Open Source, Free Software, Copyright] However, in this world, much of it is political struggle. For example, there are 2 politicians B and E. You don't really like B, but you think E is by far the most evil. B is your possible chance to prevent E becoming more powerful. So, in many circumstances, you have to support B. This is in fact how alliances work.

Also, orgs like the Operation Payback are made of individuals, like you and me, where each of us make decisions individually, as opposed to big organizations that are typically mindless power controlled by a few. In some sense, that's a essential ingredient to keep some power to people, a form of Grassroots movement.

The Operation Payback group is called Anonymous (group). They seem to have twitter account https://twitter.com/AnonOpsNet.

Also, i've always wondered how those DDOS attack gets their machines. I thought it's from viruses (trojan horses), whic got to people's machines from games or pirated software downloads, without user being aware. Today, i learned the answer. There's this tool LOIC (for Low Orbit Ion Cannon). Basically, it's a software application you can download, so that you can participate in a coordinated attack against big sites. (the “attack” basically just means visiting the site repeatedly to drive their server out of handling request capacity; this is known as DDOS (Distributed Denial Of Service) attack) Of course, some DDOS attack are from rogue software (viruses; trojan horses) that hijacks user's machine without user knowning. But LOIC is the proper tool to carry out people's voices, in a meaningful and controlled way.

Design of Math Symbols Input System

Discovered a new trackball.

Adesso trackball mouse 87726
Adesso Trackball iMouse T1

Andy Stewart, who wrote tens of elisp packages (see his site), started a new project on Haskell called Manatee. We voice chatted on skype for about 50 min on emacs and haskell and programing.

Manatee is a OS-like environment for Haskell hacking, currently running on top of linux and GTK+.

You can see many screenshots here: Source www.flickr.com. Or a video of screenshots at Source www.youtube.com.

Manatee home page at: http://hackage.haskell.org/package/manatee. Documentation at http://haskell.org/haskellwiki/Manatee.

Discovered, that in Opera, to switch to next/prev tabs in a normal way, you have to press 【Ctrl+F6】 and【Ctrl+Shift+F6】. What a idiocy. [see Opera Pain; Opera Browser Problems] Or, in Opera 9.2 or before, press the 1 and 2 keys on the number pad. In Opera 9.5 or later, you have to Enable single-key shortcuts in the preference. [see http://help.opera.com/Windows/10.63/en/keyboard.html]

So, in AutoHotkey, i added these to be consistent with all my hotkeys for browsers. (the / and * on number pad to switch to prev/next tabs.)

;; Opera hotkeys
#IfWinActive ahk_class OperaWindowClass

; close window
$Pause::Send ^w

; prev tab
$NumpadDiv::Send ^+{F6}

; next tab
$NumpadMult::Send ^{F6}

See: AutoHotkey Tutorial and AutoHotkey Example Scripts.

Also, after several years of hearing Opera's stupid “mouse gestures”, today i took 5 min to read up what it is. See: http://help.opera.com/Windows/10.63/en/mouse.html. Rather idiotic.

What Do Programers Do All Day?

In the past few years, i've been wondering why software engineering is so cumbersome and time consuming. Usually, something that's conceptually trivial, something you think can be done in 10 minutes, ends up hours. In the past few years, i tried to write a account of it whenever this happened to me. See these essays:

(and it is quite time consuming to document this experience. Each essay above usually takes 4 hours to write.)

In all the above cases, they are typically about installing a package, setting a preference, compress a file, get spelling checker to work, setting a environment variable. If you know the technologies well, usually you'd imagine it's just 5 to 10 minutes job. But in each case, i ends up spending hours or half of a day.

In the past week, another 2 such situation happened. One is renaming a file in Subversion (svn); changing capital letters to lower case. See the problem described here: http://groups.google.com/group/ergoemacs.

The other problem is about writing a script to zip up a directory. See: Unix zip Utility Path Problem.

You might have worked in the software industry as a programer for years. Sometimes, you might wonder, “what i've actually been doing in the past few months?”. In a day job situation, half of the time is spent on meeting and communication and other miscellaneous, non-nondescript stuff. Perhaps you actually get to code only for 1/3 of your working time. Of that time, a large part, probably more than half of the time, is probably spent on getting something conceptually trivial to work, among the hacks, spaghetti code, non-existent documentations, problem in tools, etc.

As a programer, i think intuitively we think that programing is actually writing new functions, new libraries, something that doesn't exist before. But i think in reality, more than half the time a working programer spend daily on coding, is actually about fixing stupid problems, working around tools, using knowledge about the environment and past experiences.

Please use this date time format, in your code, in your blog, everywhere. ISO 8601. Like this:

For emacs lisp code, see: Emacs Lisp Date Time Formats.

Unix zip Utility Path Problem (commentary)

A very detailed explanation of keyboard switch mechanisms, key label printing tech, etc.

Mechanical Keyboard Guide By Manyak. At Source

For 70 articles on keyboarding, see: Keyboards, Layouts, Hotkeys, Macros, RSI.

Pirate Bay Guilty Verdict Upheld By Jared Newman, PCWorld. At Source

See also: Software Piracy, Open Source, Free Software, Copyright.

A unprecedented, military-grade virus that attacks nation states. Stuxnet.

Stuxnet is a Windows-specific computer worm first discovered in June 2010 by VirusBlokAda, a security firm based in Belarus. It is the first discovered worm that spies on and reprograms industrial systems,[1] the first to include a programmable logic controller (PLC) rootkit,[2] and the first to target critical industrial infrastructure.[3] It was specifically written to attack Supervisory Control And Data Acquisition (SCADA) systems used to control and monitor industrial processes.[4] Stuxnet includes the capability to reprogram the PLCs and hide its changes.[5]

The worm's probable target has been said to have been high value infrastructures in Iran using Siemens control systems.[6][7] According to news reports the infestation by this worm might have damaged Iran's nuclear facilities in Natanz[8][9] and eventually delayed the start up of Iran's Bushehr Nuclear Power Plant.[10] Siemens has stated, however, that the worm has not in fact caused any damage.[11]

Russian digital security company Kaspersky Labs released a statement that described Stuxnet as "a working and fearsome prototype of a cyber-weapon that will lead to the creation of a new arms race in the world." Kevin Hogan, Senior Director of Security Response at Symantec, noted that 60% of the infected computers worldwide were in Iran, suggesting its industrial plants were the target.[12] Kaspersky Labs concluded that the attacks could only have been conducted "with nation-state support", making Iran the first target of real cyberwarfare.[13][14][15]

thanks to Meow Cat for the news.

Discovered Microsoft Kinect device.

Microsoft Kinect Device

Recently, met a online friend “meow cat”, who's into the underground hacking stuff.

Learned recently about 2 old-time hackers. Fravia (Francesco Vianello (1952 – 2009)) and Captain Crunch (John Draper b1944).

I think the Fravia guy is idiotic. Typical of those underground, conspiracy theory, anarchy type of crowd.

Also, learned a lot about internet video chat service sites. Tinychat and quite few others. Quite amazing. I thought it might take few min to setup. Actually, it's instaneous. In 20 seconds, you see 9 videos of teenagers (mostly girls) on webcam, simultaneously. (and you can broadcast yourself too) And there are hundreds or thousands of rooms, each particular to a topic, or personal friends or groups.

The internet really is going into a second wave of advancement. I'd call it the second dot com wave. All things are free again, with huge number of startups. Starting in late 2000s.

How to Chose Ergonomic Keyboards (gallery; review)

CCleaner is really a fantastic tool. In a easy way, it lets you delete all the cache and temp files of various browsers and Windows files. If you do it manually, you'll have to find it all over your disk, or thru various browser Preference interfaces. It also lets you clean your Registry, and lets you disable or delete the startup program settings, far better interface than the tiny window of “msconfig”.

Here's some startup processes i removed recently:

See also:

Discovered that Logitech came out with a new version of their trackball.

Logitech Wireless Trackball M570 2
Logitech M570 Wireless Trackball

Installed “Auto Copy” extensions to Google Chrome https://chrome.google.com/extensions/detail/bijpdibkloghppkbmhcklkogpjaenfkg and Firefox https://addons.mozilla.org/en-US/firefox/addon/383/ Fantastic!

Razer Naga gaming mouse
“Razer Naga Gaming Mouse”

Computer coder's heaven: A mouse with 17 programable buttons: MMO Mouses. And if you are more of a keyboard macro type of guy, you need: Logitech G13 Advanced Gameboard. Forget about your Emacs key chords. Actually, i'd suggest a gaming keyboard, except that there are no good ergonomic ones.

Mathematica 8 is released.

I got Mathematica 7 this month, as a gift from Wolfram Research. (before they released 8) (Thanks Wolfram) I haven't actively been coding Mathematica since about 2000. In the coming months, i'll update my tens of Mathematica packages on my site to Mathematica 7.

Mathematica started in 1988 as a so-called computer algebra system. Namely, it lets you do things like solve equations, factor polynomials, do integration, derivative, etc. But, due to Stephen's design, it is also a full featured general programing language, much based on lisp. (he probably would not admit it) But since about late 1990s, Mathematica is more marketed as a technical computing platfrom — a system for doing any technical computation. The reason is simple: because as a math system, the market is very limited, but as a system for any technical computation, it widens its potential audience by some 10 fold or 100. Since mid 2000s, it became increasingly more broad. Although i haven't actively been coding Mathematica, but some quick look at Mathematica 7, it is really fantastic. Dynamic visualization, data center of all technical info, and this year Wolfram Alpha.

Here's things i've done with Mathematica, all or almost all graphics in the following projects are generated by Mathematica version 3 (~1998) or 4 (~2002):

Outline Rendering in 3D Models (POV-Ray) (commentary)

Collada is a 3D file format adopted by Second Life in its upcoming mesh feature. Quote from Wikipedia:

COLLADA is a COLLAborative Design Activity for establishing an interchange file format for interactive 3D applications. COLLADA defines an open standard XML schema for exchanging digital assets among various graphics software applications. COLLADA documents that describe digital assets are XML files, usually identified with a .dae (digital asset exchange) filename extension.

.obj is another common format, but it is for storing basically just mesh data. Quote:

OBJ (or .OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is open and has been adopted by other 3D graphics application vendors. For the most part it is a universally accepted format.

The OBJ file format is a simple data-format that represents 3D geometry alone — namely, the position of each vertex, the UV position of each texture coordinate vertex, normals, and the faces that make each polygon defined as a list of vertices, and texture vertices. Vertices are stored in a counter-clockwise order by default, making explicit declaration of normals unnecessary.

Here's a sample format for “.obj”:

 # List of Vertices, with (x,y,z) coordinates.
  v 0.123 0.234 0.345
  v …

  # Texture coordinates, in (u,v[,w]) coordinates, w is optional.
  vt 0.500 -1.352 [0.234]
  vt …

  # Normals in (x,y,z) form; normals might not be unit.
  vn 0.707 0.000 0.707
  vn …

  # Face Definitions (see below)
  f 1 2 3
  f 3/1 4/2 5/3
  f 6/4/1 3/5/3 7/6/5
  f …

What's Point-free Programing? (point-free function syntax) (tutorial; essay; language design)

Discovered a new programing language. Factor (programming language)

I discovered it because it mentioned ErgoEmacs. See: Source.

2 months ago, i found a fantastic mouse:

Cyborg RAT 5 gaming mouse 2

But reading amazon reviews today, it seems to have its problems. see: Mad Catz RAT 5 Gaming Mouse.

The Microsoft Comfort Curve Keyboard 2000, is the cheapest (~$17), yet best keyboard, beats those fancy expensive ones. I'm undecided if i prefer this to my other $50 bucks Natural Ergonomic Keyboard 4000. The Comfort Curve is cited on StackOverflow to be among top 5 keyboards. However, it's also known to have defective key problem.

I just discovered a way to fix it. See: Fix Defective Keys in Comfort Curve Keyboard. Whack it!

Apple Macbook Air Review

Google Chrome is fantastic. I think even better than Firefox.

land of lisp war
Bug War, from LAND OF LISP (Book and Comics).

Recently this tweet has been going around:

“Welcome to the new decade: Java is a restricted platform, Google is evil, Apple is a monopoly and Microsoft are the underdogs” — Phil Nash 2010-08-14

Apple is deprecating Java! See: developer.apple.com. Quote:

Java Deprecation

As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.

This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X. The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products.

Am so glad of this. Sooo glad. Death to you, Sun Microsystems, and your Java fck. Thank you for your incredible unscrupulous marketing lies and lawsuit gaming.

12 years ago, the creator of tcl, John K Ousterhout, wrote a well-known articleScripting: Higher Level Programming for the 21st Century at http://home.pacbell.net/ouster/scripting.html. (scripting_language_the_future_John_K_Ousterhout.pdf) It is finally coming true in recent years.

A short summary of my computer language experiences, counting only serious involvement, say, few hours a day doing real jobs:

See: Xah Lee's Computing Experience (Impression Of Lisp from Mathematica).

A great piece about terminology in computer languages.

See also: The Importance of Terminology's Quality In Computer Languages.

Windows: How to Remove “Antivirus Action” Malware (malware; virus; software; tips)

What's List Comprehension and Why is it Harmful?

This month, my Java tutorial become quite popular. Here's the most popular pages, with number of page views in the past 30 days.

Java: “static” Keyword5.803k
Java Tutorial: “this” Keyword5.589k
Interface in Java4.627k
Java Tutorial: The “extends” Keyword4.402k
Java: Access Specifiers2.935k
Java Tutorial: Arrays2.673k
Java Tutorial: Defining a Function2.596k
The “abstract” Keyword in Java2.316k
Java Tutorial2.168k

There are several links to them from stackoverflow.com.

Java is the most inane language. I did Java for half a year in a day job in 2000. At the time, i was not really sure what i was doing. (this is a typical situation when coding in a day job on someone else's project.) Then, in 2005 i studied Java in some detail, and wrote my tutorial. However, i actually don't code Java, am not good at it, and will never code anything in Java. (am rather sad that Google choose it as its main lang. (but, it's still much better than C or C++.))

Also, of all big software companies, i HATE Sun Microsystems with passion. It is the company with the most despicable marketing fck, and loves to create random meaningless jargons and abuse established terms. For detail on the jargon part, see:

Of all the 2 thousand tech tutorials and essays i wrote about computing in the past 10 years, i consider the “What are OOP's Jargons and Complexities” piece to be among the top 5 most significant. Am proud of it.

Unicode support in Ruby, Python, Emacs Lisp (commentary)

Windows Flip3D, Instant Viewer, Productivity Tips (tips; efficiency)

Pattern Matching vs Grammar Specification

Discovered about 7 new keyboard layouts since i wrote about them last month. See: Alternative Keyboard Layouts.

New lisp logos:

CLforJava logo
CLforJava logo.
Clozure Common Lisp logo
Clozure Common Lisp logo.

Note that Clozure Common Lisp is used by ITA Software, a software company in the travel industry, recently got bought by Google for 700M USD.

For a gallery, see: A Lambda Logo Tour.

Software Piracy, Open Source, Free Software, Copyright

PLT Scheme lisp is now named Racket. See: http://racket-lang.org/new-name.html.

Also, here's a classic piece: The Fate of Lambda in Python 3000 and Scheme v300.

Discovered that Guy L Steele , most famous as a inventor of Scheme lisp, and Robert J Chassell, best known as the author of An Introduction to Programming in Emacs Lisp Buy at amazon, both are apparently lojban speakers! Yay! See: http://www.lojban.org/files/papers/4thtense.

What is lojban? see intro at: Xah's lojban Tutorial.

Pinyin Letter Frequency and Keyboard Layout 拼音字母頻率 鍵盤佈局 (updated)

Just watched a great video:

ELC 2010: Rich Hickey and Joe Pamer - Perspectives on Clojure and F# http://channel9.msdn.com/blogs/charles/emerging-langs-clojure-and-f

It's 24 minutes. It's interview with Clojure inventor Rick Hickey, and Microsoft's F# compiler writer Joe Pamer.

Also: Robin Milner is dead. (1934 – 2010) He is known as the father of ML (OCaml, F#). (See also: OCaml Tutorial.)

Today i started to use Microsoft's speech recognition software. It comes with Windows Vista and Windows 7. To use it, you will need a good microphone or headset. [see Gaming Headset Reviews]

To open it, just go to the “Control Panel”, then choose “Speech Recognition Options”. Then, you might want to go thru the various options and go thru 30 min of training and learning how to use it.

You can use it to control windows and menu in some basic way, but I'd use it mostly for dictation when writing essays and emails. Not sure how well it will work out, but i'll give it a shot.

F Sharp OCaml Books and People (useful info)

What is Window's shell command to launch a app?

for example: on OS X, i can launch Firefox at a URL with open -a firefox url

For example: start firefox yahoo.com.

You might have to add the program path to your environment variable. See: Windows Environment Variables.

Is there a way to set a windows app to launch only a single process?

For example, i prefer Firefox to have a single process, and use 【Ctrl+Tab】 and 【Ctrl+Shift+Tab】 to switch tabs, so i don't have to 【Alt+Tab】 among many windows that are not Firefox. Some app, such as Windows Mail, iTune, Skype etc, are apparently setup this way.

This appears to be app dependent, not a OS level config.

Does anyone know if that's actually true?

See also: How to Increase Efficiency in Using Mac, Linux, Windows

Discovered this nice article on newLISP, which gave me my first intro of the lang:

See also this comparison: Lisp: Common Lisp, Scheme, Clojure, Emacs Lisp @ http://hyperpolyglot.wikidot.com/lisp.

If you want a quick intro by slide show, see: http://www.nuevatec.com/manual-intro.html.

Updated: The keys started to fail on my A Review Microsoft Comfort Curve Keyboard 2000. Amazon reviews confirms that it's a common defect. So, don't buy that keyboard.

Linux: Text Processing: grep, cat, awk, uniq

Discovered SubRip. It's a software used to extract subtitles from movie files, by using optical character recognization. Also, it saves its file in a plain text format with suffix “.srt”. This is extremely useful when you want to read the dialog of a movie. The format is supported by most video editors or players, including youtube.

A more advanced but still widely supported subtitle format is SubStation Alpha, with suffix “.ssa” or “.ass”. It is also a plain text format.

A older subtitle format is MicroDVD with suffix “.sub”. Also a plain text format. There are more. See: Category:Subtitle file formats.

See also:

New programing languages.

For a brief overview of major new langs, see: Proliferation of Computing Languages.

New Clojure Books.

A great site comparing the basic syntax and constructs between Common Lisp, Scheme, Clojure, Emacs Lisp. If you know one of them, this site lets you learn the other very quickly. Am particularly interested in Clojure.

They also have side-by-side cheatsheet for other langs.

Emacs, RSI, My Experiences.

Lisp Macros and Practical Common Lisp (rant)

Programer Celebrities; Styles and Tack (online rambling)

Chinese Input using Dvorak Layout (Microsoft Pinyin IME); 微軟拼音輸入法 Dvorak 佈局 (how-to)

Input Devices: Mouse, Jog Wheel, Touchpad, Pen Tablet, Trackball, Joystick (commentary)

Discovered a book citing my site. Enterprise Interoperability II: New Challenges and Approaches Buy at amazon (2007), by Ricardo Jardim-Gonçalves, Jörg P. Müller, Kai Mertins, Martin Zelm. . Cites: What is Expressiveness in a Computer Language.

More at: Printed Citations to XahLee.org.

Alternative Keyboard Layouts (exhibition on keyboard layouts)

Recently, wrote more about Apple Keyboards ⌨.

Logitech Wave Keyboard (thoughts)

Unicode Basics: What's Character Set, Character Encoding, UTF-8?

Want to disable the Win key from popping up the Start menu but still want Win+‹key› to work? New tip added to AutoHotkey Example Scripts.

if you need some custom key set up, i can do it for you. Please do donate $10 though. (click button on upper right of this window)

System-wide Ergonomic Keybinding for Windows, Mac, Bash (code)

How to Use Windows Search; Stop Indexing USB Drives; Rebuilding Index (tutorial)

Is Microsoft a Monopoly?

What's Kindle, iPad, Android, and All That Jazz?? (review and commentary)

Windows Starting Too Slow? Disable Windows Startup Apps (tips)

Matching Brackets in Unicode. (Unicode palette)

Discovered excellent defrag software Piriform Defraggler. Also, Piriform's Recuva for file recovery is also excellent, i've used in the past. Also, discovered Partimage, for cloning disk partitions as disk image to dvd. These are recommended to me from a expert PC friend “9 volt chicken”. These are added to: List of Great Windows Software. (all software listed there are highest quality)

How to Disable the F-Lock Key (keyboarding)

svn Tutorial.

Discovered that you can close a browser tab by clicking the tab with mouse middle button. Fantastic! This tip added to: Microsoft Windows Keyboard Shortcuts.

Discovered possibly the best trackball today. CST L-Trac trackball. Large ball, 5 buttons, scroll-wheel, but at $110. First available at Amazon on 2009-09. So i think it is pretty new.

[see L-Trac Trackball Review]

Intro to Chinese Punctuation. (essay)

Byte Magazine Cover on LISP, A Space Odyssey, Nietzsche. (essay)

Added 3 screenshots of simple programs i've written around 1992 for the HP-28S calculator. See: HP-28S Advanced Scientific Calculator.

Discovered a dead key. In emacs, i have the ▤ Menu key set as Hyper, and i have Hyper+Shift+q as a shortcut to some command. However, Microsoft Natural Ergonomic 4000 keyboard simply does not register that combination when right shift is used. But left Shift works. See: What's NKRO, N-key Rollover?.

Erik Naggum and Why There Isn't a Ocean of “Lisp Jobs”.

Updated: Windows Keyboard Shortcuts Advanced FAQ.

Audio Recorder, Synthesizers, MIDI Software (list with comments).

List of 3D Modeling Software.

Software for Video Capture and Screencasting (tips; advice)

Watched 2 video reviews of Logitech G13 Advanced Gameboard (fantastic for programers)

Death of Newsgroups.

PowerShell as cmd.exe or Bash

What Characters Are Not Allowed in File Names?

Discovered that modern OS X software still create resource fork. See: Safari “.webloc” File.

How to View Comments in JPEG, PNG, MP3 files? (tutorial)

OS X Extended Attributes and xattr (tutorial)

How to Use Unison for Syncing Files (Unison tutorial).

Discovered a new book that cites my work. The book is:

Mathematica Cookbook , by Sal Mangano. Buy at amazon.

The citation is: Concepts and Confusions of Prefix, Infix, Postfix and Lisp Notations.

For more, see: Printed references to XahLee.org and XahLee.org Site Awards and Recognition.

Hunspell Tutorial.

Collection of characters: Arrows in Unicode.

Updated: Windows Environment Variables (tutorial)

Hunspell Path Pain (rant)

Text Editor's Cursor Movement Behavior (emacs, vi, Notepad++)

As you may know, Mac OS X 10.6, released in 2009, no longer supports Macs based on PowerPC chip. My Mac is the last PPC chip Mac bought in late 2005.

Note from Wikipedia Mac OS X Snow Leopard, quote:

Some ways of running 10.6 Snow Leopard on certain unsupported hardware have been discovered. Users who have access to supported hardware have installed Snow Leopard on the supported machine then simply moved the hard drive to the unsupported machine. Alternatively, the Snow Leopard Installation DVD can be booted on a supported Mac, then installed on an unsupported Mac via the Firewire Target Disk Mode.

So, the decision of this must went something like this: Let's get some engineers to put in code so that old mac owner's can't upgrade. It's time for them to buy a new Mac!

See also: Why I'm Switching from Mac/Unix To PC/Windows.

aspell Tutorial (aspell tutorial).

Keyboard Hardware's Influence on Keyboard Shortcut Design (How Emacs and vi keys came to be).

What's NKRO, N-key Rollover?

Skype Chat Encryption and Screen Sharing.

Got this accolade today for my Java Tutorial:

Thanks much for your informative Java programming aid online. I'm an old crow who cut his teeth on assembly language - and left programming for my career in SatCom. But all roads seem to circle around some programming application and your website has been very helpful with my current interest. Thanks much for the time and effort your spent to create it!!

MS Engineering control theory UC-Berkeley '72


Spent about 8 hours in the past 2 days keyboard geeking again. Reworked several of my articles on keyboards, recheck links, read a bunch more reviews and history, watched many videos, thinking about the design, etc. Ah, the joy of keyboard geeking. I'm probably among the top 100 keyboard freaks in the world.

Many articles now has a independent page, separated from large articles. They are:

The overall index of all keyboard related articles is at: Keyboards, Layouts, Hotkeys, Macros, RSI.

The Idiocy of Hacker Keyboards (reviews on several weird keyboards.)

AutoHotkey Path Problem; Windows Shortcut Path

Software Dependency Complexity: Fink, Unison (essay)

Notes on Unicode BOM Byte Order Mark Hack.

Also, created a index of my articles related to Unicode, at: Xah's Unicode Tutorial.

Dvorak Keyboard Layout.

Windows Start Menu, Desktop, Quick Launch, File Locations.

Am pissed yesterday to have to spend a hour to disable a global shortcut key in Windows, caused by a pre-installed software from HP. See: Disable Ctrl+Alt+S of HP Support Information.

Outlook, Outlook Express, Windows Mail, Windows Live Mail, Confusion Ball

camelCase and Source Code Formatting (opinion; essay)

Example of lousy computer language syntax: AutoHotkey Syntax Problems.

Avoiding Variables in Functional Programing

In Windows Vista, when viewing a folder, you can view it as icons or list or detail. There's no direct keyboard shortcut, but you can do this:

You can set a key using AutoHotkey, so that Ctrl+1 is icon view, Ctrl+2 for detail view, similar to the Mac.

Regex Limits, or, Should You Read Mastering Regular Expressions? (short essay)

Mouse Speed Too Slow in Mac OS X?

How to autocrop border with ImageMagick? Answer: like this “convert -trim cat.png cat.png”. For more, see: ImageMagick Tutorial.

Keyboard Shortcut vs Launch Buttons

comp.lang.lisp is 95% Spam. (essay on spam and the situation of newsgroup comp.lang.lisp)

Some misc tips on how to disable the Win key in Windows, added to AutoHotkey Tutorial. Also, you can use IntelliType to disable the Win key. However, the 【Win+L】 (lock screen) cannot be disabled. See also: Microsoft IntelliType Hacks.

Created a page AutoHotkey Key Syntax.

Some tips: How to Use Windows Search; Stop Indexing USB Drives; Rebuilding Index.

Discovered that on Mac Os X 10.6, tar, gzip, gunzip preserves resource fork by default. Updated at: Mac OS X Resource Fork and Command Line Tips.

Discovered that on the Mac, to securely delete files, just use the built-in command srm, like this: “srm -r -s directoryPath”. For detail, see: How to Secure Delete Files, Shred Files, Wipe Drive.

Most keyboards have a volume key, but very annoying. You press it, and the volume increases by 1%. So, you have to press it 10 times. So, you think you might hold it. But, when you press and hold, the system doesn't respond for a second or two, then all of a sudden went all the way up.

I created a little app that fixes this. Press Ctrl and the Plus key on the number pad will increase volume by 10%. With the minus key decrease by 10%. Fantastic!

Discovered that one of my essay appeared on Hacker News again. Here are the essays that have appeared on Hacker News:

There are about 20 or so posts mentioning my name or site. See: Google searh “site:news.ycombinator.com xah lee”.

See also: Hacker News, Xahlee.org, and What is Politics?.

XahLee.org on Reddit: http://www.reddit.com/domain/xahlee.org/

XahLee.org on Delicious: http://delicious.com/search?p=site:xahlee.org

Note: i've never submitted my site to any of these sites. For those who found my article interesting and submitted them, i appreciate it very much, even critical comments. Thank you.

Here's Reddit's widget showing the top 10 “hottest” links to xahlee.org:

It's been brewing in my mind for a while to write a criticism on Paul Graham's Arc Lisp and his essay about ideal language… Paul Graham's Infatuation with the Concept of Hacker.

A very interesting read. What Edsger W Dijkstra Blogged About Lisp? By Kazimir Majorinc. At Source.

For other articles related to Dijkstra, see:

World Multiconference on Systemics, Cybernetics and Informatics❓ (social commentary)

Sun Microsystems is dead. I'm so glad. I hate Sun very much. Them with their aggressive marketing lies and jargons with java. They are the most abusive of marketing jargons of any tech company. Keeps creaing spurious, useless, jargons just for the purposes of marketing. Abusing the term API, Interface. (See: Official Java Tutorial on Interface, the Inanity ) Calling their OS as “Platform”, and there's JDK, JSDK, J2EE, J2SE, Tiger, version numbering abuse 1.x to 1.2 == Java 2 now 1.3, JavaOne, JFC, Jini, JavaBeans, entity Beans, Awk, Swing. And before my time, from SunOS to Solaris. Lies about open standards. In the first 5 or more years of java, where Java sky rocketed their sells of their Solaris OS and server hardware, but keept creating obstacles on a quality java on Linux, during the dot com days (~1997 – 2001) where Linux is also raging is its main threat. (we can safely say that Linux + Cheap PC won now.) And finally in their brink of commercial death, Sun Microsystems pulls the trick of saintly open sourcing Java like Netscape did.

See also:

sys admin ad

perm URL with more: Funny Banner Ads. (humor)

Secure Deletion, File Shredding, on Windows (tips; experience)

Solid-State Drive Comes Of Age! (tech commentary)

Updated with 540 words addition: Cross-posting & Language Factions (essay; programing culture)

Hacker News, XahLee.org, and What is Politics? (social commentary)

Learned about Open XML Paper Specification, aka OpenXPS. It is a page description language and a fixed-document format, based on XML. Basically, similar in purpose and function to PDF and PostScript. It's Microsoft's tech but standardized and royalty free. When you print, you can print into a file, then this file can be viewed in any other display or printing device, and should appear identical, just like PDF.

You can try it. Copy this paragraph. Paste it in Notepad. Ctrl+P to print it, choose the XPS Document Writer as the printer. Then, choose a name such as “xyz.xps”, save it. Then, use unzip to decompress the file. Then you'll see several dir and files in XML format. The file named “1.fpage” contains the main file content of this text.

A old article i wrote in 2000. Perl One-Liner Screw (humor)

Updated my tutorial Mac OS X Resource Fork and Command Line Tips for OS X 10.6.

Microsoft Windows: Swap Caps Lock, Alt, Control Keys.

Wonder how much programers get paid? See:

What is Gamma in Digital Images.

NSA Mass Surveillance (social news)

Discovered a blog by Sal Mangano (at Source). For detail, see bottom of: A Mathematica Optimization Problem.

Learning Notes on Goto, Continuation, Coroutine.

Mac OS X Changes To Unix (comments)

Expanded my vi tutorial: Emergency vi.

Started to use Google's Picasa. Some comments here: Google Picasa.

old Stuff from my main blog moving over here.

2009-12-30. Windows has a disk defrag tool build in. Just click on the disk and get properties, then under Tools tab. I am a efficiency nerd, but don't really trust defrag tools as it can corrupt your files. (sure i have backup, but to invoke it is a pain) Since Microsoft bundles it with Windows and this is 2009 not 1990s, i suppose it is safe, but still. Also, i always do partition my drives, but on this machine it's just one volumn of 685 GB. Usually partitioning is best done when you just bought the machine. But with PC today, it doesn't comes with a Windows installation disk anymore, so it's more difficult and i haven't partitioned my drives. Anyhow, on the Mac, the system does not bundle a defrag tool, and i always wondered why not.

Wikipedia Defrag has some thing to say about this:

HFS Plus (Mac OS X) In 1998 it introduced a number of optimizations to the allocation algorithms in an attempt to defragment files while they are being accessed without a separate defragmenter. If the filesystem does become fragmented, the only way to defragment it is to purchase a utility such as Coriolis System's iDefrag; or to wipe the hard drive completely and install the system from scratch.

umm… a optimized algorithm. One wonders, if Apple can solve the frag problem, then Microsoft probably would have done so too. I'm a bit skeptical that Apple's file system actually do any significantly better than Windows about the frag problem. The disk frag problem isn't really something that can be solved by “optimized allocation algorithm”.

China Closes Hacker Training Site , By Thomas Claburn, InformationWeek. Source.

Scott Henderson, who tracks the Chinese hacking scene on a Web site called The Dark Visitor, observes that the crackdown follows from an investigation of a cyber attack that took down Internet access in the Chinese city of Macheng for three days. One of the hackers responsible had commercial ties to one of the men associated with Black Hawk Safety Net.

Python: What's the Difference Between 「dict={}」 vs 「dict.clear()」?.

Unicode Popularity: How Popular is UTF-8?. (web stat)

Discovered Windows Vista's VirtualStore that costed me some 30 hours in the past. Windows Vista VirtualStore Problem.

The NoSQL Movement (random thoughts)

Python 3 Adoption (random thoughts)

Discovered Lout (software), a document formatter similar to TeX. The FAQ is here Source. I wonder what is its capabilities for math formulas.

See also: The TeX Pestilence (Why TeX/LaTeX Sucks).

Unix Pipe as Functional Language.

Fully detailed the emacs ahk mode problem. Emacs Ahk Mode Problems.

Am starting this programing blog. This blog is a branching off of my main blog Xah Lee's Blog, so all programing related issues will be here now.

For past few hundred tutorials and articles on xahlee.org, see: Hacker Cult.

If you have a question, put $5 at patreon and message me.