Redefine Your UX Leadership: Crafting a Strategic Vision
Shape your UX role and strategy to drive real change in your organization.
Shape your UX role and strategy to drive real change in your organization.
Hereâs a post outlining all the great things you can do in mobile web browsers today: Your App Should Have Been A Website (And Probably Your Game Too):
Todayâs browsers are powerhouses. Notifications? Check. Offline mode? Check. Secure payments? Yep, theyâve got that too. And with technologies like WebAssembly and WebGPU, web games are catching up to native-level performance. In some cases, theyâre already there.
This is all true. But this post from John Gruber is equally true: One Bit of Anecdata That the Web Is Languishing Vis-Ã -Vis Native Mobile Apps:
I wonât hold up this one experience as a sign that the web is dying, but it sure seems to be languishing, especially for mobile devices.
As John points out, the problems arenât technical:
Thereâs absolutely no reason the mobile web experience shouldnât be fast, reliable, well-designed, and keep you logged in. If one of the two should suck, it should be the app that sucks and the website that works well. You shouldnât be expected to carry around a bundle of software from your utility company in your pocket. But itâs the other way around.
Heâs right. It makes no sense, but this is the reality.
Ten or fifteen years ago, the gap between the web and native apps on mobile was entirely technical. There were certain things that you just couldnât do in web browsers. Thatâs no longer the case now. The web caught up quite a while back.
But the experience of using websites on a mobile device is awful. Never mind the terrible performance penalties incurred by unnecessary frameworks and libraries like React and its ilk, thereâs the constant game of whack-a-mole with banners and overlays. Whatâs just about bearable in a large desktop viewport becomes intolerable on a small screen.
This is not a technical problem. This doesnât get solved by web standards. This is a cultural problem.
First of all, thereâs the business culture. If your business model depends on tracking people or pushing newsletter sign-ups, then itâs inevitable that your website will be shite on mobile.
Mind you, if your business model depends on tracking people, youâre more likely to try push people to download your native app. Like Cory Doctorow says:
50% of web users are running ad-blockers. 0% of app users are running ad-blockers, because adding a blocker to an app requires that you first remove its encryption, and that’s a felony (Jay Freeman calls this ‘felony contempt of business-model’).
Matt May brings up the same point in his guide, How to grey-rock Meta:
Remove Meta apps from your devices and use only the mobile web versions. Mobile apps have greater access to your personal data, provided the app requests those privileges, and Facebook and Instagram in particular (more so than WhatsApp, another Meta property) request the vast majority of those privileges. This includes precise GPS data on where you are, whether or not you are using the app.
Ironically, itâs the strength of the webâand web browsersâthat has led to such shitty mobile web experiences. The pretty decent security model on the web means that sites have to pester you.
Part of the reason why you donât see the same egregious over-use of pop-ups and overlays in native apps is that they arenât needed. If youâve installed the app, youâre already being tracked.
But when I describe the dreadful UX of most websites on mobile as a cultural problem, I donât just mean business culture.
Us, the people who make websites, designers and developers, weâre responsible for this too.
For all our talk of mobile-first design for the last fifteen years, we never really meant it, did we? Sure, we use media queries and other responsive techniques, but all weâve really done is make sure that a terrible experience fits on the screen.
As developers, Iâm sure we can tell ourselves all sorts of fairy tales about why itâs perfectly justified to make users on mobile networks download React, Tailwind, and megabytes more of third-party code.
As designers, Iâm sure we can tell ourselves all sorts of fairy tales about why intrusive pop-ups and overlays are the responsibility of some other department (as though users make any sort of distinction).
Worst of all, weâve spent the last fifteen years teaching users that if they want a good experience on their mobile device, they should look in an app store, not on the web.
Ask anyone about their experience of using websites on their mobile device. Theyâll tell you plenty of stories of how badly it sucks.
It doesnât matter that the web is the perfect medium for just-in-time delivery of information. It doesnât matter that web browsers can now do just about everything that native apps can do.
In many ways, I wish this were a technical problem. At least then we could lobby for some technical advancement that would fix this situation.
But this is not a technical problem. This is a people problem. Specifically, the people who make websites.
We fucked up. Badly. And I donât see any signs that things are going to change anytime soon.
But hey, websites on desktop are just great!
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, […]
From 2005 to 2015 Clearleft ran the dConstruct event here in Brighton (with one final anniversary event in 2022).
I had the great pleasure of curating dConstruct for a while. Iâm really proud of the line-ups I put together.
It wasnât your typical tech event, to put it mildy. You definitely werenât going to learn practical techniques to bring back into work on Monday morning. If anything, it was the kind of event that might convince you to quit your job on Monday morning.
The talks were design-informed, but with oodles of philosophy, culture and politics.
As you can imagine, thatâs not an easy sell. Hence why we stopped running the event. Itâs pretty hard to convince your boss to send you to a conference like that.
Sometimes I really miss it though. With everything going on in the tech world right now (and the world in general), it sure would be nice to get together in a room full of like-minded people to discuss the current situation.
Well, hereâs the funny thing. Thereâs a different Clearleft event happening next week. Research By The Sea. On the face of it, this doesnât sound much like dConstruct. But damn if Benjamin hasnât curated a line-up of talks that sound very dConstructy!
Those all sound like theyâd fit perfectly in the dConstruct archive.
Research By The Sea is most definitely not just for UX researchersâthis sounds to me like the event to attend if, like me, youâre alarmed by everything happening right now.
Next Thursday, February 27th, this is the place to be if youâve been missing dConstruct. See you there!
Let’s do some links to accessibility information I’ve saved, recently read, and thought were useful and insightful.
A couple of days ago I linked to a post by Robin Sloan called Is it okay?, saying:
Robin takes a fair and balanced look at the ethics of using large language models.
Thatâs how it came across to me: fair and balanced.
Robinâs central question is whether the current crop of large language models might one day lead to life-saving super-science, in which case, doesnât that outweigh the damage theyâre doing to our collective culture?
Baldur wrote a response entitled Knowledge tech thatâs subtly wrong is more dangerous than tech thatâs obviously wrong. (Or, where I disagree with Robin Sloan).
Baldur pointed out that one side of the scale that Robin is attempting to balance is based on pure science fiction:
There is no path from language modelling to super-science.
Robin responded pointing out that some things that we currently have would have seemed like science fiction a few years ago, right?
Well, no. Baldur debunks that in a post called Now Iâm disappointed.
(By the way, can I just point out how great it is to see a blog-to-blog conversation like this, regardless of how much they might be in disagreement.)
Baldur kept bringing the receipts. Thatâs when it struck me that Robinâs stance is largely based on vibes, whereas Baldurâs viewpoint is informed by facts on the ground.
In a way, theyâve got something in common. Theyâre both advocating for an interpretation of the precautionary principle, just from completely opposite ends.
Robinâs stance is that if these tools one day yield amazing scientific breakthroughs then thatâs reason enough to use them today. Itâs uncomfortably close to the reasoning of the effective accelerationist nutjobs, but in a much milder form.
Baldurâs stance is that because of the present harms being inflicted by current large language models, we should be slamming on the brakes. If anything, the harms are going to multiply, not magically reduce.
I have to say, Robinâs stance doesnât look nearly as fair and balanced as I initially thought. Iâm on Team Baldur.
Michelle also weighs in, pointing out the flaw in Robinâs thinking:
AI isnât LLMs. Or not just LLMs. Itâs plausible that AI (or more accurately, Machine Learning) could be a useful scientific tool, particularly when it comes to making sense of large datasets in a way no human could with any kind of accuracy, and many people are already deploying it for such purposes. This isnât entirely without risk (Iâll save that debate for another time), but in my opinion could feasibly constitute a legitimate application of AI.
LLMs are not this.
In other words, weâve got a language collision:
We call them âAIâ, we look at how much they can do today, and we draw a straight line to what we know of âAIâ in our science fiction.
This ridiculous situation couldâve been avoided if we had settled on a more accurate buzzword like âapplied statisticsâ instead of âAIâ.
Thereâs one other flaw in Robinâs reasoning. I donât think it follows that future improvements warrant present use. Quite the opposite:
The logic is completely backwards! If large language models are going to improve their ethical shortcomings (which is debatable, but letâs be generous), then thatâs all the more reason to avoid using the current crop of egregiously damaging tools.
You donât get companies to change their behaviour by rewarding them for it. If you really want better behaviour from the purveyors of generative tools, you should be boycotting the current offerings.
Anyway, this back-and-forth between Robin and Baldur (and Michelle) was interesting. But it all pales in comparison to the truth bomb that Miriam dropped in her post Tech continues to be political:
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.
Boom!
Maybe we should consider the beliefs and assumptions that have been built into a technology before we embrace it? But we often prefer to treat each new toy as as an abstract and unmotivated opportunity. If only the good people like ourselves would get involved early, we can surely teach everyone else to use it ethically!
You know what? I could quote every single line. Just go read the whole thing. Please.
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.
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 […]
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:
I would like such a system to model for two kinds of action:
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.
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.
I’ve found all of these useful at various points in the past couple of weeks:
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 […]
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.
Prioritize user-focused software procurement to boost productivity and ensure tools are usable and fit for your organization.
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 […]
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.
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.
With the release of a new Salter Cane album I figured it was high time to update the design of the bandâs website.
Hereâs the old version for reference. As you can see, thereâs a connection there in some of the design language. Even so, I decided to start completely from scratch.
I opened up a text editor and started writing HTML by hand. Same for the CSS. No templates. No build tools. No pipeline. Nothing. It was a blast!
And lest you think that sounds like a wasteful way of working, I pretty much had the website done in half a day.
Partly thatâs because you can do so much with so little in CSS these days. Custom properties for colours, spacing, and fluid typography (thanks to Utopia). Logical properties. View transitions. None of this takes much time at all.
Because I was using custom properties, it was a breeze to add a dark mode with prefers-color-scheme
. I think I might like the dark version more than the default.
The final stylesheet is pretty short. I didnât bother with any resets. Browsers are pretty consistent with their default styles nowadays. As long as youâve got some sensible settings on your body
element, the cascade will take care of a lot.
Thereâs one little CSS trick I think is pretty cleverâ¦
The background image is this image. As you can see, itâs a rectangle thatâs wider than it is tall. But the web pages are rectangles that are taller than they are wide.
So how I should I position the background image? Centred? Anchored to the top? Anchored to the bottom?
If you open up the website in Chrome (or Safari Technical Preview), youâll see that the background image is anchored to the top. But if you scroll down youâll see that the background image is now anchored to the bottom. The background position has changed somehow.
This isnât just on the home page. On any page, no matter how tall it is, the background image is anchored to the top when the top of the document is in the viewport, and itâs anchored to the bottom when you reach the bottom of the document.
In the past, this kind of thing mightâve been possible with some clever JavaScript that measured the height of the document and updated the background position every time a scroll event is triggered.
But I didnât need any JavaScript. This is a scroll-driven animation made with just a few lines of CSS.
@keyframes parallax {
from {
background-position: top center;
}
to {
background-position: bottom center;
}
}
@media (prefers-reduced-motion: no-preference) {
html {
animation: parallax auto ease;
animation-timeline: scroll();
}
}
}
This works as a nice bit of progressive enhancement: by default the background image stays anchored to the top of the viewport, which is fine.
Once the site was ready, I spent a bit more time sweating some details, like the responsive images on the home page.
But the biggest performance challenge wasnât something I had direct control over. Thereâs a Spotify embed on the home page. Ainât no party like a third party.
I could put loading="lazy"
on the iframe
but in this case, itâs pretty close to the top of document so itâs still going to start loading at the same time as some of my first-party assets.
I decided to try a little JavaScript library called âlazysizesâ. Normally this would ring alarm bells for me: solving a problem with third-party code by adding â¦more third-party code. But in this case, it really did the trick. The library is loading asynchronously (so it doesnât interfere with the more important assets) and only then does it start populating the iframe
.
This made a huge difference. The core web vitals went from being abysmal to being perfect.
Iâm pretty pleased with how the new website turned out.
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.
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 […]
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 […]
Back in July 2023 I went into the studio along with the rest of Salter Cane.
We had been practicing a whole lot of new songs for over a year beforehand. Now we were ready to record them.
We went in with a shared approach. We were going to record everything live. We were going to prioritise the feeling of a particular take over technical accuracy. And we werenât going to listen back to every takeâthat can really eat into the available time and energy.
This approach served us really well. We had an incredibly productive couple of days in the studio collaborating with Jake Rousham, who we had worked with on our previous album. We ended up recording eleven songs.
After that burst of activity, we took our time with the next steps. Chris recorded additional vocals for any songs that needed them. Then the process of mixing everything could start.
After that came the mastering. We hired Jon Sevinkâfiddler with the Levellers. He did a fantastic jobâthe difference was quite remarkable!
We decided to keep two songs in reserve to have a nine-song album that feels just the right length.
The album is called Deep Black Water. Itâs available now from all the usual digital outlets:
We decided not to make any CDs. We might make a vinyl version if enough people want it.
I really, really like how the album turned out. These are strong songs and I think we did them justice.
I hope youâll like it too.
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 […]
🎥 The War of Rohirrim — I was on a bit of a Lord of the Rings kick, reading the books then watching the Extended editions. So of course I had to see this. I tried to see in theaters but I just missed it, so streamed it. I thought it was good! A perfectly […]
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.
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 […]
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.
Iâve been tagged in a good olâ-fashioned memetic chain letter, first by Jon and then by Luke. Only by answering these questions can my soul find peaceâ¦
Why did you start blogging in the first place?
All the cool kids were doing it. I distinctly remember thinking it was far too late to start blogging. Clearly I had missed the boat. That was in the year 2001.
So if youâre ever thinking of starting something but you think it might be too late â¦it isnât.
Back then, I wrote:
Iâll try and post fairly regularly but I donât want to make any promises I canât keep.
Iâm glad I didnât commit myself but Iâm also glad that Iâm still posting 24 years later.
What platform are you using to manage your blog and why did you choose it? Have you blogged on other platforms before?
I use my own hand-cobbled mix of PHP and MySQL. Before that I had my own hand-cobbled mix of PHP and static XML files.
On the one hand, I wouldnât recommend anybody to do what Iâve done. Just use an off-the-shelf content management system and start publishing.
On the other hand, the code is still working fine decades later (with the occasional tweak) and the control freak in me likes knowing what every single line of code is doing.
Itâs very bare-bones though.
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 usually open a Mardown text editor and write in that. I use the Mac app Focused which was made by Realmac software. I donât think you can even get hold of it these days, but it does the job for me. Any Markdown text editor would do though.
Then I copy what Iâve written and paste it into the textarea
of my hand-cobbled CMS. Itâs pretty rare for me to write directly into that textarea
.
When do you feel most inspired to write?
When Iâm supposed to be doing something else.
Blogging is the greatest procrastination tool there is. Youâre skiving off doing the thing you should be doing, but then when youâve published the blog post, youâve actually done something constructive so you donât feel too bad about avoiding that thing you were supposed to be doing.
Sometimes it takes me a while to get around to posting something. I find myself blogging out loud to my friends, which is a sure sign that I need to sit down and bash out that blog post.
When thereâs something Iâm itching to write about but I havenât âround to it yet, it feels a bit like being constipated. Then, when I finally do publish that blog post, it feels like having a very satisfying bowel movement.
No doubt it reads like that too.
Do you publish immediately after writing, or do you let it simmer a bit as a draft?
I publish immediately. Iâve never kept drafts. Usually I donât even save theMarkdown file while Iâm writingâI open up the text editor, write the words, copy them, paste them into that textarea
and publish it. Often it takes me longer to think of a title than it takes to write the actual post.
I try to remind myself to read it through once to catch any typos, but sometimes I donât even do that. And you know what? Thatâs okay. Itâs the web. I can go back and edit it at any time. Besides, if I miss a typo, someone else will catch it and let me know.
Speaking for myself, putting something into a draft (or even just putting it on a to-do list) is a guarantee that itâll never get published. So I just write and publish. It works for me, though I totally understand that itâs not for everyone.
Whatâs your favourite post on your blog?
Iâve got a little section of ârecommended readingâ in the sidebar of my journal:
But Iâm not sure I could pick just one.
Iâm very proud of the time I wrote 100 posts in 100 days and each post was exactly 100 words long. That might be my favourite tag.
Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?
I like making little incremental changes. Usually this happens at Indie Web Camps. I add some little feature or tweak.
I definitely wonât be redesigning. But I might add another âskinâ or two. Iâve got one of those theme-switcher things, yâsee. It was like a little CSS Zen Garden before that existed. I quite like having redesigns that are cumulative instead of destructive.
Next?
You. Yes, you.
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!
There’s a classic old time tune “How Many Biscuits Can You Eat?”. I know it from The Freight Hoppers but it’s certainly much older than that. The answer? How many biscuits can you eat? 49 and a ham of meat. Obviously. Wait, did they say “a ham of meat”? Some renditions of the song just […]
AI opens new horizons for UX designers. Explore the shift from traditional interfaces to innovative human-AI experiences.
Iâm going to be hosting Research By The Sea on Thursday, February 27th right here in Brighton. Iâm getting very excited and nervous about it.
The nervousness is understandable. I want to do a good job. Hosting a conference is like officiating a wedding. You want to put people at ease and ensure everything goes smoothly. But you donât want to be the centre of attention. People arenât there to see you. This is not your day.
As the schedule has firmed up, my excitement has increased.
See, Iâm not a researcher. It would be perfectly understandable to expect this event to be about the ins and outs of various research techniques. But itâs become clear that that isnât what Benjamin has planned.
Just as any good researcher or designer goes below the surface to explore the root issues, Research By The Sea is going to go deep.
I mean, just take a look at what Steph will be covering:
Steph discusses approaches in speculative fiction, particularly in the Solarpunk genre, that can help ground our thinking, and provide usâas researchers and designersâtenets to consider our work, and, as humans, to strive towards a better future.
Sign me up!
Michaelâs talk covers something thatâs been on my mind a lot lately:
Michael will challenge the prevailing belief that as many people as possible must participate in our digital economies.
You just know that a talk called In defence of refusal isnât going to be your typical conference fare.
Then there are talks about accessibility and intersectionality, indigenous knowledge, designing communities, and navigating organisational complexity. And I positively squeeled with excitement when I read Cennyddâs talk description:
The world is crying out for new visions of the future: worlds in which technology is compassionate, not just profitable; where AI is responsible, not just powerful.
See? Itâs very much not just for researchers. This is going to be a fascinating day for anyone who values curiosity.
If thatâs you, you should grab a ticket. To sweeten the deal, use the discount code JOINJEREMY to get a chunky 20% of the price â £276 for a conference ticket instead of £345.
Be sure to nab your ticket before February 15th when the price ratchets up a notch.
And if you are a researcher, well, you really shouldnât miss this. Itâs kind of like when Iâve run Responsive Day Out and Patterns Day; sure, the talks are great, but half the value comes from being in the same space as other people who share your challenges and experiences. I know that makes it sound like a kind of group therapy, but thatâs because â¦well, it kind of is.
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.
The kid and I randomly started watching World’s Toughest Race: Eco-Challenge Fiji on Amazon Prime from 2020. 66 teams descend upon Fiji to compete in the most epic global adventure race ever attempted. Bear Grylls hosts this 11-day expedition that pushes competitors to their physical and emotional limits. We were both like whaaaaat when “Team […]
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.
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.
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…
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.
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.
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…
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.
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.
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.
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.
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.
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 […]
Iâve been reading lots of modern takes on Greek classics. So when I saw that there was going to be a short of run of Sophoclesâs Electra at Brightonâs Theatre Royal, I grabbed some tickets for the opening night.
With Brie Larson taking on the title role in this production, itâs bound to be popular.
I didnât know anything about this staging of the playâother than it was using the Anne Carson translationâwhich is how I like it. I didnât know if it was going to be modern, retro, classical or experimental.
It turned out to be kind of arty, but not in a good way. Arty like art school with all the clichés.
The production somehow managed to feel packed with gimmicks but also seriously underbaked at the same time. There must have a been a lot of âyes, andâ¦âs during the workshopping, but no subsequent round of âno, butâ¦âs. So we got lots of ideas thrown at the wall like spaghetti. Very few of them stuck.
Instead of enhancing the core textâwhich is, thankfully, indestructableâmost of the gimmicks lessened it. Itâs like they were afraid to let the play speak for itself and felt like they had to do stuff to it. Most of it ended up creating an emotional distance from the story and the characters.
It wasnât bad, per se, but it definitely wasnât good. It was distinctly mediocre.
Now, take all of this with a big pinch of salt because this is just my opinion. The very things that turned me off might tickle your fancy. Like the way it was half way to being a musical, with characters singing their dialogue in that monotone way that they do in Les Mis (but this is like Les really Mis). And the vocal effects that did nothing for me might be quite effective for you.
Even as I was watching it, I was thinking to myself, âWell, this isnât really for me, but I can kind of appreciate that theyâre trying to experiment.â
But then towards the end of the play, it went too far. Over the PA came samples of reporting of recent news stories; graphic, grisly, and crucially, real. If youâre going to attempt something like that, you need to earn it. Otherwise youâre just cheapening the real-world suffering. This play absolutely did not earn it.
Elektra has finished its run in Brighton and is now heading to London where itâs supposed to play until April. Iâm curious to see how it goes.
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.
It always annoys me when a politician is accused of âflip-floppingâ when they change their mind on something. Instead of admiring someone for being willing to re-examine previously-held beliefs, we lambast them. We admire conviction, even though thatâs a trait that has been at the root of historyâs worst attrocities.
When you look at the history of human progress, some of our greatest advances were made by people willing to question their beliefs. Prioritising data over opinion is what underpins the scientific method.
But I get it. It can be very uncomfortable to change your mind. Thereâs inevitably going to be some psychological resistance, a kind of inertia of opinion that favours the sunk cost of all the time youâve spent believing something.
I was thinking back to times when Iâve changed my opinion on something after being confronted with new evidence.
In my younger days, I was staunchly anti-nuclear power. It didnât help that in my younger days, nuclear power and nuclear weapons were conceptually linked in the public discourse. In the intervening years Iâve come to believe that nuclear power is far less destructive than fossil fuels. There are still a lot of issuesâin terms of cost and timeâwhich make nuclear less attractive than solar or wind, but I honestly canât reconcile someone claiming to be an environmentalist while simultaneously opposing nuclear power. The data just doesnât support that conclusion.
Similarly, I remember in the early 2000s being opposed to genetically-modified crops. But the more I looked into the facts, there was nothingâother than vibesâto bolster that opposition. And yet I know many people whoâve maintainted their opposition, often the same people who point to the scientific evidence when it comes to climate change. Itâs a strange kind of cognitive dissonance that would allow for that kind of cherry-picking.
There are other situations where Iâve gone more in the other directionâinitially positive, later negative. Googleâs AMP project is one example. It sounded okay to me at first. But as I got into the details, its fundamental unfairness couldnât be ignored.
I was fairly neutral on blockchains at first, at least from a technological perspective. There was even some initial promise of distributed data preservation. But over time my opinion went down, down, down.
Bitcoin, with its proof-of-work idiocy, is the poster-child of everything wrong with the reality of blockchains. The astoundingly wasteful energy consumption is just staggeringly pointless. Over time, any sufficiently wasteful project becomes indistinguishable from evil.
Speaking of energy usageâ¦
My feelings about large language models have been dominated by two massive elephants in the room. One is the completely unethical way that the training data has been acquired (by ripping off the work of people who never gave their permission). The other is the profligate energy usage in not just training these models, but also running queries on the network.
My opinion on the provenance of the training data hasnât changed. If anything, itâs hardened. I want us to fight back against this unethical harvesting by poisoning the well that the training data is drawing from.
But my opinion on the energy usage might just be swaying a little.
Michael Liebreich published an in-depth piece for Bloomberg last month called Generative AI â The Power and the Glory. He doesnât sugar-coat the problems with current and future levels of power consumption for large language models, but he also doesnât paint a completely bleak picture.
Effectively thereâs a yet-to-decided battle between Koomeyâs law and the Jevons paradox. Time will tell which way this will go.
The whole article is well worth a read. But what really gave me pause was a recent piece by Hannah Ritchie asking Whatâs the impact of artificial intelligence on energy demand?
When Hannah Ritchie speaks, I listen. And Iâm well aware of the irony there. Thatâs classic argument from authority, when the whole point of Hannah Ritchieâs work is that itâs the data that matters.
In any case, she does an excellent job of putting my current worries into a historical context, as well as laying out some potential futures.
Donât get me wrong, the energy demands of large language models are enormous and are only going to increase, but we may well see some compensatory efficiencies.
Personally, Iâd just like to see these tools charge a fair price for their usage. Right now theyâre being subsidised by venture capital. If people actually had to pay out of pocket for the energy used per query, weâd get a much better idea of how valuable these tools actually are to people.
Instead weâre seeing these tools being crammed into existing products regardless of whether anybody actually wants them (and in my anecdotal experience, most people resent this being forced on them).
Still, I thought it was worth making a note of how my opinion on the energy usage of large language models is open to change.
But I still wonât use one thatâs been trained on other peopleâs work without their permission.
Robin Rendle quoting Chris Armstrong: I have these two opposing thoughts: The difference, I suppose, is that a personal blog and a site designed to get people technical information, have different content strategy goals. There are tweener answers as well. Robb Knight has a thought: I like the idea of redirecting /now to the latest post tagged […]
When I was looking back at 2024, I mentioned that I didnât give a single conference talk (though I did host three conferencesâPatterns Day, CSS Day, and UX London).
I almost spoke at a conference though. I was all set to speak at an event in the Netherlands. But then the line-up was announced and I was kind of shocked at the lack of representation. The schedule was dominated by white dudes like me. There were just four women in a line-up of 30 speakers.
When I raised my concerns, I was told:
We did receive a lot of talks, but almost no women because there are almost no women in this kind of jobs.
Yikes! I withdrew my participation.
I wish I could say that it was one-off occurrence, but it just happened again.
I was looking forward to speaking at DevDays Europe. Iâve never been to Vilnius but Iâve heard itâs lovely.
Now, to be fair, I donât think the line-up is finalised, but itâs not looking good.
Once again, I raised my concerns. I was told:
Unfortunately, we do not get a lot of applications from women and have to work with what we have.
Even though I knew I was just proving Brandoliniâs law, I tried to point out the problems with that attitude (while also explaining that Iâve curated many confernce line-ups myself):
Itâs not really conference curation if you rely purely on whoever happens to submit a proposal. Surely you must accept some responsibility for ensuring a good diverse line-up?
The response began with:
I agree that itâs important to address the lack of diversity.
â¦but then went on:
I just wanted to share that the developer field as a whole tends to be male-dominated, not just among speakers but also attendees.
At this point, Iâm face-palming. I tried pointing out that there might just be a connection between the make-up of the attendees and the make-up of the speaker line-up. Heck, if I feel uncomfortable attending such a homogeneous conference, imagine what a woman developer would think!
Then they dropped the real clanger:
While we always aim for a diverse line-up, our main focus has been on ensuring high-quality presentations and providing the best experience for our audience.
Double-yikes! I tried to remain calm in my response. I asked them to stop and think about what they were implying. Theyâre literally setting up a dichotomy between having a diverse line-up and having a good line-up. Like itâs inconceivable you could have both. As though one must come at the expense of the other. Just think about the deeply embedded bias that would enable that kind of worldview.
Needless to say, I wonât be speaking at that event.
This is depressing. It feels like weâre backsliding to what conferences were like 15 years ago.
I canât help but spot the commonalaties between the offending events. Both of them have multiple tracks. Both of them have a policy of not paying their speakers. Both of them seem to think that opening up a form for people to submit proposals counts as curation. It doesnât.
Donât get me wrong. Having a call for proposals is great â¦as long as itâs part of an overall curation strategy that actually values diversity.
You can submit a proposal to speak at FFconf, for example. But Remy doesnât limit his options to what people submit. He puts a lot of work into creating a superb line-up that is always diverse, and always excellent.
By the way, you can also submit a proposal for UX London. Iâve had lots of submissions so far, but again, Iâm not going to limit my pool of potential speakers to just the people who know about that application form. That would be a classic example of the streetlight effect:
The streetlight effect, or the drunkard’s search principle, is a type of observational bias that occurs when people only search for something where it is easiest to look.
Itâs quite depressing to see this kind of minimal-viable conference curation result in such heavily skewed line-ups. Withdrawing from speaking at those events is literally the least I can do.
What Iâm looking for: at least 40% of speakers have to be women speaking on the subject of their expertise instead of being invited to present for the sake of adjusting the conference quotas. I want to see people of colour too. In an ideal scenario, Iâd like to see as many gender identities, ethnical backgrounds, ages and races as possible.
First, we had the Nest thermostat. Gotta have that, right? The first thermostat in the history of time that feels well-designed. Works great. Pleasure to use and look at. Then we got the smoke alarm. Why not — seems nice. Then we got a free Nest Mini as a promotion when Miranda went Android for […]
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.
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…
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.
this
with a custom glyphChanging 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:
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…
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.
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.
Rogue has a 1000LB Club. Find your cumulative total of a 1 Rep Max Bench/Squat/Deadlift in one hour I’m not particularly interested in actually doing it. You have to record a video with a bunch of rules and crap. But I heard about it years ago and the general challenge idea stuck in my head. […]
Steward Brand has talked about Pace Layering for a long time: Pace layers provide many-leveled corrective, stabilizing feedback throughout the system. It is in the contradictions between these layers that civilization finds its surest health. I propose six significant levels of pace and size in a robust and adaptable civilization With this example: The inner […]
My fiddle player friend Darin sent me this documentary about GB Grayson, which I enjoyed: The documentary talks about how very few people even recognize the name despite all of recorded tunes essentially becoming standards in today’s folk/bluegrass/old-time world and having been covered by extraordinarily huge artists. That’s true for me! I absolutely had never […]
Design leaders: Stop getting caught in project details. Here's your 2025 checklist for proving UX value and raising your team's profile.
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 […]
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 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 […]
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 […]
For last year’s check-in, I foreshadowed a year of changes for ol’ Dave Rupert and boy was I not kidding. New job, new car, new pets. But before we get into all that – for accountability’s sake – let’s check in on my resolutions from last year and see how I did…
Final score: 50%-ish. That’s better than I expected. What did I do with the other 50% of my time if I wasn’t crushing it on my SMART goals? Let’s see…
Finding a job dominated the first half of my year. After some ups and downs I ended up in a good place at Microsoft. There’s a lot of positives going from self-employment to the corporate world (hey! actual benefits! stocks even!) but also a lot of organizational bureaucracy that I’m not used to navigating. I’m happy with the work I’m doing and feel lucky to get to work on web components each day.
My wife and I’s trip to Pittsburgh for Frostapalooza was a big crescendo for the year. Months and months of practicing culminating in one big night. It’s hard to describe it other than some kind of nerd-flavored camp reunion but with guitars instead of computers. We had such a good time and the amount of music filling our house on a daily basis has increased ten-fold this year. For that I’m thankful.
I often judge years based on if we hit our health insurance deductible and we hit it again this year. A lot of medium grade background stress: job hunt stress, new job stress, healthcare stress, election stress, etc. Thankfully – and I could be basking in the limelight of a good Christmas holiday and a week off from work – I hardly remember that stress anymore. It feels like I’ve shedded those layers of anxiety.
With all the qualitative out of the way, let’s get more quantitative about what we did this year…
A pretty good year for me and it’d be great to maintain that pace next year. To be totally honest, my actual goal would be to do less next year. Sounds crazy, I know, numbers should only go up and to the right. But hear me out… what if they didn’t? Have we considered that option?
I didn’t play video games as much as I would have liked to this year, so I’ll need to remedy that. I’ve got a backlog brewing but I’m having a good time making games and that’s a time tradeoff I’m okay with. But from a “great writers read” perspective, I should play more games. Related, I had to quit late night gaming with the boys because it effected my sleep and stress levels, but I want to get back to that. AAA gaming is in a rough state though.
There’s five focus areas I’d like to pursue next year and I already have traction on most of these feel achievable, But I’ve been wrong about that in the past.
Seize work opportunities - It’s been a great first 7 months at Microsoft but I have some big projects shipping in the next quarter so I need to shift out of my “learning the ropes” mode into a more melee combat ready position.
Hunker down and be creative - I’m not excited about the state of the union right now, so I’m going to trust my instinct to burrow. I’ve got some apps, games, and shitty sci-fi ideas that I’d be happy to work on instead of doomscrolling the news. I feel okay about pursuing those ideas rather than getting mired in political headlines.
Slow down to 1x mode - The ability to consume books, podcasts, and videos at 2x is a super power but I feel a nudge to take life slower. Slowing down would hopefully increase the time-cost and make me more discerning about what I choose to consume. The fact that I view listening at 1x as a challenge tells me I should probably pursue it.
Join a club - Inspired by the documentary Join or Die, I think I need to join a club and participate in IRL more. Clubs give me an opportunity to burst my personal/internet bubble and meet people who don’t share my background, income, or political beliefs. But I can’t even think of what I’d want to do. Perhaps something hobby-related? Join a lodge? Volunteer at a food bank? I feel woefully unprepared that I don’t even have the beginning of an answer here.
Understand myself - Beyond work and side projects, the biggest project I’ll be undertaking in 2025 is going to be… me. Since the Summer, I’ve been on a mission to understand myself at a clinical level. Last year I lost a lot of weight, more than half of it has come back without much change in diet. I want to know what’s in this mountain of flesh and bones and brains that God gave me. I want to begin to untangle the Gordian Knot of Anxiety, Weight, and ADHD. This has meant seeing a new doctor, getting blood work done, seeing a therapist, evaluating medication, and a whole lot more. I even made it a “Project” in Notion so I’d actually follow through on it. My ideal outcome is to come up with a plan to get through the next five, ten, fifteen, thirty years and beyond. In the immediate future an unexpected medical malady has presented itself and I’ll probably have to undergo surgery next year.
I know some had an awful 2024. I’d say mine was hard but good over the long haul. 2025 seems primed to bring its own existential challenges and I hope you find shelter. Tech is still in shambles right now but I’m starting to see hints of the icy job market thawing, but I’m unsure if it will ever go back to “normal”. And politics… oof. We’re already seeing the outputs of the self-inflicted chaos machine. Keep in mind that chaos is the goal; chaos to exhaust and disarm us, to flood the zone with shit. So hold fast to your principles and conserve energy for the long haul. Keep your hand on the plow and keep your eyes on the prize. Hold on.
What a ride that was.
The post Valediction. appeared first on Jeffrey Zeldman Presents.
Hottest October on record. November weather was much nicer, but lacked the much needed rain. We now pass the solstice and crash into the new year without so much as a sneeze from the gods of winter. My son’s team took second in the Fall baseball championship game. My daughter’s cheer team won their first competition gaining them a bid to nationals in the spring. Exciting times in Rupert family sports, I tell ya.
Three major holidays have passed since the last update so I’m sure it’s going to be too much to distill, but I’ve tried to blog through the bigger vibes like my cat passing away, my ADHD diagnosis, and releasing some games. So with those abstracted out, let’s reminisce on the recent past…
The biggest event was my trip to Microsoft in November. It’s been nearly a decade since I’ve been to the Microsoft campus, but notably this is the first time I’ve met my new coworkers in person! I’m happy to report that my coworkers are all great people. Thankfully my small engineering team as well as the larger design organization is high functioning when it comes to hybrid/remote work, so I don’t feel left out of the on-premise centralized loop that I’ve felt in previous Microsoft engagements. My team made it easy to <slot>
(!!!) in and feel welcome.
An example, my sweet coworkers hung up a print out of my avatar in one of the conference rooms with a little speech bubble that says “I‘m here with OPINIONS” which I find endearing. The side bonus is that Teams the app sees the avatar and thinks its a person and will zoom-in on it in every meeting. My avatar is an ever-present participant in a lot of meetings to the extent that five different people walked up to me said “Oh, it’s the guy from the conference room!” which is probably the biggest payoff to a long running gag that I’ve seen in my lifetime.
We spent most days strategizing in conference rooms but also did morale building events. One highlight for me was our studio’s tour of the Microsoft Inclusive Tech Lab where I got to talk with Dave Dame. I’ve been a fan of his for awhile now, he has a way of communicating the need to reject “other-ism” that sticks with you. He shared with us some of the challenges he faces as a person with limited mobility and how AI is impacting his life for the better. One night a group of us remote and local employees went out for dinner and ate grasshoppers. Another highlight was sneaking into a demo day event where designers at Edge were prototyping in the browser with web components. This grinch’s heart grew three times that day.
Everyone apologized for the rain while I was there but I loved the soggy weather coming from six months of Texas heat. I found it nothing but charming. Redmond has grown up considerably in the decade since my last visit, and the Microsoft campus is almost unrecognizable to me. Redmond used to be a bunch of small one or two story buildings but now it’s all enormous five story buildings. Redmond was wooing me pretty hard though I won’t lie; next to my hotel was an outdoor mall that had an izakaya, a games shop, a guitar center, and an upscale Hobbytown with Gunpla! It felt like my own personal Disneyland generated from my search history.
Spent a lot of time with work folks, but I caught up with a couple old friends while I was there. One night I met up with Kyle who was the other engineer at Luro who now works at Amazon. We were long overdue to celebrate in person together and close a chapter on the two years of intense sprinting we did together at Luro. Then I got to see Kelly and Charles who I worked with through multi-year engagements on microsoft.com, it’s great to know other people at such a big place like Microsoft. And one night I snuck over to Fremont for a memorable night of playing vintage and indie arcade and pinball games with Adam Argyle. It’s good to have good friends from the internet.
All said, I think the main purpose of my trip – firm handshakes and letting my coworkers know I’m a real person – was a success. Hopefully, I’ll find myself in Redmond more often.
A speed run of other notable events but in the interest of time we’ll keep it brief:
Recapping three whole months isn’t fun, but spinning off some of the major events into their own posts was pretty efficient so I should do that more.
I’m sure this list is incomplete, but went down some rabbit trails researching health issues like my ADHD but a couple non-health issues as well.
I got hellbent on releasing some projects this quarter and feel accomplished even if they are small in scope.
I wrote about my little games workshop more in depth if you’re curious about the why or my process. I’m also play testing a game with the ShopTalk Discord and am slowly iterating towards a release.
Read a lot more than I expected. After multiple recommendations I finally started reading The Murderbot Diaries and holy cow, what a great series. Each book is like a little 150-page snack that I get to enjoy. It feels good to read (e-)paper books again too, not just audiobooks.
Finished
Started
Let’s take a look at what was on the ol’ boob tube.
Movies
TV
Podcasts
Recorded some great episodes of Shoptalk, chief among them was a live action role play episode of ShopTalk.
Cooled off on Gunpla but have got the bug to pick it back up as work becomes less busy. Exhausted by the slower process of the master grade format, I decided to go back to high grade models to get the passion back.
Renaming this category because technically work is open source a bit and that’s confusing, so I thought I’d make it more about growing and maintaining web objects.
Spent more time making games than playing games. My PC had a catastrophic BIOS update failure and the verdict’s still out but I might need to rebuild the whole thing.
Got an Anbernic RG35XX Plus pocket emulator for Christmas, so hopefully my vintage game plays list will grow.
I always promised myself that if I was ever unemployed that I’d make a video game. When life dealt me an unpaid work hiatus though, the last thing I wanted to do was code in my spare time1. I worried I would have to let that dream, that part of me, die on the vine. But as interviews started going well the desire to try my hand at making a game came back. And in true adult ADHD fashion I didn’t focus on one game, but rather made a half-dozen different games in different formats and three of those games have made it to the release stage. Here’s an overview of those games and a little background on how I manage to make them.
During my unpaid hiatus I found myself getting a lot of pleasure in the small things; seeing a cool bird, staring at trees, or watching animals be animal-like. To not lose sight of those moments and with a desire to replace my social media addiction, I made Mundango, a bingo game about noticing life’s small things.
The icon is a chill turtle because it invokes the feeling of going slow. The font is a playful little handwritten sans. And there’s a (Japan-inspired) minor pentatonic scale that plays as you check items off. I hope you enjoy it but more importantly I hope it nudges you (and myself) to stop doomscrolling on our phones so much and to start looking outside the windows a bit more often.
In January, the unemployment got to my head and I got inspired to make a role playing game called Hard Code & Soft Skills. It’s a workplace-themed2 clone of Lasers & Feelings, a one-pager by John Harper. The original game is loosely based on Star Trek, where you can use lasers or diplomacy to solve your problems. I wanted to flip that a bit and have the game world be a startup because tech needs to realize that soft skills are as valuable as code, so that’s my big social commentary.
It wasn’t labor intensive to clone the original game, but I put a lot of time into building a little one-page website with a character generator. It’s Astro and web components, if you’re curious. I also put a lot of mental energy in planning out the first episode of Hard Code & Soft Skills on Shop Talk. It went better than I could have imagined and what a thrill to get it out the door.
The pentatonic scale sound effects in Mundango were a hit with some folks, so I dug in and built a whole instrument that only plays pentatonic scales and called it Pentablaster! It took about a week and I’m pleased with how it turned out. It’s jammy and a little unique. I extended it to allow you to change the key and to choose which pentatonic scale you want to play.
There’s some features I’d like to add, but worry it’ll enter the “so complicated I don’t want to work on it anymore” paradox. I’ll park it for now, but I learned a lot about Tone.js in the process.
I went on a short bender learning about Solo RPGs (like Ronin) and that sparked an interest in trying my hand at making one. I challenged myself to prototype the game on pen and paper first to prove the game mechanics. After an evening of brainstorming, I devised a game system based on a standard 52-card deck of playing cards as a prototype. I play-tested it with my son and we both thought that I should make a mobile app version. After some nights and weekends, I had a rough alpha prototype.
I play-tested the game with friends in the ShopTalk Discord and I got great, actionable feedback. They confirmed my suspicion that the RNG (randomness) was too high, creating a lack of decision making agency and thereby ruining the fun. I made some tweaks and the second round of play-tests went much better. It’s feeling pretty good now, but I think there’s one more ingredient needed to tie it all together before public release.
Since acquiring a little yellow wind-up boi, it’s been a small dream to write a game for Playdate and I picked the idea that seemed like the easiest and most PlayDate’y and descoped the hell out of it so that I’d have an achievable goal. It’s an office-themed3 RPG type game.
After playing with Playdate’s web-based game editor Pulp and trying PulpScript, I felt the chafing of limitations and wanted to get closer to the metal. I watched every one of SquidGod’s Development Tutorials and decided to download the Playdate SDK and write the game in Lua. This is my first time writing Lua and it’s been interesting because everything in Lua is a table: Arrays are tables, Dictionaries are tables, Objects are tables… tables all the way down. That takes some “undoing” of prior programming best practices to feel comfortable but after awhile you learn to embrace the chaos and for-loopedness.
To short cut some of the player controllers and level building I picked Cotton, a Lua-based framework for Playdate. Cotton uses the LDtk map editor for easier map making and that was a feature I was looking forward to using. However, I encountered a bug somewhere between the framework and LDtk. If I updated the map, my player could no longer get to a different room. Insecurity started to set in:
Feedback from the Playdate Dev Discord was “Last commit is 2 years ago, project’s dead” and “Use [Framework X] instead”… 😮💨 Ugh. I thought only JavaScript dorks did this but apparently Lua dorks do it too. I understand they’re trying to be a version of helpful; but this is terrible advice for someone who is learning. “You need to start over” or in video game parlance “The Princess is in another castle” kills the dopamine rush needed when learning something new.
But I didn’t give up. And after many shower thoughts, I mustered up the energy to do some good ol’ fashioned debugging. The first step was step-by-step isolation where I manually diff’d thousands of lines of JSON line-by-line. That one step taught me there was a change in the exported JSON somewhere between the version of LDtk that Cotton used (v1.3) and the latest version of LDtk (v1.5.3). The primary key for joining map tiles no longer exists in v1.5.3. Then I followed the breadcrumb trail of how Cotton imports LDtk files and I fixed the bug by creating a new table (because Lua) to act as a join table for the neighboring map tiles.
I was able to finish my core game loop and I’m proud of that, but fixing a framework level bug cut the wind out of my sails. I may PR the bug fix… but it’s more of a patch job than a holistic fix and I’m unsure if the author of Cotton is even interested in supporting that on their abandoned project.
Will this game ever come out? I hope so, but it’s emotionally hard to pick up after fighting with it so much. If I buckled down, built some assets, and wrote more NPC dialog I bet I could finish it in a couple human weeks of work. Perhaps I could outsource the asset creation.
I make my games after the kids and spouse go to bed or while the TV runs mindlessly. In some ways I’m borrowing from my own mental health staying up late tinkering with little apps that I’m going to give away for free. But these ideas all occupy brain RAM, so it feels good to chip away at ideas and get them out the door, to make room for more ideas, to chip away at ideas, to get them out the door… it’s a vicious cycle, but I think a net positive for my mental health.
To hedge against wasting my spare time, I get prototypes out for review as soon as possible to gauge interest and invest accordingly. Shopping prototypes curbs emotional over-investment in an idea. Time builds attachment to bad ideas, making them seem good and grander in your head than reality. If you build in secret too long, it ends in disappointment when the public doesn’t understand your genius you spent all your time on.
I default to web tech because it’s what I know best and staying in your wheelhouse means you can move faster with less mystery roadblocks (like the LDtk map issue above). But I’d like NOT WORK to not feel like work and see value in that, so this may change going forward.
At times I create artificial limitations (e.g., limit myself to a single asset pack) because if the scope is overly broad and infinite, that guarantees failure. Having rules, even if arbitrary, allows for play.
The last tool in the toolbelt is scoping the hell out of my ideas. When attention is your biggest limitation (e.g. ADHD) then keeping checkpoints small and achievable are critical. Then once you have the foundations established, do as much as time and ambition allow.
I have dozens of ideas kicking around in my head at all times, so my main issue is prioritization. Here’s the ideas that occupy a lot of brain RAM:
That’s a sampling of what’s going on up in the ol’ electric meatball. Not to be too macabre, but I’m not sure I have the lifespan left to get through even half of that short list. Hopefully there’s a banger billion dollar idea in there that allows me to retire and work on all the non-profitable dumb ideas.
While doing this for a living is far off and/or will never happen I am at least pleased that I lived up to the promise to myself to make games if I had spare time. I made games, smaller in scope than what I had originally imagined, but I’m comfortable with that given the timelines. No regrets there.
Risky as it may be, I may jump to a 3D engine because I’ve had a lot of fun building in environments like Unity in the past. That balloons the scope and raises the level of difficulty beyond my current expertise and it has never worked in the past… but perhaps this time it’ll be different! 😂
I’ve realized something obvious again, this time about CSS; that CSS wants to be a system. At the core of CSS is a series of cascading rules and classes marrying and mingling in an elegant symphony of style application. Dozens and dozens of declarative instructions for painting pixels on the screen come together in under a millisecond. Sometimes it creates magic, other times it creates memes.
At its core, CSS wants to be a system and – besides its quirky selector power ranking algorithm – it doesn’t come with one out of the box. CSS wants you to build a system with it. It wants styles to build up, not flatten down. It even has layers as a feature! You can start small with a minimalist reset or satisfy your inner typenerd with a typographic default and build up from there. You can make your own reset. You can establish your own naming convention. You can decide to nest or not. You can use IDs. You can use only-classes. You can even dip a toe into the Shadow DOM if you crave the dark arts. Hell, I encourage you to use !important
just to feel something.
Not everyone wants to conduct that symphony and I understand that. A nice thing about that CSS is that it’s sharable! Plenty of pre-built systems exist to let you offload that skill. Through the magic of copy-and-paste, you too can have high quality design! But don’t mistake a shortcut as the only valid option. We as humans and technologists like to compare objects and declare winners – to be kingmakers! – but it’s a mistake to shop at only one store and only eat meatballs despite the ubiquitous appeal of Scandinavian design.
CSS wants to be a system and it’s not an impossible task to make your own. Will there be mistakes and bad assumptions? Yeah. Will there be a junk.css
file? Probably. Will you commit CSS crimes? Indubitably. Is CSS just thousands of key-value pairs with random collisions implemented in an uneven distribution among a handful of different browsers? It sure is, but I wouldn’t have it any other way.
In all my years of programming I have never loved a language more than CSS. There’s no other programming language that sparks my brain and lights up my imagination like CSS. Even after thirty years, there’s a rush of adrenaline when I see a complex design and I wonder “How am I going to make that happen?” which leads me to “And how am I going to make that happen on a phone and older browsers?” That’s the fun part of the job. And it’s good to know that there are other people out there who are great at CSS, people who can build up and tear down these systems with ease, people I can siphon knowledge from and build up my own skills when a new challenge arises.
So cheers to the CSS folks, the tinkerers. Your obsessive animations, pixel pushing, and system building – both delicate and strong – are fun to see and experience.
There’s a First Public Working Draft of CSS Display 4, which includes the work on the new reading-flow property. The property aims to solve the issue where the source (and therefore tab) order of a page gets disconnected from layout when using CSS grid layout or flexbox. This is a problem I’ve been talking and […]
I’m in the middle of a design tokens project and I thought I’d share something I’m learning that is probably obvious to everyone else; every design token is a feature.
A token is a magical contract between design and engineering, if we agree to use the same name to abstractly refer to the same value, it will produce a desired outcome. That bridge alone is probably worth the investment, but tokens solve even more organizational problems. The mobile app and the website can look the same by sharing a single JSON file. But wait, there’s more! If the blue a different team chose is not blue enough for you, you can make your own blue and apply it at the global scope or the individual element scope. Tokens as an organizational feature are a powerful concept but there’s tons of nuance packed behind it.
Like features, too many tokens can bloat your system. I recently learned –because I’m lucky to work with people who work on browsers– there’s a not-so-theoretical limit where the browser starts taking a performance hit based purely on the number of CSS variables. There’s no hard upper limit on the number of variables (we drew a line at ~500) because the limit ultimately depends on the size and the depth of your DOM. Style recalcs and tree walking are expensive problems for a browser. Alias tokens like --foo: var(--bar)
compound the problem and the more static you can be, like --foo: #bada55
, the better. Infinite customizability and peak performance are often at odds.
Like features, too many tokens can create organizational problems! This is the opposite of what I said above, how can that be? It’s possible to generate enough tokens that they become their own hyperobject, impossible to comprehend from the outside, so well-meaning people eject from the system. Detached instances. One-offs. Snowflakes.
Like features, tokens can create little piles of technical debt. “Is anyone still using --color-beefcake-primary-2
?” you shout into the void of the team chat. No one responds because no one knows. The person who does know left the company five months ago. Alas, we’ll bolt on more until we find time to fix it. Always adding. Never subtracting.
Like features, some tokens are going to have a massive payoff if implemented and some tokens the user benefit is less clear. You’re passing organizational complexity on to the user. Like features, you can build over-complicated machinery around a simple concept like sharing values. Like features, people will build every part without considering whether they actually need each facet.
Generally speaking, if someone wants to implement hundreds or thousands of little features in an application, that’s probably a red flag. If-statements are expensive over their lifetime. But from my experience, a good system of tokens inside a cascade of meaningful componentry can make a product resonate with consistency across many surfaces, while providing just enough customizability to differentiate when necessary.
Discover how to optimize your web design workflow, boost productivity and deliver outstanding results for your clients.
I coded a thingy the other day and I made it a web component because it occurred to me that was probably the correct approach. Not to mention they are on the mind a bit with the news of React 19 dropping with full support. My component is content-heavy HTML with a smidge of dynamic […]
The role of design leaders is under threat. Companies are cutting back, and senior designers are often first to go. But there may be a solution worth considering.
A doctor told me to look into intermittent fasting. Not for weight loss, but for ADHD. There’s some new data that suggests a link between ADHD and insulin in the brain. Based on that science, intermittent fasting or a ketogenic diet –which can help improve insulin resistance– might help my brain. I’m a week into it and am seeing some weight loss, but it’s hard to tell with the ADHD without measuring my brainflorps per second. I might be more focused, but hunger and “hangry” bring their own distractions.
I’m skeptical, to say the least. Intermittent fasting makes frequent appearances in my YouTube shorts with balding Joe Rogan clones dressed in all black selling workout supplements. It has a whiff of being a cure-all. To counter that skepticism, I read a book called Life in the Fasting Lane co-authored by Dr Jason Fung, who was specifically recommended to me. It’s a mix of doctorly advice and testimonials from advocates who have had success with fasting. As scientific as the book tries to be, it undoes its own credibility pitching intermittent fasting with all the hallmarks of a fad elimination diet:
I do appreciate that the book calls out “Calories-In/Calories-Out” as a myth that works 1% of the time. But it’s hard to shake the feeling that eliminating meals or days worth of food isn’t a macro-version of calories-in/calories-out, where you measure calories in weeks instead of per meal. I suppose the key difference is the duration between meals allows my body to enter ketosis (read: a starving state) which will consume my excess fat stores instead of my morning breakfast tacos adding to those fat stores.
To be honest, I’m a good candidate for this fad diet. I can sustain myself on a couple meals a day. I could skip lunch most days. Skipping breakfast though is hard. Not putting creamer in my morning coffee is hard. Not having a little after dinner snack with the kids is hard. Not eating is not my favorite, but I’m going to trust the process for a bit and hopefully it’ll help a weary brain like mine.
Typography stuff! I can’t help it, it’s a part of me. I bookmark great looking new typefaces (according to me) when I see them released or are just seeing them for the first time. Here’s some! Roslindale I think they are kiping this slogan from Caslon and it’s awfully bold to do so. I’m cool […]
Tricking people into seeing unexpected content and converting some of them into customers is a tale as old as the web. It was the perfect model for the takeover.
The post Domain harvesting and the Twitter long game in retrospect appeared first on Jeffrey Zeldman Presents.
This month I got my official diagnosis for Adult ADHD. It’s fun to share experiences with friends. While ADHD presents some new waters to navigate, it isn’t exactly news to me. Thanks to Dr. TikTok, I’ve suspected this outcome for a few years now. It’s nice to have a proper diagnosis though. If I’m struggling to focus or feeling overwhelmed, I know the probable root cause is how my brain processes dopamine and norepinephrine impacting my executive function.
There are different flavors of ADHD, so I can only describe my experience:
I’ve developed a lot of coping and masking strategies over the years that have allowed me to maintain a decent level of productivity. In my 20s I used to manage this by brute force and caffeine. But now that I’m in my 40s with a lot more responsibilities and spinning plates, I feel the reins slipping a bit. To help with this, I’m trying out a non-stimulant sNRI medication that tries to repair that norepinephrine processing. It takes a week or so to fully activate so it’s not an instant fix, and to be honest I don’t quite know what to expect. I’m excited to see if it makes a difference but even if it doesn’t I’m happy to be on a journey.
Anyways, cheers to unique brains.
Recent discussions about UX's future paint a gloomy picture, but the reality is more nuanced. Here's why there's still plenty of reason for optimism.
Of books and conferences past: A maker looks back on things well-made but no longer with us.
The post Of Books and Conferences Past appeared first on Jeffrey Zeldman Presents.
We’ve been using Cascade Layers in our CSS here at CodePen quite a bit lately. A pretty clear non-complicated use case is that we tend to apply one class to stuff. That includes a “library” component. So imagine the prototypical Button, which would have a .button selector applying styling to it. But this library component […]
Saturday, 30 November 2024, marks the 17th annual Blue Beanie Day celebration. It’s hard to believe, but web standards fan Douglas Vos conceived of this holiday way back in ’07: The origin of the name of the holiday is the image of Jeffrey Zeldman on the cover of his book wearing a blue knit cap.[7][8][9] Over the […]
The post How to Join Blue Beanie Day: Wear and Share! appeared first on Jeffrey Zeldman Presents.
My daughter and I have three cats—all rescues: There’s Snow White, our 16-year-old queen and my daughter’s consigliere, who, despite requiring thrice-a-week medication injections to keep her kidneys functioning, rules this place absolutely. There’s subtle Mango, whose first year of life involved struggling to survive—and avoid human contact—in a weedy vacant lot adjoining the United Nations […]
The post Lessons from Cats: Jasper’s Clever Cleanup Routine appeared first on Jeffrey Zeldman Presents.
Discover how AI, AR, and market shifts will reshape UX in the coming year. Get ready for the UX design trends of 2025.
Learn how to build a targeted sales funnel, leverage email marketing and nurture long-lasting client relationships.
The people who found you in the alley called you Cowboy. We called you Moogs, Moogers, Moogerton, Mr Moogs, Meesta, Two Meestas, Beef, Roast Beef, Roast Beefy Weefy, Kitty, Kitty cat, Long cat, Kitty kitty, Pretty kitty, and Meow meow. Those were all your names.
Today we had to say goodbye to our cat Moogs (pronounced “Moo” like the cow says + “gs”). He was nearly 19 years old, which is about all you can ask for from a great cat. A senior cat with a thyroid problem – so his passing is not an incredible surprise – but he took a sudden downturn over the weekend. He died in his sleep.
My wife adopted him before we were even dating in 2006. I never had a cat, was more of a dog person, and I made it my mission to befriend the cat to win her over. I succeeded in my goal and he let me hold him like a baby. Little did I know he would spend the next 18 years of my life with him sitting on my body for warmth and waking me up at six in the morning.
When we lived in LA he would perch majestically on the sills of the open windows basking in the warm sun’s rays because that’s how LA’s perfect weather works. He’d hop in-and-out of the house, hunting, cruising, and getting into tussles with the other alley cats. We paid a lot in vet bills but he had a good life jumping along the craftsman rooftops.
He didn’t enjoy moving to Austin, he howled the whole 1400 mile journey and when we got to Austin, he hid himself in the exposed soffit of our mid-remodel kitchen. After two weeks he came out and got used to the new home and got comfortable being an indoor-outdoor cat again. He’d spend days in our neighbor Cleo’s wisteria bushes hunting small birds. He was there when we adopted our dog Rudy and learned to hold his own against dogs. And he was there when we brought our babies home from the hospital and he learned to tolerate toddlers.
When we moved a second time to North Austin, he didn’t like that move either. He quit going outside as much and I think after that his quality of life started to decline. Three years ago, I noticed he was losing weight, felt like a skeleton with fur, and was extra ornery about food. The vet diagnosed him with hyperthyroidism and he needed to be on medication.
Moogs was sweet and friendly – well, as friendly as cats can be. When guests came over he would saunter into the room and find the person most allergic to cats and nuzzle them. He had an uncanny talent for that. He was social, but not. He would give an affectionate little headbutt whenever he wanted attention. He’d knead his claws into your thigh when you tried to watch television. And he’d prowl the house at night and wake you up with a butthole to the face. Cats, man. Cats.
Moogs was an incredible cat. My first and probably only cat, to be honest. I won’t miss his howls for breakfast each morning, but I will miss the soft brushes against my legs to say hello. He was a part of our family from the beginning, it will be different without him.
Let’s talk HTML this week. The 2024 HTML Survey results are published, so that’s as good a reason as any. I’m a bit too daft to extract anything terribly interesting from the results themselves, but the survey itself acts as a sort of list of things we all might do well to at least be […]