The problem I care about with LLM coding is drift: one plausible shortcut gets copied, then future sessions start treating it as how the app works. I’ve used AI coding tools every day as a team lead on large private client codebases, across...
A reference page for making stuff using Bluesky's public API.
This whole thing started with a chat with Kev, (Svelte Society co-founder), after a few beers at the CityJS after-party. I mentioned my-pi to him and his first question to me was “oh! does it have LSP built in?” I was...
So, here’s the situation. I use Claude Code with cloud CLIs daily, AWS, Hetzner, that sort of thing. Claude Code is genuinely the ultimate cheat code for bash though! Need to query an API, parse some JSON, chain a few commands together? Claude does...
A step-by-step guide to exporting your subscriptions.csv file from YouTube using Google Takeout.
I saw a Reddit post the other day that called setting up MCP servers in Claude Code “a tech ritual for the quietly desperate.” 😅 That tracks! The comments were full of people saying things like “took me 30 minutes to figure out where the config...
I’ve been using the forced-eval hook for months now. It’s part of my claude-code-toolkit plugin and it’s been working brilliantly. Until about a week and a half ago, when Claude just started skipping it.
Right, so, I stumbled across this post by Karan Bansal about enabling LSP in Claude Code and thought “no way this actually works.” Turns out it does. Here’s the thing - every time you ask Claude Code “where is this function defined?”, it does what...
Ok, so, I’ve built over 20 MCP servers at this point. Search tools, memory systems, doc scrapers, workflow builders. I’ve written about configuring MCP tools in Claude Code before, but one thing I’ve never actually covered is the bit that tripped me...
Right, so, remember when I wrote about unlocking swarm mode with claude-sneakpeek? And then using Daytona sandboxes with it? Well, I said at the end of that first post that this would be short lived and I’d be switching once Anthropic shipped it...
Ok, so, I’ve been using the Claude Code swarm feature now for several days and I’m super impressed! Like, three days in and I already can’t see myself not using it in my daily workflow! Is it a token gobbling nightmare? Yes, does it get the work...
So, I watched a video about Kimi K2.5 from Sam Witteveen that detailed a load of cool looking features but what caught my eye was the swarm mode feature, this is where it will spin up to (apparently) 100 sub-agents to work on tasks in parallel.
Real quick on this one! I need to document it though as this has been a persistent pain for me for a while! Getting the GitHub CLI to work in Windows Subsystem for Linux (WSL). Well, turns out it’s still an issue! But with some searching and...
Gain a working knowledge of ATProto OAuth and feel confident implementing it in your projects.
So, remember that blog post I wrote about Claude Code skills being a coin flip? Where the “simple hook” approach gave me a whopping 50% success rate and I basically said “just invoke skills manually”? Yeah, well, I wasn’t happy with that. Coin...
Learn how to setup your self hosted PDS to use an S3 object store for blob storage.
Learn how to use a Cloudflare Tunnel to host your PDS on a local network.
So I got Claude Skills to register with Claude Code (sorted the YAML formatting issue), and the skills are now showing up when I ask Claude to list them. Job done, right? Nah! Turns out getting skills to actually activate reliably when you need them...
How to host your own personal data server using NixOS
Not having Claude Code skills showing up? Yeah, I hit this too… When Claude Skills were announced I jumped straight on that! Dug into it and built out several skills, for this site and other projects. I even built out my own CLI tool (Claude Code...
I was looking up something on my site for reference (as I usually do when trying to recall a detail) when I noticed the popular posts in the footer weren’t displaying. That’s odd. I’d been working with the database locally recently, so my immediate...
So there I was, starting a Claude Code session, and I noticed something disturbing and completely of my own making: my MCP tools were consuming 66,000+ tokens of context before I even started a conversation. That’s a massive chunk of Claude’s...
In this post I’m going to go through converting the SvelteKit minimal template from using and over to using , and . Why? Well, it’s as close to testing components and pages as you can get, rather than relying on the simulated it’s...
Ever wondered how those fancy animations on the web work?
Learn about the basics of Astro's integration system, the foundation of the Astro Ecosystem!
A comprehensive guide for companies, communities, and creators looking to establish and grow their presence on Bluesky.
Aight! So, I’ve been using Claude Code for a bit now, and one thing that’s been bugging me is the way you’re supposed to configure MCP tools. If you follow the official approach, you’re stepping through a CLI wizard that forces you to enter...
I used Windsurf for the whole day yesterday, I’m impressed! I’ve been using Cursor as part of my development workflow full time since September last year. There’s many a post on here from me on integrating other tools into my workflow for using “AI”...
So, this is my updated Zsh config! To be honest there’s little that’s changed over the years since I originally posted about this a good three years ago now in My Zsh Config. But! The changes are substantial enough for me to justify a new post.
Super quick one I want to document here! I got myself on a side quest, again! No biggie, my ZSH shell was taking ages to load. When I say ages, more like 5+ seconds every time I opened a new terminal, that sort of thing can add up. This is just...
In this post, I’ll go through the process of getting a Model Context Protocol (MCP) tool up and running with the Claude desktop app using Node in Windows Subsystem for Linux (WSL). Using WSL allows me to manage my Node versions on WSL...
Real quick one from me on updating a Hetzner VPS with something like . I noticed some weird behaviour today when I wanted to install on my Hetzner box. I was greeted with the following message:
A quick guide on how to set up mackup for dotfiles.
It’s been since I last wrote about implementing redirects for changed post routes in SvelteKit. In that time, SvelteKit has evolved, and so has my approach to handling these redirects. Today, I’m sharing an update on how I’ve improved...
A blunt guide on how to set up kitty as your new terminal.
The WSL Cursor setup, debugging your setup before you even code! I initially tried Cursor around 18 months ago when I saw something from Catalin about it. At the time I couldn’t get past launching it with the command. With all the hype going...
Aight! So, I’ve gone off of Fly.io, great service, I’ll probably come back to it in the future, but, now I’m going to set up my own VPS on Hetzner. There’s threads from Puru on him doing it but he expertly didn’t document what he did, so, I’m going...
Obsidian: dooooooooope open source writing app tailored to programmers' thought processes.
I’m currently looking into upgrading a large app where I’m working, to upgrade from Svelte 4 to Svelte 5. The upgrade from 4-5 wasn’t as much of a problem as I thought it would be, there was one issue with another Svelte package that I discovered I...
I’ve been doing more stuff with Fly.io and Turso with SvelteKit. If you’re following my posts you’ll know I’ve got a real nerd boner for using Turso in anything I can cram it into at the moment! Why Fly.io though? Just get a $5 VPS and use that!
How to get the array of selected values from a multi-select form input? This is a short post detailing my stupidity and how I overcame it. So, here’s the sitch! I was starting again with the dopedevs.icu project I started over 4 years ago but never...
Real quick! I’m in the process of migrating domains to Cloudflare. I moved scottspence.dev recently and noticed my Fastmail DKIM wasn’t configured correctly. Cloudflare will import your DNS records when you add a domain to your account with their...
So, I’ve got these massive CSV files (some up to 233 thousand rows) that I exported from Fathom Analytics. I want to import them into the Turso DB I use for this site, so, eventually visitors will be able to view the data. I’m lot leaving Fathom, I...
So, you’ve just upgraded to Svelte 5 and are excited to test out your components. But wait, what’s this? You run your tests and hit an error that’s throwing a spanner in the works:
I was asking ChatGPT to read some posts from my site and summarise them for me, I was a bit surprised when I got the response “I wasn’t able to directly access the URL you provided due to restrictions on the webpage.” from the bot. It was then that...