Trigger an AI Agent by Sending an Email
Wire AWS SES inbound email to GitHub Actions so a single dictated email can kick off an AI agent that files an issue, does the work, and opens a PR waiting for review.
Everything new from David Wells — writing and projects.
Wire AWS SES inbound email to GitHub Actions so a single dictated email can kick off an AI agent that files an issue, does the work, and opens a PR waiting for review.
Strip away the hype and an AI agent is six plain parts - a model, prompts, skills, tools, access, and memory. The whole mental model, minus the marketing.
How Netlify Agent Executor turns Claude, Gemini, and Codex into repeatable multi-step workflows that can review, cross-check, and ship real work.
A grouped set of CLI, monorepo, package-management, and workflow utilities for automating local development.
A practical workflow for running multiple coding agents on one branch without duplicate work, file collisions, or constant worktree management.
Stage-aware DynamoDB migration tooling for TypeScript serverless projects.
Forgiving argv parser for CLIs that accepts loose key/value syntax, globs, and typo-tolerant long flags.
Use Netlify Agent Runners and a GitHub Actions workflow to turn issues and PR comments into scoped Codex, Claude, or Gemini coding runs.
Simple macOS cron manager with missed-job recovery for local automation workflows.
How to make serverless monorepo deploys faster and safer by deriving deployment waves from git changes, package dependencies, and infrastructure-as-code graphs.
Terminal diff viewer for splitting git diffs into clearer side-by-side review output.
Dependency extraction utility for finding imports, requires, and exports in JavaScript and TypeScript code without AST parsing.
Migration utility for updating Markdown Magic comment block syntax across markdown files.
dx-args adds argv normalization, glob grouping, and oparser value parsing so your CLI keeps working when someone types a slightly imperfect command.
File replacement utility for processing comment blocks and writing generated content back to disk.
Transform engine for applying configured Markdown Magic-style comment block transforms.
Comment-block parser used by Markdown Magic to find automation blocks in markdown and source files.
Superwhisper is a talk-to-text app for your Mac that speeds up my development workflow tremendously!!!! So you can imagine a world where basically you're just talking to your computer and it is listening to you kind of ramble on and then it takes what you say, and feeds it into whatever tool you're…
A practical shell workflow for turning new project setup into one repeatable command that creates the repo, pushes it, installs AI skills, and connects remote AI agents.
Flexible matching utility for strings, regular expressions, functions, arrays, and object criteria.
In today's distributed systems, ensuring reliable and consistent API behavior is crucial. One of the key challenges developers face is handling duplicate requests gracefully. This is where idempotency comes into play. This post will guide serverless developers and AWS users through implementing…
Demo showing retry-safe request flows on the client and server with idempotency keys.
Recently, whilst doing some client work, I was running into some issues around retries and transient errors. This was making a giant try/catch nightmare scenario and I found myself playing whack-a-mole by sprinkling retry logic in a bunch of different places. There had to be a better way, I…
Parser for turning messy human time strings into JavaScript Date objects.
I recently did a spike on a new runtime for AWS Lambda called LLRT (Low Latency Runtime). It came out about a year ago but I hadn't dug into it until recently. Why is LLRT cool? LLRT offers several compelling advantages over traditional Node.js runtimes: 1. Lightning-Fast Cold Starts : LLRT is…
Terminal formatting utility for boxes, headers, dividers, and structured CLI output.
Flexible polling and retry utility for waiting on async systems with cancellation, backoff, callbacks, and timeouts.
Example of using the AWS LLRT JavaScript runtime with Serverless Framework.
Example project showing pure ESM AWS Lambda functions with Serverless Framework and no bundling step.
Nothing ventured, nothing gained. Big things require big actions. Risking it all is self-explanatory. The payoff will be outsized, while the reverse will be dicey. Life is a series of chances. You can play it safe and conservatively or go all in. I've been on both ends of this spectrum. Playing it…
How a forgiving key-value parser lets markdown-magic accept JSX-style options in HTML comments, even when humans forget quotes and closing braces.
Markdown is an amazing authoring format. It frees us from the shackles of Microsoft word and let's you focus primarily on the content. As a developer, you will write ALOT of markdown over the course of your career. But like any text document, docs can grow stale over time. As a project grows, we…
Throughout your journey on this planet, you are bound to encounter "the fool". There's no way around it. These people will pop up when you least (and most) expect it. But there is good news! You don't need to suffer at their expense. Instead, you should be thanking your lucky stars. Why? We learn…
What a startling question. Wow. If I couldn't fail. What a world that would be. It seems like a pipedream. Something spoken at a self help seminar. Ether is the wind. Pixel dust. Nonsense. But it's more real than you, or I, think. You see, it's all about framing . Let me explain. If you try…
git-er-done turns git diffs into a JavaScript API for smarter CI, monorepo automation, release tooling, and build skips.
Generative AI made fake media cheap. A proposal for signed edit histories and links to original source material as the new baseline for trust.
ESM modules are finally gaining support for CJS. This means npm packages that use will work in ESM land. Hooray 🎉. I've used bundling with esBuild in the past with AWS Lambda. I didn't love the build step and how many npm packages wouldn't work in pure ESM land so I put it on the shelf. But... now…
Logging utility for CLIs with debug namespaces, JSON mode, silent mode, and log dumping.
Sometimes won't give us all the available methods on a javascript Object or Class. This makes exploring the API of a given thing difficult. To fix this we can use the utility function , below in this post, to deep log an object/class with all its methods. I use this utility a lot when exploring new…
Karabiner is an mac automation tool that allows you to set global hot keys to trigger different actions on your computer. I'd tried it in the past but the config was very complicated "Extensible Data Notation" format and I gave up. But at some point they started using and the config was now…
When building sites, I typically keep the contents of the site in a separate GitHub repository. Why? 1. To keep things nice and tidy and to allow for the site code to be used as more of a template for other projects. 2. Additionally, when you have your content in a separate repo, it's easier to add…
Using JavaScript to find arbitrary DOM nodes based on their inner text. AKA full page search
Making DX of event listeners nice and crisp
Small reusable file-system utilities for Node.js scripts and developer tools.
Small markdown utility package for parsing and transforming markdown content.
Older file globber utility that understands regular expressions for project file discovery.
Get visitor source.
URL utils.
Utility library for redacting event data.
Tiny SessionStorage utility library.