Sign in

Adam Argyle

@nerdy.dev.web.brid.gy
199 followers 0 following 335 posts

CSS DevRel @Google on Chrome, @CSSWG, co-host @CSS Podcast, co-host Bad @ CSS, host @GUI Challenges. Web design & development tips & tricks: CSS, JS, HTML, Design, & UX.

PostsRepliesMedia
Adam Argyle @nerdy.dev.web.brid.gy · 11/10/2026
nerdy.dev
WWW Ep255 Meta Harnesses Medical Midjourney And Specialists
Ep #255 Meta-Harnesses, Medical Midjourney, and Why Specialists Are Cooked Robbie and I are back together, talking token limits, OpenCode burning budgets, work trees for parallel agents, Impeccable's art direction grilling, CodeRabbit versus Copilot for PR reviews, self-heal…
000
Adam Argyle @nerdy.dev.web.brid.gy · 03/10/2026
nerdy.dev
Page View Count Regression Fixed
Page view counts regressed Oct 1 and were fixed just now. Hopefully those historical counts can be retrieved or fixed; working on it.
000
Adam Argyle @nerdy.dev.web.brid.gy · 03/10/2026
nerdy.dev
Transitioning Field Sizing Content With CSS
Neat CSS trick: Use anchor to track the size changes in a textarea (or whatever) and transition instead of instantly update 🤘🏻 See on Codepen
010
Adam Argyle @nerdy.dev.web.brid.gy · 02/10/2026
nerdy.dev
Front End Fast Money With Kevin Powell
30s on the clock, how well do my CSS answers stack up against Kevin 's audience? Watch on YouTube
000
Adam Argyle @nerdy.dev.web.brid.gy · 24/09/2026
nerdy.dev
WWW Ep254 From Geocities To Gpt Brad Frost
Ep #254 With Brad Frost ✨ Robbie and I welcome Brad Frost to talk grief and acceptance around AI, the Orchid synth , snowboarding as a metaphor for finding your line through chaos, why domain expertise matters more than ever, Van Halen's green M&Ms , and Brad's AI an…
000
Adam Argyle @nerdy.dev.web.brid.gy · 19/09/2026
nerdy.dev
BanjoCSS
Banjo, guitar, drums, trees, n' mountains.
001
Adam Argyle @nerdy.dev.web.brid.gy · 17/09/2026
nerdy.dev
Jev
A next-gen programming model
000
Adam Argyle @nerdy.dev.web.brid.gy · 10/09/2026
nerdy.dev
WWW Ep253 Experts Agree Yelling At Computers Is The Future
Ep #253 Experts Agree: Yelling at Computers Is the Future Robbie and Chuck reunite over Jim Beam White Label to catch up on Chuck's move to Italy, AI as tech leads, CodeRabbit versus GPT for code review, SOC 2 compliance workarounds, and why GitHub bots might unlock dark fac…
000
Adam Argyle @nerdy.dev.web.brid.gy · 03/09/2026
nerdy.dev
Stylex At Shopify
Did a deep dive to see if StyleX would work at Shopify . Turned out to be a wash , similar to my other explorations into OOCSS .
000
Adam Argyle @nerdy.dev.web.brid.gy · 18/08/2026
nerdy.dev
WWW Ep251 Guppy Pimpin In Trip Pants While Debugging Ie5
Ep #251 Guppy Pimpin In Trip Pants While Debugging IE5 Robbie and I do a mostly whatnot episode about our path getting into tech, playing in bands, and getting into trouble. We sip Glen Morangie "A Tale of Ice Cream" and share some stories. ⤷ whiskey.fm · youtube · spo…
000
Adam Argyle @nerdy.dev.web.brid.gy · 16/08/2026
nerdy.dev
Scotch Malt Whisky Society Member
New member of the Scotch Malt Whisky Society
000
Adam Argyle @nerdy.dev.web.brid.gy · 13/08/2026
nerdy.dev
Websub
WebSub support added.
000
Adam Argyle @nerdy.dev.web.brid.gy · 13/08/2026
nerdy.dev
Creativity On The Internet At Sxsw
Jack (CEO of Patreon) gives a great talk about the struggles of being an artist with the internet from the 90s to today, a history of tech and art, and lessons learned. Heartfelt insights into working through 2026 "content creation" culture. Watch on YouTube.
000
Adam Argyle @nerdy.dev.web.brid.gy · 12/08/2026
nerdy.dev
Contextualism At CSSday 2026
Watch my talk "Contextualism" from CSS Day on Conffab
000
Adam Argyle @nerdy.dev.web.brid.gy · 10/08/2026
nerdy.dev
2026 Open Agentic Tools
Some "open" agentic tools: * Open Chamber * Open Agents * Open Design * Open Design HTML Video * Open Montage Wonder if they use Open Props 😏
000
Adam Argyle @nerdy.dev.web.brid.gy · 10/08/2026
nerdy.dev
Scroll Axis Lock
I first noticed web scroll areas had scroll locking behavior when making 2D scroll snap demos; I couldn't scroll diagonally without getting hijacked and locked into an `x` or `y` axis. Even on a touch device, where a diagonal gesture is so easy and natural. See the Pen by Adam Argyle (@argyleink) on CodePen. Thanks to Bramus's rad interactive blog post I saw **Chrome 153** with the remedy: .scroller { overflow: auto; overscroll-behavior: contain; scroll-axis-lock: none; 👈 } spec | check for support **Freedom from the axis lock** 🤘🏻 ## Use cases # I was thinking: 1. swipe to dismiss interactions 2. flings 3. maps or infinite canvas navigating 4. datagrids or tables 5. image zoom scrolling around 6. 360 pano images or 3D model panning 7. data vis exploration Just seems worth while to use the natural inertia, tensions, perf and feels that scroll snap has for the snap feedback of "didnt swipe far enough" and the browser owned easing. Can also mitigate `scrollTo` strangeness that might do `x` then `y`. ## I did log a bug # I saw some performance regressions in the first 2 demo's I pulled up to test with 1. swipe prototype 2. snap matrix Filed a bug. I wouldn't necessarily file this as perfectly fixed, I still felt it was a bit clumsy or not enabling diagonal scrolling as smoothly as I'd like. **Overall exciting and meaningful IMO tho.** Your thoughts?
000
Adam Argyle @nerdy.dev.web.brid.gy · 08/08/2026
nerdy.dev
Ranting Devigner
My Blogspot in 2011: Ranting Devigner * see what tech articles I was reading lol * dev and design rants I was making also lol `Devigner = Designer + Developer` Before "**Design Engineer** " was coo
000
Adam Argyle @nerdy.dev.web.brid.gy · 05/08/2026
nerdy.dev
Kevin Powell Trying Out Prop For That
Kevin Powell tries out Prop For That, makin it look so slick and easy 🫶 Watch on YouTube
000
Adam Argyle @nerdy.dev.web.brid.gy · 05/08/2026
nerdy.dev
Max Value Of A CSS Length Layout Unit
`33554432px` the maximum value for a CSS length in a layout context. #randomCSSfacts Bramus on Masto
110
Adam Argyle @nerdy.dev.web.brid.gy · 03/08/2026
nerdy.dev
WWW Ep250 With Christina Martinez
Ep #250 **Live at React Miami with Christina Martinez** Robbie, Christina and I chat fun coding experiments, personifying agents, OpenClaw, hot takes and a little bit of whatnot. ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 25/07/2026
nerdy.dev
CSS Infinity Use Cases
CSS `infinity` (and `-infinity`!) solve some pretty specific problems elegantly, but can also just be plain fun to use. Showing support for `infinity`, `-infinity`, `NaN`, `pi`, and `e` Lets spur creative CSS juices with `infinity` and follow a couple use cases. ## Basics and gotchas # `infinity` and `-infinity` need to always be wrapped in `calc()`. If you want it to represent a dimension, it also needs to be multiplied by a unit like: div { border-radius: calc(infinity * 1px); z-index: calc(infinity); } Not quite limited to `calc()` too, you can use it with other `calc()`-like scenarios like `clamp()`, `min()`, `max()`, etc, which we'll dig into a bit 🤘🏻 ## 1. Circles and Pills # Before `infinity`, I would have used scientific notation like `1e9px` (which is `1000000000px`) to create a "big enough" radius for circles and pills at any size. But with `infinity`..!? .radius-full { border-radius: calc(infinity * 1px); } ## 2. Perma-state # Setting duration `calc(infinity * 1s)` makes an animation/transition so long that it appears to be frozen ⛄️ Hover over those boxes and the duration will be pinned to happen over infinity seconds, sticking the state for the duration of the page's life. I like how the duration of your hover is permanently made visible too. Visible millisecond duration via background color. ## 3. z-index # Need to beat `z-index: 999999999` or something? .tippy-top-of-stacking-context { z-index: calc(infinity) } This will max out at the largest int a browser allows: `2147483647`. Speaking of that number, you can see it by using counters like this: .css-max-int { counter-reset: cssInt calc(infinity); &::after { content: counter(cssInt); } } See! ## 4. To infinity and beyond # Use `calc(infinity * 1px)` to remove the floor or ceiling of a clamp. div { inline-size: clamp( calc(-infinity * 1px), /* no floor */ 100%, calc(infinity * 1px) /* no ceiling */ ); } ## 5. Freeze view transitions # Make view transitions never complete. ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation-duration: calc(infinity * 1s); } The `::view-transition` tree stays in the devtools DOM, giving you an opportunity to inspect or tweak. You can also freeze and inspect animations using the Animations panel in devtools. ## 6. Responsive radius # Another scenario where I would have reached for making a large number with scientific notation, is a responsive border radius. .viewport-responsive-radius { border-radius: clamp(0px, (100vi - 100%) * infinity, 20px); } .container-responsive-radius { border-radius: clamp(0px, (100cqi - 100%) * infinity, 20px); } If the elements inline-size is less than 100vi, the radius will be 0. If it's greater than 100vi, the radius will be 20px. There are a set of these available in Open Props. ## 7. Bools # Clamp an arbitrary number down to exactly 0 or 1, then use it: .flippy { --solo: clamp(0, (2 - sibling-count()) * infinity, 1); --crowded: clamp(0, (sibling-count() - 5) * infinity, 1); flex-grow: calc(1 - var(--solo)); font-size: calc(1rem - var(--crowded) * 0.125rem); } One variable now can drive color, offset, opacity, gaps, whatever. ## 8. Backdrop # You can use the spread feature of `box-shadow` to create a **non-interactive** backdrop: .backdrop { box-shadow: 0 0 0 calc(infinity * 1px) #0005; } Paint past the "entire viewport". ## 9. Scroll Trigger # Trigger a scroll driven transition in, and never transition out. .nav-title { timeline-trigger-activation-range-end: calc(infinity * 1px); } .product-title { animation: slide-and-fade 150ms ease both; animation-trigger: play-forwards play-backwards; } Though you'll see in the demo I use `scroll 100%` which is a specced way that feels closer to the intent I was going for, in that I wanted the range end to be the end of the scroll area. Try it: See the Pen by Adam Argyle (@argyleink) on CodePen. Also, just for funsies to share, here's the scroll driven version of the same navbar effect. Doesn't use infinity, but fun to try and compare scroll-triggered vs scroll-driven animation. See the Pen by Adam Argyle (@argyleink) on CodePen. ## Thats all # Hope you found that interesting! Comment with your own creative uses of `infinity`?
110
Adam Argyle @nerdy.dev.web.brid.gy · 23/07/2026
nerdy.dev
WWW Ep249 With Joel Hooks
Ep #249 **Live at React Miami with Joel Hooks** Robbie, Joel and I chat about Pi, OpenClaw, JoelClaw, YOLO mode, AGI, custom harnesses and a little bit of whatnot. ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 21/07/2026
nerdy.dev
100 Ways To Center A Div
100 ways to center a div by Temani Afif
110
Adam Argyle @nerdy.dev.web.brid.gy · 25/06/2026
nerdy.dev
WWW Ep248 Live At React Miami With Guests Jason Lengstorf And Kent C Dodds And Tanner Linsley And Francesco Cuilla
Ep #248 **Live at React Miami with guests Jason Lengstorf, Kent C. Dodds, Tanner Linsley and Francesco Ciulla** Robbie and I chat with **4 guests in 1 episode**! Topics span things like Lambo's, MCP vs OpenClaw, agents building agents, polymorphic UI libraries, SDD + state machines, how Prolog is the most hated programming language, and whatnot. ⤷ whiskey.fm · youtube · spotify · apple Presented by GitKraken and Clerk
000
Adam Argyle @nerdy.dev.web.brid.gy · 20/06/2026
nerdy.dev
WWW Ep247 Live At React Miami With Ken Wheeler
Ep #247 **Live at React Miami with guest Ken Wheeler** Robbie, Ken and I chat about proxies, pranks, survival bags, agent swarms and Ramon the 420 IQ Gorilla. ⤷ whiskey.fm · youtube · spotify · apple
110
Adam Argyle @nerdy.dev.web.brid.gy · 13/06/2026
nerdy.dev
Prop For That
Announcing Prop For That, a JS library that backfills what CSS doesn't provide us yet (and maybe never will). I'm done waiting for CSS to catch up to all the valuable information JS knows and done watching folks write the same little JS to just write a custom property to a component. " demo · docs · npm " Here's a basic example taking the value from a range slider to draw a nice gradient that fills up the slider: import 'prop-for-that/auto' // or import 'https://esm.sh/prop-for-that/auto' ` <input type="range" data-props-for="range" min="0" max="100" value="40" /> ` input[type="range"] { background: linear-gradient( to right in oklab, var(--theme) calc(var(--live-value-pct) * 100%), var(--track) 0 ); } ` codepen · docs example · codepen collection ## Why? # It's **super common** to need a few lines of JS for a simple thing like: * the value of the color input * the mouse pointer position * the size of the scrollbar * the colors present in an image or video * the battery level * an element's visibility * etc With Prop For That, you just declaratively specify on any element the props you want, and live props show up. "There's an imperitive API too, but the data attribute path is the slickest" Everything is a plugin that loads only if you need it too, ultimately putting you right where you wanted to be: **creating something sick in CSS using dynamic information** without wiring up some dorky JS. ## What kind of props? # My talk at CSS Day was an enumeration of all the ways CSS can adapt to users, contexts, pages, etc… which made me hyper aware of all the ways CSS couldn't adapt without JS. Here's a flat list of all the **live props** currently supported by the library: 1. Pointer x/y in the window 2. Pointer x/y inside/local to an element 3. Viewport pixel height/width values 4. Visual viewport information 5. Element size information 6. Element visibility 7. Scrollbar and thin scrollbar sizes 8. Input element values 9. Input element dirty, touched, pristine, etc 10. Select element value, index, count, etc 11. Colors from an image or gradient (average, accent, light, dark, etc) 12. Colors occuring in a video 13. Video progress 14. Image loaded or broken + natural h/w 15. Clock time 16. FPS 17. Online/offline status 18. Page focused/visible 19. Scroll velocity 20. Accelerometer and device tilt/orientation 21. Geolocation 22. DPR, CPU cores, memory 23. Page navigation type (reload, back, etc) And a few Chromium only props: 1. Network status like type, speed, save data, etc 2. Battery status 3. CPU pressure ## Style Queries # Style Queries being in all major browsers marks an important milestone for CSS, and made this library much more viable. Using Prop For That with Style Queries looks like this: import 'https://esm.sh/prop-for-that/auto' ` <form data-props-for="form-state"> <input name="name" required> <input name="email" type="email" required> <button type="submit">Save</button> </form> ` @container style(--live-all-valid: 1) { … } ` ## Bye noise # **Import, add attribute(s), have CSS fun.** Go make cool shit and share it with me 🤘🏻💀
000
Adam Argyle @nerdy.dev.web.brid.gy · 12/06/2026
nerdy.dev
Contextualism Talk At CSS Day 2026
✅ talk "Contextualism" at CSS Day 2026 Slides · Prop For That
000
Adam Argyle @nerdy.dev.web.brid.gy · 11/06/2026
nerdy.dev
WWW Ep246 AI Harnesses Framework Wars And Why Beards Beat Mustaches
Ep #246 **React Miami with guest Michael "Micky" Shimeles (AKA Rasmic)** Robbie, Micky and I chat about AI, frameworks, and the eternal beard vs mustache debate with a hilarious and fun guest. ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 08/06/2026
nerdy.dev
CSS Day 2026
🛬 Landed and stoked for CSS Day 2026! 💀 Tattoo scheduled 🤜🤛 Excited to see fellow CSS nerds 🎁 Have a special surprise at the end of my talk that I can't wait to reveal
000
Adam Argyle @nerdy.dev.web.brid.gy · 06/06/2026
nerdy.dev
A Standard Site
This blog is now a standard.site 🤘🏻
000
Adam Argyle @nerdy.dev.web.brid.gy · 05/06/2026
nerdy.dev
WWW Ep245 The Death Of Typing With Typecraft At React Miami
Ep #245 **Live at React Miami with Typecraft (Chris)** Robbie and I chat with Typecraft, chat tech and extract some 🔥 hot takes. ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 01/06/2026
nerdy.dev
Time To MC Cascadia JS
Robbie and I MC 🎤 Cascadia JS for the next 2 days See ya there 🤘🏻
000
Adam Argyle @nerdy.dev.web.brid.gy · 30/05/2026
nerdy.dev
Flex Wrap Balance
I wished for this last year .flex-container { display: flex; flex-wrap: balance; } ` now it's headed to Chrome 🤘🏻
000
Adam Argyle @nerdy.dev.web.brid.gy · 28/05/2026
nerdy.dev
Just Submitted My State Of CSS 2026 Survey
Just submitted my State of CSS 2026 Survey.
000
Adam Argyle @nerdy.dev.web.brid.gy · 27/05/2026
nerdy.dev
Relative Alpha
Would use: CSS relative alpha. button { border-color: alpha(from hotpink / calc(alpha * .25)); } `
000
Adam Argyle @nerdy.dev.web.brid.gy · 27/05/2026
nerdy.dev
WWW Ep244 Live At React Miami With Seth Webster
Ep #244 **Live at React Miami with Seth Webster** Robbie and I chat with Seth Webster (executive director of the React Foundation, former React lead at Meta, and chief developer evangelist at Expo) to talk the past, present, and future of React and some 🔥 hot takes. ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 22/05/2026
nerdy.dev
WWW Ep243 Keyframes Cash And Codepens With Stephen Shaw
Ep #243 **Keyframes, Cash and Codepens with Stephen Shaw** Robbie and I chat with Stephen about CSS animations, web components, SSR nightmares, and why building things by hand still matters in the age of AI slop. ⤷ whiskey.fm · youtube · spotify · apple
001
Adam Argyle @nerdy.dev.web.brid.gy · 20/05/2026
nerdy.dev
On The Overcommitted Podcast Ep60
Was lucky to be on the 🎙️ Overcommitted podcast with Bethany, Brittany, and Erika.
001
Adam Argyle @nerdy.dev.web.brid.gy · 11/05/2026
nerdy.dev
CSS Color Picker Now Available As A Figma Plugin
You can now use my <color-input> as a **Figma plugin** : HDR Color Picker
000
Adam Argyle @nerdy.dev.web.brid.gy · 07/05/2026
nerdy.dev
On Podrocket About Why AI Sucks At Frontend
Was on PodRocket to chat about my post Why AI Sucks At Front End: Watch it here or listen
000
Adam Argyle @nerdy.dev.web.brid.gy · 07/05/2026
nerdy.dev
WWW Ep242 From Wetware To Software
Ep #242 **From Wetware to Software** (presented by Warp) 🧠 wetware 🌧️ cloud leaks 🧑‍💼 agent vs agent 🥃 Whiskey & whatnot ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 26/04/2026
nerdy.dev
CSS Recently In All Browsers
Here's some rad CSS that just hit baseline between October 2025 - April 2026. At this point with the following features, the "I can't use it" vibe can shed away. ## Anchor Positioning # Anchor positioning lets you natively tether components to target elements without adjusting DOM semantics or crowding the main thread. This widget doesn't show green across the board as of writing this, there are sub features that aren't all supported, but the general featureset is ready. Checkout Tab's talk about `anchor` called Anchor Positioning at CSS Day 2025. Checkout my post on AIM if you missed it, neat anchor technique for FLIP-like transitions with anchor. ## @scope # CSS **selector** scoping, not _style_ scoping; a common misconception. However! With @scope we can simplify naming conventions or robobarf classnames just to avoid global cascade collisions. The "donut" feature is very special, it can limit styles from cascading into nested components by setting an end to the selector (a donut hole 🍩). Chris gave a talk about `@scope` called Scope In CSS at CSS Day 2025. ## Name Only Container Queries # @container no longer requires a size condition. You can now conditionally style elements just by name: .sidebar { container-name: sidebar; } .card { display: grid; @container sidebar { grid-auto-flow: column; } } ` * Chrome 149 * Safari 26.4 * Firefox 148 Chris wrote a good post about it over on FrontEnd Masters. ## shape() # Responsive, native CSS geometry. Draw complex clipping paths using standard CSS syntax and dynamic units (like `rem` or `calc()`) instead of being locked into rigid SVG pixel coordinates. Temani wrote a rad post about it over on FrontEnd Masters and a "complex" post CSS-Tricks. ## shape-outside with xywh() and rect() # Wrap inline text around precise geometric boundaries with xywh() and rect(). Typographical control over floating text flows without relying on images or clip-paths. * Chrome 150 (soon) * Safari 18 * Firefox 149 Still no pretext, but also still coo. ## view-transition-class and Types # SPA-like routing animations. With view-transition-class you can target massive collections of DOM nodes with a single animation rule, while JS View Transition Types let you programmatically direct "forward" or "backward" contextual motion. ## rcap, rch, rex, ric # Even more typographic precision. I wrote about these here.
000
Adam Argyle @nerdy.dev.web.brid.gy · 21/04/2026
nerdy.dev
Cozy Ux
I love cozy games. I want more **cozy software.** It's such a great UI/UX goal: chill, empowerment, and joy.
000
Adam Argyle @nerdy.dev.web.brid.gy · 17/04/2026
nerdy.dev
Cute Ass Whiskey Coaster
So stinkin' cute!
000
Adam Argyle @nerdy.dev.web.brid.gy · 16/04/2026
nerdy.dev
WWW Ep240 AI Cowgorithm Disrupts The Herd
Ep #240 **AI Cowgorithm Disrupts The Herd** (presented by Warp) 🕹️ Token spending 🧐 Autoresearch 🌗 Day Shift / Night Shift 🐄 Cowgorithms 💻 Terminal tools 🥃 Whiskey & whatnot ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 12/04/2026
nerdy.dev
Why AI Sucks At Front End
AI is a sycophantic dev wannabe that skimmed a shitload of tutorials. You get the results of a probabilistic guess based on patterns it saw during training. What did it train on? Ancient solutions, unoriginal UI patterns, and watered down junk. I'm about to rant about how this is both useful and lame. ## The Good # **AI loves the boring stuff. It thrives on mediocrity.** If you want some gloriously unoriginal UI, it has your back 😜 * **Scaffolding:** Generic regurgitation of patterns it's seen, done. * **Tokens:** Migrating tokens or mapping them out? It eats this tedious garbage for breakfast. * **Outlining features:** Generic lists ✅ * **Lying to your face:** Confident hot garbage on a silver platter. It'll hand you a snippet, dust off its digital hands, and tell you it finished the work. _It did not finish the work._ Aka: If it's a well-worn pattern, AI is there to help you copy-paste faster. Which, for a lot of programming, is totally the case. I'm genuinely finding a lot of helpful stuff in this department. ## The Bad # **Pixel perfection & bespoke solutions… what are those?** The exact second you step off the paved road of unoriginality, it faceplants. * **Bespoke solutions & custom interactions:** Try asking it for some scroll-driven animations or custom micro-interactions. It will invent a CSS syntax that hasn't existed since IE6. * **Layout & Spacing:** Predicting intrinsic/extrinsic page properties? It's already bad at math, how could it get this rediculously dynamic calculation correct. Spacing? Ha, seems reasonably to expect symmetry, but it's terrible at the math. * **Combined states:** Pinpointing where to edit a complex component state makes it cry. * **Accessibility:** It throws `aria-hidden="true"` at a wall and hopes it sticks. * **Performance:** It will give you the heaviest, jankiest solution unless you explicitly ask it to be for a specific (apparently "indie") performance solution. * **Tests:** Writing good tests? Good, no. A lot, yes. And the absolute best part? The more complex the component gets, the slower and dumber the front-end help becomes. Incredible how it can one shot a totally decent front-end design or component, than choke on a follow up request. Speaks to what it's good at. ## Why? # ### 1. It trained on ancient garbage # **It lacks modern training data.** It has an excessive reliance on standard templates because that's what the internet is full of. Modern CSS? It's barely aware of it. ### 2. It literally cannot see # **It's an LLM, not a rendering engine!** It's notoriously bad at math, and throwing screenshots at it means very little. It's stabbing in the dark. This leads to the classic UI interaction: **AI:** _"I'm done! Here is your perfectly crafted UI."_ **Me:** _"There's a gaping hole where the icon should be, fix the missing icon."_ **AI:** _"You're absolutely right. Let me fix that for you."_ ### 3. It doesn't know WHY we do things # **It doesn't understand the "why" behind our architectural decisions.** SDD, BDD, or state machines might help guide it, but the models weren't exactly trained on those paired with _stellar_ solutions. We're asking a giant text-predictor to make new connections on the fly. We can get it there, but there's so much to consider we have to spell it out before it starts making the connections we want. ### 4. Zero environmental control # **It doesn't control where the code lives.** It can write annoyingly amazing Rust, TypeScript or Python, but those have the distinct advantage of a predictable (pinnable!!! like v14.4) environment the code executes in. That's not how HTML or CSS work, there is no pinning the browser type, browser window size, browser version, the users input type (keyboard, mouse, touch, voice), their user preferences, etc. That's complex end environment shit. The list goes on too, for scenarios, contexts and variables the rendering engine juggles before resolving the final output. The LLM doesn't control these, so it ignores them until you make them relevant. Even prompting in logical properties, you have to ask for this kind of CSS. These should be CSS tablestakes output from LLMs, but it's not. And even when you ask for it, or provide documentation that spells it out, it's not guaranteed to work. The place where HTML and CSS have to render is chaotic. It's a browser, with a million different versions, a million different ways to render, a million different ways to interact with it, and a million different ways to break it. **It's a moving target, and LLMs are terrible at moving targets.** ## Damnit humans # **We're a LLM combinatorial explosion.** We're wildly unpredictable targets. We change our minds, we switch viewports, we change theme preferences, we changes devices, we change browsers, we change browser versions, we switch inputs, we change our everything. We're not a static target. We're not a pattern that can be learned. There is a "human mainstream" of behaviors, preferences, and expectations where LLMs can be genuinely helpful; but our "full potential" matrix will be exploding LLM output patterns for a long time to come. IMO at least. unless we Borg.
010
Adam Argyle @nerdy.dev.web.brid.gy · 10/04/2026
nerdy.dev
WWW Ep239 Flogging Margins With The Dropcap Murphys
Ep #239 **Flogging Margins With The Dropcap Murphys** featuring Dave Rupert and Chris Coyier ™️ Brand Truth vs Brand Slop 🔫 One-Shot Apps 🧑‍🎨 CSS in the Age of AI 🪾 Context Rot 🧛🏻‍♂️ Energy Vampires & AI Brain Fry 🥃 Whiskey & whatnot ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 03/04/2026
nerdy.dev
Migration To Fresh 2 And Denos Latest Console Complete
dash.deno.com → console.deno.com Fresh → Fresh 2 This was a large chunk of work 😅 Please report any regressions.
000
Adam Argyle @nerdy.dev.web.brid.gy · 02/04/2026
nerdy.dev
WWW Ep238 Nextjs Is Dead Long Live Nextjs Presented By Warp
Ep #238 **NextJS is Dead, Long Live NextJS (presented by Warp)** 🏭 Dark Factories 🤖 YOLO mode ❌ T shape vs X shape 🦞 OpenClaw 💀 Death of SaaS 🥃 Redwood Empire & whatnot ⤷ whiskey.fm · youtube · spotify · apple
000
Adam Argyle @nerdy.dev.web.brid.gy · 26/03/2026
nerdy.dev
WWW Ep237 Using Ai Wrong With Leon Noel And Danny Thompson
Ep #237 **The Transactional Trap:** How 97% of Developers Are Using AI Wrong - with Leon Noel & Danny Thompson 🤖 agentic dev 💬 prompt engineering 🦞 OpenClaw 🎼 orchestration, harnesses, and models 💀 leet code interviews 🕹️ Pokemon Go 🥃 whiskey & whatnot ⤷ whiskey.fm · youtube · spotify · apple
000