news
Programming Leftovers
-
Terence Eden ☛ Some thoughts on personal git hosting
As part of my ongoing (and somewhat futile) efforts to ReDeCentralise, I'm looking at moving my personal projects away from GitHub. I already have accounts with GitLab and CodeBerg - but both of those sites are run by someone else. While they're lovely now, there's nothing stopping them becoming as slow or AI-infested as GitHub.
So I want to host my own Git instance for my personal projects. I'm experimenting with https://git.edent.tel/
It isn't quite self-hosted; I'm paying PikaPod €2/month to deal with the hassle of hosting and updating the software. I get to point my domain name at it which means I can always change the underlying service if I want. For example, it uses Gitea and I might want to switch to Forgejo later.
So far, it works. But there are a few significant drawbacks.
-
Karl Seguin ☛ Everything is a []u8
If you're coming to Zig from a more hand-holding language, one of the things worth exploring is the relationship between the compiler and memory. I think code is the best way to do that, but briefly put into words: the memory that your program uses is all just bytes; it is only the compile-time information (the type system) that gives meaning to and dictates how that memory is used and interpreted. This is meaningful in Zig and other similar languages because developers are allowed to override how the compiler interprets those bytes.
-
SciML ☛ Mixed Precision Linear Solvers and Enhanced BLAS Integration in LinearSolve.jl
LinearSolve.jl has received a major expansion of its solver capabilities over the summer of 2025, with the introduction of comprehensive mixed precision linear solvers and enhanced BLAS library integration. These developments provide significant performance improvements for memory-bandwidth limited problems while expanding hardware support across different platforms.
-
Daniel Lemire ☛ Splitting a long string in lines efficiently
Suppose that you have a long string and you want to insert line breaks every 72 characters. You might need to do this if you need to write a public cryptographic key to a text file.
A simple C function ought to suffice. I use the letter K to indicate the length of the lines. I copy from an input buffer to an output buffer.
-
Steelcake ☛ steelcake
This post goes through how to maximize file IO performance on linux using zig with io_uring.
-
Lawrence Kesteloot ☛ Don't write bugs
I didn’t read the rest of the article because I got stuck on the word “necessary”. Why is that so? Why can’t we just write bug-free programs?
I spent the next two years keeping a log of my bugs, both compile-time errors and run-time errors, and modified my coding to avoid the common ones. I eventually wrote a website called Elements of C Style that captured some of this advice. That site is now unpublished (except for that link) because the advice is too low-level and C-oriented to be useful anymore. Instead I’ve written the posts in this “Programming” section. They’re generally higher-level in scope and they use a more modern language (Java) for examples.
-
Rlang ☛ Step-by-Step Guide to Use RSelenium with Firefox (Linux and Windows)
Because of delays with my scholarship payment, if this post is useful to you I kindly ask a minimal donation on Buy Me a Coffee. It shall be used to continue my Open Source efforts.
-
Rlang ☛ Some Papua New Guinea data doodles by @ellis2013nz
I wrote a review last week of Struggle, reform, boom and bust: an economic history of Papua New Guinea since independence by Stephen Howes and others.
-
Evan Hahn ☛ JS fetch converts string request bodies to UTF-8
In short: when a
fetch
request body is a string, the server will receive UTF-8 bytes.I was recently calling fetch with a string body, like this:
await fetch("/foo", { method: "POST", body: "🍉",
I wondered: what exact bytes would the server receive? Most stuff uses UTF-8 nowadays, but JavaScript uses UTF-16 for its strings. So what would
fetch
send? -
Hubert Figuière ☛ Hubert Figuière: Dev Log August 2025
Some of the stuff I did in August.
More memory leaks fixing.
gudev-rs
Updated gudev-rs to the latest glib-rs, as a requirement to port any code using it to the latest glib-rs.
A minor fix so that it can be used to thumbnail JPEG file extracting the preview.
-
Shell/Bash/Zsh/Ksh
-
Andreas ☛ Pipelines are not sequential
That interpretation is wrong. Pipelines don’t run sequentially, they run concurrently. When the shell encounters a pipeline, it creates a one-way communication channel using the pipe() system call. The shell then forks two child processes, one for each command. One process connects its standard output to the pipe’s write end, and the other connects its standard input to the pipe’s read end.
-
-
Java/Golang
-
Redowan Delowar ☛ Early return and goroutine leak
At work, a common mistake I notice when reviewing candidates’ home assignments is how they wire goroutines to channels and then return early.
The pattern usually looks like this: [...]
-
Nicolas Fränkel ☛ Clean Design, Strong Client: The way of the Elasticsearch's Java SDK
Java has a vast ecosystem of APIs, not all of which are effective or easy to learn. Developing a good API is not trivial: misdesigning key elements, defining simple abstractions, and threading models are among the themes that must be addressed. The official Elasticsearch Java SDK is a project with a design effort that has been made to address these elements.
Recently, this project surprised me, and I tried to examine the design ideas that make it interesting and effective, while also having some inevitable trade-offs to be aware of.
-