Using Emacs for Twitter

Perm url with updates: http://xahlee.org/emacs/emacs_twitter.html

Using Emacs for Twitter

Xah Lee, 2010-08-28

Discovered a emacs mode that lets you twitter within emacs. Quite nice. I'm not sure i support the Twitter stuff, those instant attention deficit babbling, and these days perhaps a majority of twitter traffic is online marketing (aka SEO) bullshit (there are sites that sell twitter followers. Like, $50 gets you a thousand followers.) , but that's all probably because i'm getting old.

Anyway, there are quite a few twitter modes for emacs. (see: emacswiki.org Twitter) The first i tried is TwIt (Twit.el), and it worked well. On the emacswik, it was mentioned that some of them use http instead of https, so it's a security RISK! That'd be a big one! (just imagine, your gmail password got transmitted in the open; and you'll be damned if the same account is used to access tens of other sites by OpenID.) But the Twit.el package mentioned that they fixed it to use https. I haven't looked into, but it all seems just works and hopefully it's secure.

OK, enough babbling. Here's how to use it. Just download it, open the file, then 【Alt+x eval-buffer】.

To twit, call twit-post, give your login name, password, then tweet away!

To view recent tweets, call twit-show-recent-tweets. NICE.

There's quite a few other commands that lets you search and other twitter stuff.

Once you decided you like it, you can install it properly, just follow the simple instructions in the file.

Shoes (Kelly song; comedy)

Perm url with updates: http://xahlee.org/funny/shoes_liam.html

Shoes (Kelly song)

Shoes is a hilarious comedy song.


It's so funny. This character, mocks the American teen girl mannerism. But because she's not a girl, so it delineates the more — A head toss, a eye roll, a cell phone call.

It's directed by and starring Liam Kyle Sullivan.

“What Kelly Wants to Be”

There's a whole serious on his YouTube site, or his home page: liamshow.com.

Apple Keyboards

Perm url with updates: http://xahlee.org/emacs/keyboards_Apple.html

Apple Keyboards

Xah Lee, 2006-06, 2010-06-12

Keyboards (and mouses) from Apple ever since the iMac in 1998 are in general the most ergonomically painful.

Hard-to-reach Right Alt Key

Apple keyboard

The Apple keyboard from 2006.

Note the ridiculous distance of the right side's modifier keys. It is not possible, to use the right thumb to press the alt key while the index finger remains on the J. It makes these keys essentially decorative in nature. (Apple did this to make the keys flush at the lower right corner; sacrificing function for esthetics.)

Another utter stupidity is that the function keys are all squished together into one beatific contiguous row. Traditionally, they are separated into 4 blocks. The one-contiguous-row design makes it difficult to sense the right key position by touch.

Apple Keyboard MB110LL

Apple's full keyboard, as of 2008. The right side of modifiers are still too far to the right.

Apple iMac Keyboard A1242

Apple's keyboard as of 2008. Image Source In this model, the left and right “command” keys are symmetrically placed with respect to F and J keys.

Apple's keyboards are usually the worst keyboards with respect to ergonomics.

Position of LED for Caps Lock

Also note the LED indicator for the Caps Lock key. It is right on the key. You would think that is good design, but actually not. Because, when you are typing, you can't see the light there. It's actually better, to have the light indicator elsewhere on the keyboard that's easier to see. For most generic PC keyboards, it's on the upper right side on top of the numerical pads. On some Microsoft ergonomic keyboards, they actually moved it to the middle of the keyboard. (See: Microsoft Ergonomic 4000)

Placement Of Multimedia Keys

Also note that Apple combined multimedia keys (such as volume control) into the functional keys. This means, when you want to use functional keys, you have to hold down the “fn” modifier first. This is a pain in the ass. Apple do this because they believe in some kinda visual elegance, and consider separate multimedia keys too complex or esthetically unwieldy. Apple computer, software and hardware, are usually of high quality in terms of design with respect to function. However, in some department, such as keyboarding and mouse, they sacrifise function for esthetics. This is idiotic.

Also, multimedia keys, such as volume control, next/previous song, mute, usually have different shaped buttons on most keyboards.

mwm mm keys2

Microsoft's ergonomic keyboard. Special keys are shaped in a special ways, increasing tactile feedback and visual recognization.

That is a good design quality. Because, different shapes for special keys increases tactile recognization as well as visual recognization.

Some keyboards, even use a rotary knob for volume control, which is even better, because rotary knob fits well with the control requirements of volume change. When the volume control is a button, you need to press it multiple times. With a rotary knob, you can instaneously change volume to desired level, or reverse direction.

Uniform Rectangular Array = Unnatural

Human perception is not optimized to deal with uniform geometric arrays. A array of neat rectangles may be esthetically pleasing, but it is not a form that occurs much in nature, and makes it more difficult to recognize or hit the right key.

By making the keys of uniform shape of rectangular array, you take away the ability to distinguish keys by tactile sensation. User must look at the keys or grope by positional sensation. Groping by position is made further difficult because the keys are not grouped in small clusters, by the lack of gaps between key function groups.

Function keys are important for programers as well advanced keyboard users. They are very useful as single-press shortcuts that are customizable.

Difference with PC Keyboard

Note that Apple's keyboard and PC keyboard have minor differences in their set of keys. Namely: Cmd, Opt/Alt, Windows key, the Delete and Backspace key, Enter and Return keys, the PrtScr, ScrLk, Break vs F13, F14, F15 keys.

Some of these differences are mere difference in labeling of the key, but not all. For detailed comparison, see: Difference Between Apple and PC keyboards.

  • “Apple Wireless Keyboard” amazon
  • “Apple Aluminum Wired Keyboard MB110LL/A” amazon
Was this page useful? If so, please do donate $3, thank you donors!


Logitech Wave Keyboard Review

Perm url with updates: http://xahlee.org/emacs/ms_keyboard/logitech_wave_keyboard.html

Logitech Wave Keyboard Review

Xah Lee, 2010-08-27

Logitech created this funky Wave keyboard sometimes in 2009.

Logitech Wave Ergonomic Keyboard

“Logitech Cordless Desktop Wave Pro Ergonomic Keyboard”

Logitech Wave Keyboard-s

“Logitech Cordless Desktop Wave Pro Ergonomic Keyboard” with Irish layout. Source

Logitech Wave Keyboard side

Side view.

Logitech's got this Wave keyboard. I never actually used it, but only tried it out in stores. Am not quite sure such wave design is ergonomic. The keys are not split. Nor are they curved much like a smile such as with Microsoft's Comfort Curve keyboard. It just dents up and down, i suppose because your index fingers are longer so it dents down there.

However, Amazon seems to have good reviews. Such matters really needs to be personally tested out and used for a week to judge well.

Check out the promo vid on amazon.

  • “Logitech Cordless Desktop Wave Pro Ergonomic Keyboard” amazon
Was this page useful? If so, please do donate $3, thank you donors!

most popular emacs pages

Here's the top 10 most popular pages of the past month. The top one has 72 unique page views per day, on average. The last one has 28.

The time spent on each page is about 3 to 4 minutes.

Top 10 song pages

Top 10 most popular pages of my “Human Animals and Their Songs” project. The top one is viewed 746 times in last 30 days. The 10th is viewed 203 times


UNICODE Basics: What's Character Encoding, UTF-8, and All That?

Perm url with updates: http://xahlee.org/emacs/unicode_basics.html

UNICODE Basics: What's Character Encoding, UTF-8, and All That?

Xah Lee, 2010-06-20, 2010-08-25

What's Character Encoding?

Any file has to go thru encoding/decoding in order to be properly displayed or written to. Suppose your language is Chinese (or Japanese, Russian, Arabic etc.). Your computer needs a way to translate the character set of your language's writing system into a sequence of 1s and 0s. This transformation is called Character encoding.

There are many encoding systems. Most popular are ASCII, UTF-8 (used in linux) and UTF-16 (used by Windows and OS X's file systems), GB 18030 (Used in China, contains all Unicode chars).

What's a Character Set?

A encoding system also defines a character set implicitly or explicitly. A character set is a fixed collection of symbols. A encoding system needs to define that because it needs to define what characters (symbols) it is designed to handle.

For example, ASCII is designed for Latin alphabets, and the set includes numbers and punctuation symbols. ASCII cannot be used for Arabian alphabet, Cryllic (Russian) alphabet, Chinese characters, etc. Nor can ASCII be used for some European languages that has characters such as è é å ø ü.

Unicode's Character Set, Code Point, and Encoding Systems

Unicode, defines a character set first, then it gives each character a unique ID. This id is just a integer, and is called the char's “coding point”.

Then, it defines several encoding systems. (a way to map a given code point into binary number) Most popular are UTF-8 and UTF-16. Each coding system is suitable for different purposes. UTF-8 is suitable for texts that are mostly Latin alphabet letters, numbers and punctuation symbols. (e.g. most linux use UTF-8)

UTF-8 is backwards compatible with ASCII. If your text is just ASCII, then encoding using UTF-8 results the same byte sequence as ASCII. UTF-16 is more modern, designed for unicode. With UTF-16, most commonly used characters in Unicode are 2 bytes. For Asian languages or texts that's mostly non-latin chars, UTF-16 is more efficient. Smaller file size and less complexity in processing.

There's also UTF-32, which always uses 4 bytes per character. It creates larger file size, but is simpler to parse. UTF-32 is currently not much used.


When a editor opens a file, it needs to know the encoding system used, in order to decode the binary stream and map it to fonts to display the original characters properly. In general, the info about the encoding system used for a file is is not bundled with the file.

Before internet, there's little problem since most English speaking world uses ASCII, and non-English uses encoding schemes particular to their region.

With internet, files in different languages started to exchange a lot. When opening a file, Windows applications may try to guess the encoding system used, by some heuristics. On linux and emacs, this is usually not done. When opening a file in a app that assumed a wrong encoding, typically the result is gibberish. Usually, you can explicitly tell a app to use a particular encoding to open the file. (e.g. in web browsers, usually there's a menu. In Firefox, under View, Character Encoding.) Similarly, when writing to a file, there's usually a option for you to specify what encoding to use.


For Asian languages, such as Chinese, Japanese, Korean, or langs using Arabic alphabet as its writing system (Arabic, Persian), you also need the proper font to display the file correctly.

See: Best Fonts for Unicode.

Input Method

For languages that are not based on alphabet, such as Chinese, Japanese, you need a input method to type it.

Emacs Lisp Function Frequency

Perm url with updates: http://xahlee.org/emacs/function-frequency.html

Emacs Lisp Function Frequency

Xah Lee, 2006-10, 2010-08-25

This page shows a table of emacs lisp functions in order of their usage frequency.

Ever wonder what are the top 30 most frequently used emacs lisp functions? If you are just beginner elisp programer, you probably want to know these well.

Also, this list provides raw data for many uses. For example, when you are designing a abbreviation list for Yasnippet Templates for coding emacs lisp. Suppose you want “ff” to be the abbrev for “find-file”. But some other two-words function might be “ff” as well, such as find-if, face-font, fill-flowed, focus-frame. But if you look at the frequency list and realized that all the other are not really used much, then it'd be a good decision to make ff as the abbrev for find-file only. Similarly, you need frequency info when you want to choose single letter abbrevs.

Also, for emacs lisp language developers, when adding a new function or deprecating a function; the frequency table will provide very useful info.

In the end, just for fun, you might walk down the list and see which is the first one you don't recognize. Say, that might be a fun way to judge your lisp expertise and challenge friends.

1     setq 54152
2     if 46340
3     defun 34491
4     let 25186
5     and 22555
6     car 19730
7     or 17592
8     not 15833
9     eq 15524
10     when 14187
11     point 14087
12     cdr 14034
13     list 12909
14     nth 12770
15     defvar 11574
16     goto-char 10905
17     while 10767
18     interactive 10514
19     define-key 9828
20     concat 8805
21     cons 8685
22     progn 7633
23     cond 7175
24     insert 7085
25     save-excursion 6891
26     defcustom 6838
27     error 6520
28     autoload 6128
29     t 6029
30     unless 5944
31     let* 5811
32     point-min 5755
33     fn 5441
34     format 5386
35     lambda 5038
36     = 4896
37     string-match 4861
38     length 4683
39     - 4682
40     message 4616
41     1+ 4509
42     looking-at 4316
43     const 4215
44     > 4200
45     put 4199
46     memq 4160
47     < 4087
48     + 4074
49     point-max 3940
51     equal 3758
52     1- 3716
53     aref 3631
54     match-string 3407
55     require 3381
56     re-search-forward 3236
57     match-end 3207
58     match-beginning 3080
59     null 2761
60     push 2751
61     with-current-buffer 2691
62     funcall 2681
63     current-buffer 2645
64     substring 2609
65     make-local-variable 2415
66     forward-line 2383
67     stringp 2357
68     defconst 2296
69     mapcar 2207
70     assoc 2111
71     set 2008
72     dolist 1992
73     beginning-of-line 1933
74     assq 1908
75     string= 1860
76     append 1858
77     * 1853
78     choice 1795
79     string 1762
80     x 1724
81     car-safe 1712
82     forward-char 1677
83     cadr 1609
84     >= 1603
85     set-buffer 1597
86     condition-case 1584
87     apply 1557
88     expand-file-name 1550
89     consp 1515
90     fboundp 1511
91     aset 1504
92     princ 1500
93     delete-region 1493
94     <= 1493
95     purecopy 1489
96     file 1408
97     defsubst 1407
98     pop 1402
99     arg 1370
100     featurep 1323
101     member 1301
102     nreverse 1290
103     a 1256
104     buffer-substring 1255
105     throw 1253
106     / 1244
107     defmacro 1243
108     provide 1242
109     repeat 1241
110     replace-match 1239
111     function 1221
112     name 1210
113     declare-function 1204
114     symbol-name 1190
115     boundp 1171
116     defalias 1166
117     zerop 1132
118     intern 1105
119     class 1091
120     get 1089
121     start 1086
122     add-hook 1086
123     listp 1084
124     file-exists-p 1067
125     end-of-line 1059
126     modify-syntax-entry 1037
127     string-to-number 1029
128     setcdr 1023
129     search-forward 977
130     current-column 961
131     skip-chars-forward 958
132     get-text-property 948
133     setcar 948
134     menu-item 935
135     symbol-value 932
136     save-restriction 922
137     eobp 915
138     char-after 912
139     oref 911
140     erase-buffer 908
141     regexp-quote 888
142     mapconcat 873
143     defgroup 871
144     delq 864
145     symbolp 854
146     max 852
147     math-mul 822
148     group 817
149     n 816
150     background 811
151     make-variable-buffer-local 807
152     numberp 802
153     case-fold-search 801
154     mapc 792
155     buffer-name 772
156     &rest 770
157     i 762
158     make-sparse-keymap 761
159     1 758
160     eval 748
161     integerp 746
162     :foreground 744
163     s 743
164     file-name-nondirectory 737
165     re-search-backward 737
166     string-equal 732
167     var 727
168     beg 724
169     run-hooks 723
170     eval-when-compile 722
171     [0-9]+\\ 716
172     prog1 715
173     defmethod 714
174     downcase 712
175     kill-buffer 711
176     default 708
177     get-buffer-create 701
178     regexp 699
179     plist-get 689
180     elt 689
181     narrow-to-region 683
182     pos 680
183     buffer 676
184     file-name-directory 675
185     nthcdr 674
186     end 666
187     /= 664
188     put-text-property 659
189     nconc 655
190     catch 655
191     type 647
192     defface 644
193     min 636
194     symbol 634
195     caar 632
196     unwind-protect 620
197     widen 619
198     nil 617
199     add-to-list 613
200     selected-window 612
201     skip-chars-backward 607
202     widget-get 606
203     math-div 602
204     \\ 599
205     bolp 598
206     save-match-data 583
207     call-interactively 574
208     prefix-numeric-value 565
209     .*\\ 564
210     buf 561
211     vector 560
212     buffer-file-name 555
213     buffer-substring-no-properties 553
214     delete-char 543
215     select-window 543
216     p 535
217     inhibit-read-only 532
218     backward-char 526
219     with-temp-buffer 514
220     following-char 513
221     setf 510
222     signal 508
223     math-add 504
224     tag 504
225     dir 503
226     map 495
227     make-string 492
228     mark 492
229     y-or-n-p 491
230     set-marker 490
231     get-buffer 488
232     file-directory-p 487
233     see 487
234     c-lang-const 486
235     switch-to-buffer 485
236     sort 483
237     read-string 482
238     filename 475
239     custom-autoload 465
240     str 460
241     % 458
242     read 457
243     remove-hook 453
244     widget 443
245     key 443
246     float 441
247     entry 439
248     copy-sequence 431
249     sit-for 431
250     bobp 425
251     point-marker 423
252     math-reject-arg 412
253     cddr 410
254     completing-read 408
255     0 407
256     forward-sexp 396
257     char-to-string 395
258     [ 392
259     from 391
260     quote 391
261     gnus-message 390
262     get-buffer-window 386
263     preceding-char 385
264     overlay-put 385
265     [^ 384
266     math-sub 378
267     org-defkey 378
268     c 371
269     b 366
270     defvoo 366
271     indent-to 366
272     form 363
273     2 359
274     number-to-string 357
275     logand 352
276     result 352
277     split-string 350
278     loop 341
279     deffoo 340
280     char-before 339
281     gethash 337
282     reverse 337
283     val 337
284     min-colors 332
285     file-name-as-directory 332
286     buffer-string 323
287     table 322
288     count 321
289     delete-file 319
290     incf 319
291     marker-position 318
292     this 318
293     files 316
294     functionp 314
295     set-buffer-modified-p 314
296     proc 313
297     symbol-function 312
298     buffer-modified-p 310
299     math-neg 309
300     args 309
301     event 309
302     control 309
303     cdar 306
304     value 304
305     add-text-properties 304
306     delete 303
307     current-time 302
308     ignore-errors 301
309     make-vector 300
310     last 298
311     f 296
312     which 296
313     insert-buffer-substring 291
314     face 290
315     pop-to-buffer 288
316     lsh 286
317     propertize 286
318     save-window-excursion 285
319     match-string-no-properties 284
320     marker-buffer 283
321     selected-frame 283
322     count-lines 282
323     insert-file-contents 282
324     item 282
325     load 281
326     back-to-indentation 279
327     eolp 279
328     line-beginning-position 278
329     len 275
330     num 275
331     make-symbol 274
332     file-attributes 274
333     expr 272
334     integer 272
335     kbd 272
336     custom-put-if-not 271
337     date 271
338     sym 271
339     article 270
340     prefix 270
341     use-local-map 270
342     doctor-put-meaning 269
343     char 268
344     process 267
345     find-file-noselect 267
346     alist 266
347     move-marker 264
348     obj 262
349     math-normalize 261
350     dotimes 260
351     custom-manual 260
352     abs 260
353     func 259
354     called-interactively-p 259
355     int-to-string 258
356     point-at-bol 258
357     calc-wrapper 253
358     line-end-position 253
359     window-height 249
360     context 249
361     semantic-lambda 247
362     number 246
363     window-buffer 246
364     url 245
365     upcase 245
366     l 243
367     make-marker 243
368     file-readable-p 243
369     vectorp 241
370     point-at-eol 240
371     move-to-column 239
372     res 238
373     fset 238
374     search-backward 237
375     current-indentation 237
376     prompt 236
377     define-obsolete-function-alias 234
378     4 230
379     dun-mprincl 230
380     widget-put 229
381     gnus 228
382     global-set-key 228
383     buffer-read-only 228
384     format-time-string 226
385     logior 226
386     in 225
387     buffer-size 224
388     info 224
389     ding 223
390     mod 223
391     def-edebug-spec 222
392     ediff-with-current-buffer 222
393     data 221
394     newline 221
395     getenv 221
396     buffer-live-p 220
397     process-status 219
398     vhdl-insert-keyword 219
399     regexp-opt 218
400     prin1-to-string 216
401     semantic-tag-name 215
402     with-output-to-temp-buffer 213
403     directory-file-name 211
404     oset 210
405     directory-files 209
406     process-buffer 209
407     read-from-minibuffer 208
408     recenter 208
409     region-beginning 207
410     vec 207
411     push-mark 206
412     save-buffer 205
413     eval-and-compile 205
414     read-file-name 204
415     intern-soft 202
416     case 202
417     sexp 201

The right side is number of times they are called.

This list is generated by reading all lisp files bundled with emacs 23.2, then count the occurances of the first word after the left parenthesis. There are about 1327 “.el” files.

(this list is generated by a python script in a text processing fashion. It is not done by a lisp reader, so is not absolutely accurate. Some entry above may not actually be a valid lisp functions)

The Python script is here: function-frequency.py.

PS: Tell me how far down the list you got first function that's not familiar to you.


disable Win popup startup menu but not Win+key shortcuts

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 custome key set up, i can do it for you. Please do donate $10 though. (click button on upper right of this window)

Emacs Lisp Yasnippet Templates

Perm url with updates: http://xahlee.org/emacs/elisp_idiom_templates.html

Yasnippet Templates for Emacs Lisp Mode

Xah Lee, 2009-02-24, ..., 2011-01-11

This pages is a set of abbrev and YASnippet templates for emacs lisp coders.

emacs-lisp-mode Abbrevs

The abbrev list contains ~78 most frequently used elisp functions. For example:

  • “add-hook” has abbrev “ah”.
  • “search-forward” has abbrev “sf”.
  • “thing-at-point” has abbrev “tap”.
  • “defun” has abbrev “d”.

Each abbrev is based on first letters of the words in function names.

If you are not familiar with emacs's abbrev feature, see: Using Emacs's Abbrev Mode for Abbreviation.

YASnippets Templates for emacs-lisp-mode

The YASnippet are for expanding function names to its full syntax and parameters. It contains ~145 of most frequently used elisp functions.

For example, type buffer-substring-no-properties , press Tab, then it becomes (buffer-substring-no-properties START▮ END). Here's a picture of more examples, when used together with abbrev:

bsnp ▮
(buffer-substring-no-properties START▮ END)

Another example:

sfr ▮
(search-forward-regexp "▮" &optional BOUND NOERROR COUNT)

If you are not familiar with yasnippet, see: Emacs Templates with YASnippet.


Download the templates for $5. In the comment field, put “elisp templates”. I'll email you the download link. Make sure your email address is included and correct.


Elegance & Respectability of Juggling

Perm url with updates: http://xahlee.org/vofli_bolci/juggling_resp.html

Elegance & Respectability of Juggling

Xah Lee, 2005-10

Juggling being a act of respectless younsters as perceived by the populace, as opposed to, say, ballet, figure skating, gymnastics, diving, or other Olympic performance sports, is precisely because jugglers lack class. Almost always, jugglers act like some kind of slackers clowning with their props. I don't mean just the geekers in their informal juggling conventions, but including professional ones, such as the world's top jugglers Anthony Gatto or Thomas Dietz, Dick Franco, etc. Yes, these jugglers can juggle. They are representative the best of the world of juggling. But if you look at their performances on stage or off stage, you see that there's lots of sweat but zero art. Even comedians get a whole lot of respect in their artistic creativity.

For juggling to be developed into a respectable world-class performance sport, it must develop styles or artistic creativity. Although we can't stop the 90% of jugglers being those science geekers or otherwise alternative-life-style vagabonds with their slacking mannerism, but the juggling world must start to have a awareness, that development of style and elegance is a prime need for juggling to become a respectful performance art.

Here i'll give one illustration. In juggling, there's the move of pirouette. Now, pirouette is a very stylish move in dances, where the performer does a full body rotation in-place. If you have watched professional dancers do it, it is done with extreme elegance. The artist can do triple or more such spins in a short time, with a distinct way of twisting their body and head-turn, almost as fast like figure-skate spinning. And, expert ballet dancers can do it even slowly, with characteristic kicking of her leg and tipping of her feet.

Now, jugglers also include pirouette in their act. They throw all balls up and turn their body full round and catch the balls again. However, when the pirouette came to jugglers, it became a buffoon's act. The jugglers throw up the balls, then in a awkward fashion, hurriedly turn their body 360 degrees by all means they could, with their heads cocked and hands hang in their sides ready to catch the balls. It's not that jugglers don't have time. Double pirouettes with 5 balls is not uncommon among professionals. But for the jugglers, the concept of elegance is unknown. What they do have in mind is the ability to turn the body around while balls are in the air. In comparison, as we can see in dance competitions, a slight askew elbow, or even a inappropriate facial expression, will deduct points. The difference in the performance's respectability becomes clear.

There are jugglers who have put thoughts into elegance, but rare. One juggler in history who has style, is the great Francis Brunn. Among today's jugglers, a outstanding juggler who's artistry in performances compares to that of ballet, is Viktor Kee. (Viktor Kee juggling) Another one who has at least avoided cheap slapstick is Jason Garfield, who in particular has made public outcries against juggling as idiotic clowning. Another juggler who had style, is Andrew Allen (aka Neil Stammer), among others.

Juggling in the Western tradition is heavily tied with idiotic clowning. Juggling balls, clubs, rings is inherently a very elegant, mathematical act. The patterns formed by the objects constitute a mathematical study of combinatorics and network theory. The mastery of getting objects to fly in a regular and complexly varied patterns is a art form by itself without any other added creativity or bodily expressions. (know today as “siteswap juggling”) However, in the Western society, juggling and clowning are almost inseparable. For example, the juggling repertoire seldom include the mastery performance of simple, plain, perfect show-case of ball-path pattern variations. However, it typically include buffoonery acts like bouncing a ball on the head, rolling it on the face, balancing a club on the chin, hula hoop rings on the legs or arms, biting a apple, juggling ugly disparate objects such as chain-saw and bowling ball, or the spitting of Ping-Pong balls. (These kind of acts in the repertoire arose out of “look Ma! I can do this!” attitude towards juggling.)

It is not to say that these acts are inherently worthless. But almost always, their performance are done as a low class slapstick, as if saying: “look i can do!”, than as part of elegant ballet movement whose art and difficulty lies subtly in its outward simplicity.

It is worthwhile to note, that Juggling in Far East, more specifically China, is more a art-form than the Western tradition. This is due to cultural differences. It can be seen in their juggling acts and props. Examples include: vase balancing, diabolo (Chinese yoyo), kicking chair or umbrella, and various specialized acrobatic feats (e.g. pole acrobat, chair-balancing, hoop tumbling). Chinese juggling are almost never mixed with comical elements in the same act.

In modern times arose the Cirque du Soleil, which has taken circus acts into a theatrical entertainment with world-wide acclamation and financial success. On occasion, they will have master jugglers in their show. It is rather difficult to turn the act of objects juggling into a dramatic show, but on occasion the performance is very stylized and graceful. This is a good move for the world of juggling. However, we must also watch out, that the art of juggling is primarily a show of physical skill, and the dance movements or drama acting must not sacrifice or dilute the depth of technicality that is juggling.

How to get a style? One way is for jugglers to study theater performance, study dances, for examples. I see a great future in juggling as a well-respected performance art. (the same level as such can be, such as figure skating or gymnastics) For example, the variation-juggling of 3-balls is great and fascinating. Its variations have a range of difficulties, from trivial to technical difficulties equivalent to 7-balls juggling. For example, as have mentioned before, a routine with a style that watches as if the juggler is completely blind. For another example, doing professional-level break-dancing (or other dance style) while keeping 3-balls up. For another example of a style, a single handed juggling of 3-balls, where the balls forms a file in sequence like a snake, moving from front of body to behind the back and under the leg and behind the waist or suddenly spring from left side of the body to the right side, all with one single hand and in a smooth fluidity. 3-ball tricks juggling anyone can learn in a month, but perfecting a performance as the above with showmanship, perhaps not a single juggler in history has done it or done it well.

Compatriots, get elegance and upgrade the respectability of juggling in the world.

PS Rhythmic gymnastics can be inspirational for jugglers to get elegance. rhythmic gymnastics

For some juggling performances that are towards elegance, see The Cases of Elegance in Juggling.


Math Prizes and Nobel Ignobility

Perm url with updates: http://xahlee.org/math/math_prizes_and_Nobel_Ignobility.html

Math Prizes and Nobel Ignobility

Xah Lee, 2010-08-22

Abel Prize. A yearly award to mathematicians. Winner gets close to 1 million USD dollars. This is said, to be the closest analog to Nobel prize.

Another, is the Millennium Prize Problems. It is 7 unsolved math problems. Those who solves it, gets 1 million USD. This started in 2000, and so far 1 person solved one of them. See: Grigori Perelman and Money: Will you decline 1 million to make a statement?.

The other math award for mathematicians is Fields medal. Given out every 4 years, but only to those under 40 years of age. Winner gets only 15k USD.

PS i despise Nobel prize. It is questionable and politically influenced.

  • It awards Peace Prize in 2009 to US president Barack Obama.
  • It never awarded Mahatma Gandhi
  • It also awarded to the 14th Dalai Lama Tenzin Gyatso. ( The term “Dalai Lama” means the head of theocracy of the Tibetan sect of Buddhism. It is similar to Pope in Catholic sect of Christianity, Ron Hubbard of Scientology, Li Hongzhi (李洪志) of Falun Gong, Sun Myung Moon of Unification Church (Moonies), Joseph Smith Jr of Latter Day Saint movement (Mormon), etc.) See: Li Ao on Tibet and Dalai Lama.
  • It does not award any mathematicians.
  • Many of its peace awards are controversial. In many cases, the recipients are considered as war mongers by many. Many of its science awards are also controversial, as well as literature awards. And quite euro-centric.
  • Bertrand Russel, who did far more important work in math or peace, received a Nobel for literature instead.

For a full list and discussion, see: Nobel Prize controversies.

System-wide ErgoEmacs Keybinding for Windows, Mac, Bash

Perm url with updates: http://xahlee.org/emacs/ergonomic_emacs_keybinding_system-wide.html

System-wide ErgoEmacs Keybinding for Windows, Mac, Bash

Xah Lee, 2010-08-22, 2010-10-17, 2011-01-10

This page lists several utilities that let you use the ErgoEmacs Keybinding system-wide.


For Windows, just download the following executables.

Caps Lock for M-x (execute-extended-command)

Here's some util for Windows to make Caps Lock key do emacs's “M-x”. Very convenient.


Download one of the following file, then copy the content and put it in 〔~/Library/KeyBindings/DefaultKeyBinding.dict〕.

These are based on OS X's system-wide keybinding mechanism. For detail, see: Creating Keyboard Layout in Mac OS X.


Download the following, then place the content in your “.inputrc”. (see the header for detail.)

Not Perfect

I use all of them, the Dvorak version. However, note that there are many quirks in keybinding system in both Windows and Mac, as well as in Bash. In a perfect world, a keybinding system should let you assign or remap any key system-wide. However, that's not the case. Not in Windows, not in Mac OS X, not with emacs, nor with AutoHotkey. Typically, there are certain key combinations handled at low level that you just cannot remap, some are by design, but some seems not. (e.g. on Windows, 【Win+l】, 【Win+u】, 【Ctrl+Alt+Del】. On Mac, Opt with any of e u i n `, or Cmd with any of z x c v.)

Also, there are many practical quirks. For example, on Windows with AutoHotkey, the keys won't work when you are intsalling a software or in regedit. Because, while in regedit, you are running it in admin privilege mode. But ahk is not running in admin privilege mode.

On the Mac, the system wide keybinding works only with apps written in the Cocoa framework, but even so not all your key remappings are supported by Cocoa apps. (for practical purposes, it works in vast majority of apps out there.)

So, the above ErgoEmacs scripts are not perfect, but they cover all the basic cursor movement and deletion keys. (read the header file for any detail.)

PS the contributors for these scripts are in the files. Here's a summary:

  • Milan Santosi wrote the AutoHotkey scripts for Windows.
  • I wrote the keybinding config files for OS X.
  • Brendan Miller wrote the “.inputrc” config files for bash.

major drama with Modular Systems

Perm url with updates: http://xahlee.org/sl/emerald_dos_fiasco.html

Emerald Viewer DOS Fiasco

Get your Xah Particle Maker today!

Xah Lee, 2010-08-22

Lots is going on with Emerald now. I haven't had time to digest it all, but it's going wild. Here's few links to start you off with, i'll write a better report when i've done my research.

A Emerald developer “LordGreg” announced quitting, on his blog dated 2010-08-14. http://lordgreggreg.wordpress.com/2010/08/14/emerald-reassessment/

He's saying there's is a a piece of code “emkdu.dll” that is not open source, and seems intentionally hidden from all other developers. (you can find this dynamic library in your Emerald dir, e.g. “c:/Program Files (x86)/Emerald Viewer/emkdu.dll”)

Besides that, he's also not happy that the money made by Emerald is handled privately and not open to all developers, even he wants none of it. (presumably the money mentioned is from ads running on the modular systems site)

I'll need to do research on this yet. However, there seems to be another major issue going on, probably not related to the above.

It seems that Emerald users have been used as a “Denial Of Service” attack on a website.

Modular system's official response to this is here: http://blog.modularsystems.sl/2010/08/20/shenanigans/

About this issue, there's also this interesting voice recording on youtube.

Want to dash through walls?
Try Xah Tele-Dasher!

Emerald Off Linden Labs Viewer List; Emerald Team Restructuring


The DDOS attack incident has hit emerald hard. As a result, Linden Labs has taken Emerald off the safe 3rd-party viewer list. See: http://viewerdirectory.secondlife.com/. Fractured Crystal (founder of ModularSystems), responsible for the DDOS attack, has resigned. The Emerald group announced restructuring. See: http://blog.modularsystems.sl/2010/08/22/emerald-resurgence/. Here's some selected quotes:

From this point on, there will be no ONE single person running Emerald Development.

As of NOW, All affiliation between Modular Systems/Fractured Crystal and the Emerald Viewer have been permanently severed.

The website will be hosted at EmeraldViewer.net and should be online and operational shortly.

This address the DDOS incidence, but as well addressed the concern voiced by LordGreg about close sourced questionable code.

About Fractured Crystal

I know Fractured. He is a friend. I know him for close to a year, but not well. We chatted on voice for about 5 or so times, sometimes for over 30 min.

He is not a bad, greedy, guy at all. From my impression of him, he seem to be another typical programer, easily gets excited about coding and technology, but have no interest or understanding about business, making money, at all. (i remember when he first implemented the C++ templates system in LSL, he excitedly told me about it, and we argued about programing technology like a hour, because i don't like C, C++ technologies.) In fact i have tried to talk to him about making emerald a commercial entity, but that line of thought is often thwarted when talking to programers.

I don't know why he did the DDOS attack. I'm sure it's a mistake. It's common for programing geeks to piss fight with their peers. Btw, DDOS attack isn't something very serious in the spectrum of all online crimes, but by all means it is not something one should do.

Fractured has now made a official announcement about this: http://blog.modularsystems.sl/2010/08/22/emerald-off-with-his-head/.

I would recommend that we forget about it, and thank Fractured for his past contributions, for as a leader bringing us the best 3rd party viewer by far, and made huge impact in Second Life. (Emerald brought us sim wide radar, breast physics, rez platform commands, click to tp, ability to disable tp blackout screen, cancel tp, ... too many really useful ones to list) Hopefully, Fractured will come back later on and contribute code, when this is all forgotten. Thank you Fractured.

What's DDOS Attack?

DDOS stands for “Distributed Denial Of Service”, often just just “Denial-of-service” (DOS).

You know, when you visit a website, your browser sends a request to the server the site is hosted on, then the server in return sends the content of the page back to your browser. Suppose, the server on average gets 5 requests per second. What if all of a sudden the site got mentioned in all major news, and got swarmed? So, it suddenly gets 100 requests per second. The computer running the server software can't handle it, so the site becomes super slow, or crash. Effectively, making it out of service.

A DDOS attack is exactly just that. You let lots of computers to access the site in a short time, effectively taking the website down or making it too slow to be usable.

How Emerald does DDOS?

When you login to Emerald, you get a splash screen, showing you a sim screenshot, as well as news, right? That screen is from this site: http://www.modularsystems.sl/app/login/. So, everytime you login, Emerald makes a request to the ModularSystems. What happened was that, someone inside Emerald, modified the webpage so that the page also makes 30+ requests to another website “iheartanime.com” owned by Hazim Gazov (a critic of Emerald).

(for those familiar with html, it's 32 embedded iframes. See here: emerald_ddos_iframe.txt)

So, when each person using Emerald logs in to Second Life, the iheartanime.com site gets 30 requests. That's DDOS.

How many users are using Emerald? According various sites, Emerald users are about 20% to 30% of Second Life users. On a average day, there are about 40k to 60k users logged in (as can be seen in the viewer login splash screen.) So yeah, the DDOS is quite effective.

DDOS is not legal, of course. But one should understand this in making a judgement related to online crimes. In particular, simple DDOS as done in this incident is not some sinister, complex hackery, nor did this case involve viruses, trojans, etc.

Is Emerald Now Banned?

No, not really. You can still use Emerald, and my guess is that Emerald will soon be back on Linden Labs's 3rd-party viewer list.

For some detail, see this official blog from the Emerald team. http://blog.modularsystems.sl/2010/08/23/emerald-and-the-tpvd/

Qarl Linden Laid Off by Linden Labs

On other news, it seems that Linden Labs recently laid off some 30% employees, according to: Source. One of them is Qarl Linden, a acquaintance of mine. See: 〈and a linden is slain〉 (2010-08-04), by Karl Stiefvater (aka Qarl Linden), at: qarl.com.

I knew Qarl, somewhat. Been on his friend list for about 3 years. I met him thru Seifert Surface (For Sei's work, see: Math in Second Life). Qarl runs the sim named Q. It is a giant 3D cube, that is actually a maze inside. Check it out with friends, it's quite fun. It took me 2 to 3 hours when i first tried to solve the maze (without cheating). (this was before Emerald, and before i knew all about dashing thru walls and tricks.)

Note that Qarl is largely responsible for bringing us sculpties.

Corporate environment can be harsh. One day you are hired, is a hero, and next day laid off. (i was laid off in 2002 at Netopia, and still haven't recovered. LOL)