All Blog Posts

Browse the following posts, or view all tags.

  1. Published on


    After nearly two decades of living in the United States, I'm proud to say that I'm now officially a U.S. citizen.

  2. Published on

    Class Fields vs. Methods in JavaScript

    In JavaScript, class fields allow you to define properties on a class instance outside the constructor. In the case of function properties, it's important to understand how fields differ from methods and their potential tradeoffs.

  3. Published on

    A Font-Face Faux Pas

    When using the font-face local() function to load fonts installed on a user's system, double-check that sure you're requesting the right font family.

  4. Published on

    Writing Better Documentation

    Documentation is one of those things that you don't appreciate until you have to work without it. Good documentation should go beyond the code itself and also cover your team, the product, your work process, areas of specialization, and many other key areas.

  5. Published on

    The Cost of Tech Debt

    The longer you leave tech debt unresolved, the more problems it will create for your team, until one day it becomes unbearable.

  6. Published on

    Add Build Info to an 11ty Site

    Expose information about your 11ty site at build time to all templates using global data. Among other things, this can be used to show your site's build time, package version, and the latest Git commit hash.

  7. Published on

    A Set of Useful 11ty Filters

    One of my favorite things about 11ty is its flexibility and how easily you can customize your chosen template language without having to leave the familiar comfort of the Node ecosystem.

  8. Published on

    Design Mode in 11ty

    Sometimes, I prefer to compose text right in my browser and copy it over to my source files. In 11ty, we can enable this behind a keyboard shortcut in our development environment using environment variables.

  9. Published on

    Changing the Locale in Chrome with Dev Tools

    Modern browsers have developer tools that allow us to simulate user preferences, vision impairments, device resolutions, and various other scenarios. Chromium browsers in particular allow us to also simulate loading the page in a different locale.

  10. Published on

    Gated Content, Broken Locks

    Some sites gate their content by hiding it with CSS. Whether you open the site incognito or normally, the full content appears to be beyond reach. But it's not—anyone can swing open the gate.

  11. Published on

    Flexbox Holy Albatross with Variable-Width Columns

    The Holy Albatross technique allows a flex container to auto-wrap from multiple columns to a single column at a target container width. Let's modify the original code to control the number and widths of columns.

  12. Published on

    How to Download and Optimize Google Fonts

    Self-hosting fonts can improve your site's performance while also respecting your users' privacy in the era of the GDPR. Learn how to download, subset, and optimize any Google Font for your projects.