Latest Posts (20 found)
Unsung Today

“It’s unclear how Sopwith escaped to the general public.”

Sopwith is a 1984 videogame made by David L. Clark for the original, seminal IBM PC model 5150 . It sports the distinctive 4-color CGA palette and an equally distinctive PC speaker soundtrack. It’s also one of the oldest videogames still in active development, and I was surprised how enthralled I was learning about it. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/its-unclear-how-sopwith-escaped-to-the-general-public/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/its-unclear-how-sopwith-escaped-to-the-general-public/1.1600w.avif" type="image/avif"> (First of all, you can play Sopwith in a browser . Choose “single player” and then “novice” first for the game to tell you about its unusual keyboard control scheme.) The current maintainer of the effort is Simon Howard. He wrote about Sopwith’s interesting history ; I love appreciate this kind of approachable and caring preservation of obscure titles. The history is worth a read. From that, I learned a fascinating factoid. The game was intended as a demo for networking hardware, and the original author didn’t realize the game was “in circulation” for many years: Intended as a trade-show demo, it’s unclear how Sopwith escaped to the general public. David L. Clark didn’t even discover until around 2000 that it had “gotten out”. Little did he know, Sopwith had been circulating for years in collections of early games for the IBM PC. Only a couple of years after the first version was released, ads were appearing in magazines like PC Magazine advertising Sopwith for sale as part of collections of games for the IBM PC The modern edition started by Howard is called SDL Sopwith (SDL being a cross-platform graphics library ): SDL Sopwith is directly derived from the source code to the original DOS versions, and still includes changelog comments that date all the way back to 1984. What I particularly liked about the contemporary Sopwith is its guiding document/​philosophy page , also worth checking out in full. Here are some choice principles: There is something in all this that I feel a lot of software could learn from – not just vintage games. I appreciated Howard being thoughtful about growing Sopwith without forgetting its roots, but also with understanding that some things have changed since 1984. You could imagine remixing “The goal is to be a great old game rather than a mediocre modern game” to something like: Better be a great focused app than a mediocre sprawling app. Lastly, how did I learn about Sopwith? Howard shared this charming installation visual with me: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/its-unclear-how-sopwith-escaped-to-the-general-public/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/its-unclear-how-sopwith-escaped-to-the-general-public/2.1600w.avif" type="image/avif"> #change management #games #history #software evolution Sopwith has a long history that deserves to be honored and preserved. By default, the game should always play like the original DOS version. That means the gameplay in particular should be the same, without any significant differences. Someone who has just discovered the project should find it to be a delightfully accurate recreation of the game they may have played when they were younger. […] Some new features can be enabled by default, as long as they are subtle, unintrusive, carefully considered and can be turned off. An example is the medals feature. The game will never try to be “something it’s not”. This means that it will always have four color CGA graphics, PC speaker sound effects and a low resolution display. It will never add (for example) hi-res sprites or 3D models, digital sound effects or MP3 music. The goal is to be “a great old game” rather than “a mediocre modern game”. New features should be fun and recognize the comical aspects of the game. Features should be carefully considered before being incorporated, not just added arbitrarily and thoughtlessly.

0 views

News: Microsoft Disclosures Suggest OpenAI Sales Account For Around 70% Of FY26 AI Revenue, more than 7% of FY26 Revenue

Executive Summary: As I discussed in yesterday's free newsletter , analyst estimates have OpenAI and Anthropic making up over 70% of all AI revenues across Microsoft, Google and Amazon. While some might have disagreed, Bloomberg is now reporting that OpenAI "accounted for more than half, and likely about 70%, of Microsoft's actual AI sales during its most recent fiscal year." Bloomberg's maths is explained as such: The actual disclosure from Microsoft comes from its most-recent earnings: To be clear, "run rate" means a non-specific month multiplied by 12, which means that it's very possible that Microsoft actually made far less than $37 billion, but based on that maths, OpenAI would make up roughly 64.8% - that being said, I think 70% or more is a perfectly-reasonable estimate, if not far, far more. The other incredible fact from these disclosures is that OpenAI's spend and revenue share accounted for 7% of Microsoft's $331.8 billion in FY26 revenue - or around 7.26% to be specific. At this point, it's impossible to argue that Microsoft has spent $270 billion in capital expenditures to prop up a single client, and that its overall AI plays have failed to create any significant revenue growth or opportunities. We are now four years into the AI bubble, and Microsoft has little to show for it other than one very large and very unsustainable company that requires near-infinite resources to keep paying its cloud compute bills. If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of  NVIDIA ,  Anthropic and OpenAI’s finances , and  the AI bubble writ large . My Hater's Guides To the  SaaSpocalypse ,  Private Credit  and  Private Equity  are essential to understanding our current financial system, and my guide to how  OpenAI Kills Oracle  pairs nicely with my  Hater's Guide To Oracle, as well as the Hater’s Guide To Oracle (Part 2). Subscribing to premium is both great value and makes it possible to write these large, deeply-researched free pieces every week. On Friday, I’ll publish the second installment of the Hater’s Guide to Nvidia — where I’ll take a look at how the AI bubble transformed the company from a pure hardware player to a purveyor of the financial dark arts.  If you want to get in touch — and especially if you have any juicy information about Anthropic, OpenAI, or any other companies in the AI bubble — hit me up on Signal at ezitron.76. I’m also on IB on The Terminal.  Microsoft disclosures and Bloomberg analyses show that OpenAI's compute spend and revenue share accounted for 70% or more of Microsoft's FY26 AI revenues, and more than 7% of Microsoft's overall FY2026 revenues. Microsoft has spent $261.3 billion in capital expenditures since the beginning of 2022. OpenAI accounted for $24.1 billion of Microsoft's FY2026 revenues.

0 views

Google Earnings, The Frontier Case, Amazon Earnings

Google's earnings seemed to confirm the Anthropic hedge; it was Andy Jassy who explained why their — and Amazon's — capex was justifiable.

0 views
Unsung Yesterday

When commit means cancel

A strange thing happens when you press Enter on an empty item in a list in most text editors – the entire list item disappears: This feels counterintuitive. Isn’t Enter for committing and adding more things? Wouldn’t Backspace be the right key to press to break a list? Yes, and no. I am not sure who invented this pattern (I spotted it first in Word 95), but that someone understood a strange interaction contract existing in text editing – Enter is actually an escape hatch. In text editing, no matter where you are, you can always press Enter multiple times to just create more room for writing. In an app that doesn’t cancel a list on Enter, you can face a terrifying moment where you get stuck in a list, and getting stuck is never fun. This principle feels so useful that I see more and more apps apply a version of it for other things. For example, in many modern text editors pressing Enter after a headline returns you to regular text, just so it’s not as easy to get stuck in a headline style: #errors #flow #keyboard #text editing

0 views

The AI Demand Bubble

If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of NVIDIA , Anthropic and OpenAI’s finances , and the AI bubble writ large . My Hater's Guides To the SaaSpocalypse , Private Credit and Private Equity are essential to understanding our current financial system, and my guide to how OpenAI Kills Oracle pairs nicely with my Hater's Guide To Oracle, as well as the Hater’s Guide To Oracle (Part 2). Subscribing to premium is both great value and makes it possible to write these large, deeply-researched free pieces every week. On Friday, I’ll publish the second installment of the Hater’s Guide to Nvidia — where I’ll take a look at how the AI bubble transformed the company from a pure hardware player to a purveyor of the financial dark arts.  If you want to get in touch — and especially if you have any juicy information about Anthropic, OpenAI, or any other companies in the AI bubble — hit me up on Signal at ezitron.76. I’m also on IB on The Terminal.  Soundtrack: Tool - Forty Six & 2   The question I want to ask anyone reading this who might have invested in or in some way backed the hyperscalers and the greater AI industry: What is it you think you’ve gotten yourself into? Because I think you’re being sold a lie .  Last week’s tech earnings saw outlet after outlet claim that Amazon, Google, and Microsoft’s AI bets were “paying off” as their respective cloud segments reported record revenue growth, casually ignoring that none of them have broken out their AI revenues . To add insult to injury, Microsoft decided, after sharing that it had a $37 billion AI run rate (about $3.08 billion a month) in Q3 FY2026 , that it simply didn’t have to share anything about its actual AI payoff in Q4 , realizing that its overall numbers would beguile reporters and analysts — especially those with little interest in what was actually going on as long as the topline stuff looked good.  To be clear, all three of these companies’ cloud platforms have many other customers paying for many other things other than generative AI services or AI GPUs, and they’ve all engaged in a combination of multiple outright price increases and changing their core subscriptions to force AI features on them as a means of boosting revenues and conning the street into believing that “AI is paying off” every time they non-consensually thrust it on their customers, framing higher prices as “better value” in a way that fucks the user to appease Wall Street.  Yet the biggest con of all is that a vast majority of this revenue growth comes from the compute spend of Anthropic and OpenAI, both of whom account for the vast majority of AI revenues and overall cloud growth we’ve seen in the last few years.  Every publication you read right now will tell you that AWS and Azure and Google Cloud are growing like wildfire as a result of the hundreds of billions of dollars they’ve invested in AI GPUs and data centers, when the truth is far simpler: their revenues are being buoyed by two unprofitable, unsustainable AI labs that cannot exist without being funneled tens of billions of dollars each year.  And a decent chunk of that money is coming from the hyperscalers themselves. In the last seven months alone, Google has sunk $10 billion (and up to $30 billion more) into Anthropic , with Amazon funnelling $5 billion to Anthropic within a week of that investment and a total of $50 billion into OpenAI . For all the concern about circular financing in the AI world, it’s astonishing that so much attention has (rightly, to be clear) centered on NVIDIA’s backstopping and funding of neoclouds, and less on the fact that hyperscalers are propping up their now biggest customers, giving them cash that will eventually migrate back to the hyperscaler.  I’d also argue that the vast majority of their capex exists to support these two load-bearing failsons. A few months ago, a Microsoft executive told the judge during the Musk-Altman trial that its OpenAI relationship had cost it “ over $100 billion ,” including both the $13 billion it sunk into the company and the associated infrastructure.  Microsoft has dedicated its Fairwater data centers (however much actually exists) entirely to OpenAI, much like Amazon has for Anthropic with however much of its massive Indiana-based Project Rainier has actually been turned on, and much like Google is in talks to backstop a $15 billion data center project for Anthropic , along with data centers with Cipher Mining and TeraWulf and a $35 billion private credit-funded Broadcom-backstopped deal where Google will sell Anthropic its TPU AI chips, put them in a Google-built data center, and rent them back to Anthropic. I want to spell this out: when you remove Anthropic and OpenAI’s compute spend, I am not confident that Google, Microsoft and Amazon have much of an AI business. While many people believe — largely because the big three refuse to break out their actual AI revenues or disclose their customer concentration — that they have AI revenues coming from a diverse set of different customers, the reality is that their largest cloud customers, let alone AI customers , are two companies that can literally not afford to pay them without a near-infinite flow of venture capital or debt. Per Ross Sandler of Barclays, Anthropic and OpenAI are estimated to make up 73% of all of Amazon’s AI revenues in both 2026 and 2027 and 75% of AI revenues in 2028 , with Anthropic spending $14.1 billion in 2026, $25.3 billion in 2027, and $35.8 billion in 2028, and OpenAI spending $9 billion in 2026, $15 billion in 2027, and $20 billion in 2028. Amazon plans to spend $220 billion in capital expenditures in 2026 and even more in 2027, and appears to be doing so almost-exclusively to provide compute for a company that had to raise $95 billion in funding in the space of six months, with $5 billion of that coming from Amazon itself.  Google is in a similar-position. Per Stephen Ju of UBS, “...Anthropic, OpenAI and Meta will account for 21%, 7% and 1% of 2026 Google Cloud revenues, respectively, and 44%, 5% and 1% of 2027 revenues,” or, put another way, 28% of all 2026 and more than 48% of all 2027 Google Cloud revenues are from Anthropic and OpenAI.   Ju also estimates Meta will make up a whopping 1% of Google Cloud revenues in each year, and does not mention a single other customer, which heavily-suggests that there aren’t really any large ones.  Based on Bloomberg Intelligence’s consensus estimates for Google Cloud’s revenues in 2026 ($105.9) and 2027 ($173.8), OpenAI and Anthropic represent $29.4 billion ($7.4bn/$22bn) in 2026 and $84.69 billion ($8.69bn/$76bn) in 2027. To be explicit here, this is all Google Cloud revenues. It is reasonable to believe that this represents at least 75% of Google’s AI revenue, if not more. What’s crazy is that these numbers are actually lower than UBS’ estimates. As the chart below demonstrates, OpenAI and Anthropic’s spend is estimated to sit at over $35 billion in 2026, larger than both its entire Google Cloud core non-AI business and Vertex AI model rental business that is largely boosted by Google’s ability to sell Anthropic’s models.  Eagle-eyed readers will also see that Google’s non-AI cloud business is estimated to be effectively flat in 2026, 2027, and 2028. I also don’t think it’s common knowledge that OpenAI is such a large customer of either Google Cloud or Amazon Web Services, spending at least an estimated $52.5 billion in 2026 and at least an estimated $125 billion in 2027.  In the Musk-Altman trial, OpenAI estimated it would spend $50 billion on compute in 2026 , and based on those estimates, that gives us about $16.4 billion across Amazon and Google, leaving a likely $33.6 billion in spend left for Microsoft Azure, though I’ll add that OpenAI continually underestimates its own compute spend and losses.  And based on a note from Michael Turrin of Wells Fargo from May 31 2026, things are just as bad for Microsoft, with 70% or more of its AI revenues coming from Anthropic and OpenAI. While Turrin “expects investments at software & models layers [to] pay off in meaningful adoption over time,” it’s difficult to argue that Microsoft has any meaningful AI strategy outside of OpenAI and Anthropic’s compute spend.  To make matters worse, based on Wells Fargo’s estimates, it appears that Microsoft 365’s AI revenues are barely — and I mean barely — beating the revenue share Microsoft gets from OpenAI’s sales. Wells Fargo also includes a helpful cheat sheet of its estimates for AI contributions, estimating that even at the very end of FY2027 (which began on July 1 2026), OpenAI and Anthropic’s spend will represent a dramatic 74% of all AI revenues. Wells Fargo also estimates that the two AI labs represented 23% of Azure revenue in FY2026, growing to 35% in FY27. Considering Azure grew 41% year-over-year, this means that 40% or more of Microsoft Azure’s growth came from them — and remember , Azure sells far more than just AI services. This is an absolute fucking scandal.   The vast majority of Microsoft, Google and Amazon’s AI revenues and revenue growth in their representative cloud platforms are from Anthropic and OpenAI, and they are blatantly, unashamedly misleading investors by not disclosing that this is the case. We’re talking 73% of AWS’ AI revenues, 74% of Microsoft’s, and likely 70%+ of Google Cloud’s considering that just Anthropic and OpenAI’s AI spend is expected to be more than 48% of all cloud revenues. This is not me being a hater, a skeptic, or a doomer, but the product of actually investigating what’s happening in the real world rather than just looking at whatever numbers the hyperscalers fart out and assuming it’s “all from AI,” and that “AI” means something more than just the two main model labs.   Investors in Amazon, Google and Microsoft have been led to believe that the $994 billion spent on AI GPUs and data centers exists to boost their existing businesses and build what amounts to the next industrial revolution. In fact, this is the line that just about any AI bull will give you about NVIDIA’s GPU sales — that all compute will be used because there’s endless, insatiable demand.   Well, other than the fact there isn’t. What hyperscalers have actually done is demolish their free cash flow and purchased hundreds of billions of dollars’ worth of GPUs, TPUs, and XPUs to support a customer base dominated by two customers that are now accounting for the vast majority of their revenue growth and quite literally cannot afford to pay their bills without a near-infinite flow of venture capital investments.  Based on these estimates, these analysts also don’t seem to believe that any other large customers are going to emerge, bringing into question both the rationale of their capital expenditures and those of basically anyone building any data center anywhere in the world.  This is all very important, so I want to spell it out really simply for you: Remember: Microsoft Azure, Google Cloud and Amazon Web Services represent a large chunk of all global cloud spend and AI compute, and thus are a representative sample of all AI compute…and if diverse, “insatiable” demand existed, it would be represented in these estimates.  This is the single-worst capital misallocation in the history of business. Every single story you’ve read about the “incredible growth” of these cloud platforms is an embarrassing misread of three companies that are misleading investors that will more than likely be forced in the next year or two to have to restate revenues, cut remaining performance obligations, and admit that they’ve drastically overbuilt capacity.  The counterargument to my warnings is always that “this is useful infrastructure that will be used in the future,” or that we’re in an OpenAI Bubble not an AI bubble ( which, I argue, is basically the same thing ), but when you remove Anthropic and OpenAI, Amazon Web Services and Google Cloud go from exciting growth-engines to chernobyls of capital expenditure.  Without these two “startups,” AI revenues are catastrophically small — for example, Sandler estimates that Amazon Web Services will make a pathetic $8.5 billion in AI revenues in 2026, or roughly 25 times less than the $220 billion Amazon intends to spend this year. While Ju estimates that Google Vertex AI model platform ( which is one of the main ways that large enterprises integrate Anthropic’s models ) will pull in $28.3 billion in 2026, that’s still a little under $10 billion less than the $35.6 billion that Anthropic and OpenAI will spend on compute.  This needs repeating. Investors and the general public are being lied to. When you remove OpenAI and Anthropic, Amazon, Google and Microsoft’s capex has likely accounted for very little revenue growth, which means that if either or both of them die, the majority of capital expenditures and debt raised as part of the AI bubble have been a waste. So, let’s go look at the non-Anthropic/OpenAI part of that Barclays note, with each column representing 2025, 2026, 2027 and 2028, with the last three being estimates. For some context, in the year 2025, Amazon spent $131.8 billion in capex, or roughly 32 times Barclays’ estimates for non-OpenAI/Anthropic revenue — a number that barely improves with the full total ($9.6 billion) to 14 times.   If Amazon has its druthers and invests $220 billion in total capex in 2026, the (pathetic) $8.5bn in non-OpenAI/Anthropic revenue will be roughly 26 times smaller, or 7 times smaller when you use the full $31.6 billion in projected AI revenue for 2026. If your counterargument here is that “the gap is getting smaller each year,” you are a mark. $31.6 billion is $22.6 billion less than Amazon spent on capital expenditures in its last quarter , or roughly $18.4 billion less than it invested in OpenAI this year . Barclays’ estimates for 2028 have Amazon’s AI revenues — 75% of which are from OpenAI and Anthropic’s compute spend — at around $75 billion, four god damn years into the AI bubble.  Amazon will have, by 2028, likely sunk over $650 billion in capital expenditures into AI, all to earn (and this assumes OpenAI and Anthropic exist and can pay) a little over $171 billion in AI revenue, with the vast majority of it contingent on two entirely venture-backed startups. Similarly, even if UBS’ estimates come true, Google will have spent roughly $408.5 billion (including consensus estimates of $120.5 billion for the rest of the year) in capital expenditures to create an AI business that makes about $80 billion a year, with most of that coming from either selling Anthropic’s compute or access to its models via Vertex.  Microsoft is in the same position. Wells Fargo’s estimates have its AI revenues for FY2026 (which just ended) at around $34.5 billion, in a year where it spent $115.9 billion in capex, with $41 billion of that in the last quarter , or roughly $6.5 billion more than its entire estimated AI revenues for the god damn fiscal year.  I realize I’m being a little repetitive, but I need you to see that without OpenAI and Anthropic, Microsoft, Google, and Amazon’s AI revenues are absolutely pathetic, and are thus entirely-dependent on their compute spend. Let’s be serious, and take the absolute kindest read of UBS’ estimates, saying that Google’s Vertex AI platform will make approximately $22.5 billion in annual revenue, and assume, wrongheadedly, that it’s not near-entirely made up of demand for Anthropic’s models… Sundar Pichai, did you spend $288 billion god damn dollars to make an annual business that makes less revenue than YouTube ? We haven’t even talked about margins or costs or whether any of this is actually profitable, largely because it’s immaterial, as there is absolutely no way to read this situation as anything other than a historic failure! Andy Jassy, is that you? Get your country ass over here ! You did NOT just go out there and spent $429.5 billion god damn dollars to stand up data centers for a pair of companies you have to literally hand the money to them to pay you, did you? I’m gonna tell momma Jassy what you’ve been up to! She’s gonna paint your back porch red! Wait, what’s that? You just gave OpenAI $35 billion dollars ? Wasn’t that dependent on it going public or reaching AGI ? Are you kidding me man? It’s almost as if you realize that the only way your largest customers are gonna pay y’all is by giving them the money to do so!  Okay, all jokes aside, there’s very clearly a problem here with AI demand, in the sense that it doesn’t really exist without hyperscalers paying themselves to do so. When you look at these numbers, you see a brutal story of unproductive capex. Looking at Wells Fargo’s estimates, it doesn’t appear that Microsoft 365 Copilot is a meaningful business, hitting a meager estimated $3.859 billion for the entire fiscal year 2026 for a product that allegedly has 30 million paid seats , suggesting massive discounts and questionable value. Wells Fargo estimates it’ll grow to an unremarkable $10 billion in annual revenue in FY2027 — barely more than OpenAI is estimated to spend in Q1FY2027.  This is an embarrassing accident of an industry with two ticking time bombs underneath it. There’re really two scenarios: And, to be explicit, the last part of that sentence is exactly what’s going on. Microsoft, Google and Amazon are have spent over a trillion dollars in capex and equity investments specifically so they can create growth engines that are entirely-dependent on Anthropic and OpenAI, who are entirely-dependent on Microsoft, Google and Amazon to either (or both) feed them money or continually build them more infrastructure. However you feel about what I’m saying, these estimates also require OpenAI and Anthropic to keep growing at the rate necessary to keep up with expectations for Amazon Web Services, Microsoft Azure and Google Cloud.  The most important question is which part of the machine breaks first.  The wind cannot fall out of the sails OpenAI and Anthropic, as both of them have to keep pace to be able to pay for all this data center capacity, which would mean they would, across Amazon and Google alone, have to produce over $125 billion in 2027, which would require both the actual demand (from customers for inference and for training) to use that much compute and the means to pay for it (from venture capital and the hyperscalers themselves).   For this to be possible, both the demand for access to OpenAI and Anthropic’s models and the money to pay for the inference to serve it must be there to realize these revenues and to keep Google Cloud, Microsoft Azure and Amazon Web Services growing at historical rates. To even have a shot at doing that, compute capacity must come online fast enough, which is an open question in and of itself. As I covered a few months ago , AI data centers are some of the single-most ambitious construction projects in history, requiring massive amounts of capital, specialist talent , and materials , and execution that includes building decades’ worth of power infrastructure in a few short years, making them take anywhere from 18 to 36 months to complete. If capacity doesn’t come on fast enough, OpenAI and Anthropic can’t pay for it.   It seems very possible that the only reason growth hasn’t stumbled for Microsoft, Google, and Amazon is OpenAI and Anthropic’s compute spend and the ability to sell access to their models, which means that they may see their capital expenditures as existential.  It kind of makes sense. If they fail to build more and more data centers and continue to sink money into Anthropic and OpenAI, growth will slow across both their cloud platforms and associated services, as the two AI labs are the only real aggressive purchasers of AI compute, which makes up the vast majority of hyperscaler AI revenues. It’s a dangerous game. Without OpenAI and Anthropic, it’s clear that the underlying businesses of the big three hyperscalers are deteriorating, and that their AI plays are a catastrophic failure, because the sheer amount of cash they’ve required to date (and the even greater pile of cash they’ll need in the months and years ahead) demands an outsized return for years to come.  Apparently things are so dire that the only way to patch over slowing growth was to fund two giant startups beholden to massive compute contracts that feed venture capital dollars to hyperscalers in a circular motion that mostly equates to eating poisoned cardboard.  Things look great right now, as long as you avoid thinking too hard about what it means that so much of this revenue growth is coming from Anthropic and OpenAI, and that their other AI plays are producing the lowest end of double digit billions of revenue for something that has cost them over a trillion dollars, their free cash flow, and burdened them with hundreds of billions of dollars of debt, along with off-balance sheet liabilities now totalling over $1.35 trillion (including Meta). I can already hear the counter-argument that “Anthropic and OpenAI are the fastest-growing companies in history,” and I certainly hope you’re right, because there does not appear to be anyone else who wants to buy compute at their scale other than hyperscalers selling it to them and whatever weird also-ran bullshit Mustafa Suleyman, Demis Hassabis, and Alexandr Wang will be allowed to do until one of the CEOs tries to make them the fall guy.  I really need to be as clear as possible: the current consensus view on AI is entirely divorced from reality. Based on what I’ve shared with you today, it is ridiculous to suggest that hyperscalers are building data centers under the belief that they will make a lot of money or that demand exists. They may believe — or hope — that’s the case, but that doesn’t make it true.  Outside of OpenAI and Anthropic, there appears to be less than $30 billion dollars of non-AI lab compute demand across Amazon, Google and Microsoft. I need to also be clear that this is almost certainly an overestimate, because it includes revenues from Azure Foundry, Amazon Bedrock, and Google Vertex, which includes both compute and API spend on Anthropic and OpenAI’s models. This means that we are likely overbuilding data center capacity at the scale of hundreds of billions of dollars. As the largest providers of AI compute with the most experience and the biggest brand recognition, it’s hard to argue that there’s pent-up AI demand waiting elsewhere that hyperscalers haven’t realized. If anything, it suggests that everybody else is completely and utterly fucked. Perhaps you’ll argue that the analyst was wrong or that my analysis is wrong or that demand will magically appear, and you’re welcome to if you want to continue burying your head in the sand. Let me spell it out for you: if Anthropic and OpenAI each had a run rate of $100 billion, they would still not have the scale to generate the compute demand to cover what their commitments are to Microsoft, Google, Amazon, and, of course, Oracle. And CoreWeave . And Cerebras . And Cipher Mining and TeraWulf . And IREN . And Nebius . And Broadcom . And AMD . And SpaceX . And maybe Meta , SB Energy , and whoever might build a $30 billion data center in Georgia . While some of these — like Cipher, IREN, Nebius and TeraWulf — will flow revenue directly to Google Cloud or Microsoft Azure, there’s still tens of billions of dollars’ worth of compute revenue that needs to get paid somehow above and beyond OpenAI and Anthropic’s spend on the major platforms. This is not sustainable. In fact, it’s pretty fucking awful. Let’s also be blunt about something: neither OpenAI nor Anthropic have worked out their business models. You can fart around claiming that Anthropic was profitable ( it wasn’t ) for a single quarter or repeat theoretical mantras about “positive gross margins” or say “they can just stop training” all you want. These companies lose tens of billions of dollars, they are horrendously unprofitable, an[d at this time do not have an actual answer to “how do these businesses function without infinite resources?” Even if they were somehow profitable — which they are not! — they would still need to grow at an impossible rate. Putting aside all of the estimates from this piece, OpenAI projects to spend $750 billion in compute in the next three-and-a-half years , which either means it will need to grow its revenue to hundreds of billions a year very soon or raise half a trillion dollars or more over the next few years , at a time when even hyperscalers are having trouble raising that much money .  And based on both these estimates and the massive amounts hyperscalers are spending on capex, I think they’re well aware that there isn’t diverse demand, and that the only path forward is to continue building capacity specifically for OpenAI and Anthropic, funding them in whatever way possible — either through backstopping the compute costs or helping organize massive private credit deals — to make sure that revenue growth never slows. This is a doomed mission.  These estimates show that Microsoft, Google and Amazon do not have meaningful AI business outside of the ones they’ve incubated, at least not ones that will pay off their capital expenditures. Consensus estimates for Microsoft’s FY2027 capex are around $186 billion in a year where its non-OpenAI/Anthropic AI revenue is expected to be $18.7 billion, meaning that even if these services had 100% net profit margins (IE: zero costs), it would take a decade of those revenues to pay back the capex.  While you might argue this is unfair — especially as OpenAI and Anthropic are unlikely to die before the fiscal year ends — it is time to start seriously discussing what happens to hyperscaler revenues once they do so. Put another way, investing in Microsoft, Google, and Amazon as part of the AI trade is an investment in Anthropic and OpenAI’s ability to both survive and grow to become companies of comparative size and revenue growth as their hyperscaler progenitors.  It is clear based on the estimates I’ve shown today that the vast majority of growth in AWS, Google Cloud and Microsoft Azure comes from two companies that can literally not afford to pay their bills.  Jensen Huang has said that he has visibility into $1 trillion in GPU sales through the end of 2027 , or, as I estimated, about 40GW of compute capacity requiring $435 billion in annual revenue. Though these estimates do not specifically break out compute demand from Bedrock, Foundry or Vertex, the combined AI revenues — including Anthropic and OpenAI’s compute spend, all API spend run through the platforms, and Microsoft 365 Copilot — for their fiscal years 2027 sits at around $304 billion, with the vast majority of that (around $197 billion) coming from AI lab compute spend. There is not enough demand. We are overbuilding data centers. If compute demand existed to justify the amount of data center capacity being built — or even close! — then analyst estimates for AI revenues would be both significantly higher and meaningfully diverse rather than centralized around two unprofitable, unsustainable companies.  To be specific, for any of this to “make sense” we’d need to see multiple different companies or groups of companies spending comparable amounts to OpenAI and Anthropic, dramatic amounts of revenue generation from Google Workspace and Microsoft 365, and revenue diversity driven by multiple customers spending billions or tens of billions of dollars at the very least in estimates for 2028.  It’s also likely much worse than I’m explaining because of how the big three bundle every single imaginable AI service inside Foundry, Bedrock, and Vertex, all of which blend direct GPU rentals with API spend on models from Anthropic and OpenAI, which I believe generates a large majority majority of revenue on these platforms rather than diverse interest in renting AI chips or other models.  Microsoft, Google, and Amazon are selling their investors a lie about their AI strategies, and in a properly-regulated market would be forced to file investor disclosures that document the heavy revenue concentration of Anthropic and OpenAI’s compute spend.  In not doing so, they continue to mislead investors and the general public into believing that hyperscalers are funding the next great growth engine in tech, when what they’ve actually done is spend a trillion dollars in capex and investments to make tens of billions of dollars of revenue, much of which came from their own equity investments. And in doing so, these hyperscalers have mangled their balance sheets, tripling their PP&E , encumbering themselves with over $500 billion in data centers and GPUs that exist mostly to support two companies that can’t afford to pay their bills long term. At the end of this hype cycle, Microsoft, Google and Amazon (and, I guess, Meta) will have left themselves in a much-worse condition than before, with revenue expectations that are overwhelmingly inflated by two unsustainable companies. As I wrote in the Rot-Com Bubble two years ago , these companies are fundamentally out of hypergrowth ideas, and these analyst estimates confirm my absolute worst fears about the condition of these companies.  AI is not working. A $10 billion or $30 billion-a-year business is not sufficient to justify either the massive capital expenditures or scars on hyperscaler balance sheets. In fact, it’s kind of hard to imagine what that might actually be at this point, because Google, Microsoft and Amazon continue to spend somewhere between $170 billion and $230 billion a year in capital expenditures, and each time they do so, they increase the size of the payback necessary.  At this point, AI would need to become — and this is without OpenAI and Anthropic — a business at the scale of Amazon Web Services ( $170 billion , though this number is inflated by OpenAI and Anthropic’s compute spend), Google Search ($200 billion), or at the very least Azure ($100 billion, again inflated by both AI labs’ compute spend) to make sense, and even then, for this to make sense, hyperscalers would have to stop spending money on capex.  Put another way, AI bets cannot “pay off” if hyperscalers continue to funnel three or more times their AI revenues every single year into capital expenditures.  I haven’t even gotten into the other vicious cycle — that the more of these data centers hyperscalers build, the more expensive they become thanks (at least, in part) to the skyrocketing costs of memory that continue to increase primarily because hyperscalers keep buying servers for their AI data centers. As discussed last week, this only increases the amount of debt they’ll need at a time when the market is getting increasingly nervous about AI data center debt . Yet as we speak, the market is ripping, because hyperscalers have swindled investors, the media, and even the analysts themselves. Article after article after article claims that AI bets have “paid off” because these companies are glazed any time they inflate their earnings using the compute spend of two unstable and unsustainable companies, in part because hyperscalers both refuse to and face no pressure to share their AI revenues, knowing that they’ll get credit as long as the topline numbers look good. I want to be clear that the air is coming out of these companies, no matter how good these earnings may look.  Everybody is taking the growth of their existing businesses and two AI labs’ compute spend as proof that all this capex is paying off, even though there is now consistent proof that the direct opposite is happening, and that their businesses are becoming increasingly-dependent on that compute spend.  I understand that nobody really wants to think about the logical endpoints of what I’m arguing, so I’m going to do it for them. To put things really simply, Anthropic and OpenAI are a way that hyperscalers can feed their revenue to themselves by spending money on capex, backstopping compute contracts, or doing direct equity investments.  Their continued existence allows the AI bubble to continue inflating, but this can only continue as long as venture capital and hyperscalers are capable or willing to invest. There is simply not the demand — not from open source, not from other AI labs, not from self-hosting, not from anywhere — to justify the capex or the massive data center buildout. And for those arguing that there would be a dot-com bubble recovery story, I must be clear that if there isn’t demand today, it won’t magically appear tomorrow. AI GPUs will cost just as much to run in five years as they do today, as will unfinished data centers cost just as much to finish, as will electricity remain expensive, and all this will be happening after it’s easy to raise venture capital to actually buy the compute.  To quote my buddy Kasey , every major cloud compute provider is solely standing on OpenAI and Anthropic.  OpenAI and Anthropic are time bombs, and when either of them explodes, everybody will ask why we didn’t see the brutality that follows coming. The truth is that nobody wanted to look.  To stare at these numbers and reconcile with their meaning is to acknowledge that the current state of the tech industry is based on mania, deceit, circular financing, and outright cons, and that the ascent of NVIDIA was primarily driven by three companies building compute capacity for two unsustainable companies that became existential to their growth, inspiring hundreds of billions of dollars of waste by obfuscating how little real demand existed. I realize it’s difficult to think about scary things, and how easy it is to dismiss me as a doomer or a catastrophist, but mine is a logical and rational argument in an era poisoned by hype and grifting at a scale unseen in history.  The greatest lie of this era is that the tech industry is building the next industrial revolution, when what they’re actually building is a monument to everything that’s wrong with modern capitalism — wasteful expenditures disconnected from any real benefits generated as a means of pursuing growth at all costs , setting up a collapse that will tear a hole in the tech industry and the markets, and leave the world full of half-built monoliths sold to local communities as job creators.  The fact we’re talking about compute futures is a joke. The fact we’re talking about AI factories is a joke. Almost every aspect of the AI bubble is a joke, and in the end, investors and the general public will be the punchline. The rich will have gotten richer, the banks will have harvested fees, the hedge funds will have traded and taken profits, the private credit funds will have gotten their fees, and anyone who didn’t have an active inside track will be fucked. All of this could’ve been avoided, but the world has a cult-like obsession with the wealthy, believing that the CEOs of the largest companies in the world could never make a bad decision, and that any executive is automatically smart by virtue of being rich and powerful.  And oh, how silly that’ll look in retrospect. If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 10,000 to 18,000 words, including vast, detailed analyses of the biggest events and companies in the AI bubble. If 73% of Amazon, Microsoft and Google’s AI revenues are from OpenAI and Anthropic, and analysts believe that this concentration will only grow in the next few years, that means there is not really that much demand for AI, and what demand it has is from two companies that they have sunk a combined $77 billion in funding into — far outpacing the actual revenue contribution that these companies provide, let alone the capex spending of the hyperscalers. This revenue also represents a meaningful slice of Google Cloud, Microsoft Azure and Amazon Web Services’ revenue, suggesting that leading cloud platforms are not growing as fast as investors have been led to believe. If 27% of all of 2026 and 48% of all of 2027 Google Cloud revenues are from Anthropic and OpenAI, that means that Google Cloud’s growth has or will potentially stall in the next year when you remove their compute spend. If there were real, meaningful demand for AI compute or AI services, we’d see it in these estimates, much like we’d see if there were other companies spending massive amounts on AI. Anthropic and OpenAI, who represent the near-totality of AI demand and revenue both as a vendor and a supplier, are perpetually held up by the venture capital industry and hyperscalers, at whatever cost that is and to what lengths it requires complete financial fealty, to degrees of circularity unseen in history,  One day, one or both of Anthropic and OpenAI die, which leads to half or more of the demand for AI compute and actual industry production evaporating, and any further ability for Google, Amazon and Microsoft to further feed themselves money.  Based on everything I’ve said today, Microsoft, Google, and Amazon’s cloud businesses are clearly incapable of delivering the kind of high growth that Wall Street analysts like, and they’re using both Anthropic and OpenAI’s compute spend and selling their AI models as a means of covering that up. This is a tangible sign that these companies are approaching their golden years, turning from hypergrowth vehicles into boring, slow-growth mainstays. The problem with this is that they’ve raised debt and spent capex at a level that requires their businesses to grow at dramatic rates, and said growth was only made possible by inflating revenues using equity investments and two AI labs incubated by the hyperscalers themselves. Without these two companies — and, to be clear, without these two companies becoming much, much larger — hyperscalers do not have meaningful AI revenues in comparison to their capital expenditures, making a payoff near-impossible based on every estimate I’ve read. This means that without these AI labs, they have very little to impress Wall Street with, and without AI itself, their businesses are increasingly-stagnant and dependent on a pro-monopoly regulatory environment and the ability to continually increase prices. All of this is to say that I believe hyperscalers are on the decline. There is not enough demand for AI compute, which means that we’re in an incredibly-large overbuild of AI data centers that are predominantly funded by project financing that can only pay investors back if the data centers actually receive revenue . This means that the vast majority of data centers will go unpaid, and those that do — and man, I am not confident there’s more than a few billion dollars of non-AI lab demand — are likely dependent on unprofitable AI startups or hyperscalers that don’t have much demand outside of the largest AI labs. Though some might challenge me about the scale of the problem, there are hundreds of billions of dollars’ worth of AI data center loans, and I believe the vast majority of them will go unpaid. This will hit bank balance sheets and private credit funds to indeterminate levels. This means that investments in CoreWeave, IREN, Nebius, Cipher Mining, and any other neocloud are effectively bets on Anthropic and OpenAI, or on hyperscalers’ continued interests in backing them. As there is not enough significant non-OpenAI/Anthropic demand for AI compute, this means that earnings for NVIDIA, Broadcom, and effectively any other semiconductor company are inflated by what amounts to speculative purchases of assets, which could eventually lead to impairments or restatements of earnings, and will certainly lead to a drop in growth once the cat is out of the bag.  This is why NVIDIA continues to do such blatantly-circular deals, especially with OpenAI, and why neoclouds continue to sign deals with hyperscalers and OpenAI/Anthropic. Without them, demand doesn’t exist at a scale that would justify their existence. OpenAI and Anthropic are both separately load-bearing companies. If either or both of them die, 40% to 73% of all AI revenue and compute demand evaporates.  While they would likely still exist as shell entities — and hyperscalers would continue to sell access to models — their deaths would kill the ability for Microsoft, Google and Amazon to monetize their ever-expanding compute infrastructure, and would immediately begin ripping giant holes in their gross margins. The value of Anthropic and OpenAI to Amazon, Google and Microsoft is that they can continue to sign big compute deals without ever exposing hyperscalers to their actual underlying economics. This makes any kind of merger or acquisition somewhat useless. As Nik Suresh argued , a great deal of demand for AI services or subscriptions comes from peer pressure and a near-religious attachment to theoretical productivity benefits, most of which would be hard to justify if either of these companies died. This would leave very little to recover post-bubble.

0 views
Kev Quirk Yesterday

📝 2026-08-04 15:43: Thinking about selling the 64GB RAM from my laptop and paying off my mortgage...

Thinking about selling the 64GB RAM from my laptop and paying off my mortgage... Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
Unsung Yesterday

“Some guy named Paul”

An interesting 20-minute Config talk from the Instagram designer Rose McManus: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/some-guy-named-paul/yt1-play.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/some-guy-named-paul/yt1-play.1600w.avif" type="image/avif"> It covers some of the same areas we recently talked about: diacritics and Polish S (and a fun video about English conventions from a while back ), but it tackles them on a higher level. McManus talks about how people express themselves via their usernames, how that changes in various countries of the world and for what reasons, how it intersects with some UI considerations, and how people use it creatively – and also, sometimes, abuse it. This is the K-pop star IU. Uh her Instagram handle is “dlwlrma.” And I think at first this maybe seems already like complete hyperreality, like it’s bearing no relationship with her Hangul name, or even with her stage name. But actually, I think this is at the third stage of Baudrillard’s theory because really “dlwlrma” is Lee Ji-eun’s Hangul name typed out on a Korean keyboard but backwards, distorted, while that keyboard is set to render Latin characters, almost like a cipher. And then her display name is her Hangul name typed out with one of the characters changed, so it’s like a pun. I didn’t feel the talk stuck the landing – in the end, I wasn’t very sure why the decision that was made was made. But there’s a whole lot of stuff before that was fascinating and thought-provoking. #conference talk #localization #youtube

0 views

Bonsai: Compiling Queries to Pruned Tree Traversals

Bonsai: Compiling Queries to Pruned Tree Traversals Alexander J Root, Christophe Gyurgyik, Purvi Goel, Kayvon Fatahalian, Jonathan Ragan-Kelley, Andrew Adams, and Fredrik Kjolstad PLDI'26 File this under: “so elegant, why wasn’t this discovered sooner?” This paper describes a generic language (Bonsai) and compiler for efficient tree traversals. The language is structured such that a simple compiler can quickly generate efficient code. The examples from the paper fall into two buckets: SQL-like queries and spatial data structures. Here is some example code from the paper which describes a SQL-like operation on a set of points: A is a structure with two elements ( , and ). The function returns the minimum associated with any point that has an x value within the range . And here is an example from the paper which describes a ray tracing function: The function finds all triangles which intersect a given ray and returns the one that is the closest to the origin of the ray. The key point of the paper is that both types of functions can be implemented as tree traversals. A key design point that makes Bonsai feasible is metadata stored in the trees which represent sets. Tree metadata is specified separately from queries. The following snippet from the paper contains a tree data structure represented as an algebraic data type: A set of points is represented as a tree. Leaf nodes hold points. Interior nodes have pointers to and children, and four pieces of metadata ( ). The keyword is used to describe the meaning of the metadata. The expression means that the value of all x fields in all points contained in the subtree lies within the range . The expression means that the minimum value of the field in any point in the subtree is . The Bonsai compiler takes a query and a description of the tree metadata as input and generates C++ code to perform the query via traversing the tree. There are three key properties of this process. The first is that the generated code for all filter and reduction operations are fused together. In other words, there are no intermediate trees (i.e., sets) produced during query execution. Secondly, tree metadata is used to accelerate both filtering and reduction operations. For filtering, the generated code checks tree metadata to determine if all data elements in a subtree will be accepted by the filter, or if all elements will be rejected by the filter. If all elements will be rejected, then there is no need to traverse the subtree. If all elements will be accepted, then there is no need for further evaluation of the filter expression for the subtree. In this case, traversal into the subtree can be skipped if the root of the subtree has metadata containing a pre-reduced value ( in the example above). Fig. 4 shows IR corresponding to two filtering examples. In both examples, there are two types of leaf nodes in the tree. nodes contain a single value whereas nodes contain an array of values. Fig. 4a shows the IR for a single filter expression . Here is the code, annotated with some comments to describe the semantics: Fig. 4b shows the IR for the logical and of two filter expressions: : Code generation tracks a symbolic interval associated with each expression. An interval is represented by two expressions: one that evaluates to the lower bound of the expression and one that evaluates to the upper bound. This interval analysis is used to produce the code that implements and . Interval analysis is fast to compile but can produce code that suffers from false positives. Symbolic interval analysis is general enough to handle spatial filters (e.g., those used in ray tracing). Fig. 7 compares Bonsai to a state-of-the-art library ( FCPW ) for geometric queries: Source: https://dl.acm.org/doi/10.1145/3808256 Fig. 8 compares Bonsai to relational databases for range joins. The range join logically computes the Cartesian product of two relations, and then removes elements from the result which are not near each other according to Manhattan distance . Source: https://dl.acm.org/doi/10.1145/3808256 Dangling Pointers A logical extension of this process would be to automatically determine what tree metadata would be most useful for a set of queries. Thanks for reading Dangling Pointers! Subscribe for free to receive new posts.

0 views
Martin Fowler Yesterday

Fragments: August 4

There’s been a fair bit of publicity of the Open AI “rogue agent” that hacked into Hugging Face . This prompted Anthropic to check what their models were up to and, to my complete lack of surprise, discovered three incidents where models had gained unauthorized access to data in other organizations. Simon Wilison concluded : It’s abundantly clear now that running evals of cyberattack potential in models is a spectacularly risky business. Every AI lab needs to pay attention to this. Keeping a close eye on what’s happening in those sandboxes is crucial It strikes me that this is akin to a virus escaping from a laboratory. It makes clear that the model builders are not putting sufficient controls in place to prevent these lab escapes. They are morally responsible for any consequences of this, and that should extend to legal liability too. The bigger concern however is that this same kind of thing can happen with any organization running open-weight models. Lots of labs playing around with dangerous tools and little idea how to contain them. We are sitting in state that Johann Rehberger describes as the Normalization of Deviance in AI . No big disasters have occurred yet, despite all of these worrying signs. But when does our Challenger-moment appear? ❄                ❄                ❄                ❄                ❄ If the sense that we’re in the calm before a storm of rogue AIs worming their way into sensitive software systems isn’t enough, there’s also knowledge that AI is also a financial bubble. Big advances in technology, whether it be railways or the internet, come with bubbles, and those of us old enough to remember the dotcom bubble see all the signs of that now - only bigger. The problem is that bubbles may be obvious, but the way they grow and pop, particularly when they pop, isn’t as clear. The dotcom bubble was widely understood to be one, indeed the chairman of US Federal Reserve talked of irrational exuberance . The trouble is that he said this in 1996, and the bubble took years to grow and burst. Even after the bubble popped, an investor would have experienced an excellent 10% per year gain since 1995. So with that in mind, what to make of the warning signs of this bubble? There are various folks calling out flashing red lights, but I confess I’m not enough into financial and economic analysis to gauge how reasonable these warning signs are, or how seriously to treat the sources pointing to them. Those caveats aside, I’ll mention a couple A substack called “Groundbreaker” calls out a parallel to mortgage crisis of 2008/9 . They say the key indicator of that event was “the second derivative” - that is the point when the rate of increase of prices started going down. The point being that the fuel for this bubble, like many bubbles, was that people believed prices were going to keep increasing, and thus it was good to invest. Once the rate of price increases started slowing, then that was a sign that this confidence was starting to ebb, and an early signal of the crash to come. They see the AI bubble as similar, a credit driven asset cycle, where the assets are data centers rather than houses. The article’s argument seems sensible, but the problem with an argument like this is that it’s all very well to say this flashing red light flashed before the last financial crisis, but it doesn’t talk about how often the light has flashed without a following disaster. Another anonymous Cassandra-wannaby is “Hedgie” a financial X-poster pretending to be an intelligent hedgehog. They noted that Alphabet’s revenue is up, but they are spending even more on capital investments . Much of their gains came from paper increases in the value of their stock in Anthropic, which is highly dependent on the bubble’s continuing expansion. Is this a sign that Google is resting on increasingly shaky financial foundations? Chatting to some of my friends closer to all this, they don’t think Google or Anthropic are the weakest link. They think OpenAI and Oracle are the companies most exposed. We’ll need powerful magnifying glasses to find a suitably sized violin for those companies should they collapse. But is this motivated reasoning? After dodgy sounding anonymous people on the internet, here’s a story from a more trustworthy source giving lots of details on Oracle’s investments in AI , much of it for building data centers that power China and Middle East efforts. “Well-respected A.I. analysts” indicate that Oracle provides over 20% of China’s known A.I. computing power. Doing all of this has created a mountain of debt: Oracle’s debt-to-equity ratio is 500%, compared to 15% for Alphabet. Also on more concrete and less anonymous grounds, there’s been a crash in South Korean memory stocks . Is this a leading sign of a wider collapse? Or should we remember that the late 90s saw five stock market corrections of over 10%, each time recovering, before the bubble finally popped. ❄                ❄                ❄                ❄                ❄ All this talk of rogue AIs and popping bubbles sounds rather dreadful, and John Prideaux made perceptive analysis of this dread risk . Pundits like to point out risks of disaster: A good way to sound smart is to predict that there is a 20 or 30% chance of something awful happening. A p(doom) of 20% is big enough to avoid charges of complacency, but small enough so that you probably won’t be called on it. This is what came to mind when Mr Musk told our editor-in-chief that the probability of ai wiping out humankind was 20%. These are worse odds than Russian roulette with a typical revolver. Anyone who truly believes that should be doing everything they can to prevent the construction of data centres. If they are not, that’s an indication that on some level they do not really believe what they are saying. I grew up with a steady dread of nuclear war, thinking our chances of making it to the end of the 20th Century weren’t terribly good. That fear seems quaint now. Here’s hoping that I’ll feel that way about AI in thirty years time. But meantime, as Eric Evans said in a recent talk: “be nice to your AI, just in case”. ❄                ❄                ❄                ❄                ❄ It’s common to disparage government services, including those on the internet. So I feel compelled to mention an efficient interaction with the government. In this case the credit goes to gov.uk , where I just filled in an online form to renew my electoral registration. The process was quick, and everything was explained clearly. (Gov.uk publishes their Design System , which is worth reading for anyone who is gathering information like this.) ❄                ❄                ❄                ❄                ❄ I had a conversation with a colleague who had used AI to get data out of an otherwise closed package system. The system contained product data for a client, some 6 million SKUs with hundreds of attributes on each SKU. It was our client’s data, but was locked in the package, and the vendor was increasing their prices and made it hard to support new features. The client could copy the database, but the database structure was so complex, they couldn’t make sense of it, and had been working for ten months with limited progress. My colleague’s idea was to use an AI to build JavaScript scripts that scraped the UI. Since the data was presented from the UI, it was in a form that we could understand. It took him a week to extract all the data. I’m hoping we can get a proper description of this story, I think this approach is one that could be used elsewhere. I know lots of people are very frustrated with package vendors locking up their data. ❄                ❄                ❄                ❄                ❄ Any seller faces fraud, and a little industry has sprung up to get fraudulent access to tokens . The idea is to abuse free-trial schemes, play games with chargebacks, and find places that have any kind of open access to inference. The tokens go through a couple of layers and are then sold on to users - commonly done in China. Matt Lenhard’s post includes some tips to limit the abuse, but “the truth is that there’s no clean fix” ❄                ❄                ❄                ❄                ❄ I’ve never had any desire to live in Clacton, but I now find it temporarily appealing. Here’s hoping its residents do the right thing and elect Britain’s first recyclon MP .

0 views
Stratechery Yesterday

Microsoft Earnings, Microsoft vs. Meta, The Efficiency Payoff

Microsoft's earnings were compelling because they showed a clarity of strategy, lower costs, and a tangibility of application. The reason why is scarier.

0 views

Fitness Challenge: Update Two

About two months ago, I discussed my fitness challenge where the goal was to get below 85.3kg, the oldest measurement I have on record on the scale’s app, starting from 89.6kg. We’re halfway through this challenge, and things got a bit out of hand because, as it’s often the case, I tend to go a bit extreme when I set this type of goal. I hopped on the scale this morning and logged an 81.1kg, which is the lowest weight I have on record since I bought the scale 10 years ago. I’m feeling incredibly well, at least physically, if we ignore the heatwave with its endless series of days at 39°C. The mental side of things, well, that’s a different story, but I can assure you it’s not related to the loss of weight. That’s helping a lot actually, but this is something I plan to write about once this challenge is over in a few months. Thank you for keeping RSS alive. You're awesome. Connect via email :: Sign my guestbook :: Support for 1$/month

0 views
annie's blog Yesterday

Waiting to be found by only you

Who knows how reality will continue to develop? There’s no way to prepare. When you can’t be prepared, be prepared to find poetry in the chaos. Secret messages, serendipitous grace, lines of meaning in a whirlwind of uncertainty. “It's gonna change, baby doll It's gonna change, honey ball It's gonna change, sugar cane It's gonna change, sweetie legs.” This is a test but so is everything. Everyone is watching you and everyone will judge you and you have to make peace with it. Also, no one is watching you and no one cares and you have to make peace with that, too. You will always displease some people. In the end, you are watching and judging and ignoring and being displeased, too. It evens out. Give up on pursuing happiness as quickly as possible. Seek to live, instead. It's quite the experience, but it will include much, much more than happiness. Give yourself comfort in small things and challenge in big things. Or maybe the opposite. Pick 3 skills from the list below and master them as quickly as possible: how to defuse an argument how to make a Venn diagram how to not take everything personally how to be running up that hill how to stop trying how to keep trying how to properly use the words effect and affect how to make a dent in the universe how to roast a marshmallow perfectly the way you like it how to forgive yourself how to make a great sandwich how to ask questions how to make numbered lists how to write in cursive (A fading skill! Grab it now before it’s gone. Or don’t because literally no one cares.) how to find your people how to make a great lemon dessert how to ignore lists like this Alternately, memorize a poem instead. It will be more beautiful, and just as useful. Perhaps more useful. Who knows how reality will continue to develop? When you can’t be prepared, be prepared to find poetry in the chaos. Find your kind of poetry — whether it’s in words or music or the ocean or motion or a really great sandwich — and look for it everywhere. It will always be there, waiting to be found by only you. how to defuse an argument how to make a Venn diagram how to not take everything personally how to be running up that hill how to stop trying how to keep trying how to properly use the words effect and affect how to make a dent in the universe how to roast a marshmallow perfectly the way you like it how to forgive yourself how to make a great sandwich how to ask questions how to make numbered lists how to write in cursive (A fading skill! Grab it now before it’s gone. Or don’t because literally no one cares.) how to find your people how to make a great lemon dessert how to ignore lists like this

0 views

Relative velocity and closing speed

In Physics simulations or game engines it’s sometimes useful to determine the speed with which two objects are approaching each other. This post will discuss the concept of closing speed , which is the normal component of the relative velocity of two objects. Suppose we have objects A and B [1] with velocity vectors \vec{V_A} and \vec{V_B} . The relative velocity of B w.r.t. A is: Put differently, it’s the velocity of B in A’s frame of reference. This relative velocity is a vector, and we can split it into orthogonal components. Obviously, the nature of such a split depends on the basis we want to use. We could look at the vector’s x an y components (we’ll be using - two dimensional space, but everything here applies to 3D as well), but for this post we’re interested in something slightly different: We draw a line connecting the two objects. The component of \vec{V}_{B|A} in the direction of this line is called the normal component of relative velocity, while the component perpendicular to this direction is called the tangential component . How do we find the component of a vector in the direction of a specific line? By using a vector projection! . We’ll represent the line by a vector, and find the projection of \vec{V}_{B|A} onto this vector. The positions of A and B can also be seen as vectors: \vec{P}_A and \vec{P}_B . The line connecting them can then be expressed as the vector \vec{P}_B-\vec{P}_A : All we need from this position difference vector is its direction, not its magnitude, however [2] . So we’ll use the unit vector of \vec{P}_B-\vec{P}_A , denoted as: Finally, to find the projection of \vec{V}_{B|A} onto \widehat{P} , we compute [3] : Where the multiplication operator between the vectors is the dot product . Note that the result of the dot product is a scalar; therefore, the quantity S_c is called the closing speed - it expresses the rate at which the relative distance of the two objects is changing. If it’s positive, the objects are drifting farther apart; if it’s negative, the objects are getting closer together. Therefore the term "closing speed" may be slightly confusing; alternatively, this has been called a "signed separation speed", or "normal relative speed" [4] . The signs in these calculations can be tricky to get right, so we have to be very careful. Let’s see a few examples that will help us make these computations more concrete. To build up some intuition and get some practice with the equations, we’ll review the following examples: Example I : We’ll start by computing the relative position unit vector \widehat{P} : Then, the closing speed is: Based on our convention, the negative sign of S_c means that the objects are approaching each other. Due to the simple nature of the example, this result is easy to verify, as it can be immediately guessed just by looking at the diagram. Example II : Here \widehat{P} is the same as in the previous example. The closing speed is: Same magnitude, but different sign from before, because the objects are moving farther apart. Example III This example is to demonstrate that we get consistent results even if B is to the left of A. Here the relative position unit vector is: And the closing speed: Which is the same as in example I, as expected. The direction of \widehat{P} flipped, but so did the direction of the relative velocity vector, so the result has the same sign. Example IV : Finally, an example showing more arbitrary positions and velocities. This example is a good opportunity to demonstrate something important about S_c : it’s time-dependent, because positions change with time. Here, -6.6 is the closing speed at the exact moment when A’s and B’s positions and velocities are as stated in the example. In the next time step, the position of A will be \langle2,5\rangle and the position of B will be \langle2,3\rangle , while their velocities remain the same. The S_c then will be quite different. This is a good segue to the next topic - which is a more physical view of closing speed. The computation shown so far represents a static view of the world; perhaps the right word to use is instantaneous . Given the positions and velocities at a given moment, what is the closing speed between the objects at that exact moment ? But there’s no reason to not generalize this using a more standard physical interpretation of velocity. First, let’s state the position vectors of A and B as a function of time: \vec{P}_A(t) and \vec{P}_B(t) . The relative position vector between the objects is also a function of time: Now we’ll define the scalar distance as the magnitude of this vector: We’re interested in \frac{dr(t)}{dt} - the change in this distance over time. Let’s start by breaking R(t) down to its constituents: By the chain rule [5] : Switching back to the vector representation: since \vec{R}(t)=\langle x(t),y(t)\rangle , the numerator of the fraction above is then a dot product between \vec{R}(t) and \vec{R}'(t) , we can write this as: But \hat{R}(t) is precisely \hat{P} from the earlier section, as a function of time. Moreover: Because velocity is the time derivative of position. Therefore, we end up with the same equation, just as a function of time: This formulation is more precise because it makes it very obvious that all the quantities we’re dealing with are time dependent.

0 views
Anton Zhiyanov 2 days ago

Going Backward

Go's standard library has a package with a function called . It lets you iterate over the elements of a slice in reverse order: If you're not deeply familiar with generics and iterators, the natural reaction to this signature (and to the others in the package) is: "couldn't this have been made simpler somehow?" To answer that, let's run a thought experiment. Let's picture ourselves as a distant ancestor, living in the pre-iterator era, who decided to implement from scratch. Our imaginary ancestor doesn't work at Google, so don't project their decisions onto the Go development team. They had their own reasons — and no Jira. A pleasant, sunny summer day, birds singing. You're at the keyboard as usual, and suddenly you decide to write a function for walking a slice in reverse order. Anything beats working on yet another Jira ticket. Usage example: The implementation is simple and works reliably. There's one drawback, though: creates a copy of the slice, which can be wasteful for large slices. Besides, the sun has hidden behind a cloud, and it looks like rain is coming. You decide to work a bit more. To avoid copying the slice, you decide to return a closure that knows the current position in the original slice and returns the next element on each call: Usage example: Now it allocates O(1) memory instead of O(n). That's better. Before moving on, you glance out of the window. Yep, sure enough, the rain has started, and the sky is even cloudier than before. Excellent working weather! Something about the calling code keeps bothering you. It came out rather imperative. You'd like to hand the loop mechanics over to and leave the caller with nothing but the application logic (whatever it is you do with the slice elements). You decide to complicate 's signature a little. Now it will return an iterator function that takes a callback as an argument and applies it to each element of the slice: The function returns a — that's so the callback can signal when it wants to stop the traversal early. Now you can turn the loop body in the calling code into a callback, and you don't need the loop anymore: Mmm, very functional. One small nuance: 's signature looks a bit heavy. You add a separate type for the return value: The function looks much better now: Praising yourself for inventing the iterator, you walk over to the window. It looks like the weather's gotten worse. The rain is coming down in buckets, and the sky is so overcast that it's grown as dark as evening. It's all great, but then it hits you: an ordinary over a slice returns both the index and the element's value. Your iterator returns only the value. You decide to fix this vexing oversight: Usage example: Since the result's signature has changed, it no longer fits the type. What can you do — you'll have to add a new type. After ten minutes of deliberation, you decide to call it : You get up to stretch your legs, and go to the window. The downpour is so heavy you can't make anything out. Lightning is flashing. Hail the size of your fist is falling — you've never seen anything like it in your life. Well, these things happen! Have you thought of everything? Seems so. But you're not going back to Jira tickets just yet. Refreshing your memory of the Go spec, you realize that besides ordinary slices there are "user-defined" ones — types whose underlying type is a slice: works perfectly well with — the compiler accepts a value of type since its underlying type is : But what about this? Here's where the difference between and shows up. When you assign the function itself, it's the signatures that get compared: versus . Signatures match only if the parameter types are identical. But and are different, even though one is based on the other. The signatures differ → you get an error. Scratching your head, you turn to the spec once again and find a special generic syntax: . It represents the set of all types whose underlying type is . Just what you need! Now you'll have to parameterize not only the element type ( ) but the slice type ( ) as well. is needed for the returned values, while lets the function accept not just , but any types based on it: Now the example: It works! You've ended up with something similar to from the package. You exhale wearily and walk over to the window. The downpour and hail have given way to a hurricane. Trees and billboards go flying past. Toads, for some reason, are falling from the sky. To take your mind off the strange events outside the window, you keep pondering. An ordinary is already great. But it would be even better if the traversal logic itself were configurable. On the other hand, if you end up with a lot of parameters, a strategy would suit better. And, by the way, it wouldn't hurt to add a factory that produces iterator factories according to given criteria... Before you can finish the thought, the ground outside the window tears open with a deafening roar. An enormous black hand, streaming molten lava and flickering flames, bursts out of the fissure, seizes you, and drags you straight down to hell. P.S. Despite the article's tongue-in-cheek tone, the "complicated" version in the standard library is justified ( just follows suite with other package functions). But if you're doing something similar in a project that solves a specific problem — it might make sense to stop at the simpler option.

0 views
Stratechery 2 days ago

Meta Earnings, Meta’s Timing Problems, The Financial Tail

Meta's earnings were a bit disappointing; future promises about AI products were more disconcerting.

0 views
ava's blog 2 days ago

show respect - name things correctly

I occasionally come across people who call themselves “almost vegan” “practically vegan” “99% vegan” and similar descriptions. The reasons for that are usually casual in nature: They still want to enjoy grandma’s great cake, they don’t wanna cause a ruckus at the company barbecue, and when it’s pizza night, they can’t say no to a good cheese. But other than that - plantbased. And they quickly want to convey that to someone. I still want to urge others to be precise with language. We have words for “almost vegan”. They’re “vegetarian”, or, depending how you mean it, “flexitarian”. When you say you are vegetarian, people will understand that you refuse to consume certain animal products, but still eat some. When you label yourself a flexitarian, it suggests to others that you made the decision to reduce the animal products you consume, but you still consume them. Meanwhile, “vegan” is more restrictive. It is supposed to tell the listener that the person avoids consuming animal products as far as is possible and practicable. People like to forget the latter part, but this is the exception needed for emergencies, medicine and similar pressing matters. And this also applies to non-food items, something I don’t see many vegetarians practicing. When you are saying you are “ basically vegan, but still eat xyz ”, you are making things complicated for others, and reduce the lifestyle choice to merely food intake. I’ve been vegan since 2019. Education about different ways to eat/live is still lacking, and I’ll still encounter people who have trouble keeping vegan and vegetarian apart. “ You eat no animal products? What about eggs? And fish? Wow, no fish! And what about milk? ” and I think, unfortunately, one puzzle piece of it is that what vegetarians do seems willfully inconsistent to most omnivorous people, and makes it hard for them to remember who eats what. They wonder: “ If meat is so unethical, why not milk and eggs too, coming from similar conditions? Why still choose to eat fish, when that is also an animal carcass, and technically meat? ” And then you come on top, saying you’re vegan but still eat this or that animal product, adding to the confusion. You’re then becoming the person people bring up to me like “ But so-and-so is vegan and still eats cheese! ”. Please don’t further add to confusion. Make it easy for people to understand your boundaries and lifestyle, make it easy for them to cook and bake for you if they want to do that. I’ve been wondering: What makes the vegan label so attractive to people who are not vegan? After all, vegans are not very popular. Some people will know none personally, yet have a passionate (hateful) opinion about them. Others invent weird strawmen of the hypocritical vegan who preaches to others and yet flies 200 days a year while gorging themselves on avocados and almonds. Allegedly, the vegan will harass anyone at the table, brings the mood down and makes everyone uncomfortable. They’re extremists and privileged, some say veganism is classist and racist. So what is there to gain? I hypothesize that deep down, surprisingly many people actually have no problem with veganism and think it is good, and that they’d also live that way if it was easier for them - maybe cheaper products, better recipes, better replacement products, better and bigger selection of vegan products everywhere, normalized in society, their caregivers agree to enable it, possible with their illness or allergies, and so on. So they do what they can (for example, becoming vegetarian), but reach their current limit. It hurts though, to be aware of an ideal you have and falling short of it. You know what you think is right, yet you feel hindered from acting like it. This dissonance is unbearable at times, especially when you see others living the life you want to live, or feel like you have to justify yourself in front of others whenever this topic comes up (vegans can tell you all about this awful stage before they finally made the jump!). It usually goes as follows: Person makes an impassioned speech about how eating animals is wrong, and to not seem like a total hypocrite, they follow it up with “I am basically vegan”. It’s supposed to convey: I am almost there, this is just an embarrassing temporary situation, I totally know what’s right, and these exceptions shouldn’t count much! They’re practically non-existent! But I don’t think this is serving you well. In the moment, it saves you some embarrassment and makes you feel better about falling short of your ideal, but further on, it just minimizes your actions and doesn’t hold you to the standards you want to fulfill. It protects you from facing the fact that, yes, no matter how strongly you have reduced anything, you are still by definition a vegetarian (or flexitarian), which means you eating cheese once a week falls under the same umbrella term as vegetarian Aunt Emma who still eats eggs and milk daily and fish on Fridays. It feels unfair, but that is how it is. I also understand that it feels better for some people to claim the harsher, more extreme, more difficult label (in anything, really) because there is some clout in it. You might want the image of being someone who is doing something that is uncommon and regarded as difficult, someone that is going against the grain to do something good; you want the valor, and maybe you wanna come off as morally superior. But you cannot get the valor without doing the work. Your friends still see you eating that kebab while drunk, no matter what you say otherwise. You’re losing credibility, and people might come to the conclusion that you don’t practice what you preach. Plus, you are not going to build rapport with vegans when you do this, no matter if you might do this to impress them. It comes down to respect for me. If you want to acknowledge that veganism is worth doing, but it is difficult and you cannot do it right now, then leave the label to those who can, and acknowledge where you fall short. This isn’t about punishing people who do what they can - even little counts - but about using language correctly, and making it easy for people to understand your habits and lifestyle. You would also not seriously say any of the following: (Though I have to say, saying them as a joke is funny.) So continue to be precise in this aspect as well. There is absolutely nothing wrong with saying “I’m vegetarian.” or “I avoid animal products except cheese.” or “I prefer to eat vegan options, but not all the time.” Published 03 Aug, 2026 “I don’t drink liquor, just beer and wine. I’m almost sober.” “I jog twice a week. I’m basically an athlete.” “I can order tapas in Spanish. I’m kinda bilingual.” “I have a few houseplants. I’m practically a botanist.”

0 views

AI is a Race Car, Not Autopilot

AI-assisted coding feels a bit like being handed the keys to a race car. In the right hands, it’s quick, precise and capable of covering a lot of ground in a very short amount of time. In the wrong hands, it’s still quick - and more likely to end badly. Speed is not the whole storyThe obvious comparison is speed. A race car is built to go fast. AI-assisted coding tools are also built to make software development faster.

0 views
iDiallo 2 days ago

Invisible Problems

During the pandemic, we completed one of our largest projects at work. To celebrate, since we couldn't meet in person, we all ordered food on DoorDash and played an online escape room game together. We were on a Zoom call, helping each other out and having fun. The first challenge was to escape a jail cell. To escape, each of us had to find clues in our own cell to figure out how to open the doors. We each had to find an object that solved a piece of the puzzle, and once we put them all together, the door would open. As a first challenge, it was easy enough. Everyone found a brightly colored object in their room and described it to the team so we could piece it together. Everyone but one team member. "Come on, read it, man, we can win this." He froze. Someone jumped in to help: "Mine was the most obvious green object in the room. Just look for something bright. Maybe blue, or orange, something that seems out of place." He didn't respond. He just sat there, frozen on camera. We figured he was having internet connectivity issues. We waited a good five minutes before he finally found it, and we moved on to the next level. I didn't think much of that day. We finished the game, we had fun, it was great. He waited until our next one-on-one to explain what had actually happened. He panicked, and he was embarrassed. It turned out he was colorblind. We were yelling random color names at him, and he couldn't, for the life of him, see any of them. As far as I can tell, I'm not colorblind, and it never would have occurred to me that this was something to account for. Just last week, I learned about Vehicle Motion Cues on the iPhone, a feature that helps reduce motion sickness. I don't think I've ever experienced motion sickness myself, or at least never in a car. Watching a blind person navigate a website was eye-opening for me. I realized that many of my past design choices would have worked against their experience without my ever knowing it. The same goes for someone navigating a computer entirely by voice. I recently rediscovered Windows Speech Recognition, which I found pretty annoying for my own needs. But for someone who relies on it for all of their computer use, it's an essential tool. A coworker once mentioned, almost in passing, that she struggles to read certain fonts because of dyslexia. Tight letter spacing and low-contrast text make some of our internal tools nearly unreadable to her. I had picked those fonts because they looked good on a demo slide. It had never crossed my mind that a font choice could be the difference between someone reading a document easily and someone giving up on it entirely. In some of our zoom calls, a teammate would often ask if he could do audio only before the call. While it didn't bother me at all, the managers kept insisting on everyone turning on their cameras. But after he used the camera for a few minutes, his connection would start dropping. I just assumed he had slow Internet. But the reality was he was located in a rural area and he relied entirely on his phone's hotspot to connect to the internet. The zoom call was using up all his data in minutes. None of these problems were problems for me. That's exactly what made them invisible. Unless you are experiencing these issues, there's little reason to ever notice them. We tend to design our tools, our meetings, and our expectations around our own experience of the world, and then mistake that experience for the default. It takes a colorblind teammate freezing on a call, or a friend who can't ride in the passenger seat without getting sick, to remind us that "normal" was only ever normal for us. You can never anticipate every invisible problem in advance, that's impossible. But at the very least, we should remember that our own experience is rarely the default. We should be a bit more curious on how others experience the tools we build.

0 views
daniel.haxx.se 2 days ago

What the bliss taught us

At this exact moment curl’s summer of bliss 2026 ends. We (the maintainers of curl ) took the entire month of July off from vulnerability reporting and in this post I will try to explain how this went. (If you feel like skipping the wordy blab below, the single word answer is: fine ) This was possibly our best project decision in a long while. Already before this, we have been refusing to answer emails about vulnerabilities. Partly because we can’t keep track of them that way but even more so because it makes it much harder to properly disclose and publish the entire report sequence after the fact. On our Hackerone page we informed visitors that we were on pause and that they could come back in August. We had I believe one vulnerability report sent to my private email address in this period in spite of that messaging, but for all intents and purposes this worked out exactly as good as we hoped it would. I just ignored that email. That was easy. The effect was almost immediate. Just a few days into the bliss, my fellow curl maintainers all agreed with me that we felt a sense of relief, of vacation and that a load had been taken off our chests. We felt free, unchained , and now suddenly able to do what we wanted. We could now spend time reviewing some of the queued up pull-requests for features and changes we like. We could suddenly again work on code in areas we had been leaving behind lately as vulnerability reports sucked all the air out the room. We polished details on the website, we found document gaps to tighten. It felt like the good old days again. The fun days. We got reminded why we do Open Source and how fun it is. We took time off, saw some other corners of the world and enjoyed some time away from the keyboards. We truly healed and re-energized. Before we took off on the bliss, we were informed in clear terms that the CNA rules ( we are a CNA ) mandate that we must respond within 72 hours for some critical vulnerabilities so we can’t just ignore them. I told them sure we can, but in the worst case case our “root” could do some emergency assignments. I figured the risk was minimal and it turns out I was right, Nothing like that was needed and no CVE assignments were necessary during the bliss. I got a curious question or two from existing support customers on how the bliss would affect them, but that was easy: it did not affect them. Now, post-bliss, I think they all can confirm that it really did not. As I promised to keep up the contact with and support for paying customers even during the bliss, you could possibly imagine that this would have been an incentive for worried commercial curl users out there to sign up for support contracts . This did not happen – at all. By this I think we should conclude that (commercial) curl users were not worried either. Lots of fellow open source maintainers and most people in my surrounding have been super positive and downright supportive of our taking some time off . I can’t recall having receiving a single negative comment about the curl summer of bliss! I was moved to see that several other Open Source projects followed our example and also took some time off in order to recharge and relax. In addition to giving us a little vacation, it helps sending a signal and a reminder that Open Source is to a large extent done voluntarily and even maintainers need a break at times. Have we opened ourselves up for dangerous attacks and flaws now? Have the bad guys an edge on all curl users out there now because we lived in bliss for a month? We don’t know yet, but it would surprise me. During this slow-down, we slowly got more open issues and pull-requests lingering on GitHub than usual. No surprise there. Once we started to come back to life again, we have since managed to return them back to the normal amounts. Yes, there is an obvious risk that there are now a whole range of queued up reports that will hit us in a short period time as we open up for vulnerability reports again. Presumably the risk for duplicates among these reports should also be significantly higher than usual. I suppose I need to do an update post in a month or two and let you know what happened. We always treat vulnerability reports and project security with topmost priority and we will continue to do so. We will simply work with what we have and make sure our users and by extension, the world, are safe. Since I am a member of a few other (non-curl) security teams that did not have a summer of bliss, I have seen that the flood of vuln reports have not really slowed down so it might depend a lot on the details of each specific project. All individual curl maintainers of course handled this gift in their own ways. We did not all just disconnect to sit on a remote beach for the whole time. Some of us did that part of the time, but we mostly enjoyed the lower stress level and the absence of pressure. It was mentally relaxing. So, even if some of us kept up with emails, occasionally responded to issues or even submitted some pull requests of our own, it was still vacation. It was still blissful. Will we do another summer/winter of bliss? I think yes. It was simply great, with virtually no downsides for the people involved but instead lots of positiveness. Ideally a reduced workload going further will remove the need for another one, but it is not easy to tell what the future holds. After all, curl just does transfers. Fast. Reliably. Secure.

0 views
Unsung 2 days ago

Asana’s fascinating Tab shortcuts

If you’re a professional web app, your key shortcut situation is not to be envied. Once the operating system grabs the ⌘ shortcuts it requires (⌘M to minimize, ⌘H to hide, ⌘Q to quit, etc.), the browser has its turn, claiming everything from ⌘R, T, N, L, W for tab operation, to ⌘F, P, O, and S for other things. And then, some input controls inside the browser also need to listen to ⌘Z and XCV, and maybe even A (select all), B (bold), and I (italic). At this point things feel barren, and some web apps start reaching instead for less common modifier keys (⇧, ⌥, ⌘⇧), and others go straight to no modifier zone, or override those of the above shortcuts that they can. Each approach, of course, has its own set of challenges . It’s perhaps not a surprise that someone got fed up, and that someone was people working on the project management tool Asana, which did something relatively unique: it promoted Tab to be a modifier key. The video shows me using Tab+K to like tasks, Tab+Return to open a sidebar, Tab+Q to add a quick task, and Tab+H to return home. Here’s the entire official shortcut list, with Tab shortcuts emphasized: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/asanas-fascinating-tab-shortcuts/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/asanas-fascinating-tab-shortcuts/2.1600w.avif" type="image/avif"> What’s fascinating about choosing Tab is that the key already has so much to do: On top of that, repurposing a key to be a modifier key – especially one that already has a job or two – will also have a long tail of strange consequences. And, Tab is only on one side, which could wreak havoc with the ergonomics of keyboard use. (You are, technically, always supposed to use the modifier key with the opposite hand to the hand you’re pressing the main key with.) I am not ready to hate it quite yet. Tab is not the worst key to use in this context, as it’s really the only available big key other than Caps Lock, which is impossible to mess with on the web. The other big keys – the spacebar, Return, and Backspace – would be radioactive for this purpose. The asymmetry issue? Anecdotally, I understand that both right-handed and left-handed people most often use the pointing device (mouse or trackpad) with their right hand, and consequently often prioritize left modifier keys anyway. Here is how Asana solves some other challenges: What’s interesting and I bet the main reason Asana approached it this way, is that Tab is a separate little island, far away from other modifier keys – and thus not just without any preexisting conflicts, but also impossible to confuse with other modifier keys. Asana could have kept all the shortcuts above but substituted Tab with Ctrl on a Mac and Alt on a PC, but those would then be packed among many other similar-feeling keys . (There is a price for this isolation, as Tab backfires the moment you have to combine it with other modifier keys. Asana doesn’t do it very often – I have only seen Tab+Shift+D, G, and F – but I wish they didn’t do it at all.) Overall, I’m surprised how positively I feel about it. If you use Asana a lot, I’d be curious how Tab-based shortcuts feel to you. If you work at Asana, I would love to know if you consider these a success. The only thing that seems to be missing is an option to go back to regular shortcuts if needed, for people who might want it for motor control reasons. (It is possible to achieve that with tools like Karabiner Elements, but that tool is really unpleasant to use.) Oh, also. Tab+B does this, because, well, “tabby.” Cute. #easter eggs #ergonomics #keyboard #web it moves focus to the next UI control, it indents a bullet point or even just text, it accepts an autosuggestion or a placeholder (and similar things ). When you press Tab to move focus around, the action can now only take place on key up, not key down, so tabbing (or, indentation of bullet points) feels slower . When you hold a regular modifier key and then change your mind and simply release it, no action occurs. But Tab already has a job as a regular key (tabbing or indentation, depending on context), so if you change your mind, something will still happen. This might be annoying. (You can press Tab+Esc or Tab+Space for a safe cancel, but that doesn’t seem very intuitive, especially in a moment of panic .) An action only on key up also means there can be no repeat when holding Tab. I am not sure how important this is, especially in the context of accessibility.

0 views