From: [email protected]
Date: 2016-11-02
Subject: Migrating From WordPress to Jekyll -- Part 1

In part 1 of this article, I talk about why I moved my website from
WordPress to Jekyll. In part 2[1], I go over  how  this  is  accom-
plished should you want to make the move yourself.

Why do you make things hard for yourself?

When  I was maybe ten years old, my dad would take my brother and I
on long walks through the woods. My dad  loved  the  outdoors,  and
these walks were a cheap way to tire us kids out. I loved going off
the beaten path and negotiating my way through the trees and brush.
This  was  a  lot  slower,  ducking under branches and dealing with
snares. I'm sure my dad found this a little frustrating because  he
had  a  schedule  to keep. He would ask me to come back to the path
and I would refuse. I remember him exclaiming  at  some  point,  "I
don't  understand  why  you have to make things hard for yourself."
I'm sure I said something like, "Because  it's  fun!"   Negotiating
the bramble wasn't as fast or easy as taking the path, but it was a
lot more interesting.

Comparing WordPress and Jekyll

Wordpress (specifically the hosted service at WordPress.com[2])  is
powerful,  easy  to use, efficient, and even pleasant. A variety of
themes and other customizations are available. You can update  your
site  from  any  device  with a web browser. You can use the visual
WYSIWYG editor or edit HTML directly. It handles  multiple  authors
and a variety of third-party plug-ins are available to provide var-
ious kinds of functionality.

Jekyll[3], on the other hand,  is  almost  none  of  those  things.
Jekyll  is essentially a document processor that runs on your local
machine. It is very flexible and requires little in the way of  re-
sources  to produce a quality, content-driven website. It also sup-
ports multiple authors and plug-ins, but not in the same  way  that
WordPress does.

The  key  difference  between  these  two options is that WordPress
sites are _dynamic_ and Jekyll sites are _static_. WordPress relies
on  a database to store data.      Content is pulled from the data-
base and assembled by the application after a request is  received.
This  also  means  that your web server needs to have the resources
available to retrieve and assemble a  response  for  each  request.
Jekyll does all of its processing up front to create a set of stat-
ic files that are ready to serve. This means that a Jekyll  website
doesn't need a database or an application runtime (aside from a web
server). Trading WordPress for Jekyll is  trading  ease-of-use  for
flexibility -- polar opposites in the software world.

Advantages

**It's Cheap**

Having  a  custom  domain  (like  davebucklin.com, or serial-hobby-
ist.com) at WordPress.com is not free. I paid for domain  registra-
tion  at  my  registrar, but the privilege of using WordPress.com's
nameservers comes at a price. It's not crazy  expensive,  but  it's
not nothing, and I've been feeling frugal lately. I had three sepa-
rate blogs, each with a custom domain. So, this move was  going  to
save me some money. Hosting a static website on Amazon S3[4] is not
free but, for a personal site, it can cost a  lot  less  than  what
WordPress.com  was  charging me.  GitHub Pages[5] is a free hosting
option for static sites and has the added benefit of  using  GitHub
as a repository for your content.

**Easy Authoring**

I  love  to  author in markdown[6]. It allows me to use lightweight
formatting to structure my writing without having to rely  on  pro-
prietary  or  heavy  formats. Markdown is editor agnostic, so I can
write using anything that lets me edit  text.  Using  WordPress,  I
would  draft  using markdown, and then use the Markdown Here[7] ex-
tension for Chrome to convert markdown to HTML. (I use this all the
time  to  create tables in Gmail.) This worked remarkably well, but
the styles would not always translate  consistently.  This  process
also caused me to lose the original markdown in my draft.  So, this
move would extend the utility of markdown in my workstream and  en-
able the end result to have consistent styles.

**It's Fun**

Finally,  I  was  looking  for a solution that had more DIY appeal.
WordPress is great, has lots of features, and is easy to  use.  For
my  purposes,  it  was  overkill and ended up getting in the way as
much as it helped. I wanted to be able to  customize  my  workflow,
add custom integrations and tools, and modify CSS directly. I want-
ed to _do cool stuff_. Being able to tweak my website is good,  but
Jekyll is capable of so much more. To see an example of this, check
out Tom Johnson's blog, I'd Rather Be  Writing[8],  where  he  sees
markdown  as  a viable alternative to DITA, and has created his own
documentation-centered theme for Jekyll.

Disadvantages

Saving money, authoring in markdown, and doing  cool  stuff.  These
are great advantages, but what are the downsides?

**Hosting Complexity**

The  complexity of setting up hosting on AWS[9] took some patience,
but it's a one-time set up and Amazon provides  excellent  step-by-
step guides. I had to create an AWS account, create storage buckets
in S3 that would store  my  static  site,  and  set  up  DNS  using
Route53. Setting all of this up may be overkill if GitHub Pages[10]
provides what you need.

**Workflow Complexity**

When I make updates to my content, I have to use Jekyll to  rebuild
the  site and then upload everything to S3. This ties my production
process to a machine with Jekyll installed  and  all  of  my  files
available.  I'm  sure I could automate this by installing Jekyll on
an EC2 instance and pulling posts from a cloud document storage so-
lution  like  Google  Drive, Box, or Dropbox. Using GitHub Pages, I
would only need to be able to  clone  my  repository  and  push  my
changes up to GitHub.

**User Error**

Using  Jekyll,  I have many more opportunities to make mistakes and
break something. I could mis-type a configuration value, bork  some
CSS,  or  accidentally  convert all non-numeric characters to back-
slashes while trying to get clever with regular expressions.   Fix-
ing  your own mistakes is a great way to learn how something works.
When you can find and fix someone else's mistakes,  you're  on  the
road to mastery. (Again, with GitHub Pages, I could revert my local
copy to a previous state.)

Summary

WordPress will let you set it and forget it. If your website  needs
a  database  (e.g.  because  you need to authenticate users, or you
have a store, or content is somehow conditional), you  should  con-
sider  WordPress  (or Squarespace, or Wix). Jekyll is great if your
needs are relatively basic, you want to do it yourself, tweak  end-
lessly,  and  string  solutions  together in new and exciting ways.
You can also look into Hekyll and Hugo. While you can make good use
of Jekyll without understanding how it all works, you may get a lot
more out of Jekyll by exploring How Jekyll Works[11].

[1]: /play/2016/11/06/wordpress-to-jekyll-part-2.html
[2]: http://wordpress.com
[3]: http://jekyllrb.com
[4]: http://aws.amazon.com
[5]: http://pages.github.com
[6]: http://daringfireball.net/projects/markdown/
[7]: http://markdown-here.com/
[8]: http://idratherbewriting.com/
[9]: aws.amazon.com
[10]: https://pages.github.com
[11]: https://www.bytesandwich.com/jekyll/software/blogging/2016/09/14/how-does-jekyll-work.html