This is my personal blog where I talk about programming and business mainly and probably others sometimes.
Homepage: https://whyboobo.com/
To stay updated, subscribe to the RSS feed or use the 👀Watch button on GitHub.
For any comments regarding posts or others, please feel free to reach me via the social links in the site footer, email, DM on 🐦 Twitter or by Discussion Section on Github.
The site is built with Astro and Yarn 4 (via Corepack). Node 22.12+ is required.
corepack enable
yarn install
yarn dev # http://localhost:4321 (search needs a build first)
yarn build # astro build + Pagefind search index into dist/
yarn preview # serve dist/Pushing to master deploys to GitHub Pages via .github/workflows/deploy.yml.
| Path | What |
|---|---|
src/content/posts/YYYY/MM/YYYY-MM-DD-slug.md |
Blog posts. URL is /<categories>/<slug>/ |
src/content/posts/drafts/ |
Drafts (draft: true), shown only in yarn dev |
src/content/portfolio/ |
Portfolio items, served at /portfolio/<file-name>/ |
src/content/categories/, src/content/tags/ |
Titles and summaries for category and tag pages |
src/site.config.ts |
Site title, socials, share buttons, text strings, GA4 id |
src/styles/ |
SCSS (Pixyll-based theme) |
public/ |
Static files copied as-is (images, favicons, CNAME, robots.txt) |
title: Draft Template
summary: Summary Draft Template
categories: category # space-separated; each one becomes a URL segment
tags: tag1 tag2 # space-separated or a YAML list
date: 2021-01-01 09:09:09 +0000
update_date: 2021-02-01 # optional
cover: https://example.com/img.png
minutes: 5 # optional, overrides the computed reading time
redirect_from: # old URLs that should redirect here
- /old1-route
- /old2-route
canonical_url: https://example.com # a page whose canonical points elsewhere is left out of the sitemap
keywords: one, two
draft: true # not built in productionExternal links open in a new tab automatically, so there's no need for {:target="_blank"}.
Use .mdx when a post needs components (see 2026-04-22-retro-games.mdx).