Archive: April, 2025

63

sparkline
                    5th                     10th                     15th                     20th                     25th                     30th
12am
4am  
8am                        
12pm                        
4pm                    
8pm            

Wednesday, April 30th, 2025

Codewashing

I have little understanding for people using large language models to generate slop; words and images that nobody asked for.

I have more understanding for people using large language models to generate code. Code isn’t the thing in the same way that words or images are; code is the thing that gets you to the thing.

And if a large language model hallucinates some code, you’ll find out soon enough:

With code you get a powerful form of fact checking for free. Run the code, see if it works.

But I want to push back on one justification I see repeatedly about using large language models to write code. Here’s Craig:

There are many moral and ethical issues with using LLMs, but building software feels like one of the few truly ethically “clean”(er) uses (trained on open source code, etc.)

That’s not how this works. Yes, the large language models are trained on lots of code (most of it open source), but they’re not only trained on that. That’s on top of everything else; all the stolen books, all the unpaid creative work of others.

Even Robin Sloan, who first says:

I think the case of code is especially clear, and, for me, basically settled.

…goes on to acknowledge:

But, again, it’s important to say: the code only works because of Everything. Take that data away, train a model using GitHub alone, and you’ll get a far less useful tool.

When large language models are trained on domain-specific data, it’s always in addition to the mahoosive amount of content they’ve already stolen. It’s that mohoosive amount of content—not the domain-specific data—that enables them to parse your instructions.

(Note that I’m being very delibarate in saying “parse”, not “understand.” Though make no mistake, I’m astonished at how good these tools are at parsing instructions. I say that as someone who tried to write natural language parsers for text-only adventure games back in the 1980s.)

So, sure, go ahead and use large language models to write code. But don’t fool yourself into thinking that it’s somehow ethical.

What I said here applies to code too:

If you’re going to use generative tools powered by large language models, don’t pretend you don’t know how your sausage is made.

An Entirely Other Day: The Triumph of Triumphalism

Scratch the skin of wild-eyed AI proponents, and a thick syrup oozes out, made up of the blendered remains of Roko’s Basilisk, barely sublimated Christian end-times thinking, and the mis-remembered plot of that one cool science-fiction story they read when they were twelve. This is the basis for the new order, just like the blockchain was a couple of years ago, and a dead-eyed, low-poly, pantsless rendering of Mark Zuckerberg was a couple of years before that.

“You’re going to be left behind” is only the latest version of “Have fun staying poor.” It’s got every ounce of the smug self-satisfaction that it shouldn’t need if the inevitability it promises were actually inevitable.

“AI-first” is the new Return To Office - Anil Dash

AI is really good for helping you if you’re bad at something, or at least below average. But it’s probably not the right tool if you’re great at something. So why would these CEOs be saying, almost all using the exact same phrasing, that everyone at their companies should be using these tools? Do the think their employees are all bad at their jobs?

Pluralistic: The enshittification of tech jobs (27 Apr 2025) – Pluralistic: Daily links from Cory Doctorow

The point of AI isn’t to make workers more productive, it’s to make them weaker when they bargain with their bosses.

A copy of the document that put the World Wide Web into the public domain, being held by me at CERN while Robert Calliau talks in the background.

Happy anniversary to “the patent that never was”:

https://cds.cern.ch/record/1164399/

Thanks, CERN!

Tuesday, April 29th, 2025

Bias in Design Systems - bencallahan.com

Thoughtful analysis from Ben (as always).

What we talk about when we talk about AI — Careful Industries

Technically, AI is a field of computer science that uses advanced methods of computing.

Socially, AI is a set of extractive tools used to concentrate power and wealth.

UX London flash sale

In exactly six weeks time, UX London is happening!

I am ridiculously excited about this year’s line-up—I can’t wait to see the talks and get hands-on in the workshops.

If you haven’t yet got your ticket, now is the time. There’s a flash sale this week: use the discount code FLASH20 to get a whopping 20% of any ticket. Do it before the end of Friday!

Whether you’re coming for all three days or choosing one focused day, you’re in for a treat.

  • Day one on Tuesday, 10 June is discovery day.
  • Day two on Wednesday, 11 June is design day.
  • Day three on Thursday, 12 June is deliver day.

Head on over to the website to get all the details and then get your discounted ticket.

See you there!

Monday, April 28th, 2025

A man playing tin whistle and a woman playing fiddle at a pub table with a pint of Guinness on it.

Monday session

A sunlit bowl of thin pasta with fresh tomato and basil in a white bowl outdoors. A fluffly tabby cat lounges drowsily on the deck by the wall near some plants catching the sun's rays.

Dining al fresco (with Coco the cat for company).

Sunday, April 27th, 2025

Foreword to Web Accessibility Cookbook by Manuel Matuzovic

The foreword to the O’Reilly book on creating inclusive experiences.

Polishing your typography with line height units | WebKit

I should be using the lh and rlh units more enough—they’re supported across the board!

Saturday, April 26th, 2025

The Hidden Cost of AI Coding – Terrible Software

Feels like an emerging trend:

Instead of that deep immersion where I’d craft each function, I’m now more like a curator? I describe what I want, evaluate what the AI gives me, tweak the prompts, and iterate. It’s efficient, yes. Revolutionary, even. But something essential feels missing — that state of flow where time vanishes and you’re completely absorbed in creation. If this becomes the dominant workflow across teams, do we risk an industry full of highly productive yet strangely detached developers?

Friday, April 25th, 2025

Looking over numerous shoulders to a three-piece band on stage.

Enjoyed the album launch gig by Patients tonight!

https://patientstheband.bandcamp.com/album/post-high-lows-2

Reading Salt Slow by Julia Armfield.

Buy this book

Thursday, April 24th, 2025

A man playing guitar accompanying a man playing flute in a pub while others look on intently.

Thursday session

Wednesday, April 23rd, 2025

But what if I really want a faster horse? | exotext

Overall, consistency, user control, and actual UX innovation are in decline. Everything is converging on TikTok—which is basically TV with infinite channels. You don’t control anything except the channel switch. It’s like Carcinisation, a form of convergent evolution where unrelated crustaceans all evolve into something vaguely crab-shaped.

Tuesday, April 22nd, 2025

A Web Component UI library for people who love HTML | Go Make Things

I’m obviously biased, but I like the sound of what Chris is doing to create a library of HTML web components.

So much slopaganda on LinkedIn.

Sunday, April 20th, 2025

P&B: Jeremy Keith – Manu

In which I answer questions about blogging.

I’ve put a copy of this on my own site too.

People and Blogs: Jeremy Keith

An interview about my blog, originally published on the website People and Blogs in April 2025.

Saturday, April 19th, 2025

A can of beer with sci-fi artwork on a label that reads Gravity Well Brewing Co. X Adrian Tchaikovsky: Shroud Hazy Pale Ale.

Marvel: Avengers Endgame is the most ambitious crossover event in history.

Adrian Tchaikovsky: Hold my beer. Literally.

Friday, April 18th, 2025

Reading Bloodchild And Other Stories by Octavia Butler.

Buy this book
A brown pottery cup with a green liquid on a table in front of a shelf with a turntable and records.

Matcha latte in a Jazz Kissa.

Petition · Defend the Internet Archive - United States · Change.org

Signed!

We, the undersigned, call on the record labels and members of the Recording Industry Association of America (RIAA)—including UMG, Capitol Records, Concord Bicycle Assets, CMGI Recorded Music Assets, Sony Music Entertainment, and Arista Music—to drop your lawsuit against the Internet Archive.

Thursday, April 17th, 2025

A man playing tin whistle and a man playing fiddle on either side of the corner of a pub table.

Thursday session

Beach daydreams, lost at sea (Interconnected)

Matt’s beach thoughts are like a satisfying susurrus in my RSS reader.

I Hate Wasting Time on Identifying AI Slop • Buttondown

It’s an annoying cognitive task: detecting weird photo artifacts, bizarre movement in videos, impossible animals and body horror, and reading through reams of anodyne text to determine if the person who prompted the synthetic media machine cared enough to dedicate time and energy to the task of communicating to their audience.

I hate that this is the bleak future which venture capitalists and AI boosters have gleefully laid out for us, that they consider this to be a “democratizing” technology in any real sense of the word. Far from strengthening democracy, these are technologies more apt at propping up scam capitalism and multi-level marketing schemes. I would like my time and mental space back.

Hiding elements that require JavaScript without JavaScript :: dade

This is clever: putting CSS inside a noscript element to hide anything that requires JavaScript.

Wednesday, April 16th, 2025

A close up of a mandolin in the foreground in front of a woman playing fiddle and a man playing accordion.

Wednesday session

OKLCH()

I was at the State Of The Browser event recently, which was great as always.

Manu gave a great talk about colour in CSS. A lot of it focused on OKLCH. I was already convinced of the benefits of this colour space after seeing a terrific talk by Anton Lovchikov a while back.

After Manu’s talk, someone mentioned that even though OKLCH is well supported in browsers now, it’s a shame that it isn’t (yet) in design tools like Figma. So designers are still handing over mock-ups with hex values.

I get the frustration, but in my experience it’s not that big a deal in practice. Here’s why: oklch() isn’t just a way of defining colours with lightness, chroma, and hue in CSS. It’s also a function. You can use the magical from keyword in this function to convert hex colours to l, c, and h:

--page-colour: oklch(from #49498D l c h);

So even if you’re being handed hex colour values, you can still use OKLCH in your CSS. Once you’re doing that, you can use all of the good stuff that comes with having those three values separated out—something that was theoretically possible with hsl, but problematic in practice.

Let’s say you want to encode something into your CSS like this: “if the user has specified that they prefer higher contrast, the background colour should be four times darker.”

@media (prefers-contrast: more) {
  --page-colour: oklch(from #49498D calc(l / 4) c h);
}

It’s really handy that you can use calc() within oklch()—functions within functions. And I haven’t even touched on the color-mix() function.

Hmmm …y’know, this is starting to sound an awful lot like functional programming:

Functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values.

Trans women are women.

Tuesday, April 15th, 2025

An Ars Technica history of the Internet, part 1 - Ars Technica

Here’s a fun account of the early days of the ARPANET.

Why do AI company logos look like buttholes?

You won’t be able to unsee this. It’s like the FedEx logo …if the arrow was an anus.

  1. Circular shape (often with a gradient)
  2. Central opening or focal point
  3. Radiating elements from the center
  4. Soft, organic curves

Sound familiar? It should, because it’s also an apt description of… well, you know.

Monday, April 14th, 2025

A man playing accordion alongside two women playing fiddles at pub tables pushed together.

Monday session

Cascading Layouts | OddBird

A workshop on resilient CSS layouts

Oh, hell yes!

Do not hesitate—sign yourself up to this series of three online workshops by Miriam. This is the quickest to level up your working knowledge of the most powerful parts of CSS.

By the end of this you’re going to feel like Neo in that bit of The Matrix when he says “I know kung-fu!” …except kung-fu isn’t very useful for building resilient and maintainable websites, whereas modern CSS absolutely is.

Vision for W3C

We believe the World Wide Web should be inclusive and respectful of all participants: a Web that supports facts over falsehoods, people over profits, humanity over hate.

Sunday, April 13th, 2025

Paying it forward

For the past couple of years, myself and Jessica have been going to the Belfast Tradfest in the Summer. It’s an excellent event with great workshops, sessions, and concerts. And it helps that Belfast is such a lovely city to spend a week in.

What struck me the first time we were participating in workshops there was the great mix of age ranges. It always warms my heart to see young people getting really into the music.

Then I found out about their bursary sponsorship scheme:

For many young musicians, financial barriers stand in the way of this invaluable experience. Your support can make a real difference by sponsoring a bursary that covers the cost of tuition for a deserving student.

Last year, I decided to forego one month’s worth of donations to The Session—the contributions that help cover the costs of hosting, newsletters, geocoding, and so on. Instead the money went towards bursary sponsorships for Belfast Tradfest.

It was a great success that managed to cover places for quite a few young musicians.

So we’re doing it again.

Normally, I wouldn’t mention the ins-and-outs of TheSession.org over here on adactio.com but I thought you might like to partake in this year’s fund drive:

For the month of April 2025, any donations made to The Session will go towards bursary sponsorships for young musicians to attend workshops at this year’s Belfast Trad Fest:

thesession.org/donate

Maybe you’ve liked something I’ve written here. Maybe you enjoyed Resilient Web Design, the free book I published online. You can also read HTML5 For Web Designers and Going Offline for free now too.

I’ve never asked for any recompense for my online ramblings, but if you’ve ever wanted to drop me some money to thank me for something I’ve put out there, now’s your chance.

Any contribution you make will go towards fostering the next generation of traditional Irish musicians, something that’s very dear to my heart.

Saturday, April 12th, 2025

Myself and Jessica dressed in black with our instruments in our backs taking a selfie in a bus shelter.

Rock’n’roll bus stop

Better typography with text-wrap pretty | WebKit

Everything you ever wanted to know about text-wrap: pretty in CSS.

Friday, April 11th, 2025

Reading A Psalm For The Wild-Built by Becky Chambers.

Buy this book
A poster in the window of Union Music Store in Lewes advertising liza lo and Salter Cane playing on Saturday, April 12th at 1pm.

Soon…

Thursday, April 10th, 2025

Two women playing fiddle side by side at a pub table covered in pint glasses.

Thursday session

Salter Cane unplugged in Lewes

This Saturday, April 12th, is Record Store Day. To mark the occasion, Salter Cane will be playing a stripped-down set at Union Music Store in Lewes. That’s the place that Jamie used to run, so it has a special place in our hearts.

Liza Lo will be playing at midday.

Salter Cane are on at 1pm.

If you’re in the neighbourbood, please swing by! We’re really looking forward to playing a mix of some old songs and some brand new songs from our brand new album.

Tuesday, April 8th, 2025

A man playing flute and a man playing fiddle at a round pub table by the window.

Tuesday session

‘An Overwhelmingly Negative And Demoralizing Force’: What It’s Like Working For A Company That’s Forcing AI On Its Developers - Aftermath

Grim reading from the games industry, especially if you work at Shopify where the CEbrO has just mandated that you have to use this shite.

Oh man, this tune by Adrian is so good!

https://www.youtube.com/watch?v=EsJihAhX5P4

Senseless Swing - Adrian Holovaty

Monday, April 7th, 2025

Happy 25th anniversy to A Dao Of Web Design by John Allsopp:

https://alistapart.com/article/dao/

Still relevant after all these years!

A path winding between trees on gentle mounds of green grass under a clear blue sky. A line of trees in the distance with rolling hills behind them under a clear blue sky.

Went for a stroll around The Shire this afternoon.

Ah, Shopify! Where would Breitbart be without you?

Now the CEO of Shopify demands that every developer there uses “AI” to enable swastika merchants to make even more moolah.

(Hi to my “friends” who work there!)

Denial

The Wikimedia Foundation, stewards of the finest projects on the web, have written about the hammering their servers are taking from the scraping bots that feed large language models.

Our infrastructure is built to sustain sudden traffic spikes from humans during high-interest events, but the amount of traffic generated by scraper bots is unprecedented and presents growing risks and costs.

Drew DeVault puts it more bluntly, saying Please stop externalizing your costs directly into my face:

Over the past few months, instead of working on our priorities at SourceHut, I have spent anywhere from 20-100% of my time in any given week mitigating hyper-aggressive LLM crawlers at scale.

And no, a robots.txt file doesn’t help.

If you think these crawlers respect robots.txt then you are several assumptions of good faith removed from reality. These bots crawl everything they can find, robots.txt be damned.

Free and open source projects are particularly vulnerable. FOSS infrastructure is under attack by AI companies:

LLM scrapers are taking down FOSS projects’ infrastructure, and it’s getting worse.

You try to do the right thing by making knowledge and tools freely available. This is how you get repaid. AI bots are destroying Open Access:

There’s a war going on on the Internet. AI companies with billions to burn are hard at work destroying the websites of libraries, archives, non-profit organizations, and scholarly publishers, anyone who is working to make quality information universally available on the internet.

My own experience with The Session bears this out.

Ars Technica has a piece on this: Open source devs say AI crawlers dominate traffic, forcing blocks on entire countries .

So does MIT Technology Review: AI crawler wars threaten to make the web more closed for everyone.

When we talk about the unfair practices and harm done by training large language models, we usually talk about it in the past tense: how they were trained on other people’s creative work without permission. But this is an ongoing problem that’s just getting worse.

The worst of the internet is continuously attacking the best of the internet. This is a distributed denial of service attack on the good parts of the World Wide Web.

If you’re using the products powered by these attacks, you’re part of the problem. Don’t pretend it’s cute to ask ChatGPT for something. Don’t pretend it’s somehow being technologically open-minded to continuously search for nails to hit with the latest “AI” hammers.

If you’re going to use generative tools powered by large language models, don’t pretend you don’t know how your sausage is made.

I’m sitting comfortably in my chair at home while my brother is running a 300 mile race through Arizona.

https://trackleaders.com/monster25i.php?name=Eoin_Keith

A pragmatic browser support strategy | Go Make Things

  1. Basic functionality should work on any device that can access the web.
  2. Extras and flourishes are treated as progressive enhancements for modern devices.
  3. The UI can look different and even clunky on older devices and browsers, as long as it doesn’t break rule #1.

Snook Dreams of the Web - Snook.ca

If we were to follow Jiro’s and his apprentices’ journeys and imagine web development the same way then would we ask of our junior developers to spend the first year of their career only on HTML. No CSS. No JavaScript. No frameworks. Only HTML. Only once HTML has been mastered do we move onto CSS. And only once that has been mastered do we move onto JavaScript.

AI ambivalence | Read the Tea Leaves

Here’s the main problem I’ve found with generative AI, and with “vibe coding” in general: it completely sucks out the joy of software development for me.

I hate the way they’ve taken over the software industry, I hate how they make me feel while I’m using them, and I hate the human-intelligence-insulting postulation that a glorified Excel spreadsheet can do what I can but better.

Saturday, April 5th, 2025

A ridicously fluffly tabby cat lying splayed out on wooden decking, rubbing its ear with one of its paws.

Happy Caturday from Coco!

Thursday, April 3rd, 2025

A fiddle on a table in front of a man playing banjo and another man playing fiddle.

Thursday session

Wednesday, April 2nd, 2025

A woman playing fiddle and a man playing accordion at a table in the corner of a pub.

Wednesday session

Poisoning Well: HeydonWorks

Heydon is employing a different tactic to what I’m doing to sabotage large language model crawlers. These bots don’t respect the nofollow rel value …so now they pay the price.

Raising my own middle finger to LLM manufacturers will achieve little on its own. If doing this even works at all. But if lots of writers put something similar in place, I wonder what the effect would be. Maybe we would start seeing more—and more obvious—gibberish emerging in generative AI output. Perhaps LLM owners would start to think twice about disrespecting the nofollow protocol.

Item Flow, Part 1: A new unified concept for layout | WebKit

I really like the idea of unifying some layout values in CSS. If you’ve got any feedback, please chip in!