Welcome to my blog where I write about things that interest me, stuff that was hard to figure out, and sometimes just to show off. I hope you find something interesting. Below you’ll find my most recent blog posts but you can also explore by tags. Or maybe you’re interested in stuff I’ve built?

Recent Blog Posts

Hugo --cleanDestinationDir and Git Submodules

1 min read

Recently I’ve been working on updating my blog a bit (you might have noticed?). I keep the hugo sources in a git repository and the built site in a separate repository. That repository is added as a submodule to the sources repo and during the build, the generated HTML is written into the submodule. Except the submodule kept getting messed up; git would be unable to track the changes or they’d be added to the parent repository. It was truly maddening, but as it is so often, the problem was not git but me.

Zig Fetch

1 min read

Zig’s package manager is still a bit rough. It only supports fetching tarballs, but many github projects don’t have them unless they have a release. There’s a trick to fetch any commit as a tarball though:

https://api.github.com/repos/<repo-owner>/<repo>/tarball/<ref>

zig fetch can than download the code:

zig fetch --save https://api.github.com/repos/<repo-owner>/<repo>/tarball/<ref>

Once the code is downloaded, it still has to be added to your exe or libray in build.zig:

    const exe = b.addExecutable(.{
        .name = "zlox",
        .root_source_file = b.path("src/main.zig"),
        .target = target,
        .optimize = optimize,
    });

    const my_dep = b.dependency(
      "<name of dependency>", 
      .{ .target = target, .optimize = optimize },
    );
    exe.root_module.addImport("regex", regex_dep.module("regex"));

One Billion Row Challenge in Zig

I finally got around to looking into The One Billion Row Challenge. If you’re unfamiliar, it’s a challenge to how fast a program can read and process one billion rows. It’s fascinating because it’s all about raw performance including algorithms, CPU instructions, and profiling and benchmarking. All things I enjoy dabbling with.

So one Saturday evening I started reading up on the challenge. The first thing that struck me was the top entries’ time: 1.535 seconds! For reference, the input is 13 GB. I can’t even dump the whole file to /dev/null in that short of a time. So clearly, lots to learn.

mkdocs

1 min read

I recently realized the docker container for my toy project books has over 2k downloads so I finally decided to write some proper docs for it. There’s not much to document, but it deserves a nice webpage. Picked up mkdocs because I saw it used by some other projects and I’m positively surprised. You initialize a project and throw some markdown files at it. Then you run build and it gives you a nice webpage for your docs, nothing more, nothing less. Great little tool, highly recommend it.