Ripple: A Game

Movement: Arrow keys or WASD Jump: Space Goal: Jump as many times as possible without touching a ripple! Press Jump To Begin! Your browser doesn't support canvas. At this point in the world that's actually pretty cool, well done! (R)eset Score: 0 c…
Read more...

Backups made simple

I've made a backup system I can be proud of, and I'd like to share it with you today. It follows a philosophy I've been fleshing out called The Functional Infra. Concretely it aims to: Be pure. An output should only be a function of its inputs. Be declarative and reproducible. A…
Read more...

Conditionals in Ginger, Errata

After publishing the last post in the series I walked away from my computer feeling that I was very clever and had made a good post. This was incorrect. To summarize the previous post, it’s not obvious which is the best way to structure conditionals in a graphical programming lan…
Read more...

Conditionals in Ginger

In the last ginger post I covered a broad overview of how I envisioned ginger would work as a language, but there were two areas where I felt there was some uncertainty: conditionals and loops. In this post I will be focusing on conditionals, and going over a couple of options fo…
Read more...

Building gomobile Using Nix

When I last left off with the nebula project I wanted to nix-ify the build process for Cryptic’s mobile_nebula fork. While I’ve made progress on the overall build, one particular bit of it really held me up, so I’m writing about that part here. I’ll finish the full build at a lat…
Read more...

Old Code, New Ideas

About 3 years ago I put a lot of effort into a set of golang packages called mediocre-go-lib. The idea was to create a framework around the ideas I had laid out in this blog post around the structure and composability of programs. What I found in using the framework was that it w…
Read more...

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...