I'm experimentally adding a blog to this site. In this post, I'll introduce the blog and discuss some specifics about how the blog and site in general is technically put together.

I used to write a bit on Google+, but it is neither a good blogging platform nor a good social platform, so I have given up on that. Writing blog posts on this site is technically superior, and I suspect I will get a bigger audience posting them on Twitter than I got on Google+.


A lot of people will recognize this entire site as a blog already, but I'm making the distinction between articles, which I will maintain and hopefully improve or extend over time, and blog posts, which I will publish and then mostly don't revisit. The appropriate topics are also different. Articles should be more timeless than blogposts. And I'll write blog posts using the first person.

This separation is similar to what Amit Patel does with Red Blob Games for articles and a blog at Blobs in Games. Patel is my hero and inspiration for making good use of the medium when writing online articles. My all-time favorite article there is Hexagonal Grids which is both an excellent introduction to the topic and an excellent reference guide for implementation. That is my guiding star for articles. Patel has also been kind enough to share his thoughts on writing with this separation. I'll try to make good use of his experience.


This site has always been a static site; I have some source files that I build to generate a set of files that constitute the entire site. The files are then served quite directly by a simple web server.

For the first years I used Amazon Web Services for the server side, with DNS, CDN and S3 for the file backing. It was a good learning experience – AWS was new and exciting back then – but in the end it was too complicated and not good enough. (Two examples: S3 cannot support different Accept-Encoding headers and CloudFront does nothing but add latency when your site does not have frequent visits)

This February I changed the hosting scheme to using nginx on a simple cloud machine. It is much simpler, reacts quicker to updates and works better. My build scripts were tied to the AWS setup I used from before, so I took the opportunity to also update these. I now use a third-party static site generator, Gutenberg. When I started out, static site generators weren't a thing.

Gutenberg is in its infancy. So far I like the amount of control it gives me and the structure it helps me to maintain. It is a bit awkward to include the more elaborate articles which require separate build steps, but it is not worse than the scripts I had before. It is written in my current favorite programming language, Rust, so I might end up contributing to scratch my itches. That's always a nice option to have, though I hope I don't have to reach for it too often.

I'd like to offer separate RSS/Atom feeds for the articles and the blog posts, but this is one of the technical limitations of Gutenberg: There is only one feed, and it includes everything. Hopefully this will be fixed in time.

I'm hopeful that using a third-party static site generator will allow me to improve the site more and fiddle less with details, and having a blog will let me post more and wait less on perfection.

, 2018