Xah Programing Blog

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

scihub logo raven
SciHub logo.

SciHub logo. beautiful

On Dell laptop, how to change the function keys as F1 to F12?

  1. press the ❖ Win key
  2. type “mblctr”, Enter ↵ to open the Windows mobility center.
  3. there, you'll find a box to let you switch F1 to F12 as function keys.

Dell Inspiron 15 7559 Linux Boot Problem

Keyboard Hardware Dvorak vs Software Dvorak

Ubuntu 16.04 Install Google Chrome or Third Party .deb File

it seems, today we've reached a stage where good quality programing language is a dime a dozen.

high availability of quality prog langs don't seem to do much. Programer mindset is very slow to change.

seems we need another 10 years for C C++ java coders to die off. young spur change because they simply not aware what's before.

xah unicode search usage sample 2016-05

new version. Covering Unicode 8.0.

here: Unicode Search ☯ ☭ ⚡ → ∑ ♀ ♂ ♥ 😄

the creeping impact of tech, internet

looking at all the video games, such as osu, dancing, all. amazing. You wonder how difficult to write such?

VERY Difficult!

it's a phenomenon where tech is catapulting everything. langs, libs, frameworks, paradigms, all exponential growth, vastly specialized.

in our tech circle, we see self driving car, computer beats human in go , 3D goggle, as demo of tech. actually, impact happen in million places we don't see

these million places, are not reported by the media. The video game osu, is 1 example. you don't know until you run into it.

today, you don't even find philosophers writing about these. but i do. On the Question of Too Many Programing Libs On the Question of Too Many Programing Libraries

you don't find philosophers reporting these phenomenons,not cuz none,but million things are happening that overwhelm'd your ability to be aware of all.

mechanical devices, steampunk, have a sense of wonder, because they are perceptible ancient science.

trackballs, have a sense of wonder, because they are mechanical devices.

trackballs pics 14858
Trackball Buying Guide

curved monitor

today i saw this.

acer predator 34inch curved monitor

that's 34 inch, 3440 x 1440 Resolution.

yes, it's curved.

  1. Douglas Crockford is 61. rob pike is 59. Yukihiro Matsumoto 51. Brendan Eich 54.
  2. these people more or less still code. don't know about Eich.
  3. i have been a failure. my life is at the ending. Xah Lee amounted to be a troll, best known as. Oh, and petty emacs tutorial.
  4. i still consider basically all my rants correct, and the lispers and perlers and python folks i argued with in decades are idiots.
  5. i'm giving myself about 5 years to do something. after that, the brain is really gone.
  6. a deep hatred has sustained my life. truly.
  7. 5 years isn't much. eg learn some math i always wanted to know, algebraic geometry, topology, godel stuff, would take good 2 or 3 years.
  8. but in 5 years, i could probably still code 1 or 2 project, really well, and say, be known for it.
  9. there's 2 faces on twitter. 1 marketing, say good things, encouragement. be positive. i've been trying todo, to peddle my website.
  10. but that's not me. once in a while, i can't help but hurst out the most hateful things. and there goes all my followers, aliented friends.
  11. the promotional, positive, happy stuff, is rather the most despicable. they spring from profiting. and is the worst of humanity.

linux command 「gksudo」

you can use gksudo to launch X11 apps, such as gksudo nautilus

the purpose is similar to sudo

man gksudo says:

gksu is a frontend to su and gksudo is a frontend to sudo. Their primary purpose is to run graphical commands that need root without the need to run an X terminal emulator and using su directly.

but when you actually need it?

apparently, sometimes when you need to sudo nautilus and it made the ~/.Xauthority owned by root (should be owned by user). Then, this create a problem where user can't login when in lightdm. (lightdm is the login screen.)

reference: http://askubuntu.com/questions/300682/what-represent-xauthority-file

how to find if your Linux machine support usb 3.0?

in terminal, type lsusb. If one of the line in the output contains “Foundation 3.0 root hub”, then that port is USB 3.0.

A Spontaneous Rant on D3.js

i think i seriously dislike d3.js. at this point, i think it's hack of hack. looks cool http://bl.ocks.org/mbostock/4063318 but the code, wtf?

there, you'll see it's doing pen drawing commands of svg path element. holy cow, a beautiful widely used powerful library and there it is, manually hacked up pen drawing commands of path of svg.

am this point, am not certain, either i'm totaly old and irrelevant, or d3 is truly sh�t of the “modern” programing generation fashion.

i mean, i look at the page, its descriptions, and thougt wow, this is well done. How is it possible to draw those calendar with so short code?

and, d3's code has always been incomprehensible. I've tried to study it a couple times since 3 years ago.

it's kinda weird. Its design is kinda weird. It claims that it doesn't lock you into any framework's functions, that d3 simply works with web standards. But actually, if you look at its design, with reactive programing “selection” “enter” “exit”, it right off the bat lock you into d3.

yeah, d3.js is weird. You know? am no computer graphics expert, but i've done math visualization for at least 10 years 〔➤see Visual Dictionary of Special Plane Curves〕 , and i know JavaScript the language very well, and i know DOM fairly well. 〔➤see JavaScript in Depth〕 But, it's still hard to understand d3.js. 〔➤see Practical SVG Tutorial

d3's home page https://d3js.org/ is just so impressive, and i have no doubt the lib is quality. After all, the lib has become basically the industrial standard, and the author and his work came from research projects.

but, but, d3 is really weird. How's it weird?

first, the way it does things, is by this certain “selection”, then “enter”.

like, you want to plot a bar chart or pie chart. You look for a function named barChart or drawRectangle, but there's no such. You just got these incomprehensible “enter” and “data” and “transformation” stuff.

there are several things here. This is some kinda reactive programing. That is, functions are bind to data, and when data changes, functions reflects it right off. This is kinda new. But, maybe am old, or not familiar with angular or backbone or facebook react, maybe that's why i find it incomprehensible. Is that it? Many of you work in the industry with these libs. But does any has problem with d3 as i do?

am sorry Mike Bostock, but a man's gotta rant.

but maybe, in a few years i'll think that D3 is really the right way.

What is Persistent Data Structure?

On the Question of Too Many Programing Libraries (on a page by itself)

adaptive sampling explained. new.

math plot adaptive sampling 2016-05-01
Adaptive Sampling, Plotting Math Curve

“look into my eyes, and you'll be reduced to a pawn”


Unicode: Math Symbols ∑ ∞ ∫ π ∈ ℝ²

starting a dedicated keyboard blog. See

Subscribe Xah keyboard Blogkeyboard_blog.xml

Subscribe there. I'll not duplicate keyboard stuff here. Thanks.

a dedicated keyboard blog allows me to freely post any keyboard related stuff quickly without dithering.

had a clarity, about designing my JavaScript svg library.

JavaScript Language Design: Dot Notation be Namespace or Object System

sigil for my φvariable ξnames

fret about whether i should continue using funky sigil for my variable names. As in:

xd.drawCircle = function (φcontainer, φcenter, φr, φstyle) {
    var ξcir = document.createElementNS("http://www.w3.org/2000/svg", "circle");
    ξcir.setAttribute("cx", φcenter[0]);
    ξcir.setAttribute("cy", φcenter[1]);
    ξcir.setAttribute("r", φr);

    if (φstyle !== undefined) { ( ξcir.setAttribute("style", φstyle)); };

    if ( φcontainer === undefined ) {
        return ξcir;
    } else {
        return φcontainer.appendChild (ξcir);

the problem, is people. Other people.

you see, it's like the many english spelling reform. It is sound and good, except, the masses, idiots, will not have it, and is doom'd to failure.

the reason i want to do it is here: Sigil for Function Parameter Names and Programing Style: Variable Naming: English Words Considered Harmful.

but i thought about it more due to the my dilemma of continuing the practice, in JavaScript or any lang other than emacs lisp. I took a walk, talking to myself, for 30 min. Here's some more insights.

the essential good of it, is that it embeds semantic info into syntax. That is, you can tell if a variable is a function parameter, or local variable, or not global, just by its name.

This is in general called sigil. (most popularized by perl, followed by ruby.)

there are other examples of widely accepted practice of embedding semantic info in syntax. For example, in Java and python, class names starts with capital letters. This is a strong convention, everyone follows. It is important, because, classes, variable, methods, have very different semantics. Being able to tell by a glance saves you time or error.

also read, if you are inclined:

but i think am going to stop this geek char sigil practice. My emacs lisp code base are full of it, it's hopeless. For lisp, i probably should push on my way, as lisp is weird already and lisp people are weird. But for my JavaScript code, which there isn't much, am thinking of stopping this φsigil ξthing, while the night is young!

the problem, is that whenever it is exposed and seen by other people, it's a problem. You'll need to do explanations, and you'll win yourself a weirdo badge. And, other consequences. For example, the jslint won't accept names that start with Unicode char.

unless, i keep my code to myself only. Imagine, i, am the greatest coder, couldn't care less what other coder do or say. I just churning out my own code that rules the world. Well, it hasn't happened yet.

Google Plus https://plus.google.com/+XahLee/posts/Ei5eKe8T49i

Ontology of Postfix Notation, Method Chaining, and Unix Pipe

24 hours clock, 00 start at top or bottom?

Uno 24 hours watch
Uno 24 - One Hand Men's Watch by Botta-Design. amazon

24 hours watches are superior, because, the needle points as a fraction of day. And, you can tell just by a glance, how much daylight is left, or how much a day is left.

roughly, half of the circle is daylight.

in designing a 24 hours clock, there's the question of whether the 0 clock should start at top or bottom.

the advantage of starting at top is that, it's just normal for 0 to start at top, as in our typical clock.

the advantage of starting it bottom is that, now, the daylight will roughly correspond to the upper half of the circle. This is somewhat natural because we associate light as above us.

if you look at existing 24-hour watches, see amazon at 24 hours watches, most has 00 at bottom. But for 24-hour clocks, most has 00 at top.

i'm making a JavaScript version, see JavaScript: 24 Hour Clock

new language, Kotlin, from JetBrains. Runs on Java Virtual Machine. Similar to Java, but designed to improve java.

Proliferation of Computing Languages

The Complexity of Java's Access Specifiers (oldbie, new home)

Clojure's Ring, Compojure, hiccup, perfect doc!

Clojure's Ring, Compojure, hiccup's docs are SUPERB! all by the same guy. Clear, concrete, + example! a rarity in industry.

by the way, the code are written by the same guy too. The guy is James Reeves, aka @weavejester. github at https://github.com/weavejester

see also Clojure: Essential Libs for Web App

HTTP Protocol Tutorial (new)

Python: GET Webpage Content

Perl: GET Web Page Content (on its own page)

Clojure: Essential Libs for Web App

Mac, press 【Fn+】 for page down. It actually sends the same signal as ⇟ Page ▽ key.


nice doc = auto code

i imagine one day lang are so well doc'd that coding is simply read the doc and type functions you need together, once! and done.

Functional Notation vs Operator, Ultimate Superiority

suddenly, am thinking of the ultimate answer to the question of superiority of functional notation vs operator notation once for all

this is because, when i read, John Baez's post here

Zamolodchikov Tetrahedron Equation By John Baez. @ http://blogs.ams.org/visualinsight/2016/03/15/zamolodchikov-tetrahedron-equation/〕 (also here, more chatty at: https://plus.google.com/117663015413546257905/posts/QCrdfbbMYhZ )

the article title is daunting, and it immediately talks about 4D space and monoidal category and morphism.

but, actually just ignore those jargons. look at the image of braids. It says:

In other words, we can slide a crossing of two strands under a third strand. In topology this is called the third Reidemeister move, one of three basic ways of changing a picture of a knot without changing the topology of the knot.

now that's the beauty of math. Because, all those equations and symbols, are used only, and necessarily, to capture this simple concepts in a precise and efficient way. In the case here, is braids and movements.

but i digress.

what i personally got a omg moment at this point, is that, notice how he said in the Google Plus post:

My blog article explains it, with pictures. But in simple terms, the idea is this. When you think of the commutative law

xy = yx

as a process rather than an equation,

There! “consider communicative law as a process!

Now, that got me thinking. Because, i have thought about this myself. See:

the Nature of Associative Property of Algebra

in which, i realized the nature of associative law, and in general, the kinda nature of context these laws arise. So, i was thinking now, if thinking of it as a process would give me some more enlightenment.

but immediately, the associative law (a⊕b)⊕c == a⊕(b⊕c) don't have a analogous way as a process to turn it into a braid. You just get 3 staight lines.

i need to think about this some other time. Now I need to do something else.

wait, but back to the title. Why is it some ultimate solution of functional notation vs operator?

you need to read this first: What's Function, What's Operator?

because, notation, and syntax, is my obsession. And, basically, i am suddently prompted at this point to think about whether perhaps there's a way so that one of the notation can be eliminated without picking up disadvantages.

my immediate thought is that, perhaps functional notation can be dropped. Certainly not the other way around, because pure functional notation is too cumbersome (lisp is good example. you can't write math, in lisp). So, perhaps, somehow, operator notation is supreme… well but one immediate problem is that in general operators can only be for binary function. That is, 2 args, on the left and right sides. But, actually we could have match-fix notation. (see match-fix explained here Concepts & Confusions of {Prefix, Infix, Postfix, Fully Nested} Notations) But the issue with match fix is that, then we have to have a way to still use function names. That is, we can't device thousands type of brackets. So, in order to still have names, then have XML or lisp-like things… but oh, we back. Ok. Stopping here now.

List of Keylogging Software

Python: Class and Object (updated. made it passable. Never worked with python object. New, learned about python supporting multi-inheritance, and the diamond problem.)

TCP/IP Tutorial for Beginner (updated)

“set value to variable” vs “set variable to value”

which is correct? “set value to variable” vs “set variable to value”

as native speaker, you'd say the first.

Assign a value to a variable is correct. Alternatively, you could say assign a variable a value.

Compare assign and give:

Give a value to a variable vs. give a variable a value

〔from http://english.stackexchange.com/questions/51343/assign-a-variable-to-a-value-or-the-other-way-round

But, there's problem.

when we have x = 4, it's natural that we say give x a value. Or simply, set x to 4, corresponding naturally to x = 4.

The Sad Story of OAuth 2.0 and Open Standards, IETF

Sessions, and Token Based Auth

been a long time i've worked on web app. That's a review about sessions.

exposition on the ridiculousness of Sun Microsystem's official tutorial on java interface, now moved to here: Official Java Tutorial on Interface, the Inanity

What's Interface in Java? new. Now, simple tutorial.

Clojure's Popularity, A Tango with Java

Java Tutorial: Collection, Map. This is especially for Clojure coders who don't know Java. Because clojure doc constantly mention Java stuff.

Iterator, Enumerator, Abstraction Went Wrong

Why Clojure is Dense

clojure Rich Hickey a stateful transducer 2014-09-17
A Stateful Transducer. 〔image source https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/Transducers/00.36.36.jpg

Why Clojure is Dense

Artificial Neural Network is Nasty

Marbel Machine, Mechanical Music Box. any programer must see this.

Clojure Leiningen Tutorial (major rewrite)

Clojure: Function Chaining (major rewrite)

Clojure: Destructure Binding (major rewrite)

clojure's binding form is powerful, but with lots of sugar syntax.

clojure the language is fond of sugar syntaxes. It's like, a situation when one is enamored with icons in user interface. Gradually, you have more and more beautiful icons instead of text/menu, and it's all patently obvious to you what they mean. But to outsiders, it's completely incomprehensible. See for example Clojure: Magic Characters ' \ @ ^ # ` ~ .

in Wolfram Language, Mathematica, there's also lots of syntax, but you can press a button in editor to see the StandardForm. Not so in Clojure. Some of them are special form, some are macro, some of them reader macro, same are just by design (namespace, java access syntax, etc).

See also Formal Definition of Systematic Grammar, and On Constructed Languages, Computer Languages, and Their Grammar Complexity

How Java Package Works. Java: Package Tutorial (major rewrite)

OCAML's Official Tutorial Blatantly Suck

Homotopy Type Theory

Linux: Move File to Trash by Command

Formal Definition of Systematic Grammar

1 xah's edu corner extempore. on what's computation of types?

2 the computation of types, and what's the nature of numerical computation? string computation? symbolic computation?

3 in haskell, ocaml, they have type inference. And it seems, computation of types can become a thing of itself.

4 as primary goal, as in some math proof system.

5 now, what's “computation of types”? what's its nature?

6 of language i know of, perl python ruby JavaScript elisp clojure java golang, only last 2 has types.

7 golang has type inference, but i think nothing close to haskell/ocaml in proof world.

8 so, what exactly is computation of types? if it exist? what's its nature?

9 to understand that, we look at something we know. For example, there's numerical computation, string computation, symbolic computation.

10 numerical computation is like 2+5, or find earth position, matrix, statistics, calculus, civil engineering, physics simulation, …

11 strings computation, or text processing, we also familiar. Any grep, regex, find/replace, report, extraction. We do everyday.

11.5 search engines, in large part, is string computation, text processing.

12 symbolic computation, typically derivative, integration, symbolic solution to equations. e.g. Wolfram Language Mathematica.

13 ok, we intuitively/practically understand numerical, string, symbolic computation. But, how can we explain them in terms of computation?

14 let's look at algorithms. there's algorithm for sort, for implement regex, for solving equation, traveling salesman problem.

14.5 what is THEIR difference? how to characterize their difference?

15 seems, they are simply different “problems”, or “problem domains”.

16 now, what does “problem” mean here? how can we explain it in terms of “computation”?

17 looks like we now need to look into the meaning of “computation”.

18 computation, most of the time have a goal. Human activated computation. e.g. we compute to solve a problem, or a do something, a goal.

19 as opposed to, nature's computation. As in, which rain drop on window will fall first.

19.5 Or, any thing in universe is computation of physical forces or perhaps some quantum. The churning of the universe.

20 so, human activated computation, come with a goal, or problem, to begin with.

21 now, problems comes in many forms, kinds. Math questions, academic questions, but also tasks, counting, processing, sorting.

22 so,if computation is using some machinary to automate some process… but still,how does this explain string/numerical/symbolic computation?

23 seems the question of string/numerical/symbolic computation is similar to asking what's diff of different algorithms, or problems.

24 e.g. what's the diff between, say, problems of algebraic geometry, vs diff equations, vs linear programing? or combinatorics problem?

25 so far, i don't have good answer. So, on the question of nature of the computation of types… i have no answer.

26 maybe you have an answer. suggest away.

for now, enjoy the most beautiful melody in history. Schubert Impromptu in G Flat 📺 http://xahmusic.org/piano/schubert_impromptu_G_flat.html

Unicode Hand Gestures 👍 👎 👌 👊 ✌ 🖕 ✋ ☛

Unicode 7 New Chars

Wolfram Language Slow?

Past Articles by Date