news
Programming Leftovers
-
Sophie Koonin ☛ Stop generating, start thinking
As I see more and more people generating code instead of writing it, I find myself wondering why engineers are so ready and willing to do away with one of the good bits of our jobs (coding) and leave themselves with the boring bit (reviews).
-
Andrew Nesbitt ☛ Sandwich Bill of Materials
Modern sandwich construction relies on a complex graph of transitive ingredients sourced from multiple registries (farms, distributors, markets). Consumers have no standardized way to enumerate the components of their lunch, assess ingredient provenance, or verify that their sandwich was assembled from known-good sources. SBOM addresses this by providing a machine-readable format for declaring the full dependency tree of a sandwich, including sub-components, licensing information, and known vulnerabilities.
-
Daniel Lemire ☛ The cost of a function call
A key compiler optimization is ‘inlining’: the compiler takes your function definition and it tries to substitute it at the call location. It is conceptually quite simple. Consider the following example where the function add3 calls the function add.
-
The Return of Algol 68
I was catching up on my backlog of FOSDEM 2026 talks - you know how it goes, the schedule is always packed - when I clicked through to Jose Marchesi's update on the GNU Algol 68
I've been following the development for a while. I knew the frontend had finally landed in the GCC trunk and was slated for the GCC 16 release this coming Spring. I was expecting a solid status report: some details on the test suite, some new compiler flags, a demo of the new automake integration.
-
R / R-Script
-
Dirk Eddelbuettel ☛ Dirk Eddelbuettel: chronometre: A new package (pair) demo for R and Python
R has external pointers, and these make it feasible to instantiate the same object in Python. To demonstrate, I created a pair of (minimal) packages wrapping a lovely (small) class from the excellent spdlog library by Gabi Melman, and more specifically in an adapted-for-R version (to avoid some R CMD check nags) in my RcppSpdlog package. It is essentially a nicer/fancier C++ version of the tic() and tic() timing scheme. When an object is instantiated, it ‘starts the clock’ and when we accessing it later it prints the time elapsed in microsecond resolution. In Modern C++ this takes little more than keeping an internal chrono object.
-
-
Java/Golang
-
Nicolas Fränkel ☛ Rediscovering Java ServiceLoader: Beyond Plugins and Into Capabilities
When you think of Java modularity, chances are your first thoughts land on JPMS, or perhaps on Spring’s flexible configuration model. For those who "experienced" like me, thought can reach OSGI specification or other stacks like Vert-X. Yet long before either, Java offered a minimal yet powerful mechanism for loose coupling: ServiceLoader.
In this article, we’ll explore what ServiceLoader is, how it works under the hood, what its limitations are, and how to use it effectively in a modern Java ecosystem. We’ll also look at pragmatic workarounds for its constraints and see how to integrate it cleanly into a Spring Boot application. Finally, we’ll reframe ServiceLoader as something more interesting than a “plugin system”: a capability discovery and negotiation mechanism.
-
-
Rust
-
Niko Matsakis: Fun With Dada
Waaaaaay back in 2021, I started experimenting with a new programming language I call “Dada”. I’ve been tinkering with it ever since and I just realized that (oh my gosh!) I’ve never written even a single blog post about it! I figured I should fix that. This post will introduce some of the basic concepts of Dada as it is now.
Before you get any ideas, Dada isn’t fit for use. In fact the compiler doesn’t even really work because I keep changing the language before I get it all the way working. Honestly, Dada is more of a “stress relief” valve for me than anything else1 – it’s fun to tinker with a programming language where I don’t have to worry about backwards compatibility, or RFCs, or anything else.
-