Skip to content

Instantly share code, notes, and snippets.

View bfeitknecht's full-sized avatar
🍋
() :: ()

Basil Feitknecht bfeitknecht

🍋
() :: ()
View GitHub Profile
@bfeitknecht
bfeitknecht / impli.md
Last active March 26, 2026 17:48
`impli`, my beloved

impli, My Beloved

Wow. So many hours spent on this project. Read this blog post for some insight into the process.

A Passion Project Is Born

Here are some words about the start of the whole thing. Initially, I was just intrigued by the idea of capturing the entire syntax description of core IMP in Haskell, just like on the lecture slides. That was pretty easy and fun. Then, I asked AI to write a simple parser. That was really easy too - it was baffling how compactly this could be done with some library support. Finally, I wanted to be able to execute statements parsed into the IR data types. Again, this was quite straightforward. Pretty much just pattern matching on the inference rules from the lecture and implementing them.

From then on, I was hooked. Wanting to add as many extensions as possible forced me to change the state data type frequently. Adding new parse rules was always the easiest part, though. At some point, it occurred to me to also implement small-step semantics. For conveni

@bfeitknecht
bfeitknecht / ysu.md
Last active March 24, 2026 15:18
Yak Shaving Utensils & Co.

Yak Shaving Utensils & Co.

As you might know, I'm very prone to Yak Shaving. Another way to put it is to say that I'm keen to find the optimal solution for doing things. While this may seem pointless to many, I must admit I'm glad to have sunk those hours into it. Sometimes the rabbit holes you're digging turn out to be gold mines.

Time and time again, friends have come to me asking for advice in the terminal, shell, or some inescapable editor. And I'm so very happy to provide them with the helping hand holding the guiding light they need. Because of one hydrophobic principle dear to me,

@bfeitknecht
bfeitknecht / tri.md
Last active March 24, 2026 15:23
Trigraphs

Try Some Trigraphs!

Apparently, in the early days of computers peoples' keyboards were just missing some letters sometimes? So that's why they had trigraphs and digraphs. Character groups that would indicate one of those pesky important letters you couldn't type. Here's an example for demonstration purposes. Notice the multiple returns. This is fine because the comment above the first is an escaped linebreak. So if trigraphs are enabled that doesn't get compiled. Pretty wonky but nonetheless genius. You can compile it with pre-C23 and probably have to pass -trigraphs.

@bfeitknecht
bfeitknecht / gol.md
Last active March 24, 2026 15:27
SVG runs GOL with JS

SVG runs GOL with JS

Conway's Game of Life in SVG

Apparently, scalable vector graphics files can run JavaScript via <script> tags. It probably runs Doom too but I've never implemented Conway's Game of Life so that's what you get instead. You need to download and open in your own browser to see it in action due to security settings from GitHub disabling these tags to run.

@bfeitknecht
bfeitknecht / list.md
Last active March 26, 2026 17:58
My List

Feitk's List

Perhaps you're familiar with Robert A. Heinlein's list.

"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."

Allow me to propose another list for people in computer science. In particular, it should serve to shine a light on all the extremely diverse aspects of this profession and let you develop some sense as to how you fare against the ultimate (so far hypothetical) generalist that has done all of these projects. And I mean really done them, not half-assed or vibe-coded.

@bfeitknecht
bfeitknecht / new.md
Created March 25, 2026 22:26
New Rabbit Holes Await

New Rabbit Holes Await

After having been fully absorbed by the completion of the impli project, I've suddenly gained a gaping hole waiting to be filled with more interesting sidequests. But as the old german adage the torture of a choice goes, I find myself at a crossroads. There's simply too many things I want to do. To track my ideas and progress (hopefully soon), I've jotted down the most central ones here.

  • Declarative cross-platform system with everything from hardware options and GUI customization to packages and their configuration in Nix. Allows me to never have to complain about package managers again and if any one machine ever goes kaput, the whole state can be restored with just one or two commands. In particular the following aspects stand out.
  • Geared out Neovim (by the way) IDE.