It is 2017 and setting up a blog still feels a little like the Klingon Second Rite of Ascension ceremony.

Embedding this video with a caption was about this hard.

I know, various services make blogging completely free and painless. Why not just write posts on Medium and waltz your way to writing fame and fortune without ever having to deal with a cascading style sheet? Oh.

Well, the only people that are going to read your blog are perhaps a dutiful relative or two and maybe your spouse. Why bother setting things up when they can just read your exceptionally cerebral musings on facebook? Facebook probably gives you a larger (captive) audience but it is really terrible for storing/searching and using diagrams with captions. After awhile you need to write things with the typesetting elements we've enjoyed using for centuries.1

So we are left with the humble self-hosted blog. Luckily, lots of hardworking people have generously poured their time into incredible and free platform stacks like the one used on this website (from the top: Mezzanine, Django...). Despite these sophisticated systems, and having the fount of all knowledge to help guide us in their use, the process of setting up a blog can still be painful.

Some parts of the process are nearly miraculous now. Package management systems let you find and install software with an ease that was unimaginable not too long ago. Want to install X? Just type install X. For the cost of a cup of coffee (and in less time than it takes to make one), I can spin up a virtual private server with the Linux distro of my choice with gigabytes of space that is billed on an hourly basis for fractions of a cent. There were days when enthusiasts couldn't imagine that computing would become this cheap and easy.

But, like a lump in a rug, solving some of the problems seems to have moved the pain elsewhere instead of getting rid of it completely. Many issues we used to have with software distribution and network computing have disappeared but now we have to deal with keeping up with the latest release while ensuring interdependent sets of software components work together smoothly. It isn't always as easy as following the tutorials.

Most of what you need to setup a site like this can be found in these links:

But even after you go through these you will find the lumps. I had make a tiny commit to mezzanine-pagedown to prevent it from breaking the current mezzanine release (make sure you point pip to the linked bitbucket site explicitly). You need to be sure to use Ubuntu 14 instead of Ubuntu 16 (something about a permission convention with supervisord). There were probably a few more tiny things that cost hours of time to debug and fix. Keep in mind that these instructions will probably be out of date by the time you try to do the same thing but you can be pretty sure that you will have an exciting new set of problems to deal with.

The corpus of freely available software infrastructure that has been collectively built must truly be one of humanity's most impressive feats of engineering. Towers, cathedrals, large-scale scientific instruments, flying machines and linux distributions all cost astronomical amounts of money to construct but only the invisible layer of software infrastructure is constantly running within arm's reach across the world.

Sometimes I wonder if it is more amazing that I can track and deploy this website with such ease or that I can be transported to another country in a metal tube with wings. One can't deny that software engineering has provided abstractions that are more enlightened and enable amazing productivity. With just a push of a button we can do stuff today that the gods could only dream of in the previous era of computing. When the button does stick a little though, fixing it can cost enough time to prevent you from doing much at all.

I've back dated and blogified some old posts on facebook just to work out the kinks on this site.