Johannes Sasongko’s blog

Hand-programmed blog

Here’s a new blog, replacing my old one at wordpress.com. I promise this has nothing to do with the recent WordPress drama; I have no horse in that race (neither side looks good), and I abandoned the old blog years ago due to my own dislike of WordPress and wordpress.com.

Back then I spent a lot of time trying a few SSGs that seemed to suit my preferences, but didn’t find any that I really liked. At the time I already considered writing my own generator but the project didn’t get far. Now that I’m finally making the move happen, I had another look at some of the options and tried a couple of others, and still none of them made me happy (Astro was close). There’s probably the right SSG for me out there, but I’m not going to spend months trying all of them.

So I wrote my own static site generator. I have no ambitions for this to become a generic tool, so that saves me the pressure of making the code elegant. The code is written in TypeScript, with JSX for templating and Markdown for writing content. Rather than going the usual route of reusing the JSX runtime from Preact or other similar projects, I wrote my own JSX runtime from scratch just to learn how.

The biggest problem with this whole setup is the uncomfortably slow speed. I did a bit of poking around and the problem comes down to:

I’m quite happy with the result so I’m going live with this. There are nice-to-have features that I want like syndication feed (RSS/Atom) and search, but they will have to come in the future.

I’ll slowly migrate my old WordPress posts here while updating the contents if necessary. I don’t plan to add comment support to this blog, so I’m thinking of linking to Mastodon, for which I’ve just created an account as well (see the About page).

Update: After more testing, the highlighter that I thought was better wasn’t actually that good; I’ve switched to a faster one and now highlighting speed is at a reasonable level, and quality seems fine so far.

Update 2: I’ve added a rather bare-bones Atom feed that doesn’t include the article contents inline. Some feed readers can automatically download articles as you view them, but unfortunately for many readers you’ll have to click through to the site.