<div class="section flex justify-center"> <div class="section-inner flex-grow min-w-0 mx-4 sm:mx-8 mt-9 max-w-4xl cdata"> <h1 id="i-write-about-web-development">I write about web development.</h1> <p class="lead">Thoughts on developing software for the web, JavaScript/NodeJS/TypeScript, and startup life. </div> </div> <div class="section flex justify-center"> <div class="section-inner flex-grow min-w-0 mx-4 sm:mx-8 mt-9 max-w-4xl cdata"> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/js-too-complicated/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/puzzle.jpg" alt="JavaScript Development is too Complicated"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/js-too-complicated/">JavaScript Development is too Complicated</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/js-too-complicated/">A collection of articles, twitter threads, etc. talking about how complicated 'modern' JS development is.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-11-19T00:00:00Z">Nov 19, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/full-stack-spas/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/pancakes.jpg" alt="Full Stack SPA Frameworks"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/full-stack-spas/">Full Stack SPA Frameworks</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/full-stack-spas/">How some frameworks are solving for the full-stack for SPAs.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-11-15T00:00:00Z">Nov 15, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/why-not-mongo/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/yes-no.jpg" alt="Why MongoDB is (Probably) the Wrong Choice for Your Next App"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/why-not-mongo/">Why MongoDB is (Probably) the Wrong Choice for Your Next App</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/why-not-mongo/">with lessons learned over operating MongoDB for 3 years in production</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-11-10T00:00:00Z">Nov 10, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/github-packages-private-npm/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/boxes.jpg" alt="How to Use GitHub Packages for a Private npm Registry"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/github-packages-private-npm/">How to Use GitHub Packages for a Private npm Registry</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/github-packages-private-npm/">Publish a package, install it in another project</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-11-08T00:00:00Z">Nov 8, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/web-framework/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/wiring.jpg" alt="I'm writing a web framework"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/web-framework/">I'm writing a web framework</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/web-framework/">Yet another framework for the web, but different (sort of).</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-10-28T00:00:00Z">Oct 28, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/typescript-frameworks-2020/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/typescript.jpeg" alt="TypeScript Frameworks in 2020"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/typescript-frameworks-2020/">TypeScript Frameworks in 2020</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/typescript-frameworks-2020/">A tour of TypeScript web frameworks in 2020.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-10-23T00:00:00Z">Oct 23, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-image sm:flex-shrink-0 mb-4 sm:mb-0 sm:mr-10"> <a class="block" href="/node-frameworks-2020/"><img class="sm:w-40 sm:h-40 mx-auto object-cover" src="/image/posts/nodejs.png" alt="An Opionated Guide to Node Frameworks in 2020"></a> </div> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/node-frameworks-2020/">An Opionated Guide to Node Frameworks in 2020</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/node-frameworks-2020/">Node is still a great choice for application development; here are some web frameworks to help.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-10-20T00:00:00Z">Oct 20, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/open-source-monetization/">Open Source Monetization Models</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/open-source-monetization/">A list of business models for open source software, with examples, and resources; focused on JavaScript.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-06-04T15:12:03Z">Jun 4, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/dual-licensing-deep-dive/">A Deep Dive Into Dual-Licensed Software</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/dual-licensing-deep-dive/">A deep-dive into GPLv3, dual licensing, and how to release commercial versions of open source code</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-06-03T15:12:03Z">Jun 3, 2020</time></aside> </div> </div> </div> <div class="mt-8"> <div class="summary sm:flex"> <div class="summary-content font-content-sans"> <a class="summary-title block font-semibold leading-tightly tracking-tightly text-2xl text-raven-800 hover:text-raven-900" href="/2020-js-developer-monetization/">8 Ways To Make Money As A JavaScript Programmer in 2020</a> <a class="summary-excerpt mt-2 block font-normal leading-tight tracking-normal text-base text-raven-500 hover:text-raven-600" href="/2020-js-developer-monetization/">JavaScript just turned 25, and it's still a great way to get paid.</a> <aside class="summary-meta mt-6 font-normal leading-snug tracking-normal text-sm text-raven-500"><time datetime="2020-05-15T12:12:03Z">May 15, 2020</time></aside> </div> </div> </div> </div> </div>