My portfolio and main site has been a little neglected for a while, like most freelancers client work always takes priority.
During a break between two projects I seized the opportunity to look at my site, branding, copy and approach to work out where I wanted to take it. What you are seeing now is a result of that time.
On the design front, I wanted a simple, content focused theme. I’ve experimented with a bit more CSS3 than usual and it’s fully responsive. Tweaking as I go.
A bit of history
My previous site, like a lot of sites, was based around a Wordpress CMS. Content management systems are great, they take the technical issues out of creating and publishing content and have allowed smaller businesses and publishers without an in-house web team to have a great online presence. Wordpress is easy to use and I’ll still be recommending it for client projects going forward, however it’s really unsuitable for me for a number of reasons:
Finding time to write new articles is hard for me, I’m balancing client workloads, updates to my own apps on the store and a family life at the same time. I need as little barriers to create content as possible. When I create a new article, or update an existing page on my Wordpress blog I typically do the following:
- Fire up TextMate and get to work on the article, in plain text with a bit of HTML
- When I’m done paste this into the Wordpress content area
- Set a few tags, and categories
- If I used images I’ll insert these into the custom fields, after uploading them of course
If I wanted to do anything different with the layout of this post I’d have to modify any templates that would be used, check for any glitches with the remaining templates and upload these via FTP.
This is a pretty big workflow for me to simply publish my content in the way I see fit, especially as I’d often like to experiment with text layout and styling on individual posts.
Wordpress comes packed with a tonne of features, most of which are awesome. However I use around 1% of these, I have no need for post scheduling nor an image gallery, and don’t even get me started on WYSIWYG editors.
While my blog was always controlled via a Git repository, the database and it’s content were not, I’d love a system where all of my content was under source control which I can access, update and deploy from any computer. I’d love it even more if I could do the first two without the need for an Internet connection.
As Wordpress is backed by a database, there’s a single point of failure. Yes there are a number of caching plugins but there’s no replacement for serving static files that require no database interaction. And do I really need a database?
The New System
Jekyll is a “blog aware static site generator”, and while it’s not suitable for anyone uncomfortable writing code and deploying sites, it’s perfect for me.
I won’t go into detail about how exactly Jekyll works and it’s setup but in essence you create articles using static Markdown or even HTML if you choose, Jekyll then generates a completely static site from your files, taking permalinks from the title.
You then create HTML templates and specify which template to use in each article’s file.
You can also specify variables in each file for use in the templates, looping through posts to display a “blog” page like you can see here and a whole load more.
So far, it’s working out great - I can update my blog using local system files, and push all of it up using a simple bash script, everything is stored in git for easy reverting and the site still feels like it’s powered by a CMS.