The Blogroll

This Years Model

There’s a new AI model that can render photorealistic people and products, including text and logos. Geisha With Walkman is something I tried to draw 40 years ago, but my rendering skills were simply too poor. The Reve Image 1.0 preview allowed me to do it instantly this morning with a single, basic prompt. P.S. […]

The post This Years Model appeared first on Jeffrey Zeldman Presents.

[Igalia Podcast] What Happens If They Sell Chrome?

I think I preferred talking about it to writing about it as really I just wanted to spout off thoughts and ideas, and hear other people’s. My writing wasn’t real journalism, it was more if it goes this way my guess is it ends badly. There are some real extremes here. At worst: Google is […]

Easy way to upload, transform and deliver files and images (Sponsored)

Managing media is a really difficult task if you try to do all of it yourself, especially if the media comes from other sources. The file can be submitted in any state and size, but what if you need something really specific? You can code it all yourself or you can use an awesome service […]

The post Easy way to upload, transform and deliver files and images (Sponsored) appeared first on David Walsh Blog.

Chris’ Corner: The New Web Safe

Back in the day I was a fan of the “Trebuchet MS” font. I didn’t like it large, but set fairly small I loved the look of it. Looked very website-ish — if that makes sense. Honestly, at 12px, it still looks really nice. The main reason I would use it is that it was […]

Five years

My favourite bit of the archive on this site is the link that says “on this day”. It’s of no interest to anyone except me, but I love going through this little time tunnel.

Using that link this month gives me a flashback to March five years ago when The Situation was unfolding.

I remember the build-up at the end of February. We were in Galway for a birthday weekend getaway. One morning in the hotel I saw the papers were running a story that seemed so Irish to me: because of this emerging virus, people were no longer to give the “sign of peace” at mass (that’s the bit where you awkwardly shake hands with the people around you). I chuckled. Nervously.

Then we were leaving Ireland, in the taxi to the airport in Dublin the radio was on. A medical professional was urging the cancellation of the St. Patrick’s Day parade because a grand total of 2 or 3 people in the country had this virus. The DJ reacted with incredulity. It sounded like a pretty far-fetched idea to me too, because St. Patrick’s Day was just over two weeks away.

The St. Patrick’s Day parade was cancelled.

Throughout The Situation I was keeping track of things in Ireland. It was like seeing an A/B test unfolding. Everything that England was doing wrong, Ireland was doing the opposite. It wasn’t quite New Zealand, but they put scientists front and centre of their decision-making precision. Whereas here, policy was driven by wishful thinking.

I was writing about it all here on my website. I also started recording a tune every day for 200 days. Here’s the first one. See how fresh-faced I am? I decided to stop shaving during lockdown. After six weeks, I looked like this.

But to really recall what that time was like, I recommend reading Jessica’s account of 2020. The first entry is called A Journal of the Plague Week and it was published five years ago. The final entry was A Journal of the Plague Week 52 a year later.

ATConf

This is a reference page for People in Protocols,” a talk I gave (remotely) on March 23, 2025 at the first ATmosphere Conference in Seattle. Right now, it contains citations and further reading, but I may expand it later with additional material and/or a written version of the talk. Massive thanks to everyone who ran the conference and let me remote in when I couldn’t come in person.

Text notes

Image notes

Command and control

I’ve been banging on for a while now about how much I’d like a declarative option for the Web Share API. I was thinking that the type attribute on the button element would be a good candidate for this (there’s prior art in the way we extended the type attribute on the input element for HTML5).

I wrote about the reason for a share button type as well as creating a polyfill. I also wrote about how this idea would work for other button types: fullscreen, print, copy to clipboard, that sort of thing.

Since then, I’ve been very interested in the idea of “invokers” being pursued by the Open UI group. Rather than extending the type attribute, they’ve been looking at adding a new attribute. Initially it was called invoketarget (so something like button invoketarget="share").

Things have been rolling along and invoketarget has now become the command attribute (there’s also a new commandfor attribute that you can point to an element with an ID). Here’s a list of potential values for the command attribute on a button element.

Right now they’re focusing on providing declarative options for launching dialogs and other popovers. That’s already shipping.

The next step is to use command and commandfor for controlling audio and video, as well as some form controls. I very much approve! I love the idea of being able to build and style a fully-featured media player without any JavaScript.

I’m hoping that after that we’ll see the command attribute get expanded to cover JavaScript APIs that require a user interaction. These seem like the ideal candidates:

There’s also scope for declarative options for navigating the browser’s history stack:

  • button command="back"
  • button command="forward"
  • button command="refresh"

Whatever happens next, I’m very glad to see that so much thinking is being applied to declarative solutions for common interface patterns.

ShopTalk on YouTube

We’ve long had a YouTube channel for ShopTalk, but now we’re posting regular ol’ episodes to it, which we’ve never done before. Like this: And “shorts” here and there that we’ll clip out of the shows when it’s fun.

Style legend

There’s a new proposal for giving developers more control over styling form controls. I like it.

It’s clearly based on the fantastic work being done by the Open UI group on the select element. The proposal suggests that authors can opt-in to the new styling possibilities by declaring:

appearance: base;

So basically the developer is saying “I know what I’m doing—I’m taking the controls.” But browsers can continue to ship their default form styles. No existing content will break.

The idea is that once the developer has opted in, they can then style a number of pseudo-elements.

This proposal would apply to pretty much all the form controls you can think of: all the input types, along with select, progress, meter, buttons and more.

But there’s one element more that I wish were on the list:

legend

I know, technically it’s not a form control but legend and fieldset are only ever used within forms.

The legend element is notoriously annoying to style. So a lot of people just don’t bother using it, which is a real shame. It’s like we’re punishing people for doing the right thing.

Wouldn’t it be great if you, as a developer, had the option of saying “I know what I’m doing—I’m taking the controls”:

legend {
  appearance: base;
}

Imagine if that nuked the browser’s weird default styles, effectively turning the element into a span or div as far as styling is concerned. Then you could style it however you wanted. But crucially, if browsers shipped this, no existing content would break.

The shitty styling situation for legend (and its parent fieldset) is one of those long-standing annoyances that seems to have fallen down the back of the sofa of browser vendors. No one’s going to spend time working on it when there are more important newer features to ship. That’s why I’d love to see it sneak in to this new proposal for styling form controls.

I was in Amsterdam last week. Just like last year I was there to help out Vasilis’s students with a form-based assignment:

They’re given a PDF inheritance-tax form and told to convert it for the web.

Yes, all the excitement of taxes combined with the thrilling world of web forms.

(Side note: this time they were told to style it using the design system from the Dutch railway because the tax office was getting worried that they were making phishing sites.)

I saw a lot of the same challenges again. I saw how students wished they could specify a past date or a future date in a date picker without using JavaScript. And I saw them lamenting the time they spent styling legends that worked across all browsers.

Right now, Mason Freed has an open issue on the new proposal with his suggestion to add some more elements to consider. Both legend and fieldset are included. That gets a thumbs-up from me.

Enshittification as a matter of taste

“Enshittification” is a termed coined by Cory Doctorow in 2023 to describe a pattern of decreasing quality observed in online services and products. Since Doctorow’s post, there’s been no shortage of think pieces on enshittification and its role in our society and to a large extent I agree with them all. I think it’s an inevitable problem that shows the splitting seams of Capitalism. If you will allow, I’d like to add a tangential thought – one slight embellishment – to this topic.

To me, enshittification means that a person who lacks taste was put in a position of power.

Everyone knows ads on the internet suck. But ads also pay bills and help keep the lights on in newsrooms. When a website adds one (privacy-preserving) ad to a website, I say “Okay”. Two, I permit it. Three, I say “Easy now” but still scroll through unencumbered. But when the website adds a fifth, seventh, twelfth ad… I know a person who lacks taste is at the wheel. I can feel it in my bones when an app or website has prioritized revenue over user experience. A person without taste or high emotional intelligence broke the unspoken contract we had built on mutual respect.

When you read about the development of the iPhone in books like Ken Kocienda’s Creative Selection or Tony Fadell’s Build, you understand Steve Jobs’ superpower wasn’t so much that he possessed a reality distortion field, but that he was a great editor. He could find the good ideas in a pile of prototypes and say “no” (harshly, I’ve read) to the less-than-great ideas. You need a person with taste in the decision making process. When we see giants falter, it’s a lack of taste shining through.

Going forward, I think taste and style are more valuable than ever before. In an era where we’re able to rapidly generate cheap low quality content or software at a scale we’ve never seen before, we will need people with taste in the mix. We’ll need aggregators to dive in the dumpsters for the treasure. We’ll need people who know how to zig when everyone is using the Zag-o-tron 9000. We’ll need people who can offer critique and say “no” when the “yes yes always more” machine barrels through town and begins knocking down institutions.

“Open Recent” UI in VS Code Alternatives

When you open Visual Studio Code without doing something like opening a .workspace file or dragging a folder onto it, you get a fairly blank screen like this: RECORD SCRATCH. I’m an idiot. It was just like that because I had my “Work Bench” set to “none” instead of the default. Putting the value back […]

Design processing

Dan wrote an interesting post with a somewhat clickbaity title; This Competition Exposed How AI is Reshaping Design:

I watched two designers go head-to-head in a high-speed battle to create the best landing page in 45 minutes. One was a seasoned pro. The other was a non-designer using AI.

If you can ignore the title (and the fact that Dan still actively posts on Twitter; something I find very hard to ignore), then there’s a really thoughtful analysis in there.

It’s less about one platform or tool vs. another more than it is a commentary on how design happens, and whether or not that’s changing in a significant way.

In particular, there’s a very revealing graph that shows the pros and cons of both approaches.

There’s no doubt about it, using a generative large language model helped a non-designer to get past the blank page. But it was less useful in subsequent iterations that rely on decision-making:

I’ve said it before and I’ll say it again: design is deciding. The best designers are the best deciders.

Dan finishes by saying that what he’d really like to see is an experienced designer/decider using these tools to turbo-boost their process:

AI raises the floor for non-designers. But can it raise the ceiling for designers?

Meanwhile, Matt has been writing about Vibe-designing. Matt is an experienced designer, but he’s not experienced with Figma. He’s found that he can work around that using a large language model:

Where in the past 30 years I might have had to cajole a more technically adept colleague into making something through sketches, gesticulating and making sound effects – I open up a Claude window and start what-iffing.

The “vibe” part of the equation often defaults to the mean, which is not a surprise when you think about what you’re asking to help is a staggeringly-massive machine for producing generally-unsurprising satisfactory answers quickly. So, you look at the output as a basis for the next sketch, and the next sketch and quickly, together, you move to something more novel as a result.

Interesting! Just as Dan insisted, the important work is making the decision and moving on to the next stage. If the actual outputs at each stage are mediocre, that seems to be okay, as long as they’re just good enough to inform a go/no-go decision.

This certainly seems more centaur-like than the usual boring uses of large language models to simply do what people are already doing.

Rich gets at something similar when he talks about using large language models for prototyping, where it’s okay if the code is kind of shitty:

If all you need is crappy code to try out a concept or a solution, then an LLM might well enable you (the designer) to do that.

Mind you, even if you do end up finding useful and appropriate ways to use these tools, you’re still using a tool built on exploitation and unfairness:

It’s hard (and reckless) to ignore the heartfelt and cogent perspective laid out by Miriam on the role of AI companies in the current geopolitical crisis:

When eugenics-obsessed billionaires try to sell me a new toy, I don’t ask how many keystrokes it will save me at work. It’s impossible for me to discuss the utility of a thing when I fundamentally disagree with the purpose of it.

Chris’ Corner: PerformanCSS

How CSS relates to web performance is a funny dance. Some aspects are entirely negligible the vast majority of time. Some aspects are incredibly impactful and crucial to consider. For example, whenever I see research into the performance of some form of CSS syntax, the results always seem to be meh, it’s fine. It can […]

Your opt-innie wants to talk to your opt-outtie.

Scrapers gonna scrape.

The post Your opt-innie wants to talk to your opt-outtie. appeared first on Jeffrey Zeldman Presents.

AI Slop Podcasts?

My kid likes listening to podcasts sometimes and it’s cool with me! Story Pirates, for example, rules. She must have typed in “Bluey” at some point into the podcast app we use and found the Bluey Storytime Podcast. It looks kind of official. That’s real Bluey art, it uses the word “Bluey” in the title, […]

Google Being Forced To Sell Chrome is Not Good for the Web

You’ve got a monopoly on lemonade because you pay all the grocery stores to be the default lemonade. So we’re going to force you sell your car. What’s with the weird redirect? If the monopoly is directly caused by paying the grocery stores for placement, then stop that part. We can see this exact redirect […]

On Balatro

The ShopTalk Discord #games channel has been pretty heavy on Balatro for like… a year? I was turned off by the game at first as I think I downloaded some unofficial port or something and it was unplayably janky. But now Balatro+ is on Apple Arcade, which I have anyway, and I’ve got a perfectly […]

Are You Obsessed With Usability?

UX isn't just about usability. It's about creating emotional connections and memorable experiences that engage users beyond mere functionality.

Curating UX London 2025

I’ve had my head down for the past six months putting the line-up for UX London together. Following the classic design cliché, the process was first divergent, then convergent.

I spent months casting the net wide, gathering as many possible candidates as I could, as well as accepting talk proposals (of which there were lots). It was fun—this is when the possibility space is wide open.

Then it was crunch time and I had to start zeroing in on the final line-up. It wasn’t easy. There were so many times I agonised over who’d be the right person to deliver the right talk.

But as the line-up came together, I started getting very excited. And now when I step back and look at the line-up, I’m positively vibrating with excitement—roll on June!

I think it was really useful to have a mix of speakers that I reached out to, as well as talk proposals. If I was only relying on my own knowledge and networks, I’m sure I’d miss a lot. But equally, if I was only relying on talk proposals, it would be like searching for my keys under the streetlight.

Putting the line-up on the website wasn’t quite the end of the work. We got over 100 proposals for UX London this year. I made sure to send an email back to each and every one of them once the line-up was complete. And if anyone asked for more details as to why their proposal didn’t make it through, I was happy to provide that feedback.

After they went to the trouble of submitting a proposal, it was the least I could do.

Oh, and don’t forget: early-bird tickets for UX London are only available until Friday. Now’s the time to get yours!

Twittotage

I left Twitter in 2022. With every day that has passed since then, that decision has proven to be correct.

(I’m honestly shocked that some people I know still have active Twitter accounts. At this point there is no justification for giving your support to a place that’s literally run by a nazi.)

I also used to have some Twitter bots. There were Twitter accounts for my blog and for my links. A simple If-This-Then-That recipe would poll my RSS feeds and then post an update whenever there was a new item.

I had something something similar going for The Session. Its Twitter bot has been replaced with automated accounts on Mastodon and Bluesky (I couldn’t use IFTTT directly to post to Bluesky from RSS, but I was able to set up Buffer to do the job).

I figured The Session’s Twitter account would probably just stop working at some point, but it seems like it’s still going.

Hah! I spoke too soon. I just decided to check that URL and nothing is loading. Now, that may just be a temporary glitch because Alan Musk has decided to switch off a server or something. Or it might be that the account has been cancelled because of how I modified its output.

I’ve altered the IFTTT recipe so that whenever there’s a new item in an RSS feed, the update is posted to Twitter along with a message like “Please use Bluesky or Mastodon instead of Twitter” or “Please stop using Twitter/X”, or “Get off Twitter—please. It’s a cesspit” or “If you’re still on Twitter, you’re supporting a fascist.”

That’s a start but I need to think about how I can get the bot to do as much damage as possible before it’s destroyed.

Tag, you're it

I’m a bit behind in my RSS feeds and I didn’t realize Susan tagged me to answer a series of questions about my blog. I’ve read dozens of these and to be honest was feeling a little left out, so thanks Susan for including me! (Susan’s one of my favorite bloggers and crafters, be sure to like and subscribe.)

Why did you start blogging in the first place?

I published a zine in high school with my best friend Mike. Our zine Wimpkiller was a creative outlet for all the composition notebooks we filled up over a bottomless cups of coffee at IHOP. We’d print out stories on Mike’s computer, chop ‘em up, glue ‘em together, and then scam copies after midnight with the help of the friendly late-shift worker at Kinko’s. I enjoyed that thrill of self-publishing then as much as I do now. It felt like the garage band of writing. You may not be good or ever get famous, but you can brute force some art into the world.

In college blogs became a trend. I created a blog as I graduated from college to chronicle my entry into the corporate world and ended up chronicling my move and life in Japan. It served as a form of catharsis and outward processing as well as keeping my friends and family up to date on my adventures. That blog died after I came back from Japan and had to get a job and start a career.

Meeting Jeffery Zeldman at SXSW was the inspiration for this edition of the blog, if you can believe it. A brief encounter but my key takeaway on how I could become more like my web development heroes was to write more. They write, and writing begets books, and books begets conference talks. It seemed like a template I could follow and I started self-publishing again. Over time, I wrote enough to where I got to write on Jeffrey’s blog and speak at his conference a handful of times. I guess the plan worked out.

What platform are you using to manage your blog and why did you choose it?

I started on WordPress but I moved my blog to Jekyll in 2012. I chose Jekyll because I was into Ruby at the time and fighting with WordPress for good performance was exhausting me. I wanted a simpler authoring and development experience. The simplicity of building with markdown files on localhost still resonates with me.

Have you blogged on other platforms before?

I’ve used Blogger, MovableType, WordPress, and Jekyll. There’s also an ill-fated Eleventy branch on my site that never made it to production. I’m sure Jekyll will implode and I’ll need to find something else, but switching platforms would be a distraction for me at this point without some obvious benefit or process improvement.

How do you write your posts? For example, in a local editing tool, or in a panel/dashboard that’s part of your blog?

I write my posts in a giant Notion kanban. It’s overkill but it’s my overkill. The organization capabilities and “markdown-like” aspects of Notion made it a good fit over a folder-o’-files. Before publishing, my posts go through a series of pre-publishing rituals. With those processes combined I maintain a level of quality and throughput that I’m happy with.

When do you feel most inspired to write?

I find time to write after the kids go to bed. If there’s time during the workday, I may spend a lunch break jotting some thoughts too. My blogging is very work-dependent to the extent that sometimes when I’m productive at work, I’m most productive at blogging. But often, I’m too tired or focusing on other tasks to craft a well-reasoned blog post.

Do you publish immediately after writing, or do you let it simmer a bit as a draft?

Most of my drafts simmer for weeks if not months or years. From time to time I’ll do a one day turnaround on a post and that’s rewarding, but it’s inconsistent. At the time of writing I have 22 active drafts where ”active” means I’ve updated them at least once in the last six months. If I increase the scope to one year, there’s 41 drafts in my kanban.

What are you generally interested in writing about?

I’m a generalist at heart and enjoy writing about technology generally. If you look at my archive it’s pretty rare that two consecutive posts will be thematically similar. I write about specific technologies like CSS but also about game development or the capital-W Web. And of course prototypes, which I’m convinced are the not-so-secret sauce for building great technologies.

One direction I’m slipping towards in my mind is futurism and speculative fiction (e.g. sci-fi). Writing about current technology limits you to existing capitalist and corporate structures. Imagining the future and the potential fallout allows you to think without the confines of “Good because make money” which so much of our discourse is today.

Who are you writing for?

Woof. Good question. 90% of the time I’m writing to get ideas out of my head. Transfiguring ideas into text works wonders for me. I also tend to write for an abstract audience, people who are curious about the web and technology yet crave more from it; a person who considers themselves a technologist, but also factors in morality and other cosmotechnics.

What’s your favorite post on your blog?

Quick Thoughts on Chips (2023) is up there but I feel like Responsive Deliverables (2013) aka, the “tiny bootstraps” post, is a level of quality, thoughtfulness, and timelessness that I don’t achieve often. I’d like more “timeless” pieces like that, but I don’t exactly know how or if it’s worth trying to bottle that magic.

Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?

I’m pretty comfortable with my site, but I have a couple changes in mind:

Some of those will happen over the course of a year, some in the dark of night, some never.

Tag ‘em.

What a responsibility to add people to this chain letter! Susan told me if I don’t forward this to 10 people, my grandparents will die! That seems extreme but okay. I’ll tag the following people who I think haven’t written one yet:

Shoot. Only seven. Sorry, memaw and pepaw. Hopefully some unnamed individuals will answer the call.

Sessioning

Brighton is blessed with plenty of traditional Irish music sessions. You need some kind of almanac to keep track of when they’re on. Some are on once a month. Some are twice a month. Some are every two weeks (which isn’t the same as twice a month, depending on the month).

Sometimes when the stars align just right, you get a whole week of sessions in a row. That’s what happened last week with sessions on Monday, Tuesday, Wednesday, and Thursday. I enjoyed playing my mandolin in each of them. There was even a private party on Saturday night where a bunch of us played tunes for an hour and a half.

There’s nothing quite like playing music with other people. It’s good for the soul.

A young man playing fiddle and a young man playing concertina. A man playing fiddle and a man playing flute while another fiddler looks on, all of them gathered around a pub table. Two fiddlers playing side by side at a pub table. A fiddler listens as another fiddler plays with a whistle player.

Prog

I really like Brad’s new project, Cold Album Drumming:

Brad Frost plays drums to the albums he knows intimately, but has never drummed to before. Cover to cover. No warm-up. No prep. Totally cold. What could possibly go wrong?

I got a kick out of watching him play along to Radiohead’s In Rainbows and The Decemberist’s The Crane Wife.

I was really into The Decemberists in the first decade of the 21st Century. I remember seeing them in a long-gone Brighton venue more than twenty years ago.

But I kind of stopped paying attention to them after they released The Hazards Of Love. Not because I didn’t like that album. Quite the opposite. I love that album. I think in my mind I kind of thought “That’s it, they’ve done it, they can go home now.”

It’s exactly the kind of album I should not like. It’s a concept album. A folk-rock opera.

When I was growing up, concept albums were the antithesis of cool. Prog rock was like an insult.

You have to remember just how tribal music was back in the ’70s and ’80s. In my school, I remember the divide between the kind of people who listened to The Cure and The Smiths versus the kind of people who listened to Prince or Queen. Before that you had the the mods and the rockers, which in hindsight makes no sense—how are The Who and The Jam not rockers?

Looking back now, it’s ridiculous. I get the impression that for most people growing up in the last few decades, those kind of distinctions have been erased. People’s musical intake is smeared across all types and time periods. That is a good thing.

Anyway, a folky prog-rock opera like The Hazards Of Love is exactly the kind of thing that past me would’ve hated. Present me adores it. Maybe it’s because it’s got that folky angle. I suspect Colin Meloy listened to a lot of Horslips—heck, The Decemberists even did their own mini version of The Táin.

Speaking of mythic Irish language epics, I really like John Spillane’s Fíorusice:

Fíoruisce - The Legend of the Lough is a three-act Gaelic folk opera composed by Irish artist John Spillane. It is a macaronic or bilingual work. The work is an imagined re-Gaelicization of the Victorian Cork fairytale Fior-usga collected by Thomas Crofton Croker in the 1800’s and published in his book Fairy Legends and Traditions of the South of Ireland (1828). The story is a surreal tale culminating in a drowned kingdom, which as lore tells us, becomes The Lough in Cork city as we know it today. They say, you can see the tops of the underworld towers on a clear day and hear the music of their big party on Midsummer’s night.

Yup, it’s another concept album. And funnily enough, past me was not a fan of John Spillane either.

I first heard him when he was part of a trad band called Nomos in Cork in the early ’90s (the bódhran player’s mother was friends with my mother). I really liked their tunes but I thought the songs were kind of twee.

Over the years, the more of his songs I heard, the more I understood that John Spillane was just being completely open and honest. Past me thought that was twee. Present me really respects it. In fact, I genuinely love his songs like Johnny Don’t Go To Ballincollig and All The Ways You Wander.

And then there’s Passage West. It’s a masterpiece. I might be biased because Passage West is the next town over from Cobh, where I grew up.

So yeah, Fíorusice is something that past me would’ve disdained:

  1. a concept album by
  2. John Spillane in
  3. the Irish language.

Present me is into all three.

It’s Bandcamp Friday today. I think I know what I’m going to get.

My Glamorous Life: The Unexpected Samples

If you’ve never fallen gently asleep to jazz ballads, only to sit bolt upright because a horse is shrilly whinnying in your ears, you should try it some time.

The post My Glamorous Life: The Unexpected Samples appeared first on Jeffrey Zeldman Presents.

UX Is Bigger Than You Think: Beyond Websites and Apps

Your users’ experience starts long before they visit your site or app—and continues long after. Are you considering the full picture?

The line-up for UX London 2025

Check it out—here’s the line-up for UX London 2025!

A woman with long dark straight hair wearing dark clothing in front of a bookshelf. Studio portrait of a smiling fair-haired woman wearing a green and white cardigan with her arms folded. A smiling curly-haired woman wearing a shiny top resting her chin on the palm of hand. A smiling woman with short dark hair in profile turns her head towards us. A woman with long dark hair sitting down looking directly at us. Close up of the face of a smiling woman wearing a baseball cap outdoors. A shaven-headed bearded man with a camoflauge shirt in front of a light background. A dark-haired smiling woman wearing a sparkly black top. A smiling woman with straight dark hair outdoors wearing a black top with a sparkly shoulderpiece. A smiling woman with long fair hair and glasses wearing a black and grey top in front of a yellow backdrop. Cut-out of a smiling bearded man wearing a purple scarf against a yellow background. A smiling woman with wearing jeans and a white T-shirt sitting forward on a chair. A woman with glasses and shoulder-length dark hair wearing a necklace and a yellow top sitting down. A shaven-headed man with a light shirt in front of a black background. Close up of a woman's face with shoulder-length hair in front of a background of somewhere bright and sunny outside. The smiling face of a man with short dark hair and beard. A smiling woman with long dark straight hair wearing a dark T-shirt. A smiling woman with long dark hair in leafy corridor. A smiling woman with short blonde hair wearing a white top in front of a pale background.

This is going to be so good! Grab a ticket if you haven’t got one yet.

UX London takes place over three days, from June 10th to 12th at a fantastic venue in the heart of the city. To get the full experience, you should come for all three days. But you can also get a ticket for individual days. Each day has a focus, and when you put them all together, the whole event mirrors the design process:

  1. Day one: Discovery
  2. Day two: Design
  3. Day three: Delivery

Each day features a morning of talks, followed by an afternoon of workshops. The talks are on a single track; four consecutive half-hour presentations to get you inspired. Then after lunch, you choose from one of four workshops. All the workshops are two and half hours long and very hands-on. No laptop required.

On discovery day you’ll have talks in the morning about research, content design, strategy and evaluating technology, followed by workshops on discovery and definition and behavioural design.

On design day there’ll be talks on interface design, a healthcare case study, inclusive design, and typography, followed by workshops in the afternoon on data visualisation and ethics.

Finally on delivery day you’ll get talks on conversion design, cross-team collaboration, convincing stakeholders, and improving design critiques, followed by workshops on facilitating workshops and getting better at public speaking.

Every workshop is repeated on another day so you’ll definitely get the chance to attend the one you want.

Oh, and at the end of every day there’ll be a closing keynote. Those are yet to be revealed, but I can guarantee they’re going to be top-notch!

Right now you can get early-bird tickets for all three days, or individual days. That changes from March 15th, when the regular pricing kicks in—a three-day ticket will cost £200 more. So I’d advise you to get your ticket now.

If you need to convince your boss, show them this list of reasons to attend.

See you there!

It’s almost like they are saying one thing and doing another.

Imagine announcing to the world you’re going to do the difficult job of making big changes and cuts in the government in order to make it more efficient. Then taking an organization that is demonstrably doing that job well already and destroying the whole thing. What if I told you there was a group of […]

Hosted

Research By The Sea was last Thursday. I’m still digesting it all.

In short, it was excellent. The venue, how smoothly every thing was organised, the talks …oh boy, the talks!

Benjamin did a truly superb job curating this line-up. Everyone really brought their A-game.

As predicted, this wasn’t a day of talks just for researchers. It was far more like a dConstruct. This was big, big picture stuff. Themes of hope, community, nature, technology, inclusion and resilience.

I overheard more than one person in the breaks saying “this was not what I was expecting!” They were saying it in a very positive way, though I wouldn’t be surprised if there were a silent minority in the audience who were miffed that they weren’t getting a day of practical research techniques devoid of politics.

As host, I had the easiest job of the day. All I had to do was say a few words of introduction for each speaker, then sit back down and enjoy every minute of every talk.

The one time when I had to really work was the panel discussion at the end of the day. I really enjoy moderating panels. I’ve seen enough bad panels to know what does and doesn’t work. But this one was tough. The panelists were all great, but because the themes were soooo big, I was worried about it all getting a bit too high-falutin’. People seemed to enjoy it though.

All in all, it was a superb day. If you came along, thank you!

Gotta be honest, #ResearchByTheSea is one of the best conferences I’ve been to in yeeeeeears. So many good, useful, inspiring, thoughtful, provocative talks. Much more about ethics and power and possibility than I’d expected.

Loved it. Thank you, @clearleft.com!

— @visitmy.website

Chris’ Corner: Color Accessibility

I’ve been a bit sucked into the game Balatro lately. Seriously. Tell me your strategies. I enjoy playing it equally as much lately as unwinding watching streamers play it on YouTube. Balatro has a handful of accessibility features. Stuff like slowing down or turning off animations and the like. I’m particularly interested one of the […]

Unnecessary

It’s a secret to everyone! This post is for RSS subscribers only. Read more about RSS Club.

Yesterday, my daughter was in Dallas for the NCA Cheer Competition. My wife sent me a text letting me know her team won! Yay! My daughter is a national champion at age 9. Ten minutes later, the next text I get is that there’s an active shooter and they’re in lockdown. Panic consumed the 30,000 people in the convention center. Kids trampled in the stampede to get out. Families and teams separated. Youth running across a 10 lane freeway to escape, traffic screeching to a halt. Horrifying.

The actual cause of the incident was some cheer parents getting into a fight which knocked down some metal poles. The whole situation is sad. Unnecessary trauma because some dumb parents lost their ability to be civil. Unnecessary trauma created through our lax gun laws and inability to stop this uniquely American horror. An unnecessary situation. Thankfully no one was critically injured and the shooter wasn’t real… this time. We’re living inside a lit powder keg at all times and its exhausting.

I don't like sand

Happened upon a good example of the problem with AI generated alt text. It’s a gif of the infamous scene from Star Wars Episode II where Hayden Christensen playing Anakin Skywalker tells Natalie Portman’s character Queen Amadala, “I don’t like sand.” It’s the first phrase in the worst lines of dialogue in cinematic history. And here’s how the computer interpreted the gif…

Screenshot of the image upload interface of Bluesky that autocompletes alt-text. As described in the post there’s a gif from Star Wars Episode II where Anakin tells Queen Amadala “I don’t like sand”, but the alt text says “a man and a woman are sitting next to each other and the woman is saying I don’t like sand”

The AI said “a man and a woman are sitting next to each other and the woman is saying I don’t like sand.” Not only does this miss the context that it’s from the world famous movie Star Wars, it gets the speaker entirely wrong. It OCR’d the text fine, but missed relaying the entire context.

Context. That’s what alt text is. I’d hypothesize that context is probably one of the biggest reasons why language evolved. A caveman could yell “AHHH!H” to alert others of dangers, but I imagine after a couple rounds of those others would begin asking, “Ok, Grog, I understand you think there’s an AHHH!H out there, but what kiiiiiiind of AHHH!H?”

My ears are starting to perk up when I hear the word context. I hear all the time that “You have to give the AI more context and it will give you a better answer.” AI has a lot of vectorized text and image processing nodes, but it’s short on context I guess. Will AI one day have every frame of the expensive-to-license Star Wars franchise indexed in its brain like I do? Or are we the gatherers and keepers of context? Does our capacity for empathy (which allows us to project and inhabit other contexts we don’t necessary have) set humans apart?

I hate to leave on such an open-ended question, but I think we can all agree… that woman doesn’t like sand.

The only way to know for sure... is to build a prototype

I’ve mentioned Mark Brown’s channel Game Makers Tool Kit many times before. Well, I’m back with another banger about “How to find amazing game ideas”. The whole video is great but I specifically want to highlight something Mark said during the last ten seconds of the video as the credits and video thumbnails started to roll…

And then the final question to answer is… is the game idea actually fun? Because the truth is… our brains are terrible video game simulators. Almost every idea seems fun in our heads. But once we actually make it we’ll realise  that it’s boring, that it’s too complicated, and that it has disastrous  unforeseen design problems. So the only way to know for sure… is to build a prototype.

The answer again –and I cannot stress this enough– is prototypes.

“Our brains are terrible video game simulators.” Woof. This is a powerful sentiment and I regularly encounter this. I feel this is true with websites as well. I can make the best fantasy website – so beautiful, so perfect in pixels, so incredibly evocative people will throw their wallets at me – but if I haven’t put prototypes into people’s hands, I’m introducing a huge amount of risk.

That’s all. Prototypes. I think the rest of the video applies to where you can find ideas for amazing websites:

  • Other websites - Stealing Borrowing good UX is a great start for an idea
  • Genres - Follow the rules or offering an interesting twist on an existing genre (like ecommerce)
  • Mechanics - Adding interesting iteractions or gimmicks can add distinction
  • Experience - Go hard on experience and ambiance!

Mark also raises some important questions at the end and I wanted to highlight two of those because I think they’re important.

  • “Can you make it?” - Be honest with yourself, do you in your personal capacity have the capability to deliver the idea? I often succumb to making ideas in my head that are so big and complex that it becomes impossible to build and maintain.
  • “Will it stand out?” - In the sea of websites or podcast people come across each day, will it be unique or will it join the cacophony?1

And wouldn’t you know it, those are the types of questions that prototypes help to answer.

  1. Personal websites are exempt from this question. I think “It won’t stand out” is one reason people avoid making one. The world (more than ever) needs your unique perspective. Don’t let uniqueness be a reason not to try and make something. Get to the first checkpoint, make your idea, get the first draft in people’s hands. Then over time find what makes your idea unique and breakaway from the default template.

A Jewish Joke

I wrote a joke for you.

The post A Jewish Joke appeared first on Jeffrey Zeldman Presents.

JT & Kelsey

My sister is a big fan of Justin Timberlake. She & her friends went to go see him in Milwaukee this past weekend, with some swank front-row tickets her husband Aaron scored. She made a little sign to hold up that said “Moms / Teachers Night Out” and JT called them out early in the […]

Chris’ Corner: onChange

There is an awful lot of change on the web. Sometimes the languages we use to build for the web change. Some of it comes from browsers themselves changing. An awful lot of it comes from ourselves. We change UIs and not always for the better. We build new tools. We see greener grass and […]

Vibe Check №37

As the weather in Texas flip-flops weekly between sunny Spring and snowy Winter, I’ve been dealing with a bit of personal health this last quarter. From my ADHD diagnosis, to trying meds for the first time, to back-to-back sicknesses, then constant migraines, and then I think I got the Norovirus on New Years. A debilitating time for me, but in January it started to turn around when I got some good news…

“It’s not a tumor, it’s a deformity”

In December I saw my primary care physician about a pain in my ankle that was causing me to hobble and at times preventing me from walking in November. It caused a lot of other issues as well; a fire-like pain in my thigh and a bump on my heel.

My doctor thought it might be Chondroma, which is a bit scary to look up, but is like a tumor made of cartilage. That tumor can either be on the surface of the bone or inside the bone. Yikes. I got an x-ray and followed up with an orthopedic surgeon who gave me some good news that it’s not a tumor, but Haglund’s Deformity also known as “pump bump” because a lot of women who wear heels often get it. The pain comes and goes based on how the tendon rubs against the bone spur.

Because I’m not in pain right now, the plan now is to take a non-surgical path and use anti-inflammatories to keep it at bay, saving surgery as a Plan B.

The side effects of ADHD meds

Last time I said I started on Qelbree, a non-stimulant ADHD medication. Non-stimulants take about five days to build up, so there’s no lightning bolt moment of clarity with non-stimulants that others describe when taking Adderall or Ritalin. It’s hard to know if it’s working, but in time I started to feel the effects.

The most notable one was that I was almost immune to environmental triggers like clutter and noise that overwhelm me. Whenever I encountered a mundane task like take out the trash or wash the dishes, I found it a lot easier to pick up and do without a 30-minute prep talk with my brain. That part was great… the side effects though… not so great…

One of Qelbree’s listed side effects is insomnia. Sure enough, I’d wake up every night at 2 AM and be awake for hours. Not quite night-brain anxiety, but just… fully awake. To combat this I read the first four books of the Murderbot Diaries back-to-back. If life hands you lemons, make emo robot lemonade.

The insomnia wasn’t great and I was having horrific headaches, so I switched to Atomoxetine, another non-stimulant SNRI that’s more common. My insurance also said they weren’t going to pay for Qelbree, so that worked out. The also don’t pay for atomoxetine, but it’s 10x cheaper so… I guess that’s a good deal? Lol.

I’d say “the mox” –that’s what we, the moxxers, call it– is working evident by the fact that I’ve been able to focus on some long mundane tasks at work. That’s been helpful. But it’s not without its side effects either. Weight loss is a welcomed side effect (-5 lbs) but another side effect is extreme dry mouth. My mouth is dry, y’all –how dry is it?– my mouth is so dry I’m putting lotion on my gums. My dentist said I need to buy that gel old people use to keep my mouth moisturized.

I guess I’ve been lucky in my life thus far because this is my first time navigating meds and side effects. What I’d like to avoid is taking more meds to counter meds, although my gum lotion already crosses that line.

The rest of the story

This has been a candid personal health issue of Vibe Check magazine. Behind the scenes it’s been less adventurous. A busy new year at work as my team sprints to deliver an “intra-source” design systems project. It –and the 1,000 token sidecar project– have consumed a lot of my brain and time.

My daughter’s mid-way through her competitive cheer season. I’m not the most extreme cheer dad, but I’m a proud one. Cheer has a lot of cross-over with child beauty pageants, but it’s a team sport where kids do flips. And it costs about 5-figures a year.

Hoping this bad health spat is over for now –he says as an ominous storm cloud appears above my head– and I can start employing my hands and brain to do more interesting tasks.

Stats

💪 Wellness

  • Navigating new medications

📖 Reading

My book consumption is becoming athematic and uninspired (except for emo robot). I’m feeling the urge to double down on sci-fi and manga.

Finished

  • Rogue Protocol - Emo robot
  • Exit Strategy - Emo robot
  • Being Wrong - Super recommend. We’re all wrong. A lot. It’s how our brains work.
  • Feel Good Productivity - A productivity book I’d maybe recommend.
  • Super Mario - The history of Nintendo and how it grew its video game business. I loved the inside look at important moments like shifting strategy to react to Sega, Sony, and Xbox.
  • The Power of Habit - A bit like Malcom Gladwell on steroids focusing on the singular issue of habit formation. One good takeaway around harnessing, hijacking, and leveraging the Cue → Response → Reward loop that habits depend on.
  • Disrupting the Game - Reggie Fils-Amié’s autobiography, more Nintendo.
  • The Customer Is Always Wrong - A humorous’ish critique of work, capitalism, customer service, and bullshit jobs.
  • The Startup of You - Self-help in “entrepreneur of your own life” form.

Started

📝 Blogging

An okay blogging era…

📺 Media

TV

  • The Earliest Show (YouTube) - Ben Schwartz’s improv morning show. Perfect in every way. Watched hours of bloopers and cut scenes too.
  • Very Important People S2 (Dropout) - This season is a little rough, not gonna lie.
  • Make Some Noise S3 (Dropout) - Always makes me smile.
  • This Aged Great (YouTube) - Ruining my childhood’s favorite movies one video at a time.
  • The Mentalist (Hulu) - My entire family has decided we all like this B-rate CSI clone.
  • Mantracks (YouTube) - Creationism, lies, and doubling down on lies.

Anime

  • DAN DA DAN (Netflix, Crunchyroll) - Classic nerdy boy meets cool girl high school romance wrapped up in a warm tortilla of magic demons vs weird aliens. The mother’s flashback mini-sode in Ep7 deserves whatever the anime Oscar is, I’ve never been more moved by a piece of television.

Podcasts

🎙 Recording

ShopTalk

🧶 Crafts and Models

Too busy to sit down and hobby, but made one fun piece…

  • AK-47 rubber band gun - My brother got me a balsa wood AK-47 fully automatic rubber band gun. It’s a thoughtful gift and mixes three of my favorites: modeling, soviet history, and trolling my kids and their friends.

⌨️ Open source

👾 Video games

  • Balatro (Steam, Switch, iOS) - Absolutely hooked on this thanks to the ShopTalk D-d-discord.

Redefine Your UX Leadership: Crafting a Strategic Vision

Shape your UX role and strategy to drive real change in your organization.

Calculators & Writing

I like the John Warner thing where the problem with outsourcing writing to AI is that the computers aren’t doing a process that is aligned with how humans would do it. On an episode of Search Engine, he said that using a calculator for long division, a tool that some compare to AI generated writing, […]

Chris’ Corner: Accessible Takes

Let’s do some links to accessibility information I’ve saved, recently read, and thought were useful and insightful.

Far from the bullying crowd

The bullies who beat and mocked me in eighth grade were cruel and stupid. They despised intelligence and worshipped violence, although they would settle for athletic ability. The school blessed their thuggery by scheduling dodgeball. It was good preparation for Viet Nam, the country where I expected to be blown apart if I managed to […]

The post Far from the bullying crowd appeared first on Jeffrey Zeldman Presents.

Meetings & Space

Seventeen bits of advice from Ariel Salminen on Leading Successful Product Teams. I really like all of them. Allow me to pluck off a few about meetings: People gotta work yo. Including yourself. You gotta give lots of time to let that happen. Context switching has a cost for some people, and I’ve found a […]

Against Entropy

What I want is a transparent model of the kinds of harms that are likely to fall onto which brains and bodies when someone swings a wrecking ball through the governmental institutions that do work that is tragically flawed but nevertheless necessary to the sustenance of our collective life.

What I mostly have is a surfeit of takes, including some very good specialist analysis and a whole lot of overconfident storytelling, and the anodyne and decontextualized output of major news orgs, and some lists and spreadsheets, which are all fine.

I want something that works differently, though. I want something more like the kind of dashboard Chrisjen Avasarala might summon in The Expanse to understand the ongoing collapse of a system of governance within her remit: High-level information, showing the whole of the board. Expert briefings, sure, and links to deeper analysis, but above all, a structure that conveys not the spectacle, but the potential damage and the inflection points:

  • Without recourse to cynicism, mindreading, or conspiracy, which supposedly outstanding decisions are already known—or nearly known—in advance?
  • If Thing X happens, what is the range of likely results?
  • Mostly importantly, what can I do?

I would like such a system to model for two kinds of action:

  • meaningful obstruction by the people who can catch the hammer-blows before they land, delay them long enough for more people to strongs up and/or duck (flatten the curve but it’s the arc of a blunt instrument), and maybe deflect them entirely, and
  • meaningful protection by the people who can save the data, tell the truth about the contours of reality, feed the babies, care for the sick and disabled, run the schools, and demonstrate all the other pragmatics of love.

Obstruction vs. protection

Right now, meaningful obstruction is largely available to members of the legislature and the justice system who can try to stop things that are illegal, unconstitutional, and/or wrong and federal workers who can maybe throw sand in some gears. Those people already know what is happening. The thing I want is not for them, but for those of us who can call phones and visit offices and send money to legal efforts. There may also come a point when the level of emergency becomes so intense and so clear that a critical mass of outraged civilians can assemble and wield broader power to stop the destruction of necessary public goods. We will need sensemaking for that, too.

Meaningful protection, though—that’s never enough when you’re a citizen working against the power of your own government, but it’s accessible to everyone. I am going to make my phone calls and thank my representatives from trying to get in between the damage and its targets, and ask them to keep trying, but protection is my beat. And sensemaking is necessary here, too, to a point.

Uncertainty is a creeping void

It’s very hard to think or act when you can’t tell if you’re about to lose your job, have your research killed off, have your healthcare terminated, witness unstoppable crimes, or just experience extended and apparently unescapable moral injury.

The uncertainty of this moment—this intentional multi-system chaos filtered through some combinaton of opaque algorithms, overwheming feeds, news orgs with a very high normalcy bias, and professional terrifiers—is going to try to degrade and dissolve us because chaos is highly transmissible across interconnected systems. The thumb-headed global-economy-shorting accelerationist-ass scammers looting our institutions are on the side of entropy. I’m against it!

I am on the side of building conditions for life.

I know that doing the work necessary for sensemaking during that first year of covid helped, because people told us, a lot. I don’t know if it’s possible to make even a clear specification for the kind of system I want, or if that’s really the thing we’re going to need a few weeks or months into the future. In the meantime, I’m continuing to work toward livable networks where we can find and protect and care for each other, because I think that’s necessary. I’m connecting locally.

If the uncertainty is getting to you, I have the plainest and most time-tested advice which is: Unless or until clarity about the most crucial levers becomes available, do what you can reach. Make the calls. Care for the people you can find. Hold on by hanging onto each other.

Wayfinding for tired people

I’ve found all of these useful at various points in the past couple of weeks:

Chris’ Corner: Creative Coding

Jake thinks developers should embrace creative coding again, which, ya know, it’s hard to disagree with from my desk at what often feels like creative coding headquarters. Why tho? From Jake’s perspective it’s about exposure. While many designers and developers have been working within familiar constraints, browsers have undergone a quiet revolution. The web now […]

Here we go again

In an endless game of lobbyists’ Whac-A-Mole, it’s a new year and here is new legislation trying to save the news. Except it’s not new. First, from Oregon, comes a rehash of bad legislation written by newspaper hedge-fund lobbyists, versions of which were deflected in two other states last year. At least the Beaver State […]

The post Here we go again appeared first on BuzzMachine.

It’s Time to Transform Software Procurement

Prioritize user-focused software procurement to boost productivity and ensure tools are usable and fit for your organization.

Chris’ Corner: Offlinin’ Aint Easy

I kinda like the idea of the “minimal” service worker. Service Workers can be pretty damn complicated and the power of them honestly makes me a little nervous. They are middlemen between the browser and the network and I can imagine really dinking that up, myself. Not to dissuade you from using them, as they […]

My weekend project

By controlling what I listen to, and the order in which I listen, I’m slowly designing an infinite collage of my evolving musical tastes.

The post My weekend project appeared first on Jeffrey Zeldman Presents.

On government efficiency

It’s a secret to everyone! This post is for RSS subscribers only. Read more about RSS Club.

I used to believe that the goal of the government should be efficiency. If the government was more efficient (waves hands broadly in the air), you could get rid of waste (again, waiving hands) and you’d need less taxes, and that would trickle down (more hands) as more money in people’s pockets, and you’d need less welfare (again, hands), less red tape (hands), and less bureaucracy (hands, hands, hands), et cetera.

I’ve changed my thinking on the subject. I now think the goal of the government should be to absorb inefficiencies.

As efficient as the fabled invisible hand of the market might be at lowering the costs of goods and services 1 and creating jobs2 … there are often non-economic inefficiencies that arise from rapidly scaling to produce cheaper goods in the infinite money machine. Rather than ignore those inefficiencies, I think the government should understand the ways the system breaks and invest in longer term ideas than making the stock market go up during the next quarter.

Here’s a short list of market inefficiencies where I think a government helps:

Social Security and Medicare. Unpopular opinion, but I sort of do see social security as a Ponzi scheme; younger people at the bottom fund older people at the top who “got in first”. But you know what’s a bigger problem? Elderly adults retiring with no retirement plan. In our “Buy the latest iPhone” society, people are statistically bad at planning for their own future.

The Environment. The free market doesn’t nudge companies towards making responsible environmental decisions. Even though electrification is 3× more efficient than carbon, the invisible hand is taking its sweet time moving over to it. Probably because the invisible hand gave too much money to the oil companies. We spend billions in aid for “once in a lifetime” acts of God that happen every year now. The “more efficient” act would be to kill carbon. We need a government to protect the non-monetizable resources that give us life like oceans, lakes, rivers, underground reservoirs, the air we breathe, and our forests.

Healthcare. I hate the American healthcare system. We pay too much for too little. We don’t pay for healthcare, we pay for insurance company lawyers to haggle about medical codes. Doctors hate it. Patients hate it. Insurance companies reek of greed and corruption. And each of us “doing our own research” isn’t a great because you end up with people turning themselves blue from colloidal silver. We probably need real doctors. And because most folks don’t need a doctor all the time, we probably need health insurance. The current system is a handful of state-by-state monopolies. But we know (according to Metcalfe’s law) that the value of a network is proportional to the number of connected users on the system. It would seem the best way to dodge insurance marketplace inefficiencies like rising costs and low quality care would be to have the biggest network possible (say, 330 million people?) to create the best safety net. The market is not getting us the best price.

Defense. Every American owning their own personal tank and missile system would be an inefficient stupid way to defend our country. It’s probably best to centralize the cost of Defense and hire trained armed service members for that purpose. I’m not advocating for more military –I’d personally prefer less– but security is a core need and it manifests at a nation-state level.

Transportation. I don’t think individuals should plan and build their own highways. I’d like a government to do that. I also think every American owning their own car that sits parked 95% of the time is a waste of money and space, even if it does make the GDP chart go up. You need a big extra room to store cars at home and a downtown filled with concrete ramps to store cars at work. Or an enormous parking lot to store cars at the store. Is this not a form of waste? There’s no way a train makes money and is a profitable business… but more trains equals less traffic. We know adding new ten million dollar a mile lanes to an already impossibly wide interstate creates more traffic, more road rage, and more traffic deaths. That is folly and an inefficiency governments can step in and solve.

Education. Education is a big expense. But you know what’s more expensive? Everyone being stupid. That’s a joke… partially. What is more expensive is everyone sourcing and paying for private schools; most parents would not do it. You’d end up with a future labor force with a lot less education. I think my biggest takeaway from school closures during COVID was how glad I am the public education system exists. Parents can work jobs, do commerce, and it allows kids to learn and play with other kids from a cross-section of incomes, ethnic groups, and special needs. The 1:20+ teacher-student ratio couldn’t be more efficient in regards to childcare. If anything we need more teachers and classrooms to keep that ratio as low as possible so education quality goes up. Oh, and school breakfasts and lunches are super efficient too. You can feed kids for like $1/kid, there’s no way I can hit those numbers at home. I can’t believe this is contentious. Let kids eat.

Scientific Research. Space is expensive to get to, only billionaires can afford it. Isn’t it nice that the government sometimes foots the bill for scientists to also go? Beyond space, efforts like curing cancer, computer research, or finding a new species of spider… these are not an ultra-efficient use of funds but those discoveries power innovation. The market doesn’t fund Science unless it makes money in an A/B test. We’d end up with more patent-pending boner pills instead of understanding of our universe. Real science is a bunch of inefficient question and answer seeking that changes the course of human history.

Human Rights. One way to drive down costs under Capitalism is to hire labor at the cheapest rate possible. Historically, our great nation has relied on slaves (yikes!) and children (yikes!) for cheap sources of labor. You’d have to work long hours for low pay and then a machine would cut off your arm and your employer would say “Well, you can’t work here anymore” and kick you out. Isn’t it great to have a government to correct this moral inefficiency? It didn’t happen overnight, of course. Countless churches and patriotic do-gooders were fine with justifying and upholding the old system. Even fought a war about it.


I could keep going, but there’s a billion and one jobs a government can do to improve the life and well-being of its citizens. Old habits die hard, I guess, because I’m still thinking about efficiency… but from the opposite angle. A government is perhaps best-situated to absorb inefficiencies at scale. Will there be inefficiency and waste and kingdom-building within a super-system like a government? For sure. Systems should always seek to improve. To begin fixing those problems you need data and transparency.

The more you understand Capitalism, the more you understand it’s a game. It’s a game with an enormous exploit. I’m talking Blanka in the corner levels of bullshit. The government should exist to fix those systems and curb those bad actors. But the system continues to reward them and heap tax break after tax break as a reward to their fellow co-conspirators in exchange for campaign contributions and lavish trips. Talk about inefficiency. Dumping piles of money into the hands of people who already have money. Sheesh.

  1. Except the hand stops working whenever a Democrat is the president?

  2. Except when the Federal Reserve raises interest rates to combat inflation, bank buyouts, and economic collapses caused by Republican presidents

The Digital Playbook: A Crucial Counterpart To Your Design System

Design systems play a crucial role in today’s digital landscape, providing a blueprint for consistent and user-friendly interfaces. But there’s another tool that deserves equal attention: the digital playbook.

Control

There is an idea in my bubble that running your own website is A Very Good Idea. I subscribe to the idea that running your own website is A Very Good Idea and will continue to help that along in my career. But there is a heaping helping of It Depends involved here. Perhaps the […]

Blog questions challenge

I was tagged by Jon Hicks and it seems like as good a time as any to return to ye olde blogge days, so here’s my answers. Why did you start blogging in the first place? I had some personal notes on an older incarnation of this site, and when blogging became a thing, I […]

A Little Arm Chair Businessin’ about Chrome

It was August 5th, 2024 when a federal judge in the US decided that “Google acted illegally to maintain a monopoly in online search”. Then November 20th, 2024 when “The Justice Department and a group of states asked a federal court late Wednesday to force Google to sell Chrome“. It hasn’t been forced yet and […]

15 Minutes

This might be my favorite song of all time. It’s by a slightly obscure Chicago punk band called The Broadways, made up of a couple members from the more well-known ska band Slapstick. It’s got everything you want in a punk song. Palm mutes, open meedly-meedly parts, yelling, speed, a half-time breakdown, and impeccable synchronicity. I listen to this song when I’m sad, when I’m frustrated, when I’m in traffic, and when I need to inject high octane fuel into my veins. The soaring octave chords will always pick me back up again.

All on the streets, the signs read
Cheaper and better technology
This capitalist vision is my nightmare

Put up a sign in my face
What the fuck happened to this place?
I think we made a wrong turn
Look at the lovely concrete

I drove to my stupid job today
Got stopped at an intersection
Fifteen minutes of my life just rolled away

Looked at the guy next to me
He didn't look too happy
No one's happy, but everyone's too busy to see

Let's go shopping today
Drive our fancy cars to the fancy malls
And for lunch we'll have Big Macs

I wish I could turn the clock back
Back to when I was ten
When I wasn't scared of everything
And everything wasn't so fucking crowded

And I wonder if my kid will ever see the horizon
Untouched by billboards and shopping malls
And I wonder if this crazy world
Thinks I'm the one that's crazy

What if I'm the one who's crazy?
What if I'm the one who's crazy?
What if I'm the one who's crazy?
What if I'm the one who's crazy?
I'm not crazy, just frustrated

WIthout a doubt, this song from my teenage years subliminally shaped a lot of my views on what’s wrong with the world. Capitalist intrusions. Eyeball monetization. The always upgrade tech cycle. Why I hate crowds. And traffic. Life evaporating at a stop light seems like a criminal waste of humanity to me. This may subconsciously be part of why I work from home.

I’ll never live up to my punk rock ideals or my teenage self, but this song takes me back to them. Not to “when I was ten”, but to “when I was seventeen” for sure. Driving through big city Houston at night. Going to Food Not Bombs near the abandoned hospital. All it takes is the first verse and BOOM! I’m transported through time and I can see the world through my old anarcho-tinted glasses. It makes you want to smash systems and break concrete.

Chris’ Corner: JavaScript Ecosystem Tools

I love a good exposé on how a front-end team operates. Like what technology they use, why, and how, particularly when there are pain points and journeys through them. Jim Simon of Reddit wrote one a bit ago about their teams build process. They were using something Rollup based and getting 2-minute build times and […]

A story about pans

The other day I sent my wife a link to a new set of ceramic pans and asked, “What do you think?” assuming she’d be as impressed as I was of the picture of eggs sliding off the pan. Her response: a grimace. Using my sixteen years of husbandly intuition, I surmised that we were not on the same page about kitchenware.

For context, my wife has had the same stainless steel pans that her parents bought her since we met. They’ve outlasted the fancier non-stick pans we’ve auditioned. Her opinion of the pans is that they’re high-quality because they’ve lasted so long and still work. And from that perspective she’s right, they technically still work… but not without some downsides.

When you use stainless steel pans instead of non-stick pans, you’re committing to stickiness and having a harder time cleaning your pans. I can accept that as an incurred cost. I think my bigger issue is that ALL our pans do this. Even our cast irons which we’ve made thousands of batches of bacon with but still aren’t seasoned. If you make scrambled eggs, about two eggs worth of material forms a brown sheet of crust on the bottom of the pan that I must scrape off but NOT using soap per the laws of properly seasoning a cast iron pan.

Anyways, my wife and I aren’t seeing eye-to-eye on the pans and I’m kind of struggling to see why. I think there’s some frugalness afoot and possibly some sentimental attachment to items that were gifts. And then she –with her Deanna Troi, betazoid-levels of empathy– said “You probably think we need new ones because you do the dishes” and that was our ah-ha moment!

In our house I’m the self-appointed dish-master because I can hyperfocus on them while listening to an audiobook, pairing something I don’t like with something I do like. My perspective on the pans is that they’re a lot of work to clean up every night. Scraping and scrubbing the charred chunky bits off so we can ruin them the next day. Essentially, I operate at a different end of the “stack” of dishes than she does so we see the situation differently. I have bigger feelings about the stickiness of the pans because that’s the part that I interface with the most. I would like to apply non-stick technology to improve the dish-washing process. Where she sees something that works okay and we’ve had for a long time, while I see a maintenance burden.

Now we have an end-to-end/cross-team perspective of our pans and that is valuable. We understand each other’s needs on a micro-level (the pans are too sticky) and the macro-level (one side of the stack inherits more burden with our pan choice) and that’s helpful for framing future conversations about pans. That said, I don’t think we’re getting new pans any time soon. Such is life. Not all decisions are technical ones.

Raycast Focus works really well

My focus session called actually get some work done with gaming and social media blocked

This week Raycast released a new feature called Raycast Focus. This hyped up the Raycast superfans in my social sphere, so I tried it out and I must say that I’m impressed.

The timing couldn’t have been more perfect. Earlier this week I tried out a handful of browser extensions that would add some friction to social media sites. I have a bit of a bad habit where I open a new tab and instinctively type my favorite social sites: elk.zone, bsky.app, and of course youtube.com. These are mega time-wasters for me. As someone with ADHD these sites are basically dopamine tar pits for my attention.

Videos are an obvious stumbling block, but my biggest pain point is clicking on articles and filling up a couple browsers worth of tabs such that it occupies my brain RAM and I can’t focus on my next task until I clear out my tabs. Even with medication, when the attention ship turns, it can be difficult to steer it back on track. Self-control is great, but the easiest way to avoid distraction is to cut the dopamine off at the source; turn the faucet off at the wall and put child locks on the cabinet. You can still turn it back on, but adding friction to the process makes it a more intentional act of defiance.

Raycast Focus adds the right amount of friction. When you enter a session you can choose what types of apps and websites you want to restrict. If you try to open a tab you’ll get a friendly roadblock. You can still enter the site if necessary but you have to click and hold a button for 3 seconds which is enough time for your brain to reassess if this visit is necessary.

Another positive of Raycast Focus is that it’s an OS level tool. I don’t need different tools to limit apps and websites, it’s all under one roof. I already have muscle memory using Raycast to launch apps so it’s easy to add Raycast Focus to my workflow. And there’s something nice about my distraction launcher also being my distraction governor.

Your mileage may vary, but Raycast Focus is working well for me (almost too well). I feel more productive and sometimes you need to feel productive for your own sake, not your employer’s. Whether it’s your process, your tooling, your calendar, or your own brain working against you, it’s worth finding new strategies to improve your workdays. I’m even using it right now to focus on finishing this blog post and… uh… it worked!

Enhancing the Experience of Using AI

AI opens new horizons for UX designers. Explore the shift from traditional interfaces to innovative human-AI experiences.

The whole world is whining

For 25 years now, the Edelman PR company has issued its Trust Barometer. This year, it’s all about grievances. It’s Festivus every day, the world around. Six in 10 people in the survey “hold grievances against business, government, and the rich.” Only 36% worldwide — 30% in the US, 14% in Germany, 17% in the UK — believe the […]

The post The whole world is whining appeared first on BuzzMachine.

American Hearts

Today I want to share with you a song that has stuck with me for a couple decades and has been a source of catharsis for shaking off that existential dread. I’m talking about Piebald’s 2002 single American Hearts. (video)

[Hook]
HEY! You're part of it
YEAH! You're part of it
HEY! You're part of it
YEAH! You're part of it

[Verse 1]
I walk the streets of a Carolina
Watching people pushing shopping carts
And there's a guy above me
And he's washing windows
Making ten bucks a pop
And he says to me...

[Hook]
HEY! You're part of it
YEAH! You're part of it
HEY! You're part of it
YEAH! You're part of it

[Verse 2]
And I say, "Sir, well have you heard that this country is unequal still?"
History continues itself
Continues itself
History continues itself
And I did not create the rules

From all I've heard
And all I've seen
This place has broken
My American heart
From all I've heard
And all I've seen
This place has broken
My American heart

[Hook]
HEY! You're part of it
YEAH! You're part of it
HEY! You're part of it
YEAH! You're part of it

From the first snap of the snare to the final piano chord the song grips you for the whole ride. The staccato bass line powers the song and surrounds itself in an envelope of noise from the dual guitars and a cacophony of drum hits. The lyrics and chord progressions are simple but together they produce something bigger. The song only has two major parts, but the way they drop instruments in and out it feels like four. And best of all, it makes you want to punch a hole in the sky.

Every so often – out of nowhere in the middle of my day when I’m feeling frustrated by a situation beyond my control – I’ll shout to myself “HEY! You’re part of it” as a little mantra to remind myself that, yes, I’m a participant in the democratic capitalist American experiment. I’m a participant in the prosperous parts as well as the unjust parts. I’m part of it. And due to America’s broad empire-like influence, you’re probably part of it or impacted by it too. And it breaks your heart at times.

My website has been gaslighting you

I have a confession to make. You probably sensed it, but weren’t able to articulate what was happening. Your loved ones think you’re losing your grasp on reality. For the last six months I’ve been incrementally changing the color scheme on my website every single day. I boiled you like a frog! Mu-wa-ha-ha. Don’t believe me? Try for yourself…

At the center of this CSS-trick is setting a --hue variable and rotating the hue about 1deg each day to make it 360º around the color wheel over the year. Because I like blue, I set the default --hue to 196 and add the current day’s --hue-rotate value to calculate my final --rotated-hue value.

--hue: 196;
--hue-rotate: <Floor ( CurrentDayOfYear * 365 / 360 )>; /* Math goes here */
--rotated-hue: calc(var(--hue) + var(--hue-rotate, 0)); /* Rotate it */

The math for the --hue-rotate isn’t that complex, but since CSS doesn’t have a Date() function, I set the initial --hue-rotate value inside my Liquid template when I generate the site with Jekyll.

{% assign yearProgress = 'now' | date: '%j' %}
<style>
  :root {
    --hue-rotate: {{ yearProgress | times: 360 | divided_by: 365 }};
  }
</style>

But I don’t post here every day, so I also update it with some JavaScript in the footer…

const dayOfYear = date => Math.floor(
  (date - new Date(date.getFullYear(), 0, 0)) / (1000 * 60 * 60 * 24)
);

const yearProgress = dayOfYear(new Date()) / 365;

document.documentElement.style.setProperty(
  '--hue-rotate', 
  Math.floor(yearProgress * 360)
);

Now my --rotated-hue value nudges itself every day starting from the base hue.

X-axis labelled “days of the year” and a y-axis labelled “hue”. The hue value starts in the middle of the y-axis and goes all the way up to the limit of 360 at half way through the year. Then it drops down vertically to zero and continues up at the same prior to the drop.

Background hue over time

I put --rotated-hue inside an hsl() and it worked okay, but was decidedly boring. I needed a way to make it more dynamic.

The next bit of magic was to use a slightly more complicated calc() function for the saturation value. Using some of the new CSS math functions, I take the cos() of the --rotated-hue to get a value between 1 and -1, then multiply that by 45% which is my “base saturation” for my light mode theme. That gives me a value between -45% and +45%, so I double it and add another 45% to avoid the gray zone of negative saturation.

:root {
  color-scheme: light dark;
  --hue: 196;
  --rotated-hue: calc(var(--starting-hue) + var(--hue-rotate, 0));
  --hue-rotate-deg: calc(var(--hue-rotate * 1deg)); /* Convert to degrees */
  --hue-rotate-wave: cos(var(--hue-rotate-deg)) /* Magic */
  
  --bg: hsl( 
      var(--rotated-hue)
      calc(45% * var(--hue-rotate-wave) + 45%) 
      96.5%
  );
}

That creates the following effect over time…

X-axis labelled days of the year and y-axis labelled saturation. An inverted parabola starts at 0.9 and dips down to zero in the middle of the year and then gently curves back up to 0.9

Background saturation over time

For my dark mode I wanted a darker website, so I lowered the base saturation to 25%

@media (prefers-color-scheme: dark) {
  :root {
    --bg: hsl( 
      var(--rotated-hue)
      calc(25% * var(--hue-rotate-wave) + 12.5%) 
      18.5%
    );
  }
}

Astute readers will notice I don’t add the full base saturation back to the value. This was intentional because as I slid the --hue value around I came across an ugly “background radiation” zone when --rotated-hue enters the green color space (h=75-115). For a month or two my site looked like dogshit. I minimized the undesired effect by letting it dip down into the gray in dark mode.

A shallower inverted parabola starts at 0.375 and dips down to -0.125 in the middle of the year and slopes back up.

Dark mode background saturation over time

As you can see in the chart above, lowering the base saturation creates a less dramatic wave function dipping below the 0% saturation. The resulting effect is that my light and dark mode now share the same --rotated-hue but have pretty different vibes. When I plot the two background saturations next to each other, you can see the relationship.

The previous two inverted parabolas layered on top of each other. The dark mode saturation curve sits below the light mode.

Light and dark mode background saturation over time

If someone asked me today “What color is your website?”, I sort of love the fact that I don’t know. In fact, I’d almost have to consult a chart on any given day…

The hue graph and hte background saturation curves overlayed on the same graph.

Hue, saturation, and lightness for light and dark mode over time.

Ah yeah. It makes perfect sense. It’s materialized color operating on the 49th vibration, you would make that conclusion walking down the street or going to the store.

Updating my accent color

The final step was improving my accent color. Finding a static color that had proper color contrast and worked well with every background color was difficult. I was hoping to find a shortcut but all roads led to making my accent color dynamic as well. How do I pick a color that works with every color? After some experiments, I leaned heavily on some third-grade art class color theory.

I found that rotating the --rotated-hue another 240º to get a triadic tone on the color wheel gave the accent color the best chance at standing out in both light and dark mode. You can see the relation to the background and accent hue when I plot them next to each other.

The previous background hue chart overlayed with the accent color hue that has the same curve but starts 120 points lower on the y-axis and follows the same zig zag diagonal pattern, but offset about 33%

Background and accent hue over time.

I decided to use oklch() instead of hsl() for my accent color because I wanted the vibrancy that can only come from the p3 color space.

--accent: oklch(
    75% 
    0.18
    calc(var(--rotated-hue) + 240) / 1
);

I tinkered with picking the color by hand so that I could try and maximize the number of days my accent color punches up into the p3 space.

Two color space representations next to each other. The first is the chroma value of 0.18 depicted by a rainbow gradient with red on left and violet on right but with a curving jagged peaks. A faint white line shows the boundary between rgb and p3 color space. Next is the hue of 196 representation but the slider has missing values where p3 is unable to render the color.

The oklch color graph from oklch.com for the accent color hue and chroma values

It’s more art than science here but I feel good about the results.

The accent color hue zig-zag graph with static chroma and lightness values forming horizontal lines near the bottom and top (respectively)

Accent Color (OKLCH)

Rotating colors is fun but not without its challenges

As far as challenges go, accessibility and proper color contrast is a concern. Contrast checkers don’t work the best with p3, but I’m sure that’s solvable. One challenge was my button text which I set in #FFFFFF in attempt to maximize contrast. It’s not perfect but it’s right more than its wrong. This is one place where Safari’s CSS color-contrast() would be welcome to have in all browsers.

I’ve also scoped my theme to two dynamic colors; adding more is difficult. I re-did my syntax highlighting theme and it’s doing okay (I used the other triadic tone), but more colors is more problems and the complexity balloons quick. Having some shades of gray in the style of Open Props would be helpful, so I may pursue that.

I’m happy with how it turned out but there’s plenty of room for improvement. I doubt I will ever stop obsessively tweaking the color formulas to get it juuuust right. One thing that bothers me now are the puke yellows in my accent color (like today’s) and the greens in the background color aren’t my favorite. I’m embracing the randomness, but I’d love a yellow like Piccalilli’s website. It might be possible to bump up the oklch() brightness in certain parts of the color journey, but requires more math.

It would also be awesome to figure out how to change colors over a custom gradient as opposed to the hue wheel. Could I use a step-frame animation but grab a point on a conic gradient? Hm…

Was it worth it? Did anyone notice? Yes, one person noticed. My coworker John is the only person who said anything. Good eye, John.

All said and done, I like my little rotating color scheme. It’s fun waking up and wondering what color my website is today. If you’re having fun with color on your website I’d love to see it. I want all the p3 inspiration I can get.

Chris’ Corner: HTML

HTML is fun to think about. The old classic battle of “HTML is a programming language” has surfaced in the pages of none other than WIRED magazine. I love this argument, not even for it’s merit, but for the absolutely certainty that you will get people coming out of the woodwork to tell you that […]

How the #BrokenTimes covers the fascist oligarchy

Two days to go until the fascist oligarchy comes to power in the United States and this is how our once-greatest newspaper, The New York Times, is covering what could end in the fall of American democracy. To The Times, all the world’s Trump’s stage and they’re merely spectators. On the socials, I started to […]

The post How the #BrokenTimes covers the fascist oligarchy appeared first on BuzzMachine.

Making "this" less annoying

Now that I have a job where I’m writing web components full time, I see the this keyword more than I ever have in my whole life. It’s not a problem, per se, but you can see how it’s a little repetitive. I started wondering what my options were to fix this minor annoyance and the ShopTalk Discord helped me find a simple way and an over-the-top way to fix my issue.

Simple way: Overriding VS Code theme color tokens

By default my Github Light theme makes this a bold dark blue color. I didn’t want to roll my own theme though to scratch this niche itch, so I dug in and found out you can override single tokens in VS Code. Handy. The documentation is a bit opaque but here’s what you need to do:

// settings.json
"editor.tokenColorCustomizations": {
  "textMateRules": [
    {
      "scope": "variable.language.this",
      "settings": {
        "foreground": "#b0b0b0"
      }
    }
  ]
},

Now my this looks like this…

the keyword this in code set in a light gray, almost illegible font color

It’s a calming sensation for me to have repetitive noise dimmed. I liked it so much I dimmed comments to match as well. I may even dim TypeScript because sometimes I wish I could hide the syntax, but keep the squiggles.

Over the top way: Replace this with a custom glyph

Changing colors is cool… but what if you could go one step further and replace this with an icon? What would an icon for this even look like?

I asked the ShopTalk Discord and got some interesting ideas like the “☝️” emoji, which I think is funny in an “I’m with stupid” t-shirt sort of way. Andrew Walpole took it to the next level and designed a custom glyph:

the letter of the word this arranged in a diamond pattern

Alan Smith then figured out how to use Glyphs Mini to add a custom ligature to an open source coding font. Andrew riffed on Alan’s work and exported a custom version of Fira Code with his custom glyph as a ligature. The last step was to install the font update my VS Code settings:

  "editor.fontFamily": "'Fira Code Ligged', monospace",
  "editor.fontLigatures": true

Now my code looks incredibly futuristic…

the this glyph replacing instances of the glyph keyword in code

Abusing typefaces to remove the repetitiveness of programming languages is fun. After seeing the icon in situ, the idea might be a smidge too wild for me due to reduced legibility. While I don’t use the custom glyph on the daily, this experiment does spark a deep desire in me to create a bunch of custom glyphs for common keywords so I can make JavaScript an entirely rune-based programming language.

Custom ligatures with CSS?

A wild idea, but it would be neat if you could create your own custom ligatures in CSS to avoid the need to re-bake custom fonts each time you have a niche typographic need. Here’s a pseudo-syntax of how that might work:

@font-face "Dave Hijinks" {
  match: "this.";
  replace: "☝️.";
}

@font-face "Cloud2Butts" {
  match: "cloud", "AI";
  replace: "butt", url(fart.svg);
}

body {
  font-face: "Dave Hijinks", "Cloud2Butt", sans-serif;
}

Anyways, it’s a thought. Not a serious proposal. This was a fun rabbit hole to travel down with some friends.

Make 2025 Your Year of Strategic UX Leadership

Design leaders: Stop getting caught in project details. Here's your 2025 checklist for proving UX value and raising your team's profile.

CSS Wish List 2025

Back in 2023, I belatedly jumped on the bandwagon of people posting their CSS wish lists for the coming year.  This year I’m doing all that again, less belatedly! (I didn’t do it last year because I couldn’t even.  Get it?) I started this post by looking at what I wished for a couple of […]

Chris’ Corner: User Control

Like Miriam Suzanne says: You’re allowed to have preferences. Set your preferences. I like the idea of controlling my own experience when browsing and using the web. Bump up that default font size, you’re worth it. Here’s another version of control. If you publish a truncated RSS feed on your site, but the site itself […]

2024 in review

2024 went fast, and this post looks back at some of the things that featured in another far too busy year. Work Life at Google has not got any less challenging or busy during 2024, but I’m proud of the things my team and I have achieved. Everything that ends up on web.dev or developer.chrome.com […]

Public speaking in 2024

In the before times—before COVID, before I was a Google employee, before the seismic shift my life took in 2020 and 2021—I travelled for around half of the year, speaking at conferences and leading workshops. These days, I don’t do as much speaking, but I get to do some, and I’ve had some great opportunities […]