Welcome to MetaSean's Blog

Hello and welcome to MetaSean’s Blog!

This blog is primarily to document my journeys through the lands of JavaScript, but I’m sure I’ll occasionally deviate.

Choice of Blog Framework

Basic Constraints

Because I’m diving head-first into JavaScript and Node.js, I knew I wanted this blog to be based on JavaScript and Node.js. I also wanted something that was easy to get started with, but that would still allow me to customize it, and in particular that would allow me to use newly acquired skills to personalize and extend it.

As part of the “easy to get started with”, I wanted something that would allow me to get it up on GitHub personal pages, but with the goal to eventually self-host.

Metalsmith

I played with Metalsmith for a while, quite a while in fact. I followed the go to tutorial for Metalsmith, but by the end of the second part I was consistently lost and didn’t have a functioning blog.

At this point, Metalsmith fails my “easy to get started with” test. It looks like a powerful approach, and I’ll probably revisit it when I’m further along in my own JavaScript journey, but after much frustration I needed to move on.

Hexo

My last attempt to get Metalsmith up and running was toward the end of my first week at DevMountain. I wanted to have my blog up, running, and problem-free - NOW! I did a really, really quick review of different Node.js blog frameworks, and the one that popped out as most closely aligned with my needs was Hexo. So after writing up my DevMountain - Week One post in markdown, I worked on getting my Hexo-based blog up and running.

My Hexo Journey thus far…

In the Beginning…

I followed the excellent documentation and had a server running, with my existing markdown file, and I was having a ton of fun within 15 minutes! This definitely met my “easy to get started with” requirement.

I got it to a point where I was ready to push it to my GitHub pages, and fail. Ouch! I started troubleshooting, and troubleshooting, and more troubleshooting. I went through the documentation, and mucked around with my _config.yml files, all to no avail.

The Hexo Community comes through!

Finally, I posted my problem to Hexo issues.

It was quiet for an eternity of 12 hours (like a watched pot, a watched issue seems silent for an eternity)!

Then a couple of folks (jkuetemeier and John Stevenson, aka jr0cket) made suggestions, one of which moved me forward ever so slightly.

I posted a detailed update, and almost immediately got a response from Hexo’s creator.

I followed his suggustion and gave an update on my still stalled progress. Almost immediately I was greeted with a painful sign - my issue was given a “bug” label.

So I waited another eternity (i.e. about 8.5 hrs this time).

Then John posted another suggestion, along with caveat commands to get log information if it didn’t work (this did not inspire confidence). So, with mixed excitement and dread, I followed his suggestion, and, well, here we are! :-) WOOT, WOOT!!

Up and Running

With it fully up and running, I’ve been playing with Hexo off and on for the last two days (between DevMountain class, related assignments, and trying to wrap my head around callbacks and .this interactions).

The Pros:

  • Hexo is definitely easy to use, pretty much as is.

  • There is an active and responsive global community. Having a global community is awesome, but it does mean a person can be waiting an eternity (of 8-12 hours) for responses to issues.

  • Installing themes is also really easy.

  • I ended up modifying one of the standard themes - Pacman.

  • Using a theme wasn’t quite as easy as I would have liked, but it certainly wasn’t hard. It simply wasn’t as modularized and reusable as I’d like, but more about that in just a moment.

So far, I really only have a few grips (and in the grand-scheme, they’re still pretty small).

  • While having the themes be completely stand-alone has advantages, it also has some disadvantages. For example, in trying to move back and forth between the Pacman theme and the RagingCat theme (a derivative of the Pacman theme), I had to reenter a lot of theme/_config.yml data that was common between them - i.e. it’s not DRY.

  • Another impact of the completely modular theme approach was when I tried to add a logo. I initially added it to the hexo/public/img directory, but during a standard hexo clean, hexo generate process it was “cleaned out”. That’s when I realized that I have to put my logo in the hexo/theme/*theme*/img directory. Which means if I switch themes, I have to move it for each theme. Instead, why not have a single hexo/src/img directory that all of the themes could pull from?

  • And more variations on a theme - while there are script plugins, they also belong to the hexo/theme/*theme*/scripts directory, not a hexo/scripts directory. :-(

Summary

I’ve got Hexo up and running - WOOT!

There are certainly some annoyances, but Hoxo (a) absolutely meets my immediate needs and (b) is hackable, so when I have the skills to address the things I find annoying, I will be able to do so. So, at this point it seems like a major “WIN”!

I’m sure to make many changes to this site over in the near future (like fixing the quote outline and contents block z-index issue), so stay tuned. But right now – I’m just happy to have a basic, customized, node.js blog up and running, with posts for my first two weeks at DevMountain.