I've intended to launch a blog at justinfagnani.com for a very, very long time now. Prevailing over my procrastinating and complexifying nature I've finally done it, but only by cutting almost every corner possible.
After a brief flirtation with blogging about Dart at dartery.blogspot.com, I wanted a better writing experience for myself, reading experience for my visitors, and broader scope than just Dart programming. My main frustration was with Blogger and the difficulty of customizing it and writing posts with richer content, like code snippets, or embeds from other sites.
This first lead me down a path of building my own blogging engine in Dart (server and client, no less!) which included advanced routing, authentication middleware, custom elements in Polymer.dart way before Polymer.dart was close to ready, wiring in non-Dart services like syntax highlighting and on, and on, and on...
Eventually and mercifully I declared bankruptcy on that idea (even thought I still hold out hope for a clean and simple Dart-based blogging engine), but my next attempt wasn't any more productive.
I researched blogging platforms, looked at their source code, their table layouts, theming engines, and confidently settled on Ghost. Great, but did I mention my complexifier nature? Sure enough, it got the better of me and suddenly was I neck deep in Docker, running Ghost unconventionally (as an Express module), Google Compute Engine options, all trying to achieve immutable infrastructure nirvana. To top it off I started my own Ghost theme using Polymer elements.
Realizing that way madness lied, at least if I ever wanted to actually get my blog up, I took a step back and asked myself:
What's the minimal amount of work I can do to get up and running, while leaving myself just enough flexibility to build what I want in the future?
- Run my own server, so I can easily customize the blog, as well as run my own programs.
- Control my URLs, and keep them from changing over time. I want to mount my blog at /blog so that I can put other things at the top level without fear of collisions.
And... that's about it. Themes, syntax highlighting, even comments, can all wait.
With that minimal goal, I looked at Google Compute Engine's Cloud Launcher and the Bitnami Ghost installer. I was a little wary that there would be some catch with Bitnami: maybe they've modified Ghost in some unscrupulous way, or charge extra money. I don't think this is the case, so I clicked the "Get Started" button, and 10 minutes later I had this blog.