Blog

Welcome to my blog, a place where I write about the things I’m building, learning, and figuring out along the way.

Most posts revolve around frontend development,design, creative side projects, and the occasional technical rabbit hole that feels too interesting not to document.

Some entries are practical write-ups, others are more like project journals, notes from experiments, or things I wish I had found in one place when I started.

If any of it helps, inspires, or simply makes you curious to try something yourself, even better.

A restored grey rotary telephone containing a Raspberry Pi audio player.

PiPhone: A Rotary Telephone That Plays Random Poems

I put a Raspberry Pi and I2S amplifier inside a rotary telephone. Lifting the handset picks a poem from a public audio feed and plays it through the phone speaker.

A desk setup with VS Code and a Philips Hue lamp flashing as a status indicator for Codex.

Using a Philips Hue Lamp for Codex Task Notifications

A small PowerShell integration that makes my Philips Hue desk lamp flash when a Codex task finishes in VS Code.

A screenshot of my frontend developer portfolio homepage built with Astro.

How This Portfolio Is Built with Astro, Tailwind, and GSAP

Why I built this portfolio with Astro, Tailwind CSS, and small GSAP interactions instead of a large client-side app.

Training gear and post-workout snapshot from the 75 Hard challenge.

75 Hard: What 75 Days Actually Felt Like

I finished 75 Hard: 75 days of two daily workouts, reading, water, diet, and no alcohol. The results were good. Some of the rules were not sustainable.

Illustration of PasiLunch fetching and displaying restaurant menus in Slack and on a web dashboard.

Rebuilding PasiLunch for Messy Restaurant Menus

I rebuilt a Slack lunch bot into a small web service that scrapes Pasila restaurant menus and normalises them into one usable format.

A sleek, modern NAS setup in a white Jonsbo N2 case.

My Home NAS Build: 16TB with Unraid and Docker

My low-power Unraid NAS for media, photo backups, files, Home Assistant, and trying self-hosted tools.

Illustration of a lunch table with various dishes, representing LunchBot project.

Building a Slack Lunch Bot with Node.js and Cheerio

I built a small Node.js bot that collects local lunch menus and posts them in Slack.

A collection of book covers displayed on a digital screen.

Using Google Books Covers in an Astro Site Without Depending on Google at Runtime

A small Google Books lookup and local cover-cache workflow for the book sections on this site.

Pixoo display showing a chess rating.

Showing My Chess Rating on a Pixoo Display

A small Python script that fetches my Chess.com rating and shows it on a Pixoo pixel display on my shelf.

Spotify top tracks section displayed on a website

Making a Spotify Top 10 Less Repetitive

I fetch my Spotify top tracks, then keep one track per primary artist so the homepage does not show the same album cover five times.