Xah Programing Blog Archive 2026-01
updates
- didn't stackoverflow, reddit, git etc sued ai companies? who exactly sued and what happened to that lawsuit
- https://x.com/i/grok/share/bd5e21d371e4433b893c07a626ee57fa
it's a bloodbath.
- gosh, how windows sucks.
- you cant have file path longer than 260 chars.
- (folders plus file name)
- https://x.com/xah_lee/status/2044233940236746819
- what is the allowed max file name char count?
- and what is the max length of allowed file full path?
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
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.
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.
- asking grok ai to write a python tutorial for json.
- it creates personalized examples. lol.
- fucking amazing. basically, the grok in twitter learns about you.
- since this year, every thing you ask, it creates personalized answers.
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:
- Programming Languages & Lisp Flavors
- The "Lisp" debate remains a cornerstone of your community's interest. Viewers are actively comparing flavors and debating the merits of Common Lisp, Emacs Lisp, Scheme, and Clojure.
- The "Lisp" Identity: There is significant discussion around whether "modern" languages like Python are "acceptable Lisps" and whether Lisp's failure to unify into a single standard was "catastrophic."
- Wolfram Language: Your sessions on Wolfram Language (specifically during Advent of Code) are popular, with viewers noting its power but also its debugging frustrations.
- Modern vs. Niche: Topics like F#, Julia, and Nim pique curiosity, particularly regarding why they remain niche. comments
- Ergonomic Hardware & The "Keyboard Boss"
- Hardware reviews, particularly for high-end or experimental devices, generate intense engagement.
- Svalboard & Datahand: Your deep dive into the Svalboard has viewers fascinated, with many calling it the "final boss" of split keyboards and asking about technical specifics like typing speed and steno-mode.
- Ergo Comparisons: There is a constant demand for comparisons between the Glove80, UHK 80, and Kinesis Advantage. Viewers are particularly concerned about wrist health and silent switches.
- The "Vibe": Your audience enjoys the contrast between your high-tech ergo setups and your "crusty" Logitech G502 mouse. comments
- Tech Philosophy & "Rants"
- Your critiques of established tech norms are a major draw.
- The "Unix Cult": Your rants against the "Unix philosophy" and Linux "fanatics" are highly polarizing. Some viewers strongly defend the scientific origins of Unix, while others appreciate your "suckless" perspective.
- Coding Syntax: Specific technical critiques, like the "C printf crime" and your "rock-string" syntax proposal, spark deep architectural discussions among your most technical viewers.
- AI & The Future: There is growing chatter about how AI tools like Grok or DeepSeek change the necessity of learning specific language syntaxes by 2026. comments
- Community & Livestreams
- Viewers frequently check in for your next live session, though some express frustration with YouTube's notification system not alerting them when you go live. They also seem to enjoy the "random rants" and personal updates, like your recent haircut! comments
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.
- changed the unicode page icon ∑ Xah Code (XahLee.info)
- omg. i was writing Wolfram language code to plot tangent.
- then i thougt i ask grok.
- it created code and is perfect!
- how to plot tangent of a parametric curve in wolfram
- https://x.com/i/grok/share/91882744ddc8492f862eb5772fd6efcb
(* 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]}] ]
{ 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 *)
- list major communication tech in internet history, in chronogical order, like email, newsgroup, mailing list, bbcode, instant message, wiki, website forum, social network etc
- https://x.com/i/grok/share/023368c83b14412195f7157c00ea5a21
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!
fuck Microsoft Windows
- why is windows settings takes 2 seconds to show
- https://x.com/i/grok/share/84b74dd96982461eaa94909c53c8a9e7
- which is more random, number from pseudo random function, or apply md5 to it.
- https://x.com/i/grok/share/240271cca39c4daa836bf03f8aaf69e5
- which is more random, number from non-cryptic pseudo random function, or md5 apply to current date time and last keystrokes and process id machine id etc.
- https://x.com/i/grok/share/9bd52b296ef9455886ac766f7ca8b361
- sudden relevation.
snake_caseis superior thancamelCase.- this is true in general.
- and in general, CAPITAL aka UPPERCASE, BIGCASE, should be banned.
- they are an abomination from history.
- also, recently, started to adopt the brit
- “Title letter casing convention, of just first word like a sentence.”
- instead of the american
- “Title Convention Letter Casing Each Words Unless the Word is 3 or Less Letters.”
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.
- on Microsoft Windows 11, in settings, why does it take few seconds to show up
- on Microsoft Windows 11, in settings, what's the name e.g. ms-7c51 that shows after my computer name
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>
the hackability of a lang is not the same as bad mistakes.
js is the worst lang by a magnitude, because:
- Designed for non-pro coders (aka html writers, called web monkeys back then.).
- Designed and written in ten days. (typeof null is object is best example here.)
- Designed based on scheme lisp and self, but forced to look and behave like java. (major fuckup)
- lots influence from the perl scam. e.g. sparse array situation.
- LAMBDA THE ULTIMATE IMPERATIVE
- by Guy Lewis Steele Jr. and Gerald Jay Sussman
- 1976-03
Abstract: We demonstrate how to model the following common programming constructs in terms of an applicative order language similar to LISP:
- Simple Recursion
- Iteration
- Compound Statements and Expressions
- GO TO and Assignment
- Continuation-Passing
- Escape Expressions
- Fluid Variables
- Call by Name, Call by Need, and Call by Reference
- On understanding types, data abstraction, and polymorphism
- by Luca Cardelli, Peter Wegner
- December 1985
- Fundamental Concepts in Programming Languages
- by Christopher Strachey
- 1967
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.
- comp lang: Hack of Bitmask as Boolean Parameters (2007)
- comp lang: the Hack of C Printf Format String
- comp lang: Bit Operators Idiocy
- comp lang: Comment Syntax
- comp lang: Should Array Index Start at 0 or 1?
- comp lang: Should Map Function Specify Order
- comp lang: Iterator, Enumerator, Abstraction Went Wrong (2016)
- comp lang: LISP Syntax Problem of Chaining Functions
- comp lang: C Cpp Java Coders Don't Know Scientific Programing Languages (2015)
- comp lang: Interning String, Symbol (2025)
- comp lang: is the Map Function Functional Programing in Syntax or Semantics
- comp lang: Why I Hate Exceptions
- obsession in writing detail.
- which phrase in more popular in programing, iterate thru list or loop thru list
- https://x.com/i/grok/share/5KItRSH8c8ro7NxKgMm4j9AVh
- can LEAN be used as a general purpose programing language like fsharp.
- sadly, no.
- https://x.com/i/grok/share/BGZ8AnmNDTGtYvkbjUNqnZmPq
- compare popularity, Agda Coq idris fstar lean
- https://x.com/i/grok/share/vCzLHOWXqsPUFNShQjHPgZEDR
- lazy eval should be banned. eg haskell, python iterator, JavaScript iterable.
- what are the problems of lazy eval in programming languages.
- https://x.com/i/grok/share/ovhTFBnYHH5dFJYPNSunQHa2p
Hackernews on Xah Lee. 2022
- hackernews on me. 2022
- i got some fairly good vibes.
- hacker news on xah lee, 2022-04-10
- https://news.ycombinator.com/item?id=30976337
- how long does it take to solve each advent of code problem
- https://x.com/i/grok/share/ToX4nVCiDClUk0vR8j80VMiIs
- basically, for average coders, not geared for speed coding competition,
- 1 to 2 hours for easy early day problems.
- 2 to 4 hours for mid difficulty problems,
- more than 4 hours or days for the last days problems.