Switching to Hugo @ Andrew | 2021-11-20T00:00:00Z | 3 minutes read | Update at 2021-11-20T00:00:00Z

Jekyll, self hosting a hacked together templating server, or Hugo… the possibilities are endless.

Motivation

I’ve been wanting to switch to something other than my own templating system for a while now. However, I had a couple reasons for keeping the templating system:

  • “Absolute control” over everything
    • I won’t have to go digging for loopholes to get certain features I want working
  • Learning
  • Software independence
    • A bit ironic considering the previous project had way too many node dependencies anyway

Things eventually got messy. I mean… I had code that looked like this 😂 :

const reqPaths: {[p: string]: string} = {
  "/": "about.html", 
  "/url": "url.html", 
  "/softsim": "softsim.html", 
  "/iou": "iou.html",
  "/truthy": "truthy.html",
  "/blog": "blog.html"
};

Object.keys(reqPaths).forEach(reqPath => {
  app.get(reqPath, (req: Request, res: Response, next: NextFunction) => {
    // it's not actually a blog, but I conveniently wrote this to treat this with arbitrary keys
    readBlog(path.join(process.cwd(), `public/views/pages/${reqPaths[reqPath]}`)).then((blog: Blog) => {
      blog.url = "https://andw.me"+req.url;

      res.render("index", {
        blog: blog
      });
    }).catch((err: Error) => {
      console.log(err);
      // 404 them lol
      next();
    });
  });
});

Futhermore, I noticed that there was egress limit on Google Cloud Platform’s free tier, and although I haven’t crossed the limit yet (and that CloudFlare does an amazing job with regionalized caching), I wanted to make sure that I wasn’t getting charged for serving too much data.

The solution was to switch to a static site that is hosted generously by a reliable provider: Github Pages.

A website from scratch?

Pfft… no way!

The main reason I used a markdown-to-html generator in the first place was to avoid writing HTML. I am by no means a proper frontend designer, so markdown is a solid first choice to write blogs.

I didn’t want to deal with any backend code or want to go through the trouble of hosting for anything dynamic.

I started with Jekyll, a static site generator. Jekyll comes to mind when most people think of static web generators built around markdown.

Jekyll

The reason why I didn’t stick with Jekyll is because I didn’t like the look of any of the themes.

I found an “awesome list” of Jekyll themes but even then, there still wasn’t one that stood out. Minimal Mistakes is a good theme, but I couldn’t get it to work.

The Jekyll themes that looked “good” had to be bought from the jekyllthemes site.

I will definitely be using Jekyll for my other projects though.

Hugo

I looked over a couple of other people’s blogs to see what Jekyll themes they were using. I ran into a Jekyll alternative instead: Hugo. Hugo came with many more themes that I could use.

I picked Dream by gleny0ung to use because I liked the cell-like blog previews on the home page.

Moving forward

My old website can still be accessed at old.andw.me.

I still need to figure out and where I’m going to place my old tools like truthy and the URL shortener.

© 2021 - 2022 Andrew's Blog

Powered by Hugo with theme Dream.

avatar

Andrew's BlogI'll do it slowly-- just 2048 at a time.

About Me

Andrew’s blog

Fine me rambling on about things here.

First year uni student and Software Engineer with a focus on Parallel programming

Skills:

  • Python
  • C++
  • C
  • Java
  • Go
  • Javascript / Typescript
  • Lua

Technology:

  • OpenGL
  • CUDA, OpenCL
  • Git control
  • Microsoft Azure
  • Google Cloud Platform
  • Docker

– November 20th, 2021

Acknowledgements

Thanks to everyone below

g1eny0ung

for this amazing Hugo theme

Social Links