RSSAmplifier

Blog

Ed Spencer's Blog

I'm an experienced full stack software engineer with a passion for UI, UX and the full stack.

edspencer.netRSS feed ↗115 posts

Latest posts

Better Claude Code with Paddock on Your Laptop

Paddock now runs on your own machine with one command, opens on the Claude Code history you already have, and tells you exactly which parts of your ~/.claude it is and isn't touching.

Claude Code, meet Paddock

Paddock is a thin wrapper around Claude Code that runs it on a server and gives it a web UI — persistent, resumable chats you can reach from any laptop or phone, with forking, sub-agents, file sending and schedules on top. Here's why I built it and how it works.

herdctl: Composable Fleets of Claude Agents

I justed added support for Composable Fleets to herdctl. As I build herdctl into more projects, I increasingly find myself creating a fleet of agents per project, and wanted a way to run them all from a central place so that I can juggle a bunch of things at once.

Continuous Security Auditing with herdctl

herdctl makes it really easy to run agentic workflows on a schedule. One of the first such workflows I added to herdctl itself was a daily security audit. This has been running for a few weeks now, so I wanted to share some early results.

Herdctl Gains Slack and Web Connectors

herdctl now supports Slack and web connectors, enabling AI agents to interact with these platforms. The web connector gives your a

Make Switches Quiet Again

My new 2.5 gigabit TP-Link switches are fast but noisy. Here's how I made them less noisy.

Run Claude Code Agents in Docker with herdctl

herdctl now supports running Claude Code Agents in Docker containers, significantly expanding your options for locking your agents down. It also added support for the claude code CLI runtime, ensuring your can use your inexpensive Claude Max Plan tokens.

herdctl: an orchestration layer for Claude Code

herdctl is an orchestration layer for Claude Code. It lets your agents run on a schedule, as part of a fleet, and puts them right in your discord or slack channel.

frameit.dev - fast and free video thumbs, title cards and OG images

Introducing frameit.dev - a free, open source tool for creating professional thumbnails and social media graphics

Revisiting Bragdoc

9 months after the original creation of bragdoc.ai, I've rebuilt it from the ground up with privacy-first architecture, configurable LLM providers, and a proper web UI. Here's what changed and why it matters for engineers tracking their work.

Claude Code and Git Worktrees

Claude Code and Git Worktrees: a match made in heaven? Not really.

Building an LLM Router with mdx-prompt and NextJS

Integrating mdx-prompt with NextJS to build a powerful AI app

claudify: fire and forget for Claude Code

Introducing claudify - a simple but powerful shell function that uses Claude Code to automatically fix errors in your command-line operations, saving you time and frustration.

Introducing Task Demon: Vibe Coding with a Plan

Introducing Task Demon: Vibe Coding that actually works

Deep Research Yourself

Deep Research Yourself to get an honest view of what companies see when they think about hiring you

Eval-Driven Design with NextJS and mdx-prompt

Writing and running great Evals for your JSX-rendered LLM Prompts

mdx-prompt: Real World Example Deep Dive

LLMs use strings. React generates strings. We know React. Let's use React to render Prompts

mdx-prompt: Composable LLM Prompts with JSX

LLMs use strings. React generates strings. We know React. Let's use React to render Prompts

How I built bragdoc.ai in 3 weeks

Embrace the power of AI tooling, or embrace your own destruction!

NarratorAI: Trainable AI assistant for Node and React

My new Narrator AI library writes content around your content so you don't have to - intros, outros and more

ReadNext: AI Content Recommendations for Node JS

ReadNext is a new npm package that creates content recommendations for your Node JS projects.

AI Content Recommendations with TypeScript

Easy RAG for TypeScript and React Apps Part 2 - Generating content recommendations using ReadNext

Easy RAG for TypeScript and React Apps

RAG is not just for Pythonistas - it's easy and powerful with TypeScript and React too

Blending Markdown and React components in NextJS

Markdown is a really nice way to write content like blog posts and other long-form content, with live components inside

Introducing InformAI - Easy & Useful AI for React apps

InformAI lets AI see what your user sees in your React apps

Error handling and retry with React Server Components

React Server Components can throw errors. Here's how to handle and recover from them

Promises across the void: Streaming data with RSC

React Server Components let you send unresolved promises from server to client.

Decoding React Server Component Payloads

More than you ever need to know about how React Server Component Payloads work.

Teams using Next.js and Vercel have an advantage

Short Dev Loop & excellent automation give teams using Next.js and Vercel an advantage over teams who don't.

The best hardware setup for software engineers

The proper hardware setup can make a huge difference to a software engineer's productivity. Here's what I use and why.

Loading Fast and Slow: async React Server Components and Suspense

React Server Components promise a lightning-fast web. And they are, so long as you use them properly.

Using Server Actions with Next JS

Next JS Server Actions are a powerful way to call APIs from your Next JS app. Here's how to use them.

Avoiding Catastrophe by Automating OPNSense Backups

How to automatically back up your OPNsense configurations using the API.

Automating a Home Theater with Home Assistant

How I got learned to lose the remote controls and make Home Assistant turn on my home theater with a light switch

How to make Bond fans work better with Home Assistant

Bond fans can be pretty, but are often buggy when it comes to lights.

Demystifying OpenAI Assistants - Runs, Threads, Messages, Files and Tools

OpenAI introduced Runs, Threads, Messages, Files, Tools and more recently - here's how to use them.

Using ChatGPT to generate ChatGPT Assistants

A cheeky way to use Chat GPT to generate Chat GPT Assistants

Distributed Tracing with Node JS

Microservices are great, but they can be hard to debug. Distributed tracing can help.

A New Stack for 2016: Getting Started with React, ES6 and Webpack

A lot has changed in the last few years when it comes to implementing applications using JavaScript.

Jasmine and Jenkins Continuous Integration

I use Jasmine as my JavaScript unit/behavior testing framework of choice because it's elegant and ha

Sencha Con 2013 Wrapup

So another great Sencha Con is over, and I'm left to reflect on everything that went on over the las

Sencha Con Attendees: I Need You

Love working with Sencha frameworks? Want to come work with me on the next generation? I moved on to

Sencha Con 2013: Ext JS Performance tips

Just as with Jacky's session, I didn't plan on making a separate post about this, but again the cont

Sencha Con 2013: Fastbook

I didn't plan on writing a post purely on Fastbook, but Jacky's presentation just now was so good I

Sencha Con 2013 Day 1

Sencha Con 2013 kicked off today, with some stunning improvements demoed across the product set. I'm

Autotesting JavaScript with Jasmine and Guard

One of the things I really loved about Rails in the early days was that it introduced me to the conc

On Leaving Sencha

As some of you may know, I left Sencha last week to move to another startup just up the road in San

Anatomy of a Sencha Touch 2 App

At its simplest, a Sencha Touch 2 application is just a small collection of text files - html, css a

What do you want from Sencha Touch 2.1?

Disclaimers: this is the most unofficial, non-Sencha-backed poll of all time. There's no guarantee

Sencha Touch 2 GA Released!

The last few months have flown by faster than almost any before them. The first Sencha Touch 2 relea