Category: Software


  • Smashing Animations Part 2: How CSS Masking Can Add An Extra Dimension

    Despite keyframes and scroll-driven events, CSS animations have remained relatively rudimentary. As I wrote in Part 1, they remind me of the 1960s Hanna-Barbera animated series I grew up watching on TV. Shows like Dastardly and Muttley in Their Flying Machines, Scooby-Doo, The Perils of Penelope Pitstop, Wacky Races, and, of course, Yogi Bear. Mike…

  • We have long recognized that developer environments represent a weak point in the software supply chain. Developers, by necessity, operate with elevated privileges and a lot of freedom, integrating diverse components directly into production systems. As a result, any malicious code introduced at this stage can have a broad and significant impact radius particularly with…

  • Integrating Localization Into Design Systems

    Mark and I work as product designers for SAS, a leader in analytics and artificial intelligence recognized globally for turning data into valuable insights. Our primary role is to support the token packages and component libraries for the SAS Filament Design System. SAS’ customer base is global, meaning people from diverse countries, cultures, and languages…

  • Integrating Design And Code With Native Design Tokens In Penpot

    This article is a sponsored by Penpot It’s already the fifth time I’m writing to you about Penpot — and what a journey it continues to be! During this time, Penpot’s presence in the design tools scene has grown strong. In a market that recently felt more turbulent than ever, I’ve always appreciated Penpot for…

  • Smashing Animations Part 1: How Classic Cartoons Inspire Modern CSS

    Browser makers didn’t take long to add the movement capabilities to CSS. The simple :hover pseudo-class came first, and a bit later, the transitions between two states. Then came the ability to change states across a set of @keyframes and, most recently, scroll-driven animations that link keyframes to the scroll position. Even with these added…

  • While LLMs excel at generating cogent text based on their training data, they may also need to interact with external systems. Kiran Prakash describes how we get them to construct external function calls to do this. The LLM does not execute these calls directly, instead it creates a data structure that describes the call, passing…

  • Masonry In CSS: Should Grid Evolve Or Stand Aside For A New Module?

    You’ve got a Pinterest-style layout to build, but you’re tired of JavaScript. Could CSS finally have the answer? Well, for a beginner, taking a look at the pins on your Pinterest page, you might be convinced that the CSS grid layout is enough, but not until you begin to build do you realise display: grid…

  • How To Launch Big Complex Projects

    Think about your past projects. Did they finish on time and on budget? Did they end up getting delivered without cutting corners? Did they get disrupted along the way with a changed scope, conflicted interests, unexpected delays, and surprising blockers? Chances are high that your recent project was over schedule and over budget — just…

  • WCAG 3.0’s Proposed Scoring Model: A Shift In Accessibility Evaluation

    Since their introduction in 1999, the Web Content Accessibility Guidelines (WCAG) have shaped how we design and develop inclusive digital products. The WCAG 2.x series, released in 2008, introduced clear technical criteria judged in a binary way: either a success criterion is met or not. While this model has supported regulatory clarity and auditability, its…

  • Creating a user interface that visualizes a real-world structure — like the Thirty Meter Telescope’s mirror — might seem like a task that demands deep knowledge of geometry, D3.js, and SVG graphics. But with a Large Language Model (LLM) like Claude or ChatGPT, you don’t need to know everything upfront. This article documents a journey…