Why I’m Building a Blog Site With Jekyll

The subtitle for this article should be “A Novice’s Journey of Building Multiple Websites.”  And I understand the immediate irony of reading an article on WordPress about building a blogging site using Jekyll.  But over the course of this article, I’ll share some experiences I’ve had building websites on a few different platforms.  And I’ll let you know why I’m going with Jekyll.

For those less patient, here’s the “Too Long, Didn’t Read” summary:

  • I’ve previously built sites on WordPress and Drupal
  • I want to save money on this new blog site
  • I can get free web hosting with GitHub pages, and free SSL with CloudFlare
  • Jekyll provides come cool features that remind me of CMSes like WordPress

Blog Site – Take #1

A few years ago, my wife decided she wanted to start a blog.  As I had some experience building websites on WordPress, I decided we would use that platform.  I installed WAMP on my Windows laptop, and began developing the site.  We used a Genesis theme from StudioPress.  I added some custom code into the functions.php file.  I used my CSS abilities to add some design spice.  And then, we purchased the domain name and web hosting through BlueHost.

My wife would write and post articles.  I would perform WordPress core and plugin updates.  We would test new functionality and design changes locally on WAMP.  Once satisfied, we would make the changes to the live site.

I am pretty sure there is a better way to manage updates from local to live, but I never figured it out.  But I did learn I could save time by setting up automatic plugin and WordPress core minor updates.

Drupal Baptism By Fire

During this same time period, a professional organization I was a member of decided they wanted to take over the management of their website.  The existing site was managed by another non-profit on the SharePoint platform.  My organization grew tired of not having a members-only section, and with the other organization’s lack of willingness to give us a straight answer as to the time frame and cost to build functionality into our site.

One of our members volunteered to develop the new website.  We purchased a web hosting plan through BlueHost.  Our volunteer selected the Drupal platform.  Unfortunately, a month into this project, he was laid off, and was unable to focus on building our site (he needed to take care of himself and find some work).

As I was the president of the organization, and had some web development experience, I was the new project lead.  Building a new website on a platform I had no experience with was a living hell.  I remember during one team work session, I had questioned whether we should quit where we were, and rebuild everything on WordPress.

Fortunately, I was strongly encouraged to see the site through.  And we did finish the site.  I am cautious to say I have experience with Drupal.  But I was able to create a members-only content type, and perform module and core updates.  I even figured out some htaccess tricks to get our main site and multiple sub-domains to correctly resolve when accessed using the https protocol.

Blog Site – Take #2

Unfortunately, my wife was not able to keep up with her blog site like she desired.  I like to think of this as the first act in our blogging journey.  As we were driving to stay in a tiny house (at the awesome Tiny Estates),  we talked about starting a blog together.  This blog would include anything we wanted to write about.  Places we visited as a family.  Advice for other parents.  Even deep spiritual questions we were wrestling with.  Every topic was fair game –  and this time, there would be two authors instead of one.

So Back to my laptop I went.  I created a new WordPress site with WAMP.  I also started to look into various web hosting companies.  I was particularly interested in what security features they offered.

I was starting to realize the overhead that came with a database-powered content management system:  software core updates, plugin updates, sql-injections, etc.  I really didn’t want to deal with those.  I simply wanted to build the site, and then focus on writing articles.

I saw that WordPress had managed plans.  I could have my own domain name, and they would take care of all the server and WordPress related updates.  It even came with a security plan (although they were not able to give me any details about what security measures they were implementing).

Could Static Site Generators Be The Answer?

As I was working on our new blog site, I was also making periodic contributions to the Esri Leaflet project.  During one of my updates to the documentation site, I noticed something interesting.  There was a file called siteData.json.  It included the version and integrity code for the various leaflet-related libraries referenced on the documentation site.  And there were pages on the site that referenced this file.

I also remembered hearing about building Jekyll sites with GitHub pages.  In my mind, there may have been a connection.  So, I began reading up on Jekyll.  It didn’t take too long to realize that Jekyll might be a good solution.  I created a branch for my website, and started rebuilding it using Jekyll on my Linux OS partition on my old laptop.

Let me list out some features I like about Jekyll:

  • The ability to create “includes” files that can be used across the site.  I can create a single header.html file that contains the site navigation.  I include this file on my page templates, and the same navigation header will be used site-wide.
  • Liquid tags.  I can use for-in loops, include content based upon conditional statements, and change the text-case on certain elements
  • I can loop over posts to create a general Blog listing page, as well as category pages (this took a little bit more work)
  • On my homepage, I can create a nice view of the three most recent posts.  Or, I can create a view of websites/podcasts/etc I want to highlight.  You can create these data files in the _data directory.

Now, there are definitely some disadvantages to building a blog site using Jekyll.  The biggest is the technical ability to learn how to build a site using Jekyll.  But as a limited-experience web developer, this wasn’t too bad.  It was also pretty straightforward to install Ruby and Jekyll on my Linux laptop.

Another challenge will be teaching my wife how to transfer her blog posts from Google Drive into the Markdown format.  But she’s intelligent, so it shouldn’t be too much work.

And if you’re wondering about contact forms or comments, there are third-party libraries for that.  We’ll be using Disqus for article comments.  And I can even conditionally load the Disqus code on pages that have the comments variable set to true.

Final Thoughts

So, with Jekyll, I can get similar results as a WordPress footer.php file, but without the overhead of database/Wordpress Core/plugin updates.  Nor do I have to worry about SQL injections.  This is because I’m running a static site of only HTML, JavaScript, CSS, and other assets (images, pdf files, etc).  This doesn’t resolve all security concerns.

I also don’t have to pay for web hosting.  I can use free web hosting with GitHub pages.  And what about SSL? I can use a free CloudFlare account to enable HTTPS on my pages, and get the benefits of a CDN.

The only things we’re paying for are our domain name, computers to develop the site on, and our time (the most valuable asset).

So this is the stack we’re going with for our blog:

  • Jekyll
  • GitHub Pages
  • CloudFlare CDN

I am pretty excited about the future release of the blogging with with my wife.  We are calling the site McKinney Party of Five.  We’re hoping to launch it this year.  My wife has been busy writing articles.  And I have been busy building the site.

There are many options when it comes to setting up a blog site.  You can go with a platform like WordPress or Drupal.  You can get a manged site, or manage all of the updates yourself.  I am choosing the low cost solution of the Jekyll, GitHub Pages, and CloudFlare stack.

There are definitely benefits and costs to any approach.  I wanted to know what your thoughts were on this topic?



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s