---
layout: post
title:  "How This Site is Made (with Jekyll)"
description: "These days, you can make a website MANY different ways. So I chose Jekyll..."
date:   2022-02-19 12:31:10 -0400
tags: web-design
---

There are MANY ways to build a website these days. You have the old-school ways of hand-coding your HTML's and CSS's, to building a dynamically-generated website with new-agey tools like webpack and whatever-node-framework-is-in-right-now, and even using point-and-click tools like Wordpress or Squarespace. No matter what you want to do and your skill level, there's something for you.

Personally, I LOVE building websites from the ground up. Not necessarily coding everything from scratch, but at least starting from something barebones that's extensible enough so I can plug-n-play my own choice of tools to make that's tailored to me. This is why when I need to make a website, depending on the requirements I'll use frameworks like Slim (PHP), Express.js (Node.js), Gin (Go), and the like - minimalist frameworks (or routers...) that I can plug in things like templating engines, an ORM or some sort of database abstraction layer, and authentication mechanisms.

I also firmly believe that NOT every single website needs to be built to accept user inputs, or dynamically generate web pages on the fly; sometimes you only need a simple, static webpage or set of webpages that are small, concise, and quick to load.

## Introducing Jekyll ##

This is where static website generators come into play, and I went with [Jekyll](https://jekyllrb.com/). It's a really neat tool that combines the magic of the Liquid templating engine with the simplicity of markdown files to create a static, blog-aware site. Heck, it's so cool that it's used by GitHub! It's how they generate webpages for GitHub Pages! 

Part of what makes Jekyll great is its extensibility. There are plugins available for things like compiling SASS/SCSS stylesheets and CoffeeScript, generating RSS feeds and sitemaps, displaying GitHub Gists, and many other things to help you in generating your site. Plus, there are community-maintained themes that can be used to give yourself a headstart with designing your site so you can focus on the content rather than the boring CSS designing junk.

It does require some setup to get your site scaffolding and templating setup, especially if you want to use other tools like CoffeeScript to compile your JavaScript scripts (that's me!) and want to change your templating engine. But, once you've got your site configured, creating a new blog post is as simple as creating a new markdown file in your \_posts folder, fill out the post metadata, add some content and BAM! it's ready to go.

Also, the developers of Jekyll were smart: they not allow you to build a site into static HTML files to serve on your site, but they also built in a tool to "watch" your source directory for changes and automatically rebuild it on the fly so you can easily see your changes as you're developing it or writing a new post.

## Experiences with Hugo ##

At this point I'd like to mention that I also really like [Hugo](https://gohugo.io), which is a static site generator in the same vein as Jekyll. It's written in Go, so it's typically a LOT faster to render sites, and it's also just a single binary so it's easier to install and maintain a single version that you build your site with. 

Now as for why I went with Jekyll: simply just familiarity. I can go into a long debate about the pros and cons of each and talk about why Jekyll fits my use better, but realistically both are FANTASTIC tools that I'd recommend to anyone looking to build a static site. I don't need your confirmation that I made the correct choice ;).

## That's all for now! ##

Well, that's it for now. I hope you were able to learn something from this - I just wanted to talk about how I created this site with Jekyll since I'm really happy with the setup now. It's not too fancy, but isn't boring. Now the next step is integrating it with some CI to automatically deploy new versions of the site...
