<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dw="https://davidwells.io/ns/feeds" dw:channel="all">
  <script src="/feed-assets/feed-render.js" xmlns="http://www.w3.org/1999/xhtml"></script>
  <link rel="stylesheet" href="/feed-assets/feed.css" xmlns="http://www.w3.org/1999/xhtml"/>
  <channel>
    <title>David Wells - Everything</title>
    <link>https://davidwells.io</link>
    <atom:link href="https://davidwells.io/feeds/all.xml" rel="self" type="application/rss+xml" />
    <description>Everything new from David Wells — writing and projects.</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 29 Jun 2026 12:44:00 GMT</lastBuildDate>
    <item>
      <title>NAX: Multi-Model Agent Workflows on Netlify</title>
      <link>https://davidwells.io/blog/nax-multi-model-agent-workflows-on-netlify</link>
      <guid isPermaLink="true">https://davidwells.io/blog/nax-multi-model-agent-workflows-on-netlify</guid>
      <pubDate>Mon, 29 Jun 2026 12:44:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>dev-tools</category>
      <category>netlify</category>
      <description><![CDATA[How Netlify Agent Executor turns Claude, Gemini, and Codex into repeatable multi-step workflows that can review, cross-check, and ship real work.]]></description>
    </item>
    <item>
      <title>Devtools Utilities</title>
      <link>https://davidwells.io/projects/devtools-utilities</link>
      <guid isPermaLink="true">https://davidwells.io/projects/devtools-utilities</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>cli</category>
      <category>monorepo</category>
      <category>dev-tools</category>
      <description><![CDATA[A grouped set of CLI, monorepo, package-management, and workflow utilities for automating local development.]]></description>
    </item>
    <item>
      <title>Multi-Agent Coding Without Worktree Chaos</title>
      <link>https://davidwells.io/blog/multi-agent-coding-without-worktree-chaos</link>
      <guid isPermaLink="true">https://davidwells.io/blog/multi-agent-coding-without-worktree-chaos</guid>
      <pubDate>Fri, 05 Jun 2026 02:17:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>dev-tools</category>
      <category>git</category>
      <category>workflow</category>
      <description><![CDATA[A practical workflow for running multiple coding agents on one branch without duplicate work, file collisions, or constant worktree management.]]></description>
    </item>
    <item>
      <title>@davidwells/dx-args</title>
      <link>https://davidwells.io/projects/dx-args</link>
      <guid isPermaLink="true">https://davidwells.io/projects/dx-args</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>cli</category>
      <category>parser</category>
      <category>dev-tools</category>
      <description><![CDATA[Forgiving argv parser for CLIs that accepts loose key/value syntax, globs, and typo-tolerant long flags.]]></description>
    </item>
    <item>
      <title>Run Codex, Claude, &amp; Gemini From GitHub Issues with Netlify Agent Runners</title>
      <link>https://davidwells.io/blog/run-codex-claude-and-gemini-from-github-issues</link>
      <guid isPermaLink="true">https://davidwells.io/blog/run-codex-claude-and-gemini-from-github-issues</guid>
      <pubDate>Tue, 10 Feb 2026 13:09:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>ai</category>
      <category>agents</category>
      <category>github</category>
      <category>netlify</category>
      <description><![CDATA[Use Netlify Agent Runners and a GitHub Actions workflow to turn issues and PR comments into scoped Codex, Claude, or Gemini coding runs.]]></description>
    </item>
    <item>
      <title>Smart Deploys for Serverless Monorepos</title>
      <link>https://davidwells.io/blog/smart-deploy-serverless-monorepos</link>
      <guid isPermaLink="true">https://davidwells.io/blog/smart-deploy-serverless-monorepos</guid>
      <pubDate>Tue, 02 Dec 2025 01:59:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>serverless</category>
      <category>ci-cd</category>
      <category>monorepos</category>
      <category>aws</category>
      <category>infrastructure</category>
      <category>automation</category>
      <description><![CDATA[How to make serverless monorepo deploys faster and safer by deriving deployment waves from git changes, package dependencies, and infrastructure-as-code graphs.]]></description>
    </item>
    <item>
      <title>@davidwells/extract-deps</title>
      <link>https://davidwells.io/projects/extract-deps</link>
      <guid isPermaLink="true">https://davidwells.io/projects/extract-deps</guid>
      <pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>dev-tools</category>
      <category>static-analysis</category>
      <category>automation</category>
      <description><![CDATA[Dependency extraction utility for finding imports, requires, and exports in JavaScript and TypeScript code without AST parsing.]]></description>
    </item>
    <item>
      <title>Building a Forgiving CLI Argument Parser</title>
      <link>https://davidwells.io/blog/forgiving-cli-arg-parsing-with-dx-args</link>
      <guid isPermaLink="true">https://davidwells.io/blog/forgiving-cli-arg-parsing-with-dx-args</guid>
      <pubDate>Thu, 18 Sep 2025 11:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>javascript</category>
      <category>cli</category>
      <category>dev-tools</category>
      <category>parsing</category>
      <category>open-source</category>
      <description><![CDATA[dx-args adds argv normalization, glob grouping, and oparser value parsing so your CLI keeps working when someone types a slightly imperfect command.]]></description>
    </item>
    <item>
      <title>Using superwhisper to speed up your dev flow</title>
      <link>https://davidwells.io/blog/how-to-use-superwhisper-to-say-stuff</link>
      <guid isPermaLink="true">https://davidwells.io/blog/how-to-use-superwhisper-to-say-stuff</guid>
      <pubDate>Thu, 12 Jun 2025 20:41:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Building Idempotent APIs with AWS Lambda Powertools</title>
      <link>https://davidwells.io/blog/building-idempotent-apis-with-aws-lambda-powertools</link>
      <guid isPermaLink="true">https://davidwells.io/blog/building-idempotent-apis-with-aws-lambda-powertools</guid>
      <pubDate>Mon, 19 May 2025 14:30:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Idempotent Requests Demo</title>
      <link>https://davidwells.io/projects/spike-idempotent-requests</link>
      <guid isPermaLink="true">https://davidwells.io/projects/spike-idempotent-requests</guid>
      <pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>aws</category>
      <category>serverless</category>
      <category>api-design</category>
      <category>reliability</category>
      <description><![CDATA[Demo showing retry-safe request flows on the client and server with idempotency keys.]]></description>
    </item>
    <item>
      <title>Powerful polling with waitFor</title>
      <link>https://davidwells.io/blog/powerful-polling-with-waitfor</link>
      <guid isPermaLink="true">https://davidwells.io/blog/powerful-polling-with-waitfor</guid>
      <pubDate>Thu, 01 May 2025 12:55:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>@davidwells/parse-time</title>
      <link>https://davidwells.io/projects/parse-time</link>
      <guid isPermaLink="true">https://davidwells.io/projects/parse-time</guid>
      <pubDate>Tue, 22 Apr 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>dates</category>
      <category>parsing</category>
      <category>dev-tools</category>
      <description><![CDATA[Parser for turning messy human time strings into JavaScript Date objects.]]></description>
    </item>
    <item>
      <title>FAST Serverless JavaScript on AWS Lambda with LLRT</title>
      <link>https://davidwells.io/blog/fast-serverless-javascript-on-aws-lambda-with-llrt</link>
      <guid isPermaLink="true">https://davidwells.io/blog/fast-serverless-javascript-on-aws-lambda-with-llrt</guid>
      <pubDate>Mon, 14 Apr 2025 17:19:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>@davidwells/box-logger</title>
      <link>https://davidwells.io/projects/box-logger</link>
      <guid isPermaLink="true">https://davidwells.io/projects/box-logger</guid>
      <pubDate>Fri, 04 Apr 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>cli</category>
      <category>terminal</category>
      <category>dev-tools</category>
      <description><![CDATA[Terminal formatting utility for boxes, headers, dividers, and structured CLI output.]]></description>
    </item>
    <item>
      <title>@davidwells/wait-for</title>
      <link>https://davidwells.io/projects/wait-for</link>
      <guid isPermaLink="true">https://davidwells.io/projects/wait-for</guid>
      <pubDate>Fri, 04 Apr 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>dev-tools</category>
      <category>async</category>
      <category>reliability</category>
      <description><![CDATA[Flexible polling and retry utility for waiting on async systems with cancellation, backoff, callbacks, and timeouts.]]></description>
    </item>
    <item>
      <title>LLRT Lambda Runtime Spike</title>
      <link>https://davidwells.io/projects/spike-llrt-runtime</link>
      <guid isPermaLink="true">https://davidwells.io/projects/spike-llrt-runtime</guid>
      <pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>aws</category>
      <category>serverless</category>
      <category>aws-lambda</category>
      <category>runtime</category>
      <description><![CDATA[Example of using the AWS LLRT JavaScript runtime with Serverless Framework.]]></description>
    </item>
    <item>
      <title>Serverless ESM Functions with No Build Step</title>
      <link>https://davidwells.io/projects/serverless-esm-functions-no-build-example</link>
      <guid isPermaLink="true">https://davidwells.io/projects/serverless-esm-functions-no-build-example</guid>
      <pubDate>Sat, 25 Jan 2025 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>aws</category>
      <category>serverless</category>
      <category>aws-lambda</category>
      <category>esm</category>
      <description><![CDATA[Example project showing pure ESM AWS Lambda functions with Serverless Framework and no bundling step.]]></description>
    </item>
    <item>
      <title>Big risks. Big rewards</title>
      <link>https://davidwells.io/blog/big-risks-big-rewards</link>
      <guid isPermaLink="true">https://davidwells.io/blog/big-risks-big-rewards</guid>
      <pubDate>Thu, 10 Oct 2024 13:51:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Parsing React-like Props in Markdown Comments with oparser</title>
      <link>https://davidwells.io/blog/forgiving-option-parsing-with-oparser</link>
      <guid isPermaLink="true">https://davidwells.io/blog/forgiving-option-parsing-with-oparser</guid>
      <pubDate>Thu, 19 Sep 2024 10:15:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>javascript</category>
      <category>dev-tools</category>
      <category>markdown</category>
      <category>parsing</category>
      <category>open-source</category>
      <description><![CDATA[How a forgiving key-value parser lets markdown-magic accept JSX-style options in HTML comments, even when humans forget quotes and closing braces.]]></description>
    </item>
    <item>
      <title>How to synchronize remote content in markdown files</title>
      <link>https://davidwells.io/blog/how-to-synchronize-remote-content-in-markdown-files</link>
      <guid isPermaLink="true">https://davidwells.io/blog/how-to-synchronize-remote-content-in-markdown-files</guid>
      <pubDate>Wed, 28 Aug 2024 20:17:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Don’t suffer fools. Thank them</title>
      <link>https://davidwells.io/blog/dont-suffer-fools-thank-them</link>
      <guid isPermaLink="true">https://davidwells.io/blog/dont-suffer-fools-thank-them</guid>
      <pubDate>Tue, 27 Aug 2024 10:17:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>What would you do if you knew you couldn&apos;t fail?</title>
      <link>https://davidwells.io/blog/what-would-you-do-if-you-knew-you-couldnt-fail</link>
      <guid isPermaLink="true">https://davidwells.io/blog/what-would-you-do-if-you-knew-you-couldnt-fail</guid>
      <pubDate>Mon, 12 Aug 2024 10:07:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>git-er-done: Query Git History from JavaScript</title>
      <link>https://davidwells.io/blog/git-er-done-query-git-history-from-javascript</link>
      <guid isPermaLink="true">https://davidwells.io/blog/git-er-done-query-git-history-from-javascript</guid>
      <pubDate>Mon, 05 Aug 2024 09:30:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>git</category>
      <category>ci</category>
      <category>automation</category>
      <category>dev-tools</category>
      <category>javascript</category>
      <description><![CDATA[git-er-done turns git diffs into a JavaScript API for smarter CI, monorepo automation, release tooling, and build skips.]]></description>
    </item>
    <item>
      <title>Using unbundled ESM in AWS Lambda Functions</title>
      <link>https://davidwells.io/blog/using-unbundled-esm-in-aws-lambda</link>
      <guid isPermaLink="true">https://davidwells.io/blog/using-unbundled-esm-in-aws-lambda</guid>
      <pubDate>Mon, 29 Apr 2024 16:59:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>@davidwells/smart-log</title>
      <link>https://davidwells.io/projects/smart-log</link>
      <guid isPermaLink="true">https://davidwells.io/projects/smart-log</guid>
      <pubDate>Sat, 13 Apr 2024 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>logging</category>
      <category>cli</category>
      <category>dev-tools</category>
      <description><![CDATA[Logging utility for CLIs with debug namespaces, JSON mode, silent mode, and log dumping.]]></description>
    </item>
    <item>
      <title>Deep log available methods on JavaScript Objects &amp; Classes</title>
      <link>https://davidwells.io/blog/deep-log-available-methods-on-a-javascript-object-or-class</link>
      <guid isPermaLink="true">https://davidwells.io/blog/deep-log-available-methods-on-a-javascript-object-or-class</guid>
      <pubDate>Tue, 19 Mar 2024 09:29:35 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Automating dev workflows with karabiner</title>
      <link>https://davidwells.io/blog/automating-devflows-with-karabiner</link>
      <guid isPermaLink="true">https://davidwells.io/blog/automating-devflows-with-karabiner</guid>
      <pubDate>Sat, 16 Mar 2024 13:55:24 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Programmatically sync a folder of git repositories</title>
      <link>https://davidwells.io/blog/programmatically-git-pull-on-a-folder-of-git-repositories</link>
      <guid isPermaLink="true">https://davidwells.io/blog/programmatically-git-pull-on-a-folder-of-git-repositories</guid>
      <pubDate>Thu, 14 Mar 2024 12:53:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[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…]]></description>
    </item>
    <item>
      <title>Search DOM for arbitrary text then scroll to it</title>
      <link>https://davidwells.io/blog/using-javascript-to-search-for-text-on-a-page</link>
      <guid isPermaLink="true">https://davidwells.io/blog/using-javascript-to-search-for-text-on-a-page</guid>
      <pubDate>Tue, 12 Mar 2024 16:36:55 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[Using JavaScript to find arbitrary DOM nodes based on their inner text. AKA full page search]]></description>
    </item>
    <item>
      <title>Improving Event Listener DX</title>
      <link>https://davidwells.io/blog/improving-event-listener-dx</link>
      <guid isPermaLink="true">https://davidwells.io/blog/improving-event-listener-dx</guid>
      <pubDate>Fri, 29 Dec 2023 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>wooo</category>
      <category>rad</category>
      <category>cool</category>
      <description><![CDATA[Making DX of event listeners nice and crisp]]></description>
    </item>
    <item>
      <title>@davidwells/md-utils</title>
      <link>https://davidwells.io/projects/md-utils</link>
      <guid isPermaLink="true">https://davidwells.io/projects/md-utils</guid>
      <pubDate>Mon, 09 Oct 2023 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>markdown</category>
      <category>docs</category>
      <category>dev-tools</category>
      <description><![CDATA[Small markdown utility package for parsing and transforming markdown content.]]></description>
    </item>
    <item>
      <title>Types with JSDoc</title>
      <link>https://davidwells.io/projects/types-with-jsdocs</link>
      <guid isPermaLink="true">https://davidwells.io/projects/types-with-jsdocs</guid>
      <pubDate>Sat, 12 Jun 2021 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>javascript</category>
      <category>typescript</category>
      <category>docs</category>
      <description><![CDATA[Practical examples for getting TypeScript-style type checking in JavaScript projects through JSDoc.]]></description>
    </item>
    <item>
      <title>persist-previous-build-assets</title>
      <link>https://davidwells.io/projects/persist-previous-build-assets</link>
      <guid isPermaLink="true">https://davidwells.io/projects/persist-previous-build-assets</guid>
      <pubDate>Tue, 09 Mar 2021 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>build-tools</category>
      <category>deployment</category>
      <category>reliability</category>
      <description><![CDATA[Build utility that carries previous hashed assets into the latest deployment to reduce stale chunk failures.]]></description>
    </item>
    <item>
      <title>@davidwells/lerna-smart-run</title>
      <link>https://davidwells.io/projects/lerna-smart-run</link>
      <guid isPermaLink="true">https://davidwells.io/projects/lerna-smart-run</guid>
      <pubDate>Thu, 24 Dec 2020 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>monorepo</category>
      <category>ci</category>
      <category>dev-tools</category>
      <description><![CDATA[Lerna workflow utility for running package scripts only where changes require them.]]></description>
    </item>
    <item>
      <title>@davidwells/glob-utils</title>
      <link>https://davidwells.io/projects/glob-utils</link>
      <guid isPermaLink="true">https://davidwells.io/projects/glob-utils</guid>
      <pubDate>Sat, 27 Jun 2020 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>dev-tools</category>
      <category>files</category>
      <category>automation</category>
      <description><![CDATA[File discovery utility that accepts glob strings and regular expressions for flexible project scanning.]]></description>
    </item>
    <item>
      <title>React Component Primitives</title>
      <link>https://davidwells.io/projects/react-component-primitives</link>
      <guid isPermaLink="true">https://davidwells.io/projects/react-component-primitives</guid>
      <pubDate>Sat, 27 Jun 2020 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>react</category>
      <category>components</category>
      <category>dev-tools</category>
      <description><![CDATA[Reusable React component primitives for forms, layout, icons, inputs, selects, and DOM building blocks.]]></description>
    </item>
    <item>
      <title>Netlify Year Two Recap Extravaganza.</title>
      <link>https://davidwells.io/blog/netlify-year-two</link>
      <guid isPermaLink="true">https://davidwells.io/blog/netlify-year-two</guid>
      <pubDate>Fri, 12 Jun 2020 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[Many awesome things were shipped & many lessons learned]]></description>
    </item>
    <item>
      <title>The rise of embarrassingly parallel serverless compute</title>
      <link>https://davidwells.io/blog/rise-of-embarrassingly-parallel-serverless-compute</link>
      <guid isPermaLink="true">https://davidwells.io/blog/rise-of-embarrassingly-parallel-serverless-compute</guid>
      <pubDate>Tue, 09 Jun 2020 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[How distributed serverless compute changes the game on whats possible]]></description>
    </item>
    <item>
      <title>Cleaner async JavaScript code without the try/catch mess.</title>
      <link>https://davidwells.io/blog/cleaner-async-javascript-code-without-the-trycatch-mess</link>
      <guid isPermaLink="true">https://davidwells.io/blog/cleaner-async-javascript-code-without-the-trycatch-mess</guid>
      <pubDate>Sat, 16 May 2020 09:30:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <description><![CDATA[How to use safeAwait to wrap promises for better error handling in async await JavaScript code. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Luctus accumsan tortor posuere ac. Euism'od elementum nisi quis eleifend quam. Hendrerit dolor magna eget est lorem ipsum dolor. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu feugiat. Quis viverra nibh cras pulvinar. Hendrerit gravida rutrum quisque non tellus. Viverra ipsum nunc aliquet bibendum. Purus ut faucibus pulvinar elementum integer enim neque volutpat ac]]></description>
    </item>
    <item>
      <title>Analytics with React</title>
      <link>https://davidwells.io/blog/analytics-with-react</link>
      <guid isPermaLink="true">https://davidwells.io/blog/analytics-with-react</guid>
      <pubDate>Sat, 18 Apr 2020 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[Instrumenting analytics in react applications can be challenging, but luckily, it doesn't have do be]]></description>
    </item>
    <item>
      <title>Don&apos;t fix things that aren&apos;t broken</title>
      <link>https://davidwells.io/blog/dont-fix-things-that-arent-broken</link>
      <guid isPermaLink="true">https://davidwells.io/blog/dont-fix-things-that-arent-broken</guid>
      <pubDate>Thu, 05 Mar 2020 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[Resist all of the urges to 'fix' things that work and instead focus on things that don't]]></description>
    </item>
    <item>
      <title>Style Guard</title>
      <link>https://davidwells.io/projects/style-guard</link>
      <guid isPermaLink="true">https://davidwells.io/projects/style-guard</guid>
      <pubDate>Sat, 18 Jan 2020 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>css</category>
      <category>dev-tools</category>
      <category>frontend</category>
      <description><![CDATA[CSS Modules safety tooling that throws in development when code references missing class names.]]></description>
    </item>
    <item>
      <title>git-er-done</title>
      <link>https://davidwells.io/projects/git-er-done</link>
      <guid isPermaLink="true">https://davidwells.io/projects/git-er-done</guid>
      <pubDate>Wed, 11 Dec 2019 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>git</category>
      <category>ci</category>
      <category>dev-tools</category>
      <description><![CDATA[Git change detection utility for finding modified, created, and deleted files since a commit or branch.]]></description>
    </item>
    <item>
      <title>Simplify form handling in your app using valid HTML elements</title>
      <link>https://davidwells.io/blog/simplify-form-handling-in-your-app-using-valid-html-elements</link>
      <guid isPermaLink="true">https://davidwells.io/blog/simplify-form-handling-in-your-app-using-valid-html-elements</guid>
      <pubDate>Wed, 04 Sep 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>analytics</category>
      <category>javascript</category>
      <category>forms</category>
      <description><![CDATA[Using valid HTML form inputs for streamlined form handling in your app]]></description>
    </item>
    <item>
      <title>Using event naming conventions to keep analytics data clean.</title>
      <link>https://davidwells.io/blog/clean-analytics</link>
      <guid isPermaLink="true">https://davidwells.io/blog/clean-analytics</guid>
      <pubDate>Sun, 25 Aug 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>analytics</category>
      <description><![CDATA[How to keep analytics data nice and clean for use in downstream marketing & data science tools]]></description>
    </item>
    <item>
      <title>Mocking chainable APIs with ES6 JavaScript Proxies</title>
      <link>https://davidwells.io/blog/mocking-chainable-apis-with-js-proxies</link>
      <guid isPermaLink="true">https://davidwells.io/blog/mocking-chainable-apis-with-js-proxies</guid>
      <pubDate>Mon, 22 Jul 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>node</category>
      <category>javascript</category>
      <category>proxies</category>
      <description><![CDATA[How to stub out chainable APIs using ES6 Javascript Proxies]]></description>
    </item>
    <item>
      <title>7 Serverless Auth Strategies for Protecting Gated Functions</title>
      <link>https://davidwells.io/blog/serverless-function-auth-strategies</link>
      <guid isPermaLink="true">https://davidwells.io/blog/serverless-function-auth-strategies</guid>
      <pubDate>Tue, 16 Jul 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>serverless</category>
      <category>javascript</category>
      <description><![CDATA[Gating serverless function invocations using various authentication methods]]></description>
    </item>
    <item>
      <title>How to Respect Visitor &quot;Do Not Track&quot; settings with your Analytics tools</title>
      <link>https://davidwells.io/blog/respecting-do-not-track-with-analytics</link>
      <guid isPermaLink="true">https://davidwells.io/blog/respecting-do-not-track-with-analytics</guid>
      <pubDate>Fri, 12 Jul 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>analytics</category>
      <category>javascript</category>
      <description><![CDATA[Using the do not track spec to disable web analytics on your website or app]]></description>
    </item>
    <item>
      <title>safe-await</title>
      <link>https://davidwells.io/projects/safe-await</link>
      <guid isPermaLink="true">https://davidwells.io/projects/safe-await</guid>
      <pubDate>Sun, 07 Jul 2019 00:00:00 GMT</pubDate>
      <dc:creator>David Wells</dc:creator>
      <category>javascript</category>
      <category>async</category>
      <category>dev-tools</category>
      <description><![CDATA[Small JavaScript utility for working with async/await without wrapping every call in repetitive try/catch blocks.]]></description>
    </item>
  </channel>
</rss>
