CSS and design systems people - BlogFlock2026-07-12T04:31:44.445ZBlogFlockMichelle Barker, Adam Argyle, Hidde de Vries, Sara Joy, Sara Soueidan, Robin Rendle, Robin Rendle, Stephanie EcklesAI and greener choices - Hidde's bloghttps://hidde.blog/ai-greener-choices/2026-06-26T00:00:00.000Z<p>The earth is heating up and AI isn't helping. It drives major increases in electricity use, water use and CO2 emissions. Yet, industry and governments alike seem keen to leverage the latest tech. Can we make greener choices?</p>
<p>Yesterday, I spoke at <a href="https://platformaioverheid.nl/event/save-the-date-congres-samen-versnellen-met-ai-de-overheid-van-morgen-begint-nu/">a conference on AI in government</a> about sustainable choices. The presentation and <a href="https://talks.hiddedevries.nl/UWcyII/groenere-keuzes-voor-je-ai-project">slides</a> were in Dutch, this post is a high level summary of what I covered.</p>
<p>As the presentation took place during a record-breaking heatwave, which meteorologists attribute to climate change, and there were some airconditioning-related issues, very little irony was lost on us.</p>
<h2>Words matter</h2>
<p>I started out talking about if AI is good or bad for sustainability and called it the wrong question. It's the wrong question, because both AI and sustainability are concepts that have many meanings.</p>
<p>AI can be understood in different ways:</p>
<ul>
<li>as a <strong>technology</strong>, there are many kinds; Microsoft alone has <a href="https://teybannerman.com/strategy/2026/03/31/how-many-microsoft-copilot-are-there.html">78 products named Copilot</a>, but also, there are many types of AI, like computer vision, natural language processing, generative AI and agentic architectures. Traditional vs generative can be a useful distinction in sustainability, because of the difference in energy impact.</li>
<li>as an <strong>economic phenomenon</strong> (<a href="https://isaiprofitable.com/">it isn't profitable yet</a>, so it may get more expensive or introduce ads, and there are lots of financial stakes that explain why it's sometimes forced on consumers)</li>
<li>as an <strong>infrastructure</strong> (behind the cloud metaphore, there are very real data centres that warrant closer inspection)</li>
</ul>
<p>Sustainability is multi-faceted too. In the <a href="https://www.w3.org/TR/web-sustainability-guidelines/">Web Sustainability Guidelines</a>, we center our definition around three pillars that ultimately need balance between them: Planet, People, and Profit:</p>
<ul>
<li><strong>Planet</strong>: its surface temperature rises due to emission of greenhouse gases that trap heat, and it has a finite amount of water of which only a small portion is suitable to drink.</li>
<li><strong>People</strong>: think of people, <a href="https://www.humanium.org/en/the-current-state-of-child-labour-in-cobalt-mines-in-the-democratic-republic-of-the-congo/">including children as young as 11 years old</a>, who are working in cobalt mines in Congo for the batteries that power our devices, or of people (and hospitals) who had no electricity during last year's Spain heatwave, while <a href="https://www.datacenterdynamics.com/en/analysis/how-did-iberian-operators-fair-in-the-great-power-cut/">data centres continued uninterruptedly</a>.</li>
<li><strong>Profit</strong>: within our capitalist system, the needs of planet and people need to be balanced with profit, in order for anyone to successfully make the case for change.</li>
</ul>
<p>So, there's some nuance about what the words mean, but despite that, it's worthwhile to try and reduce climate impact of our services. The <a href="https://vatican.va/content/leo-xiv/en/encyclicals/documents/20260515-magnifica-humanitas.html">pope said so</a>, and in government, it's an increasingly a priority (like in the UK, where the Digital Service expanded their design guidance last year with <a href="https://gov.uk/guidance/government-design-principles#minimise-environmental-impact">principle 11: Minimise environmental impact</a>) .</p>
<h2>It's ok not to use AI</h2>
<p>I shared five tips to make greener choices around AI, but couldn't help myself to add a bonus tip as tip zero: in many cases, <strong>not using AI</strong> for your project makes the most sense. Which is fine.</p>
<p>Many of us will have sat in meetings around a new idea or project, where someone put up their finger and said ”oh, maybe we can use AI for this”. The AI vendors primed us for this with <a href="https://hidde.blog/ai-hype">hype</a>.</p>
<p>Often, using AI, and especially generative AI, is like going to your local corner shop using a helicopter. What if you could solve the same problem with a couple of lines of Python, and Excel-sheet, people, or manually summarising?</p>
<p>I wanted to mention this specifically, because nobody wants to be the downer in the group and suggest not doing the thing that everyone is hyped about. But to be sustainable, we need to pick out just the cases where AI is absolutely necessary, and go without it for anything else.</p>
<h2>Five tips to make greener choices</h2>
<p>When using a specific type of AI actually solves your problem best, here's five tips to make greener choices.</p>
<h3>Smaller models</h3>
<p>When using generative AI, model size differs wildly. An example of a large model is DeepSeek v4 Pro, which has 1.6 trillion parameters (12 zeroes), while there are small models like Hugging Face's SmollLM that has 135 million parameters (6 zeroes).</p>
<p>A smaller model could save 30⨉ emissions of CO2 (and equivalent greenhouse gases), explain Luccioni, Jernite, & Strubell in their paper “<a href="https://arxiv.org/abs/2311.16863">Power Hungry Processing: Watts Driving the Cost of AI Deployment?</a>”.</p>
<h3>More specific models</h3>
<p>A lot of generative AI uses so-called general purpose models, which are systems that know pretty much everything about the world. When hiring humans, we usually list a specific area of expertise. That's partially because there are no humans that know it all (just ones that think they do).</p>
<p>We should try to do the same with language models. If we're building a system that answers questions about taxes, we don't need to tell it what the capital of France is.</p>
<p>In “<a href="https://arxiv.org/abs/2311.16863">Power Hungry Processing</a>”, Luccioni, Jernite, & Strubell explains this: “multi-purpose generative architectures are <strong>orders of magnitude more expensive</strong> than task-specific systems for a variety of tasks, even when controlling for the number of model parameters” (emphasis mine).</p>
<h3>Be smart about data centre usage</h3>
<p>In many applications of AI, the relevant software needs lots of computing: GPUs, CPUs, memory, and storage. This computing is often done in the “cloud”, or: data centres. The climate impact of data centres is widely seen as three components: <strong>electricity</strong>, <strong>CO2 emissions</strong> (and equivalent greenhouse gases), and <strong>water usage</strong>.</p>
<p>The International Energy Agency predicts the amount of data centres to <a href="https://www.iea.org/news/data-centre-electricity-use-surged-in-2025-even-with-tightening-bottlenecks-driving-a-scramble-for-solutions">double or triple over the next few years</a>. The electricity used for this will be green, partially. But it won't all be green : gas and coal will continue to be a share of what powers data centres.</p>
<p>On an operational level, we could reduce the load on data centres by reducing how many tokens we use, via smarter prompting (shorter, more specific, more explicit, less repetition through variables). The paper <a href="https://unesdoc.unesco.org/ark:/48223/pf0000394521.">Smarter, smaller, stronger</a> by Perez Ortiz and Drobnjak details tests that show reducing a response from 400 to 200 words reduced energy consumption by 54%.</p>
<p>On a policy level, one tip I learned at the <a href="https://hidde.blog/ai-sustainability-reporting/">AI reporting event I attended</a>, is to question how many 9's you really need. Data centres are convenient because they offer compute for rent and make it easy to scale. And they offer uptime, guaranteeing sometimes up to 99,99999 availability: five nines. More nines could mean less sustainability: some data centres will use diesel power or other unsustainable sources when they have a power cut. So to get to a higher uptime guarantee, they need to make such choices. What if we required less nines? What if we decided it's ok to have the AI thing not work for a couple of days a year?</p>
<h3>Recognise greenwashing</h3>
<p>Greenwashing is everywhere, and to make sustainable choices, we'll need to develop our skills to recognise it from afar. Sometimes it's easy to recognise, like an airline that said with them, you can “fly responsibly” (a Dutch court <a href="https://hidde.blog/ai-greener-choices/uitspraken.rechtspraak.nl/details?id=ECLI:NL:RBAMS:2024:1512">said this is misleading</a>). <a href="https://eur-lex.europa.eu/eli/dir/2024/825/oj/eng">EU Directive 2024/825</a> effectively forbids greenwashing, but companies still tend to do it.</p>
<p>Examples from <a href="https://beyondfossilfuels.org/wp-content/uploads/2026/02/AI-for-climate-claims-Report_FEB-2026_FINAL-2-16.pdf">The AI Climate Hoax</a> include:</p>
<ul>
<li>“bait and switch”: often “traditional” AI has a much smaller footprint than generative AI; when companies point at how clean their traditional AI is while ignoring the effect of their generative AI, this is misleading</li>
<li>use of (own) research with little evidence</li>
<li>hidden emissions through clever bookkeeping (often leaving out Scope 3 or ‘embodied’ emissions)</li>
<li>empty promises, like pointing at technologies that don't exist yet</li>
<li>downplaying via selective shopping in data or data without context</li>
<li>fatalism: “we'll reach those sustainability goals anyway, why bother trying”</li>
</ul>
<h3>Measuring matters</h3>
<p>My last tip is around data collection. It's tricky to know how much energy data centres use, not the least because Big Tech <a href="https://techpolicy.press/how-big-tech-lobbied-the-eu-to-hide-data-centers-environmental-toll">successfully lobbied the EU to treat energy usage data as company secrets</a>.</p>
<p>When you do get data, it often does not include Scope 3 emissions, which are estimated to be <a href="https://blog.se.com/datacenter/2023/07/11/demystifying-data-center-scope-3-carbon-with-our-findings/">a very large part</a> (I've seen percentages from 30 to 89%, and I am not sure what's right, other than that it is large).</p>
<p>There can also be a major difference in reporting: some companies do location-based reporting, others market-based reporting. Location-based means that you get information about how much a specific data centre is actually using, whereas with market-based, factors outside are taken into account, including certificates for carbon.</p>
<p>Location-based data is the most helpful if your team is trying to make optimisations, because it allows them to see the numbers go down (or up),where they would appear constant with market-based reports.</p>
<p>Lastly, I mentioned grid intensity: because there are many different power sources, and they deliver different amounts of energy depending on the time and location, grid intensity vary. For instance, if it's sunny and windy today at noon, the grid intensity will be low because there is lots of green energy available. At other times there's less.</p>
<p>Your application can use this difference, that constantly changes, by moving your computing to the right place at the right time. This is also called “carbon aware computing” and companies like Google <a href="https://blog.google/company-news/outreach-and-initiatives/sustainability/carbon-aware-computing-location">already do it</a>, to save emissions and costs at the same time.</p>
<h2>Summing up</h2>
<p>AI-related electricity usage, water use, and carbon emissions can be huge. That's a problem, but it's <em>also</em> an opportunity (cheesy but it's true). There is lots of low-hanging fruit that we can start addressing. As there's still so much to reduce, our efforts really can make a dent.</p>
<p>I really enjoyed giving this talk and hearing the audience comments afterwards. The main worry seems to be: how do I sell this within my organisation, and an answer emerged in the group: cost-savings and carbon-savings often go hand in hand.</p>
<hr/>
<p>Originally posted as <a href="https://hidde.blog/ai-greener-choices/">AI and greener choices</a> on <a href="https://hidde.blog">Hidde's blog</a>.</p>
<p><a href="mailto:hidde@hiddedevries.nl?subject=Reply%20to:%20AI and greener choices">Reply via email</a></p>WWW Ep248 Live At React Miami With Guests Jason Lengstorf And Kent C Dodds And Tanner Linsley And Francesco Cuilla - Adam Argylehttps://nerdy.dev/www-ep248-live-at-React-Miami-with-guests-Jason-Lengstorf-and-Kent-C-Dodds-and-Tanner-Linsley-and-Francesco-Cuilla?utm_source=rss2026-06-25T21:58:32.000Z<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'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>Several short sentences on writing - Robin Rendlehttps://robinrendle.com/notes/several-short-sentences-on-writing/2026-06-21T23:44:58.000Z<p>This is the sort of book I usually hate. By law books about writing are so desperate to explain the world to me that I struggle to keep my eyes open. I don’t have much patience when I feel someone’s talking down to me, with them having figured the universe out already. Isn’t it always more exciting when a writer is on the tip of their toes just a half step ahead of you? When you’re invited to participate rather than being yelled at?</p>
<p>Verlyn Klinkenborg’s <em>Several short sentences on writing</em> slips into that mode from time to time but has enough useful advice to recommend it. Like this first banger:</p>
<blockquote>
<p>A writer’s real work is the endless winnowing of sentences,<br />
The relentless exploration of possibilities...</p>
</blockquote>
<p>Excellent, yes! But okay — how do you do that?</p>
<blockquote>
<p>The answer is simple.<br />
Your job as a writer is making sentences.</p>
</blockquote>
<p>That’s not earth-shattering advice, but it’s helpful for me. The size of a project can be overwhelming and cutting the problem up into sentences frees me from the burden of all that future work that has to be done.</p>
<p>Or, as Verlyn puts it:</p>
<blockquote>
<p>I’m interested in the genre of the sentence,<br />
The genre that’s always overlooked.<br />
Many writers seem to believe we live in a universe of well-defined literary forms:<br />
The memoir, the profile, the feature, the first novel, the book proposal...</p>
</blockquote>
<p>I like this! It’s a good reminder to focus on each sentence microscopically, to ignore everything else beyond that. Because who knows if I’m writing a poem or a sci-fi novel when I start a project? Just take care of the sentences.</p>
<p>Perhaps the strangest thing about this book is that it isn’t just writing advice, as I kept thinking about how these suggestions can be applied to design work, too. For example: when working on a big design project I never work on the whole thing all at once. At the beginning I’ll focus on the smallest part of it: the sidebar, the navigation, a single button or action or feature. I think of these as “sentences” or what I once called <a href="https://robinrendle.com/adventures/the-smallest-possible-bit/">the smallest possible bit</a>. Each change in the design modifies all the other changes. So I’ll constantly revise my prototypes as if I’m a brutal editor, demanding revision after revision, but because I’m working on a small piece of the puzzle it’s much less intimidating. Who can make 50 versions of a sidebar? Anyone can!</p>
<p>Designers often struggle with this lack of focus on the “sentence” of interface design. But I struggle with it more whilst writing. I get overwhelmed with all the possibilities and my drafts folder is littered with dead projects because I forgot about the sentences and all I could see was the plot or the genre or anything else.</p>
<p>But how do you get good at this though? This relentless focus? Here’s what Verlyn recommends:</p>
<blockquote>
<p>The urge to write is so strong.<br />
Aspiring writers want so badly to be pouring something out of themselves.<br />
You need a place where you can practice noticing and making sentences—<br />
[...] Is it possible to practice noticing?<br />
I think so.<br />
But I also think it requires a suspension of yearning</p>
</blockquote>
<p>Sorry to interrupt you Verlyn, but !!!</p>
<p>First: I’ve felt this yearning to be a writer and a designer deeply in my bones. But I’ve avoided the writing, the sentence, the interface design, and the actual work in favor of bragging about being a writer or a designer. It’s easy to let the titles and the ego get the best of you. But the sentences are what matter most.</p>
<p>Second: this blog has always been that place for me to notice things. I write publicly because knowing that strangers will read this thing helps me winnow each sentence.</p>
<p>But when it comes to design it all needs to be locked up, private, sent into the <a href="https://dragonball.fandom.com/wiki/Hyperbolic_Time_Chamber">Hyperbolic Time Chamber</a>. The ideas are too embarrassing, too naive at the beginning. So early last year I started to keep a daily journal and began to fill it with junk: terrible, unforgivable ideas and scribbled drawings with words that make next to no sense. It’s a relief though, to have somewhere to notice things without it all being in the public record.</p>
<p>Anyway, I quite like what Verlyn has to say about cutting longer sentences into shorter ones because I’ve always struggled with the need to show off in my writing, to prove I can write a sentence that never stops. Verlyn argues this is due to fear and maybe that’s true. Perhaps I’m afraid to put a full stop somewhere because it’s hard and I’m an undisciplined writer, because I fear that folks will stop reading if each and every sentence doesn’t do a backflip-720-no-scope:</p>
<blockquote>
<p>The obsession with transition negates a basic truth about writing,<br />
A magical truth.<br />
You can get anywhere from anywhere,<br />
Always and almost instantly.</p>
</blockquote>
<p>I love this! <em>You can get anywhere from anywhere</em>. Each sentence is a portal. Each sentence has potential. This is very exciting! Who knows where the next one will lead!</p>
<p>But I also like the idea that cutting up long sentences isn’t just for the reader. A lot of Verlyn’s argument in the book is that writing isn’t solely to woo strangers. Instead, this act of revision should help us think more clearly:</p>
<blockquote>
<p>We assume that thought shapes the sentence.<br />
But thought and sentence are always a collaboration...<br />
[...] At first, what you mean to say will emerge<br />
By setting aside the things you don’t mean to say<br />
As well as trying to say the thing itself.</p>
</blockquote>
<p>And and and:</p>
<blockquote>
<p>Finding flaws is how you learn to make better sentences.<br />
[...] Some flaws do a wonderful job of hiding.</p>
</blockquote>
<p>I can’t help but connect this writing advice to software design again: bad ideas hide themselves until I make a prototype and find them. Every sentence is a prototype, too. Trying a thing, testing an idea.</p>
<p><em>Bad design does a wonderful job of hiding.</em></p>
<p>I like that for a couple of reasons. I like it because I don’t believe in the traditional design process. I think great design, like great writing, is a total shit show. There’s no stages, no linear clunk, clunk, clunk of progress. It’s all terrible until suddenly it isn’t because you’ve revised it ten thousand times.</p>
<p>Or:</p>
<blockquote>
<p>You have no idea what you’re going to say<br />
Until you discover what you want to say<br />
As you make the sentences that say it.</p>
<p>Every sentence is optional until it proves otherwise.<br />
Writing is the work of discovery.</p>
</blockquote>WWW Ep247 Live At React Miami With Ken Wheeler - Adam Argylehttps://nerdy.dev/www-ep247-live-at-React-Miami-with-Ken-Wheeler?utm_source=rss2026-06-20T06:38:14.000Z<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>Prop For That - Adam Argylehttps://nerdy.dev/prop-for-that?utm_source=rss2026-06-13T22:58:10.000Z<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't provide us yet (and maybe never will). </p>
<p>I'm done waiting for CSS to catch up to all the valuable information JS knows and done watching folks write the same little JS to just write a custom property to a component.</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's a basic example</a> taking the value from a range slider to draw a nice gradient that fills up the slider:</p>
<pre><code class="language-js"><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)">import</span><span style="color:var(--shiki-token-string-expression)"> 'prop-for-that/auto'</span></span>
<span class="line"><span style="color:var(--shiki-token-comment)">// or import 'https://esm.sh/prop-for-that/auto'</span></span></code></pre>
</code></pre>
<pre><code class="language-html"><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-foreground)"><</span><span style="color:var(--shiki-token-string-expression)">input</span><span style="color:var(--shiki-token-function)"> type</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"range"</span><span style="color:var(--shiki-token-function)"> data-props-for</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"range"</span><span style="color:var(--shiki-token-function)"> min</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"0"</span><span style="color:var(--shiki-token-function)"> max</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"100"</span><span style="color:var(--shiki-token-function)"> value</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"40"</span><span style="color:var(--shiki-foreground)"> /></span></span></code></pre>
</code></pre>
<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)">input</span><span style="color:var(--shiki-foreground)">[</span><span style="color:var(--shiki-token-function)">type</span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-token-string-expression)">"range"</span><span style="color:var(--shiki-foreground)">] {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)"> background</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-function)"> linear-gradient</span><span style="color:var(--shiki-token-constant)">(</span></span>
<span class="line"><span style="color:var(--shiki-token-keyword)"> to</span><span style="color:var(--shiki-token-constant)"> right </span><span style="color:var(--shiki-token-keyword)">in</span><span style="color:var(--shiki-token-constant)"> oklab</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-function)"> var</span><span style="color:var(--shiki-token-constant)">(--theme) </span><span style="color:var(--shiki-token-function)">calc</span><span style="color:var(--shiki-token-constant)">(</span><span style="color:var(--shiki-token-function)">var</span><span style="color:var(--shiki-token-constant)">(--live-value-pct) </span><span style="color:var(--shiki-token-keyword)">*</span><span style="color:var(--shiki-token-constant)"> 100</span><span style="color:var(--shiki-token-keyword)">%</span><span style="color:var(--shiki-token-constant)">)</span><span style="color:var(--shiki-token-punctuation)">,</span></span>
<span class="line"><span style="color:var(--shiki-token-function)"> var</span><span style="color:var(--shiki-token-constant)">(--track) 0</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)"> )</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><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'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'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'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't adapt without JS. </p>
<p>Here'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><code class="language-js"><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)">import</span><span style="color:var(--shiki-token-string-expression)"> 'https://esm.sh/prop-for-that/auto'</span></span></code></pre>
</code></pre>
<pre><code class="language-html"><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-foreground)"><</span><span style="color:var(--shiki-token-string-expression)">form</span><span style="color:var(--shiki-token-function)"> data-props-for</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"form-state"</span><span style="color:var(--shiki-foreground)">></span></span>
<span class="line"><span style="color:var(--shiki-foreground)"> <</span><span style="color:var(--shiki-token-string-expression)">input</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"name"</span><span style="color:var(--shiki-foreground)"> required></span></span>
<span class="line"><span style="color:var(--shiki-foreground)"> <</span><span style="color:var(--shiki-token-string-expression)">input</span><span style="color:var(--shiki-token-function)"> name</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"email"</span><span style="color:var(--shiki-token-function)"> type</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"email"</span><span style="color:var(--shiki-foreground)"> required></span></span>
<span class="line"><span style="color:var(--shiki-foreground)"> <</span><span style="color:var(--shiki-token-string-expression)">button</span><span style="color:var(--shiki-token-function)"> type</span><span style="color:var(--shiki-foreground)">=</span><span style="color:var(--shiki-token-string-expression)">"submit"</span><span style="color:var(--shiki-foreground)">>Save</</span><span style="color:var(--shiki-token-string-expression)">button</span><span style="color:var(--shiki-foreground)">></span></span>
<span class="line"><span style="color:var(--shiki-foreground)"></</span><span style="color:var(--shiki-token-string-expression)">form</span><span style="color:var(--shiki-foreground)">></span></span></code></pre>
</code></pre>
<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)"> style(--live-all-valid: 1) {</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>
<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>Make Believe - Robin Rendlehttps://robinrendle.com/notes/make-believe/2026-06-13T16:14:41.000Z<p>This morning was a total stinker. I woke up with a dull headache, teeth grinding, fists clenched. Sometimes my body becomes haunted, a vessel for <em>a thing</em>; total and all consuming. It could be a conversation the day before or a problem I’m trying to solve, it doesn’t really matter what that the thing is. These moments suck because it feels like I’m trapped inside my body with no way out but it’s extra annoying because the remedy is always so predictable and boring: stop work, find the nearest ocean, push my limp body up that hill, return to literature and books, books, books.</p>
<p>But when I woke up this morning I didn’t know that <em>Make Believe: On Telling Stories to Children</em> by Mac Barnett was the antidote. Because, dear reader, let me tell you: this book is only-the-finest-punk-rock-remedy for my bad brain goo.</p>
<p>Mac’s a children’s writer and in <em>Make Believe</em> he argues that these books aren’t a silly genre, they’re a form we should treat seriously and respect. Meaning, books for children aren’t a lesser kind of literature simply because they’re for children. In fact, Mac argues, there’s an awful lot we can learn about the world from children, too:</p>
<blockquote>
<p>...what are “childish enthusiasms” but the ability to see the world with the freshness and wonder that literature requires? The child who stares and marvels at the workings of a garbage truck sees the garbage truck better than adults do. The kid who breathlessly recounts horse facts, who finds it overwhelming that such an amazing creature actually exists, is correct.</p>
</blockquote>
<p>Mac continues:</p>
<blockquote>
<p>Since the invention of the printing press, children’s books have been a battleground between those who want to tell kids what to do and those who want to tell them stories. [...] adults often expect children’s books to reinforce the prerogative of parents or priests or school principals. Most often, we confuse writers with teachers.</p>
</blockquote>
<p>I hate it when stories have treacly moral lessons as an adult, too. I like the complexity! The unknown bits of a story, the blurry edges that are impossible to put into words. So why should kids literature be any different?</p>
<blockquote>
<p>Rather than pushing a moral, good fiction invites the reader to make meaning. A moral is an immutable lesson, intentionally encoded into a story by the author, meant to be inscribed on the child’s brain. Meaning, though, is created collaboratively...</p>
</blockquote>
<p>I could do this all day, quoting big chunks and spoiling every page of Mac’s very charming, very funny little book. Thankfully, Mac has a newsletter too that I’m now utterly obsessed by. Take this fantastic piece about <a href="https://lookingatpicturebooks.com/p/where-the-wild-things-are"><em>Where the Wild Things Are</em></a> for example:</p>
<blockquote>
<p>MAC: As Max is crowned “king of all wild things” the pictures get even bigger, and that white bar shrinks, until we come to maybe the most famous sentence in any picture book: “‘And now,’ cried Max, ‘let the wild rumpus start.’” The rumpus is three glorious full-bleed, two-page illustrations. The white space is gone. There are no words.</p>
<p>(These are called “wordless spreads.”)</p>
<p>JON: After all, what would you write? A bunch of sounds? It’s so much louder this way.</p>
</blockquote>Contextualism Talk At CSS Day 2026 - Adam Argylehttps://nerdy.dev/contextualism-talk-at-CSS-Day-2026?utm_source=rss2026-06-12T10:13:27.000Z<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 "Contextualism" 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>WWW Ep246 AI Harnesses Framework Wars And Why Beards Beat Mustaches - Adam Argylehttps://nerdy.dev/www-ep246-ai-harnesses-framework-wars-and-why-beards-beat-mustaches?utm_source=rss2026-06-11T09:55:53.000Z<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 "Micky" 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>CSS Day 2026 - Adam Argylehttps://nerdy.dev/CSS-Day-2026?utm_source=rss2026-06-08T15:29:06.000Z<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't wait to reveal </p>A Standard Site - Adam Argylehttps://nerdy.dev/a-standard-site?utm_source=rss2026-06-05T23:32:30.000Z<p>This blog is now a <a href="https://standard.site">standard.site</a> 🤘🏻</p>WWW Ep245 The Death Of Typing With Typecraft At React Miami - Adam Argylehttps://nerdy.dev/www-ep245-the-death-of-typing-with-typecraft-at-react-miami?utm_source=rss2026-06-05T20:05:39.000Z<img style="display: none" src="https://nerdy.dev/media/www-ep245.jpg" alt="Whiskey web and whatnot episode 245" height="720" width="1280" />
<p><span class="Tag">Ep #245</span><br>
<strong>Live at React Miami with <a href="https://typecraft.dev">Typecraft</a> (Chris)</strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with <a href="https://x.com/typecraft_dev">Typecraft</a>, chat tech and extract some 🔥 hot takes.</p>
<p>⤷ <a href="https://whiskey.fm/from-cobol-to-claude-live-coding-ai-agents-and-the-death-of-typing-w-typecraft">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=OVAYfEWB6D4">youtube</a> · <a href="https://open.spotify.com/episode/00CqYGI7Faa89rXcZz9qNb">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/from-cobol-to-claude-live-coding-ai-agents-and-the/id1552776603?i=1000770433783">apple</a></p>Time To MC Cascadia JS - Adam Argylehttps://nerdy.dev/time-to-MC-Cascadia-JS?utm_source=rss2026-06-01T15:29:19.000Z<img style="display: none" src="https://nerdy.dev/media/cascadiajs-mcs.jpg" alt="Adam and Robbie from the CascadiaJS website" height="676" width="1034" />
<p><a href="https://robbiethewagner.dev/">Robbie</a> and I MC 🎤 <a href="https://cascadiajs.com/2026">Cascadia JS</a> for the next 2 days </p>
<p>See ya there 🤘🏻</p>Indian Street Lettering - Robin Rendlehttps://robinrendle.com/notes/indian-street-lettering/2026-05-31T16:25:47.000Z<p>I have a terrible admission to make and you may never forgive me. It’s taken far too long, so please don’t be mean about this. Look, I’m already on my knees apologizing and you don’t have to make this weird, okay? But this weekend I finally got my copy of <a href="https://indiastreetlettering.com/india-street-lettering-a-journey-through-typographic-craft-culture"><em>Indian Street Lettering</em></a> by Pooja Saxena. I know! I’m sorry! I should have known sooner! I apologized already! Jeez!</p>
<p>Pooja’s fantastic <a href="https://indiastreetlettering.com/india-street-lettering-a-journey-through-typographic-craft-culture/">book</a> and equally fantastic <a href="https://indiastreetlettering.com/">website</a> are fancy typographic objects, sure, but they most certainly won’t sit quietly unread on your coffee table or in your browser tabs collecting dust. Instead, <em>Indian Street Lettering</em> demands as much attention as Pooja has lovingly poured into this project:</p>
<blockquote>
<p>Take a short walk in any Indian neighbourhood and you’ll find signboards in a profusion of languages, styles, materials, and colours. So far, this living typographic archive has existed on the fringes of mainstream design discourse. India Street Lettering brings it to the fore, celebrating the artistic expression, linguistic diversity, and historical intrigue found in the vibrant letterforms around the country.</p>
</blockquote>
<p>In her talk about the project called <a href="https://www.youtube.com/watch?v=txs6vP2roYM">A Typographic Archive in the Making</a>, Pooja describes how much she loves making playlists of photographs depending on the region, language, and style of lettering that she finds out in the wild. But she also talks about how temporary these signs are and how recording them is important because the visual identity of a place is always churning in a big, temporary soup. It’s all just great stuff.</p>
<p>Oh and I’d highly recommend subscribing to <a href="https://indiastreetlettering.com/feed">the feed</a>, too. It’s a fount of interesting and unfamiliar typographic styles, like Pooja’s latest post all about <a href="https://indiastreetlettering.com/blog/sun-signs-moon-signs-street-signs/">astrology related signs</a>.</p>Flex Wrap Balance - Adam Argylehttps://nerdy.dev/flex-wrap-balance?utm_source=rss2026-05-30T06:56:54.000Z<p><a href="/css-wishlist-2025#flex-wrap-balance">I wished for this last year</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-function)">.flex-container</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)"> display</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> flex</span><span style="color:var(--shiki-foreground)">;</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)"> flex-wrap</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> balance</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>now it's <a href="https://groups.google.com/a/chromium.org/g/blink-dev/c/Z8Rb8Q4W2jM/m/1swkEDvLBgAJ">headed to Chrome</a> 🤘🏻</p>Just Submitted My State Of CSS 2026 Survey - Adam Argylehttps://nerdy.dev/just-submitted-my-State-of-CSS-2026-survey?utm_source=rss2026-05-28T05:12:20.000Z<p>Just submitted my <a href="https://survey.devographics.com/survey/state-of-css/2026">State of CSS <u>2026</u></a> Survey.</p>Relative Alpha - Adam Argylehttps://nerdy.dev/relative-alpha?utm_source=rss2026-05-27T05:12:50.000Z<p>Would use:<br>
CSS <a href="https://drafts.csswg.org/css-color-5/#relative-alpha">relative alpha</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-string-expression)">button</span><span style="color:var(--shiki-foreground)"> {</span></span>
<span class="line"><span style="color:var(--shiki-token-constant)"> border-color</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-token-constant)"> alpha(from hotpink / </span><span style="color:var(--shiki-token-function)">calc</span><span style="color:var(--shiki-token-constant)">(alpha </span><span style="color:var(--shiki-token-keyword)">*</span><span style="color:var(--shiki-token-constant)"> .25)</span><span style="color:var(--shiki-foreground)">);</span></span>
<span class="line"><span style="color:var(--shiki-foreground)">}</span></span></code></pre>
</code></pre>WWW Ep244 Live At React Miami With Seth Webster - Adam Argylehttps://nerdy.dev/www-ep244-live-at-React-Miami-with-Seth-Webster?utm_source=rss2026-05-27T05:03:41.000Z<img style="display: none" src="https://nerdy.dev/media/www-ep244.jpg" alt="Whiskey web and whatnot episode 244" height="1254" width="1254" />
<p><span class="Tag">Ep #244</span><br>
<strong>Live at React Miami with <a href="https://www.linkedin.com/in/swebster/">Seth Webster</a></strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with Seth Webster (executive director of the <a href="https://www.linkedin.com/in/swebster/">React Foundation</a>, former React lead at Meta, and chief developer evangelist at <a href="https://expo.dev/">Expo</a>) to talk the past, present, and future of <a href="https://react.dev/">React</a> and some 🔥 hot takes.</p>
<p>⤷ <a href="https://whiskey.fm/react-foundation-ai-agents-and-the-future-of-frameworks-w-seth-webster">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=LZa3GIpX4l4">youtube</a> · <a href="https://open.spotify.com/episode/5WXHOfBi3ZfGG0iwlMxAEh">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/react-foundation-ai-agents-and-the-future-of/id1552776603?i=1000769655272">apple</a></p>fragcoord.xyz - Robin Rendlehttps://robinrendle.com/notes/fragcoord.xyz/2026-05-25T17:53:39.000Z<p><a href="https://fragcoord.xyz/explore">Huh</a>:</p>
<blockquote>
<p>FragCoord is a real-time GLSL fragment shader editor. Write shader code on the left, see the result rendered instantly on the right. No setup required — just start typing.</p>
</blockquote>
<p>That’s from <a href="https://fragcoord.xyz/docs">the docs</a> that explains how this website is <a href="https://codepen.io/">Codepen</a> but for shaders. Each example is hypnotic and fun but from a totally different universe where math and art were always the same class in high school.</p>
<p>There’s a lot of interesting interface ideas going on here, too. Being able to select, inspect, and tweak variables, etc. It’s all slick and neat and weird.</p>The Wave - Robin Rendlehttps://robinrendle.com/notes/the-wave/2026-05-25T17:38:42.000Z<p><a href="https://www.wired.com/story/meet-the-sad-wives-of-ai/">Alessandra Ram</a>:</p>
<blockquote>
<p>Every major technological boom has produced the same figure, the person who gives everything to the wave...</p>
</blockquote>WWW Ep243 Keyframes Cash And Codepens With Stephen Shaw - Adam Argylehttps://nerdy.dev/www-ep243-keyframes-cash-and-codepens-with-stephen-shaw?utm_source=rss2026-05-22T05:16:23.000Z<img style="display: none" src="https://nerdy.dev/media/www-ep243.jpg" alt="Whiskey web and whatnot episode 234" height="600" width="600" />
<p><span class="Tag">Ep #243</span><br>
<strong>Keyframes, Cash and <a href="http://codepen.io/">Codepens</a> with <a href="https://codepen.io/shshaw/">Stephen Shaw</a></strong></p>
<p><a href="https://robbiethewagner.dev">Robbie</a> and I chat with Stephen about CSS animations, web components, SSR nightmares, and why building things by hand still matters in the age of AI slop.</p>
<p>⤷ <a href="https://whiskey.fm/keyframes-cash-and-codepen-w-shaw">whiskey.fm</a> · <a href="https://www.youtube.com/watch?v=5aonoWgK7kQ">youtube</a> · <a href="https://open.spotify.com/episode/0KFRnQ6FxS35jUatXGQBmh">spotify</a> · <a href="https://podcasts.apple.com/us/podcast/keyframes-cash-and-codepen-w-shaw/id1552776603?i=1000768788649">apple</a></p>