24 May 2013

Jekyll and static site generators

At work I maintain and develop a number of sites with various content management systems (the majority being WordPress and ExpressionEngine). For my own site I wanted to geek out a bit and take the opportunity to try something different. A full blown CMS is overkill for what I needed so I decided to use a static site generator. There's a bunch of great ones out there. I started playing with Octopress, which is awesome but ultimately I wanted something more bare bones and to create a design from scratch so I ended up going with plain jekyll.

Jekyll is a simple, blog aware, static site generator. It takes a template directory (representing the raw form of a website), runs it through Textile or Markdown and Liquid converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server.

Jekyll

Benefits of using a static site generator

  • Speed Content management systems can be slow and you really have to spend time tweaking things to speed them up. Not having to deal with databases, piles of PHP, plugins, keeping things up to date, etc. is awesome. Servering static html files is about as fast and simple as it gets.
  • Security No databases or server side code also means a lot less worrying about spam and security issues.
  • The writing workflow is a joy, posts are written in Markdown in my favorite text editor.
  • I'm trying to get into the groove of using version control in my projects, this was a great opportunity to utilize a more modern workflow using Git and GitHub. When I'm finished writing a post I run jekyll serve, check the site locally then push & deploy.
  • It's fun and all the cool kids are doing it.

So here it is, you can take a look at the source here on github if you'd like.

18 May 2013

Fun with figure & figcaption elements

It's nice having the new HTML5 elements figure & figcaption to semantically markup a picture with a caption. The W3C describes the element as follows:

The figure element represents a unit of content, optionally with a caption, that is self-contained, that is typically referenced as a single unit from the main flow of the document, and that can be moved away from the main flow of the document without affecting the document’s meaning.

And here's a snippet on how to get a caption that sits over the bottom of the photo as shown below:

Morgan Freeman Holding Cotton Candy
Morgan Freeman Holding Cotton Candy.

The Markup:

<figure>
  <img src="/images/yourimage.jpg" alt="Image description">
  <figcaption>This is a caption</figcaption>
</figure>

The CSS:

 /* Relatively position the figure so we can absolutely position 
    the caption over the photo */
figure {
  position: relative;
  max-width: 400px;
}

figcaption {
  position: absolute;
  bottom: 0;
  left: 0;
  -webkit-box-sizing: border-box; 
     -moz-box-sizing: border-box; 
          box-sizing: border-box;
  width: 100%;
  padding: 20px;
  color: #FFF;
  background: #000000; /* Fallback color */
  background: rgba(0, 0, 0, .6);
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);
}