news
Programming Leftovers
-
Undeadly ☛ Game of Trees 0.124 released
The GotHub OpenBSD mirror mentioned in our report on the previous GoT release is now linked from the OpenBSD main page.
-
Andrew Nesbitt ☛ Common Package Specification
The Common Package Specification went stable in CMake 4.3 last year and the name caught my attention because it sounds like it might be addressing the cross-ecosystem dependency problem I’ve written about before. Reading the spec, the “common” turns out to mean common across build systems rather than common across language ecosystems: it’s a JSON format that CMake and Meson and autotools can all read to find out where an installed library lives and how to link against it, replacing the mix of .pc files and *Config.cmake scripts that currently fill that role.
-
Alex Gaynor ☛ If it could have, why didn't it?
However, focusing on the strongest version of the claim, we still have a pair of problems: false positives and sensitivity.
-
MaskRay ☛ Recent lld/ELF performance improvements
Since the LLVM 22 branch was cut, I've landed patches that parallelize more link phases and cut task-runtime overhead. This post compares current main against lld 22.1, mold, and wild.
Headline: a Release+Asserts clang --gc-sections link is 1.37x as fast as lld 22.1; Chromium debug with --gdb-index is 1.07x as fast. mold and wild are still ahead — the last section explains why.
-
00f ☛ Configuration flags are where software goes to rot
People love configurable software.
They say flexibility is always good. More flags, more knobs, more environment variables, more ways to make the software fit every possible use case.
But in practice, configuration flags are often just a polite way to ship uncertainty.
-
Bryan Cantrill ☛ The peril of laziness lost
Ideally, you would want those that benefit from abstractions to pay the virtue of laziness forward — to use their new-found power to themselves labor on the abstractions they make. But a consequence of the broadening of software creation over the past two decades is it includes more and more people who are unlikely to call themselves programmers — and for whom the virtue of laziness would lose its intended meaning.
Worse, the extraordinary productivity allowed by modern abstractions has given rise to an emphasis on a kind of false industriousness. Pejoratively, this was the rise of the brogrammer, with the virtue of ironic laziness and hammock-driven development displaced by hustle porn about crushing code.
-
Jan Skriver Sørensen ☛ Error banner in shell
Then pop the stash and/or do the fast and furious writing thing. Much later I would discover that I had forgotten the -c option to actually create a new branch, realizing I just messed up another unrelated branch 🤦
Obviously I need something to bring the error exit more to my attention, so I cooked up this little attention functionality
-
Shell/Bash/Zsh/Ksh
-
Christian Hofstede-Kuhn ☛ Replacing Lenovo’s WWAN Unlock Blob with a 100-Line Bash Script
My Lenovo ThinkPad T14s Gen 4 (AMD Ryzen) shipped with an Intel XMM7560 LTE Advanced Pro modem soldered to the mainboard. Useful little thing: real LTE on the go, no tethering dance, no MiFi puck in the bag. The catch: out of the box, the modem refuses to register on the network. ModemManager dutifully detects it, the SIM is recognised, but on my machine AT+CFUN=1 would come back OK while the radio quietly stayed dark.
The reason is something called FCC lock, and the official fix from Lenovo is a package of proprietary helpers and shared libraries. I replaced Lenovo’s proprietary helper with a bash script that performs the same handshake in clear, auditable shell. Here is the why, the how, and the script.
-
HowTo Geek ☛ These 8 useful Bash patterns are hiding in real projects—here's how to use them
Shell scripting is full of secrets and hidden tricks, so it pays to have a few patterns up your sleeve. For inspiration, try these scripts from real projects, including Homebrew, BashBlog, and nvm. By learning from these examples, you can improve your own shell scripts and master new techniques.
-
-
Rust
-
Tony Asleson: Rustbucket
Sorting a terabyte of data in the late 1990s meant serious hardware, serious planning, and probably a serious budget approval process. Today you can do it on a workstation before lunch. I wanted to know how fast, so I wrote rustbucket to find out.
-