news
Programming Leftovers
-
Loris Cro ☛ Asynchrony is not Concurrency
What if I told you we’re missing a term to describe another aspect of concurrent programming and, because of it, we’re all collectively missing a key piece of understanding that has shaped our software ecosystems for the worse?
Well, I spoiled it in the title: the missing term is ‘asynchrony’, but why?
-
Howard Oakley ☛ A brief history of primary coding languages – The Eclectic Light Company
Plenty of great apps have been created using the Mac’s scripting languages, but commercial developers have largely relied on compiled languages used and supported by Apple for app and system development. Over the years those have included Object Pascal, C/C++, Objective-C and most recently Swift. This article provides a brief overview of how those changed.
-
Async I/O on Linux and durability
I've been working on a complex multi-model database for a few weeks now, and recently I took time to simplify and test out an idea I had on a simple key-value database. I started with the basics: A hash table in memory, a simple append-only log for persistence and durability, and the classic fsync() call after every write to the log for durability.
It worked, but wasn't as fast as it could be.
In Kevo, that's the approach I use, but in Klay (not public yet, but will be open sourced when ready), I'm taking a different approach. What would a database look like if you treated the individual sectors on disk as unreliable, and how could you make it as fast as possible?
That's when I started reading about io_uring on Linux here (PDF) and here.
-
Simon Ser ☛ Simon Ser: Status update, July 2025
Hi!
Sway’s patch to add HDR support has finally be merged! It can be enabled via
output <name> hdr on
, and requires the Vulkan renderer (which can be selected viaWLR_RENDERER=vulkan
). Still, lots remains to be done to improve tone mapping and compositing. Help is welcome if you have ideas! -
Go
-
Carlos Becker ☛ Building GoReleaser: from shell script to paid product
By March 2016, almost one year later, I had a dozen Go projects, all of them needed releasing.
So I did the next obvious thing: moved that script into its own repository, and made it “configurable” using flags.
-
Jamie Brandon ☛ Go allocation probe
The profiling tools in go will tell you where allocations happened in the code, but won't record the type of the allocation. I suspected that in the code I was looking at, some specific types were causing a lot of allocation but that those allocations were spread over many locations. So with the help of Matt Knight I wrote perhaps the most appallingly fragile code I have ever written - go_allocation_probe.
-