Xah Programing Blog

syntactic obsession, imperative despisal, unicode love ♥, hacker hate

to my patreon supporters, new article https://www.patreon.com/posts/13809835

golang's choice of tab for indentation

golang's choice of tab for indentation is the correct one. However, emacs golang mode forcing it to be DISPLAYED as 8 spaces, is the most idiotic. It undo the correct thinking.

See also: Programing: Tab vs Space in Source Code

golang is superb

golang is truly a simple superb practical language. + Real functional programing features. And fast! Puts clojure haskell in shame.

despite my supreme love for functional programing, i'd say, clojure is a complex idiocy, on so many levels. And Haskell too.

my golang tutorial is coming in shape.

learn golang in 10 minutes 2017 08 03
learn golang in 10 minutes

See also: Xah Clojure Tutorial

xahlee info site ranking 2017 08 02
xahlee info site ranking

my site ranking, i think that's the highest.

find some sites you know, and let me know what you get. On twitter, Google Plus.

Python 3 Adoption

git detecting dir rename 2017 07 29
git detecting dir rename

See also: Practical git in 1 Hour

programer hieroglyph

gitlab artwork 2017 07 29
beautiful gitlab artwork

〔►see Egyptian Hieroglyph 𓂀

be my first patreon

now i have a patreon account. be my first patreon. see first post at https://www.patreon.com/xahlee

Java: Unicode in Java (minor update)

drawing a maze with Unicode. Unicode Box Lines, Shapes ┌ ┬ ┐

Screenshot Tracking Watermark

xah js sigil color 2017 07 14
my JavaScript TypeScript syntax algebra by sigil. haskell emacs xah-js-mode.el n xah-ts-mode.el

Jargon Lambda in Decline (expanded for the general public.)

What is the difference between emoji, emoticon, pictograph?

Western Propaganda on Chinese Nushu Script

Unicode 10 is released last week.

〔►see Unicode 10 New Characters

New, is the oblete Nushu script, used in China, created and used by women.

On researching this writing system, you find an article from Gardian published in 2005.

The page is gone, but here's screenshot from WayBackMachine.

chinese nushu script Guardian article 2017 06 29
Gardian propaganda on Chinese Nushu script

Note, the word used: forbidden, women, minority, forced arranged marriage.

You see, Guardian spins it so that the now obsolete script appears to be related to suppression and Western gender issues.

Almost all English language news about Chinese are of this nature. They sell what you want to hear, American liberal or conservative. Pretty much, it's about how China doesn't have democracy, that Chinese people want it, and human rights abuse, that it's ancient civilization struggling with modernity, such and such. All very easy to take in and sympathize!

Unicode 10 New Characters

writing system design and culture

When you study world's scripts (writing systems), at first it's fascinating, because it's novel, and you are introduced to many aspects of designing a writing system. But after a while, you find most of them boring, dreary, idiotic. Basically, Random symbols derived from scribbles. There's no math/logic/design/architect value, but just cultural histories.

if you are interested in anthropology or ethnology, then it's a different story.

if you are interested in design/architecture aspect of writing systems, you look up to scifi, math, logic, communication theory, or perhaps neuroscience.

How to Input Unicode

Billionaire Peter Thiel's startup book Zero to One: Notes on Startups, or How to Build the Future

Brown University PLT group has a new lambda logo! (racket scheme lisp, python pyret)

Brown University PLT lambda logo 2017 06 23
Brown University PLT lambda logo, 2017-06-23 http://blog.brownplt.org/

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

Unicode Books, from Version 1 to Version 9

unicode books 37530
i bought and read the v3 one in ~2001, cover to cover. 〔image source https://twitter.com/ken_lunde/status/872532216592584704

See also: Unicode Characters ☯ ⚡ ∑ ♥ 😄

RubyConf 2016 Clojure by Phill MV esr
RubyConf 2016 - To Clojure and back: writing and rewriting in Ruby by Phill MV

in the recent “is clojure dying” crisis, saw this. that's esr. I don't like esr, but this Phil MV is a scumbag in my book.

the worst atrocities in history are done by those who think they are morally superior.

Why Clojure is Dense (repost)

Java Shell Commands: javac java jar javadoc (minor update)

Java: Working with Jar File (minor update)

HISTORY of Java Logo! Xah's Java Logo (added Java mascot Duke)

ImageMagick Tutorial (added how to change transparency/alpha to white)

Java: Unicode in Java (minor update)

Reasonably Programmable Syntax

My thesis introduces typed literal macros (TLMs). TLMs take the tedium out of constructing and pattern matching over composite data structures by allowing library providers to define new type-specific literal forms (think list literals, set literals, HTML literals, regex literals, SQL literals and so on.) These literal forms come equipped with powerful abstract reasoning principles -- clients can reason about program text directly, rather than about the underlying literal expansion, and they need not worry about syntactic conflicts. We are in the process of implementing TLMs in Tidy.

I design programmable front-ends for typed functional programming languages. My goal is to take the tedium out of writing clean, compositional code.

by Cyrus Omar


see also Syntax Algebra

Linux: Traverse Directory: find, xargs (added a screenshot)

PowerShell: List Alias, Find Alias (updated)

Computer Languages Characters Frequency (New code. JavaScript ES2015)

Character Frequency Counter

disqus ad spam 2017 04 30
Disqus ad spam.

disqus, the web site comment add-in, is forcing ads now.

apparantly, chips are down.

The problem is that they deal with spammy ads, lurid sensationalism stuff, like half naked chicks or lose weight fast.

Solution for now is to set it to text-only ads.

Stop Firefox F11 Fullscreen Animation

type “about:config” in url bar. Type “animat” in search box. Click the one.

looking for a real ECMAScript 2015 to ES5 compiler

stackoverflow any real js compiler 2017 04 23

took time to ask a question on stackoverflow. Immediately, it becomes a flame situation, and downvoted by fscking idiots.

i feel like rage quit and delete my stackoverflow account.

Often, you hear hackers extol “standards”. But here, i'm simply asking for a standard compliant JavaScript tool. The programers seem to mob it right away.

The hacker programer idiots, praise standards, but now don't seem to see a double standard, where they embrace enterprise induced baggage in spite of standard.

Is it not a simple question to ask for a JavaScript compiler that compiles ES2015 to ES5?

my question got closed within 1 hour.

stackoverflow any real js compiler 2017 04 23 30af84c1

I wasn't trying to rant. That was a earnest question, after a month of trying TypeScript and Babel, i thought i take time to ask it at the right place, StackOverflow, and get some answers.

What i got, is a bunch of idiots ignorant of ECMAScript spec, then, others perceiving it as rant and downvote it.

The one guy who seem to understand me is Aluan Haddad.

Another guy, estus, is the aggressive scum.

The coding industry is always filled with these idiot priests like the estus, they run the show. That's why it's eternally complex.

The question itself, is interesting. Because, you see there are a lot languages that compile to JavaScript, from golang, clojure, ruby, python, ocaml, CoffeeScript, Dart, Elm, and tens more. In these languages, there's no problem of using ES2015 features. So, you have a interesting situation, why is that these language can compile js 2015 no problem, but when written in JavaScript, it has a problem?

Of course, there isn't any problem. It's just it's not commonly done, due to how js code in the industry works.

That is, most js based js compilers try to maintain some performance similarity of source code and generated code, and or, due to how the industry works using npm and gazillion frameworks and packers, they try to stick to that work flow so that some js 2015 becomes a separate library. Because, when working in industry, your source code is not going to be 100% ES2015 anyway. You already gotta have a gazillion require. So, the compiler writers put some ES2015 object into a separate library, that need require, that way, you have more control.

Of course, that's not how things should be. I'm pretty sure there is a pure js compiler that compiles ES2015 to ES5 js. But those hacker idiots, their heads don't have a brain. is made of idioms of haker news. reflect what they are fed from the usual idioms of hacker news et al, and think they know it all, and tell you what you should do.

Of course, that's not how things should be. I'm pretty sure there is a pure js compiler that compiles ES2015 to ES5 js. But those hacker idiots, their head don't have a brain, they simply reflect what they are fed from the idiom trough of hacker news et al, and think they know it all, and tell you what you should do.

Algorithm should be renamed recipe. Programing language should be renamed recipe language. This will massively increase understanding.

streetfighter video game AI engine, how it works https://sf2platinum.wordpress.com/2017/01/20/the-ai-engine/

Linux: Users and Groups (added screenshot)

Linux: Show Opened Files, lsof (updated)

Linux: Basic Shell Commands (minor update)

Vomits of the Millennial Trifles

Google Plus ghost town 2017 04 15

my fav social network is still google plus. Full post of text or photos of hearts content. No char limit shit. Write properly, or flow sans restraint. None of the artificial limit that narrows one's thoughts and induces vomits of the millennial trifles.

unfortunately, Google Greed fucked it up. 'was the ghost town of forced id. Now it's just ghost town.

i'm tentatively on mastodon, @xahlee@noagendasocial.com at https://noagendasocial.com/

Symbol, Semantics, Design: Unicode for “e.g.” (exempli gratia) (major update, see bottom)

Unicode Approx Equal ≈ vs Tilde ~

xah lee site unicode approx equal replacement 2017 04 13
Replace all Unicode approx equal char back to tilda of my articles. e.g. ≈1986 → ~1986. About 1900 replacements in 766 files.
xah lee site unicode approx equal replacement 2017 04 13 95442
emacs xah-find.el in action. 〔►see Emacs: xah-find.el, Find Replace in Pure Elisp

the diff skills/knowledge of programers can be large, like highschool vs phd. Can't tell on the web. Only way is to see what software he's written.

new idiotic jargon has come onto the scene. IoT=internet of things. Meaning, internet + smart devices + smart cars + all. The term will probably not catch on, or die in a couple of years.

IoT is used by the Ubuntu Linux founder Mark Shuttleworth. Networth £160M.

Printed Citations to Xah Lee Site

nice to find 2016 book still cite Xah Lee.

the best portable backup drive seems to be this.

Buy WD 1TB Black USB 3.0 My Passport Portable External Hard Drive (WDBYNN0010BBK-WESN)

Hacker Archetypes??

esr hacker classification xah lee comment 2017 04 04

Left a comment on esr's blog. This is second one. First one is about 5 years ago.

Hacker Archetypes By Eric Raymond. At http://esr.ibiblio.org/?p=7478

Qi lang home page dead

creator of Qi #lisp and #Shen, Mark Tarver's home page now 404. http://www.lambdassociates.org/ He's the most idiotic guy in marketing. Sad.

see also • Qi Lisp Language LogoWhy Qi Lisp Fails and Clojure Succeeds

Understanding Public-Key Cryptography for Beginner (minor update)

ImageMagick Tutorial (updated. join images vertically or horizontally)

Is Clojure Easier or More Difficult Than Python Ruby Golang?

is clojure easier or more difficult than python ruby golang? Please go to reddit and let your opinion known.


Think Twice Before You Donate to Wikipedia (updated)

Astrology Symbols ☿ ♆ ♋ 🌛 (minor update)

Python: List Modules, Search Path, Loaded Modules (minor update)

Programing Language Popularity 2017

24hours Watch, 00 Start at Top or Bottom? (new page)

((in JavaScript, wrap (every (expression and statement)) with parenthesis), so ((it becomes #lisp), and affords (structured editing).))

there's a tug of war of algorithm efficiency vs recipe (representation) efficiency. The latter is subroutine and bulk of lang features.

when programing, these 2 issues are often confused together, muddied as “idioms”.

python science

Python: Find/Replace Strings on Multiple Files

Xah's Linux Setup (updated)

Unicode Flags 🏁

Linux: Make Scrollbar Always Visible (updated)

The linux folks are idiotic to the extreme. They created a new style of scrollbar that's extremely thin, and light colored, it's almost invisible. And when you try to drag it, you have to aim carefully, over clicking on the window behind it.

Further, they kept changing it over the years. Every year, your fix doesn't work anymore because they changed it.

Knuth's book, The Art of Computer Programming

Knuth's book.

The Art of Computer Programming, Vol. 1: Fundamental Algorithms Buy at amazon

this i read 1 chapter in 1991, didn't understand it. It's one of those widely quoted but rarely read book.

I never liked Knuth's writings.

Concrete Mathematics: A Foundation for Computer Science. Buy at amazon

“Concrete Mathematics”. this i read a few chapters ~1992. Didn't like the writing style.

Knuth's book, volume 4 combinatorial searching and graph+network algorithms, vol5 parsing… doubt will come to life. Even so, it's kinda irrelevant. Era has changed. (Knuth is 79.)

There's already a comprehensive parsing book. Parsing Techniques, Dick Grune, Table of Contents

today, programer moved to Artificial Intelligence stuff.

vast majority don't need to know algorithms, as there's already libraries or builtin in languages. Even for system programing.

sure, there's still a need, but then, it's case-by-case, and there's books on algorithms and Wikipedia and lots specialied papers online.

Knuth's book is still useful, of course, but not as it used to be. (before the internet)

How CPU Works

unicode characters heatmap 2017 03 05
Unicode characters heatmap. 〔 A Programmer's Introduction to Unicode By Nathan Reed. At http://reedbeta.com/blog/programmers-intro-to-unicode/

Excellent article.

For a simpler introduction, see Unicode Basics: What's Character Set, Character Encoding, UTF-8?

For many articles on processing unicode for programers, see Unicode for Programers, Index

to mathematically understand “event” in programing is to model it sans concept of time. The answer is, loop. i.e. event loop

thinking how to model callback within event loop without concept of time. gonna sleep on it.

Etymology of Drum, Disk, Cylinder

consumer drones use 4 rotors design, but not real helicopters. why?

DJI Mavic Pro drone 2017 03 04
DJI Mavic Pro drone Buy at amazon

4-rotor copter is simpler and better stability. I suppose real helicopters don't because to save parking space??

Quora comes to the rescue https://www.quora.com/Why-do-drone-helicopters-have-4-or-more-rotors-while-big-helicopters-usually-have-just-one-for-lift


when you swipe credit card, what exactly happens?

Deep Dive: Payments By Trisha Kotharifollow. At https://tech.affirm.com/deep-dive-payments-60f5d17f6c71

I implemented a credit card processing in perl back in 2000.

Unicode 8 New Characters. released in 2015, but adding it now.

Unicode Clocks 🕑 🕒 🕔 (all unicode pages are updated for Unicode 9)

Unicode APL Symbols (new page, on its own)

Clothing Emoji 👔 👙 👠 (new, on its own page)

Unicode Circled Numbers ① ② ③ (updated for Unicode 9.)

new discovery.

Egyptian Hieroglyph 35048
Egyptian Hieroglyph 𓂀

Food Emoji 🍕 🍒 🍺 updated for Unicode 9.

Unicode Hand Gestures 👍 👌 ✋ updated for Unicode 9.

unicode 9 emoji

Unicode 9 New Characters

it's amazing to discover tangut language.

tangut writing system is artificially created, based on Chinese chars, but far more complex.

it's often the case, that languages's writing system are borrowed, or artificially created. Spoken languages develop naturally, but often don't have a writing system.

Japanese, Korean, Vietnamese, their writing systems are originally borrowed from Chinese, with Japanese still using it.

Persian, Arabic, are both written with Arabic alphabets. Latin alphabets, are used by many European languages.

Download Free Unicode Fonts (updated)

Google Noto Font Emoji Sucks

google noto emoji font 2017 02 24
Google Noto emoji font

Linux is super annoying. there are 10 ways to Set Default App, depending on your distro. Linux: Set Default App

algorithms for drawing mazes

mazes for programmers
Buy at amazon

this book actually teaches you algorithms to draw mazes

The Jargon “Invariant” in Programing Language

Linux: Shell Commands for GUI Apps (updated)

Linux: feh Image Viewer Keyboard Shortcuts (new page)

Linux: Image Viewers (updated)

Linux: How to Install/Remove Packages (updated)

2017 Dell XPS 13 9365 laptop
latest and greatest. very expensive. 2017 Dell XPS 13 9365

Separation of Concerns HTML CSS JS, 2016

separation of concerns html css js 2016
~15 years trying to make everyone separate HTML, JS, CSS. And then suddenly everything went south and we're writing code like this.

This is worth mulling. Need complete analysis. What went wrong? or was it stupid hacker advice to begin with?

linux is so sad. You have a laptop. Run linux, then audio sucks, graphics sucks. Alternative is boot to Windows, let Cortana phone home.

See also: Siri, Cortana, Ok Google, Are the Future of AI, the Embodiment of AI

See also: Cortana Artwork Collection

Rust severely disappoints me By Eric Raymond. At http://esr.ibiblio.org/?p=7294#more-7294


to read. Might be good.

in late 2000s, when functional programing is rising, there are many tutorials saying SQL is a example of functional programing language. loly

and around 1999, when Java+OOP is at its heyday, there are many tutorials/blogs saying having hierarchy is OOP.

The Utility of In-Depth Tutorial? (on its own page)

Edge Cases in Computing, and What Exactly is Whitespace? (on its own page)

On the Rectification of Programing Language Spec by Formal Language (on its own page)

What's the Definition of Operator in Computer Language?

JavaScript's Prototype Inheritance is Convoluted

JavaScript's prototype inheritance, is not a good thing. EXTREMELY convoluted. Maybe in Self it's better.

the JavaScript prototype problem is this. With Java OOP, the inheritance structure corresponds to the syntax a.b.c. With JavaScript , the syntax a.b.c has no correspondence with its inheritance structure whatsoever.

see JavaScript: Prototype and Inheritance

hackers love diddling low level languages

rust lang is very annoying. the lang nerds in my circle's like all falling for it, but no mention of, say, golang.

on first principle, rust should not be liked, because its low level, it makes you diddle, with memory and stuff.

there are 2 directions in comp language, ① high level, math, application lang, ② low level, machine lang, C, assembly, compiler stuff.

programers, the despicable lot, tend to favor the low level stuff. that's why, functional languages are so slow to catch up.

example of low level are, C, C++, rust, Java. Mid is perl, ruby, python, js. high is APL, Matlab, Julia, Wolfram Language, in general math langs.

the highest level lang is Wolfram Language, simple, far powerful than any language on earth, by far. 1 line of Mathematica is 10k lines of haskell, lisp.

most programers, never seen 1 line of math lang in their life. They drivel about compiler, “garbage collection”, “reference”, speed, all day. day and night.

this is also why, we never have a good graphics lang. Instead, we have OpenGL, where it takes 1k lines just to draw a cube.

and, of canvas and svg, the hacker types always prefer canvas. cuz it's “fast”! low level shit.

in my 15 years arguing with hackers, very few understand math level point of view. Particularly idiotic is Common Lisper lot.

lisp is interesting, because, it is rather the 1st highest level math lang. But, today's lispers don't understand none of it.

See also:

play Chinese chess XiangQi vs computer at Play Chinese Chess Online

to play human, goto http://www.playok.com/en/xiangqi/

Google AlphaGo Beats World Champions, 60 to 0

lisp list (linked list) is interesting. if a var is a list, in one sense, it's mutable , but in another, it's immutable.

Unicode: Greek Alphabet α β γ (updated)

new book, basic category theory, by Tom Leinster, free pdf. https://arxiv.org/abs/1612.09375 〔local copy basic_category_theory_by_Tom_Leinster_2016-12-30.pdf

Unicode thousand

unicode search thousand 2016 12 24

Unicode Characters ☯ ⚡ ∑ ♥ 😄

lisp, JavaScript, and formalization of languages

0: when you dig into lisp innards, it's more complex than JavaScript.

1: for example, here's Emacs Lisp Manual on What Is a Function (info "(elisp) What Is a Function")

2: notice they are not exactly types, but roughly as kinds, and note the manual say they are just “important terms”

3: then you look at the description of “macro”, quote “A construct defined in Lisp, …”, then, nowhere is “construct” defined.

4: and for example, there's no mathematical definition, that say with respect to X these are the “kinds” of function. e.g. no well-defined ontology.

5: all these words are lose concepts, no mathematical definition. some has a predicate that return true/false, but not all, and no way to tell which does.

6: in JavaScript spec, you can sort of create a mathematical ontology, i.e. relationships, classification, types, process, of the whole language.

7: these lose concepts, is actually basically all computer languages. Even haskell, does not have such mathematical definition.

is there a programing language, that's actually defined by formalized mathematics?

are any of those math proof assistant langs coq agda isabelle etc formalized?

unicode search box 2016 12 18
Unicode Characters ☯ ☭ ⚡ ∑ ♀ ♂ ♥ 😄

best grep tool is now ripgrep

ripgrep is faster than {grep, ag, git grep, ucg, pt, sift} By Andrew Gallant. At http://blog.burntsushi.net/ripgrep/

ubuntu update failed downloading ttf-mscorefonts-installer

recent ubuntu 16 update failed with installing ttf-mscorefonts-installer. Here's solution:

wget http://httpredir.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb
sudo dpkg -i ttf-mscorefonts-installer_3.6_all.deb

apparently, the installer contained a bad url, and Debian has the fixed version.

when the agreement screen pops up, press Tab and Enter ↵ to say ok.

The AMPERSAND Problem, Semantics, English, and Syntax Algebra!

few years ago, i decide to replace all my writing's “and” to “” FULLWIDTH AMPERSAND.

with the rule that, the left or right hand sides must be single words. That is, “&” has a high precedence, in computing jargon.

For example, you write “just copy & paste the code.” but not “authors are John White & Peter Smith”, cuz the latter is “John (White & Peter) Smith”

But now, i replaced them back to “and”. Ten thousand replacements. Reason: SEO problem, and just too foreign for people.

changing to “and” is easy, but not the other way round, cuz there are 2 diff semantics. Tight conjunction of words, vs sentence adjunction.

e.g. mouse & keyboard, find & replace, Mac & PC, perl & python, this & that, vs “linguistics, logic, and the rectification of English!”.

and it's elegant with one symbol “&”, not 3 chars “a n d”. Saves disk space too to boot!

but why FULLWIDTH AMPERSAND and not the normal AMPERSAND & ? because, the abuse and jam of symbols that in HTML/XML you have to use &.

when the ampersand is used in URL in a html link, it's very complex, very complex.

and if you are writing a tutorial, in HTML, about how to use ampersand in URL in a HTML file, it's complexity raised to complex power.

here's more detail

Mac replacement Buy at amazon

Linux: How to Convert gif to Video (webm, mp4)

Shell, REPL, vs Notebook and Emacs Environment Explained

fundamental diff of math vs comp sci is “what is” vs “how to”

fundamental diff of math vs comp sci is “what is” vs “how to”, and it is theoretically impossible to translate one to the other.

even for simple algorithms, it's difficult to translate it as What IS. (cellular automatic is a hard example) 〔►see Notes on A New Kind of Science

Math vs Programing, What-is vs How-to

linux speaker test. make sound, beep

# linux speaker test
speaker-test -t sine -f 440 -l 1 -p 1000

clojure vs golang

clojure's dependence on java kills it. use golang instead. simpler, equally powerful, 10 times more adoption, no java baggage, faster.

ironically, reason clojure is used in industry is mostly because it depends on java. it's the escape route of existing Java systems.

See also:

Programing Languages Sugar Syntax: Compiler Level vs User Level

python 3 vs JS ES6

python 3 and JavaScript ES6 has totally different fate. py3 is incompatible, few new feature, few adopts. JS ES6 is the opposite, Everyone's eager to use.

if you look at js es6 Grammar, it's extremely complex. I suppose C C++ java etc at the same level of complexity. ECMAScript 2015 §ECMAScript Language: Lexical Grammar#sec-ecmascript-language-lexical-grammar

using libraries increases engineering convenience, but software reliability for user may actually go down

JavaScript Grammar is Not Context-Free Grammar!

Unix Idiots Panel Index. ancient articles, new index.

Perl Idiocy Panel Index. ancient articles, new index.

Microsoft Hatred Panel Index. ancient articles, new index.

Linux: How to Install Font, List Fonts (minor update)

open source hypocrisy

if you are FSF/OpenSource advocate, but uses Mac, iPhone, or work for Google, Apple etc, you are really a hypocrite. matter of fact.

oop and code reuse

a decade ago, the idea that object encourages code reuse is everywhere. now, it's commonly accepted not really. Depends, or OOP decrease code reuse.

Fad in programing is hard to kill. Coding army ten thousand strong call you a troll.

OOP's Jargons and Complexities

Voodoo of Software Engineering

Complexity and Tedium of Software Engineering

On Microsoft Hatred (ancient article, new navigation panel)

Should the Map Function Specify Order?

ban jargon “instance”

Jargons of Software Industry

hacker news yc website idiocy

the hacker news yc is truly idiotic. when in tablet, need a microscope to read. 1990s html, written in a born dead arc lisp.

HTML Style 1999: Hacker News

Unicode Cross ✚ ✝ 🞫 ✠ (new page)

OCaml, Haskell, Syntax came from ISWIM

Been reading ISWIM, most idiotic technical writing. baroque, era dependent, complex grammar structure.

ML, ocaml, haskell syntax came from ISWIM. It is truly unfortunate. Particularly bad is the English “where” clause (like in SQL), and the “off side rule” (like python's indentation), which haskell adopted.

the paper was influential, but the idea of syntax algebra isn't there. So, by missing a aspect, it did long lasting damage. Like Knuth's TeX, or the C++.

for details, see

Open Source is Ceasing to be Cool By Dr Mark Tarver. At http://www.marktarver.com/open.html

Mark Tarver is the creator of Shen lang.

Linux: How to Convert WEBP to JPG

RethinkDB Shutdown, or, how to make money with open source


SageMath on RethinkDB shutdown. how to make money with open source… http://sagemath.blogspot.com/

i fear that some people will never be successful starting a company regardless of plan. You need 1 thing foremost: a greed mentality, advance yourself.

I interviewed with RethinkDB people about 2 years ago. Sad to seem them shutdown. Best wish to them.

Context Dependent Syntax, Lisp setf, Python a[i]=x

new lang, pyret

see bottom Proliferation of Computing Languages

#remove xfce stupid locker
sudo apt purge light-locker
#install classic xscreensaver
sudo apt install xscreensaver


Etymology Execute — the most annoying word in tech writing. When you use it, you connote killing and truth-hiding.

Etymology of Execute

Syntax Soup Kaleidoscope Panel Index

new panel index. Collected essays about computer language's syntax.

Syntax Algebra (on its own page)

hum, new python book, Fluent Python

writing a compiler ain't no easy. So much to learn. Lots theory stuff, very different than common programing such as web dev.

yet, parser and compiler is one of the very first programing problem, and practically solved decades ago. You need it to create a language.

however, for vast majority of programers, you'll never need to learn or know anything about parser/compiler. Simply out of the picture.

LISP, What Does Symbolic Language Mean?

Why is DRM Not Working?

there are software that costs thousands. but it seems, always available on pirate bay. Can anyone explain this? is DRM tech not robust, or technically / inherently impossible, or what?

Am thinking Microsoft Windows, OS X, PhotoShop, Mathematica, AutoCAD. These are big companies, so that should rule out not doing DRM correctly.

can anyone explain the gist? any articles?

suppose i sell software X. I send to you, you install, it generates a id based on your machine. You send me id, i send you key.

In reply to Xah Lee
Gergely Nagy @algernoone
@xah_lee The id check can be patched out. Or the id generation cracked. Its likely automated, so mitm. Among other things.

In reply to Xah Lee
Gergely Nagy @algernoone
@xah_lee Also, if the id is generated after install, you can pirate, upload, etc the uninstalled installer bundle. And others can crack it.


English writing. I've been trying to get rid of e.g. for years, but just never found a way. “for example” is just annoyingly long.

The piracy paradox at Udemy By Troy Hunt. At https://www.troyhunt.com/the-piracy-paradox-at-udemy/


hackers in the 1990s, are interested in literature, linguistics, nerd as walking encyclopedia. Today, i don't seem to see much.

Today's coder gone illiterate? or, perhaps social media and too much info made the real nerd hard to find?

Lisp Panel Index

selected collection of lisp essays.

doc by dummies, Technical writing at its worst

Revamped index. Collected criticism of computer lang docs.

Xah Python Tutorial Accolade

xah python tutorial praise 2016-08-22
Python: Learn Python in 1 Hour

MiniKanren relational language, name origin

MiniKanren relational language. The name “kan ren” came from Japanese 関连, which is Chinese, meaning “relations”. lol

html navigation panel implementation redone

redone navigation panel for all my sites.

2601 files changed.

and the following files created

  1. ./xahlee_info/comp/comp_lang_panel_index.html
  2. ./xahlee_info/comp/tech_panel_index.html
  3. ./xahlee_info/comp/doc_idiocies_panel_index.html
  4. ./xahlee_info/comp/unicode_panel_index.html
  5. ./xahlee_info/comp/jargon_panel_index.html
  6. ./xahlee_info/python/python3_panel_index.html
  7. ./xahlee_info/golang/golang_panel_index.html
  8. ./xahlee_info/Netiquette_dir/netiquette_anthro_panel_index.html
  9. ./xahlee_info/linux/computer_networking_panel_index.html
  10. ./xahlee_info/linux/linux_misc_panel_index.html
  11. ./xahlee_info/linux/git_panel_index.html
  12. ./xahlee_info/linux/linux_keybinding_panel_index.html
  13. ./xahlee_info/linux/linux_panel_index.html
  14. ./xahlee_info/java-a-day/java_panel_index.html
  15. ./xahlee_info/ocaml/ocaml_panel_index.html
  16. ./xahlee_info/UnixResource_dir/writ/netiquette_panel_index.html
  17. ./xahlee_info/UnixResource_dir/writ/anti_hacker_panel_index.html
  18. ./xahlee_info/perl/perl_panel_index.html
  19. ./xahlee_info/clojure/clojure_instaparse_panel_index.html
  20. ./xahlee_info/clojure/clojure_panel_index.html
  21. ./xahlee_info/SpecialPlaneCurves_dir/_curves_robert_yates/curves_yates_panel_index.html
  22. ./xahlee_info/SpecialPlaneCurves_dir/curves_panel_index.html
  23. ./xahlee_info/3d/povray_panel_index.html
  24. ./xahlee_info/js/html_panel_index.html
  25. ./xahlee_info/js/svg_panel_index.html
  26. ./xahlee_info/js/js_panel_index.html
  27. ./xahlee_info/js/dom_panel_index.html
  28. ./xahlee_info/js/css_panel_index.html
  29. ./xahlee_info/ruby/ruby_panel_index.html
  30. ./xahlee_info/perl-python/python_doc_panel_index.html
  31. ./xahlee_info/perl-python/python_panel_index.html
  32. ./xahlee_info/kbd/ergonomic_keyboards_panel_index.html
  33. ./xahlee_info/kbd/keyboard_design_panel_index.html
  34. ./xahlee_info/kbd/keyboard_layout_panel_index.html
  35. ./xahlee_info/kbd/keyboard_history_panel_index.html
  36. ./xahlee_info/kbd/mouse_panel_index.html
  37. ./xahlee_info/kbd/mac_keybinding_panel_index.html
  38. ./xahlee_info/kbd/keyboard_reviews_panel_index.html
  39. ./xahlee_info/kbd/trackball_panel_index.html
  40. ./xahlee_info/kbd/typing_rsi_panel_index.html
  41. ./xahlee_info/mswin/Windows_keybinding_panel_index.html
  42. ./xahlee_info/parser/parser_panel_index.html
  43. ./xahlee_info/powershell/powershell_panel_index.html
  44. ./xahlee_info/php/php_panel_index.html
  45. ./xahlee_org/sex/sex_panel_index.html
  46. ./ergoemacs_org/emacs/emacs_keys_panel_index.html
  47. ./ergoemacs_org/emacs/elisp_panel_index.html
  48. ./ergoemacs_org/emacs/elisp_command_examples_panel_index.html
  49. ./ergoemacs_org/emacs/emacs_modernization_panel_index.html
  50. ./ergoemacs_org/emacs/emacs_panel_index.html
  51. ./ergoemacs_org/emacs/elisp_script_examples_panel_index.html
  52. ./ergoemacs_org/misc/emacs_misc_panel_index.html
  53. ./xahmusic_org/piano/piano_panel_index.html
  54. ./xahmusic_org/music/chinese_songs_panel_index.html
  55. ./xahmusic_org/music/song_panel_index.html
  56. ./wordyenglish_com/arabian_nights/aladdin/aladdin_panel_index.html
  57. ./wordyenglish_com/arabian_nights/arabian_nights_panel_index.html
  58. ./wordyenglish_com/titus/titus_panel_index.html
  59. ./wordyenglish_com/flatland/flatland_panel_index.html
  60. ./wordyenglish_com/lit/lit_panel_index.html
  61. ./wordyenglish_com/lit/accent_panel_index.html
  62. ./wordyenglish_com/flatland_chinese/flatland_chinese_panel_index.html
  63. ./wordyenglish_com/monkey_king/monkey_king_panel_index.html
  64. ./wordyenglish_com/musing/writing_panel_index.html

For example, goto JavaScript in Depth and look at the side panel.

The change shouldn't be visible to user. It's the implementation that changed, for the side panel.

For those curious, here's the deal.

before, each page contains the whole static html side panel. That is, a list of links is duplicated in every file. The problem is, if you want to change the navigation bar, you have to change every file. You also have to make sure that every file's text is exactly the same. And, if one file happens to have a extra space, that causes problem in your find/replace script when you change the side panel.

now, the new implementation, the nav panel is a file by itself, and is embedded in each page as iframe.

The disadvantage using iframe is that each page now needs to make an extra http request. (but it's cached, good if the nav panel contains several images)

on the whole, i think with iframe is much better. The iframe solves a major issue about navigation panel i had, that is, it's not possible to keep the side panel code identical when articles are in different directories. (and the consequence of that is you cannot use find/replace anymore when you want to change side panel.)

here's a sampling, hope it's interesting.

after Shakespeare 〔►see The Tragedy Of Titus Andronicus by Shakespeare〕 , Sir Richard Burton's arabian nights is the most fascinating literature and style i've read.

Read one: Story Of King Shahryar And His Brother, page 1

here's a story of The Arabian Nights, where girls fight to suck… The Arabian Nights: 70. ABU AL-ASWAD AND HIS SLAVE-GIRL

and this is the most wondrous scifi. finish in couple hrs, understand 4th dimension.

best short scifi. FLATLAND: A Romance of Many Dimensions

can finish in few hours. You'll understand 4th dimension. It's also a social philosophy, mock history, and a tragedy.

Weird Unicode Math Symbol: DIFFERENCE BETWEEN

Unicode Math Symbols ∑ ∫ π² ∞

unicode symbol becomes pictograph, a problem

unicode left right arrow becomes pictograph problem
This is annoying. In android, ipad, twitter, LEFT RIGHT ARROW gets rendered as pictograph, but the LEFT RIGHT DOUBLE ARROW not. As of .

Unicode Arrows → ⇒ ⇄ ↻


wow, unicode “U+FE0E: VARIATION SELECTOR-15”. Add that char after another char to select the variation you want.

see https://twitter.com/FakeUnicode/status/766873680366280705

Microsoft release PowerShell on Linux and Open Source!

PowerShell on Linux and Open Source! By Microsoft. At https://blogs.msdn.microsoft.com/powershell/2016/08/18/powershell-on-linux-and-open-source-2/


for a quick tutorial, see PowerShell Tutorial

pure speculation, but i suspect, any math proof related work/software traditionally done with #ocaml or #haskell can be done with golang easily.

in other words, i don't think there's any critical or foundational stuff in OCaml related to theorem proving.

“Propositions as Types” by Philip Wadler

see also

Category Theory for the Working Hacker By Philip Wadler. At https://www.infoq.com/presentations/category-theory-propositions-principle?utm_source=twitter&utm_medium=link&utm_campaign=calendar

why random number is critical in encryption?

yesterday i had a question answered that puzzled me for years. thanks to @johnkitchin @bren_fdez

Q: why random number is critical in encryption?

A: because symmetric cypher is used for payload, and the key is a random number.

understand Public-key Cryptography in 5 minutes Understanding Public-Key Cryptography for Beginner

learn Julia in y minutes. https://learnxinyminutes.com/docs/julia/

functional programers and Golang

i've heard a few functional programers in my circle criticize golang. I think it's more like “it's not my clan” type of thing

i've also heard a few functional programers in my circle loving rustlang. I think it's “i don't want golang to win cuz its from skynet”

golang is fantastic. It's spec The Go Programming Language Specification - The Go Programming Language is shorter than Scheme Lisp now.

the best golang tutorial is https://gobyexample.com/ by @mmcgrana , simple, concrete, by example, no more.

Composable Syntax

line diff and semantic diff

recently there's idea of semantic diff. not line diff. Note that, line diff originates from unix brain damage of line truncation.

actually, the very concept of diff should be ban'd, line or semantic. Am not sure the detail, but a haunch

Jargons of Software Industry

F Sharp's New Logo = Literally Bad Ass

ocaml haskell are not math language, julia is

am beginning to see, ocaml haskell isn't my thing. like C, they are still computer engineer's by-product, not mathematician's thing.

i want a lang that's Wolfram Language in design principle but efficient. A mathematician's lang. I think, Julia is my hope.

what's this math lang i speak of? it's a lang where concepts of computer engineering by-product does not surface in the lang. if so, it's explicit.

are there such lang? yes. APL, Matlab, Wolfram Language, Julia.

whatever relation of ocaml haskell has with math, is only a historical happenstance. As lisp is.

the major concepts of comp engineering by-product are: int float double long reference pointer. They should be ban'd.

one of the most garish by-product of computer engineering in languages is: main()!

you can judge if a computer language is stupid by whether it has the “main”. Surprise of surprise, haskell has it! no wonder.

Do KNOW, that the origin of ocaml is ML, which is from 1973. Ancient. haskell's concepts and demeanors, belongs to the same lineage.

see also A Class of Computer Languages: Math Languages

see also Is Math Important for Programers?

Agile is a cancer that we have to eliminate from the industry. — Erik Meijer

Erik Meijer on Xtreme Programing and Agile

What's Algebraic Data Types?

JuliaCon 2016 (Keynote) | Fortress Features and Lessons Learned | Guy Steele

What's Disjoint Union, Sum Type? (on its own page)

Seymour Papert died, 88. Inventor of non-paren lisp: Logo

Seymour Papert died, 88. Invented “logo”, probably first non-paren lisp. Logo pioneered “turtle graphics”, we see in Scratch and Processing languages today.

I never learned logo, but ~1992 read a lot story about it, fascinated. I was busy doing Mathematica, this Visual Dictionary of Special Plane Curves

particularly interesting about logo is that there's a 3 volumes book 〈Computer Science Logo Style〉 Buy at amazon by Brian Harvey, another lisp pillar.

Brian Harvey is another lisp pillar.

History of OCaml Syntax, and The Next 700 Programming Languages

OCaml Syntax Sucks (heavily expanded, on its own page.)

Xah Programing Blog Archive Index

ohayo — a new type of editor for a new type of Lisp