July 2, 2015 setup blogging

'(Cryogen Blog Setup)

The tech running this blog is described on the About page. This recipe explains what I did to set it all up.

Infrastructure

You can set up a static site easily enough with Github pages, but I think it’s nice to manage a server yourself. You might want it for other things, and you get to control it completely. Your learnings there will apply to any other site/server you host.

You can get yourself a “Droplet” at DigitalOcean for $5 USD per month. That’s cheap. It’s just a matter of a few clicks on their simple control panel. I’m somewhat near San Francisco, so I chose that data center. I like CentOS quite a bit as a server OS, but I also like to play around with FreeBSD, so I chose that. It’s a recent addition to the DO arsenal, and is a rock-solid OS with a fantastic security record and a very famous file system: ZFS.

Deployment

I’ve configured Ansible to push changes to the Droplet. Take a look at the simple playbook. I’d normally have set this up hierarchically with roles, but this machine’s config is simple enough to fit in a single file.

Any time I feel like deploying, I can simple run deploy.zsh to fire the ansible-playbook command.

Git Versioning

I like to commit often, but I don’t rely on git for updating the blog. I do maintain the engine, styling, and text all in a single repository. I usually commit when a new post is added, and more frequently as it nears completion. Probably a good idea to have a deploy cadence that’s in line with git-commits.

Cryogen

Although I’ve looked at Jekyll, Octopress, and several others over the years, Cryogen is looking like a winner for a few reasons.

  • minimal code base

  • one of the developers is the most prolific author of clojure web dev

  • they’re very responsive to issues

  • it’s already got bootstrap, and is thus mobile-friendly

  • no engine to run on the server; just deploy the static public/ directory

  • it supports Asciidoc, which is superior to Markdown

  • it comes with a base theme that is easy to style; just tweak the existing HTML template files that are in your project.

  • Google Fonts are included. I really like WhatFont for Chrome for showing fonts. Try it here to see what I’ve chosen.

The documentation is small and great, and you can start running your blog locally by following this tiny guide.

Things you can add

Add feedburner as the RSS feed. This takes load off your server as you start getting subscribers who may hit your feed frequently/automatically. You just need to edit your base.html to replace the feed link to point to your feedburner XML.

Google Analytics is a simple way to see your site traffic. It’s a simple matter of pasting a tiny javascript snippet in the bottom of your base.html.

Videos can be embedded. You could use Youtube, but Vimeo might be better at not pointing to random, odd videos as recommendations.

Things that are not needed

  • tag clouds

  • ads

  • wysiwyg editing

  • user management

  • a comment system (spam is insidious), but Disqus is an option

  • backups (they’re already in git)

  • blogrolls

  • emailer

  • categories

  • widgets for “like”ing or twitter updates

Although I use CloudFlare elsewhere to protect from DDoS attacks (been hit before) I don’t see much need for it for a blog. It could be added.