May 21, 2016.
For reasons which are not obvious even to myself, when I have a bit of time and am going through a period of change, I tend to end up rewriting my blog. It’s kind of amazing that this is my fifth total rewrite of the software running this blog, the previous iterations of which (from latest to oldest):
The rewrite is about 1350 LoC in Go (tentatively titled Icarus, because all blog engines should have pessimistic references to greek mythology), replacing about 800 LoC in Python. I think the Go rewrite is probably simpler though, both in the sense that Go abhors concise syntax, and also in the sense that it relies mostly on standard libraries and is not relying on a heavy weight library like Django (which the Python version was).
Although this certainly doesn’t represent a grand accomplishment in Go, I’d say that I’ve finally written enough Go over the past few months to have an opinion about it, and that opinion is pretty positive, although it’s still IMHO a pretty crummy text processing language (much like Erlang, which is just bad at strings in my opinion).
On the other hand, it’s pretty liberating to be able to run Nginx fronting the Go server and stop messing
with Nginx fronting Apache with
mod_python (I know, I know, but it was 2011 when I put together the
VPS configuration for the previous iteration, at which point
mod_wsgi was early and
uwsgi was even
earlier, I would use
uwsgi with Nginx at this point if I was redoing it).
I’m still relying on Redis, as the source of truth for the important is in a Git repository, and it’s mostly just serving as a materialized view and some analytics data (one of the design constraints was to be able to copy over the RDB from the previous iteration and have it work “as is”, to eliminate an annoying migration step).
Anyway, hopefully this will be the start of more frequent posting. :-)