Latest Posts (20 found)

📝 2026-07-16 17:05: Anyone using Pop!OS with Cosmic? I tried it when it was first released, but I...

Anyone using Pop!_OS with Cosmic? I tried it when it was first released, but I looks like they've done a lot of dev work to it and it's improving all the time. Considering installing it again... 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

Choose your own dark mode

Hello RSS reader! This post contains an interactive feature. Please visit the canonical web page for an optimal viewing experience :) When I redesigned my website earlier this year I removed dark mode . I never liked the colours, and the light switch toggle was so 2010’s . Personally I prefer reading with a dark theme for long-form content. Dark is not my brand though and I don’t believe every website needs to support colour scheme preference automatically. A good browser has reader mode, I use that all the time. But what if I let my readers decide on a dark colour scheme? Below is a colour picker doohickey that should let you experience dark mode (on this page only). I’m testing in production (for reasons) so if it’s broken come back in an hour, or update your browser. It uses the native colour input which sucks in every browser. ⚠️ Warning: expect a sudden and dramatic colour shift. Try not to flashbang yourself. This is just an experiment so your colour choice will not persist. If you want to keep it, like and subscribe and @ me on the socials. Use your preferred hex code as a hashtag. Here’s how my homepage looks with a dark blue scheme. I reckon the duotone effect works much better than trying to invert my brand colours. Thanks for reading! Follow me on Mastodon and Bluesky . Subscribe to my Blog and Notes or Combined feeds.

0 views

📝 2026-07-16 11:47: A few of us were talking to one of the summer interns at work about...

A few of us were talking to one of the summer interns at work about age: Someone: How old do you think Kev is? Intern: [with all the confidence in the world] 50? I turn 42 in August. FML. 🤣 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

Workshop Basel day two

If you missed it. I already described day one . Caffeinated and ready, we all gathered in the same spacious room as yesterday, but seated in new places as “suggested” by our captain. Some of us even remembered to move over the name tags we wrote yesterday to our new seats. No time was wasted on introductions today. We dove straight in at the deep end. Is the future of software that we check-in the AI prompts in the git repository and trust it to generate the correct code? Are specifications the new level o f abstraction for source code? These questions triggered long discussions with a huge mix of opinions and experiences getting shared about how AI is used, should be used and could be used now and in the future. The Common Crawl spidering upgraded to using HTTP/2 for their scan and as an end result, I believe 61% of the responses used HTTP/2 and the entire round ended a few percent faster than before, which when you traverse a few billion URLs really makes a difference. They apparently use a locally patched version of Apache Nutch for this. The HTTP probe project runs a lot of tests on HTTP/1 servers and compares how they behave in a lot of different aspects and then generates these awesome tables. Looks like something for every server implementer team to have a look at and decide what of these red boxes that should rather be converted into green alternatives. HTTP Zoll is a new test suite for intermediaries that tests intermediaries (what we often call proxies) for a large amount of request and response smuggling issues. Some real world problems found were discussed and as this project aims at going Open Source words were expressed on what kind of precautions and checks that maybe should be done first. I hope we get to hear more about this project soon. The HTTP Arena is another project that does performance and measurements. They test HTTP server frameworks and present the results in various ways on their site. In this presentation , we were presented with different HTTP/3 deployment numbers from different sources and the associated reasoning around why they differ but then more importantly. what can and should be done to increase HTTP/3 usage.  Anti-virus interceptions, enterprise blocks and server-side performance not yet on par with TCP were mentioned as reasons for holding back the numbers. Reasons for using HTTP/3 include use cases that encourage QUIC adoption: WebTransport, Media over QUIC and MASQUE (HTTP/3 proxies and HTTP/3 proxies over older HTTP proxies).  Using HTTPS-RR for upgrade was promoted , as every alt-svc response that is returned with an ALPN using h3 should perhaps also offer h3 over DNS. Why doesn’t your server announce its h3 support over HTTPS-RR? QUIC v2 is deployed on an amazing 0.003% of all QUIC v1 domains and there was a discussion why this is so and the common sentiment in the room seemed to be that very few saw a reason for deploying v2 and several expressed a concern that doing so might in fact introduce issues. Someone (you can probably guess who) in the room increased that number a lot by quietly mentioning that haxproxy.org certainly supports it. QUIC multiplexing over bi-directional streams is a proposal on how to do QUIC-style multiplexing over TLS (or anything else really). It has been adopted by the IETF QUIC working group and there was a somewhat extended discussion about what the HTTPbis group should or should not do with it. The biggest interest might be for data center use, but is that then something IETF should bother about? This is not the first time I blog about this, and even if there did not seem to be a strong demand or need for this, it also did not seem to be completely dead. I bet we will hear more about this later. Doing a TLS terminating MITM proxy has its challenges and we were given some insights and experiences on the challenges of doing HTTP/2 and HTTP/3 to the server. The browsers refuse to do HTTP/3 when they detect custom CA certs installed, which apparently is mostly because of lots of past bad experiences with anti-virus software that in particular seems to break QUIC and for users it is not obvious where the blame should go. This then makes browsers not do HTTP/3 over any MITM proxy. Some time was spent on how allowing different clients to the proxy uses a shared h2 connection to the target server is complicated and not used, even though in theory it should be possible. An argument was made that it could even lead to worse performance than when using HTTP/1 but I could not quite follow that reasoning. I’m sure I missed some subtle detail in that explanation. When the afternoon is running late and we have been promised beer and snacks after the final talk, what is better than a hard core technical presentation with lots of graphs and numbers showing how QUIC performance can be improved by tweaking the congestion control algorithm and send more data in the startup phase of a new QUIC connections? This new approach is called Rapid Start and it looks like a promising and yet simple improvement. According to experiments done on real world traffic, the time to last byte was reduced by 14.7% on average. Not bad at all. Our meeting sponsor Adobe graciously sponsored drinks and food so we got to linger around for a few extra hours and talk even more HTTP and networking until the personal firmly insistent they needed us to leave the room and we instead continued solving world problems elsewhere. Topics around the table included the famous HTTP/2 spec coin flip, the QUIC spin bit, the SCONE situation for QUIC, the timeline behind the QUERY method and many more great stories. Thanks for the beer! Now we can’t wait for day three.

0 views

The OpenAI Bubble

Thanks for reading this week’s free Where’s Your Ed At newsletter. As I said last week, I’m taking the rest of this week off, so there won’t be a premium on Friday. That said, if you aren’t already a member, now’s a great time to subscribe.  To celebrate the one year anniversary of the premium newsletter, I’m offering a sale on one-year subscriptions. Between now and midnight July 22, you can get a permanent annual rate of just $60— a $10 discount on the usual price of $70 - for life. Click here for the offer . In addition to getting access to the entire back catalog of premium posts, you’ll also receive one additional post each week — usually anywhere between 10,000 and 20,000 words — covering the most pressing topics in the AI bubble - the best value in tech analysis. Highlights include last week's Hater's Guide To The Memory Crisis - a guide to how AI made everything more expensive - How OpenAI Kills Oracle (which pairs nicely with the Hater's Guide To Oracle ), The Hater's Guide To NVIDIA , The Hater's Guides To Private Credit and Private Equity , and how the entire AI Compute Demand Story Is A Lie . Today’s piece is one of the largest free newsletters I’ve ever written, and pulls together the last six months of my work. And it all starts with a question: how much do you trust Sam Altman? The stock market and (to some extent) the global economy rests on your answer. You see, OpenAI has become one of the largest liabilities in recent economic history. You can argue that OpenAI’s no longer the focal point of the AI bubble — you can talk all you want about open source models or Anthropic or any number of other elements — but without OpenAI, the AI industry doesn’t exist, and the justification for trillions of dollars of capex evaporates.  The AI bubble isn’t a result of any actual return on investment — whether that be in purely monetary terms, like revenue or profitability , productivity gains, or anything tangible or measurable. Rather, it’s an episode of cult-like psychosis that infected the brains of some of the most powerful and wealthy individuals and institutions, where the powerful mythology of a company inspired — and been used to inspire — the greatest capital misallocation in history.  As much as this’ll piss some people off, I fully believe that the only reason this has kept going so long is that OpenAI has yet to collapse. Its failure would be a watershed moment — the Lehman Brothers of the AI bubble, and an event that would define the end of one epoch, the start of another, and that would shake the afflicted out of that psychosis. Absent this wake-up call, NVIDIA has continued to sell GPUs, the coffers of the semiconductor industry have continued to swell, and more and more spending commitments have been made.  Look. OpenAI intends to burn over $852 billion by the end of 2030 . It accounts for $748 billion of the remaining performance obligations of Microsoft, Amazon, and Oracle, on top of at least another $70 billion of RPOs across Cerebras , CoreWeave , Nebius, IREN, Lambda, and Nscale (per Kakashii), and plans to spend indeterminate billions’-worth of Broadcom “Jalapeno” chips . It intends to spend $50 billion or more on compute this year , which I estimate is more than 50% of all global AI compute spend (with OpenAI taking up 50%+ of all AI compute infrastructure ).  OpenAI can only afford to pay that as a result of its latest (assuming it fully closes) $122 billion funding round , of which it has received at least $50 billion, with $20 billion from SoftBank (of $30 billion, with the third tranche due October 1, 2026 ). NVIDIA mentioned in its latest quarterly earnings report that it “estimate[d] that one AI research and deployment company contributed to a meaningful amount of [its] revenue by purchasing cloud services from [its] customers in the first quarter of fiscal year 2027,” referring, of course, to OpenAI. OpenAI is the reason anyone cares about AI. In March 2019 ( per JustDario ), NVIDIA bought a company called Mellanox that made the high-speed networking tech necessary to create AI GPU clusters, and four months after that, Microsoft invested a billion dollars in OpenAI and started buying AI GPUs and building AI infrastructure for it. By March 2020, NVIDIA would ship its A100 GPU , and in May 2020 , Microsoft would announce it had built a supercomputer just for OpenAI with “more than 285,000 CPU cores [and] 10,000 GPUs.” The launch of ChatGPT in November 2022 came at the perfect time for a tech industry that had run out of ideas and was flirting with a prolonged depression. The IPO market had collapsed , interest hikes killed the Zero Interest Free era dead, pandemic era overhiring began to unwind with some of the worst layoffs in the history of the industry , global venture funding dwindled after historic overinvestment in 2021 , and tech stocks took a massive beating .  For the first time, the tech industry was forced to cut its cloth in accordance with its means — something which it has historically been loath to do. Big tech was unpopular, both with investors and the general public. The excesses of the past decade — combined with the growing frustration with, for lack of a better word, “tech exceptionalism,” where it believed that the rules which governed the rest of the world didn’t apply to Silicon Valley — had tested the patience of both regulators and lawmakers. And, in the absence of “one more thing” — a big, splashy, game-changing product category — it no longer had an excuse for its prodigal spending, or its regular breaking of the rules, both written and unwritten, that govern society. The existence of OpenAI justified an era of mania and opulence. Hyperscalers, bereft of new hypergrowth ideas , were able to point at the fact that ChatGPT had “the fastest growing userbase of all time” and the Microsoft “supercomputer” that built it and tell their investors that if they didn’t invest, they’d be left behind , with Amazon , Meta , and Google announcing their own nebulous “supercomputers” in 2023.  By the end of 2023, NVIDIA had sold 500,000 A100 GPUs , and the only reason it did so was because of ChatGPT’s rapid growth . Sam Altman’s brief ouster only sought to inflate the AI bubble by adding a layer of dull palace intrigue to a tech industry bereft of whimsy or character — and helped further entrench Microsoft’s role as the paternalistic benefactor of OpenAI, which made sure that Altman returned to the helm . To be clear, when I say “rapid growth,” I mean that OpenAI hit 100 million weekly active users by the end of 2023 and had about $108 million in monthly revenue . Microsoft would invest $10 billion more that year , with the majority of that funding coming in the form of credits to be used on Microsoft Azure . OpenAI is also the reason that Anthropic exists — not just because multiple founders came from the company, but because both Google and Amazon both agreed to give it a total of $6 billion in 2023 as a means of “competing” with Microsoft’s new obsession, which allowed both to justify spending further hundreds of billions of dollars “to make sure they didn’t miss out on AI.”  When you remove the term “AI” from the equation, this all seems a little ludicrous. $16 billion in equity investment on top of what was, by the end of 2023, over $150 billion in capital expenditures, all of which was pretty much justified by the fact that a single website had been very popular.  And the only reason either of these companies were able to grow was because of hyperscalers bankrolling their entire infrastructure.  In the fourth quarter of 2023 , global venture capital funding had dropped to its lowest levels since the third quarter of 2016, with American startups taking up $183.6 billion of the year’s investments. Venture capital alone couldn’t have — and wouldn’t have — actually backed OpenAI or Anthropic at the scale that was necessary to build their infrastructure, nor would there have been any of the hunger from hyperscalers or those providing debt for data centers without hyperscalers inflating both of these companies, almost entirely because of the success of OpenAI.   Remove OpenAI from the years 2020 through 2024 and the AI bubble wouldn’t have inflated at all. No other major AI companies showed any sign of life — not those peddled by hyperscalers, funded by venture capitalists, or those launched by other tech firms.  The only reason that any hyperscaler AI efforts have any revenue — and outside OpenAI and Anthropic it’s pretty meager! — is because they knew they could just sit there and keep saying “AI is the future” until their customers eventually gave in and tried it…largely because everybody was talking about ChatGPT .  Anthropic was considered an also-ran until early 2025, and only continued to get funded because people wanted to invest in the next OpenAI , and Anthropic’s initial funding rounds and infrastructure buildout were only justified in terms of competing with OpenAI.   Those $178.5 billion in US-based data center debt deals in 2025 ? Pretty much entirely justified by the growth of OpenAI and its rapacious hunger for compute, because outside of OpenAI (and eventually Anthropic), nobody else was using massive clusters of tens of thousands of GPUs, nor does a market for compute at that scale appeared to have popped up in the months and years since.  The largest consumers of compute remain Microsoft (for OpenAI), Google (for Anthropic), Amazon (for OpenAI and Anthropic), CoreWeave (for OpenAI and Anthropic), Meta (which is copying what the other hyperscalers are doing), and Oracle (for OpenAI). Otherwise, there’s very little evidence — and boy, have I looked — that there’s more than a few billion in demand for AI compute, and that’s being generous.  All of those investments — both in AI startups and data centers — existed to fund either the next OpenAI or become the next OpenAI’s landlord.  The assumption — because nobody ever thinks things through — was that because one OpenAI existed, many OpenAIs would bloom. That because one large customer of compute existed, the template had been built for future compute-intensive startups…and, again, because nobody ever thinks about anything, nobody ever stopped to realize that the reason there isn’t another OpenAI is because OpenAI and Anthropic are financial psy-ops by the largest software companies in the world.  The grim truth is that you can’t venture fund an AI lab. While OpenAI and Anthropic have raised nearly $300 billion in the last few years, their actual infrastructure costs — the GPUs and the data centers to power their services — were entirely funded by hyperscalers, likely costing another $250 billion in the process, given that Microsoft has said it spent $100 billion on its OpenAI relationship as of early 2026 .  Yet the real cost wasn’t just financial , but the experience and industrial know-how to actually execute on a massive infrastructure bailout. Other than Google, Microsoft, and Amazon, nobody else has the scale or experience to build the kind of AI clusters that OpenAI (and eventually Anthropic) needed.  We know that for a couple of reasons. First, because prior to 2023, there were few — if any — companies actually building AI computing clusters at the kind of scale demanded by OpenAI or Anthropic. The closest thing that one could point to were crypto-mining firms, and it’s telling that many of the neoclouds today (most famously Coreweave) started life running warehouses full of ASICs to mine Bitcoin and Ethereum. Second, because, based on conversations with people in the data center industry, the whole Overton window of what is considered to be a “big” facility has shifted. Previously, a 50MW data center would have been considered a significant (even noteworthy) development. These were the exception, and not the rule, with most data centers being vastly more modest affairs. The only companies which had any experience building at that scale were, for the most part, hyperscalers.   By treating OpenAI as a “venture backed startup,” hyperscalers created the illusion that this was the next type of big company that would in turn create the next great demand center in cloud computing , except the only reason that these companies existed was because of the hyperscalers themselves willing them into existence, funding them with incredible sums, and allowing them to burn as much money as they’d like.   This is why the idea that OpenAI will continue to grow infinitely is central to the mythology of the AI bubble. The existence of one OpenAI allows others to — no matter how illogical — imagine the existence of more OpenAIs, which in turn means that those OpenAIs will need just as much compute as OpenAI.   The dimwitted investor who believes this tripe can justify it through any number of different buy-side analysts or captured members of the media that talk about the “insatiable demand for compute,” pointing to capacity constraints ( caused by slow data center construction and — hah! — OpenAI and Anthropic taking up much of the world’s compute ) and increasing GPU prices as proof that actually, there’s tons of demand , all without ever really thinking too hard. The greatest trick that hyperscalers played was never backing down. By sinking more than a trillion dollars into AI capex without ever showing a single dollar of profit , they justified literally anyone investing in AI data centers under the logic that “the largest companies in the world couldn’t be wrong,” even if the reason they were doing so was to expand capacity for OpenAI and Anthropic, who the hyperscalers themselves incubated.   It is fundamentally illogical and insane for hyperscalers to have spent so much money on AI infrastructure, and the reason that few people will say so is because it was, until recently, considered radical to suggest that this was a waste of money, almost entirely because of the existence and continued growth of OpenAI. Whatever utility you may or may not get out of LLMs is irrelevant because it has not, for the most part, been what actually underpins data center investment. While accelerating gains in code generation (itself something that could have only happened without vast subsidies) might have helped grow Anthropic , the vast majority of data center capex has been built chasing the dragon of what AI could be rather than any connection to the revenues or economics of the companies at large — outside, of course, their compute spend.  This is the underlying greed that has driven this wasteful, reckless and destructive era — the belief that there will be another OpenAI and, as I’ve said, the chance to become the next OpenAI’s landlord. And because the media and analysts very rarely have original ideas, everybody justified (and justifies) the waste through the same tired mantras, saying it was “just like Uber ( nope !)” or “just like Amazon Web Services ( between 2003 and 2015, Amazon spent $29.7 billion on capex, normalized for inflation ).” And like any great investment bubble, the more money that piled in, the greater the fear of missing out, the more dollars that can be justified in turn, and the more-complex and deranged the mythology becomes, which is why you have noted venture capitalists claiming that AI labs have “90%+ inference margins,” a completely unproven statement that AI boosters cling to and repeat often enough that it’s taken as gospel, likely to avoid thinking about the fact that you can burn $14,000 in tokens on a $200-a-month ChatGPT subscription .  This kind of mythology only grows in an environment deliberately deprived of good information. The fact that we’re four years into this horrible bubble and still don’t have consistently-held consensus around the actual costs of large language models is a testament to an industry-wide effort to suppress them.  OpenAI, Anthropic, Microsoft, Google, and Amazon have done everything in their power — based on discussions with sources familiar with their infrastructure — to obfuscate the actual underlying costs of their operations, and Silicon Valley, an industry of alleged free thinkers and individuals, is more than willing to accept whatever convenient myths might sustain their dreams.  And in the end, they all became useful idiots for hyperscalers. Their obsessive attachment to OpenAI — and by extension Anthropic — seems like a decision made under the auspices of “democratizing powerful AI,” all as effectively every dollar flows to either Microsoft, Google, Amazon, or Oracle, who in turn feed that money to NVIDIA or Broadcom, who in turn feeds that money to TSMC, SK Hynix, Samsung, or Micron.  Invest in an AI startup? They’re gonna be paying one of the AI labs, who will in turn pay a hyperscaler. Invest in an AI infrastructure company? That money will flow to NVIDIA, and then upstream to semiconductor companies. In the end, whether they die or get acquired (as none of them are going public) , all of the value will end up in the hands of one of the hyperscalers who created this imaginary era, then helped inflate it into something very, very dangerous. Yet the problem is that this industry cannot, under any circumstances, survive without OpenAI.  When people discuss OpenAI’s potential collapse, they act with pure cowardice either saying “it won’t be that bad” or say something vague about it “ being too big to fail .”  If OpenAI — the company with the most money and the most infrastructure and the most attention and the most talent in AI — collapses, it will likely do so after AI data center debt and venture capital funding has been almost entirely exhausted.  You see, Goldman Sachs’ Jeffrey Papai recently noted that it will be “very difficult” to replicate the hundreds of billions of dollars that hyperscalers have raised in the last four years — $244 billion in 2026 alone if you include NVIDIA and SpaceX — which is a problem considering that they can no longer fund their data center capex using their cashflows as of Q3 2026 .   And to be clear, hyperscaler capex doesn’t have to stop for NVIDIA to stumble. It just has to slow down meaningfully enough that Jensen Huang can no longer give investors 60%+ year-over-year revenue bumps, because the AI bubble is built on vibes, and it can only survive so long as those vibes don’t become sour.  Yes, yes, I realize there are other customers, but the vast majority of NVIDIA’s demand comes from hyperscalers, who are (for the most part) either building out their operations for OpenAI and Anthropic or simply copying what the other hyperscalers are doing (see: Meta and SpaceX).  Once hyperscalers stop spending money, banks that are afraid of “choking” on data center debt will see that a vast amount of capital is leaving the market and underwrite (or not, as the case may be) deals as such. This will mean, at some point, that both OpenAI and Anthropic will be walking around with their hands out saying “money please!” at precisely the moment that everybody will be cutting back. While NVIDIA might get a little desperate and throw some extra cash their way, if revenues start collapsing, so too will its interest in further inflating the bubble as investors begin to ask whether any of this was real or one large circular financing scam . While this is absolutely a problem for Anthropic — especially after its $35 billion debt deal with Broadcom — it’s much, much worse for OpenAI, which has (as mentioned) made $748 billion in compute commitments to some of the largest and well-lawyered companies in the world. OpenAI’s continued marketing efforts involve constantly refreshing rate limits around the launches of its most-expensive models, giving away millions of dollars of tokens to startups , and generally running the “grow as fast as possible and work out a business later” model into the ground at speed, all fueled and funded by Clammy Sammy Altman’s nasty habit of overpromising and underdelivering. Clamuel’s biggest mistake was leaving the pearly gates of the hyperscalers and dancing with the mortals of Oracle, Cerebras, and CoreWeave. While Microsoft or Amazon might be willing to extend payment terms as a means of saving face and prolonging the inevitable, Oracle — a law firm with a software company attached — is more than capable of loud and aggressive litigation under any contractual breach. Then there’s the fact that Apple is suing OpenAI after poaching multiple engineers for its hardware efforts and allegedly both coaching and coercing them into stealing trade secrets , which is all but certain to destroy any chance of OpenAI releasing a device in the next few years…and potentially the company itself. These are extremely serious allegations, with Apple also accusing OpenAI of trying to coerce trusted partners into revealing manufacturing techniques for iPhones — the kind of thing that can (and will) lead to brutal discovery and potentially criminal charges. OpenAI also, as I’ve mentioned, needs to keep growing to keep up with those bills, and at some point will run out of real dollars to pay people, likely at exactly the time that it’s hardest to find more of them. While there might be billions of dollars left to be raised, to pay any of its bills, OpenAI needs tens of billions of dollars multiple times a year. Based on my own reporting on its audited financials from 2024 and 2025 , OpenAI will need to raise funding at least three more times in the next decade.  To make matters worse, its free users have become a massive liability. While The Information reported that OpenAI expected to generate $2.4 billion in ad revenue in 2026, and $102 billion in 2030 , it turns out that reality is a little harsher, with analyst eMarketer projects that the entire AI chatbot ad industry combined will only make $1 billion this year , with the entire market making $5.41 billion by 2030.  This means that the 900 million weekly active users of ChatGPT will remain a massive drain on the company’s finances, with only 5% or so of them opting to pay , and a projected 80% of its $20-a-month users expected to churn in 2026 . At some point, OpenAI will simply run out of money. It’s nearly exhausted every available source of capital, and now that it’s likely delaying its IPO to 2027 — largely in part because it couldn’t list at a $1 trillion valuation — it will have to raise again, potentially at a down-round valuation or at a modest increase which will, in turn, make it much more difficult for investors to see a return in an IPO.  Investors will likely ask questions like “why couldn’t you go public?” and “what is it that bankers didn’t like?” as Sam Altman looks at them like this: You see, OpenAI is awesome at selling mythology and hype, but crumbles the second that its numbers have to face the cold, harsh light of day.  While it’s been able to skate by in situations like Altman’s ouster and its conversion to a for-profit, these were strictly legal situations that could be dealt with by lawyers and cheered on by the press . OpenAI has never faced a problem like “not being able to pay its bills” or “breaching a contract with a major company,” and I think these are an inevitability in its future. In the end, OpenAI’s collapse will be a dramatic narration of the boring, horrifying economics of the AI bubble. Let me explain: The AI bubble is inflated based on hype and hopium rather than tangible proof or substantial revenues driven to anyone outside of the semiconductor industry, and without NVIDIA’s massive returns, I don’t think anybody would’ve taken it seriously past 2024. Any and all achievements of the AI industry are a direct result of market psychosis, a broken media ecosystem, and a trillion dollars that could’ve been sunk into literally anything else, and must be evaluated as such. The double-edge sword of a mythology-inflated bubble is that it’s much harder to sustain when said mythology dies. The AI bubble was able to grow to such a horrendous size because the markets and the media were willing to accept basically anything that Sam Altman or the greater AI industry said.  By waving away any economic problems as growing pains and dismiss those who would scrutinize it as haters or cynics, reporters and analysts provided investors with the justification to invest again and again in these companies without them ever having to make a real business , which means that, well…they don’t have real businesses, which is a problem when you need to actually pay somebody money that wasn’t given to you by a venture capitalist. This will leave the AI industry short-changed in its most-desperate times.  The media is important for many, many reasons, but one of the biggest ones is that scrutiny is what keeps capital in check, for the benefit of humanity and at times the companies themselves. By choosing to pull their punches, ignore glaring economic problems and accept every projection with blind faith, the media empowers grifting and suffocates good businesses as a result, encouraging bad behavior and helping them raise unbelievable amounts of money at ridiculous valuations without worrying about having to make a good business. In some cases, the media even encourages them to do so, saying that “all startups lose money at first” instead of thinking about things for a fucking second. When companies know they won’t face that scrutiny, they engineer themselves as such, putting off ever finding a real business model in favor of whatever will make them buzzy enough to get coverage and raise funding as a result. In a vacuum of skepticism, bubbles inflate, monsters get rich, and regular people always get left holding the bag. As a result, if companies ever bother to become a real business, they only do so at the very last minute, endangering anyone who has backed them and every counterparty in the event they’re incorrect.  When OpenAI dies, it will be after a prolonged period of desperate reorganization and attempts to appeal to investors and the media that it can, in fact, become a real business. These attempts — price increases, price cuts, selling off IP, nebulous circular deals, and so on — will all fail, and by the end, Sam Altman will have run through every single trick imaginable to keep the party going.  And when those fail, what do you think Perplexity does? How about Harvey? Cursor got the last chopper out of ‘Nam with the SpaceX acquisition (assuming it actually happens), but what, exactly, is Cognition, or Glean, or Sierra, or really any AI startup meant to say to compel investors to believe in them once OpenAI dies? That they’re different? That they’re gonna work it out after the company that got given basically everything it needed failed?  The entire AI industry’s sales pitch is that OpenAI opened the world’s eyes to the power of AI, and that giving the AI industry as much money as possible would end in economic abundance the likes of which we’ve never seen. Instead, we’ve got two AI labs that both lose billions of dollars, and the latest model from one of them randomly deletes people’s stuff. It’s not like any of this was sold on actual ROI or real businesses or returns or productivity or any actual measurable thing other than physical infrastructure erected in its honor.  There are simply no compelling stories about the AI industry that can be told in the present tense. Everything is always based on the theoretical multiplicative power of just waiting a few more years, which becomes much harder to believe if the company with the Mandate of Heaven gets sent to Cocytus.  This will have massive downstream effects on basically everything and everyone connected to the AI industry. You won’t be able to raise money for a startup to spend money on compute, nor will you be able to convince somebody that your LLM wrapper will change the world, nor will you be able to justify a massive valuation. Venture capitalists fancy themselves as brave soldiers of the economy, but are really cowardly lemmings that will sprint for cover the second that things get rough.  I also keep hearing from people that Anthropic is magically safe from the AI bubble’s clutches, or insulated from its rotten economics. The amount of pure mythology and misinformation I read about this company on Twitter is genuinely offensive, and the fact that journalists have categorically failed to push back against it is proof that too few people give a shit about anything other than which boot they get to lick next. Anthropic faces the same economic realities as OpenAI. It burns billions of dollars on training, it hides inference costs in sales and marketing, and the only real differences are that it focused more on coding and made fewer ridiculous infrastructure commitments…right up until this year, when it committed $200 billion in compute and hardware commitments to Google , raised $35 billion in debt from Apollo to buy Google TPUs , signed a $15 billion a year compute deal with SpaceX , and agreed to a 20-year-long, $19 billion lease with TeraWulf . Much like OpenAI, Anthropic is also doing way, way too much. There’s Claude for Life Sciences , Claude for Legal , Claude for Small Business , Claude Design , and even, for whatever reason, reports that Anthropic intends to develop its own drugs — and instead of saying “hey man, what the fuck are you doing?” the media falls over itself to repeat and celebrate every single one as if they’re all viable or useful products. Anthropic is as messy, disorderly and unfocused as OpenAI, but has done a better job of convincing people that it’s somehow “ethical” as it fucks over its partners and farts out 200 new products a month.  This is a company that lacks focus or vision other than “more” and “bigger.” The only thing that differentiates OpenAI from Anthropic at this point is the nebulous promises of “AI code” and Dario Amodei’s Doom Trolling and safety theater. The fact that the majority of the media made no efforts to push back against its shenanigan-rich “profitability” narrative is why we’re in this fucking mess.  Anthropic is an AI lab just like OpenAI. It uses GPUs, TPUs and Trainium chips. It trains models in much the same way to do much the same things, and builds quasi-functional plugins on top of them, just like OpenAI does. It makes big compute commitments, it had its infrastructure built out for it by hyperscalers, its CEO is annoying and beloved by cretins, and its value is largely determined by 1000 people on “X The Everything App” experiencing varying levels of AI psychosis.  Attempts to claim otherwise are tacit admissions that OpenAI is unsustainable. Please note that when I say “victims,” I don’t always mean “people you should feel sorry for.” In some cases I’ll be talking about real people who are facing the horrible consequences of the OpenAI bubble bursting, and for whom you should feel a degree of sympathy, and in others, I’m referring to various Patagonia gargoyles’ financial woes. I assume you’ll be able to differentiate between them.  My last premium newsletter was the massive Hater’s Guide To The Memory Crisis , or the twisted tale of how three companies — Samsung, SK Hynix and Micron — have diverted meaningful amounts of manufacturing supply away from making the RAM you find in laptops and smartphones toward making the high-bandwidth memory that powers GPUs, jacking up the price of consumer electronics in the process.  To explain: To simplify, the AI GPUs in AI data centers require hundreds of gigabytes of high-bandwidth memory, the CPUs attached to them require the same RAM as your smartphone, and the companies making all of this RAM are making huge profits by jacking up the price because of supply chain constraints that they themselves have created. That’s why Micron had 84.9% gross margins in the last quarter . The RAM triopoly controls more than 90% of the world’s memory, and can set prices at whatever rate they want. These three companies were all fined over $100 million by the Department of justice back in 2002 for price-fixing , with Micron avoiding the fine by turning in its co-conspirators . Five years later in 2007, a Supreme Court judgment and resulting precedent ( Bell Atlantic V. Twombly ) drastically raised the bar for not simply winning an antitrust case, but even getting one to trial : This precedent would kill a 2019 class action case against SK Hynix, Samsung and Micron that alleged they had colluded to tighten the supply of the world’s DRAM , because despite statements from company representatives made at public events, their collective participation in certain industry groups, and observable pricing trends, the precedent set by Twombly meant that the plaintiffs required more than circumstantial evidence to bring something to trial.  Anyway, the reason I bring this up is that while I am not accusing Samsung, SK Hynix, and Micron of price-fixing, a recent lawsuit is accusing them of exactly that : So, what does this have to do with OpenAI?  Well, back on October 1, 2025 , OpenAI, Samsung and SK Hynix announced a “strategic partnership” that would involve OpenAI buying 900,000 wafers of DRAM a month (around 40% of the world’s supply at the time) for Stargate data centers — something that never actually happened (it was a memorandum of understanding, and OpenAI also had nowhere to put them), but both SK Hynix and Samsung’s stocks immediately rallied , and Samsung happened to hike prices by 60% a month later , which could be a coincidence, or could have been the company saying “yeah, wow, we’re gonna run out of RAM I guess, better buy now at whatever price we have it!” Another clue that this might not all have been above board was that Samsung was reportedly doing another deal with OpenAI in March 2026 , “...to supply up to 800 ⁠million gigabits (Gb) of 12-layer HBM4 chips to OpenAI in ​the second half of this year” per Reuters, for use with Broadcom’s custom “Jalapeno” chip . Though it’s hard to calculate exactly how much that would be wafer-wise, from what I understand we’re talking in terms of less than 100,000 wafers total after OpenAI, Samsung, and SK Hynix said they’d be taking up 900,000 a month. Regardless of whether OpenAI ever takes a single wafer of silicon, these deals existed to put the squeeze on any company that uses memory in their products — including NVIDIA, AMD and Broadcom — which in turn led to the most aggressive price increases in the history of consumer electronics. As I said last Friday: And yes, OpenAI is responsible, both in its naked collusion with memory manufacturers to push an announcement that never resulted in anything other than price increases and its siren song that made every dimwit with debt desperate to build AI data centers.  Every single consumer suffers as a result. RAM is in everything, and it’s unclear when new manufacturing capacity will actually come online, as fabs are expensive and complex construction efforts and require tons of specialist talent, raw materials, permitting, land and power. SK Hynix Chairman Chey Tae-won said in March that the memory shortage would last until 2030 , and he may be right, as a Bank of America report just said that SK Hynix may only be able to add a sixth of its planned capacity by 2028 . This means that the price of consumer electronics will be inflated for the foreseeable future, even if the AI bubble bursts. While capex pullbacks will eventually happen and by extension eventually lead to supply constraints easing, Micron, Samsung, and SK Hynix had sold out their entire 2026 supply by the second week of January , and noted that they’d only be able to handle 60% of “medium-term” customer memory orders, which suggests to me that 2027 might be even worse, with a subtle clue being that SK Hynix CEO Kwak Noh-jung recently told Reuters that 2027 would be “the worst year in the industry’s history from a supply perspective.”  While the memory triopoly has every incentive to make things seem bleak to drum up business and sustain their margins, behind the scenes reports suggest they’re turning the screws on everybody. This is a graphic example of companies with massive amounts of leverage using it to fuck over both their customers and their customers’ customers .  Who gave them that leverage? The AI industry and Sam fucking Altman.  Hey, remember when I just said that ( it seems, but I cannot confirm that) OpenAI helped SK Hynix and Samsung manufacture a supply chain crisis last year using a phoney announcement for a project that would never happen? That happened three other fucking times in the same three week period, and modern journalism doesn’t seem to give much of a shit! Let’s review what happened, per my year-ending Enshittifinancial Crisis newsletter : All four of these companies’ stocks rallied on deals that land somewhere between misleading and fictional, with basically anyone who invested in them being underwater within two months, though all three have recovered thanks to similarly-questionable announcements and deals made by companies with the sole intention of boosting their stocks.  Why else would Sam Altman go on CNBC with NVIDIA CEO Jensen Huang on the day of an announcement of a project that was only ever a letter of understanding ? Why else would Sam Altman jump on TV with Bob Iger to talk about a Disney deal that clearly never went anywhere? Spare me any explanations around the “fast-paced dealmaking of AI” or “how deals are complex.” CNBC reported the day after the NVIDIA deal was announced that the first $10 billion tranche would “close within a month or once the transaction had finalized” via a source! It’s blatantly obvious that the intention was to create the appearance that a deal existed that never actually existed at all! The AI trade is the natural endpoint of an increasingly-enshittified stock market where many analysts and journalists exist only to repeat narratives to influence stock prices. Outside of semiconductors, the AI trade has never, ever been about the actual underlying economics or the actual economic potential of Large Language Models, but projecting shadows on the wall to resemble something that looks like the next generation of technology. That’s because the AI trade is entirely symbolic and driven by stock prices. When NVIDIA and the rest of the Magnificent Seven (sans Apple) does well, AI is the greatest thing on Earth. When the Magnificent Seven stumbles, everybody worries that they might be overspending on AI. The AI trade exists only to manipulate stock prices through spurious news and smoke signals on social media, and to drag gullible retail investors ( who account for 20% of US equity trading volumes, the highest it’s been since 2021 ) and the rest of the market away from caring about things like “fundamentals” or “reality” toward whatever keys are currently jingling.  My evidence is fairly simple: Google, Meta, Microsoft, and Amazon don’t actually tell you their AI revenues, other than when Microsoft and Amazon have chosen to define it in terms of undefined “run rates.” And why would they? Reporters have been saying that their AI bets have paid off for years without the companies ever having to show it paying off other than their stocks running.  Here’s another example: CoreWeave, a time bomb /AI compute company that only really exists as a revenue source for NVIDIA ( per Jensen Huang , if [NVIDIA] didn’t help CoreWeave exist, they would not exist”) by signing contracts with companies for unbuilt capacity that it then takes to banks and uses to raise more money to buy GPUs. NVIDIA knows that analysts and reporters don’t give a shit about the blatant self-dealing and circular financing, all because these deals help the stock price go up, which apparently is the only metric that modern journalism evaluates. That’s why when NVIDIA invested $2 billion in CoreWeave in January 2026 — a warning sign that the company had liquidity problems! — led to endless positive coverage after “the stock popped on the news,” per CNBC. That’s because the AI trade exists only to extract value and con investors. It is not a trade related to the actual fundamentals of whether AI works or not, whether AI actually makes anyone money, or really anything about AI at all outside of whether mentioning AI or an AI-related company makes a stock number go up or down. I’ll be blunt: modern journalism has failed the retail investor and directly helped the wallet inspector regulate the stock market. By empowering Sam Altman and the rest of the AI industry’s deliberate attempts to obfuscate the actual economics of generative AI and setting the terms of AI’s success as “how stocks are doing and whether the companies are growing in general,” they have defaulted on their responsibility to the general public and helped the already-rich get richer.  None of this would be possible if business journalism actually saw themselves as having a responsibility to give their audience good information. While one could argue that if you had blindly invested in the AI trade you might have made money, the ability to make money in the AI trade was directly driven by modern journalism’s inability or unwillingness to push back on any corporate narrative. Every major outlet ran a story on every one of the deals I mentioned, and not a single one seemed remotely upset or deterred by the fact they were misled, and in turn misled their audience. And yes, investment funds can be just as easily manipulated as a retail investor, and will follow whatever trend seems likely to make them money, even if said trend is utterly disconnected from any fundamentals. Tech analysts help do so by creating vast models that give a veneer of respectability, even if their projections mostly amount to “number will always go up in the future.”  This is why Musk was able to dump SpaceX on the public markets. Why SK Hynix chose to list on the NASDAQ. When the entire world is captured by a childlike belief that “AI is good and will be the biggest thing ever,” you empower grifting and swindling at scale.  Well, that and underwriters like Goldman Sachs are so nakedly crooked that they’ll say they expect SpaceX’s AI revenue to grow 100x by 2030 . Fuck off! Yet the memory boom/bust/crisis is where the media has failed investors the most — a final insult before everything collapses. You see ( to quote myself ), what makes this particular memory crisis so distinctly dangerous is that it isn’t a result of consumer demand so much as it is capital expenditures from very large companies making bets that don’t connect with reality.  Microsoft, Google, Amazon, and Meta aren’t spending $765 billion in capex in 2026 because of rapid demand by consumers for AI services, but a desperation caused by a lack of hypergrowth ideas , circular financing with Anthropic and OpenAI , and a vague concern that if they stop spending that the other guy will do something as a result.  Anyone blathering on about a “memory supercycle” is intentionally obfuscating where that revenue and demand is coming from — high-bandwidth memory attached to AI GPUs, meaning that this boom cycle only exists as a symptom of a greater hype cycle, meaning that when companies stop buying GPUs , the demand for that (briefly) high-margin high-bandwidth memory goes with it.   To give you some context, a chart from ComputerBase.de showed that high-bandwidth memory demand grew from 681 million gigabits of HBM in 2022 to 29.3 billion gigabits on 2026 — a 40x increase over the course of four years that suggests that once GPU-related capital expenditures stop, high-bandwidth memory demand will effectively disappear .  As I mentioned previously, this isn’t even me being a hater . Hyperscalers are now joining the rest of the world in having to raise debt to buy more GPUs, which means that at some point they aren’t going to be able to afford to buy as much, which will in turn mean that NVIDIA — which accounts for around 65% of all HBM purchasing — won’t need as much. I have not read a single fucking article that mentions that this is a possibility! Every article about the memory industry right now is about supply constraints and the increasing cost of memory , but none of them warn investors or the general public about what will happen when capex slows , and certainly not the many, many articles in major business publications about SK Hynix, Samsung and Micron’s revenues. In fact, Reuters said that SK Hynix’s “ scarcity premium looks built to last .” The cynical (and boring) response here is that “the market can stay irrational longer than you can stay solvent,” but saying that distracts from the larger point of how said irrationality was manufactured by the media .  I am not sure what the majority of the media sees as its purpose or responsibility to its readers, so I will speak plainly: the responsibility is to tell them the cold, hard truth, rather than going along with whatever hype cycle is happening out of fear of being wrong or missing out. Skepticism is not doomerism! Being critical is not being negative! These companies are some of the largest and richest enterprises in the world — they should be scrutinized! And no, scrutiny is not publishing everything they say and then making a vague comment about “whether or not that bet will pay off.” Too often, journalism conflates objectivity with passivity, seeing critiques as “negative” or “biased” when, in fact, repeating everything that corporations say to their benefits is about as biased as it gets. In the end, the victims are anybody who doesn’t exit the AI trade in time.  By the way, there’s no Hell hot enough, by the way, for the people that will read this and smugly say “heh, well, I made money,” or who point to anyone’s returns as evidence that the AI trade is anything other than manufactured consent. The fact that anyone made money on this trade is a sign that the stock market is inherently manipulated to benefit the wealthy at the cost of the many — and when the bubble bursts, the people that will suffer will have suffered because of the media’s participation by helping Sam Altman and the rest of the AI industry obfuscate and twist reality to pump stocks. Which leads us neatly to our next victim! In my Hater’s Guide To SoftBank , I told the story of CEO Masayoshi Son, a degenerate gambler who has steered his company through boom and bust cycles only through the grace of whatever God he believes in and sheer luck.  SoftBank Group — the holding company, and not to be confused with Softbank Corp, which runs a bunch of telcos and media companies in Japan — makes money only through either investing in or buying companies, then taking them public or selling them to someone else, and otherwise needs debt for liquidity.  Masayoshi Son makes terrible bet after terrible bet, but his luck always seems to work out for him. His $20 million stake in Alibaba turned into $50 billion at IPO. He bought a 70% stake in Sprint that turned into a 24% holding in T-Mobile . In the early 2000s, Softbank took a 23% stake in Betfair that eventually became part of the $17.7 billion Flutter Entertainment. And then there’s its most-recent and arguably most-impressive (after Alibaba at least) investment, ARM, which it acquired for $32 billion in 2016 and then took it public in 2023 at a valuation of $54.5 billion , and currently sits at around a $300 billion market cap.  Yet his problem has always been his dalliances with whimsical white boys. SoftBank sunk $1.5 billion into dodgy financial services firm Greensill Capital before its collapse, and in the aftermath, it was revealed that Masayoshi Son and CEO Lex Greensill talked on the phone every day , to the point that ( per Greensill himself ) SoftBank managers felt “threatened” by Greensill’s relationship with Son. It only took Masayoshi Son 28 minutes of conversation with WeWork’s Adam Neumann before he drew up the terms for a $4.4 billion investment on his iPad and signing the deal in the back of a cab, with Son saying that “the last person he felt this with was [Alibaba CEO] Jack Ma.”  And no white boy has ever been more whimsical than Sam Altman.  In 2019 , Altman turned down $10 billion from Masayoshi Son (which, ironically, would’ve been an incredible investment at the time), going instead with $1 billion (and full infrastructure support) from Microsoft, and I believe this moment drove Son into a level of madness that will potentially wreck the company. You see, up until fairly recently, SoftBank had been dragged down by the declining value of its atrocious investments via its two venture capital funds — Vision Fund 1 and 2, the latter of which was self-funded and has mostly gone toward funding OpenAI. Up until recently, SoftBank had quarter after quarter of losses as investment after investment saw its NAV drop because, well, they were overvalued and SoftBank never should’ve invested in them in the first place. To survive, SoftBank moved into “ defense mode ” in 2020, slowing investments and selling the vast majority of its Alibaba stock by April 2023 , with the ARM IPO and billions of dollars of bond sales helping slow the bleed. Yet Masayoshi Son knew he was destined for greater things, as he told CNBC in June 2024 : OpenAI — and the larger AI trade — had given Masayoshi Son a certain kind of greed-driven mania, where he believed that AI would make SoftBank (as he said recently) “ the goose that laid golden eggs ,” an eternal money-printer that ostensibly started with the biggest cash-burning machine in history.  Altman, like Neumann, like Greensill, told Masayoshi Son exactly what he wanted to hear: that this would be the biggest thing ever, and that Son would capture all of the value both through his investment in OpenAI and further investments in data centers and other AI infrastructure.  And so began his most vulgar investment yet — OpenAI, sinking $2 billion into the company from Vision Fund 2 in November 2024 — only for Altman to turn around and demand he fund $30 billion of a $40 billion round that would get announced four months later in March 2025 . Masayoshi Son was an emphatic “yes,” except for one little problem: he didn’t have the money, and could only afford the first $7.5 billion (due in April 2025) by taking out a $15 billion, year-long bridge loan , with the rest of it going toward his eventual purchase of Ampere computing .  To fund the remaining $22.5 billion, SoftBank was forced to take out further margin loans on its ARM stock , and sell large chunks of its T-Mobile stock , as well as its entire $5.83 billion stake in NVIDIA . Yet as soon as the check cleared, Sam Altman was blowing up his phone demanding more money as part of a $110 billion funding round in February 2026 (that eventually became $122 billion in late March). Masayoshi Son was once again an emphatic yes, except by this point he’d exhausted basically every useful thing left in his coffers outside of around $118 billion in ARM shares that make up around 40% of SoftBank’s net asset value, meaning that selling or using further ARM shares as collateral would directly tank its value — both through the obvious “they have less of a valuable thing” and sales/collateralization of further ARM shares affecting its share price. So, what did Masayoshi Son do? More debt, baby! More risky debt! You can always refinance it, right?  To pay for its share of OpenAI’s 2026 funding round, SoftBank took out a $40 billion bridge loan (maturing in March 2027), bringing its investment in the company to over $40 billion, with its payments to $10 billion tranches of OpenAI funding due in April, July and October 2026. A few months later, it tried to raise a $10 billion margin loan using its entire OpenAI investment as collateral, cut the amount it was raising to $6 billion, and when banks remained hesitant to give it the money anyway offered to “ guarantee repayment of the loan to address lender concerns, ” effectively backing the loan with its own balance sheet (called a recourse loan) because, despite being worth over $100 billion on paper, its lenders had doubts that its OpenAI stake was actually worth that much.  If you’re wondering why it didn’t simply take out more debt, it’s because (as a result of its continuing investments in OpenAI) S&P Global revised SoftBank’s outlook to negative , emphasis theirs : This has had a knock-on effect on the rating of the telecoms-focused Softbank Corp (as a reminder, Softbank Group is the holding company that owns stock in other companies, Softbank Corp is the energy/telecoms company that actually makes stuff), which is now rated BBB, or the lowest-possible rung of investment-grade financing in the S&P system. To make matters worse, if SoftBank continues to hold a loan-to-value ratio of above 30% for much longer, it runs the risk of its debt getting downgraded even further, which would slam the door shut on its ability to raise money via bonds, which is…well, basically how SoftBank has functioned for the last 10 or 20 years. And this is all happening as Japan is determinedly inching away from the era of persistently low interest rates — making debt far more expensive to service.   SoftBank needs OpenAI to IPO so that it can turn that on-paper gain into actual liquid stocks that can be dumped into the market or used for real-life margin loans. SoftBank has jettisoned the vast majority of its heaviest-weight investments, leaving it largely dependent on the continued value of ARM’s stock to keep its seat at the table, and if OpenAI can’t go public, it’ll end up sitting on illiquid stock in a company that will see its value tank as a result. Yet even if OpenAI does go public, any attempts to get a margin loan will likely be dangerous, as I bet that it will be one of the single-most shorted and volatile stocks in history, which will also be a problem for SoftBank’s underlying net-asset value, which will ebb and flow based on whatever bullshit Altman cooks up every three months. Masayoshi Son is both a victim of the manufactured consent of the AI trade and an enabler of its worst excesses, empowering and enriching Sam Altman at a time when any kind of financial prudence might have curbed OpenAI’s greed or killed it before it caused further damage.  SoftBank tanking will fuck over anyone invested in the Japanese stock market, where it currently sits as the third-largest company by market cap behind KIOXIA (a memory company booming thanks to the AI trade) and Mitsubishi UFJ Financial (a bank with heavy ties to the AI industry and data center infrastructure). While I severely doubt it’ll die — it’s likely MUFJ and SMBC Bank would extend whatever credit necessary to keep the doors open — OpenAI and the greater AI trade has become a load-bearing toothpick holding up the trillion-ton ass of the world’s most well-funded gambler. For SoftBank to survive in its current form, OpenAI must go public, become a thriving and profitable business, and have its stock price stay elevated for the foreseeable future. Additionally, ARM must also retain or exceed its current stock price. Hey, while we’re on the subject of “companies betting the entire future on OpenAI that recently got downgraded by S&P Global…” Hey! You in the back! Stop laughing! Stop laughing at Larry Ellison! He’s now only the world’s 8th-most-richest guy !  Just kidding, fuck Larry Ellison. What I’m about to tell you might make you laugh, probably because it’s really funny. Oracle is currently spending over $340 billion to build out over 7.1GW of data center capacity for OpenAI , as part of its $300 billion, five-year-long cloud compute contract that began, at least in theory, on June 1, 2026 at the beginning of its Fiscal Year 2027, though much of the capacity is yet to be built. To fund the buildout, Oracle has had to raise over $50 billion via stock sales and debt , spent $55.7 billion in its last fiscal year , and expects to spend at least $90 billion more in FY2027. As a result of that , S&P Global downgraded Oracle’s credit rating to BBB/A-2 , the literal lowest level before it’ll become junk-grade, meaning that one more downgrade ( though it would have to be from two ratings agencies ) from here would risk Oracle becoming a “fallen angel,” with investment funds (that can’t hold junk grade debt) having to jettison its debt from indexes, as happened to Ford in March 2020 , leading to over $35 billion in debt being dumped and its borrowing costs skyrocketing to between 8.5% and 9.625% when it raised in April 2020 . For some context, Ford reported an average interest rate of 5.2% on its long term debt in its 2019 annual report .    You’ll never guess why S&P Global downgraded Oracle! And, once again, the emphasis is theirs: That’s a load-bearing if, brother!  Anyway, you know who else is trying to warn you about Oracle’s exposure to OpenAI? Oracle! Per Bloomberg : As a reminder, the only way that OpenAI will be able to afford to pay its $300 billion cloud compute contract with Oracle will be if it continues to hit revenue projections ( per The Information ) that have it making $113 billion in 2028, $184 billion in 2029, and $284 billion in 2030, a year when it will magically become profitable, and no, I don’t know how that happens: Based on my own analysis , assuming that Oracle can successfully build capacity for OpenAI to pay for (a load-bearing assumption), it would have to pay around $75 billion to rent that 7.1GW of capacity. Stargate Abilene, an 8-building, 1.2GW project that broke ground in July 2024 , has (per sources familiar with the matter) only built and operationalized three buildings, despite the project having meant to be fully operational by the end of 2025 ( per landowner Lancium ), or energized by the middle of 2026 , it isn’t really clear, and I can’t get a straight answer from anyone about whether the power even exists on site to turn any of it on.  Anyway, for Oracle to make all the rest of that money, it will have to build five more Stargate Abilenes. If you’re wondering how that’s going, Stargate Shackelford only broke ground in December 2025 , Stargate Wisconsin appeared to have a single steam beam in March , Stargate Michigan only got its first steel beams two months ago , and Stargate New Mexico is still waiting for permitting to begin construction .  Based on Lancium’s presentation and discussions with sources familiar, Oracle will pull in somewhere in the region of $10 billion in annual revenue from the (assuming it’s ever done), completely-finished 824MW of critical IT infrastructure at Stargate Abilene. It is unclear how Oracle hopes to be paid even a fraction of its $300 billion compute deal, because in its current state, its annual revenue from Stargate projects currently sits in the region of a maximum $5 billion a year, or less than a tenth of its FY2026 capex. For the most part, Oracle has funded the various Stargate data centers with project financing, meaning that a nebulous SPV will be responsible in the event it defaults on any of these contracts…until Stargate Michigan, which only closed when Oracle agreed to guarantee the $14 billion in bonds raised .  All of this revenue — both theoretical and otherwise — sits in Oracle’s “Cloud” segment, the only part of the business that’s actually growing , as the rest of its business has either been declining or plateauing for about a decade.  In any case, for Oracle to actually get paid its $300 billion, it will have to build upwards of 6GW of data center capacity…in a year and a half? This deal is meant to be worth in the higher range of tens of billions of dollars in annual revenue by FY2028, which begins on June 1 2027! Stargate is horribly, impossibly delayed, to a level that makes me wonder if anybody other than perhaps Anissa Gardizy has bothered to think about Stargate for even a fucking second. Anyway, Oracle’s entire future rides on this deal. While Oracle Cloud Infrastructure continues to grow, its future growth (and remaining performance obligations) almost entirely hinge on both its ability to build the largest infrastructure project of all time and for OpenAI to continue raising funding for an indefinite amount of time. The rest of that growth comes from Meta and xAI, both of whom are only really “doing AI” because everybody else is. This puts Oracle in a very, very compromising position on multiple different levels.  Generative AI is the only reason that Wall Street started liking Oracle again as its other business plateaued, even as it burned billions of dollars on capital expenditures and cut its gross margins by a little under 15% since 2022 , with the vast majority of that value coming from its revenue from OpenAI and what’s actually active at Stargate Abilene.  Much like the rest of the AI trade, everything about Oracle’s future is sold on potential rather than anybody thinking about reality or things like “whether Oracle can actually build the data centers” or “how Oracle makes any of that revenue if the data centers aren’t built” or “how OpenAI affords to pay for the compute if the data centers get built.” As Oracle said in its own disclosures, if OpenAI can’t pay, “Oracle could be left with massive data center leases that it might be unable to exit or have to re-lease to new tenants under less-favorable terms,” and there isn’t a single company on Earth who can or would pay for such a large amount of compute, nor is there the aggregate demand to justify it. While its many government contracts and national security significance make it unlikely that Oracle would be allowed to die , the collapse of its only growth segment will likely spell dark times for a company that’s already laid off 21,000 people as a means of funding its AI buildout. The double-edged sword of the AI trade’s childlike attachment to stock valuations poses an egregious threat to Larry Ellison himself. Hey — HEY! I said no laughing! Stop it! This is all very serious! This is a serious situation! You’re laughing about the potential downfall of a guy who once wrote a letter to the New York Times attacking HP for firing former CEO Mark Hurd for repeatedly making sexual advances toward a reality star using HP’s finances !  Sorry, my mistake, you should keep laughing, even the prospect of what I’m about to tell you is hilarious.  As I said in my piece about how OpenAI Kills Oracle:  One of the consistent themes of this piece is that much of the “value” of AI is hot air — by which I mean whatever people are willing to pay for a stock that’s continually inflated by specious media-driven hype.  Ellison’s wealth is driven by both his share of Oracle’s ongoing yearly dividend, his Oracle shares, and his ability to offer said shares as margin loans, which makes him vulnerable to even a symbolic collapse of OpenAI, which is why it had to tweet in February that “ the NVIDIA-OpenAI deal has zero impact on its financial relationship with OpenAI ” to calm those dumping the stock.  To be clear, Ellison has around 1.16 billion Oracle shares, leaving him with around 810 million or so left, allowing him to pledge them as further collateral rather than having to either dump them on the market or dip into his reserves of about $10 billion in cash and $15 billion in Tesla stock , with Ellison historically never selling more than about $4.7 billion in stock. We don’t know the exact scale of terms of his personal loans, but do know that he’s got a shit-ton of them, and that his entire fortune rests on the idea that he never has to sell Oracle stock. That becomes a problem if things drag on with the Warner Bros deal, as he’s also guaranteed $40 billion from the Ellison Trust , effectively barring him from selling or using those shares until the deal clears (and the money from the Middle East arrives to fund the deal). The amount of shares that Ellison has committed has oscillated on a year-by-year basis, sitting at 305 million in both 2018 and 2019 , rising to 317 million in both 2020 and 2021 , dropping to its lowest level in 2024 ( 217 million ) before bumping back up to 346 million in 2025. While the board theoretically keeps an eye on his loans and what he’s pledging, he holds 40% of Oracle’s stock and the undying loyalty of veterans like former CEO Safra Catz and co-CEOs Clay Magouyrk and Mike Sicilia. To get specific about how the Paramount/Warner Bros deal breaks down, $24 billion will be covered by funds from the Middle East (primarily sovereign wealth funds), with Ellison providing $22 billion and bank debt funding the rest.  If the deal doesn’t close by September 30, the Ellisons have to pay around $650 million a quarter in fees . If it does , Ellison will likely either have to liquidate his Tesla stock, hand over cash, or take out further margin loans on his Oracle stock to fund it. Those would likely increase the amount of shares he’d have to commit somewhere between 150 million and 300 million (at a loan-to-value of 25% to 50%) at whatever price Oracle is currently trading at. Though it’s hard to tell exactly, the number to look for with Oracle is “below $70.” Once that happens, Ellison will likely have to proffer more Oracle stock to keep up with his margin calls, which will severely limit his ability to take out further margin loans using his Oracle stock. He will have to renegotiate loans, and if he’s managed to buy Paramount, he’ll be sitting on the stock of a company with $80 billion in debt and constantly loses money , which will be far less-appetizing to potential lenders who are aware that the rest of Ellison’s money is tied up in the plummeting hopes of Oracle. Things could get much darker if Oracle plunges below $50, as at that point the encumbrances of his various enterprises and his own margin loans could become too much to avoid having to liquidate Oracle stock. If that happens, it creates a vicious cycle that will potentially involve selling off Paramount, dumping further Oracle shares, or even trying to engineer a firesale for the company. All of this was entirely avoidable if he had never met Sam Altman, and never gave in to the temptation of the AI trade. When the OpenAI Bubble — and OpenAI itself — bursts, many will attempt to eulogize the situation in terms of how we could’ve possibly known this would happen, and I want to be clear that I’m going to be reading and commenting on as many of them as I can find. I believe that once OpenAI collapses it’ll have a violent, punishing effect on the entire stock market, a precursor to a much greater drawdown as everybody accepts that the AI bubble has burst.  This view is shared by the Bank of England governor Andrew Bailey , who warned that the bursting of the AI bubble would have an effect on the UK economy, even though the UK economy — and the UK financial system — isn’t nearly as exposed to it as that of the United States, and would have significant enough effects to change British monetary policy, specifically, interest rates.  And I continue to stand by my belief that this company will die, though I can’t say when it’ll happen. The promises that Sam Altman has made at the scale that he’s made them are equal parts ridiculous and dangerous, leaving any counterparty somewhere between burned or destitute as a result.  There is no compelling story for any AI company once OpenAI dies. Other AI labs will suddenly have to explain how they avoid the same economical pitfalls while still showing the same aggressive growth projections promised by Sam Altman, and half-measures will no longer be acceptable. Their ability to secure credit — or even venture funding — will be met with impossible-to-answer questions about sustainability and profitability. Any startup connected to its models will suffer because it’ll be clear that any AI lab is a financial black hole, and it’ll become obvious that basically every AI startup is an unprofitable LLM wrapper. That should be obvious now, but nobody bothers to look. Any AI infrastructure company will have to pivot aggressively to open source models if they haven’t already, and realize that much of the demand for AI services came from brainless curiosity driven by the AI trade and market hype. CoreWeave, IREN, and the many circular-financed neoclouds will, much like AI labs, find themselves unable to secure funding, as the first question will be “how do you know your customers won’t die?” NVIDIA just won’t be able to justify selling as many GPUs, as it has repeatedly cited OpenAI (albeit without saying its name) as a proxy driver of sales via counterparties including Microsoft and Amazon. It’ll be a permanent blemish on a startup ecosystem that helped so many people become rich based on fictional or fanciful promises and projections, enabled and funded by venture capitalists that didn’t force founders to make stable or sustainable companies because it “always worked out before.” And I genuinely think this will create an accountability crisis in the media. I speak with readers and listeners every single day that are horrified about how many half-truths and outright lies are published and used as a means of propping up the AI bubble and the larger tech industry. The term “AI” has grown from a kind of technology to a cudgel wielded by the powerful to threaten and terrorize workers, all based on the outcomes from Large Language Models that simply do not do what their progenitors have promised and do not produce ROI or productivity benefits that are in any way measurable. The OpenAI Bubble inflated not because Sam Altman is a super-genius, but because he’s very, very good at telling people what they want to hear. He’ll give members of the media convincing-enough projections, said with the confidence ( or necessary fear ) necessary to sway the vast amounts of reporters who are excited to follow the next big hype cycle (or, put another way, are scared to miss out on it).  Altman knows the exact signifiers to use and the minimum viable product necessary to “prove” OpenAI’s worth — however many hundreds of millions of weekly active users, annualized run rates, gigawatts of data centers, vague promises of “abundance” and “intelligence too cheap to meter” that never actually resemble a tangible thing — that work to con reporters and investors who don’t want to think about anything but growth.  He’s also really, really good at playing on people’s greed, be it promising Satya Nadella he can build the next generation of cloud compute cash, Larry Ellison that he can make OCI bigger than Azure, and Masayoshi Son that he can birth a goose that lays golden, AI-labeled eggs.  Altman realized early on that the only way to sell AI was to talk about it in the future tense in a mixture of threats and promises, always subtly suggesting that those who follow the OpenAI gospel will be saved from the permanent underclass. And that same con worked on the minds of Silicon Valley founders who feel sore that they’ve yet to become an early employee of the next Apple, Google, Amazon or Microsoft, selling the dream of endless wealth under the auspices of “accelerationism” that really means “growth at all costs, usually billed to somebody else.” He and his acolytes have created a palpable mania in the Valley, convincing people that not using his software is a guarantee that they’ll be poverty-stricken imbeciles, and I think he’s fully aware of the fact that Silicon Valley is a dense monoculture that LARPs as a free thinker’s paradise. In the end, Altman is unlikely to suffer, at least anywhere near as much as those he’s misled or helped mislead. The scale of losses that the stock market may face scare me to the point I’m almost hoping I’m wrong, with the markets heavily dependent on eternal growth of the AI trade, as without NVIDIA selling more GPUs every quarter, it’s unlikely that anybody is going to be excited to invest in tech past the year 2028. All of this could’ve been stopped if those responsible for scrutinizing the powerful actually did their jobs, and spent more time doing that than critiquing the critics and repeating the promises of craven liars and billionaire scumbags. There were signs from the earliest days that this was all unsustainable, and the only reason it got this big was because the media and the markets fell behind a specious AI trade, empowering and enabling venture capitalists and hyperscalers to sink hundreds of billions of dollars into a doomed industry.  Whatever the AI industry achieves by the end of this farce will pale in comparison to the massive harms it has caused and will cause as a result, and for us to avoid this happening again, we need a fundamental reimagining of how the powerful are covered, how much effort is made to pry apart their plans, and accountability for those who either failed to stop them or actively assisted them. If I sound salty, it’s because I am worried about the regular people caught up in this madness — the tens of thousands of people that have suffered AI-washed layoffs , the hundreds of millions of people that invest in a global stock market dependent on the AI trade (for a taster, see what’s happened in Korea when the KOSPI dropped earlier in the week, forcing hundreds of thousands of retail investors to face margin calls ), those whose retirements and pensions and insurance annuities are tied up in private credit funds invested in AI data centers , and anyone of any kind who built their life around any promise made by Sam Altman and those that followed him.  I challenge those who are glibly dismissive of everything I say — who look for any smidgen of proof to dismiss hard numbers or clear economic issues — to truly think about the consequences of what I’ve written, and take the risk of the OpenAI Bubble seriously. Tech companies are not your friends, venture capitalists are not your saviors, Sam Altman doesn’t care if you live or die, and the AI industry — and Silicon Valley — will dump you the second that you stop being useful as an acolyte or booster.  I love technology, and credit it with making me a success and the person I’ve become, as well as connecting me to many people I love dearly. I believe that tech should be something that empowers, protects and enriches the human experience, something that’s sustainable and reliable and replicable and stable and makes human beings the same as a result.  The tech industry as it stands shows nothing but contempt for the user. Every tech product is somewhere between broken and buggy. The people that write about tech write for the companies far more than they write for those that pay them. Venture capitalists fund companies that they think they can sell to other companies or take public, which in turn means they fund things that are only attractive to people on Twitter or other venture capitalists. Big tech is unregulated, unrestrained, and works entirely to either enrich or fuck over shareholders depending on the day, and because the finance media has little interest in pushing back, they’ll continue to do so to the detriment of the markets and the retail investor. Everything comes back to a distinct selfishness and lack of responsibility across basically every part of the tech industry. The fact that AI has grown this large is a symptom that Silicon Valley needs to be restrained — that it can and will release dangerous, unreliable, unpredictable and unstable products at scale with little regard for the consequences, in part because it knows the media will celebrate it doing so if it can show user or revenue growth.  OpenAI is the company the tech industry deserves — a directionless company of questionable worth that grew in a vacuum of responsibility that exploits greed and ignorance at scale. And the tech industry will deserve exactly what it gets for coddling Sam Altman, and letting his empire grow this large. 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.  As a reminder, if you sign up between now and XX July, you’ll get $10 off a subscription.  OpenAI’s collapse will be a direct result of its loss-laden economics — its doomed, loss-making subscriptions, its pathetic advertising revenue, and API costs that became a “huge issue” for its enterprise customers — and the fact that outside of the hype , AI lacks measurable ROI . When OpenAI eventually leaves CoreWeave, Cerebras, and Oracle in the lurch, there won’t be anyone else to pick up that compute.These are all debt-laden companies, and without meaningful revenues, they’ll struggle to service their obligations. When OpenAI dies — likely folding into Microsoft in the process — it will massively pull back on any and all compute demands, with the likely end of and free ChatGPT and a massive price bump across the board. OpenAI’s demise would also naturally call into question the rationality of investing in any AI startup. If the largest, best-funded, best-resourced company in the entire industry backed by the world’s largest software companies couldn’t make it, why would you believe somebody else would do so? The collapse of the largest company in the ecosystem would also seize up any and all AI data center debt (if any exists at that point), because the literal largest consumer of AI compute would be dead. On September 22, 2025, NVIDIA announced a “strategic partnership” to invest “up to $100 billion” and build 10GW of data centers with OpenAI, with the first gigawatt to be deployed in the second half of 2026. Where would the data centers go? How would OpenAI afford to build them? How would OpenAI build a gigawatt in less than a year? Don’t ask questions, pig!  NVIDIA’s stock bumped from from $175.30 to $181 in the space of a day. The media wrote about the story as if the deal was done, with CNBC claiming that “the initial $10 billion tranche [was] expected to close within a month or so once the transaction has been finalized.” I read at least ten stories that said that “NVIDIA had invested $100 billion.” This deal never happened. Three months later, the Wall Street Journal said that it was “on ice,” and two months after that , NVIDIA pledged to invest $30 billion in the company , and though NVIDIA mentioned investing $18.6 billion in “private companies and infrastructure funds…[including] AI model makers that may indirectly purchase or use our products in the cloud,” it’s unclear how much made it to OpenAI. On October 5, 2025, AMD announced that it had entered a “multi-year, multi-generation agreement” with OpenAI to build 6 GW of data centers, with “the first 1GW deployment set to begin in the second half of 2026,” calling the agreement “definitive” with terms that allowed OpenAI to buy up to 10% of AMD’s stock, vesting over “specific milestones” that started with the first gigawatt of data center development. Said data centers would also use AMD’s yet-to-be-released MI450 GPUs. The deal would, per Reuters , bring in “tens of billions of dollars of revenue.” AMD’s shares surged by 34% , with analyst Dan Ives of Wedbush saying that this was a “major valuation moment” for AMD.  I can find no tangible evidence that OpenAI has bought a single AMD GPU. While its most-recent 10K references a “product purchase agreement with OpenAI OpCo LLC,” and while you can sort of blame the rumoured delays of the MI450 GPUs OpenAI is supposedly buying , it’s weird that AMD hasn’t loudly mentioned this on every earnings call. It’s also weird that in February 2026, Meta and AMD signed a near-identical agreement . On October 13, 2025, Broadcom announced a 10 gigawatt deal with OpenAI , claiming that it would deploy 10GW of OpenAI-designed chips, with the first racks to deploy the second half of 2026 and the entire deployment completed by end of 2029. Broadcom's stock popped by 9% on the news about the 10GW deal, with CNBC adding that " the companies have been working together for 18 months . [emphasis mine, for a reason that will soon become obvious]"  On May 7, 2026 , The Information reported that Broadcom and OpenAI had yet to work out how to finance the initial purchase of its specialist chips. On June 24 2026 , OpenAI and Broadcom would announce the chip had been “developed from design to production in nine months,” the kind of blatant lie that you tell when you know nobody in the media is watching.  On December 11, 2025, The Walt Disney Company announced that it had reached a “ landmark agreement ” with OpenAI to bring its characters to Sora, adding that it would invest $1 billion in the company. The same day, Disney CEO Bob Iger and Sam Altman went on CNBC , with Iger adding that Disney “[wanted] to participate in what Sam is creating, what his team is creating,” and added that Disney “thought this is a good investment for the company.” It would also buy ChatGPT for the entire company. On March 24, 2026 , OpenAI announced Sora was dead, the deal was dead, and it’s unclear whether anything actually happened.

0 views
Unsung Yesterday

“It would’ve been much simpler to just use an animated cigar.”

In this 7-minute video , kaptainkristian talks about the fascinating process of making Who Framed Roger Rabbit, the pre-CGI hybrid animation/​live action movie from 1988: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/it-wouldve-been-much-simpler-to-just-use-an-animated-cigar/yt1-play.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/it-wouldve-been-much-simpler-to-just-use-an-animated-cigar/yt1-play.1600w.avif" type="image/avif"> This is called “bumping the lamp” – a phrase coined by Disney during the production of Roger Rabbit to describe going above and beyond what was expected of the animators. It would’ve been perfectly feasible if Roger stayed flatly illuminated throughout this scene like a cartoon normally would, but instead the animators put in the time to shade every cell uniquely so that the practical light would bounce off from the same way it would a physical object. And they had to account for that dynamically shifting lighting with every contour in Roger’s limbs, his clothes, his face, the cast shadow he creates on the environment as well as the texture of the light, the slightest difference in color temperatures, the lamp sways… even Roger’s ears have a slight translucency, since they’re much thinner than the rest of his body. They thought of that. Audiences had no expectation for this level of realism in 1988, but all these seemingly-superfluous details help sell the effect at a subconscious level. “Bumping the lamp” can be seen on two interlocking levels: one that focuses on the quality of the output (as above), and one that focuses on process toward personal mastery of craft. On that second level, here’s an anecdote from the original Mac team, a few years earlier: One day Burrell started doing something radical. Andy came by my cube and said “You’ve got to come see what Burrell’s doing with Defender.” “How can you innovate with a video game?” I wondered. I’d seen Burrell and Andy innovate on all kinds of things, but I couldn’t image how he could somehow step outside the box of a video game - the machine controlled the flow and dictated the goals. How could you gain some control in that environment? We started up a new competition, and when Burrell’s turn came up, he did something that stunned me. He immediately shot all his humans! This was completely against the goal of the game! He didn’t even go after the aliens, and when he shot the last human, they all turned to mutants and attacked him from all sides. He glanced in my direction with a grin on his face and said “Make a mess, clean it up!” and proceeded to dodge the swarm of angry mutants noisily chasing after him. I am neither a good visual/​motion person, nor a great gamer. But I recognize this desire to once in a while walk up to a pool and throw yourself into a deep end of it, out of principle. Sometimes when I start a new project, I choose a different framework or method I haven’t used before, just so things are harder. On Aresluna and here on Unsung, I very deliberately chose “no centering” as an arbitrary principle, just to push myself to embrace the – harder, but more rewarding – asymmetry, and see where that takes me. I am sharing this just after I shared the other maxim because I believe in those more that I believe in style guides or design principles coming “from above.” I see craft blossom when it can flow from individuals, and when the organization and attendant processes recognize that. Let people bump the lamp, make a mess, feel certain way about weird things, and do other things – and then let others observe, learn from that, and share the strange rituals and arbitrary rules that make them try harder when no one’s asking for that. (Thanks to Jon Wiley for sharing the original video.) #above and beyond #craft #games #motion design #youtube

0 views

Detecting Full Table Scans With SQLite

I’m at RubyConf this week, and it’s great! I recently read that lobste.rs is now running on SQLite . One part from the post caught my attention: I wish we could say in a test, “Fail if you encounter any full table scans”. Which would have caught the perf issues we experienced during the first deploy. SQLite collects information about prepared statements and exposes those statistics though an API . The upshot of this is that we can tell whether a statement did a full table scan after executing the statement without using an . Here’s an example program that demonstrates detecting a query did a full table scan: Feels like we could integrate this in to Rails and warn or raise in test / development. I’m not sure if we’d want to check this all the time in production, but maybe it would be fine?

0 views
Unsung Yesterday

Max one weird thing

If you want to record the screen from your iPhone on your Mac, open the QuickTime Player app but ignore New Screen Recording, and click on New Movie Recording instead. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/1.1600w.avif" type="image/avif"> This instruction is a fever dream of three weird things in sequence: It’s interesting to me to think how we got here: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/2.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/3.1600w.avif" type="image/avif"> Long ago, the Player was the only free, consumer-facing part of QuickTime, so it needed special branding. You could purchase QuickTime Pro – you would even get aggressive ad banners for it inside Mac OS! – and its encoding and saving capabilities would then be sprinkled across the entire system. = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/max-one-weird-thing/4.1600w.avif" type="image/avif"> “New Movie Recording” originally offered recording from external video cameras (like iSight , another cute name). “New Screen Recording” was added later, for recording from internal screens. My guess is that technically, architecturally, or both, it was easier to treat external screens (like iPhone or Apple TV) as external video cameras since the UI and affordances matched them more closely. So that’s why screen recording from external devices ended up under “New Movie Recording.” As a UX historian, this is fun and fascinating! I love tracing back that kind of stuff and learning how certain strange things came to be. As a user… not so much. “If you want to record the screen from your iPhone on your Mac, open the QuickTime Player app but ignore New Screen Recording, and click on New Movie Recording instead.” This feels thrice arbitrary, closer to a magical incantation than a computer command, requiring you to hold a bunch of counterintuitive things in your head, or look them up every time. “Wait, what was the strange name?“ “Yeah, it’s called a player, but that’s ok.” “Hmm, I remember something about not choosing the obvious command.“ I have this internal rule that a flow or a space in the UI should have at most one weird thing. I can’t prove it to you mathematically, and I would be the first to find exceptions to my own rule. But one weird thing makes me nervous, and two or more weird things in concert raise the hair at the back of my neck. Two weird things is when the “launch blocking” bulb lights up in my head. Work needs to happen to bring the weirdness count back to 1 or 0. This is one example of what I dragged Apple earlier for : it’s not just speed that matters. It’s noticing this kind of complexity, places where an easy way was chosen, design debt accumulated, and things got simply too weird. Apple allowed three weird things to accumulate here. (By the way, delightful weird doesn’t count! But it’s hard for me to imagine anyone defending these three things above as delightful or positive in any way.) “If you want to record the screen from your iPhone on your Mac, open the QuickTime Player app but ignore New Screen Recording, and click on New Movie Recording instead.” “If you want to record the screen from your iPhone on your Mac, open the Recorder app and click on New Screen Recording.” It’s not trivial to get to this or something similar, but it’s also not really hard . You can get rid of weird things, but you need to want it. #apple #change management #complexity What on earth is “QuickTime”? I am recording with a player ? Why can’t I choose the option that describes exactly what I want to do? QuickTime is a 1990s brand, an offshoot of QuickDraw. Instead of QuickAnimate or QuickPlay, Apple called it QuickTime because it felt cute: time is what separates static images from video. The branding was much more prominent in the 1990s and 2000s, but mostly fell out of use – searching for “quicktime” in system settings today, for example, yields zero results. Long ago, the Player was the only free, consumer-facing part of QuickTime, so it needed special branding. You could purchase QuickTime Pro – you would even get aggressive ad banners for it inside Mac OS! – and its encoding and saving capabilities would then be sprinkled across the entire system. “New Movie Recording” originally offered recording from external video cameras (like iSight , another cute name). “New Screen Recording” was added later, for recording from internal screens. My guess is that technically, architecturally, or both, it was easier to treat external screens (like iPhone or Apple TV) as external video cameras since the UI and affordances matched them more closely. So that’s why screen recording from external devices ended up under “New Movie Recording.”

0 views
Stratechery Yesterday

IBM Misses, IBM’s Mainframe Moat, IBM’s Many AI Problems

IBM announced preliminary results that spooked the software market generally; this is a story, however, specifically about IBM and its mainframe franchise.

0 views
fLaMEd fury Yesterday

Dinosaur Discovery Returns

What’s going on, Internet? Last year we discovered the dinosaurs at Auckland Zoo , and this year we went back for round two. They’ve added some new dinosaurs to the track this year, so it was well worth the revisit. We made the trip with my brother and his kids again, and this year my parents were up for the week so it was a great family night out. The kids are all a year older, we stayed out later and they had a great time. My youngest who is two years old now was a bit scared, but was able to put on a brave face walking around with daddy. I expect many more visits to the dinosaurs during the day as we visit the zoo during the upcoming weekends. I might never ever get to the NZ birds section (I have been trying with each zoo visit, lol). Enjoy the photos. ← Previous 1 / 18 Next → Close ← Previous 2 / 18 Next → Close ← Previous 3 / 18 Next → Close ← Previous 4 / 18 Next → Close ← Previous 5 / 18 Next → Close ← Previous 6 / 18 Next → Close ← Previous 7 / 18 Next → Close ← Previous 8 / 18 Next → Close ← Previous 9 / 18 Next → Close ← Previous 10 / 18 Next → Close ← Previous 11 / 18 Next → Close ← Previous 12 / 18 Next → Close ← Previous 13 / 18 Next → Close ← Previous 14 / 18 Next → Close ← Previous 15 / 18 Next → Close ← Previous 16 / 18 Next → Close ← Previous 17 / 18 Next → Close ← Previous 18 / 18 Next → Hey, thanks for reading this post in your feed reader! Want to chat? Reply by email or add me on XMPP , or send a webmention . Check out the posts archive on the website.

0 views
Brain Baking Yesterday

Is It Worth It To Buy A Plug-In Home Battery?

Yes. Next question! Oh, you’re still here? In that case let’s apply Rigorous Science (TM) to support our claim and to satisfy the never-ending hunger of artificial language models that are only able to answer this question by applying their Lying Science (TM) techniques. The cake, let them have it! Or something like that. Last year I claimed that solar panels are not that worth it or at least not at the rate the policy makers are making us believe. Perhaps they’re also fond of Lying Science. In any case, suppose you’ve made the purchase. In Belgium, the biggest advantage—being able to sell the generated energy back at a reasonable price—is long gone. Instead, based on the new digital meters that automatically upload exactly what you take and give, the national energy supplier added a “peak moment taxation”: you’re now paying for what you use and a fixed amount based on your monthly max intake. Long story short, it’s financially interesting to store the surplus of energy you generate yourself and use it when you need it. During the evening when cooking, for example. The problem that pops up is essentially the same as the solar panel problem: is it worth it to put in the money for a professional home battery installation given that these are still very expensive? Not really. But a simpler solution, a plug-in battery that is smaller, cheaper, and easier to install might. What follows are a few Armchair Calculations also known as Rigorous Science (TM) to support that statement. First, a few given facts: Okay, so where does a battery help you? At two levels: at reducing what you buy in by providing the energy when the sun is gone, and at reducing your peak energy usage. But that latter is less interesting than you think because of that minimum tariff. Not only that, a plug-in battery has to conform to strict rules: just plugging it into to a socket in the wall (into the net) means it’ll be limited to taking and giving . That is a big downside that is never mentioned on manufacturing websites. Suppose you’re turning on the oven, the AC, and more: you suddenly require more than a few but your battery is only able to help out for a puny portion: . In addition, it’s not able to store energy as fast as possible. Suppose you want to buy in energy during the night if you’re on a dynamic contract and energy is in surplus then. A completely depleted battery of for example might take over four hours—during which the price might have gone up dramatically. You can counter this major shortcoming by installing the battery in a separate electrical circuit connected to its own fuse in the fuse box. The Marstek Venus 3.0 battery we bought can be configured to give/take instead of but then you better make sure your installation is up for it. A fuse of should be good enough ( ). Suppose you don’t immediately go through all that trouble. Then the battery can somewhat soften the tariff blow: from your peak to meaning you’ll save about yearly. Then there’s the matter of the battery cycle. How many cycles the battery goes through from depleted to full indicates how efficient you’re able to use the stored extra energy. Given the above numbers (current quarter export, amount of days sun, …), a rough guess could be 160 cycles. Remember that during the winter period, this thing will just sit there doing nothing. I live in Belgium, not in Spain. The Marstek Venus has a capacity of , meaning we need to import less. Given the current price of energy, that’s less or . Add the softened peak and you’re at a total saved amount of per year. The Marstek currently costs about —so the total payback period is about years. Look at all this Rigorous Science (TM) working flawlessly! Given the separated fuse box upgrade, that might lower to almost four years. Doing that same rough calculation with a professional installation of that still costs over 4k, you’ll end up with a payback period of nine-ish years which is ridiculous: the bigger batteries still do nothing in the winter and for all we know, the average life span of these things might be ten years. This is exactly the same conclusion as local consumer magazine Test Aankoop : We generally do not recommend installing a home battery to store the electricity generated by solar panels. There exist more effective and cheaper alternatives such as increasing self-consumption and energy saving investments. Until recently, a simpler solution such as a plug-in battery was also not really worth it because these batteries could barely store a few kilowatts. The more popular HomeWizard battery costs and can only store significantly increasing the payback period. Their premium software is the biggest draw here, but I don’t need all that crap anyway as I want to monitor and control everything through Home Assistant. The true test will be the autumn and winter period of course, but during the summer you can still see an interesting pattern in the historical capacity chart: hidden standby power consumption. Marstek VenusE 3.0 Remaining capacity history graph. During the day the battery does nothing as the solar panels produce a big surplus of energy. The sudden drop at 17:30h is me getting crackin’ in the kitchen. After 19h30 the kids are gone to sleep, the AC is off, and there’s pretty much nothing except a few light bulbs turned on, hence the slight downward slope until about 06h30 when there’s enough sunlight to recharge (which takes a while as I still have to install that fuse). From 19h ( ) to 06h30 ( ) equals about of standby consumption: the NAS backing up files at night, the TP-Link mesh access points, standby modes of various devices, the battery itself that consumes about regardless, … That means a single HomeWizard battery might not even cut it for you to cover the standby consumption during the evening and night! Enough armchair logic for now. At the price of an entry level MacBook Air, I’m glad we didn’t shell out a huge amount for a useless installation (that needs its own space we don’t even have) and I’m glad the battery does at least something . Oh, and that peak? Yesterday we bought in total . The peak at 18h00 was . Similar patterns in the past week: the peak stays below one. Still ample of juice left as we have to pay for that stupid minimum of anyway. Related topics: / energy / By Wouter Groeneveld on 15 July 2026.  Reply via email . Our local Home Assistant installation collects energy data via a P1 meter that taps off that same official digital counter data. Our energy stats for the last quarter, from 1/04 to 30/06, are: import , export . Peaks at the expected 16-19h interval, mostly ranging somewhere at . The Flemish capacity tariff has a minimum amount! That means regardless of your peak use, you’re going to be paying for a peak of at least at per year. Suppose your peak is , then you need to pay an additional amount of per year. According to various sources ( , ), the price for energy in June 2026 is about while the injection tariff (putting it back on the grid) is about . That’s right: almost one tenth of the buy-in price. To be avoided at all costs if you are to buy back everything during the evenings/night! According to , last year the global solar radiation in per square metres was . also tracks the amount of sunnier days but the weather is very unpredictable and local.

0 views

How to stay in the coding flow using LLMs

We all know that moving to LLMs and agents has caused the feeling of losing touch with parts, or maybe even all, of a code base. This isn’t just something that is problematic for managing and handling the translation from business logic to implementation it is a problem because it feels exhausting . I’ve had coding sessions that lasted 12 hours and afterwards felt great. Meanwhile I’ve done LLM prompting for a few hours and felt exhausted or unsure of what I did. Lately I’ve been keeping this in mind and have been looking for a few ways in which I can maintain a flow state and take advantage of LLMs. Remember back in 2025 when this was the default way of using them? I actually still find this to be my preferred way. Using LLMs with code harnesses in projects injects so much unnecessary information that asking simple questions gets out control. For example, here I’m exploring some data, and I wanted a quick regex, I turned over to my VSCode chat window, and forgot that it was an agent, and asked it the question. It proceeds to start looking at the files, wanting to run code etc. All off target of what I need . So next I switched VSCode to “Ask” instead of agent, again the LLM is flooded with context about my project and proceeds to output a massive amount of distracting and off topic code suggestions. Switch to a browser chat window which has little to no context about what you’re working on and ask it my specific question, boom it spits out a few quick regexes for my Python list comprehension that are exactly what I need . Is this bad advice? Well, maybe. But was this what you’re already doing, definitely. But the point here is to multitask coding on more than one thing at a time. I’ve found that this keeps me in the flow state much better than if I let myself browse the news. So instead of switching from your agent -> browse social media switch between multiple projects. This depends on how your code / work is structured, but depending on the scope this means either switching between several agents in the same project or having several projects open at once. Types of positive multitasking to stay in the zone: For me, working on AppGoblin’s free ASO and mobile app ecosystem data , I have certain areas that *I* need to understand what is happening, for those reasons I do not let AI write anything more than boiler plate code. The clearest example of this I can give is SQL, where a lot of my most important relational logic exists. Sure, I can let an LLM one shot a complicated SQL and it will “work” but come weeks (or months!) later and I’ll find a complicated bug that slipped in. It’s not even necessarily about who was right/wrong in this situation, it’s that *I* need to know what’s going on in certain parts of the codebase. Something that ‘looks fine’ is a terrible feeling that later it was not what I wanted. This last one is probably best suited for other data crunchers out there, but it’s where I find a great sweet spot for staying in the zone. My favorite way to write code has always been to write code in an editor and send line to a REPL. This is also more or less how SQL gets written as well where you build queries in your SQL editor by slowly making changes to the data, checking values / assumptions and eventually getting to your final SQL query. With the LLMs, I find myself using this flow lately: It’s more or less the same as I did before, just a lot less writing and let’s me hold onto the difficult concepts longer. If you’re actually in the flow of editing code, the best way to augment your coding is with code completion. I’ve found this to be the most powerful in that I don’t even have to start letting my mind wander for how to do some boiler plate code, it just pops up automatically. I love this because it helps me think at a high level in the code without the distractions of trying to remember how to do something when the how is not the important part. Probably the only issue with this is that code completion can be quite annoying and distracting in some situations. For example, writing free form and handling imports at the top of a file are examples where LLM ‘helpful’ code completion is just not helpful. If you enjoyed this feel free to share. Working on related projects File and project cleanup. LLMs generate many extra files and code and it’s best to stay on top of that yourself. Go through and delete extra files. Try asking LLMs for advice on what to remove, but do be careful with this idea. Tell LLM to write new code for processing data Step through the code my self line by line, checking the hotspots where I know assumptions / tricky data might be

0 views

Notes on the Fourier Transform

The Fourier series is a great tool for analyzing periodic functions. But what about functions that don’t repeat? We’ve seen that we can compute Fourier series for a non-periodic function defined on a finite interval, as long as we don’t care about its behavior beyond that interval. Let’s extend this idea to functions that never repeat; that is, non-periodic functions defined on the interval (-\infty,\infty) . To motivate the subject ahead, let’s look back at the example used in the earlier post about Fourier series : With an odd extension into [-2,0] . In that post, to make the Fourier series work, we assumed t(x) keeps repeating with a period 2L=4 on the entire x axis. Here, let’s face the reality that it does not - in fact - repeat, and observe how our Fourier series work out. Recall that the Fourier series approximating t(x) are the sine series (since it’s an odd function): The following visualization is interactive. By default, it shows t(x) (with its odd extension) and no Fourier series approximation. We’ll proceed by a series of steps and observe the outcome: Step 1 : set to some non-zero number; already at 3, the approximation is very good. The frequency spacing is \frac{\pi}{L} (this is the coefficient of x in the sines). Note that the Fourier series repeats every 2L , as expected. Step 2 : increase L to 6. This means our series are constructed assuming t(x) has a period of 12, not 4. Note how the Fourier series look now - they repeat every 12, and they don’t match t(x) as well as before. We can increase to a higher number to make the match better. As L grows, the spacing between adjacent frequencies decreases. Step 3 : increase L to 10. We no longer see the repetitions, so feel free to increase the values of x min and x max until you do. Note again that we need to add more and more coefficients to match t(x) better with this larger L , and the spacing adjacent frequencies grows smaller. Increasing L means our function repeats at larger and larger intervals. The logical conclusion of this progression is to ask - what happens if the function never repeats, meaning L\rightarrow\infty ? While not mathematically rigorous, the visual experiment here lets us make some conjectures: we’ll likely need an infinite number of coefficients for a good approximation, and moreover, the spacing between these coefficients will tend to zero. In other words, instead of a discrete set of coefficients, we’ll end up with a continuous line, or function . The function produced by this process is the Fourier transform of t(x) , and the next section shows its mathematical derivation. In these notes, we’ll be using the complex exponential formulation of Fourier series: We’re interested in a non-periodic defined on the interval (-\infty,\infty) . So we’ll be exploring the above equations for L\rightarrow\infty . First, let’s make a slight change of notation. Instead of writing formulae in terms of the period ( 2L ), we’ll be using the n-th harmonic angular frequency w_n : So we can slightly rewrite our series as: Using \Delta w as the difference between two consecutive frequencies: Using this notation, C_n is expressed as: So far there are no new insights here, just some new notation. Now we’re going to use it to facilitate the next step. Since L\rightarrow \infty , then \Delta w\rightarrow 0 . Let’s calculate the limit of the Fourier series representation of when \Delta w\rightarrow 0 : And substitute the latest C_n into this equation, changing its dummy integration variable from x to t to avoid confusion [1] Reordering slightly, and also replacing n\Delta w by w_n in the complex exponents: Looking at the limit with the sum carefully, this is a Riemann sum (see Appendix A)! w_n is the "sampled" version of , and \Delta w\rightarrow 0 . We can therefore replace it by an integral, changing w_n to and \Delta w to dw [2] : The inner integral is called the Fourier transform of and denoted [3] : And the full equation for is then the inverse Fourier transform: Let’s take our favorite odd triangular pulse example and calculate its Fourier transform. The function’s mathematical definition and plot are shown earlier in this post. Note that we’re not extending this function periodically - it’s zero beyond the range [-2,2] ; this is exactly why we need the Fourier transform here - as we’ve seen, Fourier series won’t do because the function they reconstruct eventually starts repeating. We’re looking to find: To calculate the integral, let’s decompose the complex exponent using Euler’s formula: Since our t(x) is odd, the first integral is zero . Also t(x)sin(wx) is even, so we can write: We’ve already calculated a very similar integral in the post on Fourier series , so let’s just skip to the result: The only remaining difficulty is its value at 0, which seems undefined at first (division by zero). However, note that as w\rightarrow 0 , the numerator also tends to 0, so we can use L’Hopital’s rule (twice!) to find that: This function is complex-valued; in fact, it’s purely imaginary. How do we visualize it? A common way to visualize complex-valued functions is by plotting their magnitude and phase separately. The magnitude of \hat{t}(w) is: Since \hat{t}(w) is purely imaginary, there are only two options for the phase: When the numerator is positive, we get a negative imaginary number with phase -\pi/2 , and when the numerator is negative, we get a positive imaginary number with phase \pi/2 . Finally, when \hat{t}(w)=0 (which happens at w=0 , by our earlier analysis, but also whenever is a whole multiple of \pi ), the phase is undefined. Here’s the magnitude and phase of \hat{t}(w) plotted against : It is common to talk about \hat{t}(w) as the frequency domain representation of t(x) . When the functions we’re working with have time as their domain (e.g. the x in t(x) represents time), which is often the case in the study of signals and systems, the Fourier transform can be seen as computing the frequency domain representation of the function. Here’s the Fourier transform formula again: It takes - the time domain representation of a function, and converts it to \hat{f}(w) - a frequency domain representation. For well-behaved functions, these two representations are dual - each one describes the function completely, just in a different way. To convert back from a frequency domain representation to the time domain, we use the inverse Fourier transform: While a time-domain plot ( t(x) ) shows how a signal changes over time, a frequency-domain plot ( \hat{t}(w) ) shows how the signal is distributed across all possible frequencies. Moreover, as we’ve seen, \hat{t}(w) is complex valued. Each frequency therefore has both a magnitude and a phase: the magnitude tells us how strongly that frequency contributes, while the phase tells us how that component is shifted. The frequency domain is extremely useful in signal analysis; for example, when designing filters. The Fourier transform also has a number of properties that are very useful in signal analysis and processing. But first, let’s discuss what a "well-behaved function" means for the purpose of applying Fourier transforms. The simplest existence condition for Fourier transforms is absolute integrability (also known as Lebesgue integrable): With this condition, \hat{f}(w) exists on the entire domain, is continuous and vanishes (tends to 0) as |w|\rightarrow\infty [4] . While this condition is sufficient, it’s not necessary; there are less well-behaved functions that also have Fourier transforms defined with some limitations. In these notes, we’re mostly interested in well-behaved functions that are used in real-world engineering, so we won’t discuss the other cases. Another assumption commonly made for real-world functions is that they vanish (tend to 0) as |x|\rightarrow\infty . While this is not a direct outcome of absolute integrability [5] , it’s a reasonable assumption in engineering. After all, real-world signals have finite energies. Intuitively, when we also assume is uniformly continuous , the assumption of vanishing at |x|\rightarrow\infty is a logical conclusion, because otherwise how can the total area for |f(x)| be finite? An important outcome of this discussion is that the Fourier transform is unsuitable for periodic functions. Functions that repeat at intervals are not absolute integrable . For periodic functions, we use Fourier series. The Fourier transform is a linear operator, because the integral is linear: So is the inverse Fourier transform; it’s similarly easy to show that: If we scale the domain of a function by a constant, its transform changes only slightly: Let’s do the variable substitution u=ax : This is the Fourier transform evaluated at \frac{w}{a} , so: There’s one small caveat here; when a is negative, the integral bounds should be flipped, causing a minus sign in front of the transform. So we can write: Which works for any a\ne 0 . This property is intuitive when thinking about signals: suppose a>0 , then f(ax) means the signal is compressed in the time domain by a factor a . The scaling property says that the frequency domain is expanded using the same factor; in other words, the higher frequencies become more prominent because we need sharper transitions to represent the compressed signal. Time shifting What happens to the Fourier transform if we time-shift the input signal by some constant: f(x-x_0) . By definition: Substituting u=x-x_0 , we get du=dx , so: Transform of a derivative An extremely useful property that’s often employed in the solution of partial differential equations; let’s calculate the Fourier transform of the derivative of : We’ll use integration by parts, where dv=f'(x) and u=e^{-i\cdot wx} . Therefore, v=f(x) and du=-iw\cdot e^{-i\cdot wx} : Recall the assumption made in the "Existence condition..." section about vanishing at infinities. So the first part of the equation above is zero, and we’re left with: Transform of convolution The convolution between two continuous functions and g(x) is defined as: Let’s calculate the Fourier transform of this function: This step of combining the integrals into a double integral, as well as the next step (changing the order of integration) is possible due to Fubini’s theorem and our assumption that and g(x) are Lebesgue integrable. Switch order of integration: Now, f(\xi) in the inner integral doesn’t depend on x , so we can pull it out: The inner integral is just the Fourier transform of a time-shifted g(x-\xi) , so we can write: And the remaining integral is the Fourier transform of , so: Convolution in the time domain translates to multiplication in the frequency domain! This result is so important in signal processing that it’s called the convolution theorem . Suppose we have some function and we want to know the area bounded between this function’s graph and the x axis in a certain interval [a,b] . One way to do this is to take a partition of the interval: And calculate the area under for every element of the partition. We can then approximate such sub-areas by rectangles, as follows: We’ll denote the area of each rectangle as f(x^*_i)\cdot\Delta x : There are many ways to choose which point of the interval [x_{i-1},x_i] to denote as x^*_i : left point ( x_{i-1} ), right point ( ), mid-point between the two (which is what our plot shows) or anything in between. The distinction doesn’t really matter for our purpose, as we will soon see. We can approximate the area under the curve of in the interval [a,b] with the Riemann sum , using a uniform partition: If is continuous on [a,b] , then as n\rightarrow \infty : This is known as the Riemann integral , or just the definite integral. The limit is why the exact choice of x^*_i doesn’t matter: as n\rightarrow\infty we have \Delta x\rightarrow 0 , and all points within [x_{i-1}, x_i] are equally good. The Fourier series is a great tool for analyzing periodic functions. But what about functions that don’t repeat? We’ve seen that we can compute Fourier series for a non-periodic function defined on a finite interval, as long as we don’t care about its behavior beyond that interval. Let’s extend this idea to functions that never repeat; that is, non-periodic functions defined on the interval (-\infty,\infty) . Visualizing Fourier series for non-repeating functions To motivate the subject ahead, let’s look back at the example used in the earlier post about Fourier series : \[t(x)= \begin{cases} x & 0 \leq x \leq 1 \\ 2-x & 1 < x \leq 2 \\ \end{cases}\] With an odd extension into [-2,0] . In that post, to make the Fourier series work, we assumed t(x) keeps repeating with a period 2L=4 on the entire x axis. Here, let’s face the reality that it does not - in fact - repeat, and observe how our Fourier series work out. Recall that the Fourier series approximating t(x) are the sine series (since it’s an odd function): \[t(x)=\frac{8}{\pi^2}\bigg[ sin\frac{\pi x}{2}-\frac{1}{3^2} sin\frac{3\pi x}{2}+\frac{1}{5^2}sin\frac{5\pi x}{2}-\cdots\bigg]\] The following visualization is interactive. By default, it shows t(x) (with its odd extension) and no Fourier series approximation. We’ll proceed by a series of steps and observe the outcome: n (terms in the Fourier series) L x min x max Step 1 : set to some non-zero number; already at 3, the approximation is very good. The frequency spacing is \frac{\pi}{L} (this is the coefficient of x in the sines). Note that the Fourier series repeats every 2L , as expected. Step 2 : increase L to 6. This means our series are constructed assuming t(x) has a period of 12, not 4. Note how the Fourier series look now - they repeat every 12, and they don’t match t(x) as well as before. We can increase to a higher number to make the match better. As L grows, the spacing between adjacent frequencies decreases. Step 3 : increase L to 10. We no longer see the repetitions, so feel free to increase the values of x min and x max until you do. Note again that we need to add more and more coefficients to match t(x) better with this larger L , and the spacing adjacent frequencies grows smaller. Increasing L means our function repeats at larger and larger intervals. The logical conclusion of this progression is to ask - what happens if the function never repeats, meaning L\rightarrow\infty ? While not mathematically rigorous, the visual experiment here lets us make some conjectures: we’ll likely need an infinite number of coefficients for a good approximation, and moreover, the spacing between these coefficients will tend to zero. In other words, instead of a discrete set of coefficients, we’ll end up with a continuous line, or function . The function produced by this process is the Fourier transform of t(x) , and the next section shows its mathematical derivation. Fourier series with L\rightarrow\infty leading to Fourier transform In these notes, we’ll be using the complex exponential formulation of Fourier series: \[f(x)=\sum_{n=-\infty}^{\infty}C_n\cdot e^{in\pi x/L}\] With: \[C_n=\frac{1}{2L}\int_{-L}^{L}f(x)e^{-in\pi x/L}dx\] We’re interested in a non-periodic defined on the interval (-\infty,\infty) . So we’ll be exploring the above equations for L\rightarrow\infty . First, let’s make a slight change of notation. Instead of writing formulae in terms of the period ( 2L ), we’ll be using the n-th harmonic angular frequency w_n : \[w_n=\frac{n\pi}{L}\] So we can slightly rewrite our series as: \[f(x)=\sum_{n=-\infty}^{\infty}C_n\cdot e^{i w_n x}=\sum_{n=-\infty}^{\infty}C_n\cdot e^{i\cdot n \Delta w x}\] Using \Delta w as the difference between two consecutive frequencies: \[\Delta w=w_n-w_{n-1}=\frac{n\pi}{L}-\frac{(n-1)\pi}{L}=\frac{\pi}{L}\] Using this notation, C_n is expressed as: \[C_n=\frac{\Delta w}{2\pi}\int_{-\pi/\Delta w}^{\pi/\Delta w}f(x)e^{-i\cdot n \Delta w x}dx\] So far there are no new insights here, just some new notation. Now we’re going to use it to facilitate the next step. Since L\rightarrow \infty , then \Delta w\rightarrow 0 . Let’s calculate the limit of the Fourier series representation of when \Delta w\rightarrow 0 : \[f(x)=\lim_{\Delta w\rightarrow 0}\sum_{n=-\infty}^{\infty}C_n\cdot e^{i\cdot n \Delta w x}\] And substitute the latest C_n into this equation, changing its dummy integration variable from x to t to avoid confusion [1] \[f(x)=\lim_{\Delta w\rightarrow 0}\sum_{n=-\infty}^{\infty}\left[\frac{\Delta w}{2\pi}\int_{-\pi/\Delta w}^{\pi/\Delta w}f(t)e^{-i\cdot n \Delta w t}dt\right]\cdot e^{i\cdot n \Delta w x}\] Reordering slightly, and also replacing n\Delta w by w_n in the complex exponents: \[f(x)=\frac{1}{2\pi}\lim_{\Delta w\rightarrow 0}\sum_{n=-\infty}^{\infty}\left[\int_{-\pi/\Delta w}^{\pi/\Delta w}f(t)e^{-i\cdot w_n t}dt\right]\cdot e^{i\cdot w_n x}\Delta w\] Looking at the limit with the sum carefully, this is a Riemann sum (see Appendix A)! w_n is the "sampled" version of , and \Delta w\rightarrow 0 . We can therefore replace it by an integral, changing w_n to and \Delta w to dw [2] : \[f(x)=\frac{1}{2\pi}\int_{-\infty}^{\infty}\left[\int_{-\infty}^{\infty}f(t)e^{-i\cdot wt}dt\right]\cdot e^{i\cdot w x}dw\] The inner integral is called the Fourier transform of and denoted [3] : \[\boxed{\hat{f}(w)=\mathcal{F}\left[f(x)\right]=\int_{-\infty}^{\infty}f(x)e^{-i\cdot wx}dx}\] And the full equation for is then the inverse Fourier transform: \[\boxed{f(x)=\mathcal{F}^{-1}\left[\hat{f}(w)\right]=\frac{1}{2\pi}\int_{-\infty}^{\infty}\hat{f}(w)e^{i\cdot w x}dw}\] Example calculation of Fourier transform Let’s take our favorite odd triangular pulse example and calculate its Fourier transform. The function’s mathematical definition and plot are shown earlier in this post. Note that we’re not extending this function periodically - it’s zero beyond the range [-2,2] ; this is exactly why we need the Fourier transform here - as we’ve seen, Fourier series won’t do because the function they reconstruct eventually starts repeating. We’re looking to find: \[\hat{t}(w)=\int_{-\infty}^{\infty}t(x)e^{-iwx}dx\] To calculate the integral, let’s decompose the complex exponent using Euler’s formula: \[\hat{t}(w)=\int_{-\infty}^{\infty}t(x)cos(wx)dx-i\int_{-\infty}^{\infty}t(x)sin(wx)dx\] Since our t(x) is odd, the first integral is zero . Also t(x)sin(wx) is even, so we can write: \[\hat{t}(w)=-2i\int_{0}^{\infty}t(x)sin(wx)dx\] We’ve already calculated a very similar integral in the post on Fourier series , so let’s just skip to the result: \[\hat{t}(w)=-2i\cdot\frac{2\cdot sin(w)-sin(2w)}{w^2}\] The only remaining difficulty is its value at 0, which seems undefined at first (division by zero). However, note that as w\rightarrow 0 , the numerator also tends to 0, so we can use L’Hopital’s rule (twice!) to find that: \[\lim_{w\rightarrow 0} \hat{t}(w)=0\] Therefore: \[\hat{t}(w)= \begin{cases} -2i\cdot\frac{2\cdot sin(w)-sin(2w)}{w^2} & w\neq 0 \\ 0 & w=0 \\ \end{cases}\] This function is complex-valued; in fact, it’s purely imaginary. How do we visualize it? A common way to visualize complex-valued functions is by plotting their magnitude and phase separately. The magnitude of \hat{t}(w) is: \[|\hat{t}(w)|=\sqrt{\hat{t}(w)\cdot\hat{t}(w)^*}=2\left|\frac{2\cdot sin(w)-sin(2w)}{w^2} \right|\] Since \hat{t}(w) is purely imaginary, there are only two options for the phase: When the numerator is positive, we get a negative imaginary number with phase -\pi/2 , and when the numerator is negative, we get a positive imaginary number with phase \pi/2 . Finally, when \hat{t}(w)=0 (which happens at w=0 , by our earlier analysis, but also whenever is a whole multiple of \pi ), the phase is undefined. Here’s the magnitude and phase of \hat{t}(w) plotted against : It is common to talk about \hat{t}(w) as the frequency domain representation of t(x) . The frequency domain representation of functions When the functions we’re working with have time as their domain (e.g. the x in t(x) represents time), which is often the case in the study of signals and systems, the Fourier transform can be seen as computing the frequency domain representation of the function. Here’s the Fourier transform formula again: \[\hat{f}(w)=\mathcal{F}\left[f(x)\right]=\int_{-\infty}^{\infty}f(x)e^{-i\cdot wx}dx\] It takes - the time domain representation of a function, and converts it to \hat{f}(w) - a frequency domain representation. For well-behaved functions, these two representations are dual - each one describes the function completely, just in a different way. To convert back from a frequency domain representation to the time domain, we use the inverse Fourier transform: \[\mathcal{F}^{-1}\left[\hat{f}(w)\right]=\frac{1}{2\pi}\int_{-\infty}^{\infty}\hat{f}(w)e^{i\cdot w x}dw\] While a time-domain plot ( t(x) ) shows how a signal changes over time, a frequency-domain plot ( \hat{t}(w) ) shows how the signal is distributed across all possible frequencies. Moreover, as we’ve seen, \hat{t}(w) is complex valued. Each frequency therefore has both a magnitude and a phase: the magnitude tells us how strongly that frequency contributes, while the phase tells us how that component is shifted. The frequency domain is extremely useful in signal analysis; for example, when designing filters. The Fourier transform also has a number of properties that are very useful in signal analysis and processing. But first, let’s discuss what a "well-behaved function" means for the purpose of applying Fourier transforms. Existence condition for the Fourier transform The simplest existence condition for Fourier transforms is absolute integrability (also known as Lebesgue integrable): \[\int_{-\infty}^{\infty}|f(x)|dx<\infty\] With this condition, \hat{f}(w) exists on the entire domain, is continuous and vanishes (tends to 0) as |w|\rightarrow\infty [4] . While this condition is sufficient, it’s not necessary; there are less well-behaved functions that also have Fourier transforms defined with some limitations. In these notes, we’re mostly interested in well-behaved functions that are used in real-world engineering, so we won’t discuss the other cases. Another assumption commonly made for real-world functions is that they vanish (tend to 0) as |x|\rightarrow\infty . While this is not a direct outcome of absolute integrability [5] , it’s a reasonable assumption in engineering. After all, real-world signals have finite energies. Intuitively, when we also assume is uniformly continuous , the assumption of vanishing at |x|\rightarrow\infty is a logical conclusion, because otherwise how can the total area for |f(x)| be finite? An important outcome of this discussion is that the Fourier transform is unsuitable for periodic functions. Functions that repeat at intervals are not absolute integrable . For periodic functions, we use Fourier series. Some useful properties of Fourier transforms Linearity The Fourier transform is a linear operator, because the integral is linear: \[\begin{aligned} \mathcal{F}\left[\alpha f(x)+\beta g(x)\right]&=\int_{-\infty}^{\infty}\alpha f(x)e^{-i\cdot wx}dx+\int_{-\infty}^{\infty}\beta g(x)e^{-i\cdot wx}dx\\ &=\alpha\int_{-\infty}^{\infty}f(x)e^{-i\cdot wx}dx+\beta\int_{-\infty}^{\infty}g(x)e^{-i\cdot wx}dx\\ &=\alpha\mathcal{F}\left[f(x)\right]+\beta\mathcal{F}\left[g(x)\right] \end{aligned}\] So is the inverse Fourier transform; it’s similarly easy to show that: \[\mathcal{F}^{-1}\left[\alpha\hat{f}(w)+\beta\hat{g}(w)\right]= \alpha\mathcal{F}^{-1}\left[\hat{f}(w)\right]+\beta\mathcal{F}^{-1}\left[\hat{g}(w)\right]\] Scaling If we scale the domain of a function by a constant, its transform changes only slightly: \[\mathcal{F}\left[f(ax)\right]=\int_{-\infty}^{\infty}f(ax)e^{-i\cdot wx}dx\] Let’s do the variable substitution u=ax : \[\mathcal{F}\left[f(ax)\right]=\frac{1}{a}\int_{-\infty}^{\infty}f(u)e^{-i\cdot \frac{wu}{a}}du\] This is the Fourier transform evaluated at \frac{w}{a} , so: \[\mathcal{F}\left[f(ax)\right]=\frac{1}{a}\hat{f}\left(\frac{w}{a}\right)\] There’s one small caveat here; when a is negative, the integral bounds should be flipped, causing a minus sign in front of the transform. So we can write: \[\mathcal{F}\left[f(ax)\right]=\frac{1}{|a|}\hat{f}\left(\frac{w}{a}\right)\] Which works for any a\ne 0 . This property is intuitive when thinking about signals: suppose a>0 , then f(ax) means the signal is compressed in the time domain by a factor a . The scaling property says that the frequency domain is expanded using the same factor; in other words, the higher frequencies become more prominent because we need sharper transitions to represent the compressed signal. Time shifting What happens to the Fourier transform if we time-shift the input signal by some constant: f(x-x_0) . By definition: \[\mathcal{F}\left[f(x-x_0)\right]=\int_{-\infty}^{\infty}f(x-x_0)e^{-i\cdot wx}dx\] Substituting u=x-x_0 , we get du=dx , so: \[\begin{aligned} \mathcal{F}\left[f(x-x_0)\right]&=\int_{-\infty}^{\infty}f(u)e^{-i\cdot w(u+x_0)}du\\ &=e^{-iwx_0}\int_{-\infty}^{\infty}f(u)e^{-i\cdot wu}du\\ &=e^{-iwx_0}\mathcal{F}\left[f(x)\right] \end{aligned}\] Transform of a derivative An extremely useful property that’s often employed in the solution of partial differential equations; let’s calculate the Fourier transform of the derivative of : \[\mathcal{F}\left[f'(x)\right]=\int_{-\infty}^{\infty}f'(x)e^{-i\cdot wx}dx\] We’ll use integration by parts, where dv=f'(x) and u=e^{-i\cdot wx} . Therefore, v=f(x) and du=-iw\cdot e^{-i\cdot wx} : \[\mathcal{F}\left[f'(x)\right]=\left[f(x)e^{-i\cdot wx}\right]^{\infty}_{-\infty}-\int_{-\infty}^{\infty}f(x)(-iw\cdot e^{-i\cdot wx})dx\] Recall the assumption made in the "Existence condition..." section about vanishing at infinities. So the first part of the equation above is zero, and we’re left with: \[\begin{aligned} \mathcal{F}\left[f'(x)\right]&=-\int_{-\infty}^{\infty}f(x)(-iw\cdot e^{-i\cdot wx})dx\\ &=iw\int_{-\infty}^{\infty}f(x)e^{-i\cdot wx}dx\\ &=iw\cdot\mathcal{F}\left[f(x)\right] \end{aligned}\] Transform of convolution The convolution between two continuous functions and g(x) is defined as: \[(f\ast g)(x)=\int_{-\infty}^{\infty}f(\xi)g(x-\xi)d\xi\] Let’s calculate the Fourier transform of this function: \[\begin{aligned} \mathcal{F}\left[(f\ast g)(x)\right]&=\int_{-\infty}^{\infty}e^{-i\cdot wx}\left[\int_{-\infty}^{\infty}f(\xi)g(x-\xi)d\xi\right]dx\\ &=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{-i\cdot wx}f(\xi)g(x-\xi)d\xi\ dx \end{aligned}\] This step of combining the integrals into a double integral, as well as the next step (changing the order of integration) is possible due to Fubini’s theorem and our assumption that and g(x) are Lebesgue integrable. Switch order of integration: \[\mathcal{F}\left[(f\ast g)(x)\right]=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{-i\cdot wx}f(\xi)g(x-\xi)dx\ d\xi\] Now, f(\xi) in the inner integral doesn’t depend on x , so we can pull it out: \[\mathcal{F}\left[(f\ast g)(x)\right]=\int_{-\infty}^{\infty}f(\xi)\int_{-\infty}^{\infty}e^{-i\cdot wx}g(x-\xi)dx\ d\xi\] The inner integral is just the Fourier transform of a time-shifted g(x-\xi) , so we can write: \[\mathcal{F}\left[(f\ast g)(x)\right]=\int_{-\infty}^{\infty}f(\xi)e^{-i\cdot w\xi}\mathcal{F}\left[g(x)\right]d\xi=\mathcal{F}\left[g(x)\right]\int_{-\infty}^{\infty}e^{-i\cdot w\xi}f(\xi)d\xi\] And the remaining integral is the Fourier transform of , so: \[\mathcal{F}\left[(f\ast g)(x)\right]=\mathcal{F}\left[f\right]\cdot\mathcal{F}\left[g\right]\] Convolution in the time domain translates to multiplication in the frequency domain! This result is so important in signal processing that it’s called the convolution theorem . Appendix A: Riemann sum and the definite integral Suppose we have some function and we want to know the area bounded between this function’s graph and the x axis in a certain interval [a,b] . One way to do this is to take a partition of the interval: \[a=x_0<x_1<\cdots<x_{n-1}<x_n=b\] And calculate the area under for every element of the partition. We can then approximate such sub-areas by rectangles, as follows: We’ll denote the area of each rectangle as f(x^*_i)\cdot\Delta x : \Delta x=(b-a)/n is the width of one interval (assuming a uniform partition, but the math works just as well for non-uniform ones). x^*_i is some value in the interval [x_{i-1},x_i] .

0 views
Michael Lynch Yesterday

Refactoring English: Month 19

Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers . Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall. At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I improved the website a bit, but it could use more polish. I adapted my chapter on design docs to a free excerpt . It did well on Lobsters and Reddit , but it flopped on Hacker News. I was surprised at how positive the reaction was to the design docs chapter. Generally, when I talk to developers about design docs, their main reaction is that they hate design docs and everything about them. The comments on my post were refreshingly supportive of design docs in general and my recommendations in particular. I got stuck for a while on the great AI blockade , but I pushed through by thinking more critically about splitting up large features and being less precious about code quality. In this case, done is better than perfect. June was the best month of book revenue since the initial crowdfunding launch. The increase in visitors was because of my excerpt about design docs . For the last few months, the Refactoring English website has listed my book as almost complete in early access. I was curious to see what the sales impact would be of going from an almost complete book to a fully complete book, so I looked at weekly sales: Marking the book as complete didn’t have an obvious impact on weekly sales, but what if I look at the daily averages? Okay, so there was a slight increase after I marked the book as complete. I was also curious whether Americans, in particular, bought at higher rates after I finished the book. I get email notifications every time someone purchases the book, and it seemed like more of my sales were from customers paying the US price, but I hadn’t measured carefully. I checked the data to see if that was true: Interesting! Completing the book had no impact on sales for customers purchasing with regional pricing, but customers purchasing in USD purchased at a 20% higher rate in the three weeks after the book was complete. I didn’t include sales after I published my latest excerpt because that obviously changes the numbers a lot, so let me treat that as its own category: But that’s always a little skewed because Americans make up the largest share of my readers. What if I normalize revenue per visitor? Oh, that’s a switcheroo. By normalizing per visitor, it flips the story. Now, it’s the Americans that buy at the same rate for a finished vs. unfinished book. The readers outside the US are the ones spending about 20% more per visitor on the completed book. I’m not sure how to use this information, but it did satisfy my curiosity. I’ve asked readers for feedback about my book in the past, and some readers gave enthusiastic feedback, but they were a small minority. I thought it would be fun and helpful to make a web-based feedback app that allows readers to leave notes as they read the book. It seemed like something I could knock out in a week or two. And now, two short… months later, I’ve got it up and running! A demo of my book feedback tool, where readers can leave me feedback directly in the book, and I can reply. My feedback tool has only been live for a few days, but it does seem to encourage readers to give more feedback. One reader just finished the book and cited the feedback app as one of his favorite parts of the experience, so that was neat. About once a year, I ask myself: where does all my time go? This question comes up for me whenever I’m focused on a project, but it’s not progressing as quickly as I expect. Here’s me asking myself this question a few times over the years: This time, I thought, “Maybe I should use a time tracking tool.” About 15 years ago, I tried a time tracking tool called RescueTime. I didn’t find it that useful, but I thought maybe I’d keep at it for a few weeks and see what happened. Then, I realized I was letting a random company collect data about every window that appeared on my screen, and I promptly uninstalled RescueTime. I was wishing for an open-source version of RescueTime, when I thought, “Wait, there probably is one.” And there is. It’s called ActivityWatch . It’s open-source and privacy-first. It records all your window and browsing activity, but the data all stays local to your machine. The problem is that ActivityWatch is way less polished than RescueTime. I couldn’t understand at all what the timeline was trying to show me: I couldn’t understand the timeline in the official ActivityWatch web interface. You’re supposed to assign rules to tell ActivityWatch how to categorize your activities, but I found that UI difficult to use as well: I found the categorization in the official ActivityWatch web UI difficult to use. I was about to give up on ActivityWatch, and then I thought, “Well, the data collection part probably works. What if I vibecode my own frontend?” So, I did , and it was pretty easy. I’m starting with a command-line tool, but I plan to expand it to a web app. To use my custom ActivityWatch frontend, I create a config file to categorize activities based on app name, window title, and/or URL: And then the output looks like this: So far, the data is interesting, but the biggest challenge is that it’s hard to categorize all of my activities automatically. For example, I can add a category for browsing Wikipedia, but am I doing it as part of legitimate work on my book? Or did I just go down a rabbit hole, and I’m suddenly reading about inventors killed by their own inventions ? Refactoring English had its second-best month of sales. I examine my sales numbers to see whether people are more likely to purchase a complete book as opposed to an almost-complete draft. I completed my book feedback tool. I’m trying a new tool to track my time. Result : Spent about three hours improving the website Result : Got 17.5k unique readers. Result : The tool is up and running. Finished the Refactoring English feedback tool. Made fixes to the Refactoring English ebook for consistency and EPUB compatibility. Made a demo video for Little Moments . I’m quite proud of the silly photos in this. Customers don’t care as much as I’d expect about the difference between a 100% complete book and an almost-complete book. Readers do purchase the finished book at higher rates, but the effect is pretty small when you control for number of website visitors. Pitch to 5 podcasts to talk about Refactoring English . Attract 30k unique readers to the Refactoring English website. Wrap up early access, and declare the 1.0 release of my book.

0 views
iDiallo Yesterday

They Prefer the App

I like building websites. But in some circles, I might as well say that I like to drive to the forest before sunrise, chop down a tree, load it in my trunk, and gather some dry wood as well, then drive back before first light. All this just to use the wood to start a fire and cook breakfast for my family in our high-rise apartment. It makes no sense. There is a large class of apps that could be replaced by a simple website, especially those made for schools that only present information. The worst part is that in those apps, most of the things we take for granted on the web are blocked. You can't copy and paste, you can't open a link in a new app, and you have to update the entire app just to get new information. For someone like me, who never updates an app until it's necessary , I usually end up with broken applications. But when I complain, I'm usually alone in those circles, because no one seems to know what a website is. The more I explain, the more I sound like a character from the 90s explaining how cool email is. They don't know what a website is. Check their phones, they have a thousand apps. The last time I blogged about just using websites , several people pointed out that they prefer using apps. My argument was that there is nothing the LinkedIn app does that necessitates an app. All its features are supported on the web. All but pervasive tracking. But I'm fighting a losing battle, because a large number of people have forgotten, or never knew, that LinkedIn is just a website. So is Reddit, Facebook, Instagram, etc. They push you toward the app only so they can better harvest information from you. So when we tell people to use the website instead of the app, they don't understand, because these services only push the app. A large number of the population has started to believe that a website is just a preview of an app, like a lightweight version. While I'm here complaining about a single app displaying an unexpected notification, people in my circle have a thousand unread notifications. It's a surprise that they somehow respond to my messages in the midst of all those alerts. I've met people who have an app for every single restaurant they go to. While I'm reading the privacy policy of a single app, trying to determine if it's worth downloading to benefit from a 20% discount, my friends are already in the loyalty program of the juice bar that opened down the street less than a day ago. People download apps, and they don't understand websites. They have a thousand apps on their screen and would rather swipe through it to find the one app they need for a single purpose. When I read Dan Q's post a few days ago, I was relieved for a second, just to know that I'm not alone. We prefer using websites, and we know most apps are oversized wrappers around a website. But I have to remember that the people with a thousand apps are not the minority. We are. We are the few who would rather use a progressive web app than download a 300 MB wrapper. I'm not prescribing a solution here, just want to remind the web community that outside of our circles, people happily download a 300 MB app that displays information already available on the web.

0 views
Kev Quirk Yesterday

📝 2026-07-14 23:24: I went for an 8km (5 mile) run this evening. I'm working my way up...

I went for an 8km (5 mile) run this evening. I'm working my way up to 10km, but I think this was a little too much, too soon. We'll see how my middle-aged joints are in the morning... 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
DHH Yesterday

Dell is on a roll with the XPS

We've been buying servers from Dell since the 2000s at 37signals, but I was never too impressed with their personal computers. They either felt cheap or enterprisey to me. Like they were made exclusively for people who are handed standard-issue laptops by corporate, and not something discerning techies would buy with their own money. But the new XPS line has completely changed my perception. I've now spent several months with the 2026 XPS 14 and 16, and last week I added the MacBook Neo-fighting XPS 13, and all I can say is that these machines are fantastic! Great chips, great screens, great build quality. Superb packages. Which is very satisfying to see because there are few American business leaders I respect more than Michael Dell. He's been running his company for over forty years now, and he's still calling the shots! So to see the company pull a turnaround like this, so many years into its run, is very inspiring. I've written about the XPS 14 before, and as I noted back in April, a good portion of the credit for these new Dell machines being really good belongs to Intel. The 18A process is paying big dividends for both companies (and the rest of the PC makers). But Dell could still have stuck these chips into forgettable machines, and I wouldn't have had any interest. In fact, they did! Just last year, for the 2025 model year, they shipped new XPS machines with awful capacitive-touch function and esc keys. Two years after Apple had finally thrown in the towel on the ill-fated Touch Bar on their MacBooks! Dell also killed the XPS branding last year, and went with the truly uninspired Plus/Premium/Pro copycat branding. Like some cheap Chinese knockoff. It was embarrassing, to be honest. But unlike Apple, which introduced that cursed Touch Bar back in 2016, and then crammed it down everyone's throat for seven long years, Dell rebooted this nonsense almost immediately. Gave us back real function and esc keys, and revived the XPS branding. You could argue that they should have learned from Apple's mistakes to avoid their own, but the next best thing is surely a quick reversal. And what a reversal it's been. As I said, I've spent months using an XPS 14 as my main machine. It's been so good I even gave up on using a dedicated desktop machine. Now I just run everything off the XPS 14, connected to an Apple XDR 6K 32" (nobody has yet managed to beat this, and I've owned it for years). It's a great, simple setup. The XPS 14 is an expensive machine, though. Not more so than its direct competitors, but still, at $2,799 for the 358H/32GB/1TB/OLED unit, it's a lot. I'd spend that in a heartbeat, but not everyone is going to drop that kind of cash on a laptop. Especially if they already have a powerful desktop. That's where the new XPS 13 comes in. It's part of the PC industry's answer to Apple's new MacBook Neo, which analysts all thought would catch the other side flat-footed. Well, surprise, it didn't! Apple charges $699 for an 8GB RAM/256GB SSD Neo, whereas Dell wants $699 for 8GB RAM/512GB SSD, and even offers a 16GB RAM/512GB SSD version for $899 (there's no RAM upgrade possible for the Neo). But matching Apple on specs and price wasn't the surprise; it was besting them with a nicer screen and keyboard, and meeting them on build quality. The XPS 13 has a great 120Hz screen (something you don't even get on a MacBook Air at twice the money!), a superb keyboard w/ backlighting (also missing on the Neo!), and weighs 20% less at just 1 kg with every bit as nice an aluminum chassis. Now I'd forgive anyone their skepticism about 8GB RAM and Windows. Microsoft isn't exactly known for creating a responsive operating system on modest specs these days, but who cares, we have Linux! Of course, I've been running Omarchy on this thing for the past week, and it's frankly fantastic. As long as you understand the limitations! The Intel Wildcat CPU uses the same performance cores as the full Panther Lake chip, so single-threaded snappiness is all there, but it only has two of those, and then another four low-powered cores. So six total, but not a mix that's conducive to running big multi-core workloads, like local CI. This is where the XPS 13 meets the moment. As the agent craze has been taking over software development, you might have seen any of the many memes about half-cracked laptops, just so the agents won't halt with a closed lid. The obvious answer is of course to run these agents off a home server in the closet, connect them to something as slim and light as an XPS 13 over Tailscale, and then control it all over SSH. Used like this, you get a machine that runs a browser as fast as anything on the PC (thanks to those full-speed performance cores) while costing a fraction of a new top-spec machine, and having better close-the-lid ergonomics. Win-win-hurray. When I posted my enthusiasm on X about this new XPS 13, I got at least three replies with "Is this an ad???". No. This is not an ad. I bought the XPS 13 with my own money, and frankly, you couldn't pay me any sum to use a laptop I didn't like. I did try Dell's laptops a few years back, didn't like what I saw, and ended up spending a few years using Framework computers instead (they're still great too). I'm simply excited that the PC isn't giving up without a fight. That Linux has been on a run among early adopters. That companies like Intel and Dell are here to keep Apple honest. Competition is great. It was Apple's M chips that rejuvenated the laptop market, and they held a supreme lead for years. So it's lovely to see Intel, Dell, and others actually being ready to meet the challenge from the low-cost Neo right out of the gate. So I tip my hat, once again, to Michael Dell. Forty-plus years at the helm, not too proud to pivot quickly, and now the maker of my favorite Linux laptops. Well done, sir.

0 views

Workshop Basel day one

On this hot summer’s day in Basel, Switzerland, the seventh HTTP workshop started. These events tend to work roughly the same way and the people in the room are also to large extent familiar and known since previous editions. Forty people in a meeting room, where we take turns in doing short talks on HTTP and networking topics, with the following question and discussion session. The rules for the meetings are explicitly Chatham rules, which means that everything I write about the meeting will be sufficiently fuzzy and without many company or personal names. This is not the kind of meeting that can be easily summed up in a short blog post anyway. You really should be here. Present in the room were representatives from all the world’s most prominent and used HTTP deployments: clients, browsers, CDNs, proxies and servers. I’m happy to say that there were also several first-timers. We like fresh blood. (If you think I’m being overly brief or vague about specifics in this post; that is partially on purpose but primarily because I’m a lousy note-taker and mostly write this up after a busy day that also may have involved beer.) After a round of introductions, we started. REST is a set of constraints, and in this presentation it was argued that it can or maybe even should be extended to do more. A number of recent applications like Mastodon/ActivityPub, Bluesky/AT, Matrix, Nostr, IndieWeb, all currently use HTTP to do state synchronization but they all do it differently in their own unique ways. Can REST and maybe HTTP be adjusted to help this for improved interoperability? Looking at the Common Crawl data and comparing data over time, it was observed that responses use the Last-Modified header field more now than they did in the past, and there were great follow-up speculations on why this is so. Data also shows that a large share of these headers present dates that are almost identical to the time the requests were issued. With the cc-lint tool , data was gathered on how HTTP is actually used today, proving that there is work to be done: deprecated headers are used, some headers are done wrong, and many are overly big. This indicates that there are well used both servers and clients out there that would benefit from cleanup. It probably also shows that doing HTTP correctly and all the correct headers is far from an easy task. Another presentation showed data, this time from a well-known CDN, on the impact the existing AI scraper bots have on the Internet from their point of view. It showed that roughly half of the requests and half of the bandwidth are spent by scraper bots. A long discussion followed where the numbers were questioned as maybe the numbers look like this because a sufficiently large number of the “bad AI scrapers” appear as regular users to the classifiers. Speculations of different kinds were made.  As a follow-up from a presentation from a previous HTTP workshop we got to learn how the journey on developing their new HTTP stack has progressed and several fun adventures and lessons from that were shared with the audience. A look into new HTTP API development at Apple . Some discussions and lessons learned from creating new APIs for both servers and clients. We got an excellent walk-through of some details and internals of the Android networking stack. Emphasis was perhaps especially put on ECH and QUIC connection migration, and the final “don’t tell us when your connection closed” led to a long new discussion on how we really should fix the problem: when connection has been left idle for a long time and it is closed by the server, the client (mobile phones) don’t want to be told. This, because getting that RST and more, just wakes up the radio and more on the phone only to tell it to go back to sleep. It was theorized that if we could get rid of this unnecessary battery waste, the accumulated gain across billions of devices would make a serious dent. Several additional HTTP related problems were of course also subsequently solved as we then wandered into the city for dinner and maybe a beer. Of course yours truly returned back to his hotel room in good time to be able to write up this blog post. The best part of these workshops might be the (no pun intended) networking and discussions had completely outside of the agenda. End of day one. Two more to come,

0 views
Unsung Yesterday

Sets of overlapping circles

This is a design joke that always makes me laugh: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/sets-of-overlapping-circles/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/sets-of-overlapping-circles/1.1600w.avif" type="image/avif"> This was made by… someone, a while back, I believe in response to the Twitter logo redesign of 2012, which showed the new logomark as composed of exclusively circles: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/sets-of-overlapping-circles/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/sets-of-overlapping-circles/2.1600w.avif" type="image/avif"> Now, to be clear: that Twitter logo redesign was gorgeous, and I do not particularly care if it was designed out of circles or whatever else. I don’t even think its announcement was presented in a overly pretentious way – it was nowhere near the 2008 bloviating Pepsi redesign or the rank amateurism of Yahoo’s new 2013 logo . It’s just… design can be so pretentious and up its own golden-ratioed ass, and I can’t help but love anything piercing that bubble. (In my perfect, naïve world, Doug Bowman – the designer behind the logo – also finds the joke hilarious!) Also, I feel like design is just not… funny, all that often. Quick, think of any product design joke. See what I mean? I can’t, either. My favourite graphic design joke is “if it’s big and ugly, it’s not big enough.” (You know, it’s funny because it’s sad.)

0 views