About This Site

First of all, I’m flattered that you’d like to know how this site works. :)

tl;dr: It’s built using Jekyll and served via GitHub Pages. You can see the full source for this site on GitHub.

The flashy animations on the homepage are powered by Tinseltown.js, a library of my own design. Some additional help comes from Google Fonts, sanitize.css, and possibly other things that I’ll add over time but forget to add to this list.

This site started off as a blog, which I built using the Jekyll Poole theme by @mdo. The site has since deviated from that base structure, but a significant portion of my blogs are still styled by old, but heavily modified, Poole CSS.

Unfamiliar With Jekyll?

Jekyll is a static site generator, which also happens to be blog-aware.

You may think of Jekyll as a CMS, like WordPress, except it’s not hosted to run 24/7 in the cloud. Instead, it’s a command line build tool that you run locally on your own computer. It takes an opinionated directory structure as input, and spits out a different directory of pure HTML pages and accompanying CSS, JavaScript and other files. This output directory can be slapped onto an inexpensive file server.

Just run this generator every time you make edits to the source files. It handles things like:

The result is a site (optionally with a blog) that gives you the convenience of templates and Markdown, which can be hosted for very cheap or for free, and performs super snappily since all the pages are pre-rendered.

Unfamiliar With GitHub Pages?

The GitHub Pages landing page will explain this much better than I will. In a nutshell, it’s a free service that GitHub graciously provides to host static web pages. Unless you bring your own domain like me, GitHub hosts them on *.github.io.

Since Jekyll generates static web pages, Jekyll sites can be hosted on GitHub Pages for free. GitHub also happens to provide the additional service of building Jekyll sites before hosting them (also free). That way, the repository containing the source for this site contains the “input” to GitHub Pages rather than its output. GitHub automatically rebuilds everything when I push changes.