For the past three years, I've been happily using StableHost as my shared-hosting provider. But there was a demon at the corner of my mind, always whispering: "Switch to a VPS, get used to Linux." This month, just as I had to renew my hosting account, I decided to heed the call and resign myself to the command line.
As this long-running idea was about to materialize, I chose DigitalOcean, which seemed both affordable and sufficiently reliable. My first impression was not particularly a good one: Right after choosing a payment method, I got asked to send a government-issued photo ID to prove I'm a legitimate user. This issue got resolved faster than I expected (I didn't send them any ID), but it still makes me worry a bit about the future.
For the web server, I went with nginx rather than Apache. It took me about a day and a half to understand how things like server blocks work and set them up. I'll probably revisit the configuration soon enough and optimize a couple of things if needed.
Now, I could simply install WordPress and import my previous database dumps. But that wouldn't be fun, right? It feels good to take a look at something and be able to say, "I made this." So that's what I did: I wrote a Python script to convert an SQL dump to JSON files, and began building my own template-based static website generator. What you see now is the result; unless you're reading this blog post far too late, of course.
The previous plan I had was to use either Python & Flask or Ruby & Sinatra, which I might still try out later on. Currently though, a simple Python script generates all the HTML pages, and an even simpler PHP page handles the routing in a backwards-compatible manner. While I'm not confident it will fit anyone else's needs, I know at least one person that's interested in the code, so I'll be open-sourcing it pretty soon.
As a warm-up exercise, I first staticized (I did what?) another WordPress blog of mine, which required less work due to its size. Then, I was finally able to not only renovate my personal website, but rebuild it from ground up. After many hours of fiddling here and there, I'm now quite happy with the result.
Readability was one of my primary concerns. I did my best at adjusting the font size, line length, text color, etc. until everything looked just right. Do warn me if you know better. As a bonus point, things should now be very much readable on mobile devices too. I'm late to the party, I know. (More so than you think: I still don't have a smartphone.)
One quirk is that comments aren't nested anymore. But the larger problem is, there's currently no way to post new comments... I don't want to use a third-party system such as Disqus, and putting down a "discuss on HN" link doesn't make sense in my case. So I guess that's another hurdle for me down on the line.