Blog Migration: From Jekyll Chirpy to Hugo PaperMod

Background This blog started in late 2013, hosted on GitHub Pages with Jekyll. After several theme changes, the most recent setup was jekyll-theme-chirpy 7.1.1. After accumulating 55 articles, I decided to reassess the tech stack, looking for something simple, elegant, and developer-oriented. Static Blog Ecosystem in 2026 Before making a choice, I compared the current mainstream static site generators (SSGs): SSG Language Build Speed Highlights Jekyll Ruby Moderate Native GitHub Pages support, most mature ecosystem Hugo Go Extremely fast (<1ms/page) Single binary, zero dependencies Astro JS/TS Fast Zero JS by default, Island Architecture 11ty JS Fast Flexible, multi-template engine Zola Rust Extremely fast Single binary, built-in Sass/highlighting Why Hugo + PaperMod After evaluation, Hugo + PaperMod was the winner: ...

June 26, 2026 · 4 min · haoxiqiang

Building a Blog with Jekyll

This is the first post of this blog. I referenced many Jekyll templates at the time, adapted a custom theme inspired by Pure, and hosted it on GitHub. Source code: haoxiqiang-template Jekyll Overview Jekyll is a static site generator that converts plain text (Markdown, Liquid templates) into a complete static website without requiring a database. Combined with GitHub Pages, it provides free blog hosting. Features Code Highlighting Jekyll has built-in syntax highlighting powered by Rouge: 1 2 3 4 5 def print_hi(name) puts "Hi, #{name}" end print_hi('Tom') #=> prints 'Hi, Tom' LaTeX Math Rendering Set latex: true in the page front matter to enable MathJax rendering: $$ \begin{aligned} \dot{x} &= \sigma(y-x) \ \dot{y} &= \rho x - y - xz \ \dot{z} &= -\beta z + xy \end{aligned} $$ $$ a^2 + b^2 = c^2 $$ When $a \ne 0$, there are two solutions to $ax^2 + bx + c = 0$. Excerpt Separator Use ` ...

December 21, 2013 · 1 min · haoxiqiang