news
Programming Leftovers
-
Philip Zucker ☛ SMTLIB as a Compiler IR I
I like SMT solvers. Compilers are cool. What kind of babies can they make?
A design trick that has lead me to interesting places is to abuse the z3py AST more thoroughly than any sane person would do. Z3 already has very reasonable AST for describiing logic, bitvector operations, functions, reals, and integers. But, if you do it right, in addition to just an AST, you also get semantics and a magic solver.
Compilers are nice because they are a pretty well specified problem that is actually useful. Reasoning principles and technology can be applied to make code faster. Bad reasoning can make output code buggy even when the input wasn’t.
There are at least two ways to approach what a compiler IR is: [...]
-
Mat Duggan ☛ matduggan.com/gitbutler-cli-is-really-good/
Almost all the features of git are wasted on me in this flow. Now because this tool serves a million purposes and is designed to operate in a way that almost nobody uses it for, we all pay the complexity price of git and never reap any of the benefits. So instead I keep having to add more aliases to paper over the shortcomings of git.
These are all the aliases I use at least once a week.
-
Jake Howard ☛ Extracting directories into their own repositories
It's been a while since I tried extracting out a directory into another repository - and back then I just got someone else to do it. The process is actually the exact opposite of what you might expect: The idea isn't to have a blank repository and pick over the commits you want, perhaps with a little tweaking. Instead, you start with the entire repository, and rewrite its history so that the bits you don't want go away.
-
Andy Wingo ☛ six thoughts on generating c
So I work in compilers, which means that I write programs that translate programs to programs. Sometimes you will want to target a language at a higher level than just, like, assembler, and oftentimes C is that language. Generating C is less fraught than writing C by hand, as the generator can often avoid the undefined-behavior pitfalls that one has to be so careful about when writing C by hand. Still, I have found some patterns that help me get good results.
Today’s note is a quick summary of things that work for me. I won’t be so vain as to call them “best practices”, but they are my practices, and you can have them too if you like.
-
Abhinav Omprakash ☛ I Am Happier Writing Code by Hand
I felt the familiar feeling of depression and lethargy creep in while my eyes darted from watching claude-code work and my phone. “What’s the point of it all?” I thought, LLMs can generate decent-ish and correct-ish looking code while I have more time to do what? doomscroll? This was the third time I gave claude-code a try. I felt the same feelings every single time and ended up deleting claude-code after 2-3 weeks, and whaddyouknow? Every. Single. Time. I rediscovered the joy of coding.
Yes, coding is not software engineering, but for me, it is a fun and essential part of it. In order to be effective at software engineering, you must be familiar with the problem space, and this requires thinking and wrestling with the problem. You can’t truly know the pain of using an API by just reading its documentation or implementation. You have to use it to experience it. The act of writing code, despite being slower, was a way for me to wrestle with the problem space, a way for me to find out that my initial ideas didn’t work, a way for thinking. Vibe coding interfered with that.
-
QFuture ❤️ C++ coroutines
Ever since C++20 introduced coroutine support, I was wondering how this could integrate with Qt. Apparently I wasn’t the only one: before long, QCoro popped up. A really cool library! But it doesn’t use the existing future and promise types in Qt; instead it introduces its own types and mechanisms to support coroutines. I kept wondering why no-one just made QFuture and QPromise compatible – it would certainly be a more lightweight wrapper then.
-
Perl / Raku
-
Rakulang ☛ Rakudo (Rakulang) Weekly 2026.06 CÔD YN GYMRAEG
YSGRIFENNU CÔD YN GYMRAEG Part of traveling the world as an Anglophone involves the uncomfortable realization that everyone else is better at learning your language than people like you are at learning theirs. It’s particularly obvious in the world of programming languages, where English-derived language and syntax rules the roost.
-
PerlMonks ☛ Perl client for Open States API
But yesterday I published WebService::OpenStates, a Perl client for the Plural Open States API that provides some of the same information Google did, and Contact My Reps is back up and running again!
-
-
Python
-
University of Toronto ☛ A fun Python puzzle with circular imports
I encourage you to guess which of the options in the original post is the actual behavior before you read the rest of this entry.
-
-
R / R-Script
-
Rlang ☛ Introducing flownet: Efficient Transport Modeling in R
I am excited to introduce a new R package called flownet providing high-performance tools for transport modeling—network processing, route enumeration, and traffic assignment in R.
-
Rlang ☛ smooth v4.4.0
First, I have worked on tuning the initialisation in adam() in case of backcasting, and improved the msdecompose() function a bit to get more robust results. This was necessary to make sure that when the smoothing parameters are close to zero, initial values would still make sense. This is already in adam (use smoother="global" to test), but will become the default behaviour in the next version of the package, when we iron everything out. This is all a part of a larger work with Kandrika Pritularga on a paper about the initialisation of dynamic models.
-
-
Rust
-
Niko Matsakis: Hello, Dada!
Following on my Fun with Dada post, this post is going to start teaching Dada. I’m going to keep each post short – basically just what I can write while having my morning coffee.1
-