Xah Programing Blog
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
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
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
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/ ]
- Which Programing Language Has Best Documentation?
- Linux: Bash Manual in Chapters, Using Emacs for Info
- Emacs: Have You Read Emacs Manual?
- Emacs Manual Sucks by Examples
- Problems of Emacs Manual
- Why PDF Sucks
- Why Open Source Documentation is of Low Quality
- Why Python's Documentation Sucks
- Python Doc Problem: os.system
- Reading Programing Language Specs
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:
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.
@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)
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
also, Mathematica has far more advanced MapThread https://reference.wolfram.com/language/ref/MapThread.html
Xah Discord Artwork
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.
- Donald Knuth, Steve Jobs, and the Idiocy of Typography
- The TeX Pestilence (Why TeX/LaTeX Sucks)
- The Moronicities of Typography: Hyphen, Dash, Quotation Marks, Apostrophe
- Meaning of Font Size
- Unicode Punctuations and Symbols • ✓ † ™ ☙
- Font Size problem
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
ditch grep ag ripgrep. Roll your own. (repost) Golang: Find String (grep)
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 𐑕
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
Unix History 2000, Software
xah lee thank you for your money
i want to thank all my patreons and those who donated.
xah lee articles count
10,455 html pages. all my sites.
- minus 1680 pages of emacs and elisp manual.
- minus 337 pages of lojban manual
- minus 218 pages of clojure doc
- minus 74 pages of css2 spec
- minus 40 pages of nodejs doc
- minus 258 pages of a math curve book mirror
- that leaves 7.6k pages i personally wrote, down to every HTML tag.
macOS Karabiner uninstall
sudo chflags -R nouchg Karabiner-Elements.app
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.
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
HTTP Protocol Tutorial
Why Syntax is More Important Than Semantics
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
lol. Just read my tutorial. Python by Example
brace for link spam!
ancient article. year 2001. Still frequently linked from linux sites.
Why LD_LIBRARY_PATH is bad
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
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
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.
- Wolfram Language, Mathematica
- Implementing Mathematica in Golang
- Lambda Logo Tour
- Atom Webfeed Tutorial
- Web Design: Navigation Panel Design Problem
- Computer Language Popularity, 1997 to 2006
- Convert Your code.google.com Project from svn to git
- Git: Using git on Google Code
- Git: Setting Up git on bitbucket
- Git: Setting up git on GitCafe
- Is Linux Usable?
- Job Interview Questions for Senior Linux Sys Admins
- Linux Desktop Comparisons (X11, CDE, KDE, Gnome, Unity, Xfce, etc)
- Linux: Fix Audio Problem, PulseAudio
- Linux: Update Software by Command Line
- Is Linux Desktop Ready for Mom and Pop?
- Linux: Disable Number Lock Key
- Linux Idiocy: Eject USB Drive Warning
- How Find Xfce Version?
- Firefox: Set Mouse Autoscroll, Linux
- Linux: What's Netfilter, iptables, Their Differences?
- Google Says: Put Your Password Plainly in a File: Linux .netrc
- random Linux notes 2012-04-18
- random Linux notes 2012-04-28
- random Linux notes 2012-04-11
- Linux Idiocies Collection
- Linux: xkb Tutorial
- Linux: MongoDB Basics
- Retro-Put Backup Directories to git as Historical Commits
- Unix/Linux Shell Shebang: Who Gets to Use the First Char?
- What's Function, What's Operator?
- Firefox: Set Mouse Wheel Scroll Speed
- What Characters Are Not Allowed in File Names?
- Windows Environment Variables Tutorial
- Mac and Windows File Conversion
- How to Share File Between Mac and Windows
- Share File from Windows to Mac via wifi
- Why I'm Switching from Mac to Windows
- Windows CLSID Explained
- Helicopter Rotor
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
Goodbye side nav bar 2019
this nav bar, is now going away.
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
- Linux: Image Viewers
- Linux: feh Image Viewer Keyboard Shortcuts
- Linux Misc Tutorials
- Linux: Ctrl+s Freeze vim
- Linux: Terminal Control Sequence Keys
- Linux: xterm Font Size, Copy Paste
- Linux: feh Image Viewer Keyboard Shortcuts
- Linux: xterm Font Size, Copy Paste
If you have a question, put $5 at patreon and message me.