The reason software engineers do not write blog posts...

...is them working on their blogging software, static site generator and deployment pipelines. And once that is done, it is time to write about all of that and then never publishing another post again. Granted, that joke has been made too many times, but let us be honest… it is not really wrong. I am guilty of that as well, but at least I try to write somewhat regularly.

This does not mean I don’t occasionally enjoy over-engineering my little corner of the Internet. It has been some time since I moved this blog back to Django and overall I have to say I am pretty happy with it. I even toyed around with a few fun things such as adding full text search while sticking to SQLite.

That being said, it is time to get some work done on your favorite blog mostly talking about totally random tech stuff.

I want to keep Django as the content management system. It is pretty easy to iterate and build a really nice editing experience on top of it. I mostly used Django admin but started working on a dedicated UI making things a little bit more pleasant, especially on mobile. I also want to add revisions so I can spot all the things my wife changes when doing an editorial review of a post.

Redirects being handled in the app and not the reverse proxy, article series, proper search, tags, an archive… it is still just a blog, alright? I am pretty happy with the features of the blog for now, except I’d like to have a bit more control over individual post layouts and presentation. This is mostly a limitation of markdown and I am actually considering switching to writing plain HTML. With all the tags you do not have to close anymore it is not much more typing and for things like <p> I will most likely just add a small JavaScript function to replace \n\n with \n\n<p> as I type. That should cover 90 percent of the formatting I have to do on a regular post.

Scrapers and automated attacks picked up a bit lately. The number of requests to ../../../etc/passwd is steadily increasing. While I am pretty comfortable hosting a Django app with a middleware only allowing certain IPs to get to the admin interface I will not complain about reducing the potential attack vector and having one less thing to think about.

So the plan is to have Django dump the whole blog into a JSON export and pushing it to the server where a little long running process picks it up and renders the site and provides all the dynamic functionality, such as search. I might simply push the JSON blob to a public location and trigger a reload, what is the worst that can happen? Someone downloading all of my blog with one request?

Writing a small app like this in Go is fairly straight forward and will be the second step after having Django ready to emit the data. Gomponents really spoiled me and does make me a little sad whenever I have to use a different template engine. Last time I used Go I was not super happy with the libraries available to generate an RSS feed, I will have to see if things got better or if I will put some elbow grease in and write a small lib.

Obviously this will not be the end of all. Once I have a reference implementation I plan to redo the app in Rust. I recently started studying the language a bit more in depth so I can move past "reading comprehension". I still hate the syntax. Allegedly I faced the worst offenders I will never see in the real world… we will see.

But this is project feels small enough in scope to get it done in a reasonable timeframe. I think Tokio is what the cool kids use? No idea how to replace Gomponents. Implementing BM25 for search could be a fun little exercise and allow me to see how testing and benchmarking Rust works.

Progress this week

The calendar server is coming along nicely. I started implementing a few additional features to be fully spec compliant which messed something up along the way, but overall I am getting pretty close. I still need to test the OIDC integration properly, which is always a pain. Luckily I can reuse a test harness of a different project.

For my little file manager things are also looking pretty good. Running it from bash was not an issue at all, running it from my shell broke e to edit a file or directory in neovim. This was a good reminder that I missed setting a process group ID and handing over foreground TTY control. A surprisingly easy fix, Go is really making my life easy here.

posted on Aug. 9, 2026, 7:53 p.m. in lazerbunny, software engineering

I am perpetually a little bit annoyed by the state of software - projects constantly changing, being abandoned or adding features that make no sense for my use case - so I started writing small tools for myself which I use on a daily basis. And it has not only been fun, but also useful. For the rest of the year I will focus on a project I have been thinking about for a few years: Building a useful, personal AI assistant.