This site is now generated using twostraws’ open source static site generator Ignite.
When I first launced this site back in April 2020 (see Welcome GitHub Pages and Jekyll), it seemed a sensible choice to use Jekyll as the static site generator for a website hosted on GitHub Pages.
Indeed, it has served me well over the last four years.
However, I always felt somewhat uneasy that Jekyll was a black box. I had no real understanding of how it worked and was unable to tweak it if necessary: what it does is what you get. Also, getting it to run locally on my Mac to test changes before deploying them to the live website wasn’t as staighforward as it could have been. In fact, I found it challenging enough that I documented the process (Installing Jekyll) in case I needed it the future. (Note: it has been some time since I last followed these instructions, and they may no longer work with a clean install of the latest macOS — Sequoia 15.1 at the time of writing.).
With this in mind, I was always on the lookout for a better alternative. I thought I had found the solution in John Sundell’s Publish static site generator written in Swift. I spent a little time looking into it but, I’m not sure why, it didn’t gel with me. Almost certainly Publish can do everthing I need. In fact, it’s probably overkill for what I want. So, I held off from migrating my website away from Jekyll …
… until Paul Hudson released Ignite.
Side note: If you’re a Swift developer then Paul’s Hacking with Swift site is the place to go. It’s packed full of information, code samples, and free tutorials to help you learn, and improve, Swift development. If you’re serious about Swift development then a membership to HWS+ is an excellent investment.
Ignite is an open-source static site generator written in Swift, aimed at Swift developers. The codebase is very accessible, and like all of Paul’s work, it is readable and well-documented. I watched Paul’s Brush & Bark video, which fully details how to create a website with it. My initial impression was that it was exactly what I was after. I watched the video again and examined the codebase. I was sold. I decided to migrate my website away from Jekyll and adopt Ignite.
The migration was pretty straightforward. The biggest headache being tweaking the markdown in my posts to work with Ignite’s markdown parser rather than Jeyll’s. There were a few occasions where I wasn’t sure how to implement something so I either looked at the Ignite Samples repository and website, or just delved into the Ignite code base.
Ignite is written in Swift, which is a significant advantage over the black box that is Jekyll. If I’m unsure how to do something or how something works, I can simply look at the code. If I want to implement a feature that isn’t supported, I can develop it myself and submit it as a pull request for possible inclusion in Ignite’s published codebase. Fabulous!
Ignite includes a tool for previewing your website in a local browser. Use the Terminal command:ignite run --preview
That tells Ignite to launch a local web server, then open it in your web browser so you can see what was produced. Under the covers Ignite is using the local web server included with Python installed on all Macs so, unlike Jekyll, there is no complicated installation process needed to get the site working locally.
With my website migrated to Ignite, it was simply a matter of deploying it to GitHub Pages. I couldn’t find any documentation on the Ignite website detailing how to do this. A bit of Googling led me to the article Building a Static Site in Swift using Ignite and GitHub Pages — exactly what I needed.
If you’re reading this, everything is working as expected. Happy days!