CSS and design systems people - BlogFlock 2025-11-30T05:30:41.302Z BlogFlock Hidde de Vries, Robin Rendle, Michelle Barker, Adam Argyle, Stephanie Eckles, Robin Rendle, Sara Joy, Sara Soueidan 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> Getting A Frontend Job In 2025 On Frontend Fire - Adam Argyle https://nerdy.dev/getting-a-frontend-job-in-2025-on-frontend-fire?utm_source=rss 2025-09-29T14:38:31.000Z <img style="display: none" src="https://nerdy.dev/media/frontend-fire-2025.jpg" alt="some title" height="720" width="1280" /> <p>I joined the good folks on <a href="https://front-end-fire.com">Front-End Fire</a> to share how front-end interviewing is like in 2025, in the age of AI and short attention spans.</p> <p>⤷ <a href="https://front-end-fire.com/episodes/115/">website</a> · <a href="https://www.youtube.com/watch?v=9UZalK6jvP4">youtube</a> · <a href="https://open.spotify.com/episode/16M4z34pftesHPYewYWVrT">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/adam-argyle-on-cracking-the-2025-web-dev-interview/id1700169000?i=1000729059569">apple</a></p> Sticky Gradient Transitions - Adam Argyle https://nerdy.dev/sticky-gradient-transitions?utm_source=rss 2025-09-26T15:22:13.000Z <video style="display: none" src="/media/sticky-gradient-slices.mp4" alt="An overview of the scrolling sticky effect" height="1080" width="1920" /> <p>Sticky staggered offsets + gradients = neat transition</p> <ul> <li><a href="https://codepen.io/argyleink/pen/gbPPpoX">Simple version</a> (linear)</li> <li><a href="https://codepen.io/argyleink/pen/ogbbXZx">Trig version</a> (curves)</li> </ul> Squircles - Adam Argyle https://nerdy.dev/squircles?utm_source=rss 2025-09-26T03:01:58.000Z <img style="display: none" src="https://nerdy.dev/media/squircle.jpg" alt="An example squircle" height="500" width="500" /> <p>Squircles with <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/basic-shape/shape"><code>clip-path: shape()</code></a></p> <p><a href="https://codepen.io/argyleink/pen/zxGyJgm">Try on Codepen</a></p> Just Vite It - Adam Argyle https://nerdy.dev/just-vite-it?utm_source=rss 2025-09-25T04:27:27.000Z <img style="display: none" src="https://nerdy.dev/media/just-vite-it.jpg" alt="Michael Jackson pointing at text that says 'just vite it'" height="450" width="600" /> <p>Nobody wants to see your ugly config,<br> <strong>Just <a href="https://vite.dev/">Vite</a> It.</strong></p> Scroll To Bloom - Adam Argyle https://nerdy.dev/scroll-to-bloom?utm_source=rss 2025-09-20T18:28:51.000Z <video style="display: none" src="/media/responsive-grid-sda.mp4" alt="some title" height="872" width="1552" /> <p><a href="https://codepen.io/argyleink/full/wBMvNaN"><strong>Scroll To Bloom</strong></a></p> <ul> <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timeline/view"><code>animation-timeline: view()</code></a> </li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-of-type"><code>:nth-of-type(An + B)</code></a> </li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes"><code>@keyframes</code></a></li> </ul> <p> SO fun.</p>