Planning with Claude Desktop, Coding with Claude Code

I started a new personal project recently, and decided to try a new approach to development. Instead of using planning mode and designing large blocks of code at once, I now use the Claude app on my phone, and on the web, to design the system by module. Once I have output close to what I want, I then add it to the repository and iterate on it with Claude Code from there.

Why? Isn't Claude Code's Plan Mode designed for this use case?

Read more →

Claude Code Custom Slash Commands

Since moving from Aider to Claude Code, I struggled to get Claude to consistently perform certain actions (like testing, linting, committing). Claude Code is more general purpose, while Aider felt designed around core coding workflows.

At first, I thought that leveraging hooks was going to be the key to getting a consistent workflow. However, I ran into problems figuring out which hooks really mark the end of a task that indicates it is time to lint or test or commit. Should I do it after every change? Or when it stops?

Read more →

Remote Agents and You

Over the past month, I have been trying out remote agents on a complex, legacy codebase as a method for automating bug fixes for tickets that land in a "Triage" queue in Linear.

For our experiments, I hand pick the tickets to send to our remote agent, Codegen, which directly integrates with Linear. Concurrently, I use Claude Code and the Linear MCP Server to run the same process on my local machine as a method of comparison.

Read more →

Helpful MCP Servers

Anthropic's Model Context Protocol has made Claude Code my daily driver (sorry Aider). If you are unfamiliar, MCP is a specific interface definition that exposes a service as a tool for an MCP Client (Claude Code, Cursor, Copilot).

I won't dig into the details of exactly how MCP works, but instead I want to provide a quick list of MCP servers that can expand your coding agent's capabilities.

Read more →

Enterprise Vibe Coding

A few days ago, the team over at Cloudflare released an OAuth library that was developed with extensive help from Claude. They went the extra step and published detailed information about the prompts used and the commit history gives insight into the limitations of Claude, if not all coding agents.

For the past three weeks, I have been waking up at 5AM to work on some projects before my son needs to get ready for school. My goal is figure out what level of guardrails are necessary to prevent code from devolving into a sloppy mess. I find myself restarting projects, sometimes after a single day, because the code has become unmaintainable.

Read more →

Reformed AI Skeptic

If you even casually browse HackerNews, you probably saw "My AI Skeptic Friends are all Nuts" and the -raging flame war- heated debate it triggered.

I love HN for all of the skeptics and naysayers; it keeps me grounded and constantly questioning unbridled enthusiasm for AI. However, I am becoming less skeptical by the day as I continue to improve my systems for working with agents.

Read more →

Shifting Left

Not So Common Thoughts produced a great post that succinctly combines the historical ways that technology has shifted production away from skilled labor, i.e. people needing years of experience with a certain skill, towards something approaching a critic, or someone with good taste and judgement. Brian Eno recognized how music was affected in such a way by the advent of the computer sequencer.

What does this mean for the software engineer in the world of Claude & ChatGPT? Are we all just "Ideas Guys", endlessly bothering our agents to "trust them - this idea is worth millions"?

Read more →

Minimal Viable Blogging

On HackerNews today, there were two articles very relevant to my journey in building out my website.

  1. The Minimum Viable Blog
  2. Why can't html alone do includes?

Read more →

Sorting files in reverse order

This one had me scratching my head for far too long. How do you render a list of posts in reverse order? I knew to make it easy, I would name files to ensure they are sorted in order on the file system.

I thought all I had to do was reverse (listFiles "./posts/") in my Caddyfile. This worked just fine on my machine, but when deployed, my post order would be wildly incorrect.

Read more →

Styling code blocks with Chroma

I have always found it difficult to properly style my code blocks when using just HTML. My last attempt used a bit of Javascript to generate it on the fly which led to terrible layout shifts on first load.

Caddy uses Chroma for handling tokenization of code blocks within a markdown file and provides styles. A fully static approach is exactly what I was looking for, but I struggled to get the styling to work.

Read more →

Anatomy of a Post

Before diving into the template that drives the feed itself, let's break down what a post looks like and the magic of the splitFrontMatter function..

The file driving a post is laid out like so:


---
title: My title
date: 2025-04-25
tags: helpful, tags
description: SEO description
---
{markdown content}

Read more →

Hello World

After many futile attempts to start blogging, I decided to start small with link posts and a more freeform feed.

I became a fan of Simon Willison's blog and was inspired by his post on how to run a link blog

Of course, before I could get started, I had to ask myself how I was going to manage this feed a.k.a procrastinating on the hard task of actually writing.

Read more →