Wait wait wait I know it’s not flashy. I decided to start blogging, now… 25 years after everyone else.
I know a blog isn’t exactly an innovative project. It might even sound boring in the age of AI-generated everything. But I like it. Blogging feels personal. Which by the way is kind of strange, right? Writing personal things online? It’s maybe a bit of nostalgia.
This idea has been sitting in my head for a while, but it never felt like the right thing to do. Probably because, every time I thought about it, I went straight into developer mode:
Which tools should I use? What stack? What about the design, the hosting, the automation?
Basically, everything except the fact that I just wanted to write.
So, a few weeks ago, I decided to build something very minimal. A simple web…
Wait wait wait I know it’s not flashy. I decided to start blogging, now… 25 years after everyone else.
I know a blog isn’t exactly an innovative project. It might even sound boring in the age of AI-generated everything. But I like it. Blogging feels personal. Which by the way is kind of strange, right? Writing personal things online? It’s maybe a bit of nostalgia.
This idea has been sitting in my head for a while, but it never felt like the right thing to do. Probably because, every time I thought about it, I went straight into developer mode:
Which tools should I use? What stack? What about the design, the hosting, the automation?
Basically, everything except the fact that I just wanted to write.
So, a few weeks ago, I decided to build something very minimal. A simple website, made with very boring tech. No fancy frameworks, no endless dependencies.
I knew I wanted to keep control of the underlying code (which is available here) so I didn’t want to use platforms like Medium or Substack for now. Plus, I have no business goals here. I just want a space to share thoughts, even if they don’t make sense to anyone but me.
I already had a small website hosted on GitHub Pages, so I started digging around and noticed they natively support Jekyll as a static site generator. I opened the Jekyll documentation. It’s short, well-written, and straight to the point. It just felt right even if it’s Ruby (I know, I know). It lets me keep control without needing an army of frameworks and build tools, but it still provides enough structure to write without touching raw HTML all the time.
The project was up and running in… what, maybe four hours? All these years of hesitation, and that was it.
First, I installed Jekyll locally. Just make sure to install the latest version of Ruby, not the one bundled with MacOS.
Then, the only slightly tricky part was integrating Tailwind CSS. To do that, I installed and configured a PostCSS gem called jekyll-postcss-v2. The configuration is straightforward:
// postcss.config.js
module.exports = {
plugins: {
"@tailwindcss/postcss": {},
},
};
I also needed to add this plugin to my Jekyll configuration file:
# _config.yml
plugins:
- jekyll-postcss
postcss:
cache: false # Use Tailwind CSS JIT engine instead.
The next step was to install Tailwind CSS and create its configuration file:
// tailwind.config.js
module.exports = {
content: ["./**/*.html"],
plugins: [],
theme: {},
};
I can now import the library in my main CSS file with:
@import "tailwindcss";
h1 {
/* Utility classes and the @apply keywords are available. */
@apply text-xl;
}
The last step was to automate everything with GitHub Actions. I used the official template and just added the steps required to install pnpm dependencies:
jobs:
build:
steps:
# ...
# https://github.com/marketplace/actions/setup-pnpm#use-cache-to-reduce-installation-time
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
run_install: false
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build with Jekyll
# Outputs to the './_site' directory by default.
run: bundle exec jekyll build --baseurl "$"
env:
JEKYLL_ENV: production
- name: Upload artifact
# Automatically uploads an artifact from the './_site' directory by default.
uses: actions/upload-pages-artifact@v3
And voilà! The website now looks more like a web reader and I like that. It’s simple, quiet, and kind of mine. This article is written on something really not that cool. But hey, who knows? Maybe I’ll write something nice someday!