2025-12-21 08:00:00
I've been using Claude Code quite a lot recently. And while it hasn't replaced 100% of my programming, it is becoming invaluable for tasks that either require too much time (I have a baby), or for things that have low ROI. E.g. I don't have hours to rebuild a new theme for my blog. But Claude can do it in a few prompts.
The primary project I've been using Claude with is this blog. It's an 11ty blog with a lot of custom formatting, so most changes require some investigation and development. So that means when I have a quick idea I want to explore, I rarely have the time or effort.
But over the past week or so, I've added quite a few updates to this blog.
It started with a complete design overhaul. This started with a few investigative prompts to Claude on the web interface to play around with how I could redesign the home page of my blog. I wanted to transform from just showing the first page of blog posts, to something that also showed projects, and social links. It generated a static HTML file, and I was pretty impressed with it. Of course, I wanted some tweaks, but the feel of the design was very appealing. So I told it to generate a design style document that I could use to help redesign the blog.
Once I had that design style document ready, I used Claude Code to first create a plan on how to implement the design. Then I asked it to proceed with each step, so I could review in between, and ask for some small changes.
After not much time, I had a new site design that I was very happy with.



Once the site was built, it was quite easy to make small additions such as dark mode, better fonts, etc. The understanding of the code and context around what the site is still impresses me. The fact that I can say "change the nav bar on the home page to X", and it can work out what file and bit of code to change is pretty cool.
The next thing I tackled was the open graph images that are generated for each blog post, which are displayed when posting to social media. I had built something before for this, but I was never happy with it.
So first I asked Claude to redesign the image to fit with the theme's colours, ensuring that the post title, site title, and site url are in the image. It came up with something simple, and I thought it was good enough for now. It's not spectacular, but it's clear, and it fits with the site's design.

Once it was being generated, I was asking it many questions about how it could be refactored to make it faster, not always generated locally, and a few other improvements. In the end, it swapped out the existing image generation which was creating a static image for every post, for a Vercel serverless function that dynamically generates the OG image based on the post title being passed as a parameter.
Under the hood it uses Satori to generate the images. After they're generated, the images are then cached in the Vercel CDN.
The next thing I asked Claude was to come up with ideas on how I could make posting to this blog easier.
At the core, every post on this blog comes from a Markdown file in a specific folder structure, with some frontmatter to control things like the permalink, layout, tags, etc. It's then deployed via Vercel after detecting changes in the Git repo.
I've had a few bash scripts that I could run locally on a computer to kickstart the process, but it still felt cumbersome.
Claude came up with a few ideas, including using a CMS which would sit on top of my static 11ty site. I wasn't really fond of that at all, as it's yet one more thing to manage. But it did suggest an "inbox" idea, which was to have a new folder that would store new posts, and then a GitHub action could be triggered, which would process this file, generate some basic frontmatter, and move to the correct directory.
That sounded like a good solution, so it went ahead and built it.
So now, if I want to quickly post something to the blog, I just need to create a Markdown file, ensuring there is an H1 header on the first line, place it in the /inbox/ directory, and push to the Git repo. This means even on my iPhone, I can use Shortcuts and Working Copy to automate it even more.
In fact, the last post on this blog was published via this Git action.
And now with this post, the inbox processing feature will also handle images. I simply gave it an example scenario of placing 2 files in the inbox folder, post.md and image.jpeg and the post contents having the image referenced as . From that, it updated the script to move the images to the correct location, ensuring that the relative link will work.
When the home page was initially built, the blog section was just a list of titles, without any content. And while I liked the minimal style, sometimes a title can't capture the meaning of a post. So I decided I wanted a short excerpt displayed, just to give a quick feel of what the post is about.

There was a bit of trial and error to get it looking right. But in the end it looks like this:
I expect in the future I will add a way to add a specific excerpt divider in a post. But at least this gives me a good default behaviour.
This was a small task I completed with Claude today. I had a few different RSS feeds being generated for this blog, including a few duplicates of the main feed that were due to previous blog platform migrations.
I wanted to clean it up, so I first asked Claude to analyse what RSS feeds were being generated. It found 5:
index.xml/rss/feed/post.xml/micro.xml/essay.xmlThat seemed a bit ugly to me, so I asked it to restructure to only generate 4 actual feeds:
/feed - All content/feed/post - Just standard blog posts/feed/essay - Essays/feed/micro - Micro postsClaude changed the feed generation to use these new outputs, and updated the Vercel configuration to rewrite these feeds to the older locations so nothing breaks.
At the same time, the RSS feeds were updated to follow the RSS specification.
2025-12-16 08:00:00
This is probably my first goal for 2026.
My email is a mess.
I've got a few different addresses, which were meant to be for different purposes. But slowly they’ve sort of merged together into a big pile of advertising, newsletters I don't read, updates from shops I bought one thing from 10 years ago, etc.
It’s hard to cut through the noise and read email that actually matters.
As for spam, the worst culprit has to be iCloud. Any spam filtering may as well not exist. I can move an email to junk, and try to use the built-in unsubscribe tool. But nevertheless, the next day the exact same email will arrive.
Gmail isn’t as bad, but since some of the addresses are technically publicly available, they're no doubt picked up by bots.
Then, there's always the chance of a leak, or a company selling my data.
What I really want is a way to separate email from people, emails not from people but important, and the rest.
I have a "reply via email" button here on my blog, but the emails get thrown onto the pile. So I probably end up missing some emails from people, where I would have probably liked to reply and to have a conversation.
I'm not sure I'm ready to create any new email addresses. I've done that before, and I still end up in the same place. But when I get some free time, I definitely want to look into this more.
There has to be a tool that makes email usable.
2025-12-07 08:00:00
Ever since I started writing on the internet, I've had a tendency to want to constantly start from scratch, switch platforms, change domain name, etc. And this year hasn't been any different.
I've toyed with various ideas, and a few of them have actually seen the light of day. So I thought now was a good time to run through where I'm currently writing, and what to expect from each.
This is the newest writing project of mine. It is essentially a place where I can put my more serious writing. In fact, in my plans for this blog, it should support three types of content:
I've written some short essays in the past, and there are definitely some posts where I've really gone deep into an idea. But I wanted a clear place for my more thought-out writing. And this is it.
I published my first observation post on this blog a week ago, which is about my thoughts on when you become an adult.
Another site which also follows the idea of separating a category of content away from my personal blog.
This time it started as a way to clearly separate a journey of using the iPad Pro more during the iPadOS 26 beta.
However, after the iPad experiment came to a bit of a dead end, it also served as the place where I wrote about my next journey, which was to start using Omarchy on a new Framework laptop.
As the name suggests, this blog is where I will post updates on the various journeys I take through the technology I use.
The blog you're reading now. My personal blog that has content going back to 2013.
I have to admit, it's a bit of a mess right now, and there's a bunch of old rubbish I want to clear out eventually.
But another reason why I wanted to separate some writing onto other sites, is that this is my personal blog. So it's going to be messy sometimes. It's going to be a place where I share photos, links to videos, really quick thoughts, and opinions that probably won't hold up for very long.
When I think about what I want this site to be, it's a playground. Somewhere that isn't too serious. Where things may break, posts may be deleted, and the design will be radically altered without any notice.
I want to post here more often. But my decision to use 11ty has added a bit of friction that isn't always welcome. Nevertheless, that's a problem that I'll try to fix.
2025-09-22 08:00:00
AI seems to have weaved its way into most software developers daily life, whether it's conversational advice, better autocomplete, or even just plain code generation. However, the use-case that I really enjoy is when it can speed-run boring tasks for me.
I don't use AI that much when programming. For me, I prefer it to complete little side quests for me than to get involved in my main work.
My recent use case was for this blog. I change up how I write and publish posts quite regularly, depending on the computer, and tools I want to use. So while I'm using Omarchy on my new Framework laptop, I'm more terminal-heavy than before. So ideally, I'd be able to run a quick shell script on my laptop, and then jump into writing a blog post.
So I gave Perplexity my idea, and then let it come up with a simple bash script to do that very job for me.
#!/usr/bin/env bash
# Exit if no title is provided
if [ -z "$1" ]; then
echo "Usage: $0 \"Post Title\""
exit 1
fi
# Get current date parts
YEAR=$(date +%Y)
MONTH=$(date +%m)
DATE=$(date +%Y-%m-%d)
# Input title
TITLE="$1"
# Create slug (snake_case for filename, kebab-case for permalink)
SLUG_SNAKE=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/_/g; s/^_|_$//g')
SLUG_KEBAB=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g; s/^-|-$//g')
# Directory structure
DIR="posts/$YEAR/$MONTH"
mkdir -p "$DIR"
# Filename
FILE="$DIR/$SLUG_SNAKE.md"
# If file already exists, don’t overwrite
if [ -f "$FILE" ]; then
echo "File already exists: $FILE"
nvim "$FILE"
exit 0
fi
# Write frontmatter to file
cat >"$FILE" <<EOF
---
title: $TITLE
date: $DATE
tags:
- post
layout: layouts/post
permalink: $SLUG_KEBAB/
---
EOF
# Open in Neovim
nvim +"normal Go" "$FILE"
It does the following:
I'm sure I could have written this script myself, but I didn't want to. This is the sort of task that I put off for weeks, and maybe never get around to doing it. So being able to get AI to do this for me, makes my life much easier.
I only just thought about this, but I should probably make use of my own Text Case CLI tool, and also format the title properly. That can be in the next version.
2025-08-10 02:00:00
I didn't run this far to only run this far.
—The back of a guys t-shirt in Barcelona, Spain.
I didn't get this at first, but now I really like it.
2025-06-29 08:00:00
I'm pleased to announce a new project of mine, Journeys Through Glass. It is a new blog by myself, where I will document my journey using the iPad as a primary device. From my introduction:
Around two weeks ago, we got to see the iPad get a hint at a new life, in the form of iPadOS 26. That made me wonder if this could spark a revival of my usage of my iPad. - "The Start of a Journey"
My first few posts:
I'll still be posting here, but anything related to my iPad journey will be posted on my new blog!