Devlog 001

3 min read

This is a general devlog covering what I’ve been up to over the past few months!

Haskell

Hakyll is a Haskell library for generating static websites (yes, you do not, in fact, need Next.js for your personal site).

The previous iteration of my website was written with Go + templ, and it was not static. I wrote everything myself, and it was, quite frankly, a horror to maintain. The templ LSP actually hinders more than it helps, and since I did not statically generate the content, it was kind of slow for a personal website. I did not like it.

I added some very minor CSS fixes and a theme toggle button for my friend’s new website ludwigabap.com, and I saw the light that is Hakyll. :kneel:

So I nerd-sniped myself into rewriting my personal website in Hakyll so that it generates beautiful HTML at build time (it uses Tailwind, too). All the dynamic bits of the website, like my silly stats and coding time, are served from a single Rust Axum server binary on my Hetzner VM that serves other stuff too (Memegrep’s server, among other things).

Nix-pill

This segues into my next nerd-snipe, or rather, my favorite new pill: the Nix pill.

My entire website is built with a single Nix flake, including the Hakyll build step, the Cargo build step, and generating the resulting Docker image. Although, to be honest, the learning curve is very steep and I simply do not have it in me to master this language anytime soon, I like the principles, and it seems to me the least bad build system out there.

I do most of my work on a MacBook running a NixOS VM as well. (seatedro/dotnix on GitHub.) It’s so much nicer to have a real dev workflow versus whatever the fuck macOS is. Sorry, but Homebrew is not good software.

Ember

The reason I started programming was that I was playing a game called Midtown Madness as a wee lad and decided that one day I would build a cool game like that. So, after 15 years, I’ve decided to embark on a small adventure to build a cool physics simulation (and eventually a voxel) engine. It’s written entirely in Zig because I enjoy writing Zig and did not want to touch C++ (although there were times I thought about committing this sin).

When Ember gets far enough, I might write separate devlogs, but with what’s written so far, there isn’t enough to justify one.

I was knee-deep in the mines because I wanted extremely specific features like multi-viewport docking with ImGui, and the off-the-shelf Zig libraries did not want to ship that for some reason. So there were many adventures in getting this shit to compile neatly.

Ember now uses SDL3 for windowing and has an abstract rendering API (rudimentary, but the backends are in place) with SDLRenderer3, OpenGL, and WGPU-native backends that can be neatly switched at comptime.

I’m using a bunch of cool resources to learn more about how to do this because I’ve never really written any game-dev related code before.

I just want to build some cool simulations, and I will get there no matter what.

github / seatedro / ember

Thanatos

After 5 years, I have finally built a new personal computer. I will be running NixOS as my main operating system with Hyprland and Wayland. I will also have Windows installed on a separate drive mainly for video games, though I expect to use Linux more often.

It’s so nice not having to worry about my 256 GB SSD getting filled up on my MacBook Air. :>

Exa

Also, I joined Exa last month to work on the back-end team, and it has been so fun! I am soaking up as much knowledge from my significantly smarter peers at a good pace.

As per custom, I revisited @ludwigABAP’s post: On becoming competitive when joining a new company.

(PS: it’s on a new website.)

Fin

Back to the code cave I go—going to extract the polymorphic.