Latest Posts (20 found)

Select your starter class

Hello RSS reader! This post contains an interactive feature. Please visit the canonical web page for an optimal viewing experience :) At the risk of pissing on people’s chips I figured it’d be helpful to illustrate the three classes of AI user I’ve identified in the slopageddon. You might be thinking: “Hey, those personas are all negative!” — and you’re absolutely right! Believe me, I’d love nothing more than to shut up about “AI”. The thing is, not a week goes by without one of my peers crying out in abject despair. Until the grifters cease spitting in my face and threatening my career, please allow me to extend a middle finger their way. I’m working on more positive plans that I hope to announce soon(-ish). Makes sense to be more proactive and spend energy where it matters. Not that this post didn’t! I enjoyed a few technical challenges artworking the page. Images used with modifications: Chalk Outline by Simon Child from Noun Project (CC BY 3.0) Hand by Elisa Pintonello from Noun Project (CC BY 3.0) Zombie by Hamstring from Noun Project (CC BY 3.0) Previous Next Thanks for reading! Follow me on Mastodon and Bluesky . Subscribe to my Blog and Notes or Combined feeds. The Grifter Dabbles with free chatbots Chuckles at social media slop Forced to endure a work mandate Never consented to any of this Helpless to the human toll Bends the knee to Big Tech Lives by “AI is inevitable” mantra Anthropomorphises their chat box Ignores self-inflicted deskilling Gambles with house money Flogs AI and AI paraphernalia Will not take “no” for an answer Dehumanises the effect of AI Idolises the techno-fascists Revels in gaslighting

0 views

Experiences with local models for coding

Birgitta Böckeler now reports on her recent experiences trying local models for coding. She compares them using two standard tasks, and tries out the most promising model for day-to-day use.

0 views

Now Go Build CTO Fellowship: Season 2

Today, we're releasing the second season of the Now Go Build documentary series. Five episodes featuring technology leaders from around the world solving the hardest problems in healthcare and education.

0 views

Wiping my computer

Today I wiped my MacBook Pro to factory defaults. I love the feeling of a freshly wiped computer, a blank slate to start fresh with. A chance to break away from bad file organization habits, remove unneeded login items and cleanup the menu bar. A hope that my now ancient M1 Pro can still be productive (especially when my new iPad absolutely smokes it). Thanks to iCloud, setting up a fresh copy of Mac OS is very fast. I’ve been pushing myself to stick with default apps more, so most things just resume syncing right away (Reminders, Notes, Calendar, Mail, Messages, iCloud Drive, etc). Outside of the defaults, I’m being intentional with what gets installed this time around. I’d like to have a max of 1 app in each category (ie not 5 code editors). I’m replacing iTerm with the stock terminal, Zed with Nova, Claude with Antigravity CLI, Fish with the default Zsh install. Here’s to a fresh start install!

0 views

sqlite-utils 4.0, now with database schema migrations

This morning I released sqlite-utils 4.0 , the 124th release of that project and the first major version bump since 3.0 in November 2020. In addition to some small but significant breaking changes (described in this upgrade guide ), this version introduces three major features: database migrations , nested transactions (via a new method), and support for compound foreign keys . Schema migrations define a sequence of changes to be made to a SQLite database, plus a mechanism for tracking which migrations have been applied and applying any that are found to be pending. Migrations are defined in Python files using the sqlite-utils Python library , which includes a powerful method providing enhanced alter table capabilities that are not supported by SQLite's statement. ( implements the pattern recommended by the SQLite documentation - create a new temporary table with the new schema, copy across the data, then drop the old table and rename the temporary one in its place.) Here's an example migration file which creates a table called , adds an additional column to it in a second step, then changes the types of two of the columns in a third: Save that as and run it against a fresh database like this: Then if you check the schema of that database: You'll see this SQL: The table is used to keep track of which migration functions have been run. The table above is the schema after all three migrations have been applied. To see a list of migrations, both pending and applied, run this: If you don't specify a migrations file, the command will scan the current directory and its subdirectories for files called and apply any instances it finds in them. You can also execute migrations from Python code using the method, which is useful for building tools that manage their own database schemas over multiple versions. My own LLM tool has been using a version of this pattern for several years now, as shown in llm/embeddings_migrations.py . My favorite implementation of this pattern remains Django's Migrations , developed by Andrew Godwin based on his earlier project South . Fun fact: Andrew, Russ Keith-Magee, and I presented our competing approaches to schema migrations for Django on the Schema Evolution panel at the very first DjangoCon back in 2008! My attempt was called dmigrations , developed with a team at Global Radio in London. Django's migrations can be automatically generated from model definitions and include the ability to roll back to a previous version. The approach is deliberately simpler: unlike Django, encourages programmatic table creation rather than a model definition ORM, so there isn't anything we can use to automatically generate migrations. I decided to skip rollback, since in my experience it's a feature that is rarely used. With a SQLite project, an easy way to achieve rollback is to create a copy of your database file before you apply the migrations! The design of migrations is three years old now - I had originally released it as a separate package called sqlite-migrate , which never quite graduated beyond a beta release. I've used that package in enough places now that I'm confident in the design, so I've decided to promote it to a feature of to make it available by default to all of the other tools in the growing sqlite-utils/Datasette/LLM ecosystem. I made one last release of , which switches it to depend on and replaces the file with the following: Any existing project that depends on should continue to work without alterations. Here are the release notes for this version, with some inline annotations: The 4.0 release includes some minor backwards-incompatible fixes (hence the major version number bump) and introduces three major new features: I think of migrations as the signature new feature, hence this blog post. has long had a confused relationship with database transactions, partly because when I started designing the library back in 2018 I didn't yet have a great feel for how those worked in SQLite itself. Adding migrations to the core library made me determined to finally crack this nut, since transactions make migration systems a whole lot safer and easier to reason about. I ended up building this around a context manager which looks like this: SQLite supports Savepoints , and as a result can be nested to carry out transactions inside of transactions. It's pretty neat! This came about when I asked a coding agent to review all open issues and PRs for things that should be included in a 4.0 release since they would represent breaking changes if I added them later, and it correctly identified that compound foreign keys were exactly that kind of feature. I started with a breaking change to the table.foreign_keys introspection method, and then decided to see if Claude Fable 5 could handle the more fiddly job of integrating compound foreign key creation into the library. The API design it helped create felt exactly right to me - consistent with how the rest of the library worked already. Other notable changes include: This was the change that first pushed me to consider a breaking-change 4.0 version bump. I built this to help support sqlite-chronicle , which uses triggers to keep track of rows in a table that have been inserted, updated or deleted. Probably the most disruptive breaking change - I've had to update a few places in my own code to switch from to as a result. The flag was a later addition to allow column types (text, integer, real) to be automatically detected based on the data in a CSV. It should be the default, and releasing a 4.0 means I can make it so. The oldest issue addressed by this release - the underlying bug was opened (by me) in October 2020. See Upgrading from 3.x to 4.0 for details on backwards-incompatible changes. The detailed release notes for the features and fixes shipped during the 4.0 pre-release cycle are available in 4.0a0 , 4.0a1 , 4.0rc1 , 4.0rc2 , 4.0rc3 and 4.0rc4 . The upgrade guide was entirely written by Claude Fable 5, Claude Opus 4.8 and GPT-5.5. The same is true of the release notes. This is the kind of documentation I've slowly become comfortable outsourcing to the robots. It doesn't need to convince people of anything, or express any opinions - its job is to be as accurate and detailed as possible. I've reviewed the release notes closely and can confirm they are accurate and comprehensive. I released the first alpha of sqlite-utils 4.0 over a year ago . I've been dragging my heels on the stable release because of the amount of work it would take to track down and clean up the many other minor design flaws that a major version number allowed me to take on. Assistance from Claude Fable 5 (and to a lesser extent Opus 4.8 and GPT-5.5) gave me just the boost I needed to overcome inertia and make the most of the time I could afford to spend on this library. Fable has really good taste in API design, and is relentlessly proactive if you give it a more open goal. My most successful prompt was a review task that I issued against what I thought was the last release candidate: I tried this with GPT-5.5 xhigh in Codex Desktop and Fable 5 in Claude Code. GPT-5.5 wrote 5 Python scripts and didn't turn up anything particularly interesting - its final report is here . Fable 5 wrote 12 scripts , identified 4 release blockers and 10 additional issues in its report , and built a neat combined repro script , which, when run, output the following: I found myself agreeing with almost all of them. Here's the PR with 16 commits where we worked through them in turn. There's no doubt in my mind that sqlite-utils 4.0 is a significantly higher-quality release than if I had built it without the assistance of the latest frontier models. You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options . Database migrations , providing a structured mechanism for evolving a project’s schema over time. ( #752 ) Nested transaction support via , plus numerous improvements to how transactions work across the library. ( #755 ) Support for compound foreign keys , including creation, transformation and introspection through table.foreign_keys . ( #594 ) Upserts now use SQLite’s syntax, detect existing table primary keys automatically and reject records that are missing required primary key values. ( #652 ) now executes immediately and rejects statements that do not return rows; use for writes and DDL. CSV and TSV imports now detect column types by default, while inserts into existing tables preserve those tables’ column types. ( #679 ) and no longer create lookup table records for all- values. ( #186 )

0 views

📝 2026-07-07 18:43: Guinea fowl keets are doing great too. All 5 are loving life with their foster...

Guinea fowl keets are doing great too. All 5 are loving life with their foster mums. 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

📝 2026-07-07 18:34: We now have 3 chicks - two white and one black.

We now have 3 chicks - two white and one black. 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

Let AI Burn

If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of NVIDIA , Anthropic and OpenAI’s finances , and the AI bubble writ large (updated to version 3.0 a few weeks ago). My Hater's Guides To the SaaSpocalypse , Private Credit and Private Equity are essential to understanding our current financial system, and my guide to how OpenAI Kills Oracle pairs nicely with my Hater's Guide To Oracle . This week, I published the Hater’s Guide to Softbank — a sordid tale of tech’s most degenerate gambler, who, thanks to a couple of early lucky wins, has managed to set the foundations for the AI bubble’s biggest (and possibly most gratifying) downfall. And, on Friday, I’m going to take a deep dive into the memory industry — and the reason why you can’t afford a new gaming PC.  Subscribing to premium is both great value and makes it possible to write these large, deeply-researched free pieces every week. Soundtrack: Mastodon — Streambreather No bailouts, no handouts, no special treatment, no tax breaks, no CHIPS act, and no sovereign wealth fund. It is time to tell the AI industry to go fuck itself, because it’s effectively done the same to the rest of society. This industry is unworthy — a sham conjured up by a tech industry that’s run out of ideas, a trillion-dollars’ worth of manufactured consent and entirely-avoidable financial crises — and should not be protected under any circumstance.  Every single time you hear somebody discuss “bailout” or “too big to fail” or “sovereign wealth funds,” know that this is the industry, on some level, attempting to create the air that it cannot die , when in fact every one of these companies is just as weak and brittle as any other startup. I also think that the media — and the world at large — is too ready to accept the prospect of a bailout after watching those who drove the world into a ditch in 2008 escape blame, and I must be clear: the AI industry is very different to the financial industry. It is inessential to the economy, and its relevance is only as large as the hype campaign that sits behind it.  This is an industry of losers that has inflated only because of the joint manufactured consent of Silicon Valley, the mainstream media, and an enshittified stock market that rewards grifting and circular financing . OpenAI had $5.7 billion and Anthropic a little under $5 billion in the first quarter of this year — and those revenues mostly came from companies that were burning AI tokens at a horrendous rate because they’d just been forced to pay the actual cost of AI — and now everybody’s pulling back on that spend .  Generative AI will not bring us AGI, nor does it do much of what we associate with artificial intelligence. It is not autonomous. It is not “intelligent.” It does not have thoughts, or “knowledge,” and no matter how many layers of harnesses and scripts you put on top of it, it is still ( per OpenAI ) mathematically certain to hallucinate. I estimate that at least 70% of the entire AI industry’s revenues are made up of OpenAI and Anthropic’s compute spend , and as both companies are horrendously unprofitable, this means that the AI industry is, for the most part, venture capitalists funnelling money to hyperscalers so that they can funnel that money to NVIDIA or data center capex. If this software were worthy, it would stand on its own two feet. It wouldn’t need circular financing and a cult of personality to prop it up, either. If it were truly special, there wouldn’t need to be an army of crazed acolytes that attack you for not pledging yourself to the graveyard smash. There has never been a tool or product in history sold with such hysteria and aggressive monocultural force that has ever turned out to be anything more than a grift. Some people have developed unhealthy relationships with large language models (LLMs) and the companies that make them, and that, not any certainty or proof of Artificial General Intelligence (AGI), is what motivates them.  This software is uniquely dark, both in what it unlocks in some people through its use and in the sense of the entities that sell it. Some people are in genuine awe of each of the rotation of clammy, soulless pod-people that saunter out of Anthropic every few weeks. Each one sounds a little weirder, more cultish, more disconnected from the real world. Silicon Valley may believe itself atheistic, but Anthropic has a worrying sense of fanaticism, both in the people that work there and its fanbase. Imagine the absolute worst fanbase of a video game possible, and then add layers of financialization, grifting and high school drama laced with pseudo-religious attachment. All for a fucking app!  Please, people. Nobody in the real world cares about “loops.” Nobody is thinking about tokenization. If you said inference to a guy on the street they’d take you to see a doctor. Nobody gives a shit. They don’t know what OpenClaw is either. Grow up. Go outside. You sound like a lunatic. Does your mother know how many Claude 20x accounts you have? It’s obsessive!  Anyway, the only reason that AI has any presence in our economy is that Microsoft, Google, Meta, and Amazon are intent on spending more than $765 billion in capital expenditures in 2026 and a trillion more in 2027 because they have no other hypergrowth ideas, even though generative AI has yet to show any real potential as something that can drive meaningful revenues (let alone profits), as evidenced by the fact that none of these companies break out their actual AI revenues , a point I made on CNBC late last week .  Google does not have the next Google Search, Microsoft does not have the next Microsoft Office, Meta does not have the next Facebook, and Amazon does not have the new AWS. That’s why they need you to believe that AI is a big deal without them ever having to prove why outside of capital expenditures. They want you to assume that all this money can’t be wrong , even though when you remove OpenAI and Anthropic ( who represent 89% of the revenues of the largest AI companies ) the AI industry is, at best, pulling in $20 billion in annual revenue. And lord do they want you to say “it’s early,” and that it’s just like the Dot Com Bubble , all so that you’ll either accept AI as your lord and savior or, alternatively, help justify one of the largest misallocations of capital in history as “building useful infrastructure.” Newsflash! AI GPUs are useful for generative AI and not much else. Every “innovation” in LLMs has only been made possible by throwing billions of dollars at the problem either in headcount or compute costs — every ounce of talent in the tech industry, every bit of media attention, every dollar of capital expenditures, all focused on one industry that has successfully created LLMs that are more expensive and significantly less useful than human beings .  The reason every AI person speaks in pie-in-the-sky hypotheticals is that the actual outcomes are decidedly mediocre when you compare them to their ruinous costs. Anthropic and OpenAI raised (assuming the rounds completely close) over $300 billion in 2026 alone, and take up the vast majority of available AI compute. They need you to speak in the future tense, because nothing — absolutely nothing — about what’s been created so far justifies even a fraction of its financial and infrastructural cost. When the AI bubble bursts, none of this infrastructure will be particularly useful. As I said in my premium about how this is worse than the Dot Com Bubble , GPUs are not fiber optic cable , and when the bubble bursts, NVIDIA chips will either be sitting in the coffers of the largest tech companies in the world, held by asset managers, or auctioned at a steep discount by creditors. These are not going to be useful for hobbyists, nor will they be cheaper to run, nor will incomplete data centers be cheaper to finish. The Dot Com era fiber overbuild was a result of a complete misread of demand signals, per Justin Kollar : It’s tempting to compare this to GPUs, but it doesn’t make sense at all!   You see, internet demand was a result of people wanting to get online and use the internet, with the leftover “useful infrastructure” having a blatantly obvious use case after the bubble burst, albeit one that took a lot longer to arrive than investors had hoped. There was no question about how that gear might be used or for what purpose one used fiber optic internet or networking gear, nor was there any question as to the underlying business model of offering an internet connection might mean.  We were also fairly early, and internet speeds were atrocious. In 2000 , only 52% of American adults were using the internet, and by 2003, that number had only increased to 61%. Per the World Bank , in 2005 only 16% of the world used the internet, and in 2024, that number had increased to 71%. When the internet was connected to via a 56k modem, access was charged by-the-minute, and obviously much, much slower than even the primitive (though expensive) broadband connections of the day.  While we’re used to connecting at speeds that make using a web-based app near-indistinguishable from one that runs on our computer, back in 2000, 2001, or 2002, the average US internet speed was, at best, 400 Kilobits/s , or roughly 50 kilobytes a second, compared to the average US internet speed of over 200 Megabits per second , or 25 megabytes a second.  Generative AI, on the other hand, is fucking everywhere , and anyone with an internet connection experiences it in effectively the same way. It’s non-consensually available in effectively every app — every Facebook, Google and Microsoft account, for example — and every media outlet known to man has mentioned AI multiple times since 2023. OpenAI and Anthropic might claim they need more data centers, but it’s unclear what “more data centers” actually achieves other than propping up NVIDIA and giving hyperscalers something to invest in.  A lack of data center capacity isn’t holding back people from using generative AI, nor is it stopping anybody from launching a product, nor can anyone actually express what it is that they’re being built for other than “reasons for Anthropic and OpenAI to spend money.” Anthropic’s supposed lack of compute did not stop it training or launching Mythos or Fable, and when it bought hundreds of megawatts of compute from SpaceX , the biggest news was that it expanded rate limits to allow users to burn $8,000 worth of tokens for $200 a month . Nothing about the painfully slow pace of data center development appears to be restraining a single AI company, outside of hyperscalers complaining they could’ve made more money from either Anthropic or Meta . In fact, the entire argument for more data centers appears to be “we need more compute so that people can buy it” far more than any cogent position around what these capacity shortages actually mean.  Who are the companies lining up to spend billions of dollars of compute — or, to be more specific, spend $435 billion or more to justify the $1 trillion in GPU sales that NVIDIA claims it’ll have by the end of 2027 ? That’s how much demand we’ll need. As NVIDIA intends to sell over a trillion dollars of Blackwell and Vera Rubin GPUs by the end of 2027 , it needs to have around (assuming a PUE of 1.35) 40GW of data center capacity built to support the 30GW+ of GPUs it will have sold . At about $12 a megawatt of critical IT (IE: the stuff in the data center that runs AI compute, and not everything else, like the cooling systems and any transmission loss), that’s $435 billion.  OpenAI estimates it’ll spend $50 billion on compute in 2026 , and Anthropic will likely spend comparable amounts. Otherwise, the only other player — outside of Microsoft, Google, and Amazon renting ( or backstopping ) capacity for Anthropic and OpenAI — with any meaningful compute spend is Meta (with Nebius and CoreWeave )... and Bloomberg is reporting that Meta is planning to start selling its compute because it doesn’t need all of it .  You’ll be shocked to hear that it might be renting some of that capacity… to Anthropic . Now NVIDIA is agreeing to financially backstop young cloud providers buying their GPUs by promising to rent back any unused capacity, yet another sign that actual, real demand does not exist at scale . AI boosters with black mold problems will say “this is just to help them raise debt,” to which I say “If the demand actually existed in any provable way, NVIDIA wouldn’t have to pay its customers to buy its products!”  Anyway, my larger point is that there was real demand during the dot com bubble, and LLMs’ demand appears decidedly artificial outside of OpenAI and Anthropic, who cannot afford to pay without unlimited venture capital funding.  This shit isn’t going to become magically cheaper once the bubble bursts, and considering the demand doesn’t appear to be there at scale with two-thirds of all venture capital funding focused on AI , I’m not sure what people expect to happen. Right now is the number one time in history where we should see near-infinite demand for compute across every single surface, and way more deals for compute capacity for companies other than the same four or five companies. Right now, as I’ve discussed before , Anthropic and OpenAI take up the majority of compute, leaving the rest of the world to fight for the leftover scraps, and because data centers take 18 to 36 months to build , capacity is taking forever to come online to fill the indeterminately-large amount of demand that remains. Nevertheless, said demand can’t be that large, otherwise we’d A) have other companies trying to build their own compute (other than Poolside, which failed to raise money to do so ) and B) massive remaining performance obligations — hundreds of billions of dollars’ worth — rather than the grim truth that 50% of hyperscaler RPOs are from Anthropic and OpenAI , inflating obligations by $448 billion, hiding the fact that Microsoft’s RPO growth is flat year-over-year and Amazon’s is only growing at a modest 20% when you remove Anthropic and OpenAI’s hundreds of billions of dollars’ of compute spend. Google’s is a little messier, as it’s hard to parse exactly how large its deals with Anthropic are thanks to its backstops and circular deals around Anthropic and its TPU chips . There’s also the compelling question as to what it is that anyone would be picking up once the bubble bursts. Demand for AI services is a direct result of the entire media, tech industry and venture capital ecosystem manufacturing consent for the use of LLMs, forcing them into every corner of every experience, something that will most decidedly end once the stock market and investors cease incentivizing it.  Once every media story isn’t about AI, once every Business Idiot with AI psychosis stops posting about it every day, when everyone stops asking about your AI strategy or wanking on about “sovereign AI,” it’ll become blatantly obvious that the actual demand for AI was not particularly strong. We have little compelling evidence that providing any inference-based services is profitable, which means that even if open source AI outlives the frontier AI labs, it’s unclear who would actually power the infrastructure. People can come up with however many weird blogs where they’ve done some napkin maths to try and extrapolate a potentially profitable inference provider, but I’ll only believe that one is profitable when someone shows me some fucking profit. And to be clear, without that profit, it’s unclear why anyone would offer these services at all. When you rent out a GPU cluster, you do so based on anticipated demand and the quality of service you want to provide. If you order too much, you’ve got a bunch of fallow capacity you’re paying for (and will lose money on), and if you order too little, you’ll have either unstable services or money left on the table…and even then, it’s unclear how profitable that would be.  AI demand is, at this point, a direct result of societal pressure and non-consensually overwhelming customers with AI features. While there are people that like and pay for ChatGPT or Claude, those who do so on a subscription basis are doing so because they can get $30 to $40 of compute for a dollar . The vast, vast majority of AI compute demand is from services provided to people either for free or sold at such a massive discount that it’s impossible that anyone on a $20 or $200-a-month plan could even afford these services had they paid their actual token cost. To paraphrase Cory Doctorow, your demand is based on selling $40 for a dollar. That’s not a real business, nor is that organic demand. One could argue that “these services will become cheaper,” but that would require them to… become cheaper. More compute isn’t (and hasn’t) lowering the cost of AI. Newer GPUs aren’t lowering the cost. Barely-tested Broadcom GPUs , Amazon Trainium XPUs, and Google TPUs aren’t lowering the costs. Even if they were to somehow magically do so in the future, what do we do with the H100, H200, B100, B200, B300 or AMD GPUs? Melt them down for scrap? Steal the RAM? Build a GPU fort?  The Dot Com (and, by extension, telecom) Bubble was never a question of whether the internet was a useful thing that people would pay for , nor were there journalists and dodgy studies that desperately pleaded with us that AI is here, and it’s real.  Everybody has access to AI now! They can all see it and use it if they want to, and they’ve got lots and lots of ways to pay for it! Maybe the reason that AI revenues are so putrid is that they don’t really have any reasons to pay for it, either because the free services do most of what they need (IE: google searches) or subsidized subscriptions that cost $200 a month allow them to burn as much compute whipping up HTML-based calorie tracking apps that get two users. Every time I read somebody on Twitter say that “we’re early” or that “most people haven’t even tried agents” I feel like screaming. Motherfucker, everyone is talking about agents in every single media property all the time . AI boosters will refer to literally any AI feature as an agent, even if it’s a basic web search or generating code. The reason that most people are kind of “meh” about AI is that it doesn’t do things that they associate with AI (autonomously and automatically taking care of the things they need with little prompting or coaxing), everybody knows it hallucinates, and AI data centers are horrifying monoliths of capital that get massive tax breaks, use a ton of water , belch toxins into the air , and are being built by faceless corporations, ultra-oafs like Kevin “Mr. Dogshit” O’leary , or charmlessly damp Valley elitists like Altman and Amodei. Every single person freaking out about “what if China does AI better than America” is living in a child’s fantasy. Oh no! China might get Mythos-level AI? Bad news folks! Anthropic itself already admitted that cheaper models — including Claude Haiku 4.5 and Kimi K2.7 — were able to identify the very same vulnerabilities as Fable (so, Mythos with guardrails).  China has cheap power, data center capacity, and NVIDIA’s Blackwell GPUs . The thing that everybody is scared of has happened already, and you know what else happened? Nothing, because they, like American AI labs, are building LLMs. The only thing that American labs are scared of is cheaper open source Chinese models offering similar performance to their premium products , something that has also already happened.  Remember: the only people that can afford to build data centers are either hyperscalers ( that are now having to fund the buildout with debt as their cash flow turns negative ), Oracle ( which will die if OpenAI can’t pay it ), unprofitable neoclouds , and land speculators. AI data centers are massive, expensive operations, and raising money to finish (or furnish) one after the bubble bursts will be very, very difficult. I realize that everybody wants there to be a happy ending after all of this collapses. I get that it’s easier to think of things in familiar terms — even if said terms involved a 77% drop in the NASDAQ — because there was something good and nice at the end. But doing so only serves to help protect the interests — and brands! — of venture capitalists, asset managers, private credit funds , hyperscalers, captured tech and business journalists and sell-side analysts that insisted on ignoring every warning sign and waving away problems by 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 ),” or simply saying that “yes it’s a bubble, but bubbles lead to great industries.” GPUs aren’t dark fiber! GPUs aren’t fucking railroads! GPUs are GPUs! They are used for basically one thing ! And that one thing lacks meaningful demand outside of subsidized services and circular financing!  And now people are discussing a bailout like this is 2008, and I must be clear how different this is, and how little it resembles the Great Financial Crisis! The AI industry has demanded everything from us — more money than has ever been invested, more power than anything has ever needed, the stolen works of millions of hard-working creatives , so many GPUs and so many data centers that it’s causing a global supply chain crisis and a new class of RAM and storage-based inflation , the majority of venture capital funding ,  and constant attention focused on an endless campaign of fear-mongering with the express intention of hyping a technology based on a mixture of mysticism and outright lies — and still, even as we enter the late innings of the bubble, it wants more.  Capital-hog Sam Altman has floated the idea of handing 5% of OpenAI to the US government , a stake worth around $42 billion, claiming that (to quote the FT) “...giving the public a financial stake in the company is the best way to share the upside of AI,” failing to note what said upside might be, likely because there isn’t one unless “the public” refers to “the shareholders of OpenAI.”  It isn’t clear how this would happen, outside of it requiring congressional approval as a result of the Takings Clause of the Fifth Amendment , which states that “private property [can’t] be taken for public use without just compensation,” meaning that the US government would likely have to buy the stock at whatever valuation it considered “just.”  Yet the FT had one other interesting tidbit — that Altman is suggesting that whatever this is would “...would involve other US AI companies handing over a similar stake, although it is not clear if the other labs would be willing to do so”: This is, just to be clear, not a bailout. Even though it’s blatantly obvious that Altman wants to cozy up to the Trump Administration and, he hopes, get $42 billion of funding to attach his questionably-valued quasi-startup, $42 billion is $8 billion less than OpenAI will spend on compute in 2026 , and considering OpenAI has projected to burn $852 billion through the end of 2030 , that 5% stake would only exist to prolong the inevitable. You see, a bailout usually has an endpoint — a time at which the company in question no longer needs the funds.  So, let’s be clear about something : we’re actually in several bubbles at once. The great financial crisis, by comparison, was two major bubbles (per my piece on how AI Isn’t Too Big To Fail from a few months ago) — the over-investment and speculation on mortgages (both subprime and otherwise), and the collapse of the commercial paper (a type of loan) market that kept much of the banking system functioning, which was the real “Too Big To Fail”: Commercial paper was, at the time, often paid off using more commercial paper, and when AIG’s credit rating dropped in the middle of September 2008 , it was unable to roll over its debt (by which I mean “get new commercial paper to pay off its old commercial paper”), and money market funds like Fidelity couldn’t even buy it anymore because it wasn’t investment grade, which meant that AIG couldn’t pay back its loans.  While I won’t recount the entirety of the premium (mostly because it’s super long), AIG was deemed “Too Big To Fail” because it would’ve exploded the markets had it done so. Michael Lewitt, an economist and money manager, described a hypothetical AIG failure as being “as close to an extinction-level event as the financial markets have seen since the Great Depression” in a New York Times op-ed: Yet the real “Too Big To Fail” was far quieter and more malignant, taking the form of trillions of dollars funnelled to banks: The banking system ran (and still runs) on overnight facilities like the federal repo market, where financial institutions offer up collateral — like, say, mortgages — as a means of funding their day-to-day operations. Previously, money market funds were the lenders in the repo market…except they were now a little hesitant to take that collateral, which forced the government to step in with the PDCF (which traded risky, frozen assets like subprime mortgages for cash to avoid a default) and the TSLF (which traded risky bonds for US treasuries). Absolutely nothing about these facilities or anything to do with “too big to fail” were to do with stabilizing the stock market, which was effectively cut in half , with unemployment spiking to 10% . These measures existed exclusively to protect the financial system, with only $46 billion (about 10%) focused on trying to save homeowners from foreclosure , and in the end, to quote a congressional panel from 2009 , “...the panel sees no evidence that Treasury has used TARP funds to support the housing market by avoiding preventable foreclosures.”  The Troubled Asset Relief Program (TARP) spent over $400 billion to bail out the banks, financial institutions and auto industry that would’ve collapsed as a result of an economy-wide lending freeze. Nobody went to jail, nothing really changed, and banks still don’t have to keep reserves thanks to changes made around COVID. By comparison, OpenAI and Anthropic are systemically irrelevant, much like the rest of the generative AI industry. While their existence supports the overall symbolic value of the US stock market, their actual economic presence is minor, outside of what I estimate is around $75 billion to $100 billion of 2026 compute spend and what will likely be around $60 billion of combined revenue, with the rest of the AI industry having so little that it’s barely worth thinking about. It’s also unclear what you’d bail out, unless the plan is to feed them capital for all eternity until they work out how to run a functional business (so, forever). Neither of them have significant debt — and Broadcom is backstopping $30 billion of Anthropic’s $35 billion TPU deal with Apollo — and their equity positions (outside of SoftBank, which I’ll get to) are only load-bearing to venture capitalists in the sense that their fund vintages will painfully sour if they’re unable to go public.  There is no avoiding the carnage to come, outside of there being somewhere in the order of ten to a hundred times the demand for AI compute by 2030 that exists today, which would require AI compute to be larger than the $779 billion that the software industry earns annually .  There is no bailout that can reverse the trend once demand wanes for NVIDIA’s GPUs after hyperscalers reduce their capex, which will in turn kill the revenues of Taiwanese ODMs that build AI servers for hyperscalers , which will in turn kill the revenues of RAM and storage companies, which will lead to a prolonged depression throughout a semiconductor industry addicted to hopium peddled by a tech industry ruled by Business Idiots that have no idea what to do other than hire people, fire people and spend money .  As I’ve said many times, people are conflating massive capital expenditures — invested through debt-fueled data center speculation and hyperscalers bereft of hypergrowth ideas — with real, diverse and consistent AI demand, pumping valuations based on vibes rather than reality , which means that when vibes take a violent, permanent shift, nobody has anything to point to as a means of turning people’s frowns upside down. The collapse in value of AI startups wouldn’t be changed by a bailout unless the US government literally invested in worthless startups as a means of propping up venture capital, and said “bailout” would number in the hundreds of billions of dollars, and while I know you’re gonna say “ohhhh Trump is so corrupt oooh Trump will do this Trump will do that,” this is not a rational or logical or even historically-accurate thing to say.  Trump cannot simply mobilize $50 billion or $100 billion. It will go through the House and the Senate, and any bailout of the AI sector would be an incredibly-unpopular decision, infuriating not just those on the left who’ve grown tired of Big Tech, but with those Republicans that pretend to care about working Americans or fiscal probity.  As a reminder, the first vote of the 2008 bailout failed, with Republicans and Democrats each fairly split on how they felt about the bill — and that rejection happened during a time when the US financial system was quite literally falling to shit.  As far as the data center bubble goes, the government is absolutely willing to let unfinished or abandoned properties lay dormant. In the final quarter of 2008, 11% of US homes were empty , or 15% if you include vacation homes.  Banks that have invested in data centers that have yet to be built (or start construction) can (and will) resell the land, though likely at a loss, and land retains value even if you haven’t built a giant warehouse full of GPUs that only lose money. There isn’t a need for a bailout here, and one won’t be forthcoming. After the Global Financial Crisis, builders were allowed to collapse to the extent that the number of construction firms halved in America between 2007 and 2012 . You could argue that Trump “will just do that this time,” or that he’ll “get a bribe” or something, but is that really the best you’ve got? Scary stories about the President? If every answer you have is “but Trump will just do it,” you’re not analyzing, you’re catastrophizing.  And, most crucially, the vast majority of big tech will be fine, at least in the short term, when the bubble bursts. NVIDIA will likely cease being the largest company on the stock market, and the Magnificent Seven will have a dramatic fall from grace, but outside of unforeseen horrendous financial decisions, the worst I could see would be impairments for Microsoft, Google, Meta, and Amazon, and SEC action against NVIDIA if it did actually sell GPUs to China. This doesn’t mean that things won’t fucking suck for anyone in the market, nor that the vast majority of people won’t fucking suffer as they always do when bubbles burst.  Which is why I am making a firm, clear statement to end this piece. I repeat myself: No bailouts, no handouts, no special treatment, no tax breaks, no CHIPS act, and no sovereign wealth fund. It is time to tell the AI industry to go fuck itself, because it’s effectively done the same to the rest of society. These companies must be forced to stand on their own two feet and die with dignity if their wretched business models can’t keep up. The world’s governments have rolled on their backs and shown their bellies to the tech industry for far too long, and have been aggressively conned by some of the richest people alive into believing that fucking Sam Altman and Dario Amodei are building anything other than the world’s least-profitable software.  We do not need a “sovereign AI strategy,” nor do we need “a sovereign AI wealth fund,” nor do we need to “make sure America leads in AI,” at least not when we’re talking about large language models, the underlying technology of ChatGPT and Claude, two of the most over-hyped and deceptively-marketed pieces of software in history.  Whether or not LLMs are a useful tool is irrelevant, because the AI industry has demanded the world hand it as much land and money and as many resources as it desires to continue proliferating a technology that has only ever lost money and has no path to sustainability. The only reason it has gone anywhere is because the tech industry has united around it as a means of hiding from the fact it has no next big thing , and nothing — absolutely nothing — that a LLM can do remotely justifies the investment. And it has only got this far because of a captured business and tech media overstating its capabilities and hand-waving its obvious efficacy issues and economic instability. There are too many that have proven easily-wooed by whimsical white boys that promise they’re building machine intelligence, and when the markets bleed red, these people should know that they’re responsible. So much of the so-called journalism around AI has been used to enrich the already-rich and inflate a bubble that will hurt hundreds of millions of regular people globally as Sam Altman and Dario Amodei remain billionaires despite their companies’ fates. When the time comes, the AI industry must burn. It must be allowed to die. Generative AI has already been given far too much money, oxygen and attention, and if it cannot survive without continual venture capital and media coddling, it is unworthy and unnecessary, and must face the cold, hard reality that every regular person faces when they fail. And there is no “bailing out” these wretched firms. Giving $42 billion to OpenAI or Anthropic will not fix their business models, nor will it magic up the $400 billion or more in annual revenue to substantiate just NVIDIA’s AI GPU sales through the end of 2027.   These people are not building the future — they’re finding ways to re-entrench the status quo, to give Microsoft, Google, Amazon and Meta ways to grow their revenues and centralize infrastructure under the auspices of “innovation.”  If any policy makers read this, know that you’ve been had by the AI industry. They want you to believe they’re essential so you’ll bail them and their rich friends out when the time comes, or funnel taxpayer funds into building them data centers. They are not building autonomous intelligence, nor will they ever do so.  I think it’s fanciful to imagine that there would ever be actual consequences for this bubble, but if there are, the people to hold responsible are Sam Altman, Dario Amodei, Satya Nadella, Sundar Pichai, Andy Jassy, Jensen Huang, Mark Zuckerberg, and everyone else who forcefully manufactured consent for a dead end technology and built the rails to serve the world its next great financial crisis. Until something changes, the tech industry will never be capable of building anything other than consensus and reinforcements of the status quo. So, spit in the face of those who even hint at a bailout, refuse to accept it, and demand that they do the complex, ugly work of thinking about the actual consequences of everyone being wrong. When this era ends, we will need to thoroughly excavate the collapse to make sure it doesn’t happen again, identifying the organizations and personalities that were used to manufacture consent and spread mythology about LLMs.  Every major bubble that has ever happened has mostly left the stones of responsibility unturned. The carnage that I fear will follow this era’s collapse will be horrifying, and we must do everything in our power to both thoroughly understand how we got here and make sure it doesn’t happen again, which will involve many hard conversations about our financial system, media ecosystem, and how innovation is invested in, built, bought and sold.  The same goes for the acolytes of this era. There are people who have developed a genuine hostility toward those who do not immediately accept a for-profit entity as their lord and savior. This is a sickness within the tech industry that must be put to an end.  Much of this will be unavoidable, because I think what follows the AI bubble will be a greater revaluation of the tech industry, a necessary reckoning with reality for a Silicon Valley that’s far more beholden to capital than it is human progress. The cults of personality that dominate this industry do not care about you, or me, or anyone other than those they revere and their theoretical placement in their dream of a society dominated by the rich and their chosen cronies. I refuse to accept their future as an inevitability. As I said a few weeks ago: This era must end, and all failures must be allowed to fail.  Let AI burn. 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.  The stock market bubble, where both the value of stocks and the earnings of companies in the market are inflated to an historic level . A data center speculation bubble, where I believe we’re building AI GPU capacity in expectation of $450 billion or more in annual data center revenue for an industry that, without two unsustainable venture-backed oafs, has a few billion dollars’ worth of demand. An AI startup bubble, where the vast majority of AI startups are both over-valued and have no foreseeable path to acquisition or a public offering . These startups also rely on buying tokens from OpenAI and Anthropic, making them far more cash-intensive, making them absorb the majority of venture capital funding. A private credit bubble, where asset managers have sunk billions of dollars of pension and insurance funds into AI data centers .  A semiconductor bubble, where supply chains have become saturated with demand from those building AI data centers, inflating the cost of RAM and storage , making all electronics more expensive, including those inside the AI data centers, creating a vicious cycle that has doubled the cost of a gigawatt data center from $50 billion to $100 billion in a little under 10 months.

0 views
Unsung Yesterday

“Relying on passengers to open the doors proved to be a bit of a curse.”

It’s Button Week here on Unsung, and here’s a 10-minute video by Jago Hazzard about the door opening/​closing buttons on London’s tube: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/relying-on-passengers-to-open-the-doors-proved-to-be-a-bit-of-a-curse/yt1-play.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/relying-on-passengers-to-open-the-doors-proved-to-be-a-bit-of-a-curse/yt1-play.1600w.avif" type="image/avif"> We previously covered elevator buttons and the enduring myth that – at least in America – they are just “pacifiers,” disconnected from the elevator’s system. The door opening and closing buttons in London went a different, but no less complex route, having to do with changing expectations, dwell time, and air conditioning. The video also briefly covers how the subway trains changed, which is fun to see. #real world #youtube

0 views

Apache Kafka performance #1 - linger.ms

This is the first in an ongoing ad-hoc series of posts on Apache Kafka performance. I have no general direction, I’ll just share interesting insights based on the performance testing I do on Apache Kafka. Recently I was curious to see if there was any general performance improvement since Kafka 3.X. So I ran a suite of benchmarks with Dimster against 3.7.2 and 4.3.0. I saw two common patterns: Pattern 1: Low load benchmarks showed that end-to-end latency was higher with Kafka 4.3 compared to 3.7.2. The following is a 45 minute no-record-key workload of 5000 record/s, 20 topics (120 partitions), fan-out 2 (240 consumers), full TLS, on 3 brokers each allocated 8 SMT CPUs in k8s (on my Threadripper 9980X). Fig 1. Low load: end-to-end latency over time (p99 over 10 second intervals) Pattern 2: On more stressful loads, 3.7.2 would show much more spiky end-to-end latency compared to 4.3. The following is for the same workload at 100K records/s (200K out). Fig 2. High load: end-to-end latency over time (p99 over 10 second intervals). Kafka 3.7.2 showed large latency spikes. Fig 3. High load: End-to-end latency distribution It seemed that somewhere between 3.7.2 and now, big performance gains had occurred. Then my subconscious kicked in and reminded me that at some point in that period, the default had been changed from 0 to 5 ms. This would correlate with the low-load end-to-end latency result. The producer config controls how long the producer is willing to wait before sending a non-full batch (controlled by ). If a batch reaches first, it can be sent earlier. The point of is simple: give more records a chance to accumulate into the same batch, because larger batches are more efficient than many tiny batches. The important quantity is the rate “per producer, per partition” (rather than the aggregate rate). Kafka producers build batches per partition, so a producer sending 1,000 records/s to one partition has very different batching behavior from a producer sending 1,000 records/s evenly across 100 partitions. A rough way to reason about it is: For example, with a per-producer-per-partition rate of 100, we might expect 6 records per batch. This is only an approximation as it ignores arrival jitter, partition skew, batch.size config (default 16KB), compression, in-flight request limits, and broker backpressure. But it is good enough to build intuition. In the 5K records/s workload, each producer was sending about 41 records/s: That is one record every: This was also a no-record-key workload. With the default partitioning behavior, records from a producer tend to stick to one partition for a while before moving to another sticky partition. So, for batching purposes, the producer was usually sending roughly one record every 24 ms to its current sticky partition. That makes unlikely to help. A 5 ms linger is much shorter than the ~24 ms average gap between records, so most batches still contain a single record. To reliably get more than one record into a batch, the linger would need to be on the order of the inter-arrival time (tens of milliseconds), not 5 ms. So the low-load result made sense: Kafka 4.3’s default added a little extra waiting causing a higher end-to-end latency, but did not create meaningfully larger batches and its load was so low that larger batching wouldn't have helped anyway.  The 100K records/s workload was different. There, each producer was sending about 833 records/s: That is one record every: At that rate, can make a real difference. A producer has time to collect several records before sending a batch. In this workload, I saw the average batch size reach about 5 KB, or roughly five 1 KB records per batch. That reduced the number of small produce batches the cluster had to process. It also improved downstream efficiency for the brokers and consumers. The result was a large reduction in tail latency:  the 3.7.2 run, with the old default , had periodic p99.9 spikes around 700 ms,  while the 4.3.0 run, with the new default , had a much lower and more stable p99.9 around 8 ms. So the benchmark was not necessarily showing a deep Kafka 3.7.2 versus 4.3.0 performance difference. A large part of the effect could be explained by one client-side default changing: linger.ms moved from 0 to 5 ms in Kafka 4.0. I decided to run a similar benchmark again, explicitly setting linger rather than using defaults. This time I used half the producers (better for batching) but with record keys (much worse for batching). I ran Dimster on Kafka 3.7.2 (broker and clients) and 4.3.0 (broker and clients), with six test points across two scenarios: If we look purely at the batching behavior, none of the linger values helped in the 5K records/s tests as the per-producer rate coupled with record keys meant that linger was ineffective at creating larger batches due to the low per-producer-per-partition rate. The chart below shows Kafka 4.3.0 over the three test points with linger of 0, 5 and 20. Only a linger of 20 slightly moved the needle. Fig 4. 5K workload. Batch sizes across lingers 0, 5 and 20 The exact same pattern occurred with 3.7.2. This workload did not need larger batches: the latency distribution for linger.ms=0 was already good. There was no difference in performance between 3.7.2 and 4.3.0. Fig 5. 5K workload, end-to-end latency distribution The place where linger mattered was the 100K records/s keyed test. In that workload, showed a massive improvement over a linger of 0 and 5. Fig 6. 100K workload: end-to-end latency distributions for lingers of 0, 5 and 20 did not help much at all and we can understand why by doing the math: Due to record keys, A simple estimate would predict about two records per batch at and about six at , which lines up with the observed producer batch-size metrics below: Fig 7. 100K workload. Batch sizes across lingers 0, 5 and 20 The batching improvement with was reflected in the end-to-end latencies, with p99.9 of only 23 ms, compared to over 700 ms for a linger of . Noteworthy is that the results for 3.7.2 and 4.3.0 with were essentially identical. 4.3.0 pulled ahead in the lower lingers, but there is often huge variance in the higher latencies, so from one run, this is inconclusive. Don’t over-index on this one set of benchmarks. No benchmark is fully generalizable, and the right value depends heavily on the workload. The main takeaway is simply this: pay attention to producer batch sizes. When producers are sending batches with only one record, Kafka can hit performance limits much sooner than you might expect. The broker has to process more produce requests, more record batches, more replication work, and more fetch-side batch metadata for the same logical throughput. A small amount of batching can make a large difference. The most important number to understand, with regard to likely batch sizes, is the per-producer-per-partition send rate. Total cluster throughput can be misleading. A workload doing 100K records/s may still produce tiny batches if each producer is spreading records across many partitions. Keyed workloads are especially prone to this, because the key determines the destination partition. If each producer writes to many keyed partitions, the effective rate into each producer-partition pair may be low. Under enough load, Kafka producers will often start batching more even with a low , simply because the sender thread cannot drain records immediately. Broker latency, network saturation, throttling, or in-flight request limits can all cause records to accumulate in the producer. But relying on backpressure to create batching is not ideal. In some workloads, setting a higher lets you get the batching benefit before the system is already under stress. The default changed from 0 to 5 in Apache Kafka 4.0. That means some Kafka 4.x client upgrades may show performance improvements simply because the producer is now batching more by default. Conversely, if you are using Kafka 3.x clients, explicitly testing is a low-risk experiment. As for Kafka 3.7.2 versus 4.3.0, anecdotally, I’ve seen improvements in Kafka 4.x, and I may do more benchmarking to isolate those changes. the 3.7.2 run, with the old default , had periodic p99.9 spikes around 700 ms,  while the 4.3.0 run, with the new default , had a much lower and more stable p99.9 around 8 ms.

0 views

Accelerating Stream Processing Engines via Hardware Offloading

Accelerating Stream Processing Engines via Hardware Offloading Zhengyan Guo, Mingxing Zhang, Yingdi Shan, Kang Chen, Jinlei Jiang, and Yongwei Wu SIGMOD'26 This paper describes a trick to offload partitioning from CPU to NIC via clever use of RSS. The context of the paper is distributed systems for processing streaming queries, but the trick seems applicable to databases in general. Hash partitioning is a common divide-and-conquer technique to implement joins and aggregations. Here are some posts about papers that use this partitioning: SPID-Join: Skew-Resistant In-DIMM Joins Breaking Through the Memory Wall of OLTP Systems with PIM High-Performance Query Processing with NVMe Arrays: Spilling without Killing Performance Efficiently Processing Joins and Grouped Aggregations on GPUs RSS is a NIC feature whereby the NIC hashes select fields from incoming packet headers and uses the result to determine which CPU core to send the packet to. This enables efficient load balancing across CPU cores without reordering packets within a given flow (i.e., connection). Here is a previous post describing a clever way to extract more value out of RSS in cloud VMs: Enabling Fast Networking in the Public Cloud If you have many nodes cooperating to process a query, then the hash partitioning may span many nodes. For example, node A could hash the join/aggregation key of each row and then forward the row to either node B, C, or D, E depending on the hash value. This enables the join/aggregation work to be split across nodes B, C, D, and E. This is all fine and dandy from the perspective of node A. However, nodes B, C, D, and E likely have multiple CPU cores. How can one of these nodes execute their join/aggregation in parallel? The answer is recursive: partition the incoming rows again (using a different hash function) and have each CPU core process one of these smaller partitions. The paper focuses on the cost of partitioning the dataset, which can cost just as much as the partition join/aggregation step that follows it. The key insight is that the partition algorithm looks a lot like the RSS load balancing algorithm present in the NIC hardware. Here is the punchline: establish multiple network connections (using different ports) between node A and each of nodes B, C, D, and E. When node A partitions rows, it determines a specific connection (not node) to send each row to. This doesn’t improve performance at the sender, but it dramatically helps the receivers. Each receiver configures RSS such that all connections are spread across the CPU cores on the receiver. The NIC then distributes received packets to the appropriate CPU cores without any partitioning work on the receiving nodes. The one downside to this approach is load imbalances that occur due to data skew. If some join/aggregation keys are more common than others, then some CPU cores may be assigned more work than others. The paper proposes to dynamically monitor load imbalance at each receiver and reconfigure the RSS settings of the NIC to move connections off hot cores. Section 5 of the paper describes synchronization necessary to move a connection between cores in the middle of the query. This is a good mitigation, but as we’ve seen in this paper , RSS configuration is not uniformly exposed on cloud VMs. Fig. 8 has performance results across a number of benchmarks: Source: https://dl.acm.org/doi/10.1145/3769754 Dangling Pointers The solution is great, but asymmetric. I wonder if there is a way to get similar benefits on at the sending node (send side scaling)? Thanks for reading Dangling Pointers! Subscribe for free to receive new posts.

0 views
Martin Fowler Yesterday

Viability of local models for coding

Birgitta Böckeler recently spent some time trying out running local LLMs for some programming tasks. In this memo she outlines the factors that influence how viable they are for the job.

0 views

Hungrier than before

Near the end of The Tombs of Atuan, the wizard Ged is in the desert with a young woman, Tenar. They have escaped a great evil and are tired, footsore, hungry. They have no food and little water and are a day’s walk from either. Tenar, having seen some of Ged’s magic, asks if he can do something about their predicament: “Can you find food for us?” she asked, rather vaguely and timidly. “Hunting takes time, and weapons.” “I meant, with, you know, spells.” “I can call a rabbit,” he said, poking the fire with a twisted stick of juniper. “The rabbits are coming out of their holes all around us, now. Evening’s their time. I could call one by name, and he’d come. But would you catch and skin and broil a rabbit that you’d called to you thus? Perhaps if you were starving. But it would be a breaking of trust, I think.” “Yes. I thought, perhaps you could just…” “Summon up a supper,” he said. “Oh, I could. On golden plates, if you like. But that’s illusion, and when you eat illusions you end up hungrier than before.” Le Guin, The Tombs of Atuan , page 155 Is this not precisely what it’s like to read or watch or listen to slop? What you read isn’t really writing or drawing or art—it isn’t the creation of a mind reaching for the world—but illusion. And it’s not only AI, of course. A good deal of commercial content is more or less the same, books and movies and music created by marketing teams with quantified audience strategies but no fucking soul to speak of. AI accelerates that production process, makes it slicker and smoother, makes the illusion seem more real. Makes ever more of it, at greater and greater scale, until you come to believe there is nothing else out there. But it remains a deception. You think you’ve had your full but all the while you’re starving. View this post on the web , reply via email , or become a supporter .

0 views
Stratechery Yesterday

A Script for Mark Zuckerberg

Listen to this post : The setting: Meta’s earnings call in early August, 2026. The speaker: Meta CEO Mark Zuckerberg . Good afternoon everyone, and welcome to Meta Platforms’ Second Quarter 2026 Earnings Conference Call. Our remarks today will include forward-looking statements, which are based on assumptions as of today. Actual results may differ materially as a result of various factors, including those set forth in today’s earnings press release and in our quarterly report on Form 10-Q filed with the SEC. We undertake no obligation to update any forward-looking statement. I know it’s weird that I, Mark Zuckerberg, am doing the Director of Investor Relations job, but anything is possible when this speech is made up. What follows isn’t actually me: it’s what Ben Thompson of Stratechery thinks I should say on this call. I know that Meta and myself are facing a lot of questions about AI, particularly the amount of money we are spending on capex. Our core business is an asset-light cash generation machine, so why are we spending tens of billions of dollars on AI? To answer this question I want to give you a quick recount of our history, what I’ve learned, and why I am so confident that we are doing the right thing for our future. So let’s get to it. Facebook was, as you know, the digital representation of Harvard’s analog Face Books. What was clear from the very first day we went live was the extent to which humans are, first and foremost, interested in other humans. People would spend hours clicking around to people’s pages. To put it another way, our first algorithm was human curiosity. What truly super-charged Facebook usage, however — and which transformed the Internet — was the feed. Now, instead of actively surfing to friends’ pages to look for an update, we showed updates to you in a single feed on your homepage. You might remember that we got a lot of heat for this decision, including protestors outside our office in Palo Alto. The lesson we took from that, however, is one that has guided us to this day: first, the revealed preference of users, as captured by data, was that they loved the feed: engagement skyrocketed. Second, we learned to trust our own — my own — product intuition, and that conviction has served us well over the years. Another critical moment in our early history was the shift to mobile. We didn’t get this right in the beginning — more on that in a moment — but what was quickly apparent is that more access to Facebook meant more usage of Facebook. I can’t emphasize this point enough: when humans can connect to humans, they do, and when they can do it more conveniently and in more places, they do it more often. Finally, I would be remiss to not mention Instagram. Obviously Instagram has been a major part of our growth over the last 15 years — and, I would add, we have been a major part of Instagram’s growth. To that end, an important thing to understand about Instagram is the extent to which it has evolved . Just because we gave our users what they wanted at one particular moment in time does not mean we can afford to sit still: more bandwidth first meant more pictures in Stories, and then video in Reels. Instagram has gone from strength-to-strength precisely because it has changed as technology has changed. We — I — haven’t done everything perfectly. We’ve taken our arrows through the years for lots of things that frankly aren’t our fault, but are rather the reality of being the primary communications platform for all of humanity, and humanity is flawed. I’m proud of the efforts we have made to ameliorate humanity’s worst impulses while enabling some of our best tendencies, including that desire to connect. Rather, my mistake is itself a very human one: for many years I have resisted embracing what Facebook — now Meta — is, and spent too much time trying to emulate some of the tech titans who came before me. Specifically, I have been obsessed with becoming a platform. The first manifestation of this error was the initial shift to mobile I referenced above. When Facebook was primarily a browser app I invested heavily in trying to build a platform, with things like Facebook Games, payments, etc. We had some success there — some of you on this call might have played Farmville back in the day — but when mobile came along we mistakenly tried to hold onto web technologies that supported my vision, and were years too late in investing in a truly native smartphone experience. The reality — and this is hard for me to admit — is that Apple saved us from my mistaken obsession. Mobile Made Facebook Just an App, and that was Great News . Instead of diminishing the Facebook experience so that we could feature third-party developers, we had to cede that space to Apple and put our own content front-and-center. It turns out that was what people wanted the most; in fact, they wanted it so much that they willingly scrolled through and clicked on the most compelling ad units ever. And make no mistake, we paid back our debt: Facebook built the App Store just as much as Apple did. My second error was Reality Labs. While in recent years I have framed our acquisition of Oculus and virtual reality as a necessary response to Apple’s attempt to handicap our business, the truth is that I invested twelve figures into this technology because I thought it was cool, and yes, because I wanted to own a platform. I do think we’ve made compelling strides in this area — and we’ve created technology that is going to matter in the long run — but I now recognize that part of the reason I am delivering this mea culpa right now is because I burned a lot of credibility with investors with all of the losses Reality Labs has endured with very little to show for it. My third error was not in trying to make Facebook something it was not, but rather failing to appreciate what it had become. While I was thinking about platforms, I took it for granted that connection was enough for the core business; in fact, Facebook had evolved into entertainment , at least in its public-facing forms (I will take credit for the acquisition of WhatsApp and realizing that Messaging Was Mobile’s Killer App ). This was an insight that TikTok figured out first , and it was a blindspot for me . What I’ve come to realize is that all of these mistakes are symptoms of what has been my biggest failing as CEO: all of you on this call have appreciated our ad business more than I have. I’ve been very blessed as CEO to have excellent co-workers who have over the years developed the world’s best digital ad business, while I frankly haven’t taken as much interest as I should have. My failure to appreciate our ad business is another lens through which to examine my mistakes: This neglect as CEO left us badly exposed in our disputes with Apple. I firmly believe that Apple’s characterization of digital advertising was unfair, dishonest, and self-serving . What I failed to do, not just in that bruising battle but in the years leading up to it, was make the affirmative case for ads generally, and Meta ads in particular. It’s easy to see how the Internet has made it possible for an entirely new category of entrepreneurs to create products that uniquely serve the tremendous capacity of humans to manufacture an infinite array of desires, growing the economy to the benefit of everyone; what’s harder to appreciate — in part because I haven’t made the case — is that the only way to connect those creators to the consumers who love them is digital advertising. We don’t serve ads like Google — or Apple in the App Store, or Amazon on Amazon.com — that in many respects function as a tax on search; we show people products they never knew existed, but that immediately generate desire and, ultimately, happiness. In short, I believe that we are a force for good in the world, not just because we connect people to each other, but because we connect entrepreneurs with customers in a way no one else does. Forgive the long preamble, but this is necessary context for me to properly explain why AI is so important to Meta, and why I am making the right choice to invest so heavily in both talent and infrastructure. First, when investors compliment our asset-light business, what they are complimenting is the fact that our business is purely digital. Everything digital, however, is firmly within AI’s cross-hairs. It may seem odd to begin my AI pitch by highlighting terminal value risk, but today is about honesty: every single digital company on earth faces an existential threat from AI, and we are no exception. Meta must invest in AI because a failure to do so would cost us far more in the fullness of time, particularly now that we’ve seen the very real risks entailed in depending on a third-party . Second, AI makes our business better — and by “our business”, I mean ads. AI is more than LLMs: it is machine learning, and we have been using machine learning to improve our ads business for years. More recently, we have developed GPU-dependent algorithms that have significantly improved our ability to not just target ads but also recommend content, which keeps people entertained longer, which lets us serve them more ads. And, looking forward, LLMs themselves will transform advertising, not just by generating copy and images, but by predicting the ads and content that people want to see. Every single one of these improvements goes directly to our top line — and remember, because advertising enables us to offer our products for free, the capacity to increase our top line is unbounded by price elasticity. Third, the single most important indicator that our business is on the verge of a step-change in growth is when we dramatically increase inventory. This is something investors regularly get wrong: back when we added Stories, investors panicked about falling prices-per-ad without realizing we were increasing inventory we could grow into. Five years later, investors made the exact same mistake with Reels . Those were the two best opportunities to buy Meta stock — or any stock, really — in history. We are facing an even larger opportunity over the next several years. AI makes every pixel monetizable , which means we are looking at the largest inventory expansion ever. Yes, it will take a few years to realize this opportunity, but the technology is there. More importantly, what I’ve come to realize as I’ve embraced our status as an entertainment provider and ad purveyor is that — our nature as a digital business notwithstanding — we are remarkably well-placed to thrive in an AI era. Remember what we learned about humans: they are obsessed with other humans, and they want to connect with them; that obsession and desire are only going to increase as we interact more and more with AI. AI is going to make our properties more essential, not less. Moreover — and here I must issue one more mea culpa — AI is a productivity tool, but productivity is not the end-all-be-all of the human experience. I have talked over the last year about building superintelligence that helps you get things done, but that’s a business story. What we can uniquely do is give people the experiences they want — from connection to entertainment to shopping — when they are off the clock. The fact that we are investing in AI but not selling solutions to businesses is actually one of our biggest advantages . Oh, and by the way, AI might actually lead to new hardware paradigms. I admit I was wrong to spend so much time on virtual reality, but that did lay the groundwork for a unique opportunity to develop devices that make much more sense in a world where we want to access AI everywhere, not just on a phone in our pocket. I know that many of you on this call have doubted my investment decisions before — and I understand the consternation about Reality Labs in particular. However, keep in mind that when our stock dipped in 2022, one of the big reasons was because of our aggressive capex spending, which went primarily to GPUs; ChatGPT came out a month later, and that decision to spend heavily with Nvidia looked incredibly prescient in hindsight. That prescience, however, pales in comparison to the payoff that will accrue to anyone with the foresight to build data centers and buy compute over the last several years, and for years into the future. We don’t have the luxury of waiting until the future is invented and then investing; we need to invest now, especially when the opportunity in front of us — with ads specifically — is so apparent. That noted, we are in a truly unique time, when there is a real market for selling compute on the spot market. To that end, we are going to sell access to a portion of our compute infrastructure on a short-term basis, with the ability to claw back that compute at any time. This will accomplish two important things: first, the proceeds from these rentals will fund an even larger build-out going forward. We will need this capacity in the future. Second, rental prices will provide a hurdle rate that will focus and discipline our decision-making. Let me expound on this point, because it brings this entire opening statement together: I now realize that my obsession with platforms and productivity has frequently led us astray, and that I have given insufficient appreciation to our advertising business and failed to embrace the reality of what Meta is. I truly believe we have compelling reasons to invest in AI — arguably the most compelling reasons — and the fact that the market doesn’t agree is my failure. To that end, making our compute available for rent means that we can only take it back if we can make more money on it ourselves; the only way we can do that is by leaning into what we are good at, not what I have spent too long wanting us to be. To put it another way, our best product decisions have been intuition validated by data and revealed preference; that’s how we’re going to approach AI. We will build, because we must, but we will let the market decide who gets to use it: I’m confident my newfound religion on ads will result in all of that compute being used by us to make more money than we can ever make as a permanent cloud provider. We are not out here to make chatbots or compete with OpenAI and Anthropic; they can fight for work and productivity and charging subscriptions and replacing humans. Our goal is to celebrate humans, to connect them, to entertain them, and to enable commerce among them. We need compute to do this at scale, and I know it will pay off. My commitment to you is that we will structure our business so we have no choice but to do just that. We’ve done it before, and we will do it again. And with that, over to Susan. Building a platform is antithetical to building an ad business. A platform’s goal is to feature third-parties; an advertiser’s goal is to capture attention for itself. Investing in an entirely new technology, including developing hardware, fundamentally limits our addressable market ; an advertiser’s goal is to maximize its market size. Entertainment is the best possible category for an advertiser to own: people willingly give entertainment their attention, which is exactly what an advertiser wants to sell.

0 views
Kev Quirk Yesterday

📝 2026-07-07 07:06: First two chicks!

First two chicks! 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
Sean Goedecke Yesterday

Blog about things you don't understand yet

Every post I publish represents at least two things I’ve learned: the thing that prompted me to write the post, and the thing I learned in the course of writing it. If I don’t learn anything new while I’m writing, it’s not interesting enough to publish. Typically I learn way more than two things. For instance, in my o3 geoguessr post, I started out with the idea that most AI prompts probably don’t work, and I ended up learning that newer OpenAI models have lost o3’s ability to geolocate. That’s interesting! In my most recent post on C2PA , I started out with the idea that C2PA requires near-universal adoption, but I learned a ton of things about PKI, managing private keys on local devices, how C2PA actually works, and so on. In my post on the Luddites , I started out with the idea that the Luddite movement was fundamentally decentralized, but ended up fascinated by Luddite culture (which was far more elitist, misogynist, and violent than the pop-Luddism books describe). I could do this for every single post on the blog. I think the core reason this works is that every single one of my blog posts argues a point . I never publish a post that just gives some scattered thoughts on a topic, or a post that only says “yes, I agree with this other article”. If I write a draft that nobody sensible could disagree with, I scrap the draft. Making sure that everything I write is at least minimally controversial is a forcing function: it forces me to think about what the most interesting part of my position is, and it forces me to do enough research to defend it against the obvious criticisms. This is contrary to a lot of advice I read about blogging, which encourages the aspiring blogger to treat their posts as a form of unstructured self-expression. If unstructured self-expression is what you want to do, that’s cool. The point of having a blog is that you get to write what you want. However, this advice isn’t as helpful as it sounds. Before I was in tech, I was a philosophy grad student. But before that , I was a poet. One thing you learn when you try to write poetry is that it is way easier to write to a restrictive structure than it is to simply “write what you feel”. This should be obvious when you actually think about it. The task of a poet is to repeatedly choose the next word. Writing to a structure (typically rhyme or meter) narrows that choice to a small set of words, instead of the entire English language. It’s the same with blogging. Forcing yourself to write about specific, potentially-controversial points makes consistently writing easier, not harder. Writing is the best way to think clearly about a topic. It’s easy to believe you understand something when you’re just turning it over in your head. When you have to condense that down into words, you find out exactly how much you do or don’t understand. I am constantly having moments where I type something, stop myself, and think “wait, that can’t actually be right”, or “is that really true?” By the time I write my way to the end of the post, I’m usually thinking so much more clearly about the topic that my conclusion paragraph is way better than my introduction. In fact, I’ve picked up the habit of going back and immediately rewriting the first paragraph as part of my first-draft process, because I know I’m going to end up doing it anyway. I also change my mind a lot while I write. Here are a bunch of examples of posts where I began writing them with the opposite opinion to the one that eventually made it into the post. I think this is a good sign, and I hope I never stop doing it. You should be researching and thinking about every post you write, and that means you should frequently learn new things that change your mind. Because of all this, I deliberately choose to write blog posts about things I don’t yet quite understand but would like to, like LLM steering, Stripe’s Tempo blockchain, C2PA and watermarking , space cooling , interaction models , LLM inference internals , and so on. This is great for me, because I learn a lot. Is it great for my readers? I sometimes worry that I should only be writing about areas I already know very well, like tech company dynamics or working in large codebases , rather than presenting myself as an authority on fields I’m actually still learning. Should I let historians of the Luddites write about Luddism, Web3 engineers write about blockchains, and so on? I think this is acceptable for three reasons. First, it’s sometimes easier for a beginner to write an introduction to a field than for an expert. Experts routinely overestimate the knowledge of the general public, and have often internalized the reasons why their field is important so deeply that they struggle to express them. I think my explainer posts are valuable because I always spend the first chunk of the post talking about what the original problem is before I get into the technical solution. Second, sometimes the public consensus on a topic is just plain wrong, to the point where even a little bit of research is enough to demonstrate why. Many of my posts I’m proudest of have been along these lines: arguing that the “500ml per prompt” water usage figure for LLMs was ludicrous , or that the popular Apple “Illusion of Thinking” paper was tracking persistence, not reasoning , that GPUs live longer than three years and the AI companies have large profit margins on inference, and so on. Third, I try to make it clear on my blog who I am and what my credentials actually are. Even if it’s not explicitly described in the post, I have my real name and resume available on my /about page, so I don’t think a careful reader could be easily fooled into thinking I’m an expert on 19th-century England or space physics or LLM economics or anything like that. Even if nobody reads what you write, writing is still a good discipline for getting your thoughts in order. But another big reason why writing is a great learning tool is that you can get feedback . I think it’s obvious why this is useful, but I do want to make two points about feedback. First, if you do make your posts public, you need to have a pretty thick skin. People on the internet often fall over themselves to come up with the most cutting criticism or the harshest dunk. This goes double if you take my previous advice and try to write posts that make a clear, controversial point about a subject you’re learning. If you’re the kind of person whose whole day is ruined when a stranger is cruel to them, you might want to keep your blogging private or only share it among friends. Second, even if your blogging is private, you can get feedback from LLMs . Like humans, LLMs will often give junk feedback. In my experience, OpenAI models will always tell me to moderate my claims or add caveats and hedges until I’m not saying anything at all. Sometimes their criticism will be straight-up wrong. But — particularly about technical topics — LLMs are great at pointing out areas you’ve genuinely misunderstood, and they’re far kinder than the average Lobsters or Hacker News commenter. I’m pleased and grateful that people enjoy reading my posts, but even when nobody did, I still got a lot of value out of blogging. I write as a method of thinking more clearly, as an excuse to do research on topics I want to learn about, and as a way of getting feedback. If you’d like to try it yourself, I suggest watching for these two things. First, you should be changing your mind a lot as you write. If not, you probably aren’t doing enough research. Second, your first draft’s conclusion should be much tighter and more expressive than its introduction. If not, you probably haven’t learned anything from the writing process, which means the draft can be scrapped. I strongly recommend this practice to anyone with an interest in writing. You will see the benefits even if you don’t publish any of your writing on the internet, particularly now that you can get good technical feedback by pasting your post into a LLM 1 . For what it’s worth, I’ve fiddled with careful “review prompts” and it’s basically as good to just write “review, please:” and paste your article. For what it’s worth, I’ve fiddled with careful “review prompts” and it’s basically as good to just write “review, please:” and paste your article. ↩

0 views

A full body MRI earns you a year of smoking

Alternative titles: These are all about equivalent to the risk of one year of smoking. (Continue reading the full article on the web.) … earns you a high-risk pregnancy … earns you an ascent of Matterhorn … earns you 10,000 km on a motorcycle … earns you two BASE jumps … earns you a day on the frontline in Ukraine

0 views
Kev Quirk Yesterday

📝 2026-07-06 21:45: Two of the eggs are starting to hatch and we can hear multiple chicks cheeping...

Two of the eggs are starting to hatch and we can hear multiple chicks cheeping away. Exciting! 🐣 Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
Unsung Yesterday

The great release notes of BBEdit

I have to admit that when a reader wrote to me and said… Every point release of BBEdit delights me. I live in BBEdit. It’s one of the few packages for which I read through the release notes every time (they often have spots of hilarity). …I got a bit concerned. One thing that I hate more than wasted release notes (“Bug fixes and performance improvements”) is perhaps funny release notes – the ones where instead of actually conveying what changed, the text field is used for something, erm, “creative.” (Perhaps most infamously, Medium had had a spell of “fun” release notes about 10 years ago, to a mix of amusement and blowback ). But I needn’t have worried. The release notes of BBEdit are just plain old solid good work, with only a sprinkle of humor: It’s been a while since we looked at release notes , and these are a great example of something that can help you understand not just what an application is, but what it will become . For example, I saw this fly by… …and even though I have never used BBEdit, I immediately started nodding. It made sense; greeking is helpful for letters, but I can see how it can do more damage than good for punctuation that has a pretty specific visual signature. BBEdit’s author knows what they’re doing. Another person (whom you might recognize ) chimed in to say : Nothing in BBEdit is “abandoned.” Everything is on the table for possible improvements. Also remember that this is an app that was originally written for classic Mac OS! This made me think about what separates apps that you’re excited to keep growing from the apps you’d rather see frozen in time . The release notes of BBEdit made me trust it so, so quickly. Not just the pace of change and clarity of communication, but also indeed this certain feeling that the product is “alive” in all the right ways. Even if I don’t know or use the features, I quickly get a sense that the changes are for me, or at least other people like me, rather than serving unspecified corporate needs, chasing fashionable trends, or pursuing unnecessary pivots. Hell, even the ratio of changes – new features vs. quality-of-life fixes vs. performance improvements – seems good. On top of all that, it’s fun to read good release notes, because you can learn something new. These, to me, were fascinating: Determinism ! #maintenance #release notes #software evolution #writing The “Zoom” command makes a triumphant return to the Window menu. Fixed crash which would occur when displaying completions from language servers which violate the published specification and provide something other than a string for the details field of a returned completion item. (glares at Solargraph) SNUCK IN A SPECIAL FEATURE FOR CRAIG NO NOT HIM THE OTHER ONE I HOPE HE LIKES IT Made a change in the minimap so that punctuation isn’t greeked, which helps improve visualization. “Entab” and “Detab” have had their names changed to “Convert Spaces to Tabs” and “Convert Tabs to Spaces”, respectively. This is more verbose but less abstruse. There is a new setting in the Keyboard preferences: “Enable macOS “Help” key”. This is off by default, so that pressing the “Insert” key which is present on some PC-style keyboards doesn’t open the in-application help. (This frequently happens accidentally.) If an FTP browser window is active and disconnected, “Open from FTP/SFTP Server” will start its connection sheet, rather than doing nothing.

0 views

re: Built for Exactly One

Kev and Amit both talk about building software for themselves rather than for others. Solving their personal needs and making something that is exactly what they want. I love this, software should be personal and customized to the user. Building your own software brings out the “personal” in personal computing, and it’s how home computing started in the first place! In the days of the Commodore 64 or Atari 800, you were encouraged to write personal software. You turn on the Commodore and it gives you a blank canvas, ready for whatever BASIC program you can think of. If you built something you were especially proud of, you’d mail in the source code to “Compute!” or a similar publication to share with the world. The timing to bring back personal computing has never been better. In the age of subscriptions and enshittification, it’s never been easier to choose a different path. LLMs make building your own solutions more accessible. There’s nothing quite like building for yourself and iteratively improving it while you use it in your day-to-day.

0 views