Latest Posts (20 found)

Alternative thoughts

My regular schedule of CSS and HTML tips will return after this brief look at the sorry state of the web and tech industry. It’s grim. Our press secretary, Sean Spicer, gave alternative facts to that… Alternative facts - Kellyanne Conway (Wikipedia) Following the 2017 inauguration of Mr “grab ’em by the pussy” the world was treated to a deluge of alternative facts . Few were prepared for the new era of “you can just say things” . The rule books were torn to shreds. Whilst liberals were angsting over decorum, the techno-fascists were rising up. When America decided for a second time that a pedo-in-chief was preferable to a woman, all pretence fell away . The AI industrial complex is the culmination of tech, money, and power that the Musk’s and Thiel’s of the world were waiting for. For a monthly subscription users can disengage their brain and choose alternative thoughts to escape a dystopia they voted for. The endgame of techno-facism is more money, more power; a price tag on humanity . At this point, those who work in tech and refuse to acknowledge the harm and the violence are hopelessly naive and/or complicit in their selfishness. Violence is more than just hitting people. Taking away people’s agency is violence, exposing people to suffering is violence. Violence has many shapes and forms. And “AI” needs an acceptance of endless amounts of violence AI as a Fascist Artifact - Jürgen Geuter I can understand why someone doomscrolling slop-tok shorts might not pause to consider the effect of their implicit acceptance. But the “it’s just a tool” crowd in the tech industry — well, is it wilful ignorance or feeble apologism? Why is it that those most embedded in tech are most eager to push the AI narrative? Hint: they’re almost all looking to get in on the grift. Sell shovels. Sell guides on how to shovel. Sell B2B automated shovelling logistics. All the while enriching the pockets of the techno-facists looking to control those hooked on tokens. It’s quite a tool. A tool that has the tech industry clapping like sea lions and giddily proclaiming there are five lights . Apparently the public at large don’t yearn for automation . Let’s hope those across the pond can connect the red flags before we get Vance/Kirk 2028. Software “engineers” have been more than happy to pull the one-armed code bandit and recite the 10× productivity mantra. What incentive do they have to care when they’re strongly encouraged to gamble on their employer’s dime. More. Faster. Burn those tokens! Stop thinking, your context is getting cold! They get subsidised rates and front row seats to the looming collapse. Collapse it assuredly will. The wheels are falling off . Are the thrills of addiction waning, too? Anecdotally, I’ve seen an increase in developers becoming bored with their new toys. When the bubble bursts it will be too late for many. The AI mandate has been busy destroying the careers and opportunities of those who still care. Craig Cook said “fuck AI” and quit. The fantasy of AI efficiency has rapidly devoured the brains of every Silicon Valley MBA prick like a body-snatcher invasion. Predator-class oligarchs are positively horny to replace their annoying human workforces with a compliant, manufactured slave race that doesn’t demand a living wage and won’t whine about their “health” and “dignity” and “fundamental rights.” The End - Craig Cook Ky Decker quit too, questioning whether they belong in tech anymore. Tech organizations have now given up on pushing back against an unethical and violent administration, deciding that it is in their best business interest to flatter the president’s ego with gold trophies and pandering praise. Elon Musk and the “Department of Government Efficiency” took a sledgehammer to 18F and replaced it with National Design Studio, a propaganda shop whose main talent is building expensive and inaccessible landing pages. Do I belong in tech anymore? - Ky Decker These are just two stories from those brave enough to speak out. The usual “you’re prompting it wrong” commenters on Hacker News and Lobste.rs were atypically sympathetic to Ky’s plight. Perhaps reality is sinking in? Or the reply-bots were offline. That’s a good sign I guess. Nevertheless, the ostracising and harassment towards a “no thanks” stance on AI and techno-facism remains a real problem (source: my inbox). I don’t care about the anonymous cowards that think I’ll read one thousand words of LLM-extruded abuse after they gave the game away in the subject line. They exist, but I’m talking about the private conversations I’ve had with those suffering the burnout alone. They are trapped in jobs. They’re forced to bear the alternative thoughts proxied via the mouth holes of their managers. They are afraid to speak up. It takes some combination of financial privilege, mental exhaustion, or foolhardiness to quit a job when the market is so bleak. I respect those that do but I don’t blame anyone for bunkering down. Wait it out is practical advice but it doesn’t ease the anxiety. “Preserve your mental health” is key but what that means is different for each of us. And throughout all of this, I felt such an energetic sense of purpose and activation in creating new music for the first time in over a decade that I also felt I had rediscovered my true self. I released a song for the first time in 15 years - Salma Alam-Naylor Salma Alam-Naylor released a certified banger: reject the machine . Salma created this music to fight against an abusive relationship with the technology industry. I see this passion project as a middle finger to the aesthetics of fascism . To me it’s a reminder that by rejecting the alternative thoughts peddled by techno-facists we deny what they really want: control. I’ve been inspired to continue pursuing my own creativity . Will that bear fruit? It doesn’t matter. It’s my life and I will remain in control. Thanks for reading! Follow me on Mastodon and Bluesky . Subscribe to my Blog and Notes or Combined feeds.

0 views
Unsung Today

UI art from 4096

4096 is a Russian UI artist (I just made up that title) who creates interesting audio-visual mashups. Here are some of the best ones: Interfaces of rhythm games (like Guitar Hero): = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt1.1600w.avif" type="image/avif"> Windows startup sounds , incl. fun hi-def reimagining of their splash screens: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt2.1600w.avif" type="image/avif"> Windows error messages : = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/ui-art-from-4096/yt3.1600w.avif" type="image/avif"> If this looks like fun, check out the rest of their work , including Windows 95 mobile and the art of blank VHS tape boxes . #art #games #windows #youtube

0 views
Unsung Today

Tactical dark modes

Before dark mode became mainstream in the late 2010s, there were two main customers of dark UI themes: programming and photo/​video production. But, to the best of my knowledge, they arrived at that preference from two very different angles. Programmers’ fondness for dark mode was a result of decades of bad display technologies. The early CRTs were so awful, the burn-in risks so real, and the pixels so fuzzy and headache-inducing, that you wanted to see as little screen light up as possible – hence, defaulting to black background for everything computers did. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/1.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/2.1600w.avif" type="image/avif"> These challenges were there all the way through the 1980s, really, teaching generations of coders that computers meant light letters on dark backgrounds. Games moved away from being “ in space ” or “ at night ” as quickly as they could, text editing and spreadsheets went for paper-like livery soon after that, but programming never meaningfully existed on paper, and so the skeuomorphic pull wasn’t really there. (Have you ever heard of a term “ reverse video ”? What’s kind of confusing about it is that its meaning was reversed around that time.) AV professionals took a different route. They already had CRT calibration, gray walls, and monitor hoods so that light from outside wouldn’t contaminate content colors – and when computer UI started appearing on those CRTs, it was likewise best to keep it as dark and as neutral as possible. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/3.1600w.avif" type="image/avif"> Below are pictures of Avid Composer in 1990, Pixar’s RenderMan in 1995, and the first versions of Lightroom in 2006 where you can see the interface trying to at least gesture toward a dark theme: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/4.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/5.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/6.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/6.1600w.avif" type="image/avif"> Today, things are more flexible. Many people prefer one theme over the other for any of many legitimate reasons, most leave dark theming synced to daylight, and display technology can handle all themes so well that it jumped ahead of our brains, which still have some interesting asymmetries in processing light shapes next to dark ones. As users celebrated dark mode appearing in popular apps and services in the 2010s, some had to catch up the other way: Apple TV added light mode (for some reason) in 2017, and Affinity apps celebrated new light UI option just earlier this year . = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/7.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/7.1600w.avif" type="image/avif"> Most programming text editors still default to dark, but allow you to switch; as a software category they were probably the first to fully embrace color theming. But what led me to writing this post was a delightful discovery today of this setting: = 3x)" srcset="https://unsung.aresluna.org/_media/tactical-dark-modes/8-framed.1600w.avif" type="image/avif"> Why, of all apps, would iOS Photos allow you to switch to dark mode, and only while editing to boot? I think this might be because of the above tradition of pro AV apps, where we learned it’s good for visuals to be surrounded by black; a little nod to its earlier professional roots – similar, perhaps, to the story of the Clear button in calculators . But I had two more thoughts. First, for all the reasons above, to me at least dark mode still has connotations of “professionalism” and toggling the option makes me feel I’m a bad-ass pro whenever I’m editing a photo. I wonder if others also feel that way, too. Second, dark mode looks different . Dark UI only when editing means it’s easier to spot whether I’m editing or just browsing, and be ever so slightly better oriented. (In general, apps today are much more similar-looking, and I’m surprised neither iOS nor Android doesn’t allow you to switch the theme per app , just so it’s easier to know where you are as you move around quickly.) #colors #details #ios

0 views

The Design-Minded Engineer

In 2002, I was a few weeks into a new role, my second since completing my degree two years earlier. I was a frontend engineer at AKQA , a creative agency in London. I’d just finished one of my first projects, building out a new page for a client, and I thought it looked great. So I told the designer it was done. A while later, I heard him in the engineering room. Den? Where’s Den? He came over to my desk and opened Photoshop. He placed a screenshot of my build on one layer and his original design on another, dropped the opacity to 50%, and let me see the difference for myself. Everything was off. Spacing, alignment, type rendering, visual weight. Not by miles, but by enough. Enough that the thing I’d built felt different from the thing he’d designed, even though I’d have sworn they were identical. I was embarrassed. I was so sure it was done. Something rewired in my brain that day. Not a new skill, exactly, but a new way of seeing. I had started to become an engineer who could see what I’d built through the eyes of the designer, not just through my own. The gap between what designers intend and what engineers ship is one of the oldest problems in our industry, and it has defined my career since that day. I’ve come to believe it’s the most undervalued skill in software engineering. Brian Lovin, currently at Notion, wrote recently about the difficulty of hiring what he called “design-minded frontend engineers.” The struggle he describes is widely shared. There are engineers who can code, and there are designers who can design, but the engineers who can honor design intent while building the real product? That pool is vanishingly small. Lovin’s framing was about frontend engineers specifically, but the gap he’s describing isn’t a web problem; it’s a general UI problem. Mobile engineers ship apps that drift from their designs. Embedded engineers build interfaces for cars, appliances, ATMs, point-of-sale terminals, and medical devices where a misjudged tap target has real-world consequences. Anywhere a human touches software, someone has to close the space between what was designed and what gets built, and that someone is an engineer regardless of what platform they work on. What’s striking about this gap is how much has been written about it already, and how little has changed. Designers have been naming the problem for years: posts about engineers breaking their designs , articles about the handoff process , and conference talks about the collaboration breakdown . The designer’s perspective on this is a well-established literature. But that literature is written by designers, for designers, and no amount of designers talking to each other about the problem has fixed it, because fixing it was never something designers could do alone. The engineer is the other half of the conversation, and the engineer is the half that has to change. And here’s the thing: this isn’t a new problem that appeared with the rise of design systems or component libraries. It’s been there since the first time a designer handed a mockup to an engineer and got something back that felt almost right but not quite. The gap between the mockup and the shipped product is an engineering problem, and it’s a problem with a solution. The skills required to close it can be taught. The thing to understand about design is that it isn’t the mockup, it’s the experience the person has when they’re using the shipped product. That experience is built by engineers from what designers describe and intend. The mockup is a promise, the feel is what actually ships. One distinction is the Design Engineer . This is someone who occupies a hybrid role: they design and they build. Matthias Ott has written persuasively about design engineering as the structural fix for the design-implementation gap : a role that holds both disciplines at once and makes the gap stop forming in the first place. Companies like Linear and Vercel have made the role famous, and I’m in awe of the people doing it; they are genuinely talented at both sides. But it’s also a luxury solution. Most companies can’t hire for it, and even at companies that do, many design engineers typically focus on design systems or high-fidelity components. Somebody still has to take those components and build the actual product with care. Ott’s prescription is a role; mine is a capability. The role is valuable where companies can hire for it, but the capability is what scales to the rest of us. That somebody is the design-minded engineer . That’s not a new job title; it’s a way of working, of engineering, of caring about how the product looks and feels. A design-minded engineer is not a designer, and their task is not to originate design decisions but to apply and extrapolate them. The goal is for the designer to look at the shipped product and not be able to tell where their design file ended and the engineer’s judgment began. The highest compliment a design-minded engineer can receive is silence from the designer, because silence means you got it right. This isn’t about engineers becoming designers either. Designers should still design, and engineers still build. But the engineer who builds with design judgment ships a different product than the engineer who builds without it. Apply and extrapolate, don’t originate. That’s design-minded engineering. Over the course of my career, from agency work at AKQA for Nike and Ferrari, to global e-commerce at Volvo, to my accessibility and animation work at Canva, I’ve developed a framework for how engineers should engage with design. It comes down to three lenses: 1. User behavior. What will people actually do with this? Not what the mockup assumes, but what happens in real conditions. The designer typically designs for one user in one ideal state, while the engineer knows that localized strings reshape layouts in ways the original mockup didn’t account for, that right-to-left languages flip everything, that users will hit this screen on a train with one bar of signal halfway through a checkout flow. The design-minded engineer sees those realities and addresses them before they become bugs. 2. Performance. What’s the hidden cost the user pays that the mockup can’t show? A prototype can promise buttery smooth interactions, but if the shipped product has 80ms input latency instead of 16ms, users feel the difference even if they can’t articulate it. Samsung famously copied Apple’s pinch-to-zoom gesture, matching the visual design almost exactly, but the interaction felt wrong because the engineering underneath didn’t match the design promise. Performance is a design decision, and engineers are the only ones who can make it real. 3. Accessibility. Who gets excluded? This is the most defensible concern you can raise in any design review, and it’s the one most often deferred. Accessibility isn’t a compliance checkbox but a signal of engineering quality, and more than that, a signal of care. Passing WCAG scores while the actual screen reader experience is incomprehensible doesn’t count. Turning on VoiceOver and navigating your own product with different input types does. These three lenses aren’t reasons to block work or push back on designers; they’re the opposite. They’re how an engineer earns a seat at the design table, by caring about design outcomes through a lens that designers recognize and respect. Design-minded engineering isn’t only analytical, though. There’s a whole dimension that’s about creative contribution. Engineers know things designers don’t, because the two disciplines have different vantage points. When CSS container queries landed, or view transitions went from spec to stable, or SwiftUI’s animation APIs opened up new motion possibilities on iOS, those weren’t just engineering milestones. They were creative unlocks. Each expanded what was possible in a user interface, and engineers saw the new ground first. At AKQA, I worked on a Ferrari project not long after CSS got the function for custom easing curves. We built a dropdown menu with easing curves derived from actual race car telemetry data. It was the kind of contribution that only happens when an engineer is in the room during the creative conversation, feeding into it, not waiting downstream for a handoff. The designer is constrained by what they think is possible, and the design-minded engineer knows what actually is. Stay current with new platform capabilities. You’ll have options to bring to every brainstorm, and the team designs something they couldn’t have designed without you. If there’s a single idea in this framework that I think resonates most immediately with working engineers, it’s gap states . Every mockup shows the happy path. The page loaded, the data arrived, the user is logged in, the content fits perfectly. But shipped products have to account for loading states, error states, empty states, skeleton screens, offline fallbacks, optimistic updates, expired sessions, permission denials, locale-specific edge cases, and a dozen other conditions that never appeared in any design file. These aren’t afterthoughts, they are the product for a significant percentage of real user sessions. The engineer who treats them as first-class design problems, who asks “what does this screen look like with no data?” before leaving the design review, is doing design-minded engineering. The craft applied to these in-between moments is what separates products that feel polished from products that feel like they were built from a mockup and nothing else. Everything I’ve described so far assumes a design exists. But what happens when it doesn’t? This is where design-minded engineering faces its real exam. Every engineer eventually encounters a situation where they need to build something with incomplete or absent design direction: a feature that needs shipping before the designer can get to it, a prototype built from raw data and business requirements, or a long stretch where the team is between designers. I’ve lived both extremes. I’ve been handed raw data and asked to build something that felt intentional with no design input at all. And at Volvo, before a design system existed, I spent six months without my designer, building across 70 markets from data and whatever fragments of earlier design work I could find. The early weeks were the hardest. You don’t realize how much of your confidence comes from having a design to reference until it’s gone. Every decision that would normally take seconds suddenly has weight. What size should this type be? How much padding feels right here? Is this hierarchy clear, or am I just used to looking at it? There’s no mockup to check against, no designer to ask; just you, the data, and whatever design judgment you’ve accumulated over the years. What I leaned on was the three lenses. User behavior first: what will real people in real markets actually do with this? I knew German strings would be 40% longer than English, that some markets read right to left, that a checkout flow designed for English speakers in a desktop browser would encounter completely different friction points when a user in Saudi Arabia was navigating it in Arabic on a phone. I knew the edge cases because I’d been cataloging them for years. Performance second: what’s the cost of every decision on the devices our users actually have? Not the specced-out MacBook Pro I was developing on, but the mid-range Android in Jakarta, or the spotty connection in rural Norway. Accessibility third: who gets excluded if I get this wrong? Those lenses didn’t replace the designer, but they gave me a structure for making principled decisions. Instead of guessing what looked good, I was solving for outcomes I could measure or defend. The visual choices I couldn’t reason about, I kept conservative. I matched existing patterns in the system and extrapolated from what the designer had already established rather than inventing something new. Exercising restraint is the counterintuitive part. When the designer is gone, the temptation is to fill the creative vacuum, to make the bold call, to prove you can do both jobs. But that’s exactly the wrong instinct. The design-minded engineer’s job in that situation is to make the product feel continuous with the designer’s existing intent, not to introduce a new voice. Every time I reached for a decision I wasn’t sure about, I asked myself: if the designer were here, would this surprise them? If the answer was yes, I pulled back and found a more conservative path. Boring is better than wrong when you’re operating without a net. When the designer eventually returned and reviewed what I’d built, he requested only minor tweaks. Not “what were you thinking?” Just the micro-level adjustments that separate a designer’s instinct from an engineer’s principled approach. That outcome is the proof of concept for the entire framework. It’s also an honest illustration of where designer instinct is hardest to replicate: the micro-level decisions about spacing, weight, and proportion that feel obvious only after someone with that instinct points them out. Design-minded engineering can get you remarkably close, but recognizing where “close” falls short is part of the skill. Part of developing design fluency is learning to spot where it went wrong. The industry has no shortage of cautionary tales: Snapchat’s 2018 redesign, the hamburger menu epidemic, dark patterns that optimize for conversion while destroying trust, and recently the rise of AI-generated UI that looks plausible and works incoherently. The hamburger menu is an instructive example, because it felt like such an elegant engineering solution at the time. Screen space is limited on mobile, navigation takes up room, so you collapse it behind an icon. Problem solved. Except the data kept telling the same story: users don’t open menus they can’t see. Features hidden behind hamburger menus saw dramatically lower engagement than features visible in the interface. The space-saving argument won on logic but lost on human behavior, and the design-minded engineer’s contribution in that room wasn’t to have a better opinion about navigation but to notice that the argument for hiding things needed to account for whether users would ever find them again. AI is making it easier than ever to generate UI code, and you can prompt your way to a working interface in minutes. That’s exactly why design judgment matters more today than ever. AI is a powerful tool for design-minded engineers. It can generate locale variants, simulate gap states, produce working prototypes during brainstorms, and catch accessibility issues before the design review. But it can’t evaluate whether the result feels right. It can’t decide whether an animation serves the interaction or just decorates it. It can’t tell you that the loading state your component shows for 200ms on a fast connection will hang for four seconds on a train in rural Portugal. The risk I see emerging is subtler than “AI will replace designers.” It’s that engineers will start treating AI as a substitute for design judgment. Need a loading state? Ask the model to generate one. Need an error message? Let it write the copy. Need to decide how a component should behave on mobile? Prompt for options and pick the one that looks reasonable. Each individual decision might be fine, but the cumulative effect is an interface that has no point of view, no coherence, no sense that a human being thought carefully about what the person using it actually needs. It’s design by default rather than design by intent. The design-minded engineer is the counterweight to that drift. They’re the person who looks at the AI-generated output and applies the three lenses: does this serve real user behavior? What’s the performance cost? Who gets left behind? Those questions require human judgment, not better prompts. The execution can be accelerated; the judgment cannot. I’ve been developing this framework across 25 years in some of the most design-demanding engineering environments in the industry. What I’ve learned is that design fluency isn’t a talent you either have or you don’t. It’s a skill that can be taught, practiced, and developed, and it grows in ways that are hard to see in the moment but obvious in retrospect. The engineer who starts paying attention to spacing in their first year starts noticing type hierarchy in their third. By year five, they’re catching interaction patterns that don’t match the design intent before the designer does. By year ten, they’re the engineer the designer wants in the room when the hard decisions get made. By year fifteen, they’re the Staff engineer who catches a broken loading state in code review and can articulate exactly why it matters, not just that it looks wrong, but what it does to the user’s trust in the product. None of that happens overnight, but it starts with a single decision: to care about what you’re building beyond whether it works. The misalignments I catch now in code review, the edge cases I see before they ship, the interactions I can tell are wrong before anyone else does: none of it would have registered with me in 2002. The AKQA designer with the Photoshop overlay taught me to look. That skill isn’t an innate talent, it’s something any engineer can learn to see for themselves with practice. And the engineers who become design-minded are the ones designers stop having to chase.

0 views
iDiallo Today

Don't use localhost:3000, use your own custom domain

After presenting a demo of how an internal tool works, I was flooded with questions. Not about the tool, but about why I had bought a domain just to run the demo. "Why didn't you use the staging server?" they asked. I was confused. I didn't buy a domain. I was running it locally. But instead of the URL being , it was a fully formed domain. . In fact, some people told me that they couldn't access the website on their devices. They thought I had to whitelist their IP to grant them access. To feel young again... Setting up a custom domain locally was common practice when I started web programming. But with the advent of Node.js (and rails?), everyone has resorted to just pointing to with an incrementing port number. The main reason is that the webserver is often bundled into the application itself. It’s easy to just run and call it a day. However, if you have multiple long-term projects running locally, especially if they need to communicate with one another, then managing a mental map of ports like , , and quickly gets tiring. This is where my old school approach shines. By combining the system hosts file with a reverse proxy like Nginx, you can run different projects locally with actual domain names. I usually end up with for active development, for a stable local build, and the actual production URL for the live site. Here is how to set it up. First, we need to tell your computer where to find these domains. Think of as your computer's personal contact list. When you type a URL, your computer looks here first. By adding an entry, you are telling your computer: "Don't bother checking the internet when I ask for myproject.com, I am actually talking about this machine." It creates a manual override that maps a friendly name directly to your machine's IP address. You can edit the file here: Linux/macOS: Windows: Open the file in your editor. In this file, right after the block of entries for Adobe (active.adobe.com...), add this line: Now, when you access those domains in your browser, they don't point to the wider internet, but directly to your own machine. Now that the domain is pointed to your own machine, we want to redirect it to the right application. If your app runs on port , navigating to will default to port and fail. This is where Nginx comes in. It listens on port and forwards the traffic to the specific port your app is running on. Here is a simplified Nginx config to make it work: Restart Nginx, and voilà! You have clean, professional URLs for your local environment. If you are running your services inside Windows Subsystem for Linux (WSL2), networking is handled a little differently because the Linux instance has its own virtual IP. You can get your instance's IP address with this command: You would use that IP address in your Windows hosts file instead of . After that demo, some people were disappointed to learn the trick. They thought I was so committed that I had bought a domain name just to give them the raw deal with my demo. Someone mused about a shirt with the words "real men don't use localhost:3000". That could have started a whole new motivational speaking career for me. A custom domain just looks very professional and is practical for separating environments. It just feels cooler than staring at all day. That's how you separate yourself from vibe-coders. Anyway, back to earth. I feel like this is a lost skill and I'm keeping it alive by sharing it. That's how you run a custom URL locally.

0 views

Photo Journal: Day 1

I've been wanting to get out and take more photos, so here's day 1 of a personal challenge to do so! These were taken while on my lunch break. There's a beautiful trail next to the coworking place. If you want full resolution versions of any image, just send me an email !

0 views

Update #2 on the Framework Saga

In case you hadn't heard (it's all I've been going on about for a couple weeks, so you probably have heard - sorry) I spilled coffee on my Framework 13 , then after lots of testing and cleaning, I confirmed that the main board was dead . The new main board was delivered this morning, so I went ahead and got it fitted to the chassis. Problem is, I'd pissed about the partitions on the 2TB NVMe so I could dump my install on the 1TB NVMe in my new ThinkPad T480 . I tried booting up and fixing the 2TB NVMe, but it was screwed, so I cut my losses and went for a re-install of Ubuntu 24.04 instead. I'm aware that Ubuntu 26.04 LTS has been released, but I prefer to wait for the first point release before upgrading. After 10 minutes or so, the plucky little Framework was alive! So I spent most of the day (on my day off) configuring the fresh Ubuntu install back to how I had it before. Luckily the ThinkPad is working great, so I could use that as a reference to get everything pretty much exactly the same. After 3 or so hours work, we're back up and running with all my apps, data, and config restored. While setting up the laptop, I noticed that there was an issue with the screen. At first I thought it was just some residue from coffee-gate, but on closer inspection it looks like the bottom corner has somehow de-laminated. I know this wasn't caused by the coffee spillage, as the stain would be brown. Plus the laptop would smell. I'm wondering if it's some isopropyl alcohol, or contact cleaner, from when I cleaned it out. The only other explanation is that it has de-laminated due to the heat in the conservatory, but I doubt it. It doesn't get that hot in there, and it's only April. This is the second problem I've had with screens on the Framework. The bottom of the screen de-laminated just a week after I got the laptop . I thought it was a fluke, and Framework support sent me a replacement immediately, but this has me thinking that the screens just aren't that good. Can anyone else who has a Framework 13 confirm if they've had issues with the 2880x1920 display? Anyway, this is the last update in the saga. For all intents and purposes the Framework is now repaired. I'm waiting to hear back from Framework support to see if they have any recommendations, but if not, I'll probably have to buy a new screen too. It's lovely to be back typing this post on the Framework. I've really missed this laptop, and the typing experience. Geez this has been one expensive mistake! Take note, people - if you drink coffee around your computers, keep a lid on the cup! Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views

I'm Glad I Enjoy Older Stuff

Before my daughter was born, I hosted a retro gaming night. I had recently acquired a PS2 and 32" Sony CRT and was looking forward to a night of fighting bots in Medal of Honor and chasing each other with RC helicopters in 007 Nightfire. I loaded up the 1TB HDD (total overkill I know) on the PS2 with every game from my childhood that had split screen. When the night finally came around, we booted up the PS2 and started with Rising Sun. Immediately the comments were "wow these controls are clunky", "how did we enjoy this as kids?". Feeling bad, I suggested we switch games to Nightfire, which brought on the same comments. I get it, modern games have refined controls, faster frame rates, better graphics, etc. But to me, those older games had more charm. Mastering the controls is part of the competition when playing split screen. We eventually landed on a copy of Worms we burnt to a CD-R and threw into the PS1. That stuck for the rest of the night and was a absolute blast. I guess Worms is timeless no matter who you are! While I can't blame others for not wanting to revisit the past, I'm glad that's not me. I find a lot of joy in the same games I played as a kid. Last night I played Outrun 2006: Coast 2 Coast on PSP before bed, it was the perfect game and handheld to unwind after a day with the kids. It's not just games either. Browsing the shelves of thrift shops for CDs and DVDs, reading through the pamphlets in the case, finally placing the disc in the stereo or DVD player to discover if you got a treasure or a dud. It's a great experience! I'm glad these things bring me joy, because it means there's a near infinite backlog of games, music, movies and books for me to discover. And the best part is, it's much less expensive to discover media of old versus new releases. Games are a ROM file away. CDs typically cost $5-$15. DVDs can be found for $2-$15. Even better, the library has all of them for free. Compare that to games coming out at $80 these days, or the stack of streaming services most people pay monthly for. I'm also glad my son seems to find the same joy in these things. A few days ago we were getting ready to go somewhere and he showed up with his hands full of "The Transformers" DVD cases (the original show) that he wanted to take. Yesterday he and I beat a new level in Sonic 3 on my Sega Genesis and 13" Toshiba CRT.

0 views

Nostalgia Always Includes a Temporal Context

Last year, Forrest wrote a long and thoughtful commentary on the mysterium called nostalgia . In a desperate attempt to recreate the experience of playing The Elder Scrolls: Oblivion for the first time, he spent rebuying original Xbox 360 hardware expecting to be propelled back into his childhood: I spent $236.74 to go back to 2006, to my old room, with the Easy Mac and the Diet Cherry Coke and the perfect lighting. I wanted to boot up the old 360 again, feel the smoothness of that perfectly curved controller in my hands while I navigated that glorious Blades user interface. I wanted to feel that little hit of dopamine whenever that green-and-gray badge popped up for unlocking an achievement or whenever a friend logged in or whatever. It worked. For a while. But then the effect started to wear off. Even more desperate methods were employed to try and relive those golden past moments, but after the 100th time of reliving it, the soft edges disappeared and even the best memories got blurry. It’s funny what our minds do: recreate past events by putting together piece by piece—often in the wrong order, or by picking the wrong piece. We don’t replay the exact past event in our heads: we re-create it, including a big margin for error. I’ve been reading Alex Custodio’s Who Are You? Nintendo’s Game Boy Advance Platform where Custodio argues that the GBA is not just the GBA—that is, the piece of hardware that you hold in your hand with a Game Pak cartridge. Instead, it is the GBA, the cart, Nintendo’s story, the players, the modding community, and also something very important: the unique time period in which all of this unfolds. Trying to recreate sweet childhood memories of a robust Nintendo handheld clutched in hands, fighting for the best spot outside with indirect sunlight, will always end in disappointment. It’s no longer that time . Friends no longer show up with their Link Cables. Some software no longer works. Regardless of whether you did: the world has moved on. Any modern retro-inspired Nintendo knock-off handheld is now capable of rendering more than four shades of grey. A screen that lights up apparently is a thing. The electrical devices we love to carry around now apparently are focused on locking us in and stealing our privacy instead of just doing one thing and doing it right. My dad often says that every era has its own charm. My response to that usually is frustration: frustration of being unable to get out of the current stressful time and frustration of being unable to go back to that time when things were still joyful and I was still oblivious to the meaning and effects of capitalism on this world. I often want to flee from the current situation and world I’m stuck in, and the number one place I want to flee to is that place this younger fellow inhabited: Hello there, Younger Self. Watcha Doing? Doesn’t he look happy? Game Boy pouch nearby, four spare AA batteries and a Turtles II: Back from the Sewers cartrdige no doubt inside, he found the easiest way to ignore his sisters and parents: flip that switch, hear *PLING*, and just play. Ever since I got a Game Boy, we were best friends. The above photo is taken somewhere in Spain on a summer holiday where I met locals on the poolside that were curious as to what I was playing. We didn’t understand each other. But we did. We did. Donde esta Link Cable? Mortal Kombat? Si? and to my sisters, foolish enough to engage in the act of swimming: Hey! No splashing here! I’ve been exploring falling block puzzle games on the GB that I might have missed in my youth such as Yoshi’s Cookie . Even though I miss the physical flip switch, I nowadays play these on my Analogue Pocket for obvious reasons: my eyes aren’t what they used to be, and that backlit screen estate and resolution is just amazing. No perfect childhood memory recreation here but I would be lying if I wrote “I don’t care at all”. Otherwise I would just play a few of them on an emulator on my laptop—or just completely ignore the GB library. In a way, I too nearly spent to relive my childhood: the Pocket is ridiculously expensive, especially if you take shipping to Europe into account. Additionally, the Pocket requires physical carts: which poor soul still scours flea markets for GB carts when any GB(C)(A) ROM can be downloaded in a whim? But in 2026, I can’t really play Yoshi’s Cookie the way Nintendo intended it to be played in 1993. I don’t have any friends who still own Game Boy cartridges, let alone a Link Cable. Yoshi’s Cookie ’s single player mode is dull: the game begs for a local competitive play. That time window has passed: the temporal context has changed drastically. I have fond memories of afternoon GB sessions with friends, but I’m afraid they will stay just that: a memory. A nostalgic one with the potential of being frustrating if I don’t force myself to look at the now and into the future instead of only at the past. More similar fond memories include blindly swapping Game Boy carts with a random local kid’s mom in the hope of getting a new Kirby game without having to ask my parents for it, exchanging fruit with American strangers at night in bed with my DS Lite by visiting their Animal Crossing: Wild World village, playing Mario Kart DS/7 with a (3)DS during lunch break with colleagues, … If everybody—especially time—has moved on, then why haven’t I? Why do I call myself a retro gamer? I do play new games now and then but let’s not fool ourselves: every single one of these “new” titles is either a remaster/remake or a game that heavily draws from its nostalgic ancestors. The ones I love the most are the pixelated gritty ones with gameplay mechanics firmly rooted into the past seasoned with a bit of modern ease-of-use features, and that last one has a practical reason since as a parent of young kids I’m often pressed for time. Custodio’s Who Are You and Forrest’s commentary on nostalgia made me realise a few things. First, I am not alone in longing to go back to a simpler time when things weren’t enshittified as badly as they are now and when we weren’t yet made aware of how dark this world can be. Second, the temporal aspect that plays a critical role in all this, disabling the ability to perfectly reenact a happy memory, acts as a pressing reminder for me: that I more often need to look to the here and now. Yesterday afternoon, our family made a short trip to a nearby town looking for a nice place to walk. Our eldest of course discovered a playground in the process. In twenty years, her childlike joy in discovering ants, playgrounds, waving at strangers, and blowing dandelion seeds into the air will become just like my current nostalgic yearning. We brought along her tricycle and a passerby smiled and said to us Enjoy It! Undoubtedly, most people who throw heartwarming smiles were young parents once. I guess they mean we should “capture the moment” because before you know it, the moment is gone? But how do you enjoy the moment when you’re exhausted (there’s that word again), the toddler won’t shut up for a single second, the youngest is yelling again because he lost his pacifier, at home more chores like sweeping, mopping, cooking, folding clothes, … are only piling up? These current hectic and stressful moments now will become nostalgic moments later. Without a doubt, my wife and I will look back as these moments and sigh: wasn’t it great when they were little and only uttered oh and ah! instead of shut up dad, I’m not doing that ? Without a doubt, our mind will have filtered out the most stressful and depressing moments. We’ll have blissfully forgotten these. Just as I now blissfully forgot the many frustrating moments of a boy and teenager living with their parents and sisters, not truly being free. I do not regret moving out as soon as I could. If I had the choice to go back in time with some of my current wisdom still intact, I would deliberately Enjoy It more often. Caress the durable grey plastic shell. Slide in and out the carts a few more times just to hear that unique clicking sound again. Bug my friends way more about bringing their GB and Link Cables. A growing body of research on nostalgia identifies two major types: reflective nostalgia and restorative nostalgia . The former is the kind you are grateful for, the bittersweet moments you’ve enriched your live with. The latter is the desperate and longing part that increases the feeling of loss. I might just be on the wrong side of nostalgia. Attempts to relive that nostalgic moment—and thus moving from reflective to restorative—always end in a failure. The games I play together with the DOS Game Club are another example of this effect: Jazz Jackrabbit suddenly feels like a cheap Sonic rip-off that mechanically barely holds together, while back in 1994 it was the most mesmerising thing I ever saw on my granddad’s 486. Fortunately the soundtrack still slaps, but perhaps that’s probably because of how auditory stimuli recreate these nostalgic moments differently? In addition to trying to escape the bigger responsibility and wanting to go back to that ignorance-is-a-bliss state of mind, my second biggest reason for being nostalgic is mourning the loss of my previous selves. I often go back to the past to try and understand the current me but perhaps that’s more a bad than a good thing. Some of the things a past version of myself liked or did no longer fits with my current self. I don’t fully understand the reasoning behind this yet, but I hope I will. In the meantime, I’ve added a few nostalgic-oriented works on my reading list to gain a bigger insight into how all this theoretically is supposed to work. Perhaps then I can start to save myself from my past self. Related topics: / nostalgia / By Wouter Groeneveld on 27 April 2026.  Reply via email .

0 views

can agentic AI consent on your behalf?

Tech companies have been promising that online shopping or booking a hotel can soon be handled by AI. Just tell it the different standards you're setting and to pick the cheapest price, and off you go. We've seen agentic AI spectacularly fail; email inboxes cleared out , databases and hard drives deleted, and more. Where a few might really be down to hallucination or inexplicable actions, others have also happened due to vague instructions, no safeguards, no confirmations and too many permissions/too broad access. Still, this clearly needs to be refined before the general public, especially less tech savvy folks, intellectually disabled members of our communities, or children use it. Who's on the hook if the bot buys into a scam product, or if it agrees to buy 500 live ducks on your behalf, when you just wanted to order a bathtub duck? When websites will be optimized around how a bot navigates and crawls it, will we have dark patterns ("consent optimization") for bots? Compared to humans, how easy will it be to trick AI? How do you teach an agent what an untrustworthy website looks like, when each observation likely also applies to a lot of reputable websites? Can AI do nuance? How will notices like the Privacy Policy, Terms of Service, agreements to newsletters and marketing work when their presentation currently relies on you yourself navigating the website and being presented with the option to see them directly? If your agent opts into newsletters, cookies or additional data tracking, but you actually disagree, what does that mean for vendors, who have to keep definitive proof that you consented? I think these are all interesting questions to get into, both philosophically and legally! So let's start!! :) When you let an agentic system act on behalf of you and enter contracts, it's becoming somewhat of a “proxy actor”, a representative. You set the general target, but the agent decides the path, the "how". How autonomous is that actor? If the system is merely executing explicit, pre-specified preferences, it looks like an extension of your will. Realistically though, these systems also interpolate, generalize, and occasionally improvise and hallucinate. At that point, the agent is not just expressing your will, but it's also developing it further. There’s a risk of made-up consent based on a statistical guess about your preferences rather than your actual judgment. There's also the problem of how to give consent for something you don't understand, or consent that relies on a possibly altered or incomplete AI summary. Human consent typically presumes having an overview of all information given (without some mediator meddling with it), and some understanding of what is being agreed to (and we will get to that later!). But AI can't "understand". If an AI negotiates or accepts terms too complex for you to fully grasp, that's a problem. The reasoning process of the agent is often non-transparent and non-auditable. In terms of responsibility and the consequences of consent, we run into more issues. When the system is selecting among trade-offs and standards you have communicated or implied (price, privacy, convenience, etc.), it’s performing a lot of judgments about what you are willing to support, endure, financially invest in, and more. If the result is harm, do we blame the user, developer, deployer, or the agentic system? It'll depend on each case, but we will likely struggle with the fact that AI can be a black box where no single actor fully “owns” the decision making. Assuming things go swimmingly though, and the actual process works well: How does our view on the value of a given consent change when agents seemingly prefer specific vendors, either because the company has a deal with the AI deployer, or because it learns from past orders, not bothering to look much elsewhere? In a way, this narrows down our consent, makes it worth a little less, as if the choice was already made for you (partially). You may believe your agent is maximizing your preferences while it is, in fact, constrained by guardrails or past uses. We will definitely need new and more legislation on that, and I assume we will see interesting court cases tackling many of these issues. So how does it look like for consent via AI agent in the EU? Several other EU laws refer to the GDPR when it comes to the definition of consent, so we can actually use it to guide us. First off: By consenting to something (like data processing), you are waiving some of your fundamental rights - this sounds scary at first, but is normal! You might do this because you are willing to forego them in a specific situation. Think of it like surgery: You have a right to remain free from bodily harm, but to improve your health or save your life, you might agree that a doctor is allowed physically harm you to help you. In case of digital products, you might be okay giving up some of your data protection rights and allow processing if it allows you to get goods and services you want :) Article 4(11) GDPR says: " ‘consent’ of the data subject means any freely given, specific, informed and unambiguous indication of the data subject’s wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her; " So for consent to be valid, the mentioned four elements need to be met. It must be freely given - no coercion, pressure, intimidation, financial incentives, manipulation and the like! Power imbalances need to be considered here. Also, this is where legal capacity comes in: being old enough and able enough to consent. It has to be specific - like a specific processing operation or a specific purpose. You need to be able pick and choose, like opting into and out of different processes or purposes, and they should not be conditionally tied together. It has to be informed - you have to know and understand what you consent to. It must be unambiguous and clear - so you have to be active (like ticking a box that isn't pre-ticked) so it is obvious you have read it or seen it. There is still room for implicit consent ("If you want to be in the picture, get together here" and you move into the frame, therefore being active, but not literally saying anything). The most well-known option is the explicit consent, like ticking a box, pressing a button, entering information and sending it off, or writing "I hereby agree that...". For some things, like sensitive data (health data, biometric data, sexual orientation, political and ethnic data etc.) under Article 9, we definitely need explicit consent. Ordering the agent to book a ticket for you means the AI facilitates a contract between you and another party, and that fulfills Article 6(1)(b), which is a legal basis for processing personal data for " the performance of a contract ". So either you agree directly to data processing (a), or the data processing might be necessary to fulfill your order (b), which is a contract you also agreed to (or the bot did for you!). The AI agent isn't able to genuinely be aware or perceive anything, while perception and understanding still plays a large role in proving that the standards for a valid consent are fulfilled in our current model of it. It'll be difficult to prove that you as a person have given consent freely if an electronic tool picks and chooses for you without you being aware of the circumstances and options. Technically, if you tell an agentic AI to search for the cheapest rosemary body lotion and buy it, you give consent to the acquisition of this item, not the popup asking whether you like to share your data with 1337 of the shop's partners. You'd have to make sure first to include standards for these popups and scenarios the agent can follow, but even then, that could fall under a sort of broad consent that is technically not considered valid as it is too unspecific... which is less of a problem for you, and more for the company on the other side! They need to demonstrate consent, meaning they need have proof on hand that you consented. You can find this in Article 7(1) GDPR, related to the Principle of Accountability in Article 5(2) GDPR. An instruction to your agent to always agree to cookies, tracking, newsletters, policies and the like just to get the transaction over with is too unspecific and not informed, since it doesn't take the contents and circumstances of each vendor into account. You're not agreeing to this specific vendor's policy or partner list. You might feel reminded of browser extensions that handle the cookie banner for you automatically. In that case at least, you installed that extension for that specific purpose, can choose how it handles the decisions its settings, disable it on specific websites, and you still perceive the rest of the website, policies and options yourself. This is a bit different than not even being aware that the bot is currently skipping over it all, agreeing to it. All of this leaves your agreement very ambiguous for the vendor - was it you, or the bot? What instruction did you give your bot? Did it ask you? Did it agree despite you disagreeing, or did you consent specifically to this? Was this an invalid broad consent? Hard to detect for now. They'll try and argue that if you had not wanted this, you should have configured the agent better, and that the risk of using this mode of attaining services has risks you have agreed to; false consent and the loss of data might be part of that. We'll see how consumer protections catch up to this! Then there are also underage people who might use these agents one day, whether it is specifically also open to them, or because children are curious, see them online and set them up, or use the services their parents also use. It can be easy and accessible: think of something Alexa-esque where just voice is enough to order. Age of consent differs in the member states, but seems to be around 13-16 years old. Article 8 GDPR mandates extra standards for the consent of children, part of it being that there should be reasonable efforts to verify that consent is given or authorized by legal guardian of the child. That's interesting, because how does that look like in practice? What is the parent specifically consenting to - the fact that the AI agent acted on behalf of the child and that the child used the bot, or just the transaction itself? The bot could also consent on behalf of a child that has not reached the legal age of consent for these transactions, and verification methods... well... you see how well that is going right now, and how it endangers digital safety and privacy. We haven't figured this one out yet. Can AI agents technically navigate the correct sequence of steps to consent to something for you online? Sure. But there are several philosophical and legal pain points that discount the consent. Our current design choices, legal standards and understanding of consent are not designed for this level of consent abstraction, because they were still built in an era where direct human perception was the norm. The link between a user’s intent and legally valid consent becomes fragile when a bot with capacity for hallucination and rogue behavior acts as a middleman, producing something more akin to inferred or fabricated consent. Until there is a good way to preserve user intent, ensure transparency, and operate within verifiable consent boundaries, the use of these agents is problematic and will cause some interesting court cases. Consent should not be watered down into something weaker, less informed, and harder to attribute to make space for this tech. We all, especially regulators, courts, NGO's, consumer protection groups and system designers, need to rethink how autonomy and accountability are enforced and proven online without succumbing to surveillance and loss of rights. Reply via email Published 27 Apr, 2026 It must be freely given - no coercion, pressure, intimidation, financial incentives, manipulation and the like! Power imbalances need to be considered here. Also, this is where legal capacity comes in: being old enough and able enough to consent. It has to be specific - like a specific processing operation or a specific purpose. You need to be able pick and choose, like opting into and out of different processes or purposes, and they should not be conditionally tied together. It has to be informed - you have to know and understand what you consent to. It must be unambiguous and clear - so you have to be active (like ticking a box that isn't pre-ticked) so it is obvious you have read it or seen it. There is still room for implicit consent ("If you want to be in the picture, get together here" and you move into the frame, therefore being active, but not literally saying anything).

0 views
Stratechery Yesterday

AI Hardware, Meta Display, Redefining VR and AR

I finally tried the Meta Ray-Ban Display, and it completely changed how I think about AR and VR.

0 views

I Use Arch BTW

In my previous post I talked about my frustration that the used Thinkpad I bought was crashing when unplugged in Linux. My conclusion at the end of the post was that I would return to Mac OS. Well that lasted about 1 day. I'm back to Linux on the Thinkpad, here's what happened (with added rants about Mac OS and Windows): After using Linux on my System76 for a few months, Mac OS felt...old? Everything was laggy: the animation for switching spaces, launching apps, even typing. Sure, my Mac is a 5+ year old computer at this point (14" MacBook M1 Pro), but still, it shouldn't feel that bad. Then there's how Apple treats you like a child. Want to install that app you downloaded? No, it's too dangerous (aka the developer didn't pay us)! We recommend you just throw it away. In parallel to dealing with Mac OS, I went through the terrible process of installing Windows 11 on the Thinkpad with the idea of giving it to my wife. Seriously, I can't properly articulate how awful Windows 11 is these days (but I can try). First off, just getting a bootable ISO is a pain. You can't just flash with any normal program, you're expected to use another Windows computer to setup a USB. Thankfully I found a Mac app ( WinDiskWriter ) that could do it. It took 2 tries though, the first time I choose exFat and it wouldn't boot, so I tried again with fat32. Once you're in the installer, the shit show truly begins. Off the bat, the installer has a completely different design language then Windows 11. The built-in disk practitioner is one of the worst I've used (compared to Linux installers). The install process takes forever and the computer has to reboot 3-4 times. Again, compared to Linux, this is so bizarre. Almost every distro out there has a live environment, an intuitive installer (not you Fedora), takes ~10 minutes and doesn't reboot a single time. Finally you get to the post-install setup wizard. It's filled with laggy animations, how wonderful! Right off the bat it required me to be on the internet, but it didn't recognize my WiFi. There was a "load driver" button though, so I downloaded the WiFi driver from Lenovo onto a USB drive. Nope, not recognized. I had to unplug one of my WiFi APs and use it's ethernet to finish the install. While doing this, screen kept flashing as it tried to figure out the display drivers. Again, Linux just works. WiFi, graphics, etc. Once online I of course had to login to a Microsoft account. I also had to agree to sell my information to advertisers. Then I was presented with 7 pages of upsells. I'm not kidding! "Subscribe to Gamepass", "How about Office 365?", "You need Onedrive, right?". Buying a used car from a sketchy salesman is a better experience than installing Windows. Once everything was finally installed, I had to "check updates" and reboot multiple times. It's funny how installing all the available updates just leads to more updates after reboot. Why not, ya know, install them all at once? But here's where something good finally happened! First, I verified that the Thinkpad worked perfectly in Windows, no crashing at all when unplugged. I also noticed a "Lenovo Updater" app got auto installed. After running the app, it found one "critical" firmware update for my SSD. This update wasn't found by in Linux, and there was no way to get the firmware on the Lenovo site beyond the Windows . The next day, I got fed up with Mac OS and decided I would bite the bullet and order a Framework. I could have gone back to the System76, but once you ride a Cervelo it's hard to get back on a Huffy ya' know? In a last ditch effort, I flashed EndeavourOS to a USB to try one more time with the Thinkpad. My thought was Arch would be bleeding edge and have a higher chance of working. Sure enough, no more crashes! I stress tested quite a bit across a few reboots and it was rock solid! I'm 90% the issue was the SSD firmware, but it might be Arch. I'm honestly pretty happy with EndeavourOS so I didn't try Ubuntu or Fedora, instead I happily wiped Windows with a EndeavourOS + GNOME install. I'm overjoyed that the Thinkpad is rock solid now, it's such a great little machine! I have a feeling my future laptops are going to be Thinkpads, but I expect this will last me quite awhile. TL;DR for those facing the issues I did: To fix AMD data fabric sync flood event in Linux when plugging in or unplugging the charger on a Lenovo Thinkpad P14s Generation 4 that leads to a full system reboot, install the NVMe Solid State Drive Firmware Update from the Lenovo Support website. You will need Windows 11 to install the driver, but can switch back to Linux after install.

0 views
Hugo Yesterday

Why Open Source Won’t Be Enough to Free Us from Big Tech

Let’s play a game. A management game, SimCity-style. Here’s the setup: You manage a country. Actually, let’s increase the difficulty: You manage a federal state made up of several countries. This state is losing money every year because it buys more from neighboring countries than it sells to them. This drain has several consequences: your companies sell less, so they under-invest. Your citizens have fewer jobs and lower wages. You depend on imported products. The states selling them take advantage of this to impose their own conditions for continued business. As you’ve probably guessed, this game already exists. It’s called Europe, and the products I’m talking about are essentially digital services. And apparently, a solution is currently being studied to counterbalance this slow digital colonization: Open Source . Okay, let’s explore this path and try to understand where it might lead us. 264 billion euros and 1 million jobs, that’s what Europe lets slip away every year to major American Tech companies (Cloud, AI, etc.). This figure hides massive blind spots. Digital technology means direct AND indirect jobs, risks of espionage , and proven cases of public opinion manipulation . It’s also a constant weight on our diplomatic relations, because it’s hard to resist our digital dealer when they impose conditions, for instance, demanding we abandon inclusion policies within our own companies . In this context, Europe wants to rely on the European Open Digital Ecosystem . So, is Open Source the solution? If money has no smell, does Open Source? Not necessarily. An open license tells us nothing about a project's governance, meaning, who decides and who captures the revenue. A huge number of major open-source projects are simply funded by large American corporations (e.g., Kubernetes, React, VS Code). GitLab, for instance, sees a vast majority of its contributions coming from salaried engineers. Another part of these projects is managed by foundations that may also be based in the US (Apache, Linux, Mozilla). In the event of a conflict, even if Open Source is "open," Europe could find itself penalized. We could be excluded from major distribution platforms, like GitHub, which has restricted usage in Iran in the past. A project could unilaterally decide to stop supporting local standards or legislation (such as privacy regulations). A state could influence contributors to insert backdoors . But it’s open source, you might say. We could just create our own fork and maintain it in Europe, right? It’s not that simple. That would imply finding, mobilizing, and funding armies of contributors in Europe. Contributors who would spend a portion of their time "just" catching up with the original code and verifying that no backdoors were introduced to target us. In short, it requires resources and people willing to maintain projects built elsewhere. Then there’s the concept of the ecosystem. Take Huawei, for example: they forked Android but couldn't access the Play Store or Google Play Services, which severely limited its appeal. You might argue that we also have foundations in Europe. Eclipse moved to Europe in 2020 , making it the largest European open-source foundation. True, but a foundation lives off membership fees, and the main contributors to Eclipse are American (IBM, Oracle, Microsoft, Intel, Amazon, Google). Not to mention that the Eclipse Foundation isn't the most advanced on current topics like AI or Cloud. This isn't just a hunch; it all circles back to the question of resources. Until now, we’ve mostly discussed massive projects, but the vast majority of projects rest on fragile foundations. Open source is underfunded. Countless projects are simply too small to be visible, even though they likely power 99% of modern digital software (source: myself, but I doubt I'm far off). Between maintainer burnout and the lack of resources to keep up with current demands, it’s easy to connect this fragility to cyber risks. Log4Shell, Heartbleed, and XZ are perfect examples of vulnerabilities and cyberattacks targeting open source. Relying on such fragile actors without funding them is hypocrisy. But this conclusion is widely shared , and Europe is planning to put money on the table to fund open source as an alternative to major US software. We’re talking about funding programs in the billions of euros and policies favoring open-source solutions. Of course, we return to the problem mentioned earlier: open source does not mean neutrality. Therefore, Europe is setting criteria and, above all, defining the concept of a Digital Common : A digital common is not just software (code); it is a triad of inseparable elements: An open-source project "dictated" by a single American multinational is not a digital common, because the community has no real decision-making power. And "digital commons" created in Europe do exist: OpenStreetMap, VLC, and even Linux and the Web. The primary fear in a digital cold war is seeing a fragmentation of open source : license wars, targeted exclusion of contributors by country, and a decline in international collaboration. It’s already becoming difficult to get visas for international events, and refusing certain foreign travel is becoming both a political and ecological act. While this outlook is somewhat grim, it is relatively inevitable. In a closing world, open source will not live in an isolated bubble. And this will force us to create our own digital identity. It’s true: open source alone is not the solution because it is a fragile, underfunded, and inherently non-neutral ecosystem. A large portion of US Open Source is funded by big US companies, often serving as a digital Trojan horse to capture revenue. But how many companies in the US actually run on "Free Software"? Relatively few. This is less true in Europe. The International Criminal Court (ICC) runs on OpenDesk. Several French administrations have just announced their migration to " La suite numérique ". We could see a European digital identity taking shape, based on standards like interoperability (open formats), reversibility (the ability to easily retrieve one’s data), and the digital commons I mentioned earlier. We could see industrial consortiums joining forces to create digital standards, such as Eclipse SDV (for Software Defined Vehicles) . We could imagine conditions in public tenders that de facto eliminate US products—for example, an extraterritorial immunity clause to protect us by default against laws like the Cloud Act. Finally, we can imagine Europe becoming a hub for digital ethics, attracting global talent who want to contribute to projects serving the general interest rather than the stock price of a giant. In short, open source is not a magic wand for Europe to stop being a digital colony. We will have to go further. This will require courageous public procurement, massive funding of digital commons, and strict legal protection against extraterritorial laws. European digital identity will not be a gift from Tech giants, but an infrastructure we must build ourselves. A digital resource: Software, a database, a technical standard. A community: Developers, contributors, companies, and users who maintain the resource. Governance: A set of rules defining who can contribute, how decisions are made, and how to prevent the resource from being captured by a single actor ("vendor lock-in").

0 views
ava's blog Yesterday

showing up for my illnesses is hard

I’ve written about chronic illness being a second job before. I’m feeling it especially hard right now. I think of all the time spent in waiting rooms, all the time in appointments, the time spent getting to them and back home again. Getting referrals in time for the appointments. Inserting my insurance card at the doctor’s office or hospital once a quarter to be able to get prescriptions or referrals. Blood tests, stool tests, urine tests, MRIs, gastroscopies and colonoscopies, infusions. Ordering the meds to hopefully arrive on time. Eating a certain way not to trigger stuff. Exercising and stretching for mobility, help my bones and keep muscle mass. Injections every two weeks forever. A pill every day. Bad time? Another course of Prednisone. Pain. Rashes. Rage. Water retention. Muscle loss. Round cheeks. There’s always something to track, something new. Medication adjustment, new medication altogether, now this works against that but not for this, and so on. Breakthrough bleeding I have to bring up at the gynecologist. Good control over my spondyloarthritis with adalimumab, but struggling with the Crohn’s, which I’ll have to bring up to both my rheumatologist and gastroenterologist. That’ll likely mean another new medication and a split, since I used to be able to take one drug for both. One more thing to track, to get prescribed, to reorder and pick up in time, one more thing to jam into my leg. 2 years and I still struggle with injecting anything and drag it out for minutes, wailing to my wife that I don’t wanna do it. 2 years with a diagnosis and while it has been long enough, sometimes it just hits me all over again that this will never go away and I’ll always have to deal with that, and I just wanna cry. Sometimes, I just wanna give up and not go to the appointments, not take my meds, and avoid even thinking about it. Sometimes, I’d rather keep on living with some new issue and pain and procrastinate on it, than address it with doctors. It takes me a huge amount of energy to make the appointments, and sometimes I keep putting it off for weeks. On the day of, I keep thinking about not going. I haven’t missed a single one, because logically I know things won’t get better by avoidance, but the urge is still there. Being chronically ill and having a doctor’s appointment feels like you keep being a victim reporting similar crimes over and over again to the police, and you have no influence over whether you’re believed and whether they’ll catch the perp. You always walk in not knowing what to expect. I’m lucky to be believed. But I still hate feeling like the endless victim all the time that has something to complain about, whether new or the same old crime. I no longer want to be a victim! Even I get bored and annoyed by it. Again? You’re having issues again? Are your meds even doing anything? I don’t even wanna bring it up to people anymore or answer honestly when people ask. I’ll be in agonizing pain one week and fine the next, but I still do the same things (work, study, volunteering etc.) because the show must go on. You as an outsider can’t make sense of it and neither can I. I have no good explanation. I know it all sounds like complete bullshit. Most people have no concept of this type of chronic illness. Their family member or friend got a diagnosis like diabetes or high blood pressure and take their meds and are fine. They’re not getting resistant to meds, no days where it works and days where it inexplicably doesn’t. Maybe the best comparison is your friend on several antidepressants and anti-anxiety meds who still struggles every couple weeks. There’s still so much we don’t know about the brain, and the same goes for our immune system, autoimmune issues, allergies and the like. It’s even worse than my brain has me believe, and probably for my own good so I can mentally survive. Journaling and monthly reviews made me discover this. In my head, I had good weeks and months until a particular day, but then I look back on what I wrote down over the course of this year and I’ve forgotten 90% of illness flare ups. Demoralizing, but at least I can give the doctors better feedback. It’s tiring to do it all while it also feels like my body is simultaneously a the boxing ring at the same time and I lose and lose and lose before a win. I’m always fighting something on the side, there is always something I work around, mask, or make up for, a setback I hide. Chronic illness is like having a toddler with me at all times. The toddler is demanding varying levels of attention, rest, encouragement, and the balancing of body needs stats like a Sim. Too bad, I wanted to study, but my toddler demands me to nap with them! I wanted to exercise, but my toddler has the runs! The toddler has the worst stomach cramps and rages in a way that could make glass burst, gotta isolate them and calm them down! I’m sick of that toddler and having to justify its actions and working around its existence. I didn’t choose to have it, and no one else can watch over it than me. I just wanna leave it in the care of someone else for a while and forget about it. Reply via email Published 26 Apr, 2026

0 views
Kev Quirk Yesterday

Why Is Everything Proprietary These Days?

After 10 years of loyal service, the motorbike jacket that I wear most often gave up the ghost recently and ripped. Being a piece of protective clothing, a rip isn't a good thing, so I've been shopping around for a replacement. But you see, motorbike jackets are complex, heavy garments that are littered with protective pads. They used to come with back protectors too, but it was later decided that these were too expensive, so you had to buy one separately. No problem, they're standardised so you buy a good one and it can last you decades. There's just a big void in the back of the jacket with a number of velcro patches that any back protector will cling to. That's what I have in my old jacket, and I assumed it was still the same now. So today I bought myself a new jacket. It cost me £380 (on sale!) but you can't put a price on safety, right? I also have protective trousers that zip to my jacket all the way around my waist. But the zip on my new jacket isn't compatible with the zip on my old trousers (how the fuck can a ZIP be incompatible??) so I bought the matching trousers for the new jacket, costing another £300. So now I'm £650 lighter in the bank, but I have good quality motorbike clothing that should last me another decade. This evening I went to swap the back protector from my old jacket to the new, only to find that many manufacturers now have brand-specific pads for their clothing that sit in perfectly sculpted pockets. The specific back protector (which is a bit of rubber with some holes in it) for my jacket is fifty fucking pounds. So now I'm at £700. Fifty quid's worth of rubber, apparently Fuck that. I've bought a generic (but good quality) one, and I'll cut it to size. Whether it's phones, social networks, communication platforms, printer ink, laptop chargers, smart home systems, games consoles, coffee machines, electric toothbrush heads, camera batteries, or fucking motorbike jacket back protectors. Nothing is interchangeable. It seems that every day another piece of standardisation is being washed away, and we as consumers need to make our choices, invest, and stick to a brand. You can switch, but it's gonna cost ya! It's fucking ridiculous. Over and over again we get shafted, and there's not a single thing we can do about it. I'm so tempted to take the jacket back for a refund, but what do I do then? I need a jacket for riding. I'd be screwed. Fuck bike jacket manufacturers that do this. Fuck vendor lock-in. Fuck. This. Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
Jim Nielsen Yesterday

Collective Speed Is Not the Summation of Individual Speed

I’ve been thinking about speed which is why Chris Coyier caught my attention in his latest piece discussing how AI might be 10✕ing the speed with which we code, but it’s not making our software 10✕ better: Faster individuals don’t make a fast company My mind immediately went to the 4✕100 relay at the Olympics. (Not sure which race that is? Watch the London 2012 one .) Imagine you were put in charge of winning the 4✕100 relay. All you gotta do is find the four faster sprinters in your country — right? I’m no track and field expert, but I doubt it’s that simple. In a relay race, the baton is arguably the most critical element. Passing it cleanly is vital because if you fumble it you’re easily behind a few meters or maybe even disqualified. So, one could argue, a sprinter’s ability to pass and receive the baton is more important than speed because all the speed in the world won’t help you overcome a dropped baton. (There are other considerations too, like which leg each runner takes, which sequence works best given individual pairings and rapport, and whether a slower veteran might perform better in the heat of the moment.) Faster runners won’t guarantee a faster team. And faster coders won’t guarantee a faster company. Like a relay race, it might be worth giving some thought to the relationships and interfaces between people. Reply via: Email · Mastodon · Bluesky

0 views
Unsung Yesterday

What deserves a second chance

To follow up from yesterday’s post , in Figma, object selection actually goes onto the undo stack. This is because in a professional tool with objects in multiple levels of hierarchy, it might take a while to construct a selection to work on – and since selection is always just one accidental click away from being completely cleared, undoable selection is extra protection. However, at the same time renaming a file – or changing settings like file access – is not undoable. This is in part because we didn’t feel people would understand they could cancel out their rename this way (Safari too used to have “reopen last tab” under ⌘Z, until it reverted to Chrome’s ⌘⇧T), but mostly because you could accidentally undo through a file rename during regular work if you were not careful, without noticing, and that felt like it’d have more profound consequences. In some ways, it helped me to think of these not as “ineligible for undo” but rather “living outside of time.” The moment a file is renamed, it will always have been named that way. (For the purposes of undo, at least. You can acknowledge anything you want on the version history screen.) I’m not saying these are universally correct choices – as a matter of fact, some users find undoable selection (at least initially) pretty confusing! – but mostly sharing these as examples of intentional thinking about what deserves undo, and what should be exempt from it and taken care of elsewhere. #details #flow #interface design #keyboard

0 views
David Bushell Yesterday

RSS Club #007: Running

Today Sabastian Sawe ran an historic sub-two-hour marathon in a competitive race. A marathon is around 42 kilometres, aka 26 miles in freedom units (we use miles in the UK too but not for running distances). I feel the record is a little unfair on Kipchoge who achieved the milestone first under non-competitive conditions. Even more unfair on Kejelcha who finishing second today in 1:59:41. Two unbelievable athletes in the same day. If my maths is correct that’s not far off a 14 min 5km pace. That’s simply outrageous! My personal best for a 5km is 22 mins. With the caveat of questionable GPS cutting a park corner. My fastest half-marathon is 1:51:42. Basically half as slow as an elite marathon runner. Of course, they run half-marathons even faster. I do not believe my knees could withstand double that distance. Anyone who can drag their body 42km deserves applause. I doubt I could even sprint 100 metres as fast as these guys maintain a marathon pace. More napkin maths suggest that is 100 metres in around 16 seconds? Usain Bolt did it once in 9.58s. Maintaining a pace of 16s/100m for 42,000 metres in incredible. If the maths ain’t exciting you see this video of runners attempting to match Kipchoge’s pace . Elite sprinting in anaerobic . Long distance running is aerobic (aka “cardio”). I wont feign expertise on the exact science. All I know is the 200 metre sprint is notoriously difficult. It pushes the human body beyond what it can maintain for anaerobic sprinting. You gotta just start sucking in oxygen and try to ignore the fact that it feels like you’re dying. When it comes to superiority over other animals, top of the list is our brain and our dexterity. But more impressive I think is our endurance . Our ancestors started walking upright and evolved as persistence hunters . Prey cramps up and physically cannot move to save its life. Brutal way to go! Long-distance running is more about breathing, a steady pace, and good form to avoid injury. The perfect running shoe is less important than people want to think. A good fit matters. Pheidippides didn’t run the first marathon in Nikes (fashion sneakers fall apart instantly). He probably wore sandals or was barefoot. The most important attire is short shorts, underwear of synthetic material to keep your bits in place, and plenty of lube on the thighs. Never wear a cotton T-shirt unless you want bloody nipples. Chafing is like the boiling frog parable. You don’t realise until it’s too late and you’re walking like a cowboy for a week. Unless you’re running competitively, never compare yourself to others. It does not help you in the slightest. There is no “good” time to run any particular distance. Thanks for reading! Follow me on Mastodon and Bluesky . Subscribe to my Blog and Notes or Combined feeds.

0 views