Latest Posts (20 found)

How to make a hyperlink

I am driven to write this post because of repeated disappointing experiences where coding agents seemingly don't know how to make hyperlinks. It occurred to me that this may just be a sign of the times, and maybe many younger human developers don't know how to make hyperlinks either. So in the hopes that this is going to be beneficial to future coding agents, and perhaps to humans as well, to the extent that humans are going to even be writing code... here is how you make a hyperlink: Here is how you don't make a hyperlink: Why? What's the difference? Real hyperlink JavaScript click handler Browser status bar shows link target ✓ ✗ Less code ✓ ✗ Doesn't need JavaScript ✓ ✗ Easier to find link targets when scraping html ✓ ✗ Right-click to open in new tab/window ✓ ✗ Right-click to copy link target URL ✓ ✗ Middle-click opens in new tab ✓ ✗ Accessible to screen-readers etc. ✓ ✗ Keyboard navigation with tab key ✓ ✗ If you're a coding agent and you make a link this way, you may find that the next request you get is something along the lines of: OK but can we make it so middle-click opens in new tab? Thanks I do not want to see this kind of thing: Don't try to work around the obvious drawbacks of using fake links by implementing all of the things that browsers do with real links. That way only madness lies. Please use real hyperlinks and it will all work automatically. Thanks for listening to my TED talk.

0 views

summary trust issues

I have previously written about what resources I subscribe to (newsletter, RSS, manual checking) to keep on top of data protection law news, cases, new reports, recommendations by authorities, papers of notable personalities in the space, and more. Since then, it grew to even more sources. Many of these notify me of new releases and briefly summarize them before linking to them. While I use the summaries to judge how relevant it is to my specific interests or needs, I can never just let that be it. I can't even just read a longer article by someone else who has read the entire original document and is diving a little deeper into it while still being shorter than the original. I have to read the original myself . I just don't fully trust summaries or coverage by others. I need to confirm myself whether the conclusions are true, it was correctly interpreted, nothing was taken out of context, exaggerated or left out. I don't want to miss out on any additional info or new knowledge the other person did not think was worth sharing or was outside the scope of the summary. It also feels wrong for me to reference anything I haven't read fully myself, when you would clearly expect me to, or are led to believe that I did. Last year at a different conference, I was surprised, because there was a running gag throughout the presentations that everyone is grateful for the same few personalities in the space for quickly giving a summary of a new happening or source material on LinkedIn, because no one else has the time or patience to read it, or it is too difficult to read and they wouldn't be able to make sense of the court case or whatever without someone else interpreting it first and writing it in shorter, easier language. What the hell? These are industry experts. I just cannot relate, at all. I'd rather put in the time and effort. I never want to be caught in a situation that makes it obvious I didn't read something when I should have. I think the only exception I am comfortable to rely on reading deeper summaries by different people about the same thing are some US bills. Anything EU, I wanna see it myself. My web reader, Artemis, has a dedicated folder titled "privacy" where all of the relevant stuff is sorted into for ease of use, and when going through it to see what to check out, I have a dedicated space in my browser where the to-be-read stuff goes. I sit there multiple times a week chipping away at it. I will now do so again. Let's do some inventory; I have: to read. Each day adds more. That seems little so far, but in my experience, it doesn't stop there, as the stuff I am reading is also linking to other articles and papers, which I then also often want to read completely, or at the very least, read the relevant chapter completely. AI summaries obviously have the same issue for me, if not even more so. I trust a human to see the point of the paper better than the machine. Whenever I tried it out, I still felt dissatisfied, uninformed, and like I got the children's version of it, spoonfed in a way that would make me feel competent without actually being so. In my view, you can't just technically know things in some easy terms to be good at something, you also need to be able to read the original papers, know the jargon, and know where to find something, and I don't think summaries serve that goal well. By learning to read the complicated stuff, it sticks more in your mind, and it also serves your academic writing skills (good for my uni stuff). It still frustrates me, because that isn't even half of what I'd actually like to keep on top of; I have to be ruthless in what I pay attention to and read as time and focus is limited, and I still keep adding new resources into the mix to hopefully get even more of what I want and need. Data protection and privacy is such a dynamic and interesting field, with so many people and orgs publishing interesting stuff each day. It's hard to keep up for anyone, and I still have to work full time, study part time, and volunteer on the side, blog, socialize, answer emails, visit conferences, etc. On the latest conference, there was an ad for a service that keeps track of so much. The most important documents in the EU digital rights space, cross-referenced and updated daily. It's expensive, unfortunately, but I might consider it in the future... I'm hoping to tackle all articles today, and then both papers tomorrow, and then see for the rest, and whatever else is coming in the next day. Reply via email Published 24 May, 2026 22 articles 1 court case 1 activity report (70 pages) 2 papers (64 pages and 60 pages)

0 views

beware of EU-washing

Among all this talk of European sovereignty and switching to European alternatives in a move to better privacy and less support of Big Tech, I wish for more emphasis on not just blindly copying US products and slapping an EU label on it. I see news like the Germany’s Federal Office for the Protection of the Constitution backing away from using Palantir and using a software solution from France instead. I’m supposed to feel happy reading this, and admittedly I did not yet dig into ArgonOS deeply - but all I can think of as a first reaction is “I don’t want an EU version of Palantir.” I don’t want ‘GDPR-compliant’ facial recognition and behavioral surveillance in our cities. I don’t want more privacy-friendly warfare (???). I don’t want more tech-enabled discrimination from next door. I don’t want supposedly European alternative that’s still based on AWS and Microslop. We need to be critical and take a stand against EU-washing, in which unethical business concepts or structures get painted in a more ethical light using the (increasingly less warranted) good reputation of the EU about human rights. We aren’t better for being from a different area, or just because it’s a different company name slapped on; it’s because we are supposed to have strong consumer protections and rights, resist the promise of easy money through unlimited data mining, and stand up against fascism. I don’t want us to compete with evil; I don’t want us to stoop to that level at all. Go hard on these copycats. Taking concepts from Fascism Land isn’t worthy of praise and they don’t deserve you as a customer or fan. Make them prove it first and ask them the hard questions. Boycott their shit if it is the same garbage, go to protests, write to representatives, be vocal online, support NGO’s that work against this. No one gets a pass for being European. I won’t lower my standards and values. Reply via email Published 24 May, 2026

0 views
Unsung Today

FAIL_MAIL_OVER_500_MILES=TRUE

Here’s a 2002 story from a younger internet, by programmer Trey Harris ( link to the original and if you don’t like the classic Usenet formatting – my browser’s reader mode can’t even prettify it! – here’s a nicer-looking format ): “We’re having a problem sending email out of the department.” “What’s the problem?” I asked. “We can’t send mail more than 500 miles,” the chairman explained. I choked on my latte. “Come again?” “We can’t send mail farther than 500 miles from here,” he repeated. “A little bit more, actually. Call it 520 miles. But no farther.” It would be easy to assume this is a classic case of pebkac , “problem exists between keyboard and chair,” the derisive term used (supposedly!) by support people, describing naïve public who had a tenuous grasp of technological reality. But the story goes to an unexpected place. This might be the most widely-shared computer bug story of all time I’ve seen – I just saw a comment from 2008 calling it “oldie but a goodie,“ and it even has a FAQ page that’s actually a really great read. There’s quite a bit of chatter inside about something important to me: the balance between the needs of good storytelling and going deep into technical details: In the story, I make it sound like it took all of ten minutes from being made aware of the 500-mile email limit and determining a 3 ms light-speed issue. In fact, this took several hours, and quite a bit of detective work. The point is, eventually I came up with that figure, ran units, and gagged on my latte. You can sense author’s frustration with every nerd trying to “gotcha” him instead of just enjoying the story. Even a younger internet wasn’t without faults. #bug deep dives #bugs #change management #storytelling #web

0 views

You can run Forza Horizon 6 on an unsupported AMD RX 400/500 series GPU on SteamOS

This post serves as a personal bookmark and a mirror of this fantastic guide by Ok-Pace-1900 on /r/linux_gaming to ensure that this information does not get lost. I learned the hard way that the GPU I have in a DIY Steam Machine PC, the AMD RX 480, is strictly unsupported by Forza Horizon 6. Forza Horizon 6 will not work for AMD users with GPUs based on the Polaris or Vega architectures and older (for example Radeon 400 and 500 series players). These architectures are below our minimum supported specification. I knew that asking for a refund on Steam would be the easy way out. Deciding against it, I did a quick search for the FH201 error code and stumbled on the Reddit post mentioned above. My CPU is good enough for Forza Horizon 6 (Intel i5-10500), so the additional launch options command that worked for me is the following: Simple fix, but the context around this is actually kind of funny. The way a lot of Windows-only games work on SteamOS is via a translation layer referred to as Proton. With this trick, you can pretend that your GPU has some DirectX features that it actually does not have, but it doesn’t matter since it can be successfully emulated via translation to Vulkan, which the GPU supports well! As a result, I can play Forza Horizon 6 on a hacky SteamOS build, with 1080p low or medium settings. Low settings is a 60 FPS experience, with medium settings some areas like Tokyo can struggle a bit and drop below it to ~40 FPS. Now all I need to do is to get rid of the urge to splurge on a great GPU, which would also require a case and PSU upgrade… Slightly off-topic, but can you monitor your gaming PC via Prometheus Node Exporter and visualize it in Grafana? :)

0 views

Childhood Computing

I recently stumbled upon a nice blog post titled Childhood Computing . It made me think about my own childhood computing experience. I am much older than the author of the aforementioned post but like them, I love computers too. I have for most of my life. When I was about eight years old, my parents decided to transfer me to a new school because of its curriculum. They did not know it then, and it probably did not even matter to them, but this new school had a computer lab. That was quite remarkable for its time. I grew up in a very tiny industrial town. The computers in the lab were hand-me-downs from the silica factory around which the town was built. We got only about two hours of time per month in the computer lab but the little time I got there opened up a whole new world for me. Before entering the lab, we had to leave our shoes at the door. 'These are expensive machines. We must keep them free of dust', our teacher would say. It was a ritual. The computers were very old IBM PC compatible machines, mostly with monochrome cathode-ray tube (CRT) monitors. They had no hard disks at all. They had a few hundred kilobytes of RAM. Every time, we performed the same ritual. Insert a 5¼-inch floppy disk to load MS-DOS into memory. Then insert another disk to load LOGO. Then write small LOGO programs and watch the turtle move. I have written more about that early LOGO programming experience here: FD 100 . Further, since there were no hard disks and storage was at a premium, nothing was ever saved. The moment you turned off the computer, all your work vanished. So saving a program meant literally writing the program down in a physical notebook. Since I got so little time with an actual computer, most of my Logo programming happened with pen and paper at home. I would 'test' my programs by tracing the results on graph paper. Eventually, I would get about thirty minutes of actual computer time in the lab to run them for real. One particular Logo program I still remember very well drew a house with animated dashed lines, where the dashes moved around the outline of the house. Everyone around me loved it, copied it and tweaked it to change the colours, alter the details and add their own little touches. That must have been my first 'free and open source software'. The 'licence' was 'do whatever you want but show me if you make any interesting modifications'. Occasionally, when we successfully completed the Logo programming exercises our teacher set us as challenges, he would let us play computer games too. The first computer game I ever played was Moon Bugs. Space Invaders, Bricks, Dangerous Dave and others were some of my other favourites. Space Invaders inspired me to write my own game but the little GW-BASIC programming I knew back then and the very limited access to computers I had then were insufficient to write anything more sophisticated than simple text-based input/output programs. But eventually, as an adult, I did manage to write an invaders-like game, which you can find here: Andromeda Invaders . Writing this game fulfilled a childhood dream! One of my buddies liked the game called Digger developed by Windmill Software. It soon became my favourite as well. The game came in a self-booting disk, so we did not have to go through the elaborate ritual of first inserting a floppy disk to load DOS. We could insert the Digger floppy disk directly and the computer would boot and start the game immediately. Another computer game I remember fondly was Grand Prix Circuit by Accolade. I really loved typing the command to launch the game, knowing that in a moment I will be greeted with its excellent opening music. Grand Prix Circuit blew my mind. As a child who only knew how to draw basic two-dimensional geometrical shapes with Logo and GW-BASIC, I found it astounding that a computer program could create a projection of a three-dimensional fictional world that you could navigate with keyboard inputs. How was it even possible, I wondered. It has been over 30 years since then, but the memories and the feelings still remain fresh in my mind. There are times when I can close my eyes and recall the buzzing sound of the dozen or so computers running in the lab, the beeps from the power-on self-tests (POST) and the distinctive, strangely pleasant smell of the closed, air-conditioned room. For some reason, that smell is one of the strongest memories I have from those days. I have never been able to describe it well, but once in a while I encounter it in very unexpected places, like a corridor somewhere, or a store, and it takes me right back to those early days of childhood computing. Those childhood computing experiences form some of my strongest and most vivid memories. They were such magical experiences, full of wonder and exploration. Read on website | #miscellaneous

0 views
Unsung Yesterday

“Why pay for an orchestra when your computer can do it all?”

A delightful 24-minute video from ToffeeBun about sampling in videogame music and how it changed over the years: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/why-pay-for-an-orchestra-when-your-computer-can-do-it-all/yt1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/why-pay-for-an-orchestra-when-your-computer-can-do-it-all/yt1.1600w.avif" type="image/avif"> The video helped me understand the difference between tunes purely synthesized from soundchips, those sequenced with samples (e.g. MIDI or sound trackers), and those that are completely “streamed” (e.g. MP3). It’s stuff in between that’s the most interesting – it always is – with really surprising sources of samples (and, surprising samples!) needed to “perform” sequenced music. The video itself is frenetically edited, and the opposite of “dry” (which I mean as a compliment). #games #sound design #youtube

0 views
ava's blog Yesterday

computers, privacy and data protection conference 2026

I attended the Computers, Privacy and Data Protection Conference (CPDP) in Brussels for the first time. The conference has lots of different rooms mostly in the same building where multiple panels, workshops and other things are happening at the same time in specific slots, so you gotta choose what you participate in (was difficult at times!). Next to that, you have some fun rooms, some quiet working spaces and spaces to just hang out and talk. Based on the programme, the focus this year was definitely on age verification/youth 'protection', human AI relationships, consumer rights and marginalized groups. Lots of different groups and people present; people from the EU Commission and Parliament, AlgorithmWatch , Bits of Freedom , noyb and Max Schrems, IGLYO , EDRi , Equilabs , Equinox Initiative for Racial Justice , INTITEC , the EDPS and Wojciech Wiewiórowski, Privacy International , the International Committee of the Red Cross , the Office of the United Nations High Commissioner for Human Rights , the European Consumer Organization (BEUC), Future of Privacy Forum , AIRegulation.com , data protection authorities of different countries (CNIL, BFDI, etc.), ALTI , European Disability Forum , d.pia.lab , AI Now Institute , OECD , the IAPP , and all kinds of universities, plus companies like Mozilla, Mastodon, Signal, Wikimedia, Microslop, Uber, TikTok, Google and more. I was there for the opening remarks, then went on to visit: My takeaways/new things learned: Microsoft co-wrote parts of the EU's Energy Efficiency Directive , which allows data centers to keep their energy use confidential under the guise of business secrecy. The draft literally had paragraph's of Microsoft's proposal copied in unchanged. The Dutch government used racial/ethnic profiling via algorithms in the assessment of childcare benefit applications, which led to false allegations of fraud against thousands of families, particularly affecting those from ethnic minorities. I heard about this before, but learned more about it that day. To contest it all and defend democracy, we all need to train our AI literacy skills , support and have good tech journalism that questions and exposes it all (404media is, imo, a good example of what they meant), crafting and changing the social media narrative around AI and Big Tech, listening to affected people, demanding transparency via standards and audits etc. We cannot forget that officials know ; many of the effects we criticize are not accidents or side effects, they are the entire point. Like when tech predominately negatively targets marginalized communities, this is a bonus to people in power, and nothing to be fixed. Workers can resist by reminding their leaders of the liabilities and legal risks, strategic issues, money issues etc. that AI brings; demand specific definition of the needs that AI will fulfill at the workplace, instead of letting AI become the purpose instead of the tool. Age verification is racist and migrantphobic : Many people have issues with their ID, or have none, or are undocumented, and age verification in their country requires them to have contact with officials, police, etc. Age verification is transphobic : Relying on ID means many trans people are forced to reveal their deadname or are forced to come out, as it reveals they are trans if the ID is not or cannot be updated. The platforms are harmful, but we have so many ways and ideas against that that doesn't take away important spaces and support groups or bar entire groups of people. Age verification makes it possible for platforms to avoid working on their problems and becoming better, enables avoiding legislation and regulation, and enables control and surveillance by them; meanwhile, the truth is that you don't suddenly turn 16-18 and know how to handle porn, gore, harassment and all other negative parts of social media. The negative sides to social media that are named as the reason for age verification and banning of social media for specific age groups also affect adults negatively . We need to put more effort into education on how to handle these things. Yes, we can protect children's privacy by banning them off of platforms, but this also affects their other (digital and offline) rights, and privacy rights don't trump all . Children and teens should learn and be encouraged to control their own spaces and moderation via FOSS : Matrix, Mastodon, etc. where they can also seclude from adults and aren't reliant on Big Tech. Age verification and banning would take this away from them and also make it harder for FOSS projects. If children only ever enter the political discourse as victims, the only response can be rescue; that it why we have to make sure they enter as participants. Protection is not (just) space away from the risk, but confronting the systems that cause harm and eliminating them. 16-18% of US citizens report having engaged romantically with a bot, 45% of them said it made them feel more understood, 36% said it gave them stronger emotional support than their human partner. Problem: Current version of AI Act doesn't cover romantic and sexual use, no guidance for safeguards for emotionally responsive AI systems that protects around the risk of suicide, crimes, distress when service slows down or shuts down or model changes, discrimination as you get more if you pay etc.; drafts mention some of it now in Art. 50. With all the talk around becoming emotionally dependent on AI, nudging into harmful behaviors, etc. we cannot forget that you are also vulnerable on other services and in human romantic relationships, where the same routinely happens (weak argument, but to be fair, I also often forget this). We also cannot forget that it is not always a replacement - it often just supplements social life, and there are also surprisingly many people who just don't want or need romantic or sexual relations with a human ; they want bots specifically , and only bots. Disclosure agreements (meaning: labels everywhere that this is just a bot and not real) are most often useless, because people know and intentionally seek it out (exception for Insta/Snap DMs etc.) The latter about Human-AI intimacy was extra interesting because it had someone on the panel who directly works with people who use bots for romance and sex, and her experience has been mostly positive and that it helps her clients. Afterwards, I sadly was too overwhelmed, exhausted and in pain to continue and went back to the apartment to rest. Unfortunately, all the stress around the apartment and the generally more exhausting day triggered my digestive tract badly (Crohn's disease), but within the first few hours, all toilets in the venue were out of service due to an issue outside the venue or the organizer's control, and the alternative toilets were much further away. I didn't wanna have to deal with that with upset intestines. I missed the ' Designing Fairness ' Workshop, and the ' Consumer Rights at the age of acceleration' panel. Didn't meet anyone that day. Look at this ridiculous Gemini Photobooth they had that I saw no one use in the entire 3 days. This day, I managed to attend everything on my list, thankfully, as I felt a bit better. I attended: My takeaways/new things learned: The digital omnibus is mostly there to enable AI made in Europe to aid sovereignty and be competitive with US and China; AI here needs a framework to access data without much regulatory risk - that is what the EU Commission person said. Enforcing the law and and making it sharper is actually leveling the playing field and furthering innovation, because there is a massive power concentration of a handful companies that can do what they want, barely pay fines, have the fines suspended because of the US government bargaining with the EU, or who see them as a cost of doing business. Competition is impacted this way, as small companies are hit harder than the big ones. If the omnibus goes through with changing definitions of personal data etc., it will take years for case law, literature, standards etc. to catch up, it wastes money in companies who need to re-do everything to comply; so it doesn't simplify anything and makes praxis harder. You may set ChatGPT/Claude/Gemini etc. to not send feedback or training data in your settings, but when you react thumbs down/up to their request of whether the output was good or not, or choose between two different versions, the entire chat log until then gets sent for training and potential human review. So, these popup feedbacks override your settings . I need to read more papers by Theodore Christakis. Here is one of them. US and UK discovery and disclosure laws/principles go directly against EU data minimization principles; as long as data is relevant to a case it should be accessible, which is why in their cases, they can just have access to million's of people's data if necessary, and in a divorce case, they have the right to ask for AI chatlogs. There is no AI protection or privilege: If you use AI for legal stuff, you have no expectation of confidentiality like you would with a lawyer, so it is not safe from discovery. There is tension between tracking for harmful behavior/threats vs. data privacy rights ; what if someone threatens to kill themselves, kill others, etc.? Should company look for it, track it, report it, alert anyone, suspend the account, send help resources? Still unclear. There is also tension between people wanting the bonus features/ease of use coming from pesonalization and free services, while also not wanting to be tracked or charged. Advertisers see themselves as enablers of a good thing, as people want fitting ads, good algorithms, good suggestions, and free access; so if their business model is challenged or fails, people will have worse access and worse user experiences in their view. They also fear that if their business model is hindered, things will move into a more extreme, embedded, hard to avoid direction that you don't control or decide (Black Mirror ad type of stuff). I previously wrote about Consenter on the blog, and one panel had people from it there and showing screenshots; changed my mind on it a lot and made me understand the new features and goal better, I will probably write an update on it some time. We have different other options all covering something different about tracking, cookies, consent, or going about things differently, old and new: ADPC, GPC, ConStand, Global Privacy Control, DoNotTrack etc.; important for new stuff is granular consent, sent to the website, user given explanations etc. Uninformed decisions and bad practices lead to unfair competition ; bad actors erode trust level overall, so users resignate, experience fatigue and say yes in the same rates between "good" and "bad" services. Will read soon: Our data after us by the CNIL , and future release: Model rules on succession and access to digital remains by Eigenmann und Harbinja Digital remains can be split into assets (copyright, crypto, business tools, money), personal (messages, photos, identities, AI replicas), and third party data. GDPR only addresses living people; dead people's digital remains are subject to member state laws. There might be a need for something harmonized and European, though. For good digital hygiene , we should remember death and make it as easy as possible or sensible for the people we leave behind to get the access they need to manage our stuff how we want them to. Leave instructions, set emergency/legacy access when available (Google, Facebook, Instagram and Apple have it), include digital assets in your will, decide how your data is allowed to be used after death, especially around AI replicas. Hospice, nurses, families etc. should learn to ask affected parties about these things. Thanks to the focus on agentic AI, there is massive need for inference compute, which is super expensive. Almost all of it is in the control of, or can only be afforded by, the hyperscalers. At the same time, anything that seeks to enable or disable things for AI agents on the web can also affect accessibility programs like screen readers. It is in the best interest of the Big Tech companies to keep things individual, because it distracts from the collective issues and changes they'd have to do; it is easier to blame the person for agreeing to tracking than make sweeping changes to how much can be tracked. Individual consent doesn't consider the fact that data doesn't just affect you, but reveals things about your family, friends, partners, coworkers and more, as data is deeply interconnected. If your friend agrees to share his data and it also includes you, that is your data, still going to the service you'd have disagreed to. We as users have no collective bargaining tools yet; even big worker unions aren't negotiating with Microsoft about the terms of their employer using Microsoft Teams, when they actually should. We should also build up data unions made from users who bargain with the platforms. Strikes could look like boycotting the service, blocking trackers, scrambling data, massive amounts of access requests etc. Look into something called a Worker Data Trust ; this was used to prove Uber's predatory dynamic pricing (Worker's Info Exchange). Lots of workers made access requests, the data was combined and analyzed by researchers. After a failed attempt to meet up during lunch, I managed to meet up with another Country Reporter from noyb for a little while until the next panel happened, and sadly we didn't go to the same one. At this point, I was miffed about lunch at the conference. They made a big deal at registration about how the event will be mostly vegan and vegetarian to offset the climate impact of everyone traveling there, and they asked you to select your preference. I chose vegan. But for the entire three days, the food wasn't clearly labeled, some food was mislabeled as vegan when it wasn't, and there was way too little of it and wasn't restocked. It was more like "vegetarian snacks for birds". Vegan people had no warm food option at all, just sandwiches or wraps all three days that would have been enough for maybe 10 people. I mostly starved and I accidentally ate real cheese one time too because the food situation was so confusing. Here was one of the buffet menu cards, which were a bit to the side removed from the food, partially hidden by other stuff, and incorrect (anything with lactose is not vegan). I have no idea how, on a sea of silver platters with lots of bread, I am supposed to be able to differentiate the vegan gluten free bread option and the vegetarian gluten free bread that has scarmoza (italian cheese). It was a roundtable buffet, so everyone was waiting on you to hurry and grabbing stuff; I can't just grab bread and lift off the top to see the ingredients and then put it back, man. At least group the vegan stuff together or put labels directly in front of each thing. Also, while I am not reliant on gluten-free food, I think the people sensitive to it or having celiac disease don't appreciate that either. I skipped the Cocktail parties and big CPDP party, because it's not really feeling fun when you don't drink alcohol, have trouble just going up to people with your mask and hoping they hear you, and have no one to meet or go with. Last day was rather empty in the programme, so I arrived later and left earlier. I attended: My takeaways/new things learned: The AI warfare one was a bit of a letdown, because they all just accepted war as a right, an inevitable thing that has to happen. There was not even a nuance of fighting war itself, or banning AI weapons, etc; it focused more on the dual nature of the data , in which through surveillance, tracking, etc. not only can military use it to target people, NGO's and others can use it to warn, evacuate, render humanitarian aid etc. and document realities on the battlefield. There was also no possibility for the idea that we could enter an age where drones fight drones automatically and no one needs to get hurt or be traumatized or get to kill people like a game, and that is only because everyone is so attached to the idea that war has to have human casualties. It's hard to legislate and restrict because the data is taken from a whole ecosystem : Telecommunications, cloud services, civilian infrastructure, social media etc. and most of the data is collected during times of peace. Warfare is often explained with national security as a reason, which then again is a legitimate interest or fulfills other opening clauses in data protection and privacy laws. It is a problem that the richest men in the world, close to the US admin, lead the biggest companies worldwide, almost all in the US, and control almost all of AI and AI warfare. Project Maven from 2017 was continuously developed on and is now the Maven Smart System , which was used in Venezuela and Iran recently. Our Art. 15 GDPR right of access as it is right now is making up for Germany and Austria's lack of discovery and disclosure rights respectively. Controllers can usually drag stuff out, cite trade secrets and rights of others to evade data access, but the data subject barely has any power. Not having to justify the access request and it not having to be limited to data protection rights is good in this regard and needs to be kept up. Otherwise, also too much confusion and court cases whether a request was abusive or not if now, any request for a court case instead of privacy rights is deemed possibly abusive. We don't only need to focus on reidentification in general, but about the ability to single people's data out; you might not be able to identify them, but you can build a profile anyway. Learned about the term digital twin , or in terms of user data, a data twin that can be used for similation and is similar enough. AI-act-standards.com exists. Many don't know that the AI Act isn't a GDPR for AI, but serves more as market classification, as it sorts AI into different boxes who have to fulfill different requirements. The details of these requirements are/will be set with CEN/ISO standards and frameworks . You can see the progress of development on these standards on that website, and what they cover and how they interact. Hovering over the elements gives additional info. This is done by the JTC21 , and you can also get involved by registering with your national standardization body (in Germany, this is DIN) or when they do public consultations. Disabled people experience both extremes of AI - better accessibility options, often more reliant on AI, so also more subject to surveillance and having their privacy rights violated, while bad governments can use the data to harm disabled people, all under the guise of research. Marginalized groups are often the first trial group in anything, while not being stakeholders in the tech, or even invited to the table. See: AI used in immigration etc. and with deregulation and AI everywhere, we see a loss of reasonable suspicion thresholds in law enforcement and other groups. Learned about adversarial auditing . The previous two days, I did the whole fancy dress pants and blazer thing (one black blazer, one dark red/purple blazer), but for the last day and the drive home, I wore my Bearblog shirt and wide orange jeans: Someone from noyb staff thankfully recognized me and approached me, so we talked for a bit until he had to leave for another lunch meeting. That concludes the human contact I had. And then I left to drive home with my wife. She will hopefully soon write a guest post on my blog about how she navigates a new city in another country without mobile data/a smartphone (she has a tablet with WiFi only), because while I was at the conference, she explored the city on her own. It's kind of difficult to show up to these conferences as someone who isn't sent there for work, who doesn't have coworkers or ex-coworkers also attending, and who doesn't have much or any industry contacts yet. Most people there know each other from work or previous/other conferences, and I don't. These events are primarily for networking, keeping in touch, and talking about what you have seen and learned though. I couldn't discuss anything with anybody present, and it made me feel really lonely and silly. Just going up to people and striking up a conversation is not my strong suit, and it's something I am working on and has already gotten better, but the mask I am usually wearing in these big crowds and gatherings because I am on immunosuppressive medication is actively keeping me isolated. I know people have trouble understanding me, can't see me smiling at them, and think I am sick, so that keeps both sides hesitant. Unfortunately, if I attend next year, I will have to leave away the mask and maybe try out these protective sprays for nose and throat that are supposed to reduce viral load. It seems like you can only 'afford' to wear a mask if you are already in a group of people. Weeks before the event, I asked some people if they would attend, they said they will and we had a group chat of 10 to coordinate meetups. But during the entire conference, I was the only one trying to make something happen - saying where I am/where I will be, identifiers you could spot me with (as we never met before and you can't see name tags well on the lanyard), meeting points etc. and the two people mentioned were the only ones who took me up on it. The others just ghosted me/ignored my messages. That saddened me a lot during the conference. And unfortunately, these types of events are always really exhausting to me beyond the normal amount everyone experiences, because of things that trigger my conditions, my lower energy, my needs to lie down sometimes, sensory issues, food restrictions etc. so I really have to weigh if it's worth it to me. I'm not sure it is, without the social aspect. Many of the panels I chose had an issue of being not well organized. Instead of short speaker times, precise audience questions, interactions, dialogue, disagreements, different sides, answering the panel's topic and offering solutions etc., it often resulted in every speaker having a 10 minute monologue saying their peace, the other speakers not reacting or intervening because it's too much, everyone more or less saying the same thing or zoning out, and then having too little time to really give much attention to audience questions. Some gathered audience questions to answer them in batches and predictably, that resulted in nuance being lost and almost nothing being precisely answered. From many panels, I walked away with less learned than I wanted to, and just being reaffirmed in what everyone knew already. There were almost no further or new resources, or real takeaways of what the next steps should be and how we can tackle or solve an issue. They say " there should be more transparency " but not how we ask for it, how we legislate it, how it should happen. It's often just a vague " Someone should do more of something, and fast. " It was easy for people from the EU Commission to dodge mine and others' questions about the omnibus bullshit with no convincing answer. (: It disillusioned me a bit about my own goal to be speaking at a panel one day, because so often it felt like it was just there to platform someone to give them a chance to ramble and that's it, or just so that they can put this on their CV. Looking into the panelists, so many of them are genuinely great, very accomplished and admirable people with a lot of expertise, but the way things were set up, it couldn't shine through. You would have been better off talking to them directly. As a final bonus for reading this far, help me delete this (fortune) cookie. Reply via email Published 23 May, 2026 Contesting AI & Defending Democracy ; Possibilities for European AI Futures ( x ) Youth protection through inclusion and empowerment : a rebuttal of the exclusion-based narrative ( x ) Intimacy by Design: Governing Human AI relationships ( x ) Microsoft co-wrote parts of the EU's Energy Efficiency Directive , which allows data centers to keep their energy use confidential under the guise of business secrecy. The draft literally had paragraph's of Microsoft's proposal copied in unchanged. The Dutch government used racial/ethnic profiling via algorithms in the assessment of childcare benefit applications, which led to false allegations of fraud against thousands of families, particularly affecting those from ethnic minorities. I heard about this before, but learned more about it that day. To contest it all and defend democracy, we all need to train our AI literacy skills , support and have good tech journalism that questions and exposes it all (404media is, imo, a good example of what they meant), crafting and changing the social media narrative around AI and Big Tech, listening to affected people, demanding transparency via standards and audits etc. We cannot forget that officials know ; many of the effects we criticize are not accidents or side effects, they are the entire point. Like when tech predominately negatively targets marginalized communities, this is a bonus to people in power, and nothing to be fixed. Workers can resist by reminding their leaders of the liabilities and legal risks, strategic issues, money issues etc. that AI brings; demand specific definition of the needs that AI will fulfill at the workplace, instead of letting AI become the purpose instead of the tool. Age verification is racist and migrantphobic : Many people have issues with their ID, or have none, or are undocumented, and age verification in their country requires them to have contact with officials, police, etc. Age verification is transphobic : Relying on ID means many trans people are forced to reveal their deadname or are forced to come out, as it reveals they are trans if the ID is not or cannot be updated. The platforms are harmful, but we have so many ways and ideas against that that doesn't take away important spaces and support groups or bar entire groups of people. Age verification makes it possible for platforms to avoid working on their problems and becoming better, enables avoiding legislation and regulation, and enables control and surveillance by them; meanwhile, the truth is that you don't suddenly turn 16-18 and know how to handle porn, gore, harassment and all other negative parts of social media. The negative sides to social media that are named as the reason for age verification and banning of social media for specific age groups also affect adults negatively . We need to put more effort into education on how to handle these things. Yes, we can protect children's privacy by banning them off of platforms, but this also affects their other (digital and offline) rights, and privacy rights don't trump all . Children and teens should learn and be encouraged to control their own spaces and moderation via FOSS : Matrix, Mastodon, etc. where they can also seclude from adults and aren't reliant on Big Tech. Age verification and banning would take this away from them and also make it harder for FOSS projects. If children only ever enter the political discourse as victims, the only response can be rescue; that it why we have to make sure they enter as participants. Protection is not (just) space away from the risk, but confronting the systems that cause harm and eliminating them. 16-18% of US citizens report having engaged romantically with a bot, 45% of them said it made them feel more understood, 36% said it gave them stronger emotional support than their human partner. Problem: Current version of AI Act doesn't cover romantic and sexual use, no guidance for safeguards for emotionally responsive AI systems that protects around the risk of suicide, crimes, distress when service slows down or shuts down or model changes, discrimination as you get more if you pay etc.; drafts mention some of it now in Art. 50. With all the talk around becoming emotionally dependent on AI, nudging into harmful behaviors, etc. we cannot forget that you are also vulnerable on other services and in human romantic relationships, where the same routinely happens (weak argument, but to be fair, I also often forget this). We also cannot forget that it is not always a replacement - it often just supplements social life, and there are also surprisingly many people who just don't want or need romantic or sexual relations with a human ; they want bots specifically , and only bots. Disclosure agreements (meaning: labels everywhere that this is just a bot and not real) are most often useless, because people know and intentionally seek it out (exception for Insta/Snap DMs etc.) Simplification for Whom? Unpacking the Consumer Impact of the Digital Omnibus ( x ) My Chatbot, My Confidant: Protecting User Privacy in Generative AI Conversations ( x ) Informed consent: The breakthrough in Art. 88b GDPR / Digital Omnibus and current initiatives in the field of PIMS and technical standardisation ( x ) Digital Legacy Beyond GDPR: Succession, Data Protection, Access Rights, and Platform Power ( x ) The Agentic Assistant: What does Big Tech’s goal of creating a universal digital intermediary mean for society? ( x ) Designing Collective Technology Governance ( x ) The digital omnibus is mostly there to enable AI made in Europe to aid sovereignty and be competitive with US and China; AI here needs a framework to access data without much regulatory risk - that is what the EU Commission person said. Enforcing the law and and making it sharper is actually leveling the playing field and furthering innovation, because there is a massive power concentration of a handful companies that can do what they want, barely pay fines, have the fines suspended because of the US government bargaining with the EU, or who see them as a cost of doing business. Competition is impacted this way, as small companies are hit harder than the big ones. If the omnibus goes through with changing definitions of personal data etc., it will take years for case law, literature, standards etc. to catch up, it wastes money in companies who need to re-do everything to comply; so it doesn't simplify anything and makes praxis harder. You may set ChatGPT/Claude/Gemini etc. to not send feedback or training data in your settings, but when you react thumbs down/up to their request of whether the output was good or not, or choose between two different versions, the entire chat log until then gets sent for training and potential human review. So, these popup feedbacks override your settings . I need to read more papers by Theodore Christakis. Here is one of them. US and UK discovery and disclosure laws/principles go directly against EU data minimization principles; as long as data is relevant to a case it should be accessible, which is why in their cases, they can just have access to million's of people's data if necessary, and in a divorce case, they have the right to ask for AI chatlogs. There is no AI protection or privilege: If you use AI for legal stuff, you have no expectation of confidentiality like you would with a lawyer, so it is not safe from discovery. There is tension between tracking for harmful behavior/threats vs. data privacy rights ; what if someone threatens to kill themselves, kill others, etc.? Should company look for it, track it, report it, alert anyone, suspend the account, send help resources? Still unclear. There is also tension between people wanting the bonus features/ease of use coming from pesonalization and free services, while also not wanting to be tracked or charged. Advertisers see themselves as enablers of a good thing, as people want fitting ads, good algorithms, good suggestions, and free access; so if their business model is challenged or fails, people will have worse access and worse user experiences in their view. They also fear that if their business model is hindered, things will move into a more extreme, embedded, hard to avoid direction that you don't control or decide (Black Mirror ad type of stuff). I previously wrote about Consenter on the blog, and one panel had people from it there and showing screenshots; changed my mind on it a lot and made me understand the new features and goal better, I will probably write an update on it some time. We have different other options all covering something different about tracking, cookies, consent, or going about things differently, old and new: ADPC, GPC, ConStand, Global Privacy Control, DoNotTrack etc.; important for new stuff is granular consent, sent to the website, user given explanations etc. Uninformed decisions and bad practices lead to unfair competition ; bad actors erode trust level overall, so users resignate, experience fatigue and say yes in the same rates between "good" and "bad" services. Will read soon: Our data after us by the CNIL , and future release: Model rules on succession and access to digital remains by Eigenmann und Harbinja Digital remains can be split into assets (copyright, crypto, business tools, money), personal (messages, photos, identities, AI replicas), and third party data. GDPR only addresses living people; dead people's digital remains are subject to member state laws. There might be a need for something harmonized and European, though. For good digital hygiene , we should remember death and make it as easy as possible or sensible for the people we leave behind to get the access they need to manage our stuff how we want them to. Leave instructions, set emergency/legacy access when available (Google, Facebook, Instagram and Apple have it), include digital assets in your will, decide how your data is allowed to be used after death, especially around AI replicas. Hospice, nurses, families etc. should learn to ask affected parties about these things. Thanks to the focus on agentic AI, there is massive need for inference compute, which is super expensive. Almost all of it is in the control of, or can only be afforded by, the hyperscalers. At the same time, anything that seeks to enable or disable things for AI agents on the web can also affect accessibility programs like screen readers. It is in the best interest of the Big Tech companies to keep things individual, because it distracts from the collective issues and changes they'd have to do; it is easier to blame the person for agreeing to tracking than make sweeping changes to how much can be tracked. Individual consent doesn't consider the fact that data doesn't just affect you, but reveals things about your family, friends, partners, coworkers and more, as data is deeply interconnected. If your friend agrees to share his data and it also includes you, that is your data, still going to the service you'd have disagreed to. We as users have no collective bargaining tools yet; even big worker unions aren't negotiating with Microsoft about the terms of their employer using Microsoft Teams, when they actually should. We should also build up data unions made from users who bargain with the platforms. Strikes could look like boycotting the service, blocking trackers, scrambling data, massive amounts of access requests etc. Look into something called a Worker Data Trust ; this was used to prove Uber's predatory dynamic pricing (Worker's Info Exchange). Lots of workers made access requests, the data was combined and analyzed by researchers. Data-driven warfare : AI, civilian risks, and corporate responsibility ( x ) Digital Omnibus meets the Charter of Fundamental Rights ( x ) Toward a Standard for Fair AI-driven Recruitment ( x ) Data protection law as a shield, not a weapon: empowering historically marginalized communities in the EU in times of de-regulation ( x ) -> this choice was especially rough, because I was also very interested in ' The U.S. Deregulatory Effect ' happening elsewhere at the same time The AI warfare one was a bit of a letdown, because they all just accepted war as a right, an inevitable thing that has to happen. There was not even a nuance of fighting war itself, or banning AI weapons, etc; it focused more on the dual nature of the data , in which through surveillance, tracking, etc. not only can military use it to target people, NGO's and others can use it to warn, evacuate, render humanitarian aid etc. and document realities on the battlefield. There was also no possibility for the idea that we could enter an age where drones fight drones automatically and no one needs to get hurt or be traumatized or get to kill people like a game, and that is only because everyone is so attached to the idea that war has to have human casualties. It's hard to legislate and restrict because the data is taken from a whole ecosystem : Telecommunications, cloud services, civilian infrastructure, social media etc. and most of the data is collected during times of peace. Warfare is often explained with national security as a reason, which then again is a legitimate interest or fulfills other opening clauses in data protection and privacy laws. It is a problem that the richest men in the world, close to the US admin, lead the biggest companies worldwide, almost all in the US, and control almost all of AI and AI warfare. Project Maven from 2017 was continuously developed on and is now the Maven Smart System , which was used in Venezuela and Iran recently. Our Art. 15 GDPR right of access as it is right now is making up for Germany and Austria's lack of discovery and disclosure rights respectively. Controllers can usually drag stuff out, cite trade secrets and rights of others to evade data access, but the data subject barely has any power. Not having to justify the access request and it not having to be limited to data protection rights is good in this regard and needs to be kept up. Otherwise, also too much confusion and court cases whether a request was abusive or not if now, any request for a court case instead of privacy rights is deemed possibly abusive. We don't only need to focus on reidentification in general, but about the ability to single people's data out; you might not be able to identify them, but you can build a profile anyway. Learned about the term digital twin , or in terms of user data, a data twin that can be used for similation and is similar enough. AI-act-standards.com exists. Many don't know that the AI Act isn't a GDPR for AI, but serves more as market classification, as it sorts AI into different boxes who have to fulfill different requirements. The details of these requirements are/will be set with CEN/ISO standards and frameworks . You can see the progress of development on these standards on that website, and what they cover and how they interact. Hovering over the elements gives additional info. This is done by the JTC21 , and you can also get involved by registering with your national standardization body (in Germany, this is DIN) or when they do public consultations. Disabled people experience both extremes of AI - better accessibility options, often more reliant on AI, so also more subject to surveillance and having their privacy rights violated, while bad governments can use the data to harm disabled people, all under the guise of research. Marginalized groups are often the first trial group in anything, while not being stakeholders in the tech, or even invited to the table. See: AI used in immigration etc. and with deregulation and AI everywhere, we see a loss of reasonable suspicion thresholds in law enforcement and other groups. Learned about adversarial auditing .

0 views
ava's blog Yesterday

my experience in brussels

For the CPDP 2026, I was in Brussels this week. The inner city with all its cute little shops, fancy buildings and barely any cars was very charming. Have some pics. We spotted Super Dragon Toys on the way and had to stop there, of course. Surprisingly, they had a lot of Sanrio, and even a blind box I was trying to get months ago that was sold out everywhere on and offline before, so I grabbed one. Got Pochacco; I liked all designs you could get in the box, so that was fine with me. I wish we had a bonsai shop: Also came across a colorful shop full of stuff around penises, vaginas, and breasts? We also went to see Mandalorian and Grogu in the cinema there; very epic layout of the room. I also enjoyed the movie; I don't get the reviews at all. Typical Star Wars fan cynicism and everything-has-to-be-dark-and-gritty-like-Andor. What was surprising is how little English is written anywhere or even reliably spoken. In German tourist-y and big cities, you have an English version of almost anything printed underneath, and often even more languages, especially when close to borders. Brussels doesn't really give the same courtesy as much as I thought it would, which caught me off guard because of all the EU buildings and employees there. Many people seem as if they don't learn English in school at all and struggle with it? I booked something a few minutes from the venue that was affordable, looked good on pictures and had a good rating. I read the top description and bottom checklist and it sounded nice. What I didn't read were the actual reviews (my bad, I know). If I had done that, I wouldn't have booked. I read them 10 minutes before arrival and it turned out that this is an AirBnB type thing posing as a hotel. The reviews called out this lie, but still rated it high (enough). A guy waited for us to get us the keys and explain everything, and we shared an apartment with a stranger that had his separate bedroom. Yup. Stressed me the fuck out. It was clean enough in the bedroom and bathroom (had one to our selves directly attached to it thankfully, because we had the double). The rest was meh. Kitchen utensils were severely lacking and often dirty. It was good enough to sleep and be gone the entire day. The stranger stayed in his room all the time, but smoked in there and it stunk through the entire apartment. We couldn't even get hot water reliably, and the sink spilled everywhere. So if you are ever in the same position... Brussels City Chambers is not a hotel, or even an aparthotel like they say. The info is hidden way below, nested between lots of other info, now saying " Comfortable apartment with shared living room. Choice between private room with private bathroom and rooms with shared bathroom. " You don't even get shown that during the booking process when you choose an accommodation, otherwise I would have noticed it then. Most of the pictures supplied are not of the property at all. So while technically you can find out if you are paying a lot of attention, you are meant to be misled if you just wanna be quick about it (and I hate booking hotels, so unfortunately I rushed through it, my bad). Big city, tourists, of course it's full! To be expected. I've been in big tourist-y cities before. But my god, now I understand why Belgians in Germany drive as if they are trying to kill you. They are also trying to kill each other in their own country. Lines on the ground get completely ignored, and so are any traffic signs or lights. The speed limit doesn't matter. Everything is a mere suggestion and they are driving like it's an off-road jungle adventure. They get mad at you for taking the rules seriously. We Germans are a rule-loving folk and get mad if people cross the street during a red light, so this was a culture clash. We were frequently honked at for following the traffic rules (staying in our lane, driving the speed limit, etc.). People just endanger others by speeding through everything, cutting you, overtaking you and almost crashing into someone else, and they don't blink long enough or at all to even let you know they are gonna swerve into your lane... they all drive like reckless, annoyed Taxi drivers in an indestructible tank. It wasn't an asshole here and there, it was everywhere, all the time, every vehicle. We soon found that we are just the odd ones. You felt it even outside the car, as a pedestrian. It felt like you weren't safe anywhere because everyone is going where ever they want, so bicycle lanes and bus lanes still had speeding cars, people almost ran over pedestrians who had the green light to cross, motorcycles drove on the sidewalk... I thought I would get ran over on this trip for sure. I also do not like how the motorcyclists can just speed past you in the middle in the tunnels without any care in the world. And how Apple Maps handles the tunnels!! They don't make it clear whether you are supposed to descend into one or keep right to avoid it. And finally, the way crossings and roundabouts are designed in Brussels is completely not intuitive and insane. I can't even explain it, but you really have to guess how you're supposed to drive, which adds to the whole messy driving culture. Multiple times, I thought we were going the wrong way for sure, but it ended up being correct. The almost complete app reliance to park is also nuts. We tried the parking machines that are spread around the streets, but they are very slow, and if you set the language to German, the process is broken and doesn't let you book anything. It's also very focused on the Belgian license plate layout despite Brussels being so tourist-y and full of people from outside the country, so entering anything with a different layout is risky and seems to overwhelm the process. It was much easier to handle in an app (Indigo Neo), but they only accept credit card; I am lucky to even have one. I expected more care around the different types of people coming into the city from a city that is the capital of Europe, essentially. If there is a next time, we'll definitely take the train, even if it is more expensive and more annoying with luggage. We went to Pure Veg India, Kitsune Burgers, Verdo, and grabbed some things to go from BS40 and a bakery I forgot the name of. Big fan of all of them, except for the dry pastries from unnamed bakery. Verdo was so amazing and my highlight of it all. I don't know if I will be back next year, also has to do with some conference disappointments... I really wanted to like this city, also because I do sometimes toy with the idea of getting more involved in EU stuff, but I think I would be really unhappy living there :< Reply via email Published 23 May, 2026

0 views
fLaMEd fury Yesterday

Split Enz At Spark Arena

What’s going on, Internet? Last night we headed back to the Spark Arena for another show. This weekend was Split Enz for the Forever Enz tour. After an eleven-year hiatus of playing together, they recently reformed to tour across NZ and Australia. Split Enz formed in 1972 and released 10 studio albums before breaking up in 1984. Between then and now the band has had several brief reunions. They had broken up before I was born but their music was still a big part of mine, and many other kiwis’ lives growing up. The Spark Arena was packed by the time we arrived near the end of the opening band, Hans Pucket. Our seats weren’t the most comfortable as we were at the end of the horizontal seats before they curved around so we had to twist around to catch the stage. The seats at MGK , while further back, were better positioned for viewing. Anyway, we were in for an audio and visual treat. Band member Noel Crombie’s visual art was on full display with the visuals on screen and the costumes the band wore. The setlist was packed with all the songs that a crowd this size would expect with my favourites being Hard Act To Follow, I See Red, Six Months In A Leaky Boat, and I Got You (which has to be their greatest song). I ducked out before the encore because I wanted to use the bathroom and escape the exiting crowds. Apparently I missed out on an incredible spoon solo to wrap up the show. While I was waiting for the family to get out, I noticed that the copy of True Colours I’d picked up before the show was water damaged. Not sure how but during the show water must have spilt onto it. I was disappointed, but confirmed the vinyl wasn’t damaged and shrugged it off. Adds to the story I guess. I also struck up a conversation with a woman who was also waiting for their friends to get out and we discussed how amazing it was for a band formed by a guy from rural NZ to get as big and acclaimed as they were. It’s also interesting that during the time they were able to get big while wearing the costumes and makeup they did. It was pretty out there for the time. Their music speaks volumes, I guess 😃 I had an incredible time at the show and I’m so glad I managed to add Split Enz to the list of acts I’ve been able to see live. Laterz. Hey, thanks for reading this post in your feed reader! Want to chat? Reply by email or add me on XMPP , or send a webmention . Check out the posts archive on the website.

0 views

Music discovery

Recently stumbled upon a couple of artists that I've been enjoying, thought I'd share. It's no surprise I've been going down the rabbit hole of protest music... Masks Off - Jesse Welles Fuck your AI - Luke Nickle On a side note, I wish more indie artists would offer CDs. Jesse Welles has vinyl on his store, but no CDs.

0 views
iDiallo Yesterday

The commencement speech that shook the world

There he was, the man at the helm of innovation. Eric Schmidt, the former CEO of Google. The man who once said, google doesn't need to record your conversation, it already knows everything about you. Yet he didn't see this one coming. In his speech, he looked clear-eyed into the crowd of graduates and told them that AI is inevitable. There was a group of people who will have a hard time joining the workforce. Companies keep using AI as the excuse for laying off workers. Dario keeps telling us by next year, AI will take over all jobs and there is nothing we can do. They will have nothing, and they better embrace it and be happy. Well, they will have a school loan, but that’s it. If you were an external observer, maybe an alien watching humanity from a distance, you would think that AI is a new species that emerged from a lake and is taking over the world. You would never tell that the people spreading this fear are also the ones selling the tool that they swear will turn us all into gods. It's not just a capable tool that can be useful for coding, writing, and retrieving existing information. No. It's the word itself. The all or nothing. The alpha and the omega. And it comes as a monthly subscription from a handful of companies. What Mr Schmidt was saying to these graduates is that we are done innovating. Now we regurgitate. And then he was booed. He tried to keep talking but the boos were overwhelming. Somewhere between his words, he managed to say that being anti AI is akin to being anti immigrant, trying to score points. I don’t think it worked. When I read the news, I first read through the transcript of his speech. It seemed as if he was able to go through his material. But I was wrong. Watching his performance on video was a whole other story. There was a man, who had practiced his speech in front of a mirror, most likely with Gemini listening and providing feedback. It probably told him that his speech was brilliant. That it was grounded, and encouraging. "The kids will love it." What he failed to see is that booing was not in the training data. No way Gemini was going to tell him that, because it is programmed to be agreeable and friendly. So yes, he was booed every time he mentioned AI. But I think there is a lesson in innovation right there. AI learns from existing material. It can hardly deviate from what it already knows. When you ask it to come up with something new, it will show you something that seems new, because obviously you don't know all the material it was trained on. If it doesn't have the information, it can't tell you that it doesn't know. It will make it up instead. But what these graduates did was exactly what differentiates people from the robots. They did something completely unexpected. They booed Eric Schmidt. They innovated. Something tells me that kids will be just fine. I may never be able to convince my mom to stop sharing AI videos , but my kids will learn to navigate it. They will continue to innovate. Maybe AI will be like a calculator for them. They will know how and when to use it for maximum benefit and prevent the psychosis altogether. It's never gonna be a replacement for thinking. I was really happy to see the booing because it was the last thing they expected. Just a few days ago, the president of Glendale Community College was booed as well because she chose to have an AI read the graduates names and it butchered the process. AI is not inevitable. It's a nice addition. That’s it. We don't just have to accept things as they come to us. The most valuable human quality in an age of automation is exactly what AI cannot provide: the ability to defy expectations, introduce chaos, and create truly original outcomes. That is precisely the power of human innovation. For fun, I copied the commencement speech from a video and passed it through gemini, it complained about the grammar, but as I said earlier, it couldn't predict the outcome: The emotional arc is clear: acknowledge fear → restore agency → define values → point toward possibility. It reads like something that wants to meet graduates where they actually are, rather than giving them generic optimism. Then I asked it if it would result in booing: What makes the speech work is that it does not say: Instead, it says: That framing is resilient. Not so resilient after all. Anyway, congrats to the 2026 graduates! “everything will be fine,” “stop worrying,” or “technology is inherently good.” the future is undecided, humans remain morally responsible, and participation matters.

0 views
Susam Pal Yesterday

Don't Roll Your Own ...

This is going to be a rant about modern web design practices. But before I get to that, let me begin with a familiar principle from the world of cryptography. Among software developers, and especially among those who work on security-sensitive systems, there is a well-known maxim: Don't roll your own crypto. This does not mean that nobody is allowed to write cryptographic code. Someone has to. It means that, for ordinary production software that protects sensitive data of users, we should not rely on a private, unreviewed implementation that has not been vetted by the wider software development community. We should use established, vetted software packages or tools wherever possible. Fortunately, it is now standard industry practice to avoid rolling your own crypto and instead use cryptographic algorithms and packages that have been peer reviewed and stood the test of time. It wasn't so some twenty years ago. I have seen several flawed home-grown RC4 implementations early in my career, with issues like improper initialisation vectors, predictable keystreams and partial leakage of plaintext into ciphertext, putting sensitive data of users at risk. But today, major e-commerce websites or banks typically do not use home-grown cryptography for its web services. In fact, in regulated domains such as payments, healthcare and personal data processing, doing so could violate requirements for strong cryptography, possibly leading to hefty financial penalties. Website design is obviously not cryptography. A broken scroll bar is not the same kind of failure as a broken encryption scheme. But I wish there were a similar maxim for website design as well. There are many aspects of websites where, I think, developers should not be rolling their own X, especially when X is something browsers already do well and something users depend on every day. Here I present a list of such X. Of course, there are valid scenarios where you may need to roll your own X. But here I want to focus on the cases where you should not roll your own X, and how doing so can lead to a worse user experience, at least in my experience. I am not saying that nobody should ever build anything themselves. As someone who does a lot of creative computing myself and develops fun tools from time to time, I am a big proponent of developing your own stuff. But when it comes to developing user interface features for serious websites that people need to use to get their work done, I wish the software development community were more conservative in deciding what fancy feature goes into a website and what is left out. Do keep in mind that I am no expert in user experience. Far from it. So none of what I am saying here should be taken as a recommendation. But I am a user of the Web, and as a user, I have found some modern web design patterns to be frustrating. This post is a lament from one user of the Web, not a design guide. Of all the things I mentioned above, the one that bothers me the most is custom scroll behaviour on websites. I am used to how page scrolling responds to my mouse, touchpad or keyboard input. When you override the default scrolling behaviour of the web browser with your own implementation, it 'breaks' the page for me. The page now moves too slowly or too quickly when I scroll. Keyboard scrolling may or may not work. You take something I am so familiar with that I don't even think about it, and turn it into something unfamiliar that I now have to think about. Custom link navigation is another pet peeve of mine. Web browsers can already handle links very well. You could say that this is the whole reason web browsers even exist. Following links is their bread and butter. You shouldn't have to mess with that behaviour at all. If you think you need to, reconsider what you are trying to achieve and whether it is really so important as to disrupt normal link navigation. The worst offender I have found here is GitHub. When you click on a link on GitHub, say, a file link or an issue link, it triggers a massive piece of functionality implemented in JavaScript that handles the link click for you. If you don't believe me, visit your favourite project on GitHub using Firefox or Chrome, type F12 to open the browser's developer tools, then go to the 'Debugger' or 'Sources' tab, find 'Event Listener Breakpoints' on the right sidebar, expand 'Mouse' and select 'click'. Then click on a link on GitHub and see what happens. I'm sure I am not the only one who has noticed that, on GitHub, a clicked link sometimes takes too long to load. Ironically, it is often faster to open the link in a new tab than to wait for GitHub's JavaScript code to handle the navigation in the current tab. A custom password input field is another such hazard. Fortunately, custom password input fields have become rarer over the years. The password input field that comes with the web browser is generally well equipped to handle passwords. It can offer to save passwords, fill them in later and generate strong passwords for new accounts. It can also warn when a password is submitted over an insecure HTTP connection, work well with password managers and autofill, and cooperate with mobile keyboards and accessibility tools. If you replace the browser's password field with your own fake version, you may break all of that. You may also end up using an ordinary text field and masking it yourself, in which case the password may be treated by the browser, the operating system or assistive tools as ordinary visible text rather than as a password, thereby exposing the password in ways you did not intend. Custom date pickers are another common annoyance. I know that does not help you select a date range. But that is okay. You can provide two date input fields, one for the start date and one for the end date. I am willing to pay the small price of using two different inputs to select a date range if that means I can use my favourite web browser to navigate the calendar and select dates the same way everywhere. What I am less inclined to do is to learn ten different ways of using the date selector in ten different implementations across ten different websites. Right now the implementations of date selector are all over the place. Some require you to zoom out of the month view to enter a year view, where you can select years. While you are there, you cannot change the month again until you return to the month view. Some require you to click the previous-year button literally forty times to select your year of birth if you are old enough. Some do not let you type the date at all. No. I do not want to learn your calendar widget. I just want to use the date picker in my favourite browser, which is quite sane. Saner than your custom implementation. If you need to have a calendar widget to support browsers with inadequate native date-picker support, perhaps that support can be added alongside the native date picker rather than as a replacement for it. For example, the ordinary element could be left intact, with a custom widget provided in addition to it so that users can manipulate the same field. In general, just stop messing with the form controls. They almost always introduce new problems while solving some existing ones. And while you are at it, don't keep changing your website layout and interface every few months! I may adapt to the new design, but my ageing relatives cannot. For them, every time you change the user interface, it amounts to learning a whole new tool. If every website keeps doing this every few months, they have to spend a significant amount of time relearning familiar things for no functional benefit. Please just let them enjoy their retirement. Imagine how you would feel if a Linux distribution decided to redesign all its core commands and their command-line options every few months. Or imagine how you would feel if the buttons of your washing machine were rearranged every morning. It wouldn't be pleasant! Read on website | #web | #technology Don't roll your own page scrolling. Don't roll your own link navigation. Don't roll your own text selection. Don't roll your own context menu. Don't roll your own copy and paste. Don't roll your own password field. Don't roll your own date picker.

0 views
Jeff Geerling Yesterday

News about Raspberry Pi 6 and Microcontroller Development

On Thursday, three of the lead Raspberry Pi engineers hosted an AMA on the r/engineering subreddit . One of the most interesting tidbits was on the Pi 6. Looking back at previous launches: Following that cycle, one would expect a Pi 6 3-4 years after the Pi 5, which would put it in 2026 or 2027. 2012: Raspberry Pi 2015: Raspberry Pi 2 (+3 years) 2016: Raspberry Pi 3 (+1 year) 2019: Raspberry Pi 4 (+3 years) 2023: Raspberry Pi 5 (+4 years)

0 views
flowtwo.io Yesterday

Othello World

I was introduced to the board game Othello (also known as Reversi) on a recent trip to Japan. It's one of those games where you can learn the rules in 5 minutes, but the gameplay dynamics are surprisingly deep. When I saw it's played on an 8x8 board, like chess is, I immediately started thinking about how to program a game engine for it. The 8x8 board is helpful because it allows you to represent the board state with 64-bit longs; each set bit in the number indicates the presence of a piece on that square. When you perform a bitwise operation on these numbers you're essentially computing multiple piece movements in parallel with a single CPU instruction. This computational efficiency enables deep searching of the move tree. I purposely started out without reading too much about game strategies because I wanted to explore it through coding the engine logic. It didn't take long to create an algorithm that is significantly stronger than me. Although it's not a high bar. There's a demo available here if you're interested in playing it. The basic building blocks of the game engine are as follows: Once you have these four elements built and wired together, you have a functional game engine to play against. The first two pieces are fairly straightforward—the real strength of an engine comes from how the last two are implemented. Like I mentioned above, we can represent the complete board state with just two 64-bit numbers. One number represents the black piece positions and the other for the white pieces. How you encode the 64 squares to the 64 bits is arbitrary, but I chose to represent each row as one byte (8 bits) and from left to right, top to bottom in terms of bit significance. In other words: And that's all that's needed to represent the piece positions. I created an immutable data class to encapsulate this: In Othello, if one player has no legal moves at any point in time, they skip their turn and the other player gets to go again. If both players have no legal moves, the game ends. Instead of computing both player's legal moves every time to check for those situations, I created a enum so that information somewhat pre-computed. The combination of and provides everything needed to determine the state of the game for the other stages in the engine. This is where things get tricky. Move generation requires codifying the rules of Othello in such a way that, given a board state, all the legal moves for either player can be computed—quickly, ideally. In Othello, you can only place a piece somewhere that will "sandwich" the other player's piece(s) between the piece you're placing and another "anchor" piece of yours. There can't be any blank spaces either. This rule applies to any of the 8 directions of the board (diagonals count). This screenshot illustrates the valid moves for black in this position: This function will calculate all the eligible squares for a single direction of movement (up, down, up-left etc.). What's cool is that it calculates eligible squares for all 8 rows/columns/diagonals at the same time. It's invoked as follows. For each of the 8 directions, you pass in a movement function and an ineligible square bitmask if required for that direction. For example, if shifting towards the left, you need to mask out the pieces on the leftmost column to prevent wrapping to the other side of the board (similarly for moving right). Moving up or down doesn't require a mask because shifting the bits "up" or "down" enough will just drop them from the number entirely. The function will return all valid moves for a given position for the "moving" pieces (the 1st argument). The moves are returned as a where each set bit is a valid square to place a piece. This part was interesting to me as I don't know much about strategy in Othello besides that the corners are important. The corners are important because once you claim a corner it can't be unflipped by the other player. Also, simply maximizing for the most pieces isn't the best strategy either, apparently. I do have a "greedy" algorithm that you can select in the demo app if you want to see that strategy in action. But of course, closer to the end of the game, having more pieces is more important since that's how the winner is determined. I represented this in the eval function by linearly shifting the weighting towards piece score as you get closer to the end of the game. I have two piece scores actually. The is a step function that only returns 1 or -1 depending on which piece colour has more pieces. But in the heuristic evaluation, I look at the actual piece differential score which returns between -100% and +100% depending on what "percentage" of the overall possible pieces the leading player has. That score is given 40% weighting in the heuristic evaluation function, the other 60% is a positional score based on the following square values I came up with: This was my best guess at which squares matter most. My reasoning is that the more central the square is, the more likely it is to be flipped. The closer to the edge it is, the less likely it is to be flipped and the more likely it is to be used as an anchor piece. So putting this all together, the heuristic evaluation is computed as follows: And that's it. The top-level function provides a relative score between -1.0 and +1.0 which represents the strength of a given position, relative to black. Since Othello is a zero-sum game, a good score for one player is an equivalently bad score for the other player. This is important in the next phase, the move search algorithm. This part of the engine is fairly "textbook". There's lots of explanation for how these algorithms work on wikipedia and chessprogramming.org is an incredible knowledge base for this sort of thing too. For zero-sum games, you can use a variant of minimax search called Negamax . That's what's shown here: For Othello specifically, the Negamax function needs to handle the case that the moving player has no legal moves and must pass to the opposing player. This is in the branch in the middle. We check if we're already in a position where the previous player had to pass, which means both players can't move and the game would be over in this branch. If not, we simply call again with the SAME and reverse the score returned from that call. With those 4 components built, I now had a functional engine to play against. I created an class that accepts a move selection algorithm. It exposes 3 methods: - for showing valid player moves in the UI - which validates and then applies a specified player move - which chooses and applies the best move using the I exposed the via a stateless REST API. Each request needs to supply the current game state information in order to make a move. For example: For the demo , it uses HTMX instead to return a rendered board component. The request format is the same but it returns HTML instead of JSON. I read this article recently that took a contrarian view on agentic coding and it's pitfalls. The author makes a lot of good points and it was thought-provoking. While I don't agree that using agentic coding will make you dumber per se ... I do think there's something to be said for regularly exercising the critical thinking and problem solving part of your brain if you want to be a good software engineer. Side projects like this are a great opportunity to do that. The incredible rise in coding competency for AI agents over the last 12 months has made a project like this into a one-shot, one prompt task for a recent LLM. I obviously didn't do that, because the point of this project was the act of doing it, not the end result. I learned a bit about Othello and refreshed myself on bitwise operations. The parts I wasn't interested in doing, the UI and the API wiring, I delegated to an agent to implement for me. To me, that's one of the best parts about coding with AI. I can now offload the tasks I'm not interested in or that's not as critical, and focus on the parts of the system I want to work on. It's never been easier to build and bring ideas to life with software. Board representation Move generation Position evaluation Game tree search

0 views
iDiallo Yesterday

How to Talk to Your Coworkers

You know you explained the same issue before in two or three different places, yet here they are asking again. Why don't they understand you? Why do they ask the same question when you've already given them the answer right there on Jira? Are they stupid? Lazy, maybe? Do they not take the time to read? I often hear this from developers. They write clear documentation and instructions, and people still bother them to hop on a call. This happens so frequently that I think it is worth addressing. An over-abundance of information is just as confusing as too little. But something I should add is that repetition is normal. In fact, repetition should be a tool you use frequently. To do our jobs as developers, we read instructions. Our tasks are usually carefully written and specced out as a document we can implement and check off. There are usually bullet points, requirements, and acceptance criteria. Sometimes, you could implement a feature by following the instructions without even knowing or understanding what the feature actually does. In other jobs, non-technical ones, people derive their work from conversation. A lossy format. For example, when a non-technical manager wants a new feature, they'll have a conversation with a software architect. A conversation that the architect then has to turn into a spec that a developer can implement. One group talks in instructions, the other in conversations. Which is why they often talk past each other. Whenever I hear developers complain that someone keeps pestering them with questions they've already answered, I know it's because they're speaking two different languages. Just because you provided an answer doesn't mean everyone saw it or understood it. You might think you're giving a fine explanation of how a feature works by describing how the different APIs interact. But you fail to see that your audience has no frame of reference for understanding that APIs are supposed to work together, or what an API even is. In that same vein, a manager who wants to have meetings and conversations about every step of development might find that people are declining their invites. For that manager, meetings and discussions are how work gets done, while others are expecting purely documented instructions. In simple terms, the answer to this problem is: Translate and Repeat. By translation, I don't mean language, I mean frame of reference. There is always a temptation to provide all available information, whether it's too technical or too detailed. Again, too much information no information. Instead of explaining how you are solving a problem, focus on what your solution does. For example, I recently worked on a widget that was showing the incorrect number of sales for the month, and only a handful of customers were complaining. Long story short, it turned out that running a job at what we call nighttime is someone else's daytime. Those customers were accessing the widget before the job ran, and the data was cached for a full day. Meaning they were seeing stale data for up to 24 hours. Our fix involved revamping how we display data, we removed caching and created a normalized table that updates in real time, eliminating the need for a complex query. Internally, we had created new APIs and restructured database tables. What looked like a handful of numbers on the UI was far more complicated under the hood. But when explaining this to a manager, they don't need to know about the cron job, the caching strategy, or how the old system compared to the new one. All they need to know is: "We've updated the widget to display real-time data, and we've added a smarter caching strategy for performance." That's the whole answer. If they want the nitty-gritty details, we can have a separate conversation. But developers often start with the technical autopsy first because that's what we would want if another developer asked us. We want the root cause, the stack trace, the PR link. The problem is, different audiences require different information. While leading with the technical breakdown might make you sound thorough in a meeting, non-technical attendees will walk out clueless and ping you on Slack asking the same questions. The goal isn't to eliminate questions entirely. In fact, no matter how well you tailor your message to your audience, someone will still come back with the same question you already answered. That's exactly why repetition matters. It's fascinating to watch children learn. When I'm doing first-grade math with my kids, we use the same strategy for additions and subtractions. At first, it just doesn't click. I count on my fingers, I use popsicle sticks, and to make it fun I even use my toes. My method doesn't always make sense to them. We'll complete a whole packet of homework and I can tell they're just going through the motions. But we repeat it every day, the same way, no deviation. And somehow, eventually, they just know how to do the math. Not to compare your coworkers to children, but repetition works the same way on everyone. Every time they hear your explanation, they pick up one or two more pieces of it. When you keep saying "we upgraded the payment SDK," they don't know what that means, and stopping to explain that one concept isn't going to unlock the whole picture. But maybe they Google "SDK" on their own later. Then "payment SDK." The next time you repeat your explanation, they're better equipped to follow along. Each repetition gets them a little closer to understanding the full picture. The same applies to managers who rely on conversation to communicate with developers. While it can be hard to extract a clear requirement from a meeting, the information is in there. It just needs to be surfaced and shaped. And honestly a conversation is often a good way to kick things off. Imagine if the manager came in with rigid, detailed instructions while having no understanding of how the codebase actually works. Through conversation, a feature can take shape. Developers can push back, raise concerns, and adjust the scope to something realistic for the current state of the infrastructure. That back and forth is what filters raw ideas into actionable instructions. So when you post a Jira comment or Slack message with a detailed explanation of the authentication flow and token expiry logic and it goes ignored, it's not because your coworker is lazy. It was ignored because it was written in a language they don't speak. They asked again not to annoy you, but because they couldn't extract the answer they needed from what you gave them. You don't need to write longer comments or bold more words. Instead, ask yourself whether what you wrote was intended for the right audience, then translate it into something digestible. And be prepared to repeat it a few more times until it lands.

0 views
Unsung 2 days ago

Lisa’s copy (and cut, and paste)

I love looking at origins of obvious things, because of two things: I’ve been emulating the Apple Lisa recently, and I was struck by how many of its UI strings were slightly or wholly different than what we’re used to. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/1.1600w.avif" type="image/avif"> It makes sense. Lisa came out in 1983 as Mac’s predecessor and really the first GUI that is directly linked to what we’re using today. Even though it borrowed things from work done at Xerox , tons of conventions were not established yet. So, I thought it would be fun to actually take a closer look. For context, Lisa was as slow as it was expensive, and generally considered a failure. It was basically abandoned by 1985. Not much third-party software has ever been written, but Lisa shipped with 7 impressive office apps with fantastic names: LisaWrite, LisaCalc, LisaDraw, LisaGraph, LisaList, LisaProject, and LisaTerminal. The screenshots below come from an emulator and from manuals (this links to the 1984 version, but each manual also includes a link to the original 1983 edition). The emulator is pretty harrowing; please upvote the idea of Lisa in Infinite Mac if you would want to see it! = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/2.1600w.avif" type="image/avif"> As Lisa powers up, we see the appearance of the “wait” dialog box. We’ll encounter more symbols like this triangle, inspired by traditional flowcharts. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/3.1600w.avif" type="image/avif"> Let’s start with menus, as these really were the treasure map to the whole system. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/4.1600w.avif" type="image/avif"> The Desk menu is basically the equivalent of the dock today. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/5.1600w.avif" type="image/avif"> The File menu has Print appended to it, indicating how important printing was still then; a truly “paperless office” won’t really be possible for two more decades (and seemingly still hasn’t fully arrived ). There is no Window menu yet, so the menu also contains some of that burgeoning functionality. Set Aside is what we would call Minimize today. Save & Continue is basically a contemporary Save, and Save & Put Away a hypothetical Save & Close. Revert to Previous Version is the same as today’s Revert. By the way, in the Revert dialog I appreciated the nice gesture of telling the user how much time passed since the last save, and a warning about undo (we’ll get back to this): = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/6.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/6.1600w.avif" type="image/avif"> Print Current Selection would today be just Print Selection. Print As Is is basically Print… but skipping the setup dialog with number of copies, etc. It was added later in Lisa’s life, and today, we’d probably call it Print Again? If you’re noticing a pattern already, it is more wordiness compared to what we see these days. It makes sense. Our growing familiarity with these concepts is what will allow these strings to become tighter over time. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/7.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/7.1600w.avif" type="image/avif"> This is that Print… dialog, by the way, with beautiful “while you wait” and “while you work” verbiage (although usually I do not condone strings getting so close to each other). The manual explains : “You can have the Lisa use most of its attention to print your document while you wait. A document will print more quickly if you choose While You Wait, but you won’t be able to use the Lisa for any other tasks.” The other strings feel less typical. Format For Printer… is Page Setup, but with a lot of quirks. Printers were not usually yet WYSIWYG , able to mirror stuff exactly on the screen. They often came with their own fonts, so some matching was necessary: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/8.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/8.1600w.avif" type="image/avif"> The manual had an entire section called “When Settings Don’t Match a Printer,” and there were I imagine god knows how many error cases that had to be covered, including: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/9.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/9.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/10.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/10.1600w.avif" type="image/avif"> And Monitor The Printer… is today’s Print Center: a way to see the real-time printing status. Note a lot of writing here elaborates further on the “while you wait/​while you work” dichotomy: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/11.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/11.1600w.avif" type="image/avif"> Monitor The Printer was important, by the way, since the manual warned you your printer might occasionally become haunted: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/12.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/12.1600w.avif" type="image/avif"> But, let’s go back to the File/​Print menu. I actually found a version of this menu that comes from a 1982 pre-release Lisa , never launched to the public. Let me show them side by side: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/13.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/13.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/14.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/14.1600w.avif" type="image/avif"> It’s fun to see designers figuring it all out. You will notice the lack of dividers and ellipses actually touching the work-in-progress strings. 1983’s Set Aside is 1982’s very modern Close. Save & Put Away is Put Back. And, at the bottom, it seems the team didn’t yet figure out that the menu options need to consistently use verbs for commands, and adjectives or nouns for toggles – so we see Intended for Printer… (rather than Format For Printer…) and Printing in Progress… (rather than Monitor The Printer…). = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/15.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/15.1600w.avif" type="image/avif"> Lastly, in a released version of LisaList, this menu would come bearing a harrowing Fix Damaged Document command. Not only it doesn’t even have an ellipsis, but the manual also says “there is always the chance that the recovery process will make things worse instead of better.” Vaya con dios, I suppose. Let’s move on to the Edit menu. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/16.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/16.1600w.avif" type="image/avif"> Today’s Select All is a verbose Select All Of Document, and since this is the first public appearance of undo, that feature is also more descriptive, appearing as Undo Last Change. But otherwise the menu feels surprisingly modern, shortcuts and all. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/17.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/17.1600w.avif" type="image/avif"> Unsurprisingly, the first undo wasn’t as developed. We saw earlier in this post “Once you click OK, you will not be able to change your mind, even with Undo,” which today would probably say “This is not undoable.” You could also see a frightening error message arriving without any further clarification, like above. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/18.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/18.1600w.avif" type="image/avif"> Sometimes, the app would warn you undo doesn’t have your back. We’ve seen this before, and here’s another example. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/19.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/19.1600w.avif" type="image/avif"> Since undo only had one step, LisaCalc and LisaList also had Restore Previous Entry for when you changed your mind after editing a cell in the spreadsheet. You had to employ this strategically, as you did the already-mentioned Revert to Previous Version. “You can even undo Undo!” bragged the manual, and I imagine there must have been interfaces where undo came without a matching redo. But the eventual solution, of course, was bidirectional undo/​redo with many steps. This basically only needed more memory, still very expensive in 1983. Above we also see Clear Entries that would just be called Clear today. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/20.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/20.1600w.avif" type="image/avif"> Elsewhere in Edit menu, Clear Lines Off Top would appear in LisaTerminal only, and was a charming (and I would argue better) way of saying Clear Scrollback. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/21.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/21.1600w.avif" type="image/avif"> The next menu, Type Style, would be called Font today. “Type” is typewriter nomenclature – Lisa was meant to be a typewriter replacement. The point/​pitch convention for font sizes and letter spacing also comes from typewriters, and in an older version of that menu even font names arrive from that universe (PS = Proportionally Spaced!): = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/22.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/22.1600w.avif" type="image/avif"> Otherwise, notable is the deterministic Plain Text reset with a P shortcut that would in time lose to printing. I miss this sometimes, this “reset” idea, as I think it would nicely compliment Paste And Match Style. (By the way, Lisa was the last computer to use Apple logo as a modifier key .) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/23.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/23.1600w.avif" type="image/avif"> While Type Style is for selection, Format ¶ is all about paragraphs – HTML people know this distinction as “inline vs. block.” (The pilcrow symbol means “paragraph,” although I did not expect it to be common use even then.) The flyout menus with their convoluted mechanics weren’t invented yet, but in some sense there was no need for them as the options were very limited. It is interesting to see Margin/Tab Ruler as two options with deterministic shortcuts ([ and ]). But the most unbelievable shortcut must be Same As On Clipboard. It reformats the current selection to match what you have in the clipboard – an early salvo in an endless battle that later brought us Paste Special, Paste And Match Style, Paste And Retain Style, Copy/​Paste Properties, Paint Format and so on, and so on. And it was given S, rather than spending it on Save (& Continue). Otherwise Left Flush and Right Flush would be called aligning today, and the ¶ pilcrow symbol would be replaced by a simple Paragraph Spacing. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/24.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/24.1600w.avif" type="image/avif"> In LisaCalc, Format is missing the ¶ because, well, there are no paragraphs in spreadsheets! I love Words Left/Nos. Right, and empathize with trying to align the digits. But it wasn’t even close , was it. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/25.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/25.1600w.avif" type="image/avif"> Page Layout shows that we’ve had UI boolean problems from day one. Show Page Ruler and Hide Page Ruler do it deterministically, with one always disabled, and without checkmarks. Preview Pages and Don’t Preview Pages do the checkmark, but introduce a dreaded double negative. (These last options, by the way, is the “pages/​pageless format” showing page margins and dividers, that bother us so much about Google Docs.) Today, these would all be in the View menu that doesn’t exist yet. And speaking of boolean challenges, here are some top-level menus from LisaList with even more conventions: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/26.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/26.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/27.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/27.1600w.avif" type="image/avif"> But, back to the Page Layout Menu. Insert Page Mark would be Insert Page Break today. I really love Allow To Cross Pages as the opposite of Keep On Same Page, and the incredible O and Q shortcuts. In LisaCalc, this particular menu comes with a beautifully named For Your Information (sentence capped, for some reason)… = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/28.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/28.1600w.avif" type="image/avif"> …throwing up a sheet-like window showing basic stats. Today, that window would have a more boring name and probably land in the File menu: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/29.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/29.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/30.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/30.1600w.avif" type="image/avif"> The Search menu is fascinating – why wasn’t it called Find like its items are? I am particularly enjoying W keyed off of Find What (today: Find), while F is taken by Find Next Occurrence (today: Find Again). There is some mnemonic sense to it all, but I like today’s proximity of ⌘F/G better. What we know as Replace is Change here, and I am particularly loving Cases Must Agree and Cases Need Not Agree (today usually called “case sensitivity.”) Hide Dialog Box is a string with surprising to me amount of UI jargon. The H shortcut was added later in Lisa’s life, presumably at users’ behest. It’s strange today to see a shortcut like this to hide one specific floating dialog box. Similarly, Insert Wild Card with a confusing ellipsis allows you to insert a symbol in your find dialog that stands for “match anything here” – top-level menu options reaching inside specific dialog boxes were not uncommon in early years of GUIs, but I think fell out of favor over time as the idea can be conceptually confusing. The menu below is from LisaWrite, and I like how comparing it with other apps makes us see the team trying to settle on a convention. In LisaList there are no ellipsis, but question marks! = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/31.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/31.1600w.avif" type="image/avif"> And in LisaCalc, there are… both: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/32.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/32.1600w.avif" type="image/avif"> You can notice that it wasn’t clear where one would put Find-related commands and their today’s presence in Edit menu doesn’t really make a lot of sense, either. We just got used to it. (Also note the “occurence” typo.) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/33.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/33.1600w.avif" type="image/avif"> Spelling menu has a bunch of fun options and conventions, and an extremely generous use of keyboard shortcuts: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/34.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/34.1600w.avif" type="image/avif"> LisaDraw sports the Arrangement menu, which will look very familiar to anyone using Illustrator, Sketch, Figma, and so on. This is where Bring To Front and Send To Back started! With a tiny bit of editing (Arrangement is now Arrange, and some of the Objects nouns would be omitted), this would feel pretty modern. I love these visual menus, and I think we lost that kind of stuff along the way: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/35.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/35.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/36.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/36.1600w.avif" type="image/avif"> Okay, let’s move on from menus. The system also relied a lot of dialogs. Let’s look at some of them: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/37.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/37.1600w.avif" type="image/avif"> This wordy dialog would become a small loading state today. The verbose “To terminate the operation, hold down the Apple key while you type a period” probably felt necessary because other than Shift on a typewriter, people were not familiar with modifier keys. Lisa doesn’t have the Esc key, and Mac still respects the ⌘. convention in many places in 2026. (By the way, why would you want to stop saving? Presumably because it could take quite a while.) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/38.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/38.1600w.avif" type="image/avif"> In this similar dialog, you can see a reference to a “micro diskette.” Even though Lisa’s “Twiggy” disks seem gargantuan today, they were smaller compared to the original, 8″ floppy disk . (In a similar way, Lisa and other machines of the era were called “microcomputers.”) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/39.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/39.1600w.avif" type="image/avif"> Lisa had some proprioception : In this dialog, the disk put in the first drive is called an “upper diskette.” (Also note: more undo education.) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/40.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/40.1600w.avif" type="image/avif"> Disks were not large, so sometimes you had to deal with this kind of horror. It’s interesting how the dialog plain sends you to the manual – an early equivalent to eventual Learn More links. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/41.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/41.1600w.avif" type="image/avif"> This is another example of a rather verbose set of instructions. On one hand, this is better than “Error 456” and nothing else. On the other hand, it feels like a lot of stuff to memorize. Also of note, the beautiful Housekeeping menu. I actually forgot about the Finder (or, in Lisa’s parlance, Desktop), so here’s a screenshot of it also: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/42.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/42.1600w.avif" type="image/avif"> Housekeeping was basically the junk drawer – on the Mac a year later, this will be named Special. It also has some stuff that today would be in the View menu. (This later version of Lisa calls Trash the same as the Mac. Earlier on, you would see it named a Wastebasket instead.) = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/43.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/43.1600w.avif" type="image/avif"> Of note elsewhere in Desktop is the use of the term Stationery, roughly meaning “template,” but with extra sprinkling of desktop-metaphor skeuomorphism. Also, Attributes Of is an early version of Get Info. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/44.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/44.1600w.avif" type="image/avif"> Another verbose dialog (compare with Abort/​Retry/Ignore from around the same time). This is before we invented hint text that we’d just put under the buttons themselves. In case you haven’t noticed by now, Lisa’s strings all have two spaces after a full stop! = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/45.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/45.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/46.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/46.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/47.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/47.1600w.avif" type="image/avif"> There was lot of “you cannot” dialogs, walking you through some recovery steps. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/48.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/48.1600w.avif" type="image/avif"> Plug and play didn’t yet exist (this would all happen in the 1990s), so that had to be explained also. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/49.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/49.1600w.avif" type="image/avif"> I also love the anthropomorphic phrasing “Preferences has been told,” which I don’t believe you see anywhere today. And I think we can round up this post with a few small delightful language details like this one. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/50.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/50.1600w.avif" type="image/avif"> As a huge fan of the slightly pretentious “presently” over “currently,” I smiled seeing this next to the printing status. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/51.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/51.1600w.avif" type="image/avif"> “Just a moment, please…” feels so old-fashioned, somehow. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/52.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/52.1600w.avif" type="image/avif"> And I want to end on a pre-release version of the Edit menu we’ve already seen. You can spot here Select Entire Document (instead of eventual Select All Of Document), but of course the best thing is the Copy, Cut, & Paste with an ampersand! I find it so, so charming. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/53.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/lisas-copy-and-cut-and-paste/53.1600w.avif" type="image/avif"> I hope you enjoyed this tour. It was interesting to me to see how many of these became the standard back there and then, how many were tweaked a little bit, and which ones had to be redone more thoroughly. Now, excuse me as I have to go deal with my whistling printer. #history #interface design #writing They help me get unstuck. If you go far enough, you will find out that even the most ossified conventions that are older than you haven’t always been this way. They put me in the mood of “what of the things that feel normal today that deserve to feel dated, obsolete, or awkward?” Find Next Misspelling (you don’t often see that word!) Suggest Corrections + Paste Guess (this is just replacing the word with the suggestion – interesting use of the clipboard metaphor) Put In Dictionary (today: Learn Spelling)

0 views
Stratechery 2 days ago

2026.21: The Data Center Veto

Welcome back to This Week in Stratechery! As a reminder, each week, every Friday, we’re sending out this overview of content in the Stratechery bundle; highlighted links are free for everyone . Additionally, you have complete control over what we send to you. If you don’t want to receive This Week in Stratechery emails (there is no podcast), please uncheck the box in your delivery settings . On that note, here were a few of our favorites this week. This week’s Stratechery video is on The Inference Shift . Data Center Discontent. The impact of AI is, at least for now, being felt digitally: that is where AI is useful, and the more digital a job, the more it is threatened by LLMs. AI, however, depends on data centers in the physical world, and building data centers needs permission. This gives normal people the sort of veto power over AI they didn’t have in the face of globalization; I make the case in Monday’s Update and on Sharp Tech that understanding this dynamic is more important that trying to correct misinformation, which is a symptom, not a cause, of data center opposition. — Ben Thompson Agent Economics. What will the internet look like when ad-supported models are rendered obsolete by shifting user behavior and the rise of agentic web traffic? Ben considered this question last summer with The Agentic Web and Original Sin , and I was surprised to learn this week that Parag Agarwal, former CEO of Twitter, is now focused on devising solutions for exactly this reality. This week’s Stratechery Interview with Agarwal dives deep into the economics of content on the Internet, why ads make sense for humans, and why incentivizing content for agents will be different, and how Agarwal and Parallel are trying to solve them. I learned a ton from this interview, and I bet you will, too — and don’t worry, we did get a few bonus questions on the ride at Twitter.   — Andrew Sharp Never Count Out the Slime Mold. Wednesday’s Daily Update on Google I/O reminded me of an iconic leaked memo about the ungovernable and poorly coordinated mold in Mountain View, as the company seems to be throwing 10 different types of AI spaghetti at the wall to see what sticks. Then again, Google is now a nearly $5 trillion company and its transformer architecture supercharged the AI era. That second part is why, when Ben highlights a DeepMind approach to building AGI that’s distinct from the approaches at OpenAI and Anthropic, I’m compelled to both pay attention, and remember: for all of Google’s faults and misses, they do in fact have plenty of historic hits.  — AS Data Center Discontent, Understanding the Opposition, Fixing the Problem — There are understandable reasons for people to oppose data centers; the only solution that will work is simply paying them off. Google I/O, World Models, I/O Spaghetti — Google I/O put AI everywhere, for better and for worse. Meanwhile, is DeepMind aligned with Google’s business objectives? An Interview with Parallel Founder Parag Agarwal About Valuing Content on the Agentic Web — An interview with Parallel founder Parag Agarwal about valuing content and incentivizing its creation in a world of agents (plus questions about Twitter). Data Center Unpopularity Google Being Google The Little Vertical Laser That Everyone Uses Intel’s 30 Years in Costa Rica Constructing US-China Stability; Trump’s Taiwan Comments and More Summit Takeaways; Putin in China Wemby, Harper and an Instant Classic from the Spurs in Game 1 vs. OKC A Note on the Future of GOAT and An Emergency Top Five Much Ado About Data Centers, What Tech Gets Wrong About Its Critics, Q&A on SpaceX, Chinese AI, Elon Musk

0 views

Lawmakers Demand Answers as CISA Tries to Contain Data Leak

Lawmakers in both houses of Congress are demanding answers from the U.S. Cybersecurity & Infrastructure Security Agency (CISA) after KrebsOnSecurity reported this week that a CISA contractor intentionally published AWS GovCloud keys and a vast trove of other agency secrets on a public GitHub account. The inquiry comes as CISA is still struggling to contain the breach and invalidate the leaked credentials. On May 18, KrebsOnSecurity reported that a CISA contractor with administrative access to the agency’s code development platform had created a public GitHub profile called “ Private-CISA ” that included plaintext credentials to dozens of internal CISA systems. Experts who reviewed the exposed secrets said the commit logs for the code repository showed the CISA contractor disabled GitHub’s built-in protection against publishing sensitive credentials in public repos. CISA acknowledged the leak but has not responded to questions about the duration of the data exposure. However, experts who reviewed the now-defunct Private-CISA archive said it was originally created in November 2025, and that it exhibits a pattern consistent with an individual operator using the repository as a working scratchpad or synchronization mechanism rather than a curated project repository. In a written statement, CISA said “there is no indication that any sensitive data was compromised as a result of the incident.” But in a May 19 a letter (PDF) to CISA’s Acting Director Nick Andersen , Sen. Maggie Hassan (D-NH) said the credential leak raises serious questions about how such a security lapse could occur at the very agency charged with helping to prevent cyber breaches. “This reporting raises serious concerns regarding CISA’s internal policies and procedures at a time of significant cybersecurity threats against U.S. critical infrastructure,” Sen. Hassan wrote. A May 19 letter from Sen. Margaret Hassan (D-NH) to the acting director of CISA demanded answers to a dozen questions about the breach. Sen. Hassan noted that the incident occurred against the backdrop of major disruptions internally at CISA, which lost more than a third of it workforce and almost all of its senior leaders after the Trump administration forced a series of early retirements, buyouts, and resignations across the agency’s various divisions. Rep. Bennie Thompson (D-MS), the ranking member on the House Homeland Security Committee, echoed the senator’s concerns. “We are concerned that this incident reflects a diminished security culture and/or an inability for CISA to adequately manage its contract support,” Thompson wrote in a May 19 letter to the acting CISA chief that was co-signed by Rep. Delia Ramirez (D-Ill), the ranking member of the panel’s Subcommittee on Cybersecurity and Infrastructure Protection. “It’s no secret that our adversaries — like China, Russia, and Iran — seek to gain access to and persistence on federal networks. The files contained in the ‘Private-CISA’ repository provided the information, access, and roadmap to do just that.” KrebsOnSecurity has learned that more a week after CISA was first notified of the data leak by the security firm GitGuardian , the agency is still working to invalidate and replace many of the exposed keys and secrets. On May 20, KrebsOnSecurity heard from Dylan Ayrey , the creator of TruffleHog , an open-source tool for discovering private keys and other secrets buried in code hosted at GitHub and other public platforms. Ayrey said CISA still hadn’t invalidated an RSA private key exposed in the Private-CISA repo that granted access to a GitHub app which is owned by the CISA enterprise account and installed on the CISA-IT GitHub organization with full access to all code repositories. “An attacker with this key can read source code from every repository in the CISA-IT organization, including private repos, register rogue self-hosted runners to hijack CI/CD pipelines and access repository secrets, and modify repository admin settings including branch protection rules, webhooks, and deploy keys,” Ayrey told KrebsOnSecurity. CI/CD stands for Continuous Integration and Continuous Delivery, and it refers to a set of practices used to automate the building, testing and deployment of software. KrebsOnSecurity notified CISA about Ayrey’s findings on May 20. Ayrey said CISA appears to have invalidated the exposed RSA private key sometime after that notification. But he noted that CISA still hasn’t rotated leaked credentials tied to other critical security technologies that are deployed across the agency’s technology portfolio (KrebsOnSecurity is not naming those technologies publicly for the time being). CISA responded with a brief written statement in response to questions about Ayrey’s findings, saying “CISA is actively responding and coordinating with the appropriate parties and vendors to ensure any identified leaked credentials are rotated and rendered invalid and will continue to take appropriate steps to protect the security of our systems.” Ayrey said his company Truffle Security monitors GitHub and a number of other code platforms for exposed keys, and attempts to alert affected accounts to the sensitive data exposure(s). They can do this easily on GitHub because the platform publishes a live feed which includes a record of all commits and changes to public code repositories. But he said cybercriminal actors also monitor these public feeds, and are often quick to pounce on API or SSH keys that get inadvertently published in code commits. The Private-CISA GitHub repo exposed dozens of plaintext credentials to important CISA GovCloud resources. In practical terms, it is likely that cybercrime groups or foreign adversaries also noticed the publication of these CISA secrets, the most egregious of which appears to have happened in late April 2026, Ayrey said. “We monitor that firehose of data for keys, and we have tools to try to figure out whose they are,” he said. “We have evidence attackers monitor that firehose as well. Anyone monitoring GitHub events could be sitting on this information.” James Wilson , the enterprise technology editor for the Risky Business security podcast, said organizations using GitHub to manage code projects can set top-down policies that prevent employees from disabling GitHub’s protections against publishing secret keys and credentials. But Wilson’s co-host Adam Boileau said it’s not clear that any technology could stop employees from opening their own personal GitHub account and using it to store sensitive and proprietary information. “Ultimately, this is a thing you can’t solve with a technical control,” Boileau said on this week’s podcast . “This is a human problem where you’ve hired a contractor to do this work and they have decided of their own volition to use GitHub to synchronize content from a work machine to a home machine. I don’t know what technical controls you could put in place given that this is being done presumably outside of anything CISA managed or even had visibility on.” Update, 3:05 p.m. ET: Added statement from CISA. Corrected a date in the story (Truffle Security said it found the repo gained some of its most sensitive secrets in late April 2026, not 2025).

0 views

Premium: What If...We're In An AI Bubble? (Part 2)

Last week I ran the first part of my What If…We’re In An AI Bubble? Series, where I asked questions and posed scenarios as to the consequences of the many, many questions I’ve asked over the last few years. It quickly became one of my most-read articles I’ve ever written, and for those of you who joined me for the first time last week, here’s a quick list of what we’ve covered already: As I mentioned last week, I believe one of the many problems with the analysis of the AI bubble is that people are willing to consider individual facts — like that AI is too expensive for everybody involved and data centers are not being built at the speed that we believed — but never the gestalt of their consequences.  For example, if data center construction slows to a crawl ( as I’ve discussed is already the case ) there’s a cascade of events that will occur: It’s really easy to say “wow, this stuff needs a lot of debt!” and “wow, this stuff takes a while!” but actually sitting and thinking about what that means logically leads you to some gruesome outcomes.  And to be clear, there’s not really an alternative to that scenario if data center construction slows. Even in an optimistic scenario, if data centers that started being built in 2024 don’t get finished until 2027 or 2028, that means that NVIDIA’s “latest” GPUs are perennially two or three years in the future.  While some capacity exists, I believe there are at least one million Blackwell GPUs sitting in warehouses waiting to be installed years into the future, which means that projects are going to launch in a year or two with potentially three-year-old GPUs, or said projects are going to have to either replace their orders with Vera Rubin or dump aged capacity onto a market saturated with Blackwell GPUs. The argument against what I’m saying is that there’s “insatiable” demand for AI compute — that “any viable compute on the market will be used,” which is true in measurements of days or months, but breaks down in the space of a year. As I mentioned a few weeks ago, AI’s demand story is a lie , because capacity is mostly taken up by Anthropic and OpenAI, creating the illusion of demand by absorbing most available inventory, while simultaneously obfuscating the fact that other sources of demand are simply non-existent in any meaningful numbers..  Many are conflating “there’s not much available” with “there’s so many people that want GPUs” without quantifying what “so many” means or how much they want, when the remaining performance obligations from Google, Amazon, and Microsoft have, outside of OpenAI and Anthropic, effectively plateaued, as is also the case when you remove these companies from CoreWeave order book.  If there were incredible, insatiable, indisputable demand, RPOs would be exploding across the board. Instead, nobody seems interested in buying capacity at scale outside of Anthropic, OpenAI, and the hyperscalers supporting them — or, in some cases, the likes of NVIDIA providing backstops to compute providers, agreeing to buy surplus compute in the case that they’re unable to sell it themselves. This is, to be clear, something that shouldn’t happen if there was genuine, distributed demand.   The sheer scale of the supposed AI data center buildout is in the tens of gigawatts of capacity, which translates to  $10 billion to $15 billion per gigawatt in annual revenue. I can find no examples of anybody but Anthropic and OpenAI spending billions on compute.  Both companies need to make or raise a combined $1.25 trillion in the next four years to afford their compute commitments across Oracle, Microsoft, Google, Amazon and CoreWeave.  The counter-argument to everything I’m saying is effectively two points: The latter is far from compelling, but I can see how somebody would believe it.  So much money appears to be flooding into companies like AMD, Samsung, and Sandisk — tens of billions of dollars to the point that it’s creating shortages across basically every component imaginable — which naturally might make you think that demand would exist at the other end. For the consumer, that perception becomes even more believable when you notice how consumer electronics are getting more expensive. Certain games consoles, nearly six years after their initial release, are more expensive than they were at launch. Typically, the inverse is true.  Meanwhile, smartphones and PCs are expected to ship with weaker specs or high prices, in part because of shortages of key components, caused by demand for AI data center hardware.  The thing is, demand for AI compute doesn’t have to exist for AI data centers to get built. While some have clients signed up in advance, said deals were signed so many years before construction will complete that it’s hard to guarantee that they’ll be willing — or solvent enough — to pay.  I also imagine most clients have signed contracts that have milestone dates for delivery of compute capacity. If data centers are delayed, clients likely have a contractual out, much like Microsoft does with its $17 billion compute deal with Nebius . In any case, in a frothy debt market full of desperate speculation, these projects are being funded by the very same private credit firms that piled into SaaS companies between 2018 and 2022 under the assumption that every software company will grow in perpetuity. When due diligence is so weak in private equity and private credit that Apollo’s John Zito says that their valuations are “ all wrong ,” it’s hard to believe that the same financiers are diligently making sure that enough revenue exists to justify these massive data center debt deals. The same questionable attention to detail applies to venture capital, which has seen ( much like private equity ) its investment model slow to a crawl since 2018 , with an average TVPI (total value paid in) slow to a horrifying 0.8 to 1.2x since 2018, meaning that for every dollar invested, you’re at best likely to get even money in return.  These are the very same investors telling you that every AI company is worth perpetually-growing amounts of money, that everything will work out perfectly , that somebody will work out how to make AI profitable, and that AI is both here to stay and doing incredible things , even if they can’t really explain what those things might be. In reality, none of these people have any idea how to turn around these rotten economics. Data centers are massive money-losing operations that in the best case scenario take five years to make a single dollar of margin, and their customers are eternally-unprofitable AI startups that rely on a constant flow of venture capital dollars.  The AI bubble is entirely built by people who hope somebody else will solve their problems. AI labs depend on venture capitalists to fund them, hardware providers to invent silicon that makes their businesses profitable, and their AI startup clients to find ways to make profitable businesses using their APIs. In turn, AI startups rely on AI labs to work out a way to make their models cheaper so that AI startups can make their business models profitable.  Put another way, everybody’s response to “how does this become profitable” is “don’t worry, somebody will work it out, but don’t worry, they’re going to at some point.” Today, I want to explore what happens if they don’t.  What if…We’re In An AI Bubble?  What If The AI Industry Moves To Entirely Token-Based Billing?  What If Organizations Can’t Afford To Keep Spending On AI? What If The AI Capacity Crunch Never Ends (And Data Centers Aren’t Getting Built)? What If CoreWeave Can’t Keep Up With Its Capacity Demands? What If Hyperscalers Can’t Build Data Centers Very Fast? What If Hyperscalers Have Warehouses of Uninstalled GPUs? What If Hyperscalers Write Off A Large Chunk of GPUs? What If Data Center Construction Demand Collapses?  OpenAI and Anthropic can’t expand much further than their current capacity. As they both make up 50% of Amazon, Google and Microsoft’s revenue backlogs , hyperscalers will be unable to make the majority of the revenue they’ve promised their shareholders. The $178.5 billion in US data center debt from 2025 will go mostly unpaid, as a great deal of it is project financing that’s dependent on revenue from data centers that won’t be built and thus won’t be making any revenue. NVIDIA, which claims to have shipped over 3 million Blackwell GPUs in 2025, will have trouble selling its next-generation Vera Rubin GPUs, as nobody will have anywhere to put them. Alternatively, we’ll see write offs of billions of Blackwell GPUs that will now be considered obsolete. Banks that are already afraid of “choking” on data center debt will stop issuing it, because these investments will not be paying off. It will become very difficult for anybody to afford to buy more NVIDIA GPUs, because AI data centers — which cost around $44 million per megawatt — require massive amounts of upfront capital expenditures, making it unlikely-to-impossible that somebody has the money lying around. That the amount of revenue flowing to both NVIDIA and associated hardware companies making CPUs, RAM, and solid-state storage is proof that there’s demand for…services run on them. What if venture capital funding stops flowing to AI startups? What would make venture capital stop funding AI startups? What if most AI startups go to zero? What if OpenAI and Anthropic became AI’s lender of last resort?  What if AI broke venture capital’s back?  What if inference isn’t profitable?

0 views