All Blog Posts

Browse the following posts, or view all tags.

  1. 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.

  2. 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.

  3. Published on

    Creating a Fluid Type Scale with CSS Clamp

    Fluid typography allows each font size in a modular scale to vary responsively between a min and max. Learn the math behind fluid typography and how to programmatically generate a fluid type scale with CSS clamp and Sass.

  4. Published on

    Modern Techniques for Writing Better CSS

    CSS has come a long way since the early days of web development. Learn how to write better CSS using modern strategies like the :is and :where pseudo-class functions, logical properties and values, clamp, gaps, and aspect-ratio.

  5. Published on

    NFTs Are a Problem

    While NFTs are being hailed as the future of digital ownership, they're also the source of many problems. NFTs are artificially scarce, make it easier to commit fraud, undermine the intellectual property rights of content creators, and encourage consumptive mining practices.

  6. Published on

    Represent State with HTML Attributes, Not Class Names

    Developers often use class names to represent a change in a component's state, but this leads to redundant (and sometimes inaccessible) markup. Instead, we should use native HTML attributes to represent state and style those discrete states with the CSS attribute selector.

  7. Published on

    Awaiting Multiple Promises with Promise.all

    Often, you need to wait for multiple independent async tasks to finish before resuming where your code left off. Learn how to use JavaScript's Promise.all method to await multiple async operations, such as batch file uploads.

  8. Published on

    The 62.5% Font Size Trick

    Once you get used to thinking in rems for font sizing, you'll find that it's easy to express familiar powers of two. But for other values, you may find it helpful to use the 62.5% font size trick.

  9. Published on

    Make Atomic Git Commits

    It can be tempting to lump unrelated code changes into a single commit, but this makes it difficult to debug and time travel in Git. Prefer to write atomic commits that have a single responsibility.

  10. Published on

    Why Developers Should Write

    Writing is likely one of the last skills you associate with software development. But it plays a key role in everything that we do and can help you build a more successful career.

  11. Published on

    Why You No Longer Enjoy Reading

    Reading books isn't something that everyone enjoys. But if you used to like reading but can no longer get past the first chapter of a new book, there may be a few reasons why.