CSS and design systems people - BlogFlock 2025-12-30T13:28:20.349Z BlogFlock Michelle Barker, Robin Rendle, Adam Argyle, Hidde de Vries, Stephanie Eckles, Robin Rendle, Sara Joy, Sara Soueidan Games Of December 2025 - Adam Argyle https://nerdy.dev/games-of-december-2025?utm_source=rss 2025-12-27T06:12:36.000Z <img style="display: none" src="https://nerdy.dev/media/games-of-december-2025.jpg" alt="undefined" height="1024" width="1024" /> <p>Some people read about the hero, some people play as the hero. If you don&#39;t play video games, you have 2 choices:</p> <ol> <li>Suffer through my ramblings</li> <li>Realize you&#39;re missing out and give one of these a try</li> </ol> <p>Here&#39;s what we&#39;ve been playing:</p> <h2> Skate Story <a name="skate-story" href="#skate-story">#</a> </h2> <p>You&#39;re a glass skateboarder stuck in the Underworld who has to skate to (get out?). A rad soundtrack, interesting visuals, and a weird story. </p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/M79A27qQXAs?si=4Q1JfMulKIBkjL59" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/1263240/Skate_Story/">Steam</a></p> <h2> Wheel World <a name="wheel-world" href="#wheel-world">#</a> </h2> <p>Ride a fixie through cell shaded worlds to a chill beat. Race others, discover stuff, collect things, and just take in the atmosphere. </p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/JmL15GGO1SA?si=zsSsOaV6JfOoZrEZ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://steamcommunity.com/app/1497460">Steam</a></p> <h2> Lego Voyagers <a name="lego-voyagers" href="#lego-voyagers">#</a> </h2> <p>We loved <a href="https://www.youtube.com/watch?v=piiBgt3BSZI">Lego Builder&#39;s Journey</a>, and this one has local co-op (our favorite). Play as 2 little Lego&#39;s who admire rocket ships and want to build one. Use your building skills and unravel the visually engaging and beautifully lit story.</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/ZBMOgbV7FTc?si=Tas_jqCG37X7r9Sa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/1544360/LEGO_Builders_Journey/">Steam</a></p> <h2> Bubble Bobble Sugar Dungeons <a name="bubble-bobble-sugar-dungeons" href="#bubble-bobble-sugar-dungeons">#</a> </h2> <p>We love retro games around here and got super pumped when we saw they were making a 2025 version of Bubble Bobble. BUT, we played Sugar Dungeons a few times and were disappointed it was single player. While it&#39;s fine… it&#39;s lacking some soul. It&#39;s just a bit bland and doesn&#39;t really tickle the nostalgia bug like we hoped.</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/CVB1ma8CzMw?si=vJ2uiNSlJnjQnNp9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/2937770/Bubble_Bobble_Sugar_Dungeons/">Steam</a></p> <h2> Dorf Romantik (the Boardgame) <a name="dorf-romantik-(the-boardgame)" href="#dorf-romantik-(the-boardgame)">#</a> </h2> <p>This house has played a lot of <a href="https://www.youtube.com/watch?v=nBFhVgMy_3s">Dorf Romantik</a> the video game. Everyone, young to old, feels satisfied with the cozy yet solitaire-like experience you get from this game. The board game does an AMAZING job of capturing the charm of the video game while combining it with the limitations of a board game.</p> <p>The board game is beautifully done, creating a compelling campaign arc, unlocks, and other exciting elements.</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/bemz_fhAhtE?si=GRMwyZqvmBN6HG57" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://www.amazon.com/Pegasus-Spiele-51240E-Dorfromantik-Boardgame/dp/B0BQ3W9GRL">Board Game</a></p> <h2> Ball Pit <a name="ball-pit" href="#ball-pit">#</a> </h2> <p>Whelp, we got super addicted to this one. Very arcade-like, super fun roguelike-style gameplay, and a fun gameloop. Super fun 5-20 minute sessions.</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/vsCA0zhV_Nw?si=FDVMJApoQIGMtWir" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/2062430/BALL_x_PIT/">Steam</a></p> <h2> Just Shapes and Beats <a name="just-shapes-and-beats" href="#just-shapes-and-beats">#</a> </h2> <p>Connect up to 4 controllers and dodge the shapes as they react to the beat. Each level is a full on custom visual beat experience to a track from a rad retro-bit playlist. All you gotta do is dodge stuff, you can move a stick right?</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/2VpqK2E8NRY?si=mxgwoTFOAb8Gln47" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/531510/Just_Shapes__Beats/">Steam</a></p> <h2> Curse Of The Dead Gods <a name="curse-of-the-dead-gods" href="#curse-of-the-dead-gods">#</a> </h2> <p>Mix a little Hades with FTL and you&#39;ve got yourself this roguelite. See how far you can get, do your best not to get hit, get some synergy in a sweet build, hack and slash your way to freedom.</p> <iframe width="800" height="450" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/y2-T3FbzvA0?si=2yurC6apGoCE1hvT" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <p><a href="https://store.steampowered.com/app/1123770/Curse_of_the_Dead_Gods/">Steam</a></p> Bring The Color - Adam Argyle https://nerdy.dev/bring-the-color?utm_source=rss 2025-12-16T07:05:00.000Z <video style="display: none" src="/media/gradient-style-stops.mp4" alt="some title" height="708" width="708" /> <p>Bring the color in at <a href="https://gradient.style">gradient.style</a></p> So Many Websites - Robin Rendle https://robinrendle.com/notes/So-Many-Websites/ 2025-12-14T18:06:50.000Z <p>I’ve been thinking about the web and how it’ll change with the increasingly…uh…worrying decline of search. It feels like the order of their results can no longer be trusted, the web no longer reliably scraped. Instead, this essential tool we’ve relied on for more than two decades has halted all progress, reversed course. In a heart beat I would pick the search engine of 2014 over the one I use today.</p> <p>So there’s a lot of anxiety out there about how this fundamentally changes the economics of the web. Folks are worried that without search functioning properly then the web itself is fading away, becoming irrelevant, or already even broken beyond repair. But I disagree! The premise at the heart of these conversations is that websites deserve and require a mass readership to be important or worthwhile. But what if they don’t?</p> <p>Sure, a lot of businesses were built around the economics of search and ten billion people looking at a block of text imprisoned by a swamp of ads for cars and questionable dietary supplements. Although, that doesn’t mean the web itself requires that specific business model to thrive, to still be worthwhile, to still be important. My hot take here is that ugly business models created ugly websites, but I digress.</p> <p>This idea has been rolling around my head since I started reading <em>So Many Books</em> by Gabriel Zaid where he writes: “It is worth asking, in the first place, whether all books need or deserve a mass readership.” <em>Yikes! Whoa!</em> This line hit me like a ton of bricks because most business models on the web have assumed a mass readership is out there—but what if it isn’t? What if the web, and most websites besides the few obvious exceptions, were instead more like book publishing? A few thousand dedicated readers out there, at best.</p> <p>I can feel the disappointment in the conversations I’ve been listening to, as if the whole point of the web is to exist at bewildering, eye-watering scale. A million clicks is so lame, man, when compared to a billion. Heck, your website only gets fifty trillion clicks a day? Is there a point to publishing that dinky website if it’s so small?</p> <p>But perhaps the death of search is <em>good</em> for the future of the web. Perhaps websites can be free of dumb rankings and junky ads that are designed to make fractions of a penny at a time. Perhaps the web needs to be released from the burden of this business model. Perhaps mass readership isn’t possible for the vast majority of websites and was never really sustainable in the first place.</p> <p>And perhaps we should let our websites be small and private things once again.</p> CSS Text Grow - Adam Argyle https://nerdy.dev/css-text-grow?utm_source=rss 2025-12-05T06:34:16.000Z <video style="display: none" src="/media/text-grow.mp4" alt="some title" height="1134" width="1512  " /> <p>Fit width text in 1 line of CSS:</p> <pre><code class="language-css"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0"><code><span class="line"><span style="color:var(--shiki-token-string-expression)">h1</span><span style="color:var(--shiki-foreground)"> {</span></span> <span class="line"><span style="color:var(--shiki-token-constant)"> text-grow</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> per-line scale</span><span style="color:var(--shiki-foreground)">;</span></span> <span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre> </code></pre> <p><small>Prototype available in Canary 165</small></p> <p><a href="https://codepen.io/argyleink/pen/gbrBVJG">Codepen</a> · <a href="https://github.com/w3c/csswg-drafts/issues/2528">CSSWG</a> · <a href="https://github.com/explainers-by-googlers/css-fit-text/blob/main/README.md">Explainer</a> · <a href="https://kizu.dev/fit-to-width/">Prior Art</a></p> On The Ux Show - Adam Argyle https://nerdy.dev/on-the-UX-show?utm_source=rss 2025-12-02T00:29:57.000Z <img style="display: none" src="https://nerdy.dev/media/the-ux-show-interview.jpg" alt="All three of us in a video call" height="720" width="1280" /> <p>Was on The UX Show with <a href="https://yashrajbharti.github.io/Design-Portfolio/">Yash Raj</a> and <a href="https://www.linkedin.com/in/victorsanchezbelmar/?locale=en_US">Victor Sanchez</a> 🤓</p> <p><a href="https://www.youtube.com/watch?v=6fGBgUAl7Hw">Watch it on YouTube</a></p> Using CSS to fix the irradiation illusion - Adam Argyle https://nerdy.dev/adjust-perceived-typepace-weight-for-dark-mode-without-layout-shift?utm_source=rss 2025-11-29T21:47:37.000Z <img style="display: none" src="https://nerdy.dev/media/typography-illusion.jpg" alt="The letter A is shown on white and on dark, as an exaggerated example of the irradiation illusion" height="1072" width="1920" /> <p>Ever noticed how white text on a black background <strong>looks thicker</strong> than black text on a white background, even though the weights are the same? </p> <p>This post teaches you how to account for this and adjust perceived font weight for dark mode <strong>without layout shift</strong>, with variable fonts and the <a href="https://fonts.google.com/knowledge/glossary/grade_axis"><code>GRAD</code></a> axis.</p> <p><q>g…RAD! 👈😎👈</q></p> <h2> Feel out the problem space <a name="feel-out-the-problem-space" href="#feel-out-the-problem-space">#</a> </h2> <p>Test your eyes and feel the problem space with the following demo <br>(def <a href="https://codepen.io/argyleink/full/ZYWavgP">open it up larger</a>):</p> <p> <iframe class="codepen-embed" scrolling="no" title="null" src="https://codepen.io/argyleink/embed/preview/ZYWavgP?default-tab=result&editable=true&theme-id=43079" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true" > See the Pen <a href="https://codepen.io/argyleink/embed/preview/ZYWavgP"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> </p> <p><strong>To test:</strong> <br>Flip between light and dark. Look closely at font weights in the &quot;un-adjusted&quot; and &quot;adjusted&quot; example content. </p> <p><strong>The goal:</strong> <br>The visual weight to not perceptively change when switching between light and dark. This means, when in dark mode, using a negative value for <code>GRAD</code> to reduce the perceived thickness.</p> <p><strong>Some play:</strong> <br>In dark mode, use the slider to adjust the <code>GRAD</code> axis to see how it changes the perceived weight of the font in the adjusted example. Feel free to fine tune the slider to find the perfect balance for your eyes, flipping back and forth, adjust the slider until you see no weight change when flipping themes.</p> <p>I think it&#39;s easier to notice the difference in the paragraph text than the heading text, but you find which is easier to notice for yourself. </p> <p><strong>It&#39;s subtle:</strong> <br>Don&#39;t expect this to jump out at you, but <strong>you&#39;ll struggle to unsee once you see</strong>.</p> <h2> Irradiation illusion <a name="irradiation-illusion" href="#irradiation-illusion">#</a> </h2> <p><a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC2041963/">Humans perceive white on black vs black on white differently.</a> We learned it from the world, the way shadows and light have given us biases and expectations. <a href="https://evidentscientific.com/en/microscope-resource/knowledge-hub/lightandcolor/humanvisionintro">Our squishy human eye</a> has been through some things you know?</p> <p><img loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/4/4d/Black_and_white_squares.jpg" alt="Irradiation illusion" title="null" decoding="async" undefined undefined /></p> <p>Read more about <a href="https://en.wikipedia.org/wiki/Irradiation_illusion">irradiation illusion</a>.</p> <p>This impacts typography in dark mode, as the perceived weight of a font changes in dark mode, without intention from the CSS authors. The light text appears thicker than the dark text counterpart, even though the font weight is the same.</p> <p><strong>CSS can account for this illusion</strong> 🤓</p> <h2> GRAD in variable fonts to the rescue <a name="grad-in-variable-fonts-to-the-rescue" href="#grad-in-variable-fonts-to-the-rescue">#</a> </h2> <p>Before variable fonts, font weight was the only way to adjust the perceived weight of a font, but this changes the glyph size. This can cause accidental layout shift, aka a janky experience. </p> <p><a href="https://fonts.google.com/knowledge/glossary/grade_axis"><code>GRAD</code></a> stands for &quot;grade&quot;, and it&#39;s a variable font axis that allows us to adjust the perceived weight of a font without changing the glyph size.</p> <h3> Fixing bold link hovers <a name="fixing-bold-link-hovers" href="#fixing-bold-link-hovers">#</a> </h3> <p>Here, you&#39;ll recognize this classic issue. Hover the links in the below demo to see a small preview of the type of layout shift that can occur. </p> <p> <iframe class="codepen-embed" scrolling="no" title="null" src="https://codepen.io/argyleink/embed/preview/qEZdOPE?default-tab=result&editable=true&theme-id=43079" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true" > See the Pen <a href="https://codepen.io/argyleink/embed/preview/qEZdOPE"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> </p> <p><strong>With variable fonts, we can use the <code>GRAD</code> axis to adjust the perceived weight of a font without changing the glyph size.</strong></p> <p>This allows us to adjust the perceived weight of a font without causing layout shift. That&#39;s what the &quot;fixed&quot; example is using.</p> <h2> One step further <a name="one-step-further" href="#one-step-further">#</a> </h2> <p>So far we&#39;ve only adjusted the perceived weight of a font in dark mode with a negative value for <code>GRAD</code>, and for links being hovered that use a positive value for <code>GRAD</code>, but we can go even further:</p> <p> <iframe class="codepen-embed" scrolling="no" title="null" src="https://codepen.io/argyleink/embed/preview/mdQrqvj?default-tab=result&editable=true&theme-id=43079" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true" > See the Pen <a href="https://codepen.io/argyleink/embed/preview/mdQrqvj"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> </p> <p>This allows us to adjust the perceived weight of a font based on the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-contrast">users contrast preferences</a>. </p> <p>If the user prefers more contrast, without layout shift, we can use a positive value for <code>GRAD</code> to increase the perceived thickness. In dark mode, we can use a negative value for <code>GRAD</code> to reduce the perceived thickness while still maintaining their preference.</p> <pre><code class="language-css"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0"><code><span class="line"><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> {</span></span> <span class="line"><span style="color:var(--shiki-foreground)"> --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> 0</span><span style="color:var(--shiki-foreground)">;</span></span> <span class="line"><span style="color:var(--shiki-token-constant)"> font-variation-settings</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-string-expression)"> "GRAD"</span><span style="color:var(--shiki-token-function)"> var</span><span style="color:var(--shiki-token-constant)">(--GRAD)</span><span style="color:var(--shiki-foreground)">;</span></span> <span class="line"><span style="color:var(--shiki-foreground)">}</span></span> <span class="line"></span> <span class="line"><span style="color:var(--shiki-token-keyword)">@media</span><span style="color:var(--shiki-foreground)"> (prefers-contrast</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> more) { </span><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> { --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> 700</span><span style="color:var(--shiki-foreground)"> } }</span></span> <span class="line"><span style="color:var(--shiki-token-keyword)">@media</span><span style="color:var(--shiki-foreground)"> (prefers-contrast</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> less) { </span><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> { --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> -50</span><span style="color:var(--shiki-foreground)"> } }</span></span> <span class="line"></span> <span class="line"><span style="color:var(--shiki-token-keyword)">@media</span><span style="color:var(--shiki-foreground)"> (prefers-color-scheme</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> dark) { </span><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> { --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> -50</span><span style="color:var(--shiki-foreground)"> } }</span></span> <span class="line"><span style="color:var(--shiki-token-keyword)">@media</span><span style="color:var(--shiki-foreground)"> (prefers-color-scheme</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> dark) </span><span style="color:var(--shiki-token-keyword)">and</span><span style="color:var(--shiki-foreground)"> (prefers-contrast</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> more) { </span><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> { --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> 150</span><span style="color:var(--shiki-foreground)"> } }</span></span> <span class="line"><span style="color:var(--shiki-token-keyword)">@media</span><span style="color:var(--shiki-foreground)"> (prefers-color-scheme</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> dark) </span><span style="color:var(--shiki-token-keyword)">and</span><span style="color:var(--shiki-foreground)"> (prefers-contrast</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-foreground)"> less) { </span><span style="color:var(--shiki-token-string-expression)">body</span><span style="color:var(--shiki-foreground)"> { --GRAD</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> -150</span><span style="color:var(--shiki-foreground)"> } }</span></span></code></pre> </code></pre> <p>Users will never ask for something like this. They&#39;ll just be able to easily read the content in your design in a way that feels natural.</p> <p>Time to check if your favorite font has a <code>GRAD</code> axis.</p> Midi Meets CSS At Beyond Tellerrand - Adam Argyle https://nerdy.dev/midi-meets-css-at-beyond-tellerrand?utm_source=rss 2025-11-27T07:16:43.000Z <img style="display: none" src="https://nerdy.dev/media/midi-meets-css-youtube.jpg" alt="Me on stage at Beyond Tellerrand with my talk "MIDI Meets CSS"" height="720" width="1280" /> <p><a href="https://www.youtube.com/watch?v=PMx-i0UuC5Q">MIDI Meets CSS</a>; out now on YouTube!</p> Beyond Tellerrand Talk Done - Adam Argyle https://nerdy.dev/beyond-tellerrand-talk-done?utm_source=rss 2025-11-07T02:56:09.000Z <img style="display: none" src="https://nerdy.dev/media/btconf-speaking-1.jpg" alt="Photo from behind, in black and white, me speaking to the crowd" height="1333" width="2000" /> <p>My talk <a href="https://beyondtellerrand.com/events/berlin-2025/speakers/adam-argyle">Midi Meets CSS</a> is done! Had a blast bein a high energy nerd on stage blastin banjo and beats from a <a href="https://teenage.engineering/guides/ep-133">K.O. II</a>.</p> <p>Marc, <a href="https://beyondtellerrand.com/events/berlin-2025">BTconf</a>; you rock. Day 1 of the talks have been so inspiring. Stoked for <a href="https://beyondtellerrand.com/events/berlin-2025/schedule/friday">day 2</a>.</p> On General Musings With Kevin Powell About Interviewing For Frontend Roles In 2025 - Adam Argyle https://nerdy.dev/on-general-musings-with-kevin-powell-about-interviewing-for-frontend-roles-in-2025?utm_source=rss 2025-10-31T14:48:48.000Z <img style="display: none" src="https://nerdy.dev/media/general-musings-2025.jpg" alt="Show thumbnail with Kevin and I on it" height="720" width="1280" /> <p>I was on the <a href="https://www.youtube.com/@GeneralMusings">General Musings</a> show with <a href="https://www.youtube.com/@kevinpowell">Kevin Powell</a> 🤘🏻💀</p> <p>We chat front-end job hunting in 2025, the misalignments between the technical interviews and the roles they were looking to fill, the overall state of the industry and hiring processes and how to distinguish yourself from the crowd.</p> <p><a href="https://zencastr.com/z/KHLM-Zlu">Audio</a> · <a href="https://www.youtube.com/watch?v=JLdh9VU7YPk">Video</a></p> Web components know about the user, device, variables, layout and more - Adam Argyle https://nerdy.dev/components-can-know?utm_source=rss 2025-10-30T23:51:37.000Z <img style="display: none" src="https://nerdy.dev/media/named-container-query.jpg" alt="a named container query example" height="578" width="1046" /> <p>Since I&#39;ve tried and failed like 3 times to try and write a blog post on &quot;sector driven design&quot; or &quot;smart components,&quot; this post is just gonna try and elaborate on what <a href="https://www.miriamsuzanne.com/">Miriam Suzanne</a> kids a li&#39;l and says &quot;components know stuff.&quot;</p> <p>This is huge though, for development <strong>and design</strong>. </p> <p>Components can own all their presentation aspects for nearly any scenario now. They can feel like magic, perfectly adapting to wherever the component author or designer has condoned. </p> <p>A new one that not enough people talk about is, CSS named container queries. A component can easily know if it&#39;s in the sidenav, footer, article area, callout, whatever!</p> <pre><code class="language-css"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0"><code><span class="line"><span style="color:var(--shiki-token-keyword)">@container</span><span style="color:var(--shiki-foreground)"> --some-area {</span></span> <span class="line"><span style="color:var(--shiki-foreground)"> …</span></span> <span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre> </code></pre> <p>That&#39;s amazing. </p> <p>No more chasing down all the styles and variations that scatter across your application.</p> <p>Components are aware of it&#39;s user, device, variables, layout and more. In an attempt to get y&#39;all stoked too, here&#39;s a list of all the &quot;stuff&quot; that components know.</p> <h2> What kind of stuff? <a name="what-kind-of-stuff?" href="#what-kind-of-stuff?">#</a> </h2> <p>Let&#39;s create the ultimate list of all the rad &quot;stuff&quot; that components know:</p> <ol> <li><strong>the users preferences</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme">dark/light</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion">reduced motion</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/forced-colors">forced-colors</a>, etc)</li> <li><strong>the users writing and reading preferences</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values">rtl</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/direction">lrt</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/writing-mode">etc</a>)</li> <li><strong>the user&#39;s device size, orientation, and capabilities</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/color-gamut">color</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer">pointer</a>, etc)</li> <li><strong>the app&#39;s design system</strong> <br>(colors, spacing, etc)</li> <li><strong>where they are in the app</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries">container</a> name queries)</li> <li><strong>how much space they have</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries">container</a> size queries)</li> <li><strong>how many items they contain</strong> <br>(<a href="https://frontendmasters.com/blog/quantity-queries-are-very-easy-with-css-has/">quantity query</a>)</li> <li><strong>what kind of items they contain</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:has">:has()</a>)</li> <li><strong>what the value of a variable for them is</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_size_and_style_queries">style query</a>)</li> <li><strong>whats in or out of view</strong> <br>(scroll animations)</li> <li><strong>whether its scrolling or not</strong> <br>(<a href="https://developer.chrome.com/blog/css-scroll-state-queries">scroll-state</a>)</li> <li><strong>is the user <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:hover">hovering</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:focus">focusing</a> or <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:active">activating</a> elements</strong></li> <li><strong>whether there&#39;s focus within or not</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-within">focus-within</a>)</li> <li><strong>if there&#39;s valid in invalid form inputs</strong> <br>(<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:valid">validity</a>)</li> </ol> <p><strong>Let me know in the comments what I missed.</strong> <br><small>I&#39;ll give ya a shout for your recommendation 🤘🏻💀</small></p> An Abundance of Inspiration - Robin Rendle https://robinrendle.com/notes/an-abundance-of-inspiration/ 2025-10-28T16:21:49.000Z <p>Redesigning this website over the weekend gave me a curious feeling. It was a deeply cozy one, as if my work sits on a continuum of all the other websites and books every made. As if my work is a link in a long chain through time. You’ll likely spot the inspiration right away: this redesign took an LLM copyright approach to Tschichold’s work and his rather beautiful designs for Penguin Books that are still iconic almost a century later.</p> <p>There’s other inspirations in here, too. Little details, like the code blocks from <a href="https://chsmc.org/">Chase McCoy’s website</a> which give an air of confidence to an otherwise empty, sad little box of code. Or you can peek under the hood into the code itself and find snippets like this one, <a href="https://piccalil.li/blog/creating-a-full-bleed-css-utility/">the full-bleed CSS utility</a> by Andy Bell:</p> <pre class="language-css"><code class="language-css"><span class="token selector">.full-bleed</span> <span class="token punctuation">{</span><br /> <span class="token property">width</span><span class="token punctuation">:</span> 100vw<span class="token punctuation">;</span><br /> <span class="token property">margin-left</span><span class="token punctuation">:</span> <span class="token function">calc</span><span class="token punctuation">(</span>50% - 50vw<span class="token punctuation">)</span><span class="token punctuation">;</span><br /><span class="token punctuation">}</span></code></pre> <p>However, the redesign of this website has always been inspired by a new font release and this time <a href="https://frerejones.com/families/edgar">Edgar</a> was the one that caught my eye. It’s stately and elegant and sick. Tobias Frere-Jones and Nina Stössinger made a system that’s clearly bookish yet without feeling prudish or uptight about it.</p> <p>But reading <a href="https://frerejones.com/blog/designing-edgar">Edgar’s design notes</a> you can follow my inspiration back and connect the dots to other sources of inspiration, too:</p> <blockquote> <p>“Looking at Caslon again, I realized this wasn’t just some historical artifact. There was something deeper — something still very present and alive,” says Frere-Jones, who felt “an unexpectedly strong reaction” as he pored over the letterforms more intensely. “It was a kind of strange resonance, like when you play a certain note on a speaker and the windows rattle.”</p> </blockquote> <p>That’s what inspiration is: finding an old thing and watching it move once again, discovering something else in there that you can remix. Or perhaps even rescue.</p> <p>At <a href="https://www.famsf.org/exhibitions/art-of-manga">the Art of Manga exhibition</a> at the de Young Museum last week I could hear that same hum. With my nose smushed against the glass, zooming in as far as I could to the beautiful sketches and drawings, I could see how all this work was connected: thousands upon thousands of hours. And all of it stacked on top of more work that I couldn’t see underneath with references and inspirations looted from somewhere else then tweaked and applied in strange new ways.</p> <p>Speaking of which, I’ve been reading William Gibson’s novel <em>Neuromancer</em> lately and it feels as if I’ve found some holy text, the source of truth for all modern sci-fi. Going in I knew the book was an inspiration to dozens of books and videogames and movies but I hadn’t quite grasped the full extent of it:</p> <blockquote> <p>He’d operated on an almost permanent adrenaline high, a by-product of youth and proficiency, jacked into a custom cyberspace deck that projected his disembodied consciousness into the consensual hallucination that was the matrix.</p> </blockquote> <p>I gasped as I discovered how throwaway lines or concepts that the novel introduces for a gentle dose of color and world-building have inspired enormous universes of fresh new stories: Night City, decks, eddies, “jacking in”, chrome, corpos, and the goddamn matrix just to name a few.</p> <p>This was how I felt redesigning my website this time round as there was just so much inspiration that it’s become overwhelming. I want to steal basically everything from <a href="https://anhvn.com/">anh’s new homepage</a> or bottle up the typographic confidence of <a href="https://nazhamid.com/">Naz’s website</a>. I want to distill the warm welcome of <a href="https://realdougwilson.com/">Doug’s</a> and soak up all the the focus and sturdiness of <a href="https://printingfilms.com/">Printing Films</a> and then for good measure package up the ordered curiosity of <a href="https://aworkinglibrary.com/">Mandy’s website</a>. And, of course, I want to put as much effort and energy into a thing as Lucas Pope put into <a href="https://youtu.be/90vqCKEEj3s?si=Sy-aoQiKiJMfRXHY">modeling his beautiful boat</a>.</p> <p>For now this redesign will do. It’s still messy, unfinished in places. Dark mode needs a lot of work. Mobile styles look clunky, too. I’ll continue to polish the infinite-scrolling blog posts (or I’ll get sick of them in a week and quietly cut them). I might re-add an about page or more information about me since that feels a little stark and threadbare today. That stuff is always tricky to figure out though.</p> <p>But this redesign was a good reminder that I’m always working amongst smart, inquisitive folks and all of them are taking inspiration from unlikely sources and adding their own thing to the mix. There is an abundance of inspiration out there—across media and genre and quirky publishing formats—and I just have to keep my eyes open to see it.</p> Beyond Tellerrand 2025 - Adam Argyle https://nerdy.dev/beyond-tellerrand-2025?utm_source=rss 2025-10-26T21:04:54.000Z <video style="display: none" src="/media/midi-meets-css-preview.mp4" alt="some title" height="1086" width="1920" /> <p><strong>Stoked</strong> for my upcoming talk at <a href="https://beyondtellerrand.com/events/berlin-2025">Beyond Tellerrand</a> in Berlin next month:</p> <p>🎶 <a href="https://beyondtellerrand.com/events/berlin-2025/speakers/adam-argyle">Midi Meets CSS</a> 🎶</p> <p>Most folks use WebGL to visualize their audio (and it&#39;s awesome) but that&#39;s not me, CSS is. I&#39;ve taken a different approach… </p> <p><a href="https://beyondtellerrand.com/events/berlin-2025/tickets">Be there</a> or be <code>aspect-ratio: 1</code></p> WWW Ep214 Npm Worms Rubygem Coups - Adam Argyle https://nerdy.dev/www-ep214-npm-worms-&-rubygem-coups?utm_source=rss 2025-10-21T00:20:07.000Z <img style="display: none" src="https://nerdy.dev/media/npm-worms-ruby-gems.jpg" alt="some title" height="1400" width="1400" /> <p><span class="Tag">Ep #214</span><br> <strong>NPM Worms &amp; RubyGems Coups: Trust Issues in Open Source</strong></p> <p><a href="https://robbiethewagner.dev">Robbie</a>, <a href="https://github.com/chuckcarpenter">Chuck</a>, and I talk about the worst whiskey, Tailwind as a “state management library,” recent security scares in open source, NPM dependency hygiene, developer visa drama, and tech salaries.</p> <p>⤷ <a href="https://whiskey.fm/npm-worms-rubygems-coups-trust-issues-in-open-source">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=UZ5uaTtSqkA">youtube</a> · <a href="https://open.spotify.com/episode/4eSLySpc5uoFm4YCciFwIN">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/npm-worms-rubygems-coups-trust-issues-in-open-source/id1552776603?i=1000732103864">apple</a></p> Oops CSS Got Away From Me Send Halp At Cascadiajs 2025 - Adam Argyle https://nerdy.dev/oops-css-got-away-from-me-send-halp-at-cascadiajs-2025?utm_source=rss 2025-10-12T22:32:11.000Z <img style="display: none" src="https://nerdy.dev/media/css-can-do-what.jpg" alt="Me on stage at CascadiaJS 2025, a screeshot from the youtube video" height="1067" width="1920" /> <p>You can now <a href="https://www.youtube.com/watch?v=QW6GECIzvsw">watch my talk</a> from <a href="https://cascadiajs.com/2025">CascadiaJS</a> 2025 <a href="/cascadiajs-2025-talk">3 weeks ago</a> 🤘🏻💀</p> <p><a href="https://www.youtube.com/watch?v=QW6GECIzvsw">Watch on YouTube</a></p> WWW Ep213 With Kevin Powell - Adam Argyle https://nerdy.dev/www-ep213-with-kevin-powell?utm_source=rss 2025-10-09T12:23:20.000Z <p><span class="Tag">Ep #213</span><br> <strong>Is CSS A programming language?</strong></p> <p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with <a href="https://www.kevinpowell.co/">Kevin Powell</a> about the quirks and complexities of CSS, Tailwind and Flexbox, AI’s failure to write decent styles, anchor dingles, trim styles, and more.</p> <p>⤷ <a href="https://whiskey.fm/is-css-a-programming-language-w-kevin-powell">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=fagY4_cUdSQ">youtube</a> · <a href="https://open.spotify.com/episode/6PKGYmn8pMNsbprkkKGo4e">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/is-css-a-programming-language-w-kevin-powell/id1552776603?i=1000730950886">apple</a></p> CSS Bluesky Feed - Adam Argyle https://nerdy.dev/css-bluesky-feed?utm_source=rss 2025-10-04T22:44:31.000Z <img style="display: none" src="https://nerdy.dev/media/css-bluesky-feed.jpg" alt="CSS Bluesky Feed" height="634" width="1244" /> <p>On Bluesky? Here&#39;s a <a href="https://bsky.app/profile/nerdy.dev/feed/css-feed">CSS Feed</a> I made 🤓</p> Try Warp - Adam Argyle https://nerdy.dev/try-warp?utm_source=rss 2025-10-03T03:03:08.000Z <p>Still a fan of <a href="https://app.warp.dev/referral/7QVE8L">Warp</a>, it&#39;s good stuff y&#39;all.</p> On Log Rocket With Kevin And Paige - Adam Argyle https://nerdy.dev/on-log-rocket-with-kevin-and-paige?utm_source=rss 2025-10-02T19:57:24.000Z <img style="display: none" src="https://nerdy.dev/media/logrocket-with-kevin-and-paige.jpg" alt="some title" height="720" width="1280" /> <p>Checkout this episode of <a href="https://www.youtube.com/playlist?list=PL8FM85_-SXvupF7t1ldACoyIa2EHDalWJ">PodRocket</a> with <a href="https://www.kevinpowell.co/">Kevin Powell</a>, <a href="https://www.paigeniedringhaus.com/">Paige</a> and I; we chat about… you guessed it, CSS!</p> <p><a href="https://www.youtube.com/watch?v=x_XMqcI-GS8">Watch</a> or <a href="https://open.spotify.com/episode/2THW9F9P9A805lEy2hhOYc">Listen</a></p> WWW Ep212 With Dave Rupert - Adam Argyle https://nerdy.dev/www-ep212-with-dave-rupert?utm_source=rss 2025-10-02T14:29:04.000Z <img style="display: none" src="https://nerdy.dev/media/www-ep212.jpg" alt="Dave Rupert shown as Macho Man Randy Standards" height="1400" width="1400" /> <p><span class="Tag">Ep #212</span><br> <strong>TalkShop Show w/ Macho Man Randy Standards</strong></p> <p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with <a href="https://daverupert.com">Dave Rupert</a> about whiskey, web culture, the quirks of building side projects, the shifting landscape of the web, AI-driven development, spec-driven workflows, RSS’s decline, and more.</p> <p>⤷ <a href="https://whiskey.fm/talkshop-show-w-macho-man-randy-standards">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=R15mWOB4MH0">youtube</a> · <a href="https://open.spotify.com/episode/5WsfiALuQ6hRU46StSBmJP">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/talkshop-show-w-macho-man-randy-standards/id1552776603?i=1000729691108">apple</a></p> A Rad Function To Be Excited About - Adam Argyle https://nerdy.dev/a-rad-function-to-be-excited-about?utm_source=rss 2025-10-01T05:03:02.000Z <p><a href="https://www.bram.us/">Bramus</a> with a <a href="https://www.bram.us/2025/09/30/css-custom-light-dark/">rad snippet</a>:</p> <pre><code class="language-css"><pre class="shiki css-variables" style="background-color:var(--shiki-background);color:var(--shiki-foreground)" tabindex="0"><code><span class="line"><span style="color:var(--shiki-token-keyword)">@function</span><span style="color:var(--shiki-foreground)"> --light-dark(--l, --d) {</span></span> <span class="line"><span style="color:var(--shiki-foreground)"> result: if (color-scheme(dark): var(--d); else: var(--l));</span></span> <span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre> </code></pre> <p>In 3 lines, a <code>--light-dark()</code> <a href="https://www.bram.us/2025/02/09/css-custom-functions-teaser/">CSS function</a> that works anywhere 🤩</p>