<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[Adam Argyle]]></title>
        <description><![CDATA[RSS Feed for Adam Argyle: Web design & development tips & tricks: CSS, JS, HTML, Design, & UX.]]></description>
        <link>https://nerdy.dev</link>
        <image>
            <url>https://nerdy.dev/rss-icon.png</url>
            <title>Adam Argyle</title>
            <link>https://nerdy.dev</link>
        </image>
        <generator>RSS for Node</generator>
        <lastBuildDate>Sat, 25 Jul 2026 21:28:42 GMT</lastBuildDate>
        <atom:link href="https://nerdy.dev/rss.xml" rel="self" type="application/rss+xml"/>
        <copyright><![CDATA[2026 Adam Argyle]]></copyright>
        <language><![CDATA[en]]></language>
        <webMaster><![CDATA[adam.is@nerdy.dev (Adam Argyle)]]></webMaster>
        <ttl>60</ttl>
        <category><![CDATA[CSS]]></category>
        <category><![CDATA[HTML]]></category>
        <category><![CDATA[JavaScript]]></category>
        <category><![CDATA[Front-End]]></category>
        <category><![CDATA[Design]]></category>
        <icon>https://nerdy.dev/rss-icon.png</icon>
        <logo>https://nerdy.dev/skull-card.png</logo>
        <item>
            <title><![CDATA[CSS Infinity Use Cases]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/css-infinity-and-beyond.jpg" alt="Buzz light year showing flying with a title showing css infinity and beyond" height="550" width="1500" />
        <script type="module">
  import "https://cdn.jsdelivr.net/npm/baseline-status";
</script>

<p>CSS <code>infinity</code> (and <code>-infinity</code>!) solve some pretty specific problems elegantly, but can also just be plain fun to use.</p>
<p><baseline-status featureId="calc-constants"></baseline-status></p>
<p><small>Showing support for <code>infinity</code>, <code>-infinity</code>, <code>NaN</code>, <code>pi</code>, and <code>e</code></small></p>
<p>Lets spur creative CSS juices with <code>infinity</code> and follow a couple use cases.</p>

        <h2>
          Basics and gotchas
          <a name="basics-and-gotchas" href="#basics-and-gotchas">#</a>
        </h2>
       <p><code>infinity</code> and <code>-infinity</code> need to always be wrapped in <code>calc()</code>.</p>
<p> If you want it to represent a dimension, it also needs to be multiplied by a unit like:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">div</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit">  z-index</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Not quite limited to <code>calc()</code> too, you can use it with other <code>calc()</code>-like scenarios like <code>clamp()</code>, <code>min()</code>, <code>max()</code>, etc, which we&#39;ll dig into a bit 🤘🏻</p>

        <h2>
          1. Circles and Pills
          <a name="1.-circles-and-pills" href="#1.-circles-and-pills">#</a>
        </h2>
       <p>Before <code>infinity</code>, I would have used scientific notation like <code>1e9px</code> (which is <code>1000000000px</code>) to create a &quot;big enough&quot; radius for circles and pills at any size. </p>
<p>But with <code>infinity</code>..!?</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.radius-full</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<div class="radius-full-example">
  <style>
    .radius-full-example {
      width: 100px;
      aspect-ratio: 1;
      background: var(--surface-1);
      box-shadow: var(--shadow-2);
      border-radius: calc(infinity * 1px);
    }
  </style>
</div>

<div class="pill-example">
  <style>
    .pill-example {
      width: 100px;
      aspect-ratio: 3/1;
      background: var(--surface-1);
      box-shadow: var(--shadow-2);
      border-radius: calc(infinity * 1px);
    }
  </style>
</div>


        <h2>
          2. Perma-state
          <a name="2.-perma-state" href="#2.-perma-state">#</a>
        </h2>
       <p>Setting duration <code>calc(infinity * 1s)</code> makes an animation/transition so long that it appears to be frozen ⛄️</p>
<p>Hover over those boxes and the duration will be pinned to happen over infinity seconds, sticking the state for the duration of the page&#39;s life.</p>
<div class="perma-state-example">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

<style>
  .perma-state-example {
    --size: min(3vi, 3ch);
    display: grid;
    grid: var(--size) var(--size) var(--size) / auto-flow var(--size);
    gap: 5px;

    > div {
      border: 2px solid var(--surface-1);
      transition: background calc(infinity * 1s) ease;

      &:hover {
        background: var(--surface-1);
        transition-duration: .2s;
      }
    }
  }
</style>

<p>I like how the duration of your hover is permanently made visible too. Visible millisecond duration via background color.</p>

        <h2>
          3. z-index
          <a name="3.-z-index" href="#3.-z-index">#</a>
        </h2>
       <p>Need to beat <code>z-index: 999999999</code> or something? </p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.tippy-top-of-stacking-context</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  z-index</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity)</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>This will max out at the largest int a browser allows: <code>2147483647</code>. Speaking of that number, you can see it by using counters like this:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.css-max-int</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  counter-reset</span><span style="color:#ff1493">:</span><span style="color:inherit"> cssInt </span><span style="color:#4263eb">calc</span><span style="color:inherit">(infinity)</span><span style="color:#030507">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#030507">  &#x26;</span><span style="color:#ff1493">:</span><span style="color:inherit">:after {</span></span>
<span class="line"><span style="color:inherit">    content: </span><span style="color:#4263eb">counter</span><span style="color:inherit">(cssInt)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">  }</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<style>
  .css-max-int {
    counter-reset: cssInt calc(infinity);

    &::after {
      font-weight: bold;
      content: " " counter(cssInt);
    }
  }
</style>

<p class="css-max-int">See!</p>


        <h2>
          4. To infinity and beyond
          <a name="4.-to-infinity-and-beyond" href="#4.-to-infinity-and-beyond">#</a>
        </h2>
       <p>Use <code>calc(infinity * 1px)</code> to remove the floor or ceiling of a clamp.</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">div</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  inline-size</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(</span></span>
<span class="line"><span style="color:#4263eb">    calc</span><span style="color:inherit">(-infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#be4bdb">,</span><span style="color:#868e96"> /* no floor */</span></span>
<span class="line"><span style="color:inherit">    100</span><span style="color:#ff1493">%</span><span style="color:#be4bdb">,</span><span style="color:inherit"> </span></span>
<span class="line"><span style="color:#4263eb">    calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)   </span><span style="color:#868e96">/* no ceiling */</span></span>
<span class="line"><span style="color:inherit">  )</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>

        <h2>
          5. Freeze view transitions
          <a name="5.-freeze-view-transitions" href="#5.-freeze-view-transitions">#</a>
        </h2>
       <p>Make view transitions never complete. </p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#030507">::view-transition-group(</span><span style="color:#4263eb">*</span><span style="color:#030507">),</span></span>
<span class="line"><span style="color:#030507">::view-transition-old(</span><span style="color:#4263eb">*</span><span style="color:#030507">),</span></span>
<span class="line"><span style="color:#030507">::view-transition-new(</span><span style="color:#4263eb">*</span><span style="color:#030507">) {</span></span>
<span class="line"><span style="color:inherit">  animation-duration</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">s</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>The <code>::view-transition</code> tree stays in the devtools DOM, giving you an opportunity to inspect or tweak. </p>
<p>You can also freeze and inspect animations using the Animations panel in devtools.</p>

        <h2>
          6. Responsive radius
          <a name="6.-responsive-radius" href="#6.-responsive-radius">#</a>
        </h2>
       <p>Another scenario where I would have reached for making a large number with scientific notation, is a responsive border radius. </p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.viewport-responsive-radius</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(0</span><span style="color:#ff1493">px</span><span style="color:#be4bdb">,</span><span style="color:inherit"> (100vi - 100</span><span style="color:#ff1493">%</span><span style="color:inherit">) * infinity</span><span style="color:#be4bdb">,</span><span style="color:inherit"> 20</span><span style="color:#ff1493">px</span><span style="color:#030507">);</span></span>
<span class="line"><span style="color:#030507">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#4263eb">.container-responsive-radius</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  border-radius</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(0</span><span style="color:#ff1493">px</span><span style="color:#be4bdb">,</span><span style="color:inherit"> (100cqi - 100</span><span style="color:#ff1493">%</span><span style="color:inherit">) * infinity</span><span style="color:#be4bdb">,</span><span style="color:inherit"> 20</span><span style="color:#ff1493">px</span><span style="color:#030507">);</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>If the elements inline-size is less than 100vi, the radius will be 0. If it&#39;s greater than 100vi, the radius will be 20px.</p>
<p>There are a set of these available in <a href="https://github.com/argyleink/open-props/blob/main/src/props.borders.css#L25-L30">Open Props</a>.</p>

        <h2>
          7. Bools
          <a name="7.-bools" href="#7.-bools">#</a>
        </h2>
       <p>Clamp an arbitrary number down to exactly 0 or 1, then use it:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.flippy</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:#030507">  --solo</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(0</span><span style="color:#be4bdb">,</span><span style="color:inherit"> (2 - sibling-count()</span><span style="color:#030507">) * </span><span style="color:inherit">infinity</span><span style="color:#030507">, 1);</span></span>
<span class="line"><span style="color:#030507">  --crowded</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> clamp</span><span style="color:inherit">(0</span><span style="color:#be4bdb">,</span><span style="color:inherit"> (sibling-count() - 5</span><span style="color:#030507">) * </span><span style="color:inherit">infinity</span><span style="color:#030507">, 1);</span></span>
<span class="line"></span>
<span class="line"><span style="color:inherit">  flex-grow</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(1 </span><span style="color:#ff1493">-</span><span style="color:#4263eb"> var</span><span style="color:inherit">(--solo))</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit">  font-size</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(1</span><span style="color:#ff1493">rem</span><span style="color:#ff1493"> -</span><span style="color:#4263eb"> var</span><span style="color:inherit">(--crowded) </span><span style="color:#ff1493">*</span><span style="color:inherit"> 0.125</span><span style="color:#ff1493">rem</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>One variable now can drive color, offset, opacity, gaps, whatever. </p>

        <h2>
          8. Backdrop
          <a name="8.-backdrop" href="#8.-backdrop">#</a>
        </h2>
       <p>You can use the spread feature of <code>box-shadow</code> to create a <strong>non-interactive</strong> backdrop:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.backdrop</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  box-shadow</span><span style="color:#ff1493">:</span><span style="color:inherit"> 0 0 0 </span><span style="color:#4263eb">calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">) #0005</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Paint past the &quot;entire viewport&quot;.</p>

        <h2>
          9. Scroll Trigger
          <a name="9.-scroll-trigger" href="#9.-scroll-trigger">#</a>
        </h2>
       <p>Trigger a scroll driven transition in, and never transition out.</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">.nav-title</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  timeline-trigger-activation-range-end</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> calc</span><span style="color:inherit">(infinity </span><span style="color:#ff1493">*</span><span style="color:inherit"> 1</span><span style="color:#ff1493">px</span><span style="color:inherit">)</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#4263eb">.product-title</span><span style="color:#030507"> {</span></span>
<span class="line"><span style="color:inherit">  animation</span><span style="color:#ff1493">:</span><span style="color:inherit"> slide-and-fade 150</span><span style="color:#ff1493">ms</span><span style="color:inherit"> ease both</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:inherit">  animation-trigger</span><span style="color:#ff1493">:</span><span style="color:inherit"> play-forwards play-backwards</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p>Though you&#39;ll see in the demo I use <code>scroll 100%</code> 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.</p>
<p>Try it:</p>
<p>
          <iframe 
            class="codepen-embed" 
            scrolling="no" 
            title="null" 
            src="https://codepen.io/argyleink/embed/preview/BypVjyj?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/BypVjyj"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
            on <a href="https://codepen.io">CodePen</a>.
          </iframe>
        </p>
<p>Also, just for funsies to share, here&#39;s the scroll driven version of the same navbar effect. Doesn&#39;t use infinity, but fun to try and compare scroll-triggered vs scroll-driven animation.</p>
<p>
          <iframe 
            class="codepen-embed" 
            scrolling="no" 
            title="null" 
            src="https://codepen.io/argyleink/embed/preview/zxNaGVK?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/zxNaGVK"> by Adam Argyle (<a href="https://codepen.io/argyleink">@argyleink</a>)
            on <a href="https://codepen.io">CodePen</a>.
          </iframe>
        </p>

        <h2>
          Thats all
          <a name="thats-all" href="#thats-all">#</a>
        </h2>
       <p>Hope you found that interesting! </p>
<p>Comment with your own creative uses of <code>infinity</code>?</p>
]]></description>
            <link>https://nerdy.dev/css-infinity-use-cases?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/css-infinity-use-cases?utm_source=rss</guid>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[atom@argyleink]]></dc:creator>
            <pubDate>Sat, 25 Jul 2026 19:57:08 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/css-infinity-and-beyond.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/css-infinity-and-beyond.jpg"/>
        </item>
        <item>
            <title><![CDATA[WWW Ep249 With Joel Hooks]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/www-ep249.jpg" alt="Whiskey web and whatnot episode 247" height="2000" width="2000" />
        <p><span class="Tag">Ep #249</span><br>
<strong>Live at React Miami with Joel Hooks</strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a>, <a href="https://joelhooks.com/">Joel</a> and I chat about <a href="https://pi.dev/">Pi</a>, OpenClaw, <a href="https://joelclaw.com/">JoelClaw</a>, YOLO mode, AGI, custom harnesses and a little bit of whatnot.</p>
<p>⤷ <a href="https://whiskey.fm/pi-extensions-yolo-mode-and-building-your-own-personal-claw-w-joel-hooks">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=WvqcvfGqVPY">youtube</a> · <a href="https://open.spotify.com/episode/0tdY7j7RprBQx2yCCDbllk">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/pi-extensions-yolo-mode-and-building-your-own/id1552776603?i=1000777993502">apple</a></p>
]]></description>
            <link>https://nerdy.dev/www-ep249-with-joel-hooks?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/www-ep249-with-joel-hooks?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[shows]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[adam@whiskey.fm]]></dc:creator>
            <pubDate>Thu, 23 Jul 2026 19:57:08 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/www-ep249.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/www-ep249.jpg"/>
        </item>
        <item>
            <title><![CDATA[100 Ways To Center A Div]]></title>
            <description><![CDATA[<p><a href="https://css-generators.com/center">100 ways to center a div</a><br>
<cite>by <a href="https://github.com/Afif13/">Temani Afif</a></cite></p>
]]></description>
            <link>https://nerdy.dev/100-ways-to-center-a-div?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/100-ways-to-center-a-div?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[atom@argyleink]]></dc:creator>
            <pubDate>Tue, 21 Jul 2026 02:46:06 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[WWW Ep248 Live At React Miami With Guests Jason Lengstorf And Kent C Dodds And Tanner Linsley And Francesco Cuilla]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/www-ep248.jpg" alt="Whiskey web and whatnot episode 248" height="2000" width="2000" />
        <p><span class="Tag">Ep #248</span><br>
<strong>Live at React Miami with guests <a href="https://jason.energy/">Jason Lengstorf</a>, <a href="https://kentcdodds.com/">Kent C. Dodds</a>, <a href="https://tannerlinsley.com/about">Tanner Linsley</a> and <a href="https://francescociulla.com/">Francesco Ciulla</a></strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with <strong>4 guests in 1 episode</strong>! </p>
<p>Topics span things like Lambo&#39;s, MCP vs <a href="https://openclaw.ai/">OpenClaw</a>, agents building agents, polymorphic UI libraries, <a href="https://github.com/github/spec-kit/blob/main/spec-driven.md">SDD</a> + state machines, how <a href="https://en.wikipedia.org/wiki/Prolog">Prolog</a> is the most hated programming language, and whatnot.</p>
<p>⤷ <a href="https://whiskey.fm/dark-factories-polymorphic-ui-and-why-developers-still-matter">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=ZZvZ4rl3p_o">youtube</a> · <a href="https://open.spotify.com/episode/21GUwCvDA8zBvp1zjIMpZw">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/dark-factories-polymorphic-ui-and-why-developers/id1552776603?i=1000774155984">apple</a></p>
<p><small>Presented by <a href="https://www.gitkraken.com/lp/whiskeyfm">GitKraken</a> and <a href="https://clerk.com/">Clerk</a></small></p>
]]></description>
            <link>https://nerdy.dev/www-ep248-live-at-React-Miami-with-guests-Jason-Lengstorf-and-Kent-C-Dodds-and-Tanner-Linsley-and-Francesco-Cuilla?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/www-ep248-live-at-React-Miami-with-guests-Jason-Lengstorf-and-Kent-C-Dodds-and-Tanner-Linsley-and-Francesco-Cuilla?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[shows]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[adam@whiskey.fm]]></dc:creator>
            <pubDate>Thu, 25 Jun 2026 21:58:32 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/www-ep248.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/www-ep248.jpg"/>
        </item>
        <item>
            <title><![CDATA[WWW Ep247 Live At React Miami With Ken Wheeler]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/www-ep247.jpg" alt="Whiskey web and whatnot episode 247" height="2000" width="2000" />
        <p><span class="Tag">Ep #247</span><br>
<strong>Live at React Miami with guest <a href="https://x.com/kenwheeler">Ken Wheeler</a></strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a>, Ken and I chat about proxies, pranks, survival bags, agent swarms and Ramon the 420 IQ Gorilla.</p>
<p>⤷ <a href="https://whiskey.fm/proxies-petty-pranks-and-ramon-the-420-iq-gorilla-w-ken-wheeler">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=HLRkh-dbFAk">youtube</a> · <a href="https://open.spotify.com/episode/5iqgL3LWIlZgnBDgrmCodZ">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/proxies-petty-pranks-and-ramon-the-420-iq-gorilla-w/id1552776603?i=1000773454709">apple</a></p>
]]></description>
            <link>https://nerdy.dev/www-ep247-live-at-React-Miami-with-Ken-Wheeler?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/www-ep247-live-at-React-Miami-with-Ken-Wheeler?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[shows]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[adam@whiskey.fm]]></dc:creator>
            <pubDate>Sat, 20 Jun 2026 06:38:14 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/www-ep247.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/www-ep247.jpg"/>
        </item>
        <item>
            <title><![CDATA[Prop For That]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/prop-for-that.jpg" alt="A screenshot of the prop-for-that kitchen sink homepage hero area" height="626" width="1600" />
        <script type="module">
  import "https://cdn.jsdelivr.net/npm/baseline-status";
</script>

<p>Announcing <a href="https://prop-for-that.netlify.app/">Prop For That</a>, a JS library that backfills what CSS doesn&#39;t provide us yet (and maybe never will). </p>
<p>I&#39;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.</p>
<q class="info">

<p><a href="https://prop-for-that.netlify.app">demo</a> · <a href="https://prop-for-that.netlify.app/docsite/">docs</a> · <a href="https://www.npmjs.com/package/prop-for-that">npm</a></p>
</q>

<p><a href="https://codepen.io/argyleink/pen/XJpjNNa">Here&#39;s a basic example</a> taking the value from a range slider to draw a nice gradient that fills up the slider:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#ff1493">import</span><span style="color:inherit"> 'prop-for-that/auto'</span></span>
<span class="line"><span style="color:#868e96">// or import 'https://esm.sh/prop-for-that/auto'</span></span></code></pre>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#030507">&#x3C;</span><span style="color:#4263eb">input</span><span style="color:#ff1493"> type</span><span style="color:#030507">=</span><span style="color:#4263eb">"range"</span><span style="color:#ff1493"> data-props-for</span><span style="color:#030507">=</span><span style="color:#4263eb">"range"</span><span style="color:#ff1493"> min</span><span style="color:#030507">=</span><span style="color:#4263eb">"0"</span><span style="color:#ff1493"> max</span><span style="color:#030507">=</span><span style="color:#4263eb">"100"</span><span style="color:#ff1493"> value</span><span style="color:#030507">=</span><span style="color:#4263eb">"40"</span><span style="color:#030507"> /></span></span></code></pre>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#4263eb">input</span><span style="color:#030507">[</span><span style="color:#4263eb">type</span><span style="color:#ff1493">=</span><span style="color:#4263eb">"range"</span><span style="color:#030507">] {</span></span>
<span class="line"><span style="color:inherit">  background</span><span style="color:#ff1493">:</span><span style="color:#4263eb"> linear-gradient</span><span style="color:inherit">(</span></span>
<span class="line"><span style="color:#ff1493">    to</span><span style="color:inherit"> right </span><span style="color:#ff1493">in</span><span style="color:inherit"> oklab</span><span style="color:#be4bdb">,</span></span>
<span class="line"><span style="color:#4263eb">    var</span><span style="color:inherit">(--theme) </span><span style="color:#4263eb">calc</span><span style="color:inherit">(</span><span style="color:#4263eb">var</span><span style="color:inherit">(--live-value-pct) </span><span style="color:#ff1493">*</span><span style="color:inherit"> 100</span><span style="color:#ff1493">%</span><span style="color:inherit">)</span><span style="color:#be4bdb">,</span></span>
<span class="line"><span style="color:#4263eb">    var</span><span style="color:inherit">(--track) 0</span></span>
<span class="line"><span style="color:inherit">  )</span><span style="color:#030507">;</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>
<p><a href="https://codepen.io/argyleink/pen/XJpjNNa">codepen</a> · <a href="https://prop-for-that.netlify.app/docsite/demos/range/">docs example</a> · <a href="https://codepen.io/collection/WQEKJG">codepen collection</a></p>

        <h2>
          Why?
          <a name="why?" href="#why?">#</a>
        </h2>
       <p>It&#39;s <strong>super common</strong> to need a few lines of JS for a simple thing like:</p>
<ul>
<li>the value of the color input</li>
<li>the mouse pointer position</li>
<li>the size of the scrollbar</li>
<li>the colors present in an image or video</li>
<li>the battery level</li>
<li>an element&#39;s visibility</li>
<li>etc</li>
</ul>
<p>With <a href="https://prop-for-that.netlify.app/">Prop For That</a>, you just declaratively specify on any element the props you want, and live props show up. </p>
<p><q>There&#39;s an imperitive API too, but the data attribute path is the slickest</q></p>
<p>Everything is a plugin that loads only if you need it too, ultimately putting you right where you wanted to be: <strong>creating something sick in CSS using dynamic information</strong> without wiring up some dorky JS.</p>

        <h2>
          What kind of props?
          <a name="what-kind-of-props?" href="#what-kind-of-props?">#</a>
        </h2>
       <p>My <a href="/contextualism-talk-at-CSS-Day-2026">talk at CSS Day</a> 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&#39;t adapt without JS. </p>
<p>Here&#39;s a flat list of all the <strong>live props</strong> currently supported by the library:</p>
<ol>
<li>Pointer x/y in the window</li>
<li>Pointer x/y inside/local to an element</li>
<li>Viewport pixel height/width values</li>
<li>Visual viewport information</li>
<li>Element size information</li>
<li>Element visibility</li>
<li>Scrollbar and thin scrollbar sizes</li>
<li>Input element values </li>
<li>Input element dirty, touched, pristine, etc</li>
<li>Select element value, index, count, etc</li>
<li>Colors from an image or gradient (average, accent, light, dark, etc)</li>
<li>Colors occuring in a video</li>
<li>Video progress</li>
<li>Image loaded or broken + natural h/w</li>
<li>Clock time</li>
<li>FPS</li>
<li>Online/offline status</li>
<li>Page focused/visible</li>
<li>Scroll velocity</li>
<li>Accelerometer and device tilt/orientation</li>
<li>Geolocation</li>
<li>DPR, CPU cores, memory</li>
<li>Page navigation type (reload, back, etc)</li>
</ol>
<p>And a few Chromium only props:</p>
<ol>
<li>Network status like type, speed, save data, etc</li>
<li>Battery status</li>
<li>CPU pressure</li>
</ol>

        <h2>
          Style Queries
          <a name="style-queries" href="#style-queries">#</a>
        </h2>
       <p>Style Queries being in all major browsers marks an important milestone for CSS, and made this library much more viable. </p>
<p><baseline-status featureId="container-style-queries"></baseline-status></p>
<p>Using Prop For That with <a href="https://una.im/style-queries/">Style Queries</a> looks like this:</p>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#ff1493">import</span><span style="color:inherit"> 'https://esm.sh/prop-for-that/auto'</span></span></code></pre>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#030507">&#x3C;</span><span style="color:#4263eb">form</span><span style="color:#ff1493"> data-props-for</span><span style="color:#030507">=</span><span style="color:#4263eb">"form-state"</span><span style="color:#030507">></span></span>
<span class="line"><span style="color:#030507">  &#x3C;</span><span style="color:#4263eb">input</span><span style="color:#ff1493"> name</span><span style="color:#030507">=</span><span style="color:#4263eb">"name"</span><span style="color:#030507"> required></span></span>
<span class="line"><span style="color:#030507">  &#x3C;</span><span style="color:#4263eb">input</span><span style="color:#ff1493"> name</span><span style="color:#030507">=</span><span style="color:#4263eb">"email"</span><span style="color:#ff1493"> type</span><span style="color:#030507">=</span><span style="color:#4263eb">"email"</span><span style="color:#030507"> required></span></span>
<span class="line"><span style="color:#030507">  &#x3C;</span><span style="color:#4263eb">button</span><span style="color:#ff1493"> type</span><span style="color:#030507">=</span><span style="color:#4263eb">"submit"</span><span style="color:#030507">>Save&#x3C;/</span><span style="color:#4263eb">button</span><span style="color:#030507">></span></span>
<span class="line"><span style="color:#030507">&#x3C;/</span><span style="color:#4263eb">form</span><span style="color:#030507">></span></span></code></pre>
<pre class="shiki css-variables" style="background-color:#f8f9fa;padding:1em;border-radius:.5em;overflow:auto;color:#030507" tabindex="0"><code><span class="line"><span style="color:#ff1493">@container</span><span style="color:#030507"> style(--live-all-valid: 1) {</span></span>
<span class="line"><span style="color:#030507">  …</span></span>
<span class="line"><span style="color:#030507">}</span></span></code></pre>

        <h2>
          Bye noise
          <a name="bye-noise" href="#bye-noise">#</a>
        </h2>
       <p><strong>Import, add attribute(s), have CSS fun.</strong></p>
<p>Go make cool shit and share it with me 🤘🏻💀</p>
]]></description>
            <link>https://nerdy.dev/prop-for-that?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/prop-for-that?utm_source=rss</guid>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[oss]]></category>
            <category><![CDATA[js]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[atom@argyleink]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 22:58:10 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/prop-for-that.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/prop-for-that.jpg"/>
        </item>
        <item>
            <title><![CDATA[Contextualism Talk At CSS Day 2026]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/contextualism-at-cssday-2026.jpg" alt="Contextualism title slide from the website" height="500" width="1500" />
        <p>✅ talk &quot;Contextualism&quot; at <a href="https://cssday.nl/">CSS Day 2026</a></p>
<p><a href="https://css-day-2026.netlify.app/">Slides</a> · <a href="https://prop-for-that.netlify.app/">Prop For That</a> </p>
]]></description>
            <link>https://nerdy.dev/contextualism-talk-at-CSS-Day-2026?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/contextualism-talk-at-CSS-Day-2026?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[atom@argyleink]]></dc:creator>
            <pubDate>Fri, 12 Jun 2026 10:13:27 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/contextualism-at-cssday-2026.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/contextualism-at-cssday-2026.jpg"/>
        </item>
        <item>
            <title><![CDATA[WWW Ep246 AI Harnesses Framework Wars And Why Beards Beat Mustaches]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/www-ep246.jpg" alt="Whiskey web and whatnot episode 246" height="720" width="1280" />
        <p><span class="Tag">Ep #246</span><br>
<strong>React Miami with guest <a href="https://www.rasmic.xyz/">Michael &quot;Micky&quot; Shimeles (AKA Rasmic)</a></strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a>, Micky and I chat about AI, frameworks, and the eternal beard vs mustache debate with a hilarious and fun guest.</p>
<p>⤷ <a href="https://whiskey.fm/ai-harnesses-framework-wars-and-why-beards-beat-mustaches">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=L2zkIlhvQAU">youtube</a> · <a href="https://open.spotify.com/episode/5Jwu3ujFkjLHj0FBGBhnZo">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/ai-harnesses-framework-wars-and-why-beards-beat-mustaches/id1552776603?i=1000772170169">apple</a></p>
]]></description>
            <link>https://nerdy.dev/www-ep246-ai-harnesses-framework-wars-and-why-beards-beat-mustaches?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/www-ep246-ai-harnesses-framework-wars-and-why-beards-beat-mustaches?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[shows]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[adam@whiskey.fm]]></dc:creator>
            <pubDate>Thu, 11 Jun 2026 09:55:53 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/www-ep246.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/www-ep246.jpg"/>
        </item>
        <item>
            <title><![CDATA[CSS Day 2026]]></title>
            <description><![CDATA[
          <img style="display: none" src="https://nerdy.dev/media/cssday-2024-swag.jpg" alt="A pile of CSS Day sticker swag is on a table" height="1066" width="1600" />
        <p>🛬 Landed and stoked for <a href="https://cssday.nl/">CSS Day</a> 2026!  </p>
<p>💀 Tattoo scheduled<br>🤜🤛 Excited to see fellow CSS nerds<br>🎁 Have a special surprise at the end of my talk that I can&#39;t wait to reveal  </p>
]]></description>
            <link>https://nerdy.dev/CSS-Day-2026?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/CSS-Day-2026?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[atom@argyleink]]></dc:creator>
            <pubDate>Mon, 08 Jun 2026 15:29:06 GMT</pubDate>
            <enclosure url="https://nerdy.dev/media/cssday-2024-swag.jpg" length="0" type="image/jpeg"/>
            <media:thumbnail url="https://nerdy.dev/media/cssday-2024-swag.jpg"/>
        </item>
        <item>
            <title><![CDATA[A Standard Site]]></title>
            <description><![CDATA[<p>This blog is now a <a href="https://standard.site">standard.site</a> 🤘🏻</p>
]]></description>
            <link>https://nerdy.dev/a-standard-site?utm_source=rss</link>
            <guid isPermaLink="true">https://nerdy.dev/a-standard-site?utm_source=rss</guid>
            <category><![CDATA[note]]></category>
            <dc:creator><![CDATA[webmaster@admin]]></dc:creator>
            <pubDate>Fri, 05 Jun 2026 23:32:30 GMT</pubDate>
        </item>
    </channel>
</rss>