Goodbye, bit rot

Take a look at this picture: That's a photo of Smalltalk 76 running the prototypical desktop UI. It's taken for granted that this photo will be viewable for the indefinite future (or as long as we keep a PNG viewer around). But when we think about code, maybe the very same Small…
Read more...

Building Mobile Nebula

This post is going to be cheating a bit. I want to start working on adding DNS resolver configuration to the mobile nebula app (if you don’t know nebula, check it out, it’s well worth knowing about), but I also need to write a blog post for this week, so I’m combining the two exe…
Read more...

Goodbye, Github Pages

Slowly but surely I’m working on moving my digital life back to being self-hosted, and this blog was an easy low-hanging fruit to tackle. Previously the blog was hosted on Github Pages, which was easy enough but also in many ways restricting. By self-hosting I’m able to have a lo…
Read more...

The Web

With the recent crisis in the US’s democratic process, there’s been much abuzz in the world about social media’s undoubted role in the whole debacle. The extent to which the algorithms of Facebook, Twitter, Youtube, TikTok, etc, have played a role in the radicalization of large s…
Read more...

Ginger

This post is about a programming language that’s been bouncing around in my head for a long time. I’ve tried to actually implement the language three or more times now, but everytime I get stuck or run out of steam. It doesn’t help that everytime I try again the form of the langu…
Read more...

Component-Oriented Programming

A previous post in this blog focused on a framework developed to make designing component-based programs easier. In retrospect, the proposed pattern/framework was over-engineered. This post attempts to present the same ideas in a more distilled form, as a simple programming patte…
Read more...

Visualization 3

This visualization is built from the ground up. On every frame a random set of pixels is chosen. Each chosen pixel calculates the average of its color and the color of a random neighbor. Some random color drift is added in as well. It replaces its own color with that calculated …
Read more...

Nix and small containers with Docker multi-stage builds

Multi Stage builds are great for minimizing the size of your container. The general idea is you have a stage as your builder and another stage as your product. This allows you to have a full development and build container while still having a lean production container. The produ…
Read more...

Trading in the Rain

For each pair listed below, live trade data will be pulled down from the Cryptowat.ch Websocket API and used to generate musical rain drops. The price of each trade determines both the musical note and position of the rain drop on the screen, while the volu…
Read more...

From C to Rust to C again. Or: Re-exporting C exports in Rust

The only difference between being a grown up and being a kid, in my experience, is as a grown up, you have much fewer people who are willing to play the game telephone with you. Luckily for me, I have access to a computer, a C compiler, and a Rust compiler. Let me show you how I …
Read more...