2012-04-21

CSS3 box shadows fun

“inset” box shadow makes the shadow go inside the box. All other parameters are the same. Here's a example.

inset shadow

Here's the CSS code:

div {
width:100px;height:60px;
padding:1ex;
border:solid thin blue;
box-shadow: inset 3px 3px red
}

Inset Shadow Example 2

inset shadow
div {width:100px;height:60px;
padding:1ex;
box-shadow: inset 0px 0px 20px 5px red}

multiple Shadow with Inset

in/out shadow
div {
width:100px;height:60px;
padding:1ex;
box-shadow:
inset 0px 0px 4px 3px red,
      0px 0px 4px 3px red;
}

Multiple Box Shadows

multi box lunch




Here's the CSS code:

div {
display:table;
border-radius:9px;
padding:0.5ex;
margin:5ex;
box-shadow:
8px 6px 13px 8px hsl(1, 100%, 50%),
-16px 12px 20px 16px hsl(60, 100%, 50%),
48px 36px 71px 28px hsl(180, 100%, 50%);
}

more examples at http://xahlee.org/js/css_box_shadow.html

Emacs: Stop Yasnippet auto-indent

one thing that's been annoying me for years. Yasnippet indent your lines when you don't want to. Especially when you specifically didn't include any indentation hint in the template. Have been trying to find a special syntax in template to stop the auto-indent behavior, never found it or didn't spend enough time.

found a solution today:

(setq yas/indent-line nil)

2012-04-20

CSS Boxshadow rainbow

bleeding rainbow






div {
display:table;
padding:0.5ex;
margin:5ex;

box-shadow:
8px 6px 3px 8px hsl(30, 100%, 50%),
16px 12px 6px 16px hsl(60, 100%, 50%),
24px 18px 9px 24px hsl(90, 100%, 50%),
32px 24px 12px 32px hsl(120, 100%, 50%),
40px 30px 15px 40px hsl(150, 100%, 50%),
48px 36px 18px 48px hsl(180, 100%, 50%),
56px 42px 21px 56px hsl(210, 100%, 50%),
64px 48px 24px 64px hsl(240, 100%, 50%),
72px 54px 27px 72px hsl(270, 100%, 50%),
80px 60px 30px 80px hsl(300, 100%, 50%),
88px 66px 33px 88px hsl(330, 100%, 50%),
96px 72px 36px 96px hsl(360, 100%, 50%);
}

detail at http://xahlee.org/js/css_box_shadow.html

CSS round corners

another article on CSS: CSS: Round Corners: border-radius

CSS color names, HSL, Opacity

Several new articles about CSS color:

2012-04-19

Why Tiling Window Manager Sucks

Perm URL with updates: http://xahlee.info/linux/why_tiling_window_manager_sucks.html

tried xmonad today for real. Currently, 1 hour into it. 〔☛ How to Use xmonad; xmonad Keys

Tiling windows is unusable and inefficient.

• Complete esoteric set of keys you need to memorize just for the tiling-window mechanism. Also, standard keys such as 【Alt+F4】 are now screwed.

• More Combo keys = RSI. 〔☛ Keyboard Shortcut Design: Dedicated keys, Special Buttons, Extra Keys〕 I type more than any Haskell coder on this earth.

• Encroach on each app's keys. This means, you'll spend time to config each app, or diddle with the global mod key setting. This means hours to be spent down the road.

• Completely screwing emacs's keys. 〔☛ Emacs's Keybinding Layout〕 (No, remapping to any of Super, Hyper, Menu, Caps Lock keys won't help. All modifier keys are used up in my emacs for many purposes, including inserting math symbols.)

Tiling Windows Concept = Fail

Worst of all, the tiling windows idea itself is too idealistic. The idea behind tiling windows is that it uses your screen real-estate efficiently. Namely, all apps are laid out without gaps.

But what this means is that, the natural optimal size and position and arrangement of app windows on your screen is sacrificed. They, the position, size, arrangement, are artificially made fit into a table layout. If all you do is text terminals, that's probably ok. But as soon as you have browser, image viewer, image editor, text/voice/video chat programs, math/scientific apps, …, each really needs its own optimal position/size. So, this means, when using a tiling-windows scheme, you either pop them into full screen, float them, or put each in a workspace, no tiling at all. Or do a lot combo key press to re-arrange/re-size them tiled. Much more work than is worth.

If you need every window to be the same size, then that's great. As soon as you need one window for different shape/size, then you get funky sub-optimal layout. The gaps between windows simply moved into your windows. Some window will have lots of un-used space, and some will be too narrow to induce line-wraps.

One symptom of tiling windows inefficiency is the so-called fibonacci layout.

tiling windows dwm-spiral
Suboptimal window size problem when windows are forced into a table layout. Notice the squashed clock, and wrapped lines in terminal. 1280×800 Source dwm.suckless.org

Tiling windows… Do you really need to look at ALL the windows at once?

A simple method that's much more efficient than tiling windows is to simply set {F5, F6, F7, F8} for switching to each workspace. 〔☛ Increase Productivity Using F1 … F12 Keys〕 This way, you don't have to remember any combo keys. No combo keys to induce RSI. 〔☛ Celebrity Programers with RSI〕 A single key gets you to the app you want, full screen, or multiple windows in a workspace all optimally positioned.

How to Use xmonad; xmonad Keybinding

Perm URL with updates: http://xahlee.org/linux/xmonad_keys.html

This page gives a intro on using xmonad. xmonad is a linux app that automatically arrange your windows without gaps. To install, see: Linux: How to Install New Windows Manager.

When logging in, you may have a choice of {xmonad, xmonad-gnome}. The gnome one will have the screen menu at top and app menu at bottom.

xmonad keys

launching app

• 【Alt+Shift+Enter】 to launch a terminal.

• 【Alt+p】 to launch dmenu. e.g. 【Alt+p fir】 to launch Firefox.

• “dmenu” is a GUI app for dynamic menu, designed for keyboard input. (this is independent of xmonad)

Switch Focus

• {【Alt+j】, 【Alt+k】} to move focus among windows. Or, hover mouse on a window.

• {【Alt+Shift+j】, 【Alt+Shift+k】} swap neighboring windows.

Arranging Window

• 【Alt+Space】 to re-arrange windows. (by default, you can cycle among 3 types of arrangement: full screen, tall, wide.)

Resize Window

  • Alt+l】 = make current window larger.
  • Alt+h】 = make current window smaller.

Float Window

  • Alt+Click】 to float a window.
  • Alt+Drag】 to move floating window.
  • Alt+Button3】 to resize.
  • Alt+Button2】 to bring to top.
  • Alt+t】 to unfloat.

Closing Windows

• 【Alt+Shift+c】 to close/kill a window.

Workspace

• 【Alt+4】 to switch to 4th workspace. There are 9 total.

• 【Alt+Shift+4】 to put current window to the 4th workspace.

Reference

Reference: Source xmonad.org

2012-04-18

Programing: Design Patterns Your Mom

Perm URL with updates: http://xahlee.org/comp/design_patterns_your_mom.html

What are the design patterns that help structure functional systems? “Design patterns? Hey everyone, look at the muggle try to get the wand to work!”

from:

hi, my dearly beloved java perl python hackers, design patterns your mom.

further readings:

random linux notes 2012-04-18

Perm URL with updates: http://xahlee.org/linux/linux_notes_2012-04-18.html

• discovered yum. (Yellowdog Updater, Modified) It's a package manager for Red Hat's RPM package system. The name YellowDog, is from a Mac linux distro in 1999. Yellow Dog Linux seems still around.

• on Fedora linux, man {shutdown, halt, poweroff, reboot} says: “These are legacy commands available for compatibility only”. So, what is the modern command?

Answer: there doesn't seem to be a standard among linuxes. (See “Replacement for init” at Init.) Fedora uses systemd.

Note that in Ubuntu, the man page for “shutdown” is different, and doesn't come with such note.

• discovered wmctrl. This seems to be linux's analog of AutoHotkey for Microsoft Windows. Basically, a scripting lang that lets you set keys. e.g. press F6 to launch Terminal, and if one is already running, just switch to it.

unix stupidities check

here's more food for my wrath. todo tomorrow.

• check if linux ps still silently truncate lines. (➲ Unix, RFC, Line Truncation)

• check if tar still have problem if file path is long. (e.g. nested dir each with 200 char in file name)

• check robustness of tar when filenames are full of unicode. (➲ Unicode Support in File Names: Windows, Mac, Emacs, Unison, Rsync, USB, Zip)

• check if you can still put random char in file names, such as control sequence, beep. (➲ On Unix Filename Characters Problem)

• check how robust is linux with unicode. Name files with Chinese and math symbols. (and if it requires me to dig into shell locale env var shit, then it's shit.)

• check/review the unix startup process, the rc scripts. (See: Init.)

• heard that ash is new simple shell for start up. Dig it.

• gotta review my unix networking stuff. ifconfig, whois, dig, ping, ... i understand many of these became obsolete.

• review the password creation, password file, user account creation, uid, gid, stuff.

• review how to find the processes that are locking files.

• run my elisp/perl/python scripts on website's 5k files, see how fast it runs inside virtual machine vs Windows native. (if good, i might start to do all my web site inside linux.)

Standard Linux Fonts

what's the most common standard serif font on linuxes? e.g. Times New Roman, Georgia, on Windows and Mac. (➲ Common Web Fonts on Windows and Mac)

Answer: probably Liberation fonts and secondarily Linux Libertine. (thanks to Tom Novelli .)

unixism lives: great power comes great responsibility

lol. The old unixism lives.

[xah@localhost~]$ sudo yum install xmonad-gnome

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for xah: 

“great power comes great responsibility”? Fuck the Red White Blue culture shit. That phrase amounts to being a execuse to meddle with other's business.

PS this happened in Fedora. Not in Ubuntu. For Dummies always win. At least over the drivel from unix tech geekers.

Linux: How to Install New Windows Manager

Perm URL with updates: http://xahlee.org/linux/linux_install_new_windows_manager.html

what are the steps i need to do to switch a windows manager in linux?

let's say i wanna try Xmonad. I can apt-get install xmonad. But what's next?

• how do i start the new wm? (do i need to quit the existing? (i know ps kill pid and all that. But is there a better way?))

• how do i set my config so when linux starts, it starts the new wm? (i really don't want end up with a fucked up startup)

i know unix command line stuff well, but don't have any experience with linux GUI technology. what i need is a general experience/guide of switching wm. (and i hope it's not just spent few hours to dig in each's doc with raw sys admin skills. if this is how it is, please let me know too, i'll probably just stay with whatever default wm.)

Answer

in Fedora you yum install xmonad-gnome and then just log out and log in again. And in the login panel, there's a menu that lets you chose the Window Manager you installed.

thanks to Jeff Weiss

Emacs: kill-buffer Induces Buffer Accumulation

in my usage pattern, i find that one problem of emacs default UI is that it makes it difficult to close a buffer.

kill-bufferCtrl+x k】 then Enter, and if it's not saved, one has to type full yes or no. Too many keystrokes. Also, when it's scratch or buffer not associated with file, it doesn't ask for save.

these make people not want to close buffer. So, buffer accumulates. Instead of close files we don't need, people use bury-buffer, switch-to-buffer, even though we just want to close it. Tens or hundreds of buffers became a problem, Then, kill-some-buffers, clean-buffer-list, iswitchb-mode, ido-mode, are invented to solve this new problem.

By habit, i always close buffers that i'm done working with. I do that for the past decade, even if it means painfully using kill-buffer. So, usually i have no more than 20 buffers open. In past years, with ErgoEmacs Keybinding and my own AutoHotkey setup, i have single key to close buffer, and with just y/n if unsaved. This also makes switching to next/prev buffer much more useful (both are single key), much like switching tabs in a web browser.

This post is inspired by jcs's blog The Emacs clean-buffer-list Command @ Source irreal.org

2012-04-17

Set Bash Shell Prompt to Color

Perm URL with updates: http://xahlee.org/linux/shell_color_prompt.html

Here's a neat setup for your bash shell. Put the following in your Bash init file 〔~/.bash_profile〕:

export PS1="\e[0;32m◆\u@\H \e[0;33m\D{%Y-%m-%d} \e[0;32m\t \e[0;37m\w\n";

The \e[0;32m in the beginning set the color green. The \e[0;37m near the end sets color back to black. (See: ANSI escape code.)

It'll make your prompt color green and display login name, date, and time, like this:

◆xah@xah-PC 2012-04-17 01:49:16 ~/.emacs.d/

Date and time is useful because when you log your shell output.

Emacs

For coloring bash prompt running inside emacs, put the following in your emacs init file.

(setenv "PS1" "\\e[0;32m◆\\u@\\H \\D{%Y-%m-%d} \\t\\e[0;30m\\w\\n")

Xah's Job Interview Questions for Young Linux Sys Admins

Perm URL with updates: http://xahlee.org/linux/job_interview_questions_for_unix_sys_admins.html

• what's the diff between {.profile .bashrc .bash_profile .login}?

• how to find the creation date of a file?

• top shows load average n1 n2 n3. What are those numbers mean exactly?

• how to eject a CD by command line?

• what's the difference between ps aux, ps -aux, ps -ef?

• what chars are not allowed in unix file name?

• how to set sticky bit for a file?

• how to create a hard link? how it differs from soft link?

• how to list all the signals the system supports?

• what does 【Ctrl+c】 do in a terminal? how do you find out arbitrary control sequence do?

• how to show the number of inode you have?

• what's the difference between useradd and adduser?

• what's the difference between character special file and block special file?

random linux notes 2012-04

Perm URL with updates: http://xahlee.org/linux/linux_notes_2012-04.html

haven't done serious unix sys admin for about a decade. (serious = sys admin in server farm.)

been playing with ubuntu for past days. Oh, su and chmod and w id whoami ps top fg bg nice mount passwd etc fdsk shit. The horrors of unix all came back.

installed Oracle VM Virtualbox with guest OS Ubuntu and Fedora.

Actually got to know Virtualbox for real, for first time.

VirtualBox is so great. You can run several linux distros, and you can fuck unix. When they finally can't take anymore, kill! Start anew! Life's good.

Ubuntu vs Fedora vs Linux Mint

Fedora is from Red Hat. Linus uses it. Ubuntu is a distro specialized for dummies, but in many ways it's much smooth, but is still linux that you can change anything if you know what u doing. Fedora doesn't seem to be known for any specialized take. The top 3 most pop linux distro are: Linux Mint, Ubuntu, Fedora. (the main thrust of Linux Mint appears to bundling all proprietary software sans FOSS ado. (yay!))

ubuntu linux for dummies

Oracle VM VirtualBox

VirtualBox is really fantastic. Because you can use it like a sandbox. Try multiple OSes. Also, you can try unix things that normally you wouldn't, because if screwed up, you can just discard it. You can also use it to visit malware sites, etc. Great for experimentation and learning.

if you haven't already, it's worth a try, even if it meant spending a few days to get familiar with it.

• copy/paste between guest/host needs to have “guest additions” installed. “guest additions” is to be installed in the guest OS. While guest OS is running, use menu 〖Devices▸install Guest Additions…〗. When done, restart guest OS.

• Shared folder feature must have guest additions installed. When installed, it's auto-mounted in 〔/media/〕.

The VirtualBox manual is quite handy. It's in the menu 〖Help〗.

Which Unity Are You Running?

Ubuntu 11.10 runs the GUI called Unity. It shows a launch bar on the left.

Note: there's “Unity 3D” and “Unity 2D”. The “Unity 3D” is often just written as Unity. They look almost identical, but are entirely different implementations. The 2D one is for systems with weak graphics card. (i.e. when you run from VirtualBox) Many discussions online about configuring Unity is about Unity 3D. So, beware. Reference: askubuntu.com am i using unity or unity 2d, askubuntu.com How do I configure Unity 2D?

Ubuntu Unity 3D Ubuntu Unity 2D
Unity 3D (left) and Unity 3D (right)

How to Tell If You Are Using Unity or Unity 2D

press 【Ctrl+Alt+t】 opens a new terminal, then type echo $DESKTOP_SESSION it'll print “ubuntu-2d” if you are on 2d, else it's just “ubuntu”.

Or, type pgrep -l unity. If the result contains “unity-2d-launch”, then you are on 2d.

Ubuntu GUI Issues

• the Win key pops up the Ubuntu launch bar.

• to re-arrange the app icon in launcher bar, click and hold first.

• To show menu in gnome-terminal, press Alt key.

• Middle click in general brings up up context menu. Also, Menu key works.

• Right click on window title bar send the window to back.

• You can set single click to open folder. Just go to the menu 〖Edit▸Prefernces〗 while in a folder.

is ubuntu software center a interface on top of apt-get/dpkg?

yes.

• 【Ctrl+Alt+t】 opens a new terminal.

To see all keyboard shortcuts, goto “System Settings”, Keyboard, Shortcuts tab.

GUI Tool Command Names

• The folder viewer (file manager)'s command line name is nautilus. Nautilus (file manager)

• The default terminal is GNOME Terminal. The command line name is gnome-terminal.

the launch bar is unity-2d-launcher

the top menu is unity-2d-panel

cpu monitor ⇒ gnome-system-monitor

“Charmap” (unicode character viewer) ⇒ gucharmap

dictionary ⇒ gnome-dictionary

Font

“WenQuanYi Zen Hei” (文泉驛) WenQuanYi is for Chinese. This font is included in most linuxes. (➲ Chinese Character Etymology and Script Styles)

Ubuntu Unix Issues

• use ps -ef. ps aux also supported. See Wikipedia on ps about the abomination.

in Ubuntu, why su doesn't work, but sudo su works?

because Ubuntu by default doesn't setup password for root. (thanks to Thomas Yao, Manuel Lara, Jeff Weiss)

ubuntu. sudo cd ‹restricted dir› got error of “cd command not found”. I can sudo bash first, then cd. WHAT'S better way?

Answer: Source askubuntu.com Short story: just sudo -i or sudo bash to start a new session. As long as you need to do stuff on that dir. When done, exit that rooted shell session.

what's the meaning of ls output colors?

it's fairly complex. Better just ignore. You can man dircolors and dircolors -p.

on Ubuntu, where are the info files? info -w returns nothing.

It's at the env var $INFOPATH. Or, default to 〔/user/share/info〕.

Rant & Opinions

Ubuntu is much more smooth and Fedora. Though, it's nothing compared to Windows. Mac is best as far as user experience goes.

Microsoft terminology Won: GUI is Shell

so, these days, GNOME, KDE, Unity, adopted Windows term of GUI as “shell”. e.g. you say GNOME Shell, instead of Gnome GUI or Gnome Desktop Environment.

lol. I guess Windows terminology won. (Windows shell)

a decade ago, this would be unthinkable. The fucking tech geekers will say you are a idiot, and shell means shell. That is, unix shell, console, terminal emulator, the shebang stuff.

FOSS FUD

lies. fud from unix ran rampant. quote from info chroot:

   (1) However, some systems (e.g., FreeBSD) can be configured to allow
certain regular users to use the `chroot' system call, and hence to run
this program.  Also, on Cygwin, anyone can run the `chroot' command,
because the underlying function is non-privileged due to lack of
support in MS-Windows.

list installed software: dpkg -l, dpkg --get-selections

• find out chinese fonts that are bundled on ubuntu.


Ion (window manager)

On April 28, 2007, Valkonen warned the Arch Linux maintainers of possible legal action because the (unofficial) Arch User Repository contained scripts to install Ion3 with patches he did not approve of.[5] Later on he did the same with the pkgsrc maintainer of the NetBSD project[6] and the ports maintainer of the FreeBSD project.[7] As of December 12, 2007,[8] the development branch of Ion, along with other software by Valkonen, was pulled[9] from the FreeBSD ports tree, after the author filed a complaint about outdated development releases still being available. Any version of Ion may still be installed from source code on any Unix system with proper libraries and dependencies.

Valkonen has implied in several mailing lists that he has become completely disillusioned with, if not openly hostile toward, the free software community in general. He plans to switch to developing strictly closed-source software for the Windows platform in the future,[10] presumably following the stable release of the Ion3 branch. Subsequently the author has indeed given up on *nix and started using Windows instead.[11]

lol. open sourcer or the fsf fuckheads, what can one say.

the fighting of these scumbags is everywhere. On one hand, cries of morality and ethics and want Bill Gates and Steve Jobs dead, on the other there's Ubuntu Unity vs Gnome war (2011-03), KDE vs Gnome war (1999), several splinter groups of BSD ((FreeBSD, NetBSD, OpenBSD) 1990s, (or DragonFly) 2000s), BSD vs Linux (1999), Firefox logo vs Debian war (2004) (then Iceweasel vs Icecat split, 2007) (which begets Iceweasel fuck) …, Python licensing issue with GPL war (1990s), FSF vs Open Source war (1999), Debian definition of Free vs FSF free war (2005), Linus vs GPL3 war (Tivoization), war, war, factions, and splinter groups, and war, severe enough that each wants to gouge other's eyes out.

O, and fuck Richard Stallman who refuses to cooperate or use with anything except everybody to become his GNU underling.


questions

• is there a way to use apt-get or dpkg to list available packages? and get a short description?

Ubuntu. When running firefox or emacs from terminal, i get errors about some theme engine pixmap. WTF are those?

xah@xah-VirtualBox:~$ firefox &
[1] 2365
xah@xah-VirtualBox:~$ OpenGL Warning: Failed to connect to host. Make sure 3D acceleration is enabled for this VM.
failed to create drawable

(firefox:2365): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",

xah@xah-VirtualBox:~$ emacs &
[2] 2448
xah@xah-VirtualBox:~$
(emacs:2448): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",

Answer: it's a buge. See: Source askubuntu.com. (Thanks to Chris Woods)

Solution: run sudo apt-get install gtk2-engines-pixbuf.

2012-04-16

Lisp: Check If a Item Exist in a List

wrote this yesterday, when i want to know if a item exists in a list.

(defun sequence-to-alist (mySequence)
  "Take a sequence mySequence and returns a association list.
Each element's cdr is “t”.

Example:
 (sequence-to-alist (list 3 4 5)) ⇒ ((3 . t) (4 . t) (5 . t))

This function is useful when you need to check a element is in a list, using
`assoc' without loading CL library."
  (mapcar (lambda (ξx) (cons ξx t) ) mySequence))

ends up not using it. But, i think even if i need it, i probably should just use whichever is in the CL package. Btw, of you Common Lisp coders, what function would it be?

Answer: there's a elisp function member. (thanks to Elias Mårtenson.)

2012-04-15

Keyboard Geeking: Backspace or Not Backspace? (Keys for Goto Previous Page in Windows and Linux)

in linux, the Backspace key is not used for goto previous page. e.g. in Google Chrome or Firefox. The keys are 【Alt+】 and 【Ctrl+[】.

On Windows, you can use ⌫ Backspace. And 【Shift+⌫ Backspace】 for forward. (Apple Mac also adopted this around 2006)

Xah Analysis: the Windows key is superior. (Sorry tech geekers of the unix faction.)

Reason:

The Backspace is not as logical. It's like, WTF? Backspace is for deleting backward. Especially so when you are posting a comment. The 【Alt+‹left/right arrow›】 or 【Ctrl+‹square brackets›】 are more logical.

But the Backspace is more convenient, ergonomic, because it is a single key, and a big key.

The operation for “goto previous page” is one of the most needed key. Perhaps in top 5. (among {page up/down, goto file top/bottom, prev/next tab, close tab})

For such frequently needed key, convenient/ergonomic has far more priority than logicality.

Detail at: Keyboard Shortcut Design: Dedicated keys, Special Buttons, Extra Keys

unix aspell's Dismal Vocabulary Size

Perm URL with updates: http://xahlee.org/comp/aspell_vocabulary.html

The unix aspell is really bad. So many common words it doesn't know. Here's a list i've added. Add the following to the file 〔~/.aspell.en.pws〕. (the first line in the following file is special. Don't over-ride the first line in your file.)

personal_ws-1.1 en 11 
backtick
meritable
utopian
programable
employability
downloadable
thru
heterogeneousness
euphemized
miscommunication
login
immersive
fandom
proselytization
youngling
microcephalic
endianness
pinky
natively
liers
chantable
screenshots
lol
blockquote
exemplarily
programer's
programers
neuroscientist
lookup
exposit
hotkey
blocky
builtin
ubiquitousness
screenshot
weblog
programer
subfolders
superset
datatype
keybinding
other's
malware
toruses
polytope
combinatorics
incenter
automata
Calculational
regex
regex's
Logitech
ErgoEmacs
FSF's
Cygwin
unix
Solaris
Googlers
Erlang
Mathematica
Mathematica's
OCaml
Scala
perl's
JScript
newLISP
Clojure
perl
elisp
javascript
JavaScript
MySQL
Prolog
PowerShell
PHP
LaTeX
emacs
emacs's
unixes
linux
Unixers
unixers
Ctrl
Picasa
PhotoShop
Xah

this list i only recently compiled, about a month's worth casual adding words. (I started to use spell checking heavily because emacs 24 made spell checking 25 times faster on Windows, bringing it to the same speed as emacs for linux. (See: New Features in Emacs 24.))

many of the words are very common words. How hard is it to add these words to the main dictionary? This is 2012, not 1989.

while writing this page, i took a trip to aspell home page Source aspell.net (woot, “aspell” itself is not in its dict.) It turns out, aspell is still alive. Its author, Kevin Atkinson, actually wrote a piece in 2011 July about its status and how to move aspell forward.

lol. He suggested, that the open source world should all move to Enchant, and have aspell and hunspell become a plugin. (Enchant is a meta-spell-checker, a wrapper to multiple spell-checking engines)

yeah right, beg a edict to the open source world. It'll work when pigs fly.

and, use a meta spell checker as solution?? That's like, lets use a meta search engine. Even better, let's use a meta-meta-engine!

To get people to use aspell is really simple. Just add damn common words. Seriously, words like {backtick, login, immersive, fandom, youngling, endianness, lookup, ubiquitousness, malware}, are not there? Add them to specialized dictionary if you want. It's trivial to compile specialized lingoes these days. Make it work out of the box. And, don't worry about multiple languages or multiple features. Stick with one, English. Make that work better than other spell-checkers. Add specialized dictionaries. e.g. computing, add math jargons, internet slang, chatspeak, lol, woot, leet!

How's Google Chrome and Firefox Doing?

out of curiosity, i pasted the words into Google Chrome for comparison. In the following list, those marked by a bullet “•” passes the spell checker in Google Chrome. Those marked by diamond “◇” passes Firefox spell checker.

backtick
meritable
utopian ◇
programable
employability
• downloadable ◇
• thru ◇
heterogeneousness
euphemized
miscommunication ◇
login
immersive
fandom
proselytization
youngling
microcephalic
endianness
pinky ◇
natively ◇
liers
chantable
screenshots ◇
lol
blockquote
exemplarily
programer's ◇
programers ◇
neuroscientist
lookup
exposit
hotkey
blocky
builtin
ubiquitousness
• screenshot ◇
• weblog ◇
programer ◇
subfolders
superset
• datatype
keybinding
• other's
malware
toruses
polytope
combinatorics
incenter
automata
Calculational
regex
regex's
• Logitech ◇
ErgoEmacs
• FSF's
Cygwin
unix
• Solaris ◇
Googlers
Erlang
Mathematica
Mathematica's
OCaml
Scala
perl's
JScript
newLISP
Clojure
perl
elisp
javascript
• JavaScript ◇
• MySQL ◇
Prolog ◇
PowerShell
PHP
LaTeX
emacs
emacs's
unixes
linux
Unixers
unixers
• Ctrl
Picasa
PhotoShop
Xah

Better, but still missing lots.

2012-04-15 Addendum: i emailed to Kevin Atkinson about my complaint. He was kind to inform me that i was using a older version of dictionary. I've updated and edited this page to latest dictionary. The report on this page reflects english dictionary “7.1.0-1” and aspell “0.60.6.1”. These are the current version as of 2012-04-15.

array programing language: APL, Mathematica

APL and Mathematica can both be categorized into a so-called Array programming language. It basically means, when a operand is a array/list, the operation is automatically mapped into the list. (as opposed to using a explicit “map” in lisp, perl, python.).

Here's APL implementation of normalizing a n-dimentional math vector.

normalize←{⍵÷((+/⍵⋆2)⋆0.5)}        

Code by Tom Novelli. APL code can be run here: Source ngn.github.com.

Here's Mathematica:

normalize = Function[#/Sqrt@(Plus@@(#^2))]

For detail, see: Vector Normalize Function in Mathematica, Haskell, Ruby, Python, Perl, Scheme Lisp, Javascript, Java, C