news
Programming Leftovers
-
Simon Späti ☛ Git for Data Applied: Comparing Git-like Tools That Separate Metadata from Data
The key insight from Part 1 was that all these tools separate metadata from data, using techniques like copy-on-write and pointer manipulation. But the devil is in the details. Some tools version entire data lakes, others focus on databases. Some support full merge workflows, others prioritize instant forking. Understanding these trade-offs will help you choose the right solution for your stack.
There will be gaps, and implementations are changing fast, so take it with a grain of salt. But this should give you a good overview of what’s out there, and help you invest more time in the ones that fit your use case best.
Let’s get into it.
-
Sandor Dargo ☛ Accessing inactive union members through char: the aliasing rule you didn't know about
I recently published an article on a new C++26 standard library facility, std::is_within_lifetime. As one of my readers, Andrey, pointed out, one of the examples contains code that seems like undefined behavior. But it’s also taken — almost directly — from the original proposal, so it’s probably not UB. And that’s correct, it’s not undefined behavior.
Let’s first examine the example and the UB suspect, then dive into the fine print of C++ to explain why it’s not what it seems to be.
-
J Kenneth King ☛ Agentultra - Scripting Haskell Applications with Lua
On my regular programming stream I’ve been figuring out how to build a Multi-User Dungeon (or MUD) server in Haskell.
Part of that project is to learn how to embed Lua into Haskell applications. The idea is that the game developer can write their game in Lua and not have to worry about networking, concurrency, databases, caching, simulation, and all of that. They can focus on the game logic and use the provided API to interact with the server, called Bakamud, which is written in Haskell. In your application it might allow users to write plugins the extend existing functionality.
In this post I’m going to share the basics of loading some Lua code, calling some Lua functions in that code, and exporting Haskell functions for Lua code to call.
-
James G ☛ Offline mode
When you visit my website, a service worker is registered. This service worker maintains a cache using the JS Cache API. When the service worker is first registered, a selection of articles I have written are automatically cached. This means that if you only visited my website once or twice, you would still have something to read. My offline page is also cached.
-
Maury ☛ Remove annoying banners (Maurycy's blog)
This is a small javascript snippet that removes most annoying website elements: [...]
-
Matheus Lima ☛ Nobody Gets Promoted for Simplicity
I think there’s something quietly screwing up a lot of engineering teams. In interviews, in promotion packets, in design reviews: the engineer who overbuilds gets a compelling narrative, but the one who ships the simplest thing that works gets… nothing.
This isn’t intentional, of course. Nobody sits down and says, “let’s make sure the people who over-engineer things get promoted!” But that’s what can happen (and it has been, over and over again) when companies evaluate work incorrectly.
-
Shell/Bash/Zsh/Ksh
-
Aman Mittal ☛ Using Ghostty for the first time
Recently, I’ve been hearing a lot about Ghostty, which is a new terminal app in town and is created by Mitchell Hashimoto (co-founder of HashiCorp). Everyone keeps saying it is minimal and fast. You had me at minimal.
-
-
Debian Family
-
Sean Whitton: dgit-as-a-service retrospective
We recently launched tag2upload, aka cloud dgit or dgit-as-a-service. This was something of a culmination of work I’ve been doing since 2016 towards modernising Debian workflows, so I thought I’d write a short personal retrospective.
-
Dirk Eddelbuettel ☛ Dirk Eddelbuettel: tidyCpp 0.0.9 on CRAN: More (forced) Maintenance
Another maintenance release of the tidyCpp package arrived on CRAN this morning. The packages offers a clean C++ layer (as well as one small C++ helper class) on top of the C API for R which aims to make use of this robust (if awkward) C API a little easier and more consistent. See the vignette for motivating
This release follows a similar release in November and had its hand forced by rather abrupt and forced overnight changes in R-devel, this time the removal of
VECTOR_PTRin [this commit]. The release also contains changes accumulated since the last release (including some kindly contritbuted by Ivan) and those are signs that the R Core team can do more coordinated release management when they try a little harder.
-