<?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="blog" dw:property="dw_subscriber_blog" dw:form="dcd88645-c295-4fec-847c-0404680daf5c">
  <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 - New writing</title>
    <link>https://davidwells.io</link>
    <atom:link href="https://davidwells.io/feeds/blog.xml" rel="self" type="application/rss+xml" />
    <description>Articles on web development, serverless, AWS, JavaScript, and AI by David Wells.</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>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>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>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>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>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>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>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>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>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>5 Advanced npm package.json configuration tips</title>
      <link>https://davidwells.io/blog/advanced-package-json-tips</link>
      <guid isPermaLink="true">https://davidwells.io/blog/advanced-package-json-tips</guid>
      <pubDate>Mon, 01 Jul 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>node</category>
      <description><![CDATA[Advanced patterns for making `npm` scripts & `package.json` even more awesome]]></description>
    </item>
    <item>
      <title>Speed up your Netlify deploy workflow with the CLI</title>
      <link>https://davidwells.io/blog/snappy-deploys-with-netlify-cli</link>
      <guid isPermaLink="true">https://davidwells.io/blog/snappy-deploys-with-netlify-cli</guid>
      <pubDate>Tue, 04 Jun 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[How to speed up your Netlify workflow with faster deploys]]></description>
    </item>
    <item>
      <title>Happy Netliversary 🎉 - A look back at my first year at Netlify</title>
      <link>https://davidwells.io/blog/netlify-year-one</link>
      <guid isPermaLink="true">https://davidwells.io/blog/netlify-year-one</guid>
      <pubDate>Thu, 09 May 2019 09:30:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[A look back on all the things that we've built!]]></description>
    </item>
    <item>
      <title>Autocomplete for React Component PropTypes</title>
      <link>https://davidwells.io/blog/autocomplete-for-react-component-proptypes</link>
      <guid isPermaLink="true">https://davidwells.io/blog/autocomplete-for-react-component-proptypes</guid>
      <pubDate>Thu, 07 Jul 2016 21:07:39 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <description><![CDATA[Want IDE autocompletion without typescript or flow? Now you can! I've created an atom plugin that uses your component propTypes to autocomplete! This works with any react component that has propTypes, and it works on a per-project basis for autocompleting isn't full of junk from unused components.…]]></description>
    </item>
    <item>
      <title>Navigate GitHub projects like a Boss with the OctoTree Chrome Extension</title>
      <link>https://davidwells.io/blog/navigate-github-projects-like-boss-octotree</link>
      <guid isPermaLink="true">https://davidwells.io/blog/navigate-github-projects-like-boss-octotree</guid>
      <pubDate>Wed, 01 Jun 2016 10:25:24 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>tools</category>
      <description><![CDATA[Speeding up your workflow is important. Time is precious, and all that jazz. So, I'm back with another quick tip on how to navigate projects on GitHub faster! Introducing octotree , an amazing chrome extension, that adds a quick file navigation pane to public and private GitHub projects. I love the…]]></description>
    </item>
    <item>
      <title>19 Open Source React Component Libraries to use in your next project</title>
      <link>https://davidwells.io/blog/19-open-source-react-component-libraries-to-use-in-your-next-project</link>
      <guid isPermaLink="true">https://davidwells.io/blog/19-open-source-react-component-libraries-to-use-in-your-next-project</guid>
      <pubDate>Sun, 15 May 2016 16:26:39 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <category>react</category>
      <description><![CDATA[Building React components from scratch is a ton of fun. Tackling the reimplementation of common UI elements gives you the power to bring a ton of UX improvements. But, sometimes you just need to get shit done and recreating the wheel isn't in scope. So, I've compiled a list of React Component UI…]]></description>
    </item>
    <item>
      <title>Fixing broken use tags from inline SVG sprites [http vs. https]</title>
      <link>https://davidwells.io/blog/fixing-broken-use-tags-from-inline-svg-sprites</link>
      <guid isPermaLink="true">https://davidwells.io/blog/fixing-broken-use-tags-from-inline-svg-sprites</guid>
      <pubDate>Tue, 10 May 2016 19:45:56 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <category>svg</category>
      <description><![CDATA[Inlined SVG sprites are the icons of tomorrow. If you haven't used them. You should. Read this post for more info on using inline SVGs as your Icons. This post , however, is a tale of woe from using inlined SVGs and how servers and browser security can muck them up. Leave now if you don't have this…]]></description>
    </item>
    <item>
      <title>Better Developer Blogging with Easy Markdown</title>
      <link>https://davidwells.io/blog/easy-markdown</link>
      <guid isPermaLink="true">https://davidwells.io/blog/easy-markdown</guid>
      <pubDate>Mon, 09 May 2016 20:27:26 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>markdown</category>
      <category>tools</category>
      <description><![CDATA[TLDR; Write posts in WordPress using github flavored markdown without banging your head against a wall. Blogging about code in WordPress has historically been a HUGE pain in the ass. TinyMCE and the WordPress visual editor garble your code like it's their job. I've tried every single syntax…]]></description>
    </item>
    <item>
      <title>React PropType Best Practices</title>
      <link>https://davidwells.io/blog/react-prop-type-best-practices</link>
      <guid isPermaLink="true">https://davidwells.io/blog/react-prop-type-best-practices</guid>
      <pubDate>Fri, 06 May 2016 06:00:14 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>react</category>
      <description><![CDATA[Preface: This is an opinionated guide on creating a clear and concise API for people consuming your React Components. AKA PropTypes conventions . These conventions have served me well, and I hope they help you. 1. Keep things minimal 2. Mirror DOM where possible 3. Follow Good Naming Conventions 4.…]]></description>
    </item>
    <item>
      <title>Do I really need CSS modules?</title>
      <link>https://davidwells.io/blog/do-i-really-need-css-modules</link>
      <guid isPermaLink="true">https://davidwells.io/blog/do-i-really-need-css-modules</guid>
      <pubDate>Wed, 04 May 2016 22:48:14 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <category>css</category>
      <description><![CDATA[You might have heard about PostCSS and CSS modules, but you are still recovering from the onslaught of 10,000 other frontend build process changes. The question you are asking yourself: Do I REALLY need CSS modules? Aren't they just another frontend hipster fad? -- You Let's discuss it! Checklist:…]]></description>
    </item>
    <item>
      <title>Using Alfred to speed up common developer tasks</title>
      <link>https://davidwells.io/blog/using-alfred-speed-common-developer-tasks</link>
      <guid isPermaLink="true">https://davidwells.io/blog/using-alfred-speed-common-developer-tasks</guid>
      <pubDate>Tue, 03 May 2016 22:27:57 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[Alfred is an amazingly useful tool for quickly opening programs and turning a bunch of clicks into simple commands. One of my favorite Alfred workflows is opening up my current finder window in my terminal with the alfred-terminalfinder. See it in action here:…]]></description>
    </item>
    <item>
      <title>React, the UI library that renders everywhere*</title>
      <link>https://davidwells.io/blog/react-the-ui-library-renders-everywhere</link>
      <guid isPermaLink="true">https://davidwells.io/blog/react-the-ui-library-renders-everywhere</guid>
      <pubDate>Mon, 02 May 2016 08:52:39 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <category>react</category>
      <description><![CDATA[React is pretty amazing. It's a great way to create declarative easy to understand user interfaces. It's pretty easy to learn with very little DSL (domain-specific language) and a tiny API surface. That's all well and good but, what makes React very interesting and insanely compelling is its…]]></description>
    </item>
    <item>
      <title>The Serverless Revolution</title>
      <link>https://davidwells.io/blog/the-serverless-revolution</link>
      <guid isPermaLink="true">https://davidwells.io/blog/the-serverless-revolution</guid>
      <pubDate>Fri, 29 Apr 2016 10:06:00 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>serverless</category>
      <description><![CDATA[Imagine building an application, deploying it, and having it infinitely scale without managing servers. Sounds like a pipe dream right? Nope! It's a reality today, in 2016, with a "serverless" setup. Going "serverless" is a new way of building and scaling your backend architecture without ever…]]></description>
    </item>
    <item>
      <title>Practical advice on &quot;Learning to code&quot;</title>
      <link>https://davidwells.io/blog/practical-advice-on-learning-to-code</link>
      <guid isPermaLink="true">https://davidwells.io/blog/practical-advice-on-learning-to-code</guid>
      <pubDate>Thu, 28 Apr 2016 09:15:16 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <description><![CDATA[I stand behind the belief that everyone, somewhere deep down inside, has the ability to learn to code. It's not a skill reserved for the "smartest" of the smart. Subscribing to the fallacy, "I'm not a technical person, so I can't learn to code" is just not true. It's a cop-out and an excuse I hear…]]></description>
    </item>
    <item>
      <title>JavaScript Community 2016 Thank You Letter</title>
      <link>https://davidwells.io/blog/javascript-community-thank-you-letter</link>
      <guid isPermaLink="true">https://davidwells.io/blog/javascript-community-thank-you-letter</guid>
      <pubDate>Wed, 27 Apr 2016 09:24:49 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>frontend</category>
      <description><![CDATA[Working in technology today, especially around JavaScript, is amazing. It runs everywhere: Server, client, IoT boards, etc. You can build UI for basically everything: Browser, mobile, terminal, canvas, WebGL, Desktop, etc. It's a great place to be, with a bright future. "We stand on the shoulders…]]></description>
    </item>
    <item>
      <title>How to easily keep project dependencies up to date with greenkeeper.io</title>
      <link>https://davidwells.io/blog/how-to-easily-keep-project-dependencies-up-to-date-with-greenkeeper-io</link>
      <guid isPermaLink="true">https://davidwells.io/blog/how-to-easily-keep-project-dependencies-up-to-date-with-greenkeeper-io</guid>
      <pubDate>Tue, 26 Apr 2016 06:58:52 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>tools</category>
      <description><![CDATA[The modular nature of the JavaScript ecosystem is vast and truly incredible. The community has embraced the Unix philosophy: Write programs that do one thing and do it well Having a modular system does, however, come with some drawbacks. Mainly dependency management. Instead of maintaining all of…]]></description>
    </item>
    <item>
      <title>Navigate Github project files &amp; dependencies faster with Octolinker</title>
      <link>https://davidwells.io/blog/navigate-github-project-files-dependencies-faster-with-octolinker</link>
      <guid isPermaLink="true">https://davidwells.io/blog/navigate-github-project-files-dependencies-faster-with-octolinker</guid>
      <pubDate>Mon, 25 Apr 2016 06:45:04 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>tools</category>
      <description><![CDATA[Reading source code on Github is probably 30% of every developer's job. (that's science) On a daily basis, you will find yourself in one of the following scenarios: Scenario A: You find yourself looking at a project, and you encounter a package import that your not sure what it's doing. So you go…]]></description>
    </item>
    <item>
      <title>Speed up your AVA (or Mocha) testing feedback loop using the .only flag</title>
      <link>https://davidwells.io/blog/speed-up-your-ava-or-mocha-testing-feedback-loop-using-the-only-flag</link>
      <guid isPermaLink="true">https://davidwells.io/blog/speed-up-your-ava-or-mocha-testing-feedback-loop-using-the-only-flag</guid>
      <pubDate>Fri, 22 Apr 2016 06:30:26 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>tools</category>
      <category>testing</category>
      <description><![CDATA[Setting up testing and debugging testing can be a real pain in the keister. As the number of tests you have starts to grow, things get slower and it can be hard to debug certain tests because your terminal output is rather large. To help mitigate slow tests and speed up your feedback/debug loop…]]></description>
    </item>
    <item>
      <title>Create and Deploy Static Sites and Demos in Seconds</title>
      <link>https://davidwells.io/blog/create-deploy-static-sites-demos-seconds</link>
      <guid isPermaLink="true">https://davidwells.io/blog/create-deploy-static-sites-demos-seconds</guid>
      <pubDate>Thu, 21 Apr 2016 06:25:54 GMT</pubDate>
      <dc:creator>DavidWells</dc:creator>
      <category>tools</category>
      <category>frontend</category>
      <description><![CDATA[Surge.sh is one of my favorite developer tools. It will allow you to launch static sites & demos to a live web URL in literally seconds from your terminal. See for yourself https://www.youtube.com/watch?v=LZA8QVLOinE Step 1: Install it Step 2: deploy into your projects directory and then run .…]]></description>
    </item>
  </channel>
</rss>
