RSSAmplifier

Blog

Veit's Blog

The RSS feed for Veit's personal blog

blog.veitheller.deRSS feed ↗225 posts

Latest posts

The Creation of Abulafia

In 1988, Umberto Eco published Foucault’s Pendulum. In it, three editors at a Milan publishing house (Belbo, Diotallevi, and Casaubon) spend their working…

A fully legible mind

2027: my coworker asks me why i won’t wear the headset. i briefly consider giving some sort of excuse, but i just sigh and say i’m afraid of the training…

Simple Sudoku Solvers SII, EVI: SQL

Welcome back to another round of Simple Sudoku Solvers! If you are unfamiliar with the series, I suggest you start with the first post or by perusing the…

A More Immediate Intuitive Appeal

Alonzo Church published The Calculi of Lambda-Conversion in 1941. On page 41, weighing up the formalisms that had been proposed for the intuitive notion…

Mid-Training and the Middle-End

Last night I was on a walk, listening to an episode of the Latent Space podcast with Eiso Kant of Poolside AI. At some point he says he has “a not…

Simple Sudoku Solvers SII, EV: Racket/miniKanren

Welcome back to another round of Simple Sudoku Solvers! If you are unfamiliar with the series, I suggest you start with the first post or by perusing the…

Metrics, Life, and Money

I just hit a few weird milestones over the span of three weeks, and I’ve been trying to figure out how I feel about them. Consider this post me rambling…

Simple Sudoku Solvers SII, EIV: Smalltalk

Welcome back to another round of Simple Sudoku Solvers! If you are unfamiliar with the series, I suggest you start with the first post or by perusing the…

Thinking about Legacies

I was listening to Flat Duo Jets today and remembered all the testimonials from musicians about the frontman Dexter Romweber’s special musicality. Jack…

Triptych

I remember reading “Zen and the Art of Motorcycle Maintenance” on a hot summer vacation in Palermo. We stayed in an AirBnB across from the Palazzo Butera…

Generative art over the years

I’ve been making generative art on and off since 2016. It started as a programming exercise and slowly turned into something more personal as I discovered…

Simple Sudoku Solvers SII, EIII: Forth

Welcome back to another round of Simple Sudoku Solvers! If you are unfamiliar with the series, I suggest you start with the first post or by perusing the…

Some notes on on-call

As organizations scale, some of them realize they need an on-call structure. And often, when I watch them get set up, the people doing it seem to believe…

cfg: a simple configuration language

About six years ago, during the early days of lockdown, I wrote a configuration language in one evening. It was March 2020, I had time on my hands, and…

Lisa: Vibecoding a JIT-compiled language with cj

Anthropic recently made headlines when they asked Claude to write a C compiler for them, and it did. At first, this seems incredibly impressive, but…

Simple Sudoku Solvers SII, EII: Carp

Sudoku’s back, baby, and it brought a personal friend. Today we’re going to talk about Carp, a language I used to co-maintain and have recently begun…

Impatient

Turtle ran his flippers through the water. He had flopped onto a big stone such that only his flippers were submerged, and his carapace remained dry—not…

Renormalization, Lite: a powerful toy model

I’ve been reading about renormalization lately. Not the physics kind, though. In 2024, Karl Friston and colleagues published a paper applying the…

Practicing My Security Skill

In my life as a programmer, I’ve always had a side project. Something that interested me and kept me sharp. Conversely, I’ve had a harder time practicing…

A quick apology to Dyalog APL

Today I get to do something that’s exceedingly fun for me: “well, actually” my old self. In this case, I get to post a correction to my recent Dyalog APL…

On Replaceability: Craft, Taste, and AI

I don’t know about you, but lately I’ve been sensing a lot of anxiety about how AI is going to replace us. Software engineers are posting worried takes…

Simple Sudoku Solvers SII, EI: Dyalog APL

Welcome to the first post of the second season of Simple Sudoku Solvers! If you are unfamiliar with the series, I suggest you start with the first post…

My Revenue in 2025

A few weeks back, I asked on the Recurse Center chat whether people would be interested to learn about my financials. A lot of people are interested in…

Scope and Experience

Fair warning: this is about as broad as the range of my posts, so expect a wild flow of ideas across various domains. A bit of feedback I receive a lot in…

Two Hundred

This is my two-hundredth blog post. 9 years running, though the early dates have been lost to time and bugs (my RSS feed insists that we started…

Building a PostgreSQL extension for fun and absolutely no profit

A few months ago, I built my first PostgreSQL extension, pg_ddate. I mostly wanted to learn how PostgreSQL extensions work, and make a simple but…

Seasonal Sudoku

As many of you know I recently concluded a six-part series on Sudoku solvers in which we implemented Sudoku solvers in six different programming…

Some thoughts on performance reviews

I’ve never experienced a company with a completely healthy performance review culture. To be fair, it’s quite likely that my sample size is just skewed…

Scheme Macros X: Meta macros

In this tenth installment of my series on Scheme macros, we will be looking at some meta macros—macros that make the act of writing macros easier and…

Some notes on architecture diagrams

nI look at a lot of architecture diagrams. Most of them are not about systems I personally shepherd, and I have no control over what is presented to me…

Building a small language with cj

In a recent blog post, I unveiled cj, a small, dependency-free JIT compiler framework in C. In theat post, I discussed the idea of implementing a small…

Swimming

“Hey, Koala”, Turtle said, quietly, to the fur ball on his back. Koala’s ears perked up, but she didn’t move, not wanting to wake the two sleeping…

Six Simple Sudoku Solvers VI: Elixir

Welcome to our sixth and latest installment of Six Simple Sudoku Solvers! In case you are new here, this is a series about building six different Sudoku…

cj: Making a minimal, complete JIT

7 years ago, I had an idea for a JIT compiler in C for x86 architectures with a completely auotgenerated backend based on machine-readable information on…

Feedback Sans Sandwiches

Both giving and receiving feedback well are hard skills to learn in business and life. I know I used to struggle with it, and still do, especially with…

Six Simple Sudoku Solvers V: Rust

You know what time it is: puzzlin’ time! In case you are new here, this is a series about building six different Sudoku solvers in six different…

Six Simple Sudoku Solvers IV: Haskell

It is time for Sudoku, once more (we are more than half-way through)! In case you are new here, this is a series about building six different Sudoku…

Some notes on 1:1s

I’ve seen 1:1s (read: one-on-ones, short meetings between a manager and their direct report) in various capacities over the years—I’ve been the report…

Git, self-hosted

During a recent coffee chat, I was talking about a little learning project that I built for myself and my conversation partner asked “Is it online…

Some notes about post-mortems

I like good post-mortems. They are usually informative, cool, and unexpected. Unfortunately, I don’t get to read them very often, because most companies I…

Coffee chats

I’m trying an experiment: open coffee chats with one slot per weekday at 9am Midwestern time (16:00 CEST). Whether you’re wrestling with DD prep…

Six Simple Sudoku Solvers III: Prolog

Welcome back to another Sudoku puzzling sesh! In case you are new here, this is a series about building six different Sudoku solvers in six different…

Secure-by-default over Manuals

My last few posts on SSDLCs, SBOMs, and Threat Modeling showed a clear personal bias that I’m aware of but have never really spoken much about publicly: I…

Six Simple Sudoku Solvers II: Common Lisp

Hello, friend! In case you are new here, this is a series about building six different Sudoku solvers in six different programming languages. Check the…

Scheme Macros IX: Algebraic Data Types

It’s been six and a half years since my last installment in my series on Scheme macros, and I thought it was high time for another one. If you’re new here…

Threat Modeling For the Rest of Us

Threat modeling is weird. Depending on how you approach it, it’s either supremely boring security theater or a fun tabletop game where your team can play…

Six Simple Sudoku Solvers I: Python (Reference)

A few weeks ago, I saw a random post on LinkedIn in which someone showed off a simple Sudoku solver written in C++, and I realized that I’ve never…

What “good” looks like in a data room

In my work as a technical counsel in tech due diligence, I’ve looked at dozens of virtual data rooms (VDRs) in the last couple of years, in a variety of…

Simple SSDLCs

Like with SBOMs, another thing that appeared weirdly frequently in my work this year is the Secure Software (or System) Development Lifecycle (SSDLC)…

PSA: Plausible Analytics, maybe tip jar options?

I’ll make this one quick: I turned on Plausible for this website. Why? I did this for two reasons: firstly, I was curious. I have no idea what gets read…