Posterous recently posted a shutdown announcement stating that the service, now owned by Twitter, inc, would be closing up shop on April 30th, 2013. I have enjoyed using Posterous in the past for its triviality of getting content up on the web — literally as easy as sending an email — but now needed to find a new home for both my personal and code blogs.
I looked a bit into hosted services such as Wordpress and Tumblr, but none of them offered the kind of customization options that a hacker like myself needs. Either the system was built up to the point of code confusion (Wordpress) or it was too basic to do anything powerful with (Tumblr). I decided to look at writing and hosting my own CMS.
While researching, I came across Jekyll and started tinkering around, but once I started Googling for plugins and themes, I found that Octopress, built on top of Jekyll, already included most of the customizations and plugins I wanted. Octopress is really a boilerplate setup for Jekyll, allowing you ease of install/setup, while also providing with maximum customization options.
The first thing I had to do was to get my content off of Posterous. I found a great post by Justin Kelly that gave a script to download content from Posterous, and convert it into a format useful for Jekyll. I did have to make a few alterations though...
- Justin's script did not attempt to download any images. I checked the Jekyll site (where the original, unmodified script came from) and found a pull-request that did just that. Merged.
- The image download code only downloaded the full sized image, but I wanted to use a thumbnail in certain scenarios. Posterous did not include a thumbnail-sized image in the API response though, so I used the mini_magick gem to create a thumbnail for each downloaded, full-sized image. I may not need them all, but at least I have them now.
- Posterous would group images together in an album if you specified it should. I wanted to use this existing album grouping, with the thumbnails, to create a FancyBox group. After setting up a FancyBox/Octopress Plugin (thanks @sukima!), I was able to convert the script to output a Posterous album into a format that would display as a fancybox grouping.
Here is the final script I ended up with. It is very opinionated about how the blog should be setup, and where the locations of everything should be, but it should be easy enough to edit to suit your individual needs.
After getting all the content converted, I needed to import existing Posterous comments into disqus, the comment provider in Octopress. I found a script from Jaime Moran that nearly did the trick. The only change I had to make was in the
posterous gem itself, where the login credentials would not work
The fix was simple, I just had to find where the gem was installed on the system and edit a few lines. Once the comments were exported, I replaced the old hostname in the file with the new hostname I am using for the new blog. Then I used the import tool found on Disqus to get the comments into the new site. Disqus accepted the comments as imported, but they are not showing up at of the time of this posting... I have a support ticket out to resolve it.
Now that I had some content to play with, I started looking around at creating my own theme. There are only a few third-party themes for Octopress but one of them really caught my eye. BlogTheme by Aron Cedercrantz was just my style. Minimal, black & white and clean, I forked this theme and went to work customizing it.
I changed out the fonts, tweaked the spacing and sizing, manipulated the colors and altered the layouts. The new theme still maintains all of the best elements of Aron's at the time of this writing, so a big THANK YOU to him for releasing it as OSS.
After 2 days of using Octopress, I am very pleased with how it is turning out. The deploy scripts are excellent, the static pages are blazing fast, and the full control I have over content, placement and style is paramount. I highly recommend it for any hackers migrating away from Posterous.
Lastly, I run a small software company called Urban Apps. It pays the bills so I can take the time to write helpful posts like this one. If you found this posting helpful at all, I would really appreciate it if you would check out my Apps on the iTunes App Store.