Xah Programing Blog

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

Blog Archive

Chess vs Chinese Chess

Great Software for Windows, Mac, Linux

Great Software for Windows, Mac, Linux old article. start to minor update.

User Interface Design: Peepshow Windows

Firefox menu 2020-11-16 9SXwD
Firefox menu 2020-11-16 9SXwD

The milen gen UI faak. You can't discover the key shortcuts for copy paste zoom etc. You got more fuzzy nested menus like “More”, needs more work to use. This began with Google, Chrome.

ID System, Number Base vs Number of Digits

xah talk show molochness clojure 2020-11-14 3gDSX
xah talk show molochness clojure 2020-11-14 3gDSX

Guile scheme lisp, is python a lisp?, JetBrain vs Emacs editor, why clojure java. 2019-08-25

[A History of Clojure By Rich Hickey. At https://download.clojure.org/papers/clojure-hopl-iv-final.pdf ]

local copy clojure-hopl-iv-final.pdf

Linux: Compression How-to: tar gzip bzip2 xz 7zip rar zip
minor update.

comparing QT, GTK, WxWidgets, JavaFX, Electron. [Sad state of cross platform GUI frameworks By Royalsloth. At https://blog.royalsloth.eu/posts/sad-state-of-cross-platform-gui-frameworks/ ]

Microsoft 365 MS word 2020-10-31 Vn9NM
Microsoft word, ribbon interface. 2020-10-31

looks like the menu bar and Alt key is dead these days. pity.

at least, this new ribbon ui, provides both keys and graphical buttons, the latter can be use by pointing device easier than menu, and also more recognizable than menu for reading.

George says: Vista hid menu bars in explorer in 2006, office went to ribbon in 2007, chrome released in 2008, Firefox copied shortly after.

ok, xah dischord Super guy showed me this:

MIX08 Microsoft Office 2007: The Story of the Ribbon (1 of 10)
Jan 11, 2009
libreoffice open source 2020-10-29 gdp4P
libreoffice open source 2020-10-29 gdp4P
libreoffice open source 2020-10-29 7k7jf
libreoffice open source 2020-10-29 7k7jf
libreoffice open source 2020-10-29 xMt2f
libreoffice open source 2020-10-29 xMt2f
Microsoft 365 install 2020-10-29 Y85CD
Microsoft 365 install 2020-10-29 Y85CD
Microsoft 365 2020-10-29 JYGFx
Microsoft 365 2020-10-29 JYGFx

Share File from Windows to Mac via wifi

Best Graphing Calculator

NEVER max window. Lol. Max window was designed when monitors are small. Today, max window has basically 1 use. When u really want to see one thing full screen, such as a movie. Or, use it temporarily, usually no more than a minute, in a toggle. To temporarily see long text sans wrap for logical line clarity. Or, when studying unicode or emoji, zoom in super big, then max window to have a view of the whole.

Why Tiling Window Manager Sucks (xmonad, ratpoison, dwm, etc)

the concept of strategy, tactics, style, are emergent phenomenon in chess/go, they do not really exist.

the concept in chess, especially go, such as tactics, strategy, opening, are not mathematically defined, and, are a emergent phenomenon. They, do not directly relate to the win/lose nature of the game.

whey do only only when the game is completely solved in some strong or weak sense.

so, in traditional teaching of those tactics or view of the game state, often, it has mistakes, but we don't know it.

only someone or comp, who always can beat you, THAT, is the BEST teacher, by absolute definition.

though, often we wish such god can 'explain' the moves, but the problem lies, 'explanation' is not part of the game.

in other words, a more mathematical expression of my view, is that, tactics, strategy, of board games, does not truly exist, except in very simple games such as tic tac toe.

here, the words tactics and strategy, takes on the meaning of absolute heuristics that can always lead to win. in other words, optimal move.

and not local optimal, as by greedy algorithm.

in a similar vein, 'style' of play, such as defensive, attacking style, does not really exist. because, there really is just best move. Style arise due to the fact we do not understand the game.

as example, in alpha zero, it has played moves that consider beginner mistakes, no pro go player would play. but, all htese world champions, lost to alpha zero.

same for alpha zero playing against strongest traditional algorithm chess comp 2 years ago. chess comp lost all games.

chess being a less perfect game than go. Most games will result in draw by skilled players.

in go, perhaps one day, when it is completely solved, in weak or strong sense, and we look at the moves, we'll know, that there is only sequence of optimal moves. and the concept of 'style' does not exist.

JavaScript spread operator, its special place in the relation of syntax and semantics

theory of the decade: of the relations of all syntax and their semantics , of a computer language, the javascript spread operator or mathematica's Splice function is special, in that it cannot be defined declaratively.

@jagen a bit hard to explain. and am not sure how to fully express it or if theres actually something. But try to think of redefining the spread operator as a function.

then, try to explain the function or 'define its semantics declaratively as in math'.

another way or context: consider a largely term rewriting system, or symbolic pattern matching, such as Wolfram Lang. (or consider the theoretical def of lang as formal languages). Now, every function or syntax in the lang, can be explained in terms of string replacement. In this case, the splice operator simply removes the outer bracket.

but since most industry lang are not term rewriting system or hard to explain in terms of formal lang, but still, most functions can be explained or declaratively define, in terms of input, output. Now, how to explain the splice operator that way.

another way to put it: the splice operator, or such function, doesn't really have a 'output'.

it is somewhat a in-between step. Unless, we create a new concept, such as something like intangible iterator.

for example in comparison. let's explain the function length(x). It returns the number of element of its argument. So, here, we have a fully independent and declarative explanation/definition of the length function.

remember, the question is not about implementation. NOT about algorithm. The question is specifically that spread operator CANNOT be defined declaratively.

without introducing new concepts or outside of its input.

and therefore, it is special, among the relation of syntax and semantics.

just to give more context or trying to explain what i mean: for example, string functions , can be easily explained declaratively, in terms of its input, and independent of any other complex extraneous concept. Many other functions, such as array/list manipulation functions, too, can be simply explained declaratively via it's input. On the other hand, most actual construct of for-loop, cannot be explained in such a way. it is algorithmic in nature. further, many OOP lang concepts or method or constructs, such as 'new', closure, iterator, cannot be easily explained/defined declaratively. Again, they are algorithmic in nature.

at heart of this discussion, touches on the deep problem of converting algorithm to/from declarative system. A unsolved and i think theoretically undecidable problem, but extremely practical.

Further explanation. One example of algorithmic vs declarative, is GCD, greatest common denominator. we have ancient algorithm, and we have declarative math definition. But, it is not trivial, to convert between them.

and this is why, most programers dunno what they talking about, LITERALLY.

because, theoretically, sometimes it is impossible.

to explain/define algorithm in a declarative way.

and this touches upon Curry-Howard isomorphism.

i find it being special, because it is a operator/function that cannot be explained declaratively.

sans introducing bag of extraneous or complex concepts, or step-by-step things (algorithm)

and as a curious and practical issue for us curious lang lovers for example, suppose we love functional form and don't like operator form much, so, we might want to rewrite our own splice in js as a function. But, we cannot, without actually calling the builtin 3 dots or we have to redefine what array is in JavaScript internal.

the Splice[] in Mathematica has exactly the same issue.

In fact, it is the Splice[] in Mathematica introduced aroud i think 1999, that gave me this thought/problem.

because it cannot be explained 'normally'.

It needs to be explained by diving into internal or such.

Since Mathematica is mostly a term rewriting system, we can simply say its Splice just remove the outer brackets. That goes 1 step, but still, we cannot explain what is the output of such function. Such a function must always be used inside another function.

(and cease to be a function in math or functional programing sense.)

Unless, we introduce a new concept, such as “spliced ‘object’”.

research homework for you :slight_smile: : define a minimal scheme, R4RS, declaratively as a piece of mathematics. All its functions and operators and semantics. Use minimal number of concepts. Nary 1 algorithm.

resort it to a formal language if needs be.

namely, just a set of strings. Nothing else. No cpu, no binary digits, no int, float, 'numbers'.

and nest lambda as church numeral if you need to.

Xah Talk Show 2020-10-03 Dumang Dk6 Keyboard, Idiocy of Typography, emacs, python MapThread

JavaScript coding challenge today. write a python zip https://docs.python.org/3.3/library/functions.html#zip

also, Mathematica has far more advanced MapThread https://reference.wolfram.com/language/ref/MapThread.html

xah thanks runneypo 2020-10-02 x3Ww5
xah thanks runneypo 2020-10-02 Xah Talk Show 2020-09-23 Emacs Lisp Format JavaScript, the Idiocy of Formatting Style Guide

Xah Discord Artwork
major update.

Iosevka font

someone showed me this font today https://typeof.net/Iosevka/

which began my wrath.

Every once in a while, i need to repost this. The complete idiocy of programers with their obsession on font and typography.

actually, if you read Wikipedia Iosevka, it's pretty good.

losevka font is now a fail. I thought it's LOSEVKA, but it is actually IOSEVKA. The fact that it's website uses a version of losevka font that does not distinguish l with I much is a fail. The choice of I for the name's first letter is also a fail. And having a million version of the font is another fail.

Software Skin Cancer

Xah Talk Show vids 2020-09-26 nBKvX
Xah Talk Show vids 2020-09-26

Xah Talk Show 2020-09-23 Emacs Lisp Format JavaScript, the Idiocy of Formatting Style Guide

ditch grep ag ripgrep. Roll your own. (repost) Golang: Find String (grep)

Xah Lee YouTube revenue 2019-09-16 to 2020-09-14 DmHr4
Xah Lee YouTube revenue 2019-09-16 to 2020-09-14

1 year, $419.
The $323, 77% of the revenue , is from superchat. thank you guys.
of that, $200 is from a single guy. and now i don't remember his name

Xah Talk Show 2020-09-10 Programing, Philosophy of Too Many Libraries, Algorithmic Mathematical Art

Unicode APL Symbols

New version of ∑ Xah Code is out. Buy it. Over 3 thousand articles on programing language tutorial, math, keyboard. 3.5 giga bytes. If you bought before, email me to get update.

Parallel Programing Problem: asciify-string

Fundamental Problems of Lisp
old popular article.

Shavian Alphabet 𐑕
minor update

Encrypt/Decrypt ROT13 Cipher

Xah Talk Show 2020-08-10, emacs, braille, python vs ruby vs perl vs emacs lisp


Unicode Braille ⠮
now can convert both ways

Unicode Ligature

Unix History 2000, Software

xah lee thank you for your money

i want to thank all my patreons and those who donated.

xah lee patreon 2020-08-01 7pYgj
xah lee patreon 2020-08-01

xah lee articles count

10,455 html pages. all my sites.

eeunknown kWxXr
xahlee site
eeunknown CYBVb
xah lee sites, 7605 html articles, as of 2020-07-30

macOS Karabiner uninstall

macOS locked app 2020-07-29 6n88V
macOS locked app 2020-07-29

sudo chflags -R nouchg Karabiner-Elements.app

chflags 2020-07-29 mfj4f
chflags 2020-07-29

actually, just open Karabiner preference, and click uninstall. but that also uninstalls the event viewer.

Web Keywords and Taxonomy

came up on xahlee discord chat.

random article, came up on xahlee discord chat.

theres no cloud just someone elses computer-s250
Cloud Computing

return left/right ⮐ ⮑, newline left/right ⮒ ⮓ Unicode Arrows
Unicode Arrows →

Python 2 and Python 3 Difference

One Language to Rule Them All? Or, What Language to Use for Find Replace?

Examples of Quality Documentation in Computing Industry
old article.

HTTP Protocol Tutorial

Why Syntax is More Important Than Semantics

comcast xfinity speed mountain view ca 2020-07-11 dtt6g
comcast xfinity speed mountain view ca 2020-07-11

Feel my power! OMG, this poor sob never tasted such wonder. Been stuck at 25 Mbps for the past 20 years now, my comcast xfinity is finally active.

In usa, 25Mbps is considered fast. Faster than that is considered a luxury. see Usa Internet Speed Map

and here's internet speed growth. Basically, 50% faster per year, since 1990. see Internet Speed Growth Rate

python for dummies 2020-07-11 hmv42
Python All-In-One for Dummies Buy at amazon

lol. Just read my tutorial. Python by Example

brace for link spam!

ancient article. year 2001. Still frequently linked from linux sites.

ancient article. 2002. now, part of history. Is Mac OS X Unix

ancient article. 2010. now, part of history. Mac OS X Changes To Unix

Functional Programming is Easy, and Good for You

remove assignment 2020-06-29 w7cpd
remove assignment [Functional Programming is Easy, and Good for You By Matthias Felleisen. At https://felleisen.org/matthias/Presentations/11GS/gs.pdf ]

why is python popular

python is pop only because circumstantial. and it's mostly because google. twice. once in y2k when google chose it, 2nd time in 2010 with machine learning fad.

Why Python Sucks

Computer Languages Characters Frequency
updated golang

Mac Startup Chime Idiocy

R Melts Brains -- An IR for First-Class Environments and Lazy Effectful Arguments

The R programming language combines a number of features considered hard to analyze and implement efficiently: dynamic typing, reflection, lazy evaluation, vectorized primitive types, first-class closures, and extensive use of native code. Additionally, variable scopes are reified at runtime as first-class environments. The combination of these features renders most static program analysis techniques impractical, and thus, compiler optimizations based on them ineffective. We present our work on PIR, an intermediate representation with explicit support for first-class environments and effectful lazy evaluation. We describe two dataflow analyses on PIR: the first enables reasoning about variables and their environments, and the second infers where arguments are evaluated. Leveraging their results, we show how to elide environment creation and inline functions.

[R Melts Brains -- An IR for First-Class Environments and Lazy Effectful Arguments By Olivier Flückiger, Guido Chari, Jan Ječmen, Ming-Ho Yee, Jakob Hain, Jan Vitek. At https://arxiv.org/abs/1907.05118 ]

Facebook Embedding Tracking Data Inside Photos You Download

history. StackOverflow Gamification

Perl: POD is not Literate Programming

old misc articles. left panel removed. So it's more focused. Not the modern please stay on my site link spam.

Write All If Statement as If Expression

part of Syntax Soup series.

Mac OS X Misc Command Line Tips

following needs review, and nav bar.

Are You Intelligent Enough to Understand HTML5?

Unicode 12 New Characters

Why I'm Switching from Mac to Windows old post. frequently asked. which to use, Windows, Mac, or linux?

Proliferation of Programing Languages
added more logos.

Concepts and Confusions of Prefix, Infix, Postfix and Lisp Notations

mentioned on reddit. but i don't quite get his point. https://www.reddit.com/r/compsci/comments/h9qa9k/a_review_of_concepts_and_confusions_of_prefix/

Programing Language and Its Machine
minor update

Goodbye side nav bar 2019

this nav bar, is now going away.

screenshot 2020-06-12 6yfcd
xah lee site nav bar, began in 2017 or 2018, end life in 2020-06-12

you'll find similar topic list at

Computing and Its People

am making my site design, navigation, simpler.

The Idiocy of Mechanical Sympathy

Programing: Why I Hate C
added a excerpt from C. A. R. Hoare

random articles and minor update

Blog Archive

If you have a question, put $5 at patreon and message me.