After reading the Stack Exchange engineering team’s excellent writeup on how they moved their WordPress blogs to Jekyll, I’ve decided to quit procrastinating and start my own Jekyll-powered blog – blog.danwin.com. I’ve used WordPress for my blog at danwin.com for the past 5 years and I’ll probably leave that as is, as I don’t have the Stack Exchange team’s talent or patience for doing the content migration.
Don’t get me wrong; WordPress is a fantastic piece of software, considering how long it has lived and the millions of voices it has hosted on the Internet. But it’s not for me. While my current blog gets a decent amount of Google search traffic (people love reading about how infinite scroll might be bad), over the years, I couldn’t bring myself to keep posting to it. It’s not that I didn’t have ideas – I have a Dropbox folder full of 75%-finished posts that I could paste into the WordPress text editor. And I still post daily to Twitter, Hacker News, and while I was in New York, Tumblr.
I just got tired of the WordPress posting process. The logging into my abysmally slow cheap Dreamhost instance. Then, the 5 to 25 second wait for the New Post screen to load up. And then, the process of turning my Markdown drafts into HTML, then pasting into the WordPress rich text editor. Then the hand-fixing of HTML. Then hitting “Publish”, and waiting for my cheapo Dreamhost shared server to take 30 seconds to complete the action. And then I manually run the cache-busting plugin. When I inevitably have to fix typos or add new paragraphs to the post, I have to repeat all of the steps above, sometimes starting from the re-editing of the original Markdown textfile, all the while my cheapo Dreamhost server, which I pay $99 a year for, is taking 15 to 30 seconds to load each page.
It’s funny how a few minutes of friction are more than enough to stop the creative process. So moving to a whole new blogging platform, as momentous as it seems, is worth it to me because the publishing process is reduced to mere seconds.
After setting up a new Jekyll project on my computer, this is my publishing process:
- Open my text editor (Sublime Text 3).
- Write plain text.
- Hit Cmd-S to save my changes.
- Hit Cmd-Tab to switch to my command prompt
jekyll buildto build out the entire blog into a subfolder.
s3_website pushto push that subfolder online.
- Wait a few seconds for the changes to appear at blog.danwin.com
Since then, virtually everything I’ve done has been with a static site generator, particularly the wonderful Middleman project – check out this writeup by Vox Media’s product team on how they use Middleman: Take a peek at the code that powered The Verge 50.
- Fast performance via S3 hosting: How To: Hosting on Amazon S3 with CloudFront
- Unhackable: check out this HN discussion, Is a static site hosted on AWS S3 ‘hackable’?
- Cheap hosting: How I served 100k users without breaking the server- or a dollar bill.
The less-heralded benefits of static-site generation
- Use and practice your operating system skills
- Find-and-replace across text files
- Backup however you want
- Learn how to hack
Things I’ve made
These sites use either Jekyll or Middleman:
- Bastards Book of Photography
- Small Data Journalism
- Public Affairs Data Journalism
- Computational Methods in the Civic Sphere
- Computational Journalism
- Mundane Programming
- A Beginner’s Guide to Amazon S3 and Web Hosting
- Build a Web Portfolio from Scratch with Github Pages
Other cool things
A list of other organizations and people using Jekyll or Middleman.
- Federalist: 18F’s unified interface for publishing static government websites with Jekyll
- Taking control of our website with Jekyll and webhooks
- UC Berkeley’s Structure and Interpretation of Computer Programs Self-Paced Course
- UC Berkeley’s SICP course in Python
- Google’s Web Fundamentals guide
- The Software Carpentry guides
How I Jekyll
I’ve set up a Amazon S3 bucket named
blog.danwin.com and I use the s3_website to handle the pushing and syncing of files.
So far, no custom plugins.