JamComments, a guilt-free comment service for Jamstack blogs, is live!Check it out.


  • When a JavaScript WeakMap() Actually Came in Handy

    Back when I was working on slide-element, I noticed an issue that would occur when I rapidly toggled an element open & closed. If the previous animation wasn’t allowed to finish, the new one would eventually get outta whack, clipping the content on subsequent animations. The Cause of the Weirdness...Read It
  • Build Your Own WordPress Plugin Update Server with a Serverless Function

    A while ago, I wrote a premium WordPress plugin for creating typewriter effects with TypeIt via shortcode or Gutenblock. I was ill-prepared for the trickiness of managing plugin updates for such a plugin. Since a premium plugin is monetized, it can’t live inside the WordPress Plugin Repository like free options...Read It
  • Set Up a Quick & Dirty FTP Server on DigitalOcean

    A project of mine recently needed a simple FTP server that can give multiple different users access to the contents of specific directories (and only those directories). My technical requirements were stupid simple, the data I’d be dealing with wasn’t sensitive, and I wanted to avoid paying for an expensive...Read It
  • Bullets, Cannonballs, and Web Components

    In his book Great by Choice, Jim Collins describes how launching new initiatives is best done by first firing bullets, then cannonballs. That is, performing small, inexpensive experiments helps companies “calibrate their line of sight,” increasing the chance of success when the more substantial cannonballs are finally launched. It’s hard...Read It
  • Deploying WordPress to WP Engine with GitHub Actions and Composer

    It’s difficult to overstate the value of GitHub Actions in automating tasks we previously had to perform manually – deploying WordPress sites included. Recently, I was tasked with setting up a WordPress repository to automatically deploy to a WP Engine environment whenever a commit is made to a particular branch....Read It
  • When DOM Updates Appear to Be Asynchronous

    Imagine we have some JavaScript on a page that updates an element’s contents and immediately logs those contents out: After loading the page, you’d correctly expect that “updated text” will be displayed on the screen. And when it’s exposed via that console.log(), you’ll see the same value there too. The...Read It
  • Why I Like Tailwind CSS

    I’ve used Tailwind CSS for a few projects over the last several months, and it’s been steadily growing on me – to the point of it becoming my go-to tool for styling new projects. At the same time, I’m seeing a lot of people ask what all the hype is...Read It
  • Don't Feel Bad About Using XMLHttpRequest

    A while back, I began contributing to a small JavaScript library responsible for sending a POST request with some data to an endpoint. At the time, it used axios to make that request, and I wanted to simplify things by shedding a dependency. The obvious alternative was fetch – modern,...Read It

2 of 5