The AI Capability Gap Ever since the launch of ChatGPT, the software industry has, like it or not, been obsessed with AI and invested millions of dollars into building tools and infrastructure to support it. I've been endlessly fascinated by this for a few reasons beyond the AI features themselves. It feels like we're in the middle of a very unique time in our industry's history, one in which…
Isolating CSS Inheritance I was recently looking into CSS isolation between multiple applications running on the same web page and it turned into a deep dive of the CSS initial and revert keywords which I wanted to share in a short post on the subject (short for my blog anyways). The Problem I was tasked with running multiple web applications on the same page at the same time. These applications…
HTML Whitespace is Broken September 2, 2024 Recently, I was working on a project which required a deeper understanding of how whitespace works in HTML. I was never a fan of HTML's whitespace behavior before as I've been burned by it a few times. But as I dug into it more deeply, I found myself discovering complex design issues that I wanted to explore in a blog post. This is partially to write…
How a Cat Debugged Stable Diffusion December 17, 2023 This is the story of how I needed help to solve a tricky bug. Now, that happens all the time. I rely on coworkers and the web community to help me with bugs quite frequently. But this one was unique because it wasn't just any colleague, it was my cat Ollie, specifically this asshole stealing my chair: I was interested in experimenting with AI…
HTML Fragments Routing January 24, 2023 Another blog post about HTML fragments for you. If you haven't read the previous ones , I suggest you do because they are really interesting and probably the most popular thing on this blog right now. Tens of people can't be wrong about something like that! For those of you that didn't click the links above 😢, the TL;DR: for HTML fragments is basically…
Leaving Twitter January 8, 2023 If you're reading this at the time of posting, you know exactly what I'm going to say and why. If you're reading from the future some context might be helpful. (Also, has Linux taken over yet? It's the year of the Linux desktop now right?) Elon Musk took over Twitter and has put the company into a tailspin to put things charitably. In his short tenure there he has…
Streamable HTML Fragments September 24, 2022 In my recent HTML fragments blog post , I explored how to dynamically fetch a fully-encapsulated, server-side rendered (SSR) web component and use it without any custom tooling or "HTML-over-the-wire" framework. I suggested that the web spec could be updated to better support this use case, and it could improve over my prototype by supporting streamed…
Impressions of Rust August 6, 2022 I recently had an opportunity to write some production Rust code and as a programming language nerd I was very interested in the opportunity to experience what Rust development is really like and had a few observations to share. A few years ago I went through the Rust book and found a lot to like in the language, but never had an excuse to do much with it. Now I…
A Simpler HTML-over-the-Wire March 19, 2022 Recently, I was listening to some debate about client-side rendering (CSR) vs server-side rendering (SSR) and struggling with how to choose which approach is best for a particular project. This decision has very far reaching implications with complex trade offs. CSR often leads to unnecessary tooling complexity with significant performance implications.…
Construct Better February 13, 2022 Constructors are weird. No, seriously, have you ever taken a moment to really think about them? Why they work the way they do? You probably learned about constructors in school or on some online course and just accepted that is the way objects are created. At some point you probably heard about the factory pattern and use that from time to time. For the most…