Programming Leftovers
-
Justin Duke ☛ Recursive filter schema
The solution I landed upon is not, I’m sure, a novel one, but googling “recursive filter schema” was unsuccessful and I am really happy with the result so here it is in case you need something like this: [...]
-
Martijn Faassen ☛ Succinct data structures
So what are succinct data structures? If you've taken computer science courses in recent decades you might have, but I didn't run into them before as a programmer, or if I did, I immediately forgot. But now I think they're data structures with fascinating properties.
We all use arrays, and hashmaps 5, and various trees are common too. We don't have to fully understand how they work in order to be able to leverage their properties effectively. Now I found msyelf wondering why people don't use these succinct data structures more often.
So I figured I'd talk a bit about them.
-
Chiark ☛ Git without a forge
I don’t use any git ‘forge’ system layered on top of Git, like Gitlab or Github, which automatically makes a bug tracking database for each project, and provides a convenient button for a user to open a merge request / pull request. I just use plain Git. People can ‘git clone’ my code, and there’s a web-based browsing interface (the basic gitweb) for looking around without having to clone it at all. But that’s all the automated facilities you get.
Occasionally this confuses people, so I thought I should write something about it.
-
Solomon Bothwell ☛ Chat Bots Revisited
A Bot is defined as a sort of variation of a Mealy Machine which produces many monadic results via ListT: [...]
-
[Old] Solomon Bothwell ☛ Lean For Haskell Developers
In my own personal interest I have created this minimal guide for Haskell developers learning Lean. This article is not at all intended to replace any of the much more substantial documentation generated by the Lean community (and listed at the end of this article). Rather, this is just a quick FAQ for common questions a Haskell developer will have when starting to learn Lean. Contributions would be greatly appreciated here.
-
Andy Bell ☛ Tips on extensible and maintainable components
In my first developer job, I worked on the software I had used in a different role at the same company. On my first day, I explained the business need for an extra thousand lines of code to the developer who wrote them.
Learning to maintain and fix a legacy codebase taught me how important it is to instead, practice reading other developer’s code. Knowing the real-world context for the codebase also showed me that career switchers can still benefit from their former career experience. Both of those things showed me how to tell what kind of codebases a developer has worked on just by reading their code.
Developers without much experience fixing and maintaining existing codebases often make short-sighted choices. In this article, I’m going to give you tips to hopefully make your code easier to extend and maintain by questioning every opinion you build into it.
-
The R Graph Gallery ☛ Beautiful Plots with Texts with geomtextpath
The geomtextpath package in R is an extension of the ggplot2 package, designed to simplify the process of adding text in charts, especially when you need the text to follow a curved path.
It offers a set of functions inspired by ggplot2, with the advantage of making it much easier to add text following a (curved) path.
-
Games
-
Godot Engine ☛ Godot XR update - February 2025
New plugin releases for Godot XR.
-
-
Python
-
Simon Willison ☛ Aider: Using uv as an installer
Paul Gauthier has an innovative solution for the challenge of helping end users get a copy of his Aider CLI Python utility installed in an isolated virtual environment without first needing to teach them what an "isolated virtual environment" is.
-
[Old] Aider ☛ Using uv as an installer
Both methods use uv to globally install the aider command line program, with all of its dependencies in an isolated environment. They ensure that aider will run with python 3.12, and install that version if it is not already available.
These uv install methods are especially helpful for aider, because it has a large set of very specific dependencies. Since not all of aider’s dependencies are available on all python versions, it requires python 3.9-3.12.
-
-
Golang
-
Redowan Delowar ☛ Stacked middleware vs embedded delegation in Go
Middleware is usually the go-to pattern in Go HTTP servers for tweaking request behavior. Typically, you wrap your base handler with layers of middleware—one might log every request, while another intercepts specific routes like /special to serve a custom response.
However, I often find the indirections introduced by this pattern a bit hard to read and debug. I recently came across the embedded delegation pattern while browsing the Gin1 repo. Here, I explore both patterns and explain why I usually start with delegation whenever I need to modify HTTP requests in my Go services.
-
-
Rust
-
Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 589
Hello and welcome to another issue of This Week in Rust!
-