After spending a full year fully mired in corporate IT fatuity I've decided to take on some new personal projects (and ressurect some old ones.) My goals are to:
- learn some new technology
- spend time on something personally fulfilling
- buid an online presence
- have fun
Starting a blog is a great way to do all of the above. The first step was deciding on a platform.
not just another wordpress blog
I got knee deep in Wordpress development last year when I unexpectedly stumbled into becoming tech lead on initial launch team of vocativ.com. I had to get pretty good at Wordpress development really fast, since I had only dabbled in Wordpress development previously. I'm still not a dyed in the wool Wordpress developer by any means, but during that stint I got a deep look into the Wordpress community and was very impressed by their dedication to usability and open source software (as well as finding ways to monetize it). Programming with Wordpress as an outsider was - odd. You really have to orient your thinking differently. It's not just another MVC framework or anything like that.
I ended up deciding against Wordpress. None of the reasons for doing so have any negative reflection on Wordpress itself.
- Wordpress is Mysql and PHP. Stable, solid technologies, love it. I've been doing that for a long time though, I need something fragile, breakable and exciting.
- Wordpress has way more functionality than I need. Really I need a templating system, comments, a basic admin, not much else.
- This is do it the hard way, right?
- Nice to have a platform where every time you look under the hood doesn't invoke some raised eyebrows and a "wtf?".
I really like some things about the Svbtle platform. Everything they set out to do with the design worksk. It's clean, easy to read, and gives a sense that the content is of good quality. However, it's a service. If I can't install it and hack around in it I'm violating the first two goals on my list. Also, I despise with a passion the kudos button. I can't blog on a platform that has a feature that annoys me so badly.
Octopress has a really nice concept - blogging app built on Jekyll, which is a platform for generating static sites. Everything about this seemed perfect. The out of the box theme was not very appealing but the contributed themes were quite nice. I could have gone this route and been almost totally satisfied. Writing blogs on the filesystem directly has some drawbacks though. Blogging on mobile is the most obvious. You might think you're cool saying all your blogs are written in vim, but most platforms use a web admin and a database for a reason - it's damn convenient.
I settled on Ghost.
- Super simple but well implemented features
- Node.js - not a platform I've done much with professionally in a few years
- Really clean default and contributed themes
- Opens up some nice challenges for scaling it out - which will be the next chapter in this project
A big drawback once I got started was Ghost doesn't have a comment feature built in. Generally people implement Disqus or (blech) Facebook comments, but this violated my "homegrown and hackable" requirement so I started looking for alternatives.
I investigated Discourse which is a really exciting project from Jeff Atwood that has been implemented on several big sites already. It's open source, powerful, and scalable, and has the same spit and polish you'd expect from the same mind behind StackOverflow. However, it was way too big and complex for this project - the comment system would have been several times larger and more complex than the blog itself - so I settled on a nice little project called isso. Nothing fancy (and has some front end usability issues) but took 10 minutes to set up and fits all the requirements I have. It's also small simple enough that hacking in solutions to the usability issues should be easy and fun.
So here is my little blog in all its glory. Next I'll be designing a scalable architecture on AWS, so when this blog becomes the hottest thing on the internet (which I'm sure will happen any day now) I'll be ready.