Xah Programing Blog

Syntactic obsession, imperative despisal, functional love 🩷, hacker hate.
xtodo
xtodo

new articles. pulled out from Programing Language and Its Machine (2024)

mino updates

ok , for prog langs, these i find great:

ok that's it 😊

xtodo
xtodo

updates

xtodo
xtodo
stackoverflow lawsuit ai 2026-04-15 205a7
stackoverflow lawsuit ai 2026-04-15 205a7

it's a bloodbath.

xtodo
Microsoft Windows long path problem 2026-04-16
Microsoft Windows long path problem 2026-04-16
xtodo
xtodo

how to determine if i have long path feature enabled on windows11

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" | Select-Object LongPathsEnabled
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -Type DWord
xtodo
xtodo
xtodo

you can't do math in livestream, because every second, you have many thoughts, each second of thought that flashes thru your mind, takes a minute or more to actually explain.

in livestream, you can only do math that you already know, or solve problems you already family with.

similarly is coding math.

xtodo
python doc json 2026-03-24 258dc
python doc json 2026-03-24 258dc

here's a quick take why the python json module doc is extremely idiotic. https://docs.python.org/3/library/json.html

First paragraph with many links to RFC and ECMA-404 is unnecessary. Move reference links to bottom.

Warning box about reading untrust json is unnecessary, move it bottom.

Third paragraph about β€œjson exposes and marshal and pickle”, is unnecessary. move to bottom.

People check the python json doc, 99% they want to use it. not listen to your pet peeves and steril warnings. fuck python and fuck guido fuckhead. (my opinion only)

4th paragraph says: β€œencoding basic python object hierachies”, is completly motherfucking stilted and pretentious writing. example better is: β€œbasic example of converting python object to json”.

the example, using python interactive command line, is extremely idiotic. hard to read. most coders viewing doc wanna see real code, not interactive prompt. plus they can copy and paste.

etc.

xtodo
ECMA-404 2026-03-24 25826
ECMA-404 2026-03-24 25826
xtodo
grok ai python json 2026-03-24 12648
grok ai python json 2026-03-24 12648
xtodo
xtodo
xtodo
xtodo

YouTube ai answers.

What topics are my viewers watching and talking about?

Based on recent viewer engagement and comments on your channel, Xah Lee, your audience is deeply invested in niche programming paradigms, high-end ergonomic hardware, and your unique, often provocative, takes on tech philosophy.

Here’s a breakdown of what they are watching and talking about:

xtodo

considering remove all official logos on my programing language tutorial pages. reason is, basically, it's copyrighted and must use with consideration. but also, it's common, jaded. if i use a custom artwork, it more stand out, but less recognizable.



xtodo
xtodo
tangent Wolfram 2026-03-05 2aef0
tangent Wolfram 2026-03-05 2aef0
(* example curve: astroid *)
x[t_] := Cos[t]^3
y[t_] := Sin[t]^3

(* point of interest *)
t0 = Ο€/4;

(* position at t0 *)
pt = {x[t0], y[t0]};

(* tangent vector = derivative *)
tangentVec = {x'[t], y'[t]} /. t -> t0 // Simplify;

(* parametric equations of tangent line: point + s * direction *)
tangentLine[s_] := pt + s tangentVec;

(* combine plots *)
Show[
  ParametricPlot[{x[t], y[t]}, {t, 0, 2 Ο€},
    PlotStyle -> Thick,
    PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}},
    AxesLabel -> {"x", "y"},
    PlotLabel -> "Curve + tangent at t = Ο€/4"
  ],

  ParametricPlot[tangentLine[s], {s, -2, 2},
    PlotStyle -> {Red, Thick}
  ],

  Graphics[{Blue, PointSize[0.02], Point[pt]}]
]
xtodo
xtodo
Wolfram language syntax 2026-03-03 34a5a
Wolfram language syntax 2026-03-03 34a5a
{
Sqrt @ x,
x // Cos,
x |-> x+1,
Function[x, 1/x],
Function[1/#],
((1/#) &)
}

(*

Wolfram language doesn't like prefix form f@x or the postfix form x//f.
they get converted to brackets f[x].

the full named function form
Function[x, expr]
remain as is.

but if it involves # as in
Function[#+1]
it get converted to the short form
#+1 &

short form of function (#+1 &) remain as is, but with redundant paren removed.

the function form
x |-> expr
gets converted to Function[x, expr] form.
unless in traditional form they are shown as
x ↦ expr

*)
xtodo
internet tech history 2026-03-02 2e988
internet tech history 2026-03-02 2e988

Here is a chronological list of major communication technologies and platforms in internet/online history, focusing on those that enabled people to communicate, discuss, share, or socialize digitally (roughly from pre-web to modern eras).

I've included approximate introduction years and brief notes on their role/impact.

  • Email (1971) β†’ Ray Tomlinson sent the first network email on ARPANET β†’ Became (and remains) the foundational asynchronous one-to-one / one-to-many communication tool.
  • Mailing lists / Listservs (late 1970s–1980s) β†’ Early automated email-based discussion groups (e.g. Listserv software in 1986 popularized them) β†’ Group communication via broadcast emails, precursor to modern newsletters & discussion lists.
  • Bulletin Board Systems (BBS) (late 1970s–1980s, peak ~1980s) β†’ Dial-up systems (e.g. first in 1978) for message boards, file sharing, and local communities β†’ Early "forums" before widespread internet access.
  • Usenet / Newsgroups (1979–1980) β†’ Decentralized discussion system with threaded newsgroups β†’ One of the first global, many-to-many public discussion platforms (ancestor of web forums & Reddit-style threaded convos).
  • Internet Relay Chat (IRC) (1988) β†’ Real-time text chat in channels β†’ The original instant messaging / group chat protocol, still used today.
  • Early commercial online services (e.g. CompuServe CB Simulator 1980, AOL chat rooms ~1990s) β†’ Proprietary real-time chat and forums β†’ Brought chat & community to mainstream non-academic users.
  • World Wide Web + personal/homepages (1991–1993) β†’ Tim Berners-Lee's WWW β†’ Enabled hyperlinked pages; early static sites often included guestbooks or simple contact forms.
  • Web forums / Message boards (mid-1990s) β†’ WWW-based threaded discussion boards (e.g. early software like WWW Interactive Talk ~1994, then phpBB, vBulletin ~1998–2000) β†’ Replaced Usenet/BBS for most topic-based communities.
  • BBCode (late 1990s) β†’ Simple markup language for formatting posts in forums (introduced ~1998 in phpBB) β†’ Made rich text (bold, quotes, images) easy in web forums without HTML knowledge.
  • Instant Messaging (consumer level) (1996–1997) β†’ ICQ (1996), AOL Instant Messenger (AIM, 1997), MSN Messenger (~1999), Yahoo! Messenger β†’ One-to-one & small group real-time private chat, exploded in late 90s/early 2000s.
  • Weblogs / Blogs (1997–1999) β†’ Term "weblog" coined 1997, Blogger (1999) & Movable Type β†’ Personal publishing + comment sections β†’ Turned readers into participants.
  • Wiki / collaborative editing (1995 first wiki by Ward Cunningham, but Wikipedia 2001) β†’ Editable web pages by anyone β†’ Radical shift to collective knowledge building & discussion via talk pages.
  • Website forums (large-scale) (late 1990s–2000s) β†’ Specialized community sites (e.g. Slashdot 1997, Something Awful, early Reddit-like) β†’ Deep topic-specific discussions.
  • Social network sites / Social media (1997–2000s) β†’ SixDegrees.com (1997) β†’ Friendster (2002) β†’ MySpace (2003) β†’ Facebook (2004) β†’ Twitter/X (2006) β†’ Instagram (2010) etc. β†’ Shift to identity-centered, feed-based, multimedia, real-time social interaction.
  • Modern group chat / messengers (2010s–) β†’ WhatsApp (2009), Discord (2015), Telegram, Slack β†’ Blended real-time chat, voice, communities, file sharing.

This sequence shows the evolution: from one-to-one email β†’ group async (mailing lists, Usenet) β†’ local dial-up communities (BBS) β†’ global real-time text (IRC) β†’ web-based persistent discussions (forums) β†’ personal broadcasting with comments (blogs/wikis) β†’ identity-driven social graphs (social networks) β†’ always-on multimedia group chat.

Many overlapped and co-existed for years (e.g. email + Usenet + IRC in the 1990s, forums + early social media in 2000s). Let me know if you'd like deeper detail on any period or tool!

xtodo

fuck Microsoft Windows

windows settings slow 2026-03-02 22da1
windows settings slow 2026-03-02 22da1
xtodo
xtodo
xtodo
snake case vs camelCase 2026-02-23 349d9
snake case vs camelCase 2026-02-23 349d9

On the Argument of CamelCase vs Snake_Case with Respect to Compactness.

  • a bit complicated.
  • first, on the argument of ease of typing the character.
  • how easy to type should have no influence, for some purity consideration, because how easy to type a keyword letter layout and input system issues, which, we also stuck with shit qwerty, but we can also redesign.
  • but on the other hand, for practical consideration, how easy to type a char has huge influence. it is why in part hyphen became more popular than lowline _.
  • overall, whether it should be considered, i think is undecided.
  • it depends on whether you are thinking we stay with qwerty and traditional ibm pc form keyboard, or, you think for what's best in future, e.g. today's lots ergo batman keyboards with thumb keys.
  • about camelCase is more compact, right.
  • i think that's a point.
  • because often, the meaning of var name is not very significant, we just care for some short unique symbol.
  • For example, the i in for-loop, or the x in lambda.
  • or, some longer name that's used only twice, but very difficult to come up with describe terms what the variable is really logically represents.
  • so, camelCase being short and compact, i think is an argument for it, instead of snake_case. because snake_case_names forces you to intreprete a meaning in the variable name.
  • but, overall, if we consider English language or most western alphabetic languages, that capital letters is a historical happenstance and annoying rather not useful and is super confusing, then, we might do away with the argumentfor camelCase.
xtodo
xtodo
xtodo
xtodo

2022-08-13 removed google ads on xahlee.info

<script data-ad-client="ca-pub-5125343095650532" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
xtodo
xtodo
xtodo
xtodo
xtodo
xtodo

the hackability of a lang is not the same as bad mistakes.

js is the worst lang by a magnitude, because:

xtodo
xtodo

Abstract: We demonstrate how to model the following common programming constructs in terms of an applicative order language similar to LISP:

LAMBDA THE ULTIMATE IMPERATIVE Steele Sussman WnX5x
LAMBDA THE ULTIMATE IMPERATIVE Steele Sussman WnX5x

xtodo

All these names suck. hash table, associative array, map, dictionary.

hash table β†’ sucks because it's incomprehensible, and hash refers to an implementation, not what the thing is.

associative array β†’ is idiotic. because it confuses with math concept of associative. Also, associative here means associating a value with a key, which is idiotic perspective. You might as well call it relational array because it creates a relation of values with keys. Best, is call it keyed array, key indexed array.

map β†’ is not very good, because it confuses with the function β€œmap”, and also the commonly english meaning of map, like street map. (the map in street map, derives from projection in math, which is what math map means, which also just means a function.) we might fix it by calling it β€œmap data structure”, but still, not good, because here the map is confusive with verb, again, just like the function named map.

Dictionary β†’ this is much better, as it is analogous to dictionary. Basically, you lookup an entry, for its value. The bad part is confusion with the actual dictionary as in, Webster English dictionary.

keyed list, keyed collection β†’ i think this is the best. because it is descriptive of exactly what it is.

xtodo
xtodo
xtodo
xtodo
xtodo

Hackernews on Xah Lee. 2022

hacker news on xah lee 2022-04-10 14c42
hacker news on xah lee 2022-04-10 14c42

when you have a compiler that claims to compile JavaScript ES2015 code to JavaScript ES5, but does not support some objects in the ES2015 spec, such as map, set, symbols, then your compiler really isn't complete is it?

Fuck the JavaScript coders and industry idiots. Brainless sucking up to what corp tells them what is.

stackoverflow, last gasp

stackoverflow killed by ai bots 2025-12-30 1430e
stackoverflow killed by ai bots 2025-12-30 1430e

many programing language, their variable name or function name allow only unicode letter characters. (including, go java JavaScript python perl ocaml haskell rust nim)

what is unicode letter? basically, no emoji, no math symbols, no dingbats, no punctuations. only characters that are in alphabet or chinese characters.

this is a major problem because that means you cannot use math operators such as sum βˆ‘ or circle plus βŠ• as function name.

xtodo
xtodo
xtodo
xtodo
xtodo

now that text recognization from image is part of windows 11, i have no use of powertoys anymore.

xtodo
smalltalk 2025-12-22 16842
smalltalk 2025-12-22 16842
xtodo
Windows 11 updates 2025-12-16 1b86a
Windows 11 updates 2025-12-16 1b86a

The Surviving Scheme is Now Guile Scheme Lisp. Replacing Racket Scheme Lisp.

guile scheme 2025-12-09 138f5
guile scheme 2025-12-09 138f5
ShareX history 2025-11-23 18cf6
ShareX history 2025-11-23 18cf6

currently using my biological intelligence to understand 2fa, passkey, authenticator app, Hardware security keys. very complex stuff.

Usually, in programing languages or any computer related stuff, you ask why something is this way, vast majority of experts are unable to answer, they don't know.

There are people who know it, but very rare. Typically they are people who are active at the time certain design or way is formed, and are active participants.

This applies to programing language, protocols, user interface, keyboards, music notation, banking, check, credit card, etc.

xtodo
xtodo
xtodo

today, phone and tablet almost never shutdown or restart. how does the software manage memory leak or system resource usage growing

xtodo
xtodo

updates

grok STDIN size limit 2025-10-25 18d69
grok STDIN size limit 2025-10-25 18d69
xtodo

minor updates and repost


1505 tabs in Firefox, all xah lee site articles.

did massive renaming of article titles in past week, adding a year. so one can get a sense of what year the article is written, historical context.

perhaps a thousand done, maybe 5 thousands to go. lol.

this is for pages that are essay (opinions, blog, commentary, etc.). not suitable for tutorial pages, eg python tutorial, math subjects.

to get the count in firefox, you need to right click a tab, select all, and right click on the close, it'll show count. i asked grok ai.

firefox shoulda have count at top.

xah lee site 1505 tabs Firefox 2025-10-17 23439
xah lee site 1505 tabs Firefox 2025-10-17 23439
xtodo
xtodo
xtodo
do people still use RSS 2025-10-04 1718c
do people still use RSS 2025-10-04 1718c
xtodo
xtodo

updated

xtodo
xtodo
xtodo
html change citation format 2025-09-23 19281
html change citation format 2025-09-23 19281
xtodo
xtodo

updated

xtodo
xtodo
PowerShell show disk size 2025-08-19 20dee
PowerShell show disk size 2025-08-19 20dee

updates

xtodo

For Coders. Tech, Engineers, Emacs, Unicode History, and the Remnant of Elitism in Printing Press Establishments.

Unicode math symbols. Back in 2005. Lots problems.

Today, the problem is solved. Most code fonts have hundreds of unicode math symbols such as arrow β†’. Also, font substitution tech in operating system is mature. It'll find the char in another font. Also, in emacs, you can specify a dedicated font for symbol, emoji, or chinese.

this solves my need.

By the way i think fonts are european idiocy. I think they should all be banned. Just have one for serif, sans, and fixed-width. And ligature should be banned.

Also, there is particular elitism among font or typesetting circle. They are like a cult, and have particular jargons, e.g. Foundry. Am guessing, it's because hundreds years ago they are associated with the powerful establishment of the printing press, the publishing houses, writing (authors, writer's guild, style guides, the whole shebang), like what New York Times was in past decades.

xtodo
xtodo
xtodo

JavaScript toy, for beginning coders.

xtodo

Mac: Show Hidden Files in Finder

⌘ command+Shift+.

xtodo
print( list(( enumerate(["a","b","c"]))))
# [(0, 'a'), (1, 'b'), (2, 'c')]
xtodo

discovered that you can split windows on Microsoft Windows terminal.

xtodo
xtodo
long lines vscode 2025-07-15 162b7
long lines vscode 2025-07-15 162b7

long ass lines. 551k chars.

long lines emacs 2025-07-15 16329
long lines emacs 2025-07-15 16329
xtodo

updated

xtodo
xtodo
xtodo
xtodo
xah hacker news lisp cons 2025-06-22 0fd85
xah hacker news lisp cons 2025-06-22 0fd85
xtodo
Wolfram colors 2025-06-19 18db1
Wolfram colors 2025-06-19 18db1
xtodo
windows shell attrib 2025-06-16 383a9
windows shell attrib 2025-06-16 383a9
windows shell attrib 2025-06-16 383ba
windows shell attrib 2025-06-16 383ba
xtodo
perl data dumper 2025-06-17 143dd
perl data dumper 2025-06-17 143dd

minor updates

misc updates

Summary: Ugly programing languages, protocols, in computing industry, is gonna be with us, forever. Because, it is not a matter of excellence in technical design, but rather, money and corps and power.

If you want better software tech, you need to get rid of corruption in society first.

w3schools js promise 2025-05-24 14ef2
w3schools js promise 2025-05-24 14ef2
xtodo

perl cult

now full Table of Contents.

xtodo
aibot grok compute 2025-04-27 224253
aibot grok compute 2025-04-27 224253
xtodo

Bend Language

bend lang 2025-04-26 2c94a
bend lang 2025-04-26 2c94a

ollama. ai bot install

aibot ollama 2025-04-22 33901
aibot ollama 2025-04-22 33901 https://ollama.com/

xah lee web, ten thousand files, tag for tag

xah web ten thousand 2025-04-22 27ec0
xah web ten thousand 2025-04-22 27ec0
xtodo
xtodo

massive update

xtodo
xtodo

Wolfram language, turning an expression to function.

Wolfram language expr to func 2025-03-30 186b0
Wolfram language expr to func 2025-03-30 186b0

this is is a technique, of turning an expression to function.

useful because usually math functions are expressed as an expression.

For example, to plot a parabola, you write

Plot[{x, x^2}, {x,-2,2}]

instead of

Plot[{ Function[x, x], Function[x, x^2]}, {-2,2}]

however, formally, the formula for parametric plane curves are two functions. so

{ Function[x, x], Function[x, x^2]}

is actually more correct.

more traditionally written as

x = Function[x, x] y = Function[x, x^2]

but traditional math notation does not have a way to represent a anonymous function.

so traditionally its written as:

x = fx y = fy fx(x) = x fy(x) = x^2


in traditional math notation, function definition is usually written as an expression, with indication of which symbol is the function's formal parameter.

Clear[ ff ]
ff[xxpr_, {xvar_, tmin_, tmax_}] := Function[xvar, xxpr]
xtodo

topic or related

xtodo
xtodo

fuck the fsharp, got the indentation disease from python idiots.

fsharp indentation 2025-03-27 171459
fsharp indentation 2025-03-27 171459
xtodo
xtodo
xtodo

massive. the importance of syntax.

Syntax is the most important aspect of a programing language

The quality of a programing language, can be judged by how much of it can be explained by its syntax alone.

xtodo
xtodo
xtodo
xtodo
xtodo

PowerShell Firewall vs Unix Shit

PowerShell 2025-03-09 22609
PowerShell 2025-03-09 22609

PowerShell 2025-03-09 22b87
PowerShell 2025-03-09 22b87
xtodo
xtodo

A Short History of Open Source Movement


Stop The Open Source And Free Software Foundation Skam.


xtodo
xtodo

China AI Bot Deepseek

deepseek tech detail 2025-01-28 111714
deepseek tech detail 2025-01-28 111714

What is this model?

  • Deepseek R1 is a 671B mixture of experts model with "reasoning block" in inference where 37B params are activated on inference.
  • It has 128K context length.

Is this model good?

  • yes, but it's inferior to other top models in some aspects.

Is this model good for everything?

  • no. it's not good for function calling, multi-turn conversations, json output and some other aspects.

What is interesting about this model?

  • Deepseek claims that it tooks significantly less money to train than other top models. You can read the paper about their approach to training model.
  • MIT licensed open weights. It's one of the largest and strongest models with open weights.
  • It's one of the rare models that generates a "reasoning block" in response and trained specifically for it.
xtodo

Programing Language Rant on C

huge updates.

On Open Source Tech, and Their Political Affiliations

powershell 7.5 2025-01-27 200722
powershell 7.5 2025-01-27 200722
xtodo

COMPUTER SCIENCE. What is Term-Rewriting System vs Regular Expression

complete update on Wolfram language string functions.

xtodo

On Wolfram Language Association (aka association list, dictionary, hash table). Major update. Now the association section is complete.


updated my php tutorial from 2007, just a tiny bit.