41554 blogs · [ { "id": "01a08769-e6cf-70da-a434-75d83722d57c", "title": "Trigger an AI Agent by Sending an Email", "url": "https://davidwells.io/blog/trigger-an-ai-agent-with-an-email", "published_at": "2026-07-10T09:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d837b07886", "title": "The Surprisingly Simple Anatomy of an AI Agent", "url": "https://davidwells.io/blog/simple-anatomy-of-an-ai-agent", "published_at": "2026-07-07T11:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8387be3a7", "title": "NAX: Multi-Model Agent Workflows on Netlify", "url": "https://davidwells.io/blog/nax-multi-model-agent-workflows-on-netlify", "published_at": "2026-06-29T12:44:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8391927c0", "title": "Devtools Utilities", "url": "https://davidwells.io/projects/devtools-utilities", "published_at": "2026-06-23T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83a0d798b", "title": "Multi-Agent Coding Without Worktree Chaos", "url": "https://davidwells.io/blog/multi-agent-coding-without-worktree-chaos", "published_at": "2026-06-05T02:17:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83a9c9c74", "title": "ddb-migration-tools", "url": "https://davidwells.io/projects/ddb-migration-tools", "published_at": "2026-06-01T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83ac26921", "title": "@davidwells/dx-args", "url": "https://davidwells.io/projects/dx-args", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83b28f83f", "title": "Run Codex, Claude, & Gemini From GitHub Issues with Netlify Agent Runners", "url": "https://davidwells.io/blog/run-codex-claude-and-gemini-from-github-issues", "published_at": "2026-02-10T13:09:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83bd16ec9", "title": "cron-burgundy", "url": "https://davidwells.io/projects/cron-burgundy", "published_at": "2026-01-05T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83c11d5b6", "title": "Smart Deploys for Serverless Monorepos", "url": "https://davidwells.io/blog/smart-deploy-serverless-monorepos", "published_at": "2025-12-02T01:59:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83ca4ba60", "title": "@davidwells/git-split-diffs", "url": "https://davidwells.io/projects/git-split-diffs", "published_at": "2025-11-30T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83d8b0bc8", "title": "@davidwells/extract-deps", "url": "https://davidwells.io/projects/extract-deps", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83d97aeeb", "title": "comment-block-migrator", "url": "https://davidwells.io/projects/comment-block-migrator", "published_at": "2025-10-25T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83dff5e23", "title": "Building a Forgiving CLI Argument Parser", "url": "https://davidwells.io/blog/forgiving-cli-arg-parsing-with-dx-args", "published_at": "2025-09-18T11:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83e4b87f1", "title": "comment-block-replacer", "url": "https://davidwells.io/projects/comment-block-replacer", "published_at": "2025-06-24T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83f374ad0", "title": "comment-block-transformer", "url": "https://davidwells.io/projects/comment-block-transformer", "published_at": "2025-06-24T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d83f894682", "title": "comment-block-parser", "url": "https://davidwells.io/projects/comment-block-parser", "published_at": "2025-06-17T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8407ff4ac", "title": "Using superwhisper to speed up your dev flow", "url": "https://davidwells.io/blog/how-to-use-superwhisper-to-say-stuff", "published_at": "2025-06-12T20:41:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8411a61fc", "title": "Creating AI-Infused GitHub Repos in One Command", "url": "https://davidwells.io/blog/creating-ai-infused-repos-in-one-command", "published_at": "2025-06-11T09:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d841aff112", "title": "@davidwells/matcher", "url": "https://davidwells.io/projects/matcher", "published_at": "2025-05-20T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8421a0cf1", "title": "Building Idempotent APIs with AWS Lambda Powertools", "url": "https://davidwells.io/blog/building-idempotent-apis-with-aws-lambda-powertools", "published_at": "2025-05-19T14:30:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d842e39917", "title": "Idempotent Requests Demo", "url": "https://davidwells.io/projects/spike-idempotent-requests", "published_at": "2025-05-13T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d843d47524", "title": "Powerful polling with waitFor", "url": "https://davidwells.io/blog/powerful-polling-with-waitfor", "published_at": "2025-05-01T12:55:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8445318f5", "title": "@davidwells/parse-time", "url": "https://davidwells.io/projects/parse-time", "published_at": "2025-04-22T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8450481f5", "title": "FAST Serverless JavaScript on AWS Lambda with LLRT", "url": "https://davidwells.io/blog/fast-serverless-javascript-on-aws-lambda-with-llrt", "published_at": "2025-04-14T17:19:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84597c76b", "title": "@davidwells/box-logger", "url": "https://davidwells.io/projects/box-logger", "published_at": "2025-04-04T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8459800ce", "title": "@davidwells/wait-for", "url": "https://davidwells.io/projects/wait-for", "published_at": "2025-04-04T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d845c9a948", "title": "LLRT Lambda Runtime Spike", "url": "https://davidwells.io/projects/spike-llrt-runtime", "published_at": "2025-03-03T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8464186f3", "title": "Serverless ESM Functions with No Build Step", "url": "https://davidwells.io/projects/serverless-esm-functions-no-build-example", "published_at": "2025-01-25T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8467f9618", "title": "Big risks. Big rewards", "url": "https://davidwells.io/blog/big-risks-big-rewards", "published_at": "2024-10-10T13:51:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84739f645", "title": "Parsing React-like Props in Markdown Comments with oparser", "url": "https://davidwells.io/blog/forgiving-option-parsing-with-oparser", "published_at": "2024-09-19T10:15:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84820192f", "title": "How to synchronize remote content in markdown files", "url": "https://davidwells.io/blog/how-to-synchronize-remote-content-in-markdown-files", "published_at": "2024-08-28T20:17:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d848b86ce0", "title": "Don’t suffer fools. Thank them", "url": "https://davidwells.io/blog/dont-suffer-fools-thank-them", "published_at": "2024-08-27T10:17:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d849ab7b75", "title": "What would you do if you knew you couldn't fail?", "url": "https://davidwells.io/blog/what-would-you-do-if-you-knew-you-couldnt-fail", "published_at": "2024-08-12T10:07:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d849ec9327", "title": "git-er-done: Query Git History from JavaScript", "url": "https://davidwells.io/blog/git-er-done-query-git-history-from-javascript", "published_at": "2024-08-05T09:30:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84acb4a86", "title": "Media Provenance - A Solution to Generative AI Fakes", "url": "https://davidwells.io/blog/media-provenance-a-solution-to-generative-ai", "published_at": "2024-05-06T14:17:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84aef8d4c", "title": "Using unbundled ESM in AWS Lambda Functions", "url": "https://davidwells.io/blog/using-unbundled-esm-in-aws-lambda", "published_at": "2024-04-29T16:59:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84b3bb79a", "title": "@davidwells/smart-log", "url": "https://davidwells.io/projects/smart-log", "published_at": "2024-04-13T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84c1f58fd", "title": "Deep log available methods on JavaScript Objects & Classes", "url": "https://davidwells.io/blog/deep-log-available-methods-on-a-javascript-object-or-class", "published_at": "2024-03-19T09:29:35+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84c8b5cbd", "title": "Automating dev workflows with karabiner", "url": "https://davidwells.io/blog/automating-devflows-with-karabiner", "published_at": "2024-03-16T13:55:24+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84d679166", "title": "Programmatically sync a folder of git repositories", "url": "https://davidwells.io/blog/programmatically-git-pull-on-a-folder-of-git-repositories", "published_at": "2024-03-14T12:53:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84e661ee6", "title": "Search DOM for arbitrary text then scroll to it", "url": "https://davidwells.io/blog/using-javascript-to-search-for-text-on-a-page", "published_at": "2024-03-12T16:36:55+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84f3d5065", "title": "Improving Event Listener DX", "url": "https://davidwells.io/blog/improving-event-listener-dx", "published_at": "2023-12-29T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d84f63a891", "title": "@davidwells/fs-utils", "url": "https://davidwells.io/projects/fs-utils", "published_at": "2023-10-09T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8503d39e0", "title": "@davidwells/md-utils", "url": "https://davidwells.io/projects/md-utils", "published_at": "2023-10-09T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8511fc481", "title": "glob-monster", "url": "https://davidwells.io/projects/glob-monster", "published_at": "2023-10-07T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d851c4d868", "title": "@analytics/visitor-source", "url": "https://davidwells.io/projects/analytics-util-visitor-source", "published_at": "2022-02-16T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d85296e318", "title": "@analytics/url-utils", "url": "https://davidwells.io/projects/analytics-util-url", "published_at": "2022-02-11T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d85312d610", "title": "@analytics/redact-utils", "url": "https://davidwells.io/projects/analytics-util-redact", "published_at": "2022-02-06T00:00:00+00:00" }, { "id": "01a08769-e6cf-70da-a434-75d8532dd579", "title": "@analytics/session-storage-utils", "url": "https://davidwells.io/projects/analytics-util-storage-session", "published_at": "2021-07-28T00:00:00+00:00" } ] posts Claim your blog
Back to davidwells.io
Blog · corpus.blog/blogs/davidwells.io/posts

davidwells.io

davidwells.io

2026

2025

2024

2023

2022

2021