Links: December 2023 edition
Interesting articles, videos and projects from this time period—with commentary
December draws to a close as does 2023, which means it’s time for yet another monthly links recap.
For context to everyone new around here, what follows is my manual curation of cool articles, videos, and projects I stumbled upon during this time period. But this is not just a dump of links: each link is accompanied by a short commentary that justifies why I thought the material was interesting, why it is relevant to this publication and, more importantly, an attempt to nudge you into reading it.
December has been a slow month though. During the first half, only a handful of articles caught my attention; and during the second half, I’ve been traveling so I haven’t paid much attention to news sites. In any case, there is some good content to enjoy this month. Read on and have a good entry to 2024!
“Wayland Isn’t Going to Save The Linux Desktop”
By dudemanguy on June 10, 2022
Do you know how Wayland works, how it differs from X.org, and how it has some architectural limitations that prevent it from solving some problems that X11 does not have? If not, this one is for you. This article is from 2022 but recently surfaced as a timely rant because Fedora is planning to drop X.org in the upcoming Fedora 40 release.
Things will be… “fun” for some of us soon. In my case, I use Fedora 39 and Wayland recently decided to stop working on my Mac Pro 2013 and fell back to X.org. And on my Surface Go 2, on which I need to use “bounce keys” to prevent repeated input due to some issues with the keyboard, the feature only works with X.org and not Wayland.
“Strings, encodings, NULs and Bazel”
By yours truly on December 3rd, 2023
I came across a random tweet that suggested newcomers to C to represent strings as an array plus a length, without the traditional NUL terminator. The slightly-inflammatory tweet prompted me to write about why doing this is a bad idea and showed an example of the inefficiencies that arise from choosing to go your own way.
“BSD on Windows: Things I wish I knew existed”
By neozeed on December 8th, 2023
Here is a thing from 1995 that I didn’t know existed: a BSD Unix distribution that ran on Windows 3.x. I wonder why this didn’t catch on but the likes of Cygwin did. By the way, this post made me remember DJGPP, a distribution of GCC for DOS, and it’s something I’m considering to analyze and write about in an upcoming article.
“A CLI text editor? In my Windows?”
By yours truly on December 8th, 2023
The Windows Terminal team at Microsoft is considering the addition of a command-line text editor by default in Windows. The thing is: Windows used to ship with one (EDIT.COM
) until they dropped the editor when moving to 64-bit editions… and I’m kinda proposing that they bring something like the old editor back.
“6502 Integer Multiplication - which is best?”
By Toby Nelson
Discovered via a discussion in HN, this is a project that collects more than 120 multiplication algorithms and analyzes their behavior in detail on the 6502 8-bit processor. I barely knew this processor existed before seeing this article so I don’t particularly care for it, but the analysis is just mesmerizing and worth a read.
“Bricked Xmas”
By Will Cooke on December 14th, 2023
An article on how to reverse-engineer Christmas LED lights that use Bluetooth to control the flashing patterns and how this process resulted in the bricking of said lights. The most interesting content in the article is the very foundations of reverse engineering a binary protocol when all you can do is see packets flow through the wire.
“Hard disk LEDs and noisy machines”
By yours truly on December 15th, 2023
While looking at yet another unexplained performance inefficiency that I observed, I wondered how many of these slip through because the machines we have today are “so powerful and quiet” that they absorb such abuse of resources without making a big fuss. I wrote a Twitter thread that explains how useful it was to have flashing LEDs for disk activity and loud fans during heavy CPU load, with a suggestion on what to do these days instead on your silent laptops.
“Swift was always going to be part of the OS”
By Jordan Rose on October 9th, 2022
Using a language as part of an OS poses challenges on how the language and the OS can evolve, if at all, while preserving backwards compatibility. This article explains such difficulties in the context of Swift and justifies the choices that Apple made to allow using Swift for its own frameworks. The same challenges are not unique as they also apply to e.g. .NET in Windows, which Microsoft chose to solve in different ways.
“sudo without a setuid binary or SSH over a UNIX socket”
By Timothée Ravier on December 19th, 2023
Have you ever considered using SSH as a replacement for sudo
by leveraging a Unix socket and file permissions to protect access? I hadn’t, but after reading the title, this interesting solution sounded obvious. There is a lot of nuance though, so make sure to read on.
“Bazel interview at Software Engineering Daily”
By yours truly on December 21st, 2023
Two months ago, Jordi Mon Companys interviewed me about various Bazel topics and the podcast episode finally came out this month. I wrote a detailed summary of the 45-minute recording so that you can know what to expect and where exactly to fast-forward to if you want to skip certain topics.
“Emacs From Scratch, Part 1: Foundations”
By Arne Bahlo on December 22nd, 2023
Doom Emacs is my go-to editor. This Emacs “distribution” is great because its configuration files are trivial to read and edit, but I still feel a bit uncomfortable due to the many abstractions in between those files and the “real Emacs”—particularly when Doom Emacs greets me with “loaded 200 packages” that I know little about. In that regard, this article series seems promising and I might go back to configuring a minimal setup at some point. (The second part is already out at the time of this writing, by the way.)
“Was BASIC that horrible or… better?”
By Ikari on December 18th, 2023
BASIC has received a lot of hatred throughout the years, with Dijkstra claiming “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.” Which, OK, fine. I can see that happening if you look at the original Dartmouth BASIC from the 1970s… but later editions of BASIC included proper flow control to make these criticisms unfounded. Much more on this topic in the referenced article.
“The IDEs we had 30 years ago… and we lost”
By yours truly on December 25th, 2023
My Christmas gift to you all: a tour of the text-based IDEs we had about 30 years ago in DOS land to show how powerful and tiny they were at the time. The article contrasts them with the huge beasts we have nowadays and how they aren’t really that novel. And I write this as a “Unix convert” for many years.
This is one of my most popular articles and further proves that my experiment with the move to Substack is worthwhile to gain an audience. Previous similarly-successful articles in my blog only brought in a handful of new subscribers, but this one has already raked tens in.
“A List of Hacker News’s Undocumented Features and Behaviors”
By Max Woolf
If you are an avid Hacker News user like I am, this living guide is a must read. You’ll learn many of the ways in which content moderation works, a bunch of hidden endpoints, and the kinds of features that karma points enable.
“How x86_64 addresses memory”
By William Woodruff on June 13th, 2020
mov
is the x86 instruction, and this article does a good job at looking at all possible memory addressing modes. The reason this is interesting is because the article also looks at why each addressing mode is useful by mapping it to a C construct that benefits from it.
Thanks for the link to the BASIC article - I was aware Djikstra wasn't talking about Microsoft BASIC or BBC BASIC, but that gave me a lot of context I wasn't aware I was missing. (Even going back to the days of Usenet, 95% of programming language arguments are completely pointless because everyone is talking past each other due to issues like this.)
I've seen that 'Emacs From Scratch' post shared on several sites, which surprised me - it's very opinionated without actually explaining anything. Why use straight.el, for example?