Latest Posts (20 found)

An Interview with Microsoft CEO Satya Nadella About Finding Core Competencies

Listen to this post: Good morning, This week’s Stratechery Interview is with Microsoft CEO Satya Nadella . I have previously interviewed Nadella in May 2024 , October 2022 , April 2020 , and May 2019 . As I noted yesterday , I spoke to Nadella shortly after the conclusion of his keynote at Build , Microsoft’s annual developer conference . One notable thing about the keynote was the fact that Nadella was — outside of product demos — the sole presenter; one gets the sense he has shifted into a much more hands-on role at Microsoft over the last year. The reasons why are clear: my first question to Nadella was if he was happy about where Microsoft was currently positioned as a company. We talk about the reasons for that question, the status of the company’s partnership with OpenAI, and whether Microsoft has invested sufficiently in AI infrastructure. Then we talk about the future of software, Microsoft’s business model in the age of AI, and if they can operate independently from the leading edge models. At the end we talk about Project Solara and whether Microsoft will ever pay residents to build data centers. One note, with regards to a misunderstanding towards the end of the interview: there is no documentation I could find about being able to use Copilot Cowork with non-Anthropic models; Microsoft’s own documentation fits my understanding. As a reminder, all Stratechery content, including interviews, is available as a podcast; click the link at the top of this email to add Stratechery to your podcast player. On to the Interview: This interview is lightly edited for clarity. Satya Nadella, welcome back to Stratechery. SN: It’s great to be with you, Ben. So first off, I don’t know if you realize this, but at least according to my daughter, the defining word for the real grinders in Gen Z — first off, LinkedIn is like the social network. SN: That’s great! Number two, the word they all use is “build”, “I’m building, I’m building”, so who knew when I was at the first Build, I think, in 2010? Or was it 2011? Who knew you were such a trendsetter? SN: (laughing) There you go, I’m thrilled that your daughter is building and is on LinkedIn. Yeah, well, I’m not sure if she’s on there, she’s more making fun of people, so we’ll see how it works. We last talked the summer of 2024 after Build, this was up in Seattle. To say a lot has changed since then is an understatement. I had a bunch of questions I wanted to ask you about the business as a whole, things going on, I’m going to start with those, then I have questions about the presentation at the end. But relative to that, I want to ask you one simple question: Are you happy with Microsoft’s current competitive position? SN: You know, always this is the trickiest thing, you can sit here and say, “I’m happy” — that means you’re not ambitious enough and when you say, “If you’re not competitive, what the heck are you doing?”. And plus you have like 57 different product lines. SN: I’d say the thing in these platform shifts in particular is to, one, get the conceptual model of, “Where is the opportunity for us as a company?” — most people measure competitive position as if it’s a complete zero-sum game, and it’s never been the case. Which is, it is not the case with the cloud, it is not the case in client-server, and so to me, “What is Microsoft uniquely capable of doing in this new world” — that’s the key thing that we have to answer before we even get to the competitive position. In that context, “What is it that we really have a shot at?”, which is we can be a trusted purveyor of a platform, which is what we’ve always done, that allows people to create more value on top of a platform, which is again the DNA we have. Even in a world where these frontier models seem to have no limit— A very large appetite. SN: They have large appetite. That is what I feel even this Build , this conference, we are at that state where we can now really turn this from any one frontier model to saying, “Hey, there is actually a way for a frontier ecosystem to emerge where there are many stakeholders who all actually are operating with their own frontier intelligence”, that is a place where I think we have a unique shot, a unique competitive angle, and most importantly, brand permission. This is the other thing I’ve learned, Ben, which is every company thinks they can do everything, and then they realize that the world doesn’t need them to, the world wants them to do the one thing. Is that a lesson that you had to learn? SN: Yeah, absolutely. I’ve always said this, at Microsoft we are at our best when we do what the world expects us to do, we are at our worst when we do things out of envy, which is just because somebody else had some cool hit, somewhere, doesn’t mean we should go do that. But enough about the Zune, right? SN: (laughing) Yeah, Zune was a great device, but the world didn’t need Zune from us, and so that was the end of it. This identification of your unique capabilities, is that one of the changes over the last two years where that has emerged? SN: Yeah, in fact, it has emerged and also the world’s kind of gotten to it. Has it been forced on you to an extent? SN: Yeah, even my own conceptual understanding, I started by thinking of, “What are models?”, models are kind of like some stateless APIs, then I adjusted and said, “Oh, maybe there’ll be like databases” — they’re really more than that. I don’t remember talking about this with you, but last time I talked to [Microsoft CTO] Kevin [Scott], we analogized it to processors at some point, and you actually did make a comparison in terms of the partnership to your partnership with Intel. SN: Exactly. So the question now is, it’s a better conceptual model to think of what we’re doing is you have to really build a learning machine, and any company has to build a learning machine, so what I want to build is essentially a multi-tenant learning system that allows everybody to have their own hill-climbing machine . So that conceptual idea, now I’ve turned what is essentially frontier is not about any frontier model — I want to build whatever you did with M365 or with Azure into a platform which allows everybody to basically build their own hill-climbing machine right because the future of a firm at a foundational level they’ll have human capital they’ll have token capital and for the token capital they need their own hill-climbing machine. All right, so I’ll jump to the end, you released seven new models, you emphasize the work you’ve done to build these models from scratch, not with distilling, not with using other models as teachers — so did you just articulate what the ambitions are with these models? SN: Yeah, there are two sets of things. One is we wanted to build from ground up with clean lineage, the models that we will have that we can license and allow enterprises to continuously hill-climb, so that’s why we want that model. By the way you talked about distillation — the point is to not use distillation during any of our own hill-climbing but at the very end, in fact some of the things that we are doing is, after all, we have all the OpenAI IP, in fact some of the performance gains we get is by doing RKLD, which is reverse knowledge distillation , and RL on top of it. So we have effectively two frontiers, we have our own, we have the OpenAI, and we’re going to use these things to eval match. And the clock is ticking to get to the right state you need to be while you still have that access . SN: Yeah, and there’s five years of it. But the bottom line is at any given point in time, I want to make sure that I’m using the best, most efficient model for whether it’s in coding, whether it’s in security, making sure also in our case, we’ll have a harness that’s independent of these models, we have the GitHub Copilot harness that’s used everywhere across Microsoft. Our goal is to make sure we have a model lineage, which we control end-to-end, we then use OpenAI IP, even with all of the capability it has — ultimately, the tests are going to be the evals for us and our customers. In the long run, the way it was framed today, and I thought it was very compelling, and it speaks to what you just said, was this idea of enterprises being able to take these models and in their own RL environments incorporate their data at a much deeper level than sort of a slap-on RAG implementation or basic post-training. Is that the end goal, though? SN: Yeah, the end goal for me is the following, which is I go back and say, let’s say that they’re a generalist model — if you go back even, Windows could have a release, then another release, and Adobe and Autodesk could keep building and keep going up, what’s the moral equivalent of that? That is the thing. And then in the first time, we said fine-tuning, it kind of didn’t work because we didn’t have the tools, we didn’t have the data collection regime, none of that. But now we have it. So let’s say the generalist models keep getting better, MAI models, let’s say, or OpenAI models, then you have this RLE. Right, but this deep customization of the models you’re talking about is only possible with MAI models. SN: That’s correct, but the thing that we want to start getting everyone on is this multi-tenant hill-climbing system — so if you think about it, we literally turned your use of M365, which already is a multi-tenant system, into a hill-climbing system for you. Okay, I’m gonna have to stop you, I’m going to give you an ELI5 opportunity, explain hill-climbing to the audience. SN: Hill-climbing is basically when you think about, “What does AI do?” — AI is all about taking an objective and continuously learning how to go predict and create that output that is the representation of that objective, and do so continuously. So that’s why a metaphor of hill-climbing is the best way to describe learning. And you want everybody to do this individually on their own hill. SN: Individually on their own. As opposed to like, hitching along. SN: What is your moat as a company? Your moat as a company is your tacit knowledge. In a world where AI exists, and network effects of AI exist, you need your own hill-climbing machine in which the models are learning. So the first thing we want you to do is, people don’t talk enough about this, but the private outputs, the evals, as I think about as, maybe the most important IP a firm creates are these private benchmarks and the private evals where you are tastefully recognizing what’s the output, the quality. And by the way, today’s failure cases are informing you to change the benchmark continuously, it’s not a static thing, that’s kind of how the evals work. And so if you have your private evals, then you have your own reinforcement learning environment that you’ve created, then you invite all the models to show up, and then you say, “Model A, generate the output that is maxing this eval using my environment and my trajectories and model B…”, and I can switch. In that context, the MAI models is one more lineage that you can put into,c and what we proved today was even a very efficiently trained reasoning model or a coding model can hill-climb using your traces and that will be more token-efficient and it will be fundamentally a great advantage. Exclusive to you the customer. SN: Yeah, that’s right. But is that just for now? If you fast-forward, is your vision that actually MAI models are fully competitive on the frontier with the other general models? SN: They are. Even today, when you start saying that — the world will keep getting better in general.** Well, I guess this goes back to, is this about how you need to do what you’re good at? SN: Correct. One, what we’re good at and also what’s the equilibrium of the world? Which is, if you believe there are only going to be two firms in the world, then of course, they only need two frontier models, but if you fundamentally believe that there are going to be as many firms as there are today and more, then what is the firm in the age of AI? It’s going to have human capital and token capital, how did that token capital get created? It’s not a bunch of API calls, it’s actually some set of weights even they have. Right. And so do you want to accrue that advantage or do you want to give it to OpenAI and Anthropic? Well, speaking of the OpenAI partnership, I mentioned you referred to it like the Microsoft-Intel partnership, and sometimes partnerships are the only way to get ahead. How do you think about that partnership now? SN: I still think that it’s — I’m very proud of the fact that we came together, you remember the circumstances in which we came together were very different and the fact that there is a company now that may go public and be a trillion-dollar company— This is my question — how long were the knockdown, drag out fights between in this corner, there’s Satya Nadella, the operator, and in this corner, there’s Satya Nadella, the investor, tussling over what to do? SN: (laughing) At the end of the day, we are an operating company, investment is just more of an accident. Yeah, but the shareholders are ultimately those investors! SN: I’m glad and it’s a fantastic outcome for our shareholders too and what have you. But I think the way I came at this, Ben, is to say genuinely I’ve always approached it as, if there’s a partner that we can partner with and ourselves innovate, and they’re also successful, that’s fantastic. I always go back to the story of having built SQL Server with SAP. SAP was successful, we were successful, we also then went on to do other things. And so therefore, I think OpenAI, I’m glad we worked with them, we’re working with them, they continue to be a premier partner. As I said, until 2032, we still have a lot as a customer of theirs, them as a customer of ours, as an IP partner. So every day OpenAI does well, Microsoft does well. Is there a bit where everyone thought you were so far ahead because of your partnership with OpenAI, and now when we talk about things like your MAI models, it’s like actually “We got a little bit lulled to sleep because we offloaded too much to them, and now we’re having to recalibrate”? SN: Lots of things, one is, like all things, there’s a lot more competition, there is OpenAI, there is Anthropic, there’s Google, there is tons of folks who are in there. And so I think for us, the beginning, it was great that we got started with OpenAI. Think about where we were in 2018 to where we are in 2026, here we are competing with Google and a bunch of people whose names I wouldn’t have known in 2018, and so that itself proves that to your very first question, “How competitive is Microsoft?” — I’m glad Microsoft took that shot. Here we are competing with a bunch of new people, a bunch of old people, and we have our own game. So we already talked about Satya Nadella, the operator, and Satya Nadella, the investor. What about Satya Nadella, the capital allocator ? There were a lot of reports in about early 2025 about Microsoft pausing and a reconsidering some data center investments, you guys have sort of spun that as, “Lots of speculative stuff”, “We’re streamlining”, etc. — but at the same time, your percentage of free cash flow committed to CapEx lags fairly significantly behind your peers. Four months ago, that was a compliment. Now, is it a diss? How are you feeling about that? SN: The last time I checked, my free cash flow is getting allocated pretty well to capital return that makes sense. Is there a case that you’ve underinvested? SN: Not really. I think the key thing that at least we wanted to make sure is we were not upside down on building — we have a hyperscale busines, we have our own application business, and we have our own research compute to allocate, there are three buckets, we wanted to allocate with great discipline on all three. So take the hyperscale business. Hyperscale businesses are about having a few big customers, but also having a massive long tail, so you can’t have a book of business that is just a few model companies — in fact, one model company — that was the fundamental decision. And you wanted to get out of that business. SN: Not just get out. They’re still there, they’re a major tenant. SN: They’re a major tenant. But, let’s face it, Anthropic over time or OpenAI over time will build their own, it makes sense. They would use — I’m not saying that they won’t use other cloud providers. So to me, it was clear as day that, what I wanted to do was not allocate all my compute only to one player and so that was the adjustment. And once you make that adjustment, you can’t build 10 gigawatts in Texas and say, “That’s it”, you’ve got to build a plant that is spread around the world, around the United States, and that adjustment is what we want to do on hyperscale. The other thing that I have to do is make sure we’re doing also the long-term thing for our investors, which is, “Let’s invest in ourselves”, which is inference compute has exploded, whether it’s in GitHub or whether it’s in M365 and we needed to make sure we fund our own applications. And then our own research compute, these MAI models. So I just took the approach of putting these three, we will definitely want to allocate as we see progress on all this and we’ll see how it all shakes out. But to me, I’m not literally matching quarter-to-quarter. By the way, the other interesting thing is the catch-up, we started early. You were early, and you got a lot of the good spots, a lot of the good power generation. SN: Yeah, and also two years of cash flow. Yeah, for sure. Well, speaking of the balance between the three, in January 2026 , you missed Azure earnings by like 0.1%, so it was very small, and you said on the call , you allocated more compute to internal R&D and applications. Setting aside the earlier question about whether or not you erred by the total amount of capacity, you talked in that call about having a portfolio approach in terms of investment, balancing Azure, and those two other businesses. That’s all well and good, but if there is a constraint, you do have to choose, do you think you made the right choice then? And is that the choice you’ll make going forward? Where you are at the end of the day, you have a higher lifetime value, higher margin on your own businesses, and that’s going to be number one. SN: Yeah, and also research compute. Ben, I think that for all of us, quite frankly, we have to really, at the end of the day, that’s why I think quarterly earnings are interesting, which is, of course, The Street should hold every one of us very accountable for “What did you do for me lately?”. But was that a very particular, annoying, being held accountable for the wrong thing? SN: It’s their job, everyone’s got to do their job, and so I can’t accuse them of them asking, “Hey, what did you do for me this quarter?”, that’s the question they rightfully should ask. And the right answer for me is, “I’ve done enough for you this quarter, and we’re also making sure that 10 quarters from now, Microsoft’s continuing to thrive”, and that’s the job, and sometimes there’s a little bit of disconnect on it. But when I look at the three things, you just have to be disciplined that you’re doing what you can add value, it can’t be, “Oh, I’m misallocated”. To your point, you get punished if you do things where you’re not producing. So that’s why research compute, here is now an MAI model output. Today, it’s just not a model output as an academic thing, that’s now in differentiating our Foundry where we now are able to license it, it’s going to grow Foundry revenue. And so as long as I’ve felt that as long as Microsoft can continue to invest in ways that show results, then we will have the ability to do the right thing in the long run and in the short run deliver results. For the last quarter, was there a bit of, “Let’s give a little bit more compute to Azure?” SN: Last quarter, no. In fact, that one was just a little more of the compute — we are supply-constrained. I know, but that’s what makes it so interesting. SN: We are not at all, like at this point, if anything, the thing that we do not want to do is to disappoint especially our enterprise customers on Azure. That was the question, right? Because if they look at that quarter and they’re like, “Hmm, Microsoft’s saying we’re supply-constrained and also we’re prioritizing our higher margin, higher lifetime value businesses, where does that leave me? I’m competing against my supplier”. SN: That’s one of the reasons why we had to make some very hard choices around, for example, raw GPUs. We’re not selling raw GPUs to a bunch of Neolabs, for example. I wish I could add more Neolabs on Azure, we just cannot. And so therefore, we are being very disciplined on some business that we turn away. Were those some of the conversations you had to have? SN: Yeah, and so to me, in a world where you have constraints, you want to basically make sure you’re building for both what the world expects and the customers who have trusted you in the longest and so we will definitely make sure that Azure has capacity, it’s just that we are not going to go for what I’ll call in this context, “easy money”. Which is, you can always, in today’s day and age, if you want to have short term Azure revenue, it’s pretty easy. Oh yeah, we’ve seen that , to say the least. SN: Yeah, all you gotta do is turn up, you know, and go sell it to a Neolab. So when it comes to AI infrastructure specifically, as you look out in the long run, you mentioned it may very well be rational for the frontier labs to build their own hardware, for example. You have all these Neolabs, you have whatever controls [Nvidia CEO] Jensen [Haung]’s allocation of GPUs, you have different ASICs, what is your true differentiation as a hyperscaler? Is it just lower cost of capital? SN: First of all, think of our hyperscale business as this portfolio, everything from what we are trying to get done is build a system which we have to be competitive in when it comes to tokens-per-dollar-per-watt, that’s one side of it. We can unpack that and what our thesis is there. Well, I just noticed when you were talking about some of your chips, sometimes it was tokens-per-watt, sometimes it was tokens-per-dollar. SN: Yeah, I think of all three, right? It’s like tokens as a function of both power and dollars and so that’s a systems thing that we have to be world class at and be competitive at. And I would be able to claim, and that’s where I think [Microsoft AI CEO] Mustafa [Suleyman] talked about it, like unless and until you build your own model, you can’t, there’s no point. I believe that you don’t want to build accelerators without building a model, you kind of have to co-design. In the long run, the only way to be super efficient on that is to think about, the network is a great example, which is you want the network, the model, all to come together in ways that make sense, so therefore that’s one side. Then the other side for us is the differentiation has to come from, “If I’m building agents on top of this infrastructure, what agents does Microsoft produce?”. I have three domains in which we are going to try and major on: coding, security, and knowledge work. Luckily these are three massive domains where tokens make sense — I’m not saying there won’t be others, science is another one we will enable but I think there will be others who will do great work in there. But to me the three primary domains in which all this is going to be exercised use. So when I think about the portfolio of building a system plus model plus these three domains, then I feel like that’s where our differentiation will come from. But is that just a re-articulation of circling back to, in the long run, our true differentiation is from our higher margin, our own businesses, higher LTV? Where does that leave just customers who— SN: I think it’s not higher margin. The overall margin dollars from our infrastructure business may be higher. In fact, they already are getting close to being higher than our total margin dollars from our high margin businesses. So I think that Microsoft has always benefited from having a portfolio of businesses, and we’ve been comfortable managing through it, where it’s not one margin profile. But in aggregate, we will have high ROIC, and we will make sure that we have an infrastructure business that’s got ROIC that’s commensurate with an infrastructure business, and we have a business that builds on top of it, which I’d like call it like the new apps are agents. So we’ll have agent businesses in security, in coding, in knowledge work, as the three big domains. We’ll get to agents in a little bit, but I didn’t expect to ask this question, big news this week, will you ever issue equity to fund this build out ? SN: Yeah, I just saw the news, I think Google just did it. Were you as surprised as everyone else? SN: I’m not sure, exactly, I’ve not studied it, it came last night, I think, so I’ve got to go understand what’s happening. But, it’s like maybe it’s the thing to do is everybody is going public or reissuing equity, maybe that’s the season. Gobble up some of the money. Is software dead? SN: I think software is alive, but the way I think this entire meme has come about is, like, if you take the SaaS question in particular, right? We built in a particular way where I had a data model, and then I had a business logic tier, and then I had a UI tier, I coupled the three, then had a business model. Integration is a beautiful thing. SN: Look at this, Ben, right now, we took what is the database that no one knows about underneath Microsoft 365 and said, “Oh, WorkIQ is available , it’s just a skill/MCP, and it’s out there”, and suddenly people are falling in love with, “I can now interrogate and have an agent continuously hit this database to reason over and plan over, act over from any place”. By the way, it requires a new business model. So, for example, when Cowork is using WorkIQ, that’s going to be a usage-based business model, so I think what needs to happen is we now need to take what we built, rebuild it for the agent era and change the levers of the business model such that you have a per-user business model and you have a consumption business model. So the hybrid business model, you do think that is going to be the future? SN: 100%. And once you have that then I think what happened between servers — even I had not understood it when we moved to the cloud, even I was a little worried about, “Oh man, we move to the cloud, we’ll sell the same servers”, and it turned out we sold a lot more subscriptions because people who never bought servers from us were buying subscriptions. I think that’s what’s happening already with agents, I see that on GitHub, I see that on M365, I see that on security, because everyone is building these agent systems that are continuously “working” and so what we built and thought of as the end-user compute is completely getting rebuilt. Is there a bit where, if you have to zoom out a hybrid system where a combination of per-seat but also usage, where does E7 fit in this idea, it’s like double the price, it seems it’s an attempt to respond to maybe a secular decrease in seats by increasing ARPU? Is that the right way to think about it? SN: The way you think about this is, see per-seat is a very important element still because what is per-seat? Per-seat is basically a set of usage entitlements, so anyone who is budgeting really will push you. That’s right, people don’t like usage, we’re seeing that right now , it could explode . SN: Exactly, so therefore you just want to take packaging or bundling of usage into proceeds so that there’s some way for people to budget. So I kind of think about the E7, E5, these things will continue and then you’ll always have the outcall consumption. People also talk about, “Hey, maybe people want outcome-based pricing”. Outcome-based pricing, we’ll be thrilled about some of that, but remember, outcome-based pricing is also called royalty. When a customer has a great outcome, they necessarily don’t want to share their outcome so I think what is really being thought about is, ultimately, there is real marginal cost to software, that’s kind of what it is, and that’s going to be priced through. When did that really click for you, the implications of that? SN: I think that I would say agents. Before agents, if it is still human interaction— Right, you can imagine a world where just like basic inference got super cheap and easy. SN: Exactly, the Moore’s Law itself. Like, if you think about it, if I just used Moore’s Law, get software efficiency, I used software for efficiency and drive that home for customers to have more functionality. In fact, I used to always think about, “Hey, how much more value did we add in M365 and not raise price?” — we didn’t raise prices for a decade plus. That’s all thanks to the software efficiencies on top of hardware. But now where you are, and if you have a thousand autonomous agents that are all working continuously 24/7 hitting Work IQ, then that is a lot and so that is where I think, and so the real test for me Ben is, that’s why evals, outcomes — no customer will use consumption or their seats if it’s not creating value for them. Therefore, they now are going to be a lot more disciplined on, “What exactly did this stuff do for me?”, “How do I measure it?”, “How do I get into the efficient?”. And if you think back to going back to the 80s or 90s, where back then it’s like, “Don’t waste time on optimization, the next processor will come out and solve all your problems”, is that now totally the wrong paradigm? SN: In some sense, you want that to happen, but you can’t just count on that. It will happen, but your prices will explode. SN: Exactly, and more importantly, you will be found out if you don’t optimize. Take that example we showed with Land O’Lakes today, which is, here’s an agent, and there is an outcome you care about, I was able to use a model that is using 500B, I was able to use a 5B, and have it really deliver the same outcome, why would I not use that? That does seem to be a very different thing about this period. It seems clear that’s going to be a huge thing in enterprise going forward, using the right model, optimizing, it’s like we didn’t get to the optimization stage of the PC era. SN: That’s right. I don’t think we ever did get there. SN: We never got there. Stuff’s still bloated as ever, because everyone just assumes it’s going to get faster, it’s going to be fine. SN: Exactly, because things were not priced for it. Once you have consumption, everyone will optimize. For E7, it does seem like the real lure there is Cowork . It’s like this new capability, it’s super powerful, it’s taking Anthropic’s Cowork, which is on your PC, now it’s in the cloud, has all the niceties around that, permissions, controls, all those sorts of things. Is that why it’s there? Is that the hook? SN: Yeah, there’s also the Agent 365 , so there’s a whole lot. Like always, these things, we’re going to take everything from what I’ll talk about as what is an end-user thing and an IT thing, bring it all together. You guys know bundling. SN: And security. Yeah, definitely, and they’re all about, ultimately, how do we get the value equation right such that the customer can cover, because right now, it’s kind of fascinating. You have an agent, you immediately say, “Oh, I’ve got to secure it, I’ve got to have observability on it, I need a sandbox for it”. So it’s just that if you don’t bundle, you kind of are sending the customer down the chase of five different things. With that, though, the reason I find that striking is you’ve talked a lot about — to what extent do you think the point of integration that really matters is it does seem to be increasingly between the models and the harness themselves ? You’ve talked about things like your CoreAI initiative and GitHub Copilot, a lot of which is, “We’re going to build the harness and you can slip the models in and out”, and that works right now for Copilot and you can choose your model and even then, from what I’ve heard, not quite as easy as you might think it might be, but it’s still there, the selector’s there. Cowork seems like, “Yeah, that’s right, it has to be the whole package and it’s important for us to have a selling point on E7” — that this feels like maybe it’s not easily substitutable. SN: No, it is. The same thing on Cowork. In fact, right now, the Cowork that I’m using is already mostly defaulted GPT. Okay, so it is going to be fully interchangeable? SN: We’re using the same harness that we use in GitHub and the same thing in security, too. So we have the same harness that’s a multi-model harness in which we will rotate through — obviously MAI by default gets trained in our harness, but we will have GPT, we will have Anthropic in there and any open weight model. We will allow anyone to take any of the models they fine-tune or build. In fact, they can take an open weight model from Fireworks, tune it, put it into Copilot, no problem. All right, so I am misinformed, so I will take the L on that. Explain what is Cowork then and what is the connection with Anthropic as far as that product goes? SN: Cowork, to me, it’s kind of like Copilot. I took the term Cowork, it’s part of there and it’s definitely got the Anthropic models in there. Cowork is — think of it as a form factor, the best way to describe it is we built a chat interface first for Copilot, then we now have built Cowork for Copilot, and now we’re building autopilots, as I described it there, think of it as the enterprise-grade OpenClaws. So basically, I think of these as different form factors of agents — chat was the first thing, Cowork is the next thing and in fact, you can even go back to the developer thing. Developers, how did we start? We started with code completions first, then we went to— I get all this, but I’m genuinely confused here, because I go back to the blog post . It says, “Working closely with Anthropic, we took what they’ve done with Cowork…”. SN: Yeah, that’s what we launched first. All I’m saying is it’s evolved. It’s kind of like, Copilot today. Got it, which started out with ChatGPT. SN: ChatGPT, now it has both Opus and GPT models. Got it, okay. SN: So, they’re going to be all over. All right. So, I wasn’t completely off the reservation. SN: That’s right. I failed to catch up, I will accept that. [ Editor’s Note: the FAQ for Cowork still says it uses Anthropic models, just like the original blog post ] SN: Every product of ours, you’ll have both Anthropic and OpenAI models, and MAI models, and your ability to put your own models, and that, I think, is the fundamental promise. Oh, by the way, I should mention this. The amount of auto — I don’t know how much you’re doing selection, I’m mostly auto — and so then one of the biggest pieces of work at Microsoft is all the training models to do auto-routing. That, by the way, is perhaps one of the biggest continuous learning things.** It’s interesting because I probably approach it more from a consumer perspective, so I just literally choose the app that I want to do something in or call from the CLI. What happened to Github Copilot? You’re talking about it very positively, but I think a negative spin would be two or three years ago, you were first to market with autocomplete, everyone assumed you got there, you won, and now it’s like, “We’re going to catch up with GitHub Copilot”. SN: I think what happened is this is one of those classic cases — remember, it was a tools business before, and now it is the business, who would have thought that coding is everything? Right, it should have been everything, but it seems like for some period of time, it wasn’t? SN: For us, I think what has happened is we have continued — there are two things that are happening in GitHub, before I even talk about Copilot, I should talk about GitHub. All these coding agents have shown up to work, and where have they shown up? In GitHub. And so the first thing that, quite frankly, I wish we had anticipated better, was the amount of agenting. The whole GitHub reliability thing is like one thing, but for Copilot specifically. SN: I’ll say the first thing, that’s kind of, at some level I take that job seriously, because job number one before you want to get to Copilot is go make sure that we are scaling, so let’s leave that alone. There’s a lot of people very unhappy about that. SN: Yeah, and we’re going to work it and they should have higher expectations of us and we need to deliver for them. Then the next thing is on the Copilot side, you’re absolutely right, we started by saying, “This must be just a code completions thing in the IDE”, we added chat, we added tasks, and guess what? Let’s give credit where it needs to be given. Anthropic showed up with a model. Well, this is like Cursor’s story , they ate your lunch even before Anthropic did. Or you’re saying that that was also an Anthropic story? SN: Not really, I mean it’s kind of like Cursor/Microsoft, it’s like Borland v us , it’s not like that was not the end all be all. It was really the Anthropic coming in with a completely different approach, a more agentic approach. SN: That’s right, with a different approach. With a model and what they’ve done there, and essentially the agent loop is what the change was. In fact, if you look at it, Cursor never, total volume-wise— They got eaten by the same thing, they’re facing the same challenges. SN: Also even the market share and so on — Cursor did fantastic, they forked VS Code, did a good job, lots of credit to them. But the real thing was agentic coding became real and now the good news is the agentic coding really drives — people want choice, we will be there, we will have our own models. GitHub itself and Copilot itself will have both the Anthropic and Claude. In fact, the rubber duck feature is my most favorite feature , which is I can use it to check the others. The headline announcement from this week, I guess is these new Nvidia-based PCs running Windows . However, the announcement I found much more interesting — or not an announcement, preview — Project Solara , viewing these devices as ways to access agents in the cloud, totally different center of gravity. I don’t know if it was you that said it or the presenter, something which I thought was really compelling, which is a limitation of wearables is if you have to interact with them continuously, they get very tiring, so their utility is fundamentally limited. But if you can ask an agent to do something, then you can go do something else and meanwhile, it’s running in the background. Super compelling. I guess the question is, this feels totally different than Windows — it was weird to start this keynote talking about Windows and the AI PC, and that’s nice, and local inference, but this is like, “Actually, what if everything was in the cloud?”. SN: Yeah, I always find this frame back from 2014 of ubiquitous computing and ambient intelligence and it’s becoming more and more real each day. First of all, the first part of it was, “I’m so thrilled to have these Windows machines”, and the fact that Jensen had that beautiful slide, the picture of him with all the desktops, I was like “God, yes, I’ve been waiting for it”, which is it’s great, so I think because it makes sense, it makes logical sense to have powerful silicon systems with power that really have it with unmetered intelligence. When I worked at Windows, I had to like furtively hide my iPhone and then it was okay to show up on campus with an iPhone, now I’m here with a MacBook Air — next time I interview you do I have to feel bad that I don’t have an Nvidia AI PC? SN: You will always have choice, Ben, and I hope you choose the right thing. I’m excited about that stuff because I think there’s unmetered intelligence, even there was one little feature that we showed, which is that ability to have eight agents running continuously, analyzing logs and so on, but all of them were unmetered. Right, but that feels like it’s a side project, side quest. SN: It’s kind of like a billion users all having that, that’s not a side quest. To me, it’s as fundamental as like I think the people are going to want for their knowledge work, for their security work, for their coding work, machines— They’ll want for themselves. Is this actually the new consumer/enterprise separation? SN: The enterprise — the business model, we had this long conversation about enterprises continuously optimizing — in fact, I think the biggest value prop of a Windows machine in the enterprise will be unmetered intelligence. So people are going to say, “Oh wow, instead of having my cloud bill keep going up, I’m going to have Windows machine and amortize it that way”, so I think that there is going to be a real value to — because in a world where you have infinite amount of tokens you want to consume, you want to optimize, and why would I not optimize using everything? I don’t know, I just feel like — as you know, I’ve been very impressed with the job you’ve done with Microsoft, ending the stranglehold Windows had on the company, I still remember I was actually in the Bay Area, I was sitting at the bar at The Westin by the airport typing The End of Windows , recounting all these things you did to not kill Windows, but not make it the center of gravity for the company. SN: And that I think is what goes to Solara. I don’t think Windows, we are trying to make Windows— SN: Solara, to your point, I thought it was a great question, because the thing that I want us to take a shot at is the following which is, “Can you think of a platform and platform rules, by the way, which are built for the agent era?” — because right now, what is everyone else who are “platform owners” who will try to move from the phone to this wearables will try to bring their apps to the same game, right? I want to open that up, so I would like, for example, like what we were able to do with Teams devices , and that’s where we built some of this sort of distribution capability, so I want to use that connected to this agent world so I’m excited I’m in MediaTek, Qualcomm. Well I have a great analogy for you, I think. So there’s a bit where I think you just circle back to the great job you’ve done as CEO — this is the butter-up portion of the interview — there is a bit where I think you benefited from following the follower as it were. Steve Ballmer’s one that had to go after Bill Gates and he for better or worse created the conditions for you to succeed, I think is one way to put it, is it possible that for this, your opportunity device space — like can Apple ever really make an agent that works everywhere as long as they’re stuck on the phone? SN: That’s a great question. That is the question for all of us which is you know the reality is it’s easy to say for someone who’s been so successful with something that in face continues to have a lot of success and say, “I’m going to burn it all down and build something else”. But to the point, the way they’re architectured, everyone’s vertical. SN: Exactly, it’s not natural. Like you think about it, we’re saying, “Building agents is easy”, the SOCs are jumping out everywhere, they’re there, the silicon is easy, the system is easy, the operating system is built, and now you’re telling me that I have only one choice for an ambient thing in a hotel, in a restaurant, in a healthcare setting? It makes no sense. So therefore, I imagine that building these ambient devices using Project Solara will be as easy — if you’re successful a year from now, everybody, even in the enterprise, is going to say, “Oh, I’m just going to order a bunch of these things from a no-name ODM who just built it for me”. I think it’s super smart to start at the enterprise only. Do you have dreams that maybe this will eventually spill over? SN: Right now, I want us to again do what I think is natural, like where am I seeing people— Well, that’s where you have the Microsoft 365 environment, you have all the context there. SN: And also the agents, where would people build agents? The thing is, the consumer one will be like, “I need the one agent I want”, so it’s not like I’m not building a Copilot device, I’m building an agentic platform where the healthcare provider can have their own agent, so that’s the right place for Microsoft to start, let’s see how it goes. One last question. You had a data center segment appropriately focused on communities, you talked about things like paying your way for electricity, not using water, building up the tax base, education, etc. Why not just pay the residents ? Just pay them a dividend? SN: I’m open to all ideas here, I’m not close-minded at all because at the end of the day, I think the fundamental thing you’re asking about is, “How does this industry, including Microsoft, have permission to do what we’re doing in terms of infrastructure build out?”. My theory is we get to everything backwards in the US, this is how we back into UBI [Universal Basic Income], is we’re just paying people to build data centers. SN: Yeah. And I mean, one thing that I have an issue with things like UBI and so on are the— I’m anti-UBI. That’s how you get there while being anti-UBI. SN: I want people and communities to have control, have agency, humans to have real dignity in their work and you’re 100% right in saying, “Look, we have to do what it takes to get that permission”. And so right now, there’s so much about our industry that’s so glorious, so good, so great. What about the you’re going to lose your job part? SN: Yeah, that’s the problem. Self-obsession about our own glory and our own — if you’re not creating opportunity, why would anybody want you to succeed? That’s the fundamental memo that needs to be re-sent to everyone across our industry, and then we have to live up to it. Satya Nadella, great to talk to you again. SN: Thank you so much, Ben, as always. This Daily Update Interview is also available as a podcast. To receive it in your podcast player, visit Stratechery . The Daily Update is intended for a single recipient, but occasional forwarding is totally fine! If you would like to order multiple subscriptions for your team with a group discount (minimum 5), please contact me directly. Thanks for being a supporter, and have a great day!

0 views
Unsung Today

Good type against all odds

This is not italics. This is not even oblique . This is a side effect of how those displays work. Instead of a whole rectangle of pixels being changed at once, the display is updated line by line, starting from the top one. As it’s moving towards the bottom, the internal horizontal position might have already advanced, the subsequent lines will be drawn slightly to the left, and it all leads to a slanted appearance. (This is in effect the same problem as rolling shutter in photography.) The interesting thing is that it could’ve gone the other way. Twice. In English or German, we treat scrolling left to be natural, and we consider only one direction of italic slant good. The first has to do with the direction of reading. I believe the second is, like many things in typography, customary; there’s nothing inherently better than right-leaning letters, except we’re used to them since those are the only ones we see. But, the person putting it all together could’ve just as well done it the other way: scrolling to the right, or slanting to the left (by updating the display bottom to top – not as unusual as you might think!). Were those intentional choices, or was it a default? I’m not sure, but it points to the value of knowing this stuff, or creating a culture where this stuff is treasured. Often, more craft will require more work. Sometimes, however, you will get it for free – but only if you choose the right fork in the road. While we’re here, how about a few other examples of delightful moments in typography where I did not expect them? These, I believe, will be all intentional. But whether you consider them craft, or even good, I don’t know. Here are some surprising small caps: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/2.1600w.avif" type="image/avif"> Here’s a cute depiction of a train carriage, somewhat hampered by the limitations of a similar workhorse 5×7 pixel font display: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/3.1600w.avif" type="image/avif"> But here’s something even better. This icon of a stadium cleverly leaned into the same limitations. It’s so delightful. These are, I believe, four characters side by side: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/4.1600w.avif" type="image/avif"> Here, someone added nice decoration to fill out the space: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/5.1600w.avif" type="image/avif"> Here, someone removed all the line height to create a fascinating vertical ligature. This is Gorton and the letters are carved into the plastic, so this required some effort! = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/6.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/6.1600w.avif" type="image/avif"> Speaking of obliques, this NOT is too thick, and slightly too large, but you have to appreciate someone actually slanting the text rather than underlining it, or decorating in a simpler way: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/7.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/7.1600w.avif" type="image/avif"> Even if you underline, you can go a little… well, below and beyond: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/8.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/8.1600w.avif" type="image/avif"> Or, here, with maybe the most impressive, three-dimensional underline I’ve ever seen: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/9.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/9.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/10.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/10.1600w.avif" type="image/avif"> This I spotted on an old typesetting machine, and I would like to believe this is an intentional easter egg: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/11.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/11.1600w.avif" type="image/avif"> This was on a computer keyboard. You don’t expect hyphenation in this context… = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/12.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/12.1600w.avif" type="image/avif"> …and you definitely don’t expect an old-fashioned contraction: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/13.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/good-type-against-all-odds/13.1600w.avif" type="image/avif"> #above and beyond #craft #details #real world #typography

0 views

Is datacentre sovereignty really that important?

In the UK (and I'm sure elsewhere) politicians and commentators are falling over themselves to suggest that without huge fleets of datacentres built in the UK that we are going to be hopelessly left behind. I'm not convinced this is the case, and it risks really falling into the same (mostly misguided) obsession many politicians have for heavy industry revival. This is going to be a rare UK-centric post on my blog. Apologies for my mostly global readership; the argument may be different where you live. One of the first (and most easily dismissed) arguments I've heard is that without datacentres close to the users, the latency will be too high to use AI services. This would therefore make them too slow to use. Clearly, this isn't the case. Nearly all AI use cases are not hugely latency sensitive. To put this in context, the time to first token (how quickly the AI responds) on Opus models is between 1.6s and 3.6s. The round trip latency introduced from the UK to the East Coast of the US is around 80ms, to Europe 10-20ms, and to Asia around 200ms. So the latency on the providers side is orders of magnitude higher than the latency for a UK based user to reach an overseas datacentre. It is fair to say that real time voice or video applications benefit from lower latency than these typically text based use cases. But these are a tiny fraction of AI usage (at the moment) and even in that case European datacentres can provide reasonable latency for these - it doesn't have to be in the UK itself . And my personal belief is that real time audio based agents are likely to work best when they can run on device entirely (so there is 0 network latency) - so without a data centre requirement at all. Regardless, many of these same commentators also suggest locating datacentres in the very north of Scotland (to take advantage of the excess wind power), but ironically these would have significantly worse latency for users from the densely populated south of England - Paris, Amsterdam, etc all are closer, and thus faster to respond. The next argument that is often floated is that it becomes a tax base - in the UK business rates are applied to commercial buildings and are paid to the local authority in question. The formulae for calculating this is in true UK tax law style overly complicated, but in essence it works on the rateable value of the building in question - what the estimated annual rent would be to rent the property - including relevant fit out. This is then multiplied by 0.508 to arrive at the annual business rate value. To take a very rough example, my research found that buildings 5-8 in the Virtus London campus can support 100MW [1] of load. These are valued as far as I can tell at around £12m/yr of rateable value. So the local authority (London Borough of Hillingdon) gets approx £6m/yr from this in business rates. If we scale that up to 1GW, it's fair to say that the local authority might get somewhere close to £100m/yr of business rates. While this is not nothing - and certainly gives local authorities a valuable source of revenue - it really is a rounding error under the current system . If we moved every single datacentre under construction globally (30GW) to the UK instead, it would bring in approximately £3bn/yr, or around 0.2% of government spending. Detractors may say that this is the current system and the tax base could be changed. But by doing that you massively reduce the attractiveness of the UK as a place to build the aforementioned datacentres. And the potential tax rates to be at all material would have to be punishingly high. This combined with the extremely high price of electricity in the UK would make it completely unfeasible to operate them in the UK. It's a similar story with jobs. Datacentres are famously light on permanent staff - the whole point is that they're highly automated, so even a large 100MW site might employ only a few dozen people once it's running. The construction phase is more labour intensive, but temporary, and much of the capex (the chips especially) is spent overseas rather than in the UK. Even on generous assumptions the direct contribution to a ~£2.8tn economy is a rounding error. The final and perhaps most plausible sounding argument is that in the event of political instability it would give us control over AI usage - which is and will be a growing national priority. There are really two versions of this argument. The cruder one is outright seizure, which I'll come to. The more serious one is that in a global compute crunch, having the datacentres physically here means we won't be left at the back of the queue. But this doesn't survive contact either. If a hyperscaler or a frontier lab owns the racks, a datacentre in Slough serves their global demand - not ours. You can't compel a private operator to give UK users preferential access just because the building sits on UK soil. Location buys you almost nothing. The real leverage here is to contractually lock in the compute - which is something the UK government could do, regardless of where the datacentre is. Onto the cruder version, then. I've even heard certain people suggest that in the event of major turbulence in the world the state could seize control of them. The issue with this is multifaceted - but I think has three main failings. Firstly, this is not a steelworks or power plant. The underlying value is not from the datacentre, it's from the models running on the datacentre. If we assume AI model development continues, the value of a 'seized' datacentre decays rapidly. Imagine the UK government had seized control of a frontier labs datacentre at the start of 2025. They'd have access to GPT4o, or Sonnet 3.7. These models are now outclassed by open weight models that you can run on a relatively powerful laptop. They have virtually no value. Secondly, it completely underestimates the supply chain that modern software runs on. It's highly likely that if the geopolitics had got so bad HM Government was nationalising frontier lab datacentres, the frontier labs would remotely wipe the servers before they could be "seized". And that's not to mention that models have loads of supporting software and operational infrastructure that is not colocated with the models themselves. The concept of the SAS seizing servers running frontier models before they can be wiped in the dead of night is probably best kept to Tom Clancy novels - not government policy. Finally, if we are in some alternate reality where the UK/Europe has been cut off from frontier models, we are almost certainly also cut off from most/all cloud services from big tech, which means no (or much reduced) email, video conferencing, card payments etc. Not being able to run Claude is probably the least of society's worries. By no means am I suggesting that AI datacentres shouldn't be built in the UK - they should - and we should reform the planning system to make it easier to build them. But it's important to get this in perspective. Modern information societies are a huge tangled web of globally interconnected pieces of software. Every day you browse the internet you are connecting to thousands of servers located in dozens of countries. Each one of those servers is sending your requests to various other providers - to store and process data. There are genuine requirements for data sovereignty. It may be preferable to host sensitive health data only in the UK, for example. But that's a simple regulation problem (if desired) - require UK based datacentres for this type of data, including AI usage. But this is a tiny sliver of total AI demand. And the world is too complicated to dream in this "Blitz spirit" self sufficiency era, especially when it comes to digital services. The UK in my opinion has many structural advantages for harnessing the economic power of AI. All of the major frontier labs have significant - and growing - labs and offices in London. We have world class researchers and institutions on the cutting edge of AI. And the UK takes the majority of European tech funding. In my opinion, we need to lean into those strengths and ensure we continue to attract and grow these companies and talent. Not worrying about where exactly we should put huge sheds. Datacentres are measured by the amount of servers it can power, in watts (or megawatts (MW) millions of watts/gigawatts (GW) - billions of watts). ↩︎ Datacentres are measured by the amount of servers it can power, in watts (or megawatts (MW) millions of watts/gigawatts (GW) - billions of watts). ↩︎

0 views

Anti-AI nostalgia and the cult of the past

Programmers were better back in the day, weren’t they? Back when we had real programmers. Not just people who got paid to write code, but people who lived it, who were obsessed with their craft, and whose code was a lively expression of themselves. Hackers were hackers in those days before money took over the industry. Don’t even get me started on LLMs. Could there be a better example of today’s degenerate spirit? A machine to mass-produce software (not good software, just barely good enough), so that the weak minds that dominate the industry can indulge their obsession with quantity : of slop code, of features, and ultimately of money, which is the only way they can understand value. If they weren’t destroying our way of life, they would be pitiable. All of them together don’t have a fraction of the spiritual integrity of someone like Mel . But as it is, we must band together to crush them and drive them from our industry like the parasites they are. Okay, that’s not actually what I believe. But there sure are a lot of posts 1 and comments on the internet that sound a bit like the paragraph above. Here are some older quotes that might sound similar: …the third collapse, in which power tends to pass into the hands of the lowest of the traditional castes, the caste of the beasts of burden and the standardized individuals. The result of this transfer of power was a reduction of horizon and value to the plane of matter, the machine, and the reign of quantity. 2 Usura rusteth the chisel \ It rusteth the craft and the craftsman \ It gnaweth the thread in the loom 3 The actual accomplishments of the past will nevertheless remain accomplishments, while the artistic stammerings of the painting, music, sculpture, and architecture produced by these types of charlatans will one day be nothing but proof of the magnitude of a nation’s downfall. 4 These are all from the writings (or speeches) of famous fascists: Julius Evola, Ezra Pound, and Hitler himself. Mussolini’s Doctrine of Fascism begins by defining fascism as a “spiritual attitude”, which the fascist man adopts in order to regain the mysterious qualities that were lost by the transition to modern life. In his classic Ur-Fascism , Umberto Eco’s first two defining features of fascism are the “cult of tradition” and the “rejection of modernism”. So when someone tells me that the industry has lost its way and we must deny the corrupting influence of modern technology in order to retvrn to the time of virile real programmers (who understood and appreciated the spiritual dimension of programming), I get suspicious. It’s strange to describe anti-AI sentiment as potentially fascist, since a very popular argument is that LLMs themselves are an inherently fascist tool. Surely both sides of the debate can’t be fascist? I do think that the structure of fascist arguments is generally persuasive , and that many avowedly anti-fascist groups do sometimes fall into this trap: describing the world as a struggle between the spiritual power of the macho, traditional man and the corrupting influence of degenerate (often foreign) capital. For instance, I am a big fan of Lord of the Rings. I’ve read the series and watched the films multiple times, and even made a failed attempt to learn Elvish as a kid. But it’s hard to deny that fascists absolutely love Lord of the Rings. “Marble statue of a Roman emperor” might be the most popular avatar for fascists on the internet, but Aragorn is the second most popular. Neo-fascist movements in Italy explicitly take up Lord of the Rings as a foundational text. Why? Because the core conflict in the text is between the traditional, nostalgic heroism of the Shire and Gondor, and the corrupting modern industrial (partly foreign ) influence of Saruman and Sauron 5 . I don’t think Lord of the Rings (or anti-AI rhetoric) is intrinsically fascist. In fact, the surface-level reading of the text is anti-fascist: the plucky people of the West banding together to fight Sauron’s command-and-control totalitarian society. But I can see why fascists love it. One common historical touch-point for anti-AI folks is the Luddites, who were a violent conservative labor movement in early 1800s England. Anti-AI blogs adopt Luddite language like “smashing frames”, and positively cite the Luddites as “the go-to enemies of fascism since its inception”. I’ve written at length about what we can learn from the Luddites in Luddites and burning down AI datacenters , but one point I think is under-emphasized by the (generally pro-Luddite) books is that the Luddites were a little bit fascist themselves . Brian Merchant’s Blood in the Machine is the most popular recent book on the Luddites. I enjoyed it, but Merchant’s attempts to paint the Luddites as a friendly, left-wing, proto-feminist movement 6 seemed really unconvincing to me. From the writings of the Luddites, it’s clear that they were interested in protecting the rights of their all-male elite guild fraternity. Here’s one Luddite threat to a workshop that explicitly includes a threat against the female workers 7 : We think it quite inconsistent with our duty as men, as husbands and as fathers to suffer ourselves to be ruined any longer by a set of vagabond strumpets and those gibbet-deserving rascals that are looking over them. We will lead them to their satisfaction. We sincerely hope, gentlemen, that you will discharge the bitches and take men into your employ again, or they must take what they get. These were fundamentally conservative people who felt (correctly) that modernity had deprived them of their elite status, handing it instead to lower-paid inferiors: women, vagabonds, and foreigners. The Luddites were obviously not fascists 8 . However, the basic ingredients were there: wounded pride, a masculine elite identity, hatred of modern economics, and violence aimed at restoring their previous position in society. The currents that produced Luddism are the same currents that guided so many unhappy people towards fascism. When things are looking grim for an elite group, they often turn towards any movement that promises a return to an idealized past. If my blog has themes, one of them is surely that many software engineers labor under a delusion that their job is to be excellent at their craft. Of course, wanting to be an excellent programmer is not a delusion; it is a completely legitimate value to hold, and a legitimate purpose to pursue. It’s just not what you’re paid to do at work. Your job , unfortunately, is producing shareholder value . This delusion has been punctured by the end of ZIRP , and again more recently by the rise of AI coding. In this environment, I worry that some software engineers will form exactly the kind of disillusioned elite that was the audience for Ezra Pound’s poems about “usury” or the Luddites’ campaign against unapprenticed (often female) textile workers. I worry that AI, and the companies that build AI, are becoming an enemy against which anything is permitted: an enemy which in Umberto Eco’s words is “at the same time too strong and too weak”, unable to reason and yet powerful enough to drastically reshape the global labor market for the worse. The enemy of fascism is nuance. Fascism presents a good, clean, rousing story about a spiritual conflict between right and wrong. It is anathema to fascism to stop and muddy the waters a bit: in this case, to explore the ways in which LLMs, like any transformative technology, can both support and endanger traditional values. In The left-wing case for AI I wrote about how AI is being used right now as a disability aid, and many disabled readers wrote in to share their positive experiences with LLMs, and often how alienated they feel by the anti-AI mainstream on the left. I recently got an email describing how there’s a sudden flood of accessibility software for blind people 9 that’s actually built by blind people , who can now iterate with a LLM to get a product that meets their needs. Framing AI as an ontological evil erases experiences like these. Being anti-AI is not inherently fascist. Many of the anti-AI posts I’ve quoted are thoughtful, sensitive pieces exploring how the author thinks about one of the biggest changes to our industry. I still think the world needs more articles like that, not less, but the more of them I read, the more I recognize the tropes: spiritually pure lovers of the craft, degenerate peddlers of corrupt modernism, a need to return to the traditional ways of the hacker, and a lament for the (potentially) waning power of an elite fraternity of programmers. I know I’m tiptoeing around the worst argument in the world . It isn’t a refutation of anti-LLM arguments to say that they are structurally similar in some ways to fascist arguments, any more than it’s a devastating critique to say the same thing about Lord of the Rings. Sometimes it is good to try and halt the march of progress! Some of our past traditions really were purer and more spiritually robust! It just bothers me, that’s all. I used to read The Story of Mel with unalloyed pleasure. Now it makes me nervous. If you believe you’re fighting the embodiment of fascism , or for the idea of value itself , what tactics are off-limits? What positions might you eventually come to accept? It feels wrong to directly associate my caricature with any actual posts, but it also feels wrong to make a blanket assertion without examples. Just so you know what I’m talking about, here are some posts that have elements of this attitude. I like some of these posts and dislike others. Page 329 of my copy of Julius Evola’s Revolt Against the Modern World . Ezra Pound, Canto XLV. “Usura” should be read as “usury”, or today we could gloss it as “capitalism”: all Pound’s examples of great art were from the pre-capitalist patronage era of art. Adolf Hitler, from his speech at the 1933 Party Congress in Nuremberg. Of course, there’s also historically been a strong pro -technology current in fascist thinking (even specificially Italian fascist thinking ). Page 134 of Blood in the Machine has a brief argument that Luddism was feminist because the (exclusively male) artisans’ wives would provide food for their meetings. No, really. From Kevin Binfield’s Writings of the Luddites , page 40. I’ve taken the liberty of re-rendering it in modern spelling and grammar. Aside from being too early, they didn’t have any connection to the state apparatus of power (in fact, they were ultimately crushed by it) and they famously lacked a singular leader. The example cited was BlindRSS . It feels wrong to directly associate my caricature with any actual posts, but it also feels wrong to make a blanket assertion without examples. Just so you know what I’m talking about, here are some posts that have elements of this attitude. I like some of these posts and dislike others. ↩ Page 329 of my copy of Julius Evola’s Revolt Against the Modern World . ↩ Ezra Pound, Canto XLV. “Usura” should be read as “usury”, or today we could gloss it as “capitalism”: all Pound’s examples of great art were from the pre-capitalist patronage era of art. ↩ Adolf Hitler, from his speech at the 1933 Party Congress in Nuremberg. ↩ Of course, there’s also historically been a strong pro -technology current in fascist thinking (even specificially Italian fascist thinking ). ↩ Page 134 of Blood in the Machine has a brief argument that Luddism was feminist because the (exclusively male) artisans’ wives would provide food for their meetings. No, really. ↩ From Kevin Binfield’s Writings of the Luddites , page 40. I’ve taken the liberty of re-rendering it in modern spelling and grammar. ↩ Aside from being too early, they didn’t have any connection to the state apparatus of power (in fact, they were ultimately crushed by it) and they famously lacked a singular leader. ↩ The example cited was BlindRSS . ↩

0 views
iDiallo Today

Now that your newsletter is AI-generated, I've Unsubscribed

I've remained subscribed to some newsletters for over 20 years. The authors managed to keep my attention all that time. But then, one day, they decided to switch to an AI-generated newsletter without making any announcement. After a couple of weeks of blue high-tech image thumbnails, I simply hit unsubscribe. Here's what happened: a person earned my trust. He maintained that trust for all those years. But then he thought the best way to improve was to take himself out of the equation. If you're just going to present me with prompt-generated content, I hate to break it to you but I have access to ChatGPT, and I can do that myself. The reason the human voice matters to me is because there's real experience behind the words. The oldest newsletter in my inbox is from when I was just 12 years old. It was from a French writer I used to read. After a decade of following him, the emails stopped coming. I was only reminded a few years later, when the emails started coming back. I didn't jump on it immediately. I didn't even remember who it was. But when I read one at random, the words were different, the tone was nostalgic, and the name was unfamiliar. I dug deeper and found that the author's son had taken over the newsletter. That was my cue to unsubscribe. But he hadn't used AI to replace his father's voice. He didn't use any tricks to garner clicks. Instead, he announced that his father had passed away and that he would share some stories. I remained subscribed until the last story was released. I rarely sign up for any newsletter. If I do, it's intentional because I'm interested in what the author has to say. It's not much deeper than that. There is a big difference between a newsletter written by a person, one that breathes and wanders and sometimes takes his time. Compared to the rapid fire, mechanical hum of AI-generated content. One feels like someone is thinking with you. The other feels like a monetization strategy.

0 views

Why are there no good tablets at the moment?

A friend was looking for a new tablet, and they asked me for a recommendation. And… I just don’t have one. The only good tablet, because Android can be replaced with GrapheneOS , was the Google Pixel Tablet, and that is no longer available. Secondhand prices are sky high. That was my go-to recommendation for a while. But it looks like Google has abandoned this project too. Amazon’s range of FireOS tablets are, IMHO, bloated with crapware which one cannot easily remove. Even the Fire-Tools scripts only get one so far. I can’t recommend one. There are some fun-looking “tablet computers”, but they are all expensive. A secondhand Surface Go, if one wants a Linux-based tablet, is readily available and pretty cheap, but honestly not what most people will want. And, while I like it as a cheap, touchscreen, Linux machine, it is not particularly powerful, which can be frustrating. And getting the camera working is a nuisance. I guess that there are some iPads, if one is accepting of Apple / iOS. Again, that wouldn’t be my choice, but I can see why some people like them. Why is there no good (non-Apple) tablet at the moment?

0 views
Kaushik Gopal Yesterday

OpenCode power user tips

In this post, I’d like to talk about some power user tips for OpenCode - an open source , model agnostic harness that more people should be using. Hopefully some of the advanced use cases convince you to give OpenCode (and OpenChamber ) a shot. intermediate to advanced tips only I am specifically choosing to talk about some advanced tips in this post. If you’ve never used an agent harness or are looking to learn how to use OpenCode, this post can be useful but reader beware. While (Ctrl + P) will list out all the possible commands (and is helpful), OpenCode has the concept of a “leader” key (which defaults to ). The leader key allows you to execute targeted useful commands more quickly and there’s a slew of useful ones pre-defined 1 . People reach for whole terminals and extra tooling to juggle between agent sessions. I too had an overly customized tmux setup that looked like this: OpenCode simplifies this. Just hit and you view current sessions and can instantly switch to that session by just selecting it from the list. The ability to quickly rename a session from this view is a godsend for me and what lets me be organized. session directory filtering you can pass a flag to when launching it, which filters the session list to just this workspace/directory by default. You can alternatively not pass that flag, and the session list will show all sessions. Forking takes the session you’re in and spawns a new one. You branch off into a separate conversation while the main agent keeps grinding on whatever you left it doing. I love this feature and even cobbled my own version with tmux long before most harnesses shipped it. Claude Code, Codex and other harnesses have caught up and support this feature. But OpenCode’s UX is the smoothest. You simply type in your chat. It gives you the option to fork the current chat or from a previous point in the message. You can then rename the forked session right from the list ui, and jump back and forth. The easy session switching again comes in handy here. Need to rewind to an earlier point in the same conversation? In OpenCode, there’s no escape-escape dance. leader g shows you a timeline and you can revert the conversation instantly, fork a new session from there, or just copy the message text. Probably one of the main reasons I find it hard switching away from OpenCode. I can bounce between GPT-5.5, Kimi K2.6, and Opus by just hitting 2 . change model & reasoning + switches the model on the fly. changes the reasoning type. I see a future where we will have smaller models we can run locally. OpenCode can point to that ollama model you have running on your own machine too. Click here if you’re curious about my model choices. Not everyone realizes this but OpenCode ships with LSP servers built-in . This means the coding agents inside OpenCode understand how to navigate different programming languages better. You’ll find less file search and grepping. Anthropic even recommends LSP server integration as an advanced move for making harnesses behave in large codebases. OpenCode gives you much of that for free. The other reason I swear by OpenCode: hit to cycle through custom agents. Here’s a few I use a lot: view the subagent work When an agent fans work out to subagents, + pulls up the subagent view so you can watch them work. Like others, you can use OpenCode for scripting and one-shot reviews: So up until now, I’ve mostly talked about features in the context of the TUI. My good friend YY recently introduced me to OpenChamber and it’s changed a lot of things for me. OpenChamber is an OpenCode GUI wrapper. OpenCode already has a web client btw. But OpenChamber has a lot of nice bells and whistles. But here’s the kicker, it’s using your same OpenCode server. In a previous post I dug into OpenCode’s server-client architecture: you run OpenCode as a server and connect multiple clients to it. A client can be a terminal tab, your phone, a desktop, a browser — each an isolated session pointed at the same server, fully synced. OpenChamber is just another client, but a super powered GUI one. This feature has taken the world by storm; especially since Codex introduced their implementation. OpenChamber gives you this feature for free with a super nice UX. One button click and either using or internally, it opens a secure 3 tunnel that you can connect your phone or another client to. So now, your phone controls OpenChamber and by proxy OpenCode exactly as you would from your computer. This was possible with OpenCode and tailscale too (as I mentioned in my previous post) but OpenChamber’s UX and secure tunnel approach makes this fluid. I almost never take my work laptop with me, when I’m getting out of the house now. Just speaking to my phone and a browser tab that has OpenChamber open. The other OpenChamber feature I lean on: multi-run. You have a prompt and want to try it across several models at once. I think Cursor was the first to introduce this feature. OpenChamber provides a super nice UI for this. This is how I’ve been kicking the tires on Opus 4.8 and updating my model choices . There’s just one caveat to be aware of. OpenChamber by default probes for a running OpenCode server. If it doesn’t find an OpenCode server there, it will silently spawn its own. So if you truly want all your sessions in sync, you should start your OpenCode server on port first, then open OpenChamber regularly and it’ll attach to the one you already have. I have a handy shell alias to just start a background OpenCode server now like so: If you didn’t read this tip in time, and need to kill previous OpenCode server instances, I suggest the handy procs cli command. There’s a lot more to both OpenCode and OpenChamber, but this is the stuff I reach for daily. The bit that’s stuck with me most is the one-server, many-clients setup — run a single OpenCode server and point everything at it: the TUI, OpenChamber, your phone. Steal whatever helps here, and if there’s a tip I’m sleeping on, send it my way. OpenChamber v1.12.0 tunnel bug Heads up: OpenChamber v1.12.0 added a headless web app mode, and remote instance switching now changes the OpenChamber API endpoint without loading the full remote UI. This seems to have busted the remote mobile tunnel setup I describe above. :/ The developer is responsive and working on a fix 🤞. Until then, I recommend sticking to v1.11.7 , which you can download manually. You can also bind commands that don’t have a predefined key. As an example, I bind the “Exit the app” command to so I can quit OpenCode quickly.  ↩︎ yes yes, you’re probably nuking your prompt/KV cache, but you shouldn’t have long running conversations anyway.  ↩︎ one-time + TTL + revocable connect link  ↩︎ + switches the model on the fly. changes the reasoning type. red-team — think differently from the implementer with an independent adversarial lens and hunt for failure modes. ghostwriter — drafts messages, posts with a less AI tropey voice. brainstormer — custom agent that’s explicitly tuned to help me brainstorm ideas, plans etc. pr-reviewer — strict reviewer that ignores past conversation and reviews with fresh eyes. kimi-coder — a coding agent guardrailed to Kimi: fast, cheap implementation. agent-kombat — see my agent-kombat post. I have it wired into a custom agent for quick use. You can also bind commands that don’t have a predefined key. As an example, I bind the “Exit the app” command to so I can quit OpenCode quickly.  ↩︎ yes yes, you’re probably nuking your prompt/KV cache, but you shouldn’t have long running conversations anyway.  ↩︎ one-time + TTL + revocable connect link  ↩︎

0 views

Services in Space

☕ Welcome to Lattes & Stories! Today, I’m taking you back to 2010, to the worst job interview of my life and the internship that followed at a space company, working on an architecture that was about to quietly reshape the entire software industry. I was 22, my English was terrible, and I could feel something important was happening. Get cozy, grab a coffee, and let’s begin! 🔔 If you only want to receive notifications for the traditional Concepts posts, you can configure your notifications in your settings . Interviews December 2010. I was finishing my last year at a French engineering school. I’m not sure if it’s the same in all countries, but in France, most engineering degrees require a 6-month internship to graduate, and I was looking for mine. I was searching for a good internship when, at some point, an ex-student who graduated the year before me sent a message to the school mailing list about a company called Ariba 1 that was looking for interns. San Francisco-based . I read the email and thought: “ Why not? ” With a friend of mine, we decided to apply and got an interview with their tech team. Let me tell you something first. At that time, saying my English wasn’t great was an understatement . I could read it reasonably well. Speaking was another matter entirely. And this was going to be my first job interview in English. To prepare, I had written a long document with answers to the most common interview questions, something I could read from during the call. My interview was scheduled on December 21st. The pressure was starting to build. The day came, I joined the call, and what followed was not one of the worst interviews of my life. It was the worst interview of my life. “Hello?” “Hi, is this Teiva?” “Yes” “Hi Teiva, this is … [Two minutes of him talking without me understanding a single word] ” Do you know how long two minutes can feel when you’re supposed to be having an important interview and you realize your English is too bad to understand anything? The longest two minutes of my life. At some point, he stopped, and I assumed it was my turn to speak. I started reading the speech I had prepared on my screen. Except I couldn’t read it. The stress had generated enough heat to fog up my glasses completely . I took them off, but I’m nearsighted, so I had to put my face about 10 centimeters from the screen just to see the words. Take a moment to picture that… The interview continued, and it was an absolute disaster . That same night, I met my friend who’d had the same interview. We had probably one of the biggest laughs of our lives when he told me he’d made the interviewer repeat even the very first “ Hi, is this Marc? ” sentence. Anyway. In my head, it was time to move on. In parallel, I had applied to another company and ended up getting a yes there (the interview was in French). Moving forward to the end of January. My internship was starting the following week. Everything was settled for my move to Toulouse . I was at the supermarket, standing in line at the checkout, when I received an email: To this day, I still don’t know what happened. I swear this isn’t false modesty, but my performance during that interview had been frightful to say the least. I was thrilled, but I had already signed with the other company. The timing was too tight, and I didn’t feel comfortable walking away from a commitment. I ended up turning Ariba down . The other company, the one I ended up doing my internship with, was Astrium , a space company known today as the space division of Airbus Defense & Space . The domain was really interesting. Astrium’s team was building software for spacecraft control centers , the ground systems responsible for monitoring and commanding satellites in orbit. Think sending telecommands up to the satellite, receiving telemetry back down, and making sure nothing goes wrong. The title of the internship? Service-Oriented Architecture (SOA) for spacecraft control centers. For those who may never have heard of SOA , let me give you a quick historical introduction. In the old days of IT, the unit of deployment was the application. When we bought a new application, there was no strong standardization for data exchange ; nothing like the REST or gRPC interfaces we take for granted today. We could rely on complex standards like CORBA , which was designed to exchange data across applications, or we could build our own communication protocol on top of TCP, for example. Either way, integrating with a new application was painful. From that pain, an idea started to take shape: what if the granularity switched from the application to the service ? What if a standard contract could act as a middle layer between two applications, reducing coupling and making the whole system easier to evolve? Does that sound familiar? It has strong similarities with microservices as we know them today. The main differences between SOA and microservices, in my opinion: SOA came with a design-time registry for service discovery, such as UDDI , and other governance layers that simply don’t exist in microservices today. The granularity was different. There was no concept of micro . Containers weren’t yet popular, and applications were harder to scale, so services were mostly macro in scope. It’s hard to fully convey, but I was already fascinated by service architecture back then. To me, it felt like a revolution, and joining a company that was at the very beginning of its IT transformation and trying to make the case for why services mattered was a dream internship. The first part was mostly about that: exploring SOA, building transferable knowledge, and convincing people about the benefits. Astrium wasn’t the only one thinking along these lines. There’s an international consortium of the major space agencies of the world, in charge of defining standards for space data systems, called the Consultative Committee for Space Data Systems (CCSDS) . Founded in 1982, it brings together NASA , ESA , JAXA , CNES , and around 26 other agencies. The motivation was easy to understand: most existing spacecraft control center architectures were closed, monolithic, and built with no thought for reuse. The result was a lack of interoperability between solutions, skyrocketing deployment costs, and systems that were nearly impossible to evolve. The CCSDS had been working on exactly this problem. They defined various blueprints, such as the Mission Operations Monitor & Control Services , a set of standard service interfaces for spacecraft control centers, including: An action service to submit executable tasks (e.g., spacecraft telecommands) An alert service to emit notifications of operationally significant events or anomalies A parameter service to subscribe to parameter value reports from a remote system It was a bottom-up approach : the CCSDS defined the contracts, and to be part of the ecosystem, your service had to respect a standard service interface: As a service provider, if your service matched the contract defined by the CCSDS, it could plug right in. And one of the main benefits was this. Back then, buying a software component for your ground segment meant being tied to it for years, and switching was painful because nothing spoke the same language. A standard interface changed that: if you respect the service interface, you can easily switch to another CCSDS-compatible service , for example, because a competitor is less expensive. That may not sound impressive today, but back then, for a company like Astrium, this was a genuine win. Better interoperability, less vendor lock-in, and for the first time, a path toward a more open ground segment. A significant part of my internship was about studying SOA, exploring those standards, and communicating why a service-oriented architecture was the right direction. The department wasn’t fully sold on CCSDS. It was a new standard, and it would take years before fully functional services were built on top of it. But they were sold on SOA, so I also spent time mapping the existing application landscape and proposing how the concept of services could be integrated. What I didn’t fully realize at the time was how much was happening around me. Indeed, the early 2000s were marked by three events that made, in my opinion, service-based architecture popular: Around 2002, Jeff Bezos issued a famous internal mandate: all Amazon teams would expose their data and functionality through service interfaces . No other form of interprocess communication was allowed. No direct linking, no shared-memory model, no back-doors whatsoever. Later, companies embraced a concept called the Enterprise Service Bus, a middleware that acted as a central hub to expose cross-domain services and avoid direct coupling between applications. Was it really helpful? To some degree. But the main problem was that most SOA discussions became: “ What kind of ESB should we buy? ” instead of focusing on the core concept: the service . A critical turning point came with a post called SOA is dead; long live services by an analyst named Anne Thomas Manne. She pulled the conversation away from technology choices and back to what actually mattered. On March 20, 2013, Docker was born and became the engine that pushed the movement even further. As I said, applications were hard to scale before containers. With Docker making containerization practical and accessible , it became easy to deploy small, independent units of functionality, which played a huge role in what we know today as microservices. SOA as a brand died, but the idea remained. The core concept of the service remained, lighter, smaller, stripped of the governance overhead that had weighed it down, and became one of the most common architectures we know today. With hindsight, did I regret turning Ariba down? While I sometimes think my life could have been completely different if I had accepted, I don’t regret it at all. I really enjoyed my internship at Astrium . It was a great way to explore an entire business domain and practice something I hadn’t expected: convincing people, building mental models, and making an abstract idea feel concrete and worth caring about. I would have loved to stay, but there were no open positions in the area where I had worked. There was just one thing left. My last presentation to the company was in English. Six months after that catastrophic interview. You can imagine that over those six months, I had practiced hard and made real progress, right? Absolutely not . It was bad. Not as terrible as the interview since this time fog didn’t impair my vision, but still. My supervisor, who had sat through all my presentations, put it simply: Your presentation? It was way better in French. Not all stories should have a happy ending after all. AI is getting better every day. Are you? At The Coder Cafe, we serve fundamental concepts to make you an engineer that AI won’t replace. Written by a Google SWE, trusted by thousands of engineers worldwide. So, I Wrote a Book The Story of The Coder Cafe Why I Switched to Vim Keybindings SOA is dead; long live services Stevey’s Google Platforms Rant CCSDS Recommended Standards Ariba was acquired by SAP in 2012. Interviews December 2010. I was finishing my last year at a French engineering school. I’m not sure if it’s the same in all countries, but in France, most engineering degrees require a 6-month internship to graduate, and I was looking for mine. I was searching for a good internship when, at some point, an ex-student who graduated the year before me sent a message to the school mailing list about a company called Ariba 1 that was looking for interns. San Francisco-based . I read the email and thought: “ Why not? ” With a friend of mine, we decided to apply and got an interview with their tech team. Let me tell you something first. At that time, saying my English wasn’t great was an understatement . I could read it reasonably well. Speaking was another matter entirely. And this was going to be my first job interview in English. To prepare, I had written a long document with answers to the most common interview questions, something I could read from during the call. My interview was scheduled on December 21st. The pressure was starting to build. The day came, I joined the call, and what followed was not one of the worst interviews of my life. It was the worst interview of my life. “Hello?” “Hi, is this Teiva?” “Yes” “Hi Teiva, this is … [Two minutes of him talking without me understanding a single word] ” SOA came with a design-time registry for service discovery, such as UDDI , and other governance layers that simply don’t exist in microservices today. The granularity was different. There was no concept of micro . Containers weren’t yet popular, and applications were harder to scale, so services were mostly macro in scope. An action service to submit executable tasks (e.g., spacecraft telecommands) An alert service to emit notifications of operationally significant events or anomalies A parameter service to subscribe to parameter value reports from a remote system As a service provider, if your service matched the contract defined by the CCSDS, it could plug right in. And one of the main benefits was this. Back then, buying a software component for your ground segment meant being tied to it for years, and switching was painful because nothing spoke the same language. A standard interface changed that: if you respect the service interface, you can easily switch to another CCSDS-compatible service , for example, because a competitor is less expensive. That may not sound impressive today, but back then, for a company like Astrium, this was a genuine win. Better interoperability, less vendor lock-in, and for the first time, a path toward a more open ground segment. The Service Revolution I Was Sitting Inside A significant part of my internship was about studying SOA, exploring those standards, and communicating why a service-oriented architecture was the right direction. The department wasn’t fully sold on CCSDS. It was a new standard, and it would take years before fully functional services were built on top of it. But they were sold on SOA, so I also spent time mapping the existing application landscape and proposing how the concept of services could be integrated. What I didn’t fully realize at the time was how much was happening around me. Indeed, the early 2000s were marked by three events that made, in my opinion, service-based architecture popular: Around 2002, Jeff Bezos issued a famous internal mandate: all Amazon teams would expose their data and functionality through service interfaces . No other form of interprocess communication was allowed. No direct linking, no shared-memory model, no back-doors whatsoever. Later, companies embraced a concept called the Enterprise Service Bus, a middleware that acted as a central hub to expose cross-domain services and avoid direct coupling between applications. Was it really helpful? To some degree. But the main problem was that most SOA discussions became: “ What kind of ESB should we buy? ” instead of focusing on the core concept: the service . A critical turning point came with a post called SOA is dead; long live services by an analyst named Anne Thomas Manne. She pulled the conversation away from technology choices and back to what actually mattered. On March 20, 2013, Docker was born and became the engine that pushed the movement even further. As I said, applications were hard to scale before containers. With Docker making containerization practical and accessible , it became easy to deploy small, independent units of functionality, which played a huge role in what we know today as microservices. So, I Wrote a Book The Story of The Coder Cafe Why I Switched to Vim Keybindings SOA is dead; long live services Stevey’s Google Platforms Rant CCSDS Recommended Standards

0 views
fLaMEd fury Yesterday

Link Dump: May 2026

What’s going on, Internet? In true fLaMEd style, I missed the April update, so here are all the bookmarks from April and May 2026. Want more? Check out all my bookmarks at /bookmarks/ and subscribe to the bookmarks feed . Hey, thanks for reading this post in your feed reader! Want to chat? Reply by email or add me on XMPP , or send a webmention . Check out the posts archive on the website. Prepping for the endgame of the open web - The History of the Web Jay’s been thinking about this longer than most. The open web has survived worse, but it still needs us to show up. Attenuating the Web - The Darth Mall An interesting pushback — RSS readers strip so much of what makes a website actually worth visiting. The conditionally open web Cory puts into words something I keep circling back to. The open web was never really open, just conditionally so. My Quest to be the Scrobble King Reaching back to scrobbling to fix what streaming broke about music discovery. Ctrl-ZINE Issue.24 Stoked my flossing piece landed in this one alongside ~loghead’s proper smol web rallying cry — issue 24 is a good one. Joyful web design Treating playfulness on the web as the point, not a frivolous extra you tack on later. Who knows that you blog? That weird gap between blogging publicly and never bringing it up with people you actually know Have a Fucking Website “The internet was built on websites that linked to one another”, don’t rent your space inside the walled gardens. No, I Won’t Download Your App. The Web Version is A-OK. | Sid’s Blog I will avoid your app if I can Own Your Web – Issue 18: Curators Is curation the personal web’s superpower now that half the web is AI-generated, or has it always been? 😃 How to Surf the Web in 2025, and Why You Should Algorithmic scrolling killed surfing, but David Cain reckons the old web is still there if you go looking. A Secret Web The indie web isn’t secret, just hidden by commercial search. Benjamin Hollon on the tools we already have to find it. the web as a space to be explored · roytang.net The web isn’t dying. Roy Tang reckons the indie web is still alive and explorable Join the Inclusive Front Sara Joy’s manifesto for web folks who reckon building inclusively is just doing the job properly Your Ai Hate Is Showing - Matt’s Blog Blanket AI-hate misses the target. The problem is the corporations weaponising it, not the tools. The Joys of a Small Social Feed How deliberately following a small number people on Mastodon leads to a more peaceful experience. Has me contemplating my own following count. Why I Still Like the Internet Gordon on how blogs are quietly winning again The Blogger’s Manifesto Eight principles for blogging that go against the “build an audience” playbook. Staying small and honest is the point. How to Hate AI There’s a lot of AI hate going around these days, and Steve’s take is where I think it should actually be aimed. AI is out of the bag. It’s happening. Rather than directing hate at people who are curious, learning, and already using the tools, we could focus that energy on learning, understanding, and educating on the best and safest ways to use them.

0 views
Stratechery Yesterday

The Nvidia AI PC, Project Solara, Microsoft AI

Listen to this post: Good morning, I don’t normally give away my interview subjects ahead of time, but I’m going to make an exception this week given the subject and the below Update. I am writing this in San Francisco where I interviewed Microsoft CEO Satya Nadella after his Build developer conference keynote ; normally I would want to publish that immediately so that you have the full context of my analysis. In this case, however, I came to the opinions below during the keynote, and before the interview, so for that reason (and a few logistical ones) I wanted to articulate them first (before you see my questions), and follow up with Nadella’s view on them (and a number of other topics) afterwards. So with that noted, on to the Update: From CNBC : Nvidia has emerged as the world’s most valuable company by dominating the market for artificial intelligence chips in the data center. Now the company is expanding its prowess to chips that will serve as the main processor for personal computers, entering an arena that’s long been ruled by Intel, Advanced Micro Devices, Qualcomm and Apple. During a keynote address at Taiwan’s Computex conference on Monday, Nvidia CEO Jensen Huang unveiled a new PC processor made alongside Microsoft. The RTX Spark superchip, which Huang also referred to as the N1X, debuts in the fall on a fresh line of Windows PCs from Microsoft, Dell, HP, ASUS, Lenovo and MSI. I’m actually starting in Taipei on Sunday, where Huang introduced the long-rumored Nvidia PC chip; from Tom’s Hardware : At full strength, this chip offers up to 20 Arm CPU cores, a Blackwell GPU with 6,144 CUDA cores, 128GB of LPDDR5X RAM, and up to 300 GB/s of memory bandwidth. That powerful CPU and GPU, connected over NVLink C2C, and the large memory pool give AI agents and 120-billion-parameter models plenty of power and space for long-running tasks with context lengths stretching to a million tokens, according to Nvidia. We don’t have any benchmarks yet, but the RTX Spark appears to be broadly similar to the DGX Spark; that’s a decent chip that excels at prefill, but is slower than an M5 Max at decode (thanks to lower memory bandwidth), and significantly slower at CPU tasks. Huang appeared during the keynote via live video to discuss the chip. Satya Nadella: Suddenly, this concept of unmetered intelligence right at the edge is so hot again. So maybe you want to talk a little bit about this: you have thought about this, talked about this, and now, of course, with RTX Spark really delivered, I think, what’s a breakthrough system for AI to be much more ubiquitous. But maybe, Jensen, you can just share a little bit your vision around where you see this going. Jensen Huang: Well, this all started about three years ago between a conversation between you and I. And we were talking about how we could build a new class of PCs that’s incredible for designers and creators. And it would be incredible for artificial intelligence. And it would be one of these systems that has the processing capability, but also the software stack that’s integrated into the world’s design packages and creator packages. And, of course, all the things that we’re doing with AI. And here we are, three years later, we built an incredible new chip. And this system is supported by all of this new software that you created for Windows. And we now have the ability to have essentially an autonomous agent running on the PC. This clip explains why I find this chip specifically, and AI PCs generally, pretty underwhelming. Three years ago we were still in the ChatGPT era of AI, and I was very excited about the possibility of local inference. Then came the reasoning era, blowing up KV cache (which increases the need for more memory) and emphasizing the importance of decode (to generate that many more tokens). Now we’re in the agentic era, where CPU performance is incredibly important. To that end, the ideal setup for a local agent is strong local CPU performance and calling out to the cloud for inference. The RTX Spark, however, spends tons of die space on GPU cores that are inferior to the cloud (because of memory size and bandwidth if nothing else) at the expense of CPU. It’s a suitable chip if you just want a chatbot circa 2023; it’s hard to see it being worth the price — or the software compromises that are the reality of Windows on ARM — in 2026. Jump ahead to the Build keynote, which I found very underwhelming to start. Nadella opened with a brief overview of the AI stack, then started talking about Windows, and I was honestly pretty surprised at the lack of vision and enthusiasm. That’s when it occurred to me: I think that Nadella agrees with me! Sure, some local inference is nice, but that’s not where the AI that matters is going to be located. Nadella, keep in mind, has no real loyalty to Windows; indeed, I credit him with The End of Windows . Specifically, Nadella didn’t end Windows as a product, but he ended its run as the organizing principle around which the entire company operated, focusing on software that ran everywhere and a cloud that ran everything. That leads to a surprising takeaway, and the most interesting part of the Build keynote: what if Microsoft is actually well positioned to get back into AI devices? From GeekWire : A team inside Microsoft has been quietly building a platform for devices that run AI agents instead of apps, based on Android instead of Windows, with two working hardware designs so far, and an initial set of big-name companies lined up to run pilots. The platform, dubbed “Project Solara,” is Microsoft’s bet that AI will open up entirely new scenarios for computing — using agents to avoid the constraints of traditional software, and off‑the‑shelf components to develop new devices quickly and inexpensively. Project Solara is, to be clear, vaporware at this point, although the company did show real devices and has signed up Qualcomm and MediaTek as chip partners. It is also extremely compelling. Here’s how Nadella introduced it: So far, we’ve talked about the edge and the cloud. The current form factors, right? I mean, when I saw that Jensen picture from the weekend where he had all the desktops, I felt like, man, I’m back in the 90s, right? Because it was so cool to see the lineup of all the machines that I loved and I grew up with back yet again with new functionality, right? It’s the same form factor, but unbelievable new functionality because of the onboard AI capability, right? So that’s sort of what we’ve seen with the laptop, the desktop, and of course with the cloud. But it also, you know, sets up that next question: if you have that capability, which is new function, and you can put it into existing form factors, can you even purpose-build new form factors for the new function? Can you build a new platform even for the agent era? And that is the motivation behind Project Solara, which we’re introducing today. First off, note the framing: the PC is old tech with agents; what about new tech uniquely enabled by agents? And note the classic Microsoft hook: could that new tech sit on top of a new platform? Corporate Vice President Steve Bathiche, the head of Microsoft’s Applied Sciences Group, explained the vision: Before I talk about those awesome new devices you just saw, let me start with the why. Back at Build 2023, I talked about the outside AI application structure, where AI moves from operating within the application frame to operating globally, working across multiple apps and services to connect, coordinate, and maintain context across entire workflows, devices, and time scales. What if there were an ecosystem of devices specifically designed for that new type of application structure, for those types of agents, for that transformational interaction technology? That is the impetus behind Project Solara. But with so many possible forms, which one do you pick? What is the next device? You see, the big aha for us is that it’s not about choosing one specific form factor. It is about creating a system that extends your agent across a constellation of devices. The next computer is not one device. It is all these devices working together as one system, with agents showing up closer to where and when you need them. There was one brief moment in the promotional video that preceded Bathiche’s appearance that made the concept click for me: The problem with wearable devices is the interaction model: they are only useful when you are interacting with them, when the human is in the loop, but being in the loop with a wearable is annoying and inefficient. What is being demonstrated here, however, is a brief interaction, and then an agent doing work in the background. In other words, the usefulness happens in the cloud without the human needing to be involved, because an agent is doing the work. That’s what I find compelling. On one hand, you can make the case that of course Microsoft would be interested in a device model that uses the cloud as a platform, given that Microsoft doesn’t control a mobile device like an iPhone. What occurs to me, however, is that even if Microsoft doesn’t succeed with Project Solara, this model — where the cloud is the hub and multiple devices are the spoke, instead of the phone being in the center — is clearly a better one for agents. Agents work best in the cloud, and across apps and devices; yes, the phone might be one of those devices, but when it comes to agents it shouldn’t be the hub. Again, this is vaporware, and very much in Microsoft’s interest, so take Project Solara with the appropriate grain of salt. It’s a vision of the future, however, that does make a lot of sense, particularly in an enterprise scenario where all of the context and compute is already in the cloud (and Project Solara is focused on enterprise, not consumer). It’s also something completely different from the past, and fits my thesis that, in the age of AI, thin is in . From GeekWire : Microsoft has based much of its AI business on models from OpenAI, before expanding more recently to Anthropic. On Tuesday, the company showed how it plans to rely less on both. At the Build developer conference, the Microsoft AI Superintelligence Team unveiled a family of seven models built from scratch. It’s part of an ongoing effort by the company to build credible in-house alternatives to models from partners and rivals with competing allegiances… The flagship of the seven newly announced MAI models is MAI-Thinking-1, a reasoning model that Microsoft says draws even with Anthropic’s Claude Sonnet 4.6 in blind human testing, and matches the more capable Claude Opus 4.6 on a widely used coding benchmark. [CEO of Microsoft AI Mustafa] Suleyman stressed that MAI-Thinking-1 was trained from the ground up with no distillation from other companies’ models, looking to appeal to enterprises that care about clean data lineage. These models seem pretty decent, all things considered, but what was interesting to me was the framing: Microsoft emphasized that enterprises could take these models and make them their own. Suleyman said: This is what owning the full stack end-to-end looks like. It’s the foundation of Microsoft Frontier Tuning, it lets you customize the MAI models using our full stack hill climbing machine right where you want it. And it means that the disciplined and very relentless engineering that has gone into building our models is now available to all of you on a platform that you can trust, working on your behalf to create custom agents that you will control. So the really big thing, of course, that’s happened in the last year is these RLEs, reinforcement learning environments, these unique training gyms for your AIs. They create company and task-specific agents adapted only to you, built on MAI models. So for example, within Microsoft, we use our RLEs combined with our MAI models to climb towards the best agentic use cases on Excel. Our MAI-tuned model is now on par with GPT 5.4 on public and private benchmarks, whilst at the same time being 10 times more efficient on cost, and many other early adopters are seeing similar results. When we’ve tuned our models on McKinsey’s tasks, MAI delivered the highest win rate, even outperforming GPT 5.5, and again delivering 10x greater efficiency on cost. So to us, this is the advantage of very carefully calibrated frontier tuning. And importantly, unlike with some of the other companies, with MAI, you don’t rent intelligence from a shared model that learns from everybody. Only you keep the benefits of your hard-earned workflows, know-how, knowledge, and your own institutional data. Only you get to control the resulting model. And so with us, the RLEs and the models that you build inside of them, they become your moat. I really think this is distinct. It marks a new era in AI that we’re all very, very excited about. This has shades of AWS’s Nova Forge offering , which lets enterprises add their data at a checkpoint in pre-training; it’s a little different in that it’s more focused on reinforcement learning, but those lines are getting blurred. The concept is that enterprises get to have their own model for their own data, without sharing it with the frontier labs that want to eat their lunch, and it’s a concept that is certainly appealing in theory; the real test will be to see if enterprises that choose this route aren’t penalized by not being on the cutting edge of functionality. Then again, helping cautious enterprises embrace the future on their terms, without necessarily having to win on pure performance, is exactly how Microsoft has long maintained its position. This Update will be available as a podcast later today. To receive it in your podcast player, visit Stratechery . The Stratechery Update is intended for a single recipient, but occasional forwarding is totally fine! If you would like to order multiple subscriptions for your team with a group discount (minimum 5), please contact me directly. Thanks for being a subscriber, and have a great day!

0 views
DHH Yesterday

A pond of interesting problems

The great joy of having built a successful business that employs a broad team of talented people is that I get to fish for exactly the kind of problems that most interest me, most of the time. Usually, this coincides well with the needs of the business. When we moved out of the cloud, I spent months getting Kamal off the ground, so we didn't have to get mired in the complexity of Kubernetes. Fun problem to solve! And of course, the origin story of Ruby on Rails is that Basecamp gave birth to it all back in 2003. Because I simply wanted Ruby to work well for the web, and we needed a platform to build the business. But sometimes it's also a bit further afield. We had our big clash with Apple over the App Store's monopoly abuses back in 2020, but it wasn't until 2024 that I severed our exclusivity with the Mac on the engineering side by moving to Linux, and ultimately building Omarchy. I don't always get to choose, of course. There are occasionally urgent problems that just need our, and therefore my, full attention as a company, or humdrum issues that I just happen to be best qualified to tackle. But this is increasingly rare because of all those great people we've managed to assemble at 37signals. And that's how it should be! Building a successful business should yield dividends beyond just the financial ones. It should afford you more opportunity to press your comparative advantage, so you spend most of your time on the projects that stimulate a little Call of the Wild. Never to the point of being too good for anything, mind you. Taking out the trash is still everyone's job some of the time. But mostly, I want to be sitting by the pond of interesting problems, fishing for the ones that catch my eye and hook my motivation.  Who could wish to retire from that?

0 views
Max Bernstein Yesterday

A survey of inlining heuristics

Compilers, especially method just-in-time compilers, operate on one function at a time. It is a natural code unit size, especially for a dynamic language JIT: at a given point in time, what more information can you gather about other parts of a running, changing system? I don’t have any data to back this up—maybe I should go gather some—but on average, methods are small. Especially in languages such as Ruby that use method dispatch for everything, even instance variable (attribute, field, …) lookups, they are small . And everywhere. This makes the compiler sad. If we are to continue to anthropomorphize them, compilers like having more context so they can optimize better. Consider the following silly-looking example that is actually representative of a surprising amount of real-world code: Right now, in the method, I count 8 different method calls: (Technically more, but the ivar lookups (including !), addition, and subtraction are generally specialized and don’t push a frame, even in the interpreter.) Furthermore, there are at least two heap allocations: one for each instance. Last, there is a bunch of memory traffic to and from instances. This all is a huge bummer! What should be a simple math operation is now overwhelmed with a bunch of other stuff. is certainly not a zero-cost abstraction. Even if we had a bunch of other optimizations such as load-store elimination or escape analysis, they would not be able to do much: pretty much everything escapes and is effectful. That is, unless we inline . Inlining is the lever that enables a bunch of other optimization passes to kick in. I wrote about the design and implementation of Cinder’s inliner ( FB link , personal blog link ) a couple of years ago. I wrote about arguably the simplest part, which is copying the callee body into the caller. It took me at least a week to get working. Probably closer to months if you consider all the plumbing through the rest of the JIT. In February during a small hackathon, I watched my colleague k0kubun prototype that bit of the inliner inside ZJIT in about 30 minutes. There is more to do when pretty much every part of the VM is observable from the guest language: both Python and Ruby allow inspecting the state of the locals, the call stack, etc from user code. Sampling profilers also expect some amount of breadcrumbs to work with to inspect the stack. So there’s some more machinery still required to pretend like the callee function was not inlined. I talk about this a little bit in the Cinder blog post. Even so, all of that can probably be designed and wired together in a couple of months. Then you will find yourself tuning the inliner for the next 10 years. This is much harder. The thing that makes inlining difficult, especially in a method JIT, is that you are trying to make an entire (dynamic!) system faster but you are only looking through a microscope and only capable of local reasoning 1 . Whereas other optimizations such as strength reduction, inline caches, and value numbering are an un-alloyed good for the generated code, inlining can have negative effects . It is also perhaps the first optimization people add that has non-local impact. If you inline wrong, your code size might blow up. This might thrash your CPU’s caches. Bummer, but happens to the best of us. But also, if you inline wrong, you might get in the way of other helpful optimizations: if you hit some size limit after inlining method A, you might never get to inline B, which is the key to unlocking the performance of the method you are trying to optimize. Last, inlining might hurt compile time. In situations where latency is paramount (think: interactive client JavaScript), adding tons more code into the fray might add noticeable hiccups, even if the long-term throughput improves. As always, in-band compilation is a trade-off because any time you spend compiling, you are not executing code . You have to write your compiler to reason about all of this stuff. So you have heuristics. For example, here is Michael Pollan’s inliner heuristic: Inline methods. Mostly small. Not too many. I did a survey of a bunch of compilers, mostly JIT compilers, to see what their inlining heuristics look like. I also read (skimmed) some papers to see what those folks had to say. I wonder if they agree. This post was a long time coming. I started working on it about five years ago but then when I quit working at Facebook I accidentally left behind all of the inliner research I did for Cinder’s inliner. So then I kind of just thought about it aimlessly for a while before redoing it this year. Anyway, here’s wonderwall. Spoiler alert: all in all, people tend to look at: And also have different interesting ways to pipe in profile information. Last, some newer papers do some wild stuff: Another thing to consider in inlining is how you gather and interpret profiles. When you compile a function, you tend to specialize it based on the input it has historically been given. For a monomorphic input, maybe you guard that the type is still the same and otherwise jump into the interpreter. For a polymorphic input, maybe you check the top K (~4) common cases and otherwise jump into the interpreter. Fine. But sometimes you can be compiling a polymorphic method that is actually monomorphic in its caller . That is, might only ever pass one kind of input to , but other callers pass all kinds of stuff. Here is a bit of a silly example to show what I mean: Just kidding, not so silly at all. It’s a super common pattern in Rails . It makes polymorphic in even though for many of its callers, it may well be monomorphic (or even a constant). In order to plumb this information through to the compiler, you have to figure out this call context relationship. There are a couple of common ways to do it. YJIT, for example, though it does not inline, splits methods based on the types of the arguments going in. This means that it clones the compiled code, generating a new version for each context. This does not give call context (“A calls B”) but gives type context (“B is called with integers, B’ is called with strings”). A compiler could do type-based splitting in the interpreter or a baseline tier. If you don’t fancy duplicating the code, you can instead duplicate the profiles. You could either do this using type context (as above) or using call context. SpiderMonkey, for example, does “trial inlining” that allows callers to pass down a bit of memory for potential inline candidate callees to record their inline caches. Instead of each function holding its own ICScript, the caller allocates a unique ICScript for that potential-inline call-site. This gives each callee function (at least?) one level of call context. Later, when inlining the callee into the caller, we don’t have other callers’ type information polluting the IR builder (or whatever reads the profiles). JavaScriptCore handles this by inlining bytecode into other bytecode. This is a gnarly transformation but gives the interpreter, even (!) access to call context. On tier-up to the compiler, all the inlining decisions have been made already. HotSpot handles this with multiple tiers. The interpreter tiers up to the client compiler, C1. C1 profiles branch and call targets in compiled code. C1 may eventually recompile based on this new information. C1 may eventually tier up to C2, which copies C1 inlining decisions. This way, we get call context in profiles via inlining. One last thing you could do is just trust your type inference and branch folding in the optimizer. You could inline and do polymorphic specialization in the callee when building the IR, then hope that your branch pruning monomorphizes the inlined callee. It’s a little wasteful because the polymorphic code is built “for nothing”, but it might work fine? Okay, onto the collected notes and half-baked commentary. Here’s a survey of a bunch of JIT compilers and how they reason about inlining heuristics. But before we get into that, thanks to Iain Ireland, CF Bolz-Tereick, and Ian Rogers for feedback on this blog post! What follows is mostly a “bits and bobbles” section a la Phil Zucker . We’ll start with Cinder , because when I wrote Cinder’s inliner I added only the simplest heuristics, mostly “don’t inline” signals. Over time, after I left, people tuned it a bit more. The inliner starts from the caller CFG, walking it to find suitable inlining candidates. Inlining candidates are only for call targets that are known—in Cinder’s case, only for monomorphic call targets—and pass some checks. The callee is only known by it’s function object, which includes its bytecode. There is no IR available for the callee until we decide to inline. Most of the “can’t handle this” checks are related to argument handling. Python has a pretty complex calling convention, so if the caller/callee have not agreed on how the arguments should be passed through, the inliner doesn’t care to try and figure it out on its own. That is the responsibility of other parts of the compiler . Things in this function could be considered “TODO”. Failures are logged so they can be analyzed. If the Cinder team determines that there is some very frequent case they should handle, they will find out from the logs. The inliner collects all candidate call instructions in one pass over the CFG. It loads the configurable “cost limit” from the options struct. Then it does one pass over the inlining candidates vector, inlining until it (maybe) hits the cost limit. It does some graph maintenance work after inlining these calls, but that’s it. This approach gets a surprising amount of utility for being so simple: it inlines constants (quite a few methods look like ), small methods, and (at least, as far as I can remember) shrinks the compiled code size. All for very little compile time overhead. There’s one other “standalone” Python JIT out there, PyPy. So we should look at that too. There are two inliners in PyPy. One is inside the RPython to C translation pipeline, which acts more like an ahead-of-time compiler 2 . Then there is the tracing JIT bit, which has its own optimizer and heuristics. We’re going to look at the latter. I talked to CF Bolz-Tereick about the inliner and their comment was that PyPy’s inlining heuristic is “yes”. There are a couple of exceptions, such as not inlining recursive functions or functions with loops. But the basic idea of tracing includes tracing through call instructions, which naturally means that you are “inlining”. PyPy also does this neat thing where they treat frame pushes like normal allocation. Frame pushes, frame reads, and frame writes get written to the trace like normal object memory traffic and can get optimized away like other field reads and writes. This means that they can “just” use DCE to eliminate frame pushes and pops, whereas Cinder has some complicated mechanism to do it (which is my fault). TODO get more details here V8 is a JS engine and it has over the years had many execution approaches. We’ll look at three of them since they all have or had their place in the history: They also each inline at different times in the pipeline, which made for a fun time trying to understand the different codebases. Inlining happens during Hydrogen graph building Don’t store function bytecode of all functions; need to re-parse callee text source to inline Heuristics https://github.com/tekknolagi/v8/blob/a969ab67f8e1e7475d9b26468225c3a772890c64/src/crankshaft/hydrogen.cc#L7807 https://docs.google.com/document/d/1VoYBhpDhJC4VlqMXCKvae-8IGuheBGxy32EOgC2LnT8/edit https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/compiler/js-inlining-heuristic.h#L14 When optimizing, add call instructions to the inline candidates list: https://github.com/v8/v8/blob/1a391f98cc7a9196369f2d6cab7df35ffbe92c08/src/maglev/maglev-graph-optimizer.cc#L1271 https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/maglev/maglev-inlining.h#L36 Unlike for example Cinder, Maglev looks like it does not have a lot of restrictions about what can get inlined into what, so its “can inline” signal is about budget. Actually two budgets: small budget and normal budget. Then its inlining loop is a greedy walk of the to-inline queue checking candidate sizes. It runs this loop (which drains the queue) interleaved with the optimizer (which populates the queue). Confusingly, though, the optimizer also calls another function called which checks if it legally can inline: appears unused? / dead declaration? maybe src/maglev/maglev-graph-builder.cc is just not working on github search also unused / dead declaration same JavaScriptCore is funky! Unlike these other compilers that do inlining in their neat little SSA IRs, JSC inlines at the bytecode level 4 . This is their way of making sure that they get at least one level of call context into their interpreter inline caches, which will eventually give better information to the compiler. JSC only inlines based on bytecode profile information, and only inlines bytecode?? TODO find better sources for bytecode inlining SpiderMonkey has another way of getting that call contet without doing bytecode inlining: they add call context to their inline caches. Methods can pass down an ICScript to their callees where the callee writes its inline cache information. Then, when compiling, the callee is more likely to be monomorphized. https://github.com/mozilla-firefox/firefox/blob/438a3ce10eb77fb50d968463b7741117aec5bb4a/js/src/wasm/WasmHeuristics.h#L213 SpiderMonkey ICScript https://fitzgen.com/2025/11/19/inliner.html Plan: run in interpreter; tier up to C1; profile call targets; inline in C1; profile branch counts; tier up to C2, which copies C1 inlining decisions in bytecode parser https://github.com/openjdk/jdk/blob/a05d5d2514c835f2bfeaf7a8c7df0ac241f0177f/src/hotspot/share/opto/bytecodeInfo.cpp#L116 https://github.com/openjdk/jdk/blob/497dca2549a9829530670576115bf4b8fab386b3/src/hotspot/share/opto/bytecodeInfo.cpp#L197 https://github.com/openjdk/jdk/blob/497dca2549a9829530670576115bf4b8fab386b3/src/hotspot/share/opto/parse.hpp#L42 https://github.com/openjdk/jdk/blob/497dca2549a9829530670576115bf4b8fab386b3/src/hotspot/share/opto/doCall.cpp#L185 Not too small Walk up the call stack to figure out what to compile Handling the right thing to inline: def foo(a) = a.each {|x| x } want to compile , inline each, inline block, not compile block separately (probably) https://bernsteinbear.com/assets/img/design-hotspot-client-compiler.pdf https://github.com/openjdk/jdk/blob/d854a04231a437a6af36ae65780961f40f336343/src/hotspot/share/c1/c1_GraphBuilder.cpp#L755 https://github.com/openjdk/jdk/blob/d854a04231a437a6af36ae65780961f40f336343/src/hotspot/share/c1/c1_GraphBuilder.cpp#L3854 heuristics: TruffleRuby uses weighted compile queue Graal https://ieeexplore.ieee.org/document/8661171 https://github.com/dotnet/runtime/blob/2d638dc1179164a08d9387cbe6354fe2b7e4d823/docs/design/coreclr/jit/inlining-plans.md https://github.com/dotnet/runtime/blob/0b3f3ab1ecf4de06459e5f0e2b7cb3baf70ef981/src/coreclr/jit/inline.def#L94 https://github.com/dotnet/runtime/blob/0b3f3ab1ecf4de06459e5f0e2b7cb3baf70ef981/src/coreclr/jit/inlinepolicy.cpp https://github.com/dotnet/runtime/blob/0b3f3ab1ecf4de06459e5f0e2b7cb3baf70ef981/docs/design/coreclr/jit/inline-size-estimates.md?plain=1#L5 https://github.com/dotnet/runtime/blob/0b3f3ab1ecf4de06459e5f0e2b7cb3baf70ef981/src/coreclr/jit/fginline.cpp https://github.com/dotnet/runtime/issues/10303 https://github.com/AndyAyersMS/PerformanceExplorer/blob/master/notes/notes-aug-2016.md https://github.com/dart-lang/sdk/blob/391212f3da8cc0790fc532d367549042216bd5ca/runtime/vm/compiler/backend/inliner.cc#L49 https://github.com/dart-lang/sdk/blob/391212f3da8cc0790fc532d367549042216bd5ca/runtime/vm/compiler/backend/inliner.cc#L1023 https://web.archive.org/web/20170830093403id_/https://link.springer.com/content/pdf/10.1007/978-3-540-78791-4_5.pdf An adaptive strategy for inline substitution (PDF) tracelet based https://github.com/facebook/hhvm/blob/eeba7ad1ffa372a9b8cc9d1ec7f5295d45627009/hphp/runtime/vm/jit/inlining-decider.h#L89 https://github.com/LineageOS/android_art/blob/8ce603e0c68899bdfbc9cd4c50dcc65bbf777982/compiler/optimizing/inliner.h https://github.com/JikesRVM/JikesRVM/blob/5072f19761115d987b6ee162f49a03522d36c697/rvm/src/org/jikesrvm/compilers/opt/inlining/DefaultInlineOracle.java#L55 Partial inlining Understanding and Exploiting Optimal Function Inlining (PDF) machine learning Automatic construction of inlining heuristics using machine learning Machine-Learning-Based Optimization Heuristics in Dynamic Compilers (PDF) Guiding Inlining Decisions Using Post-Inlining Transformations (PDF) U Can’t Inline This! (PDF) Towards better inlining decisions using inlining trials RhizomeRuby inlining An Optimization-Driven Incremental Inline Substitution Algorithm for Just-in-Time Compilers (PDF) Automatic Tuning of Inlining Heuristics (PDF) Inlining-Benefit Prediction with Interprocedural Partial Escape Analysis (PDF) Inlining of Virtual Methods (PDF) A Study of Type Analysis for Speculative Method Inlining in a JIT Environment (PDF) A Comparative Study of Static and Profile-Based Heuristics for Inlining (PDF) clusters from Custom benefit-driven inliner in Falcon JIT (PDF) https://github.com/oracle/graal/blob/5dde777cba22a99ebe3f19745d03ddfbc35c563c/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/phases/common/inlining/policy/GreedyInliningPolicy.java https://github.com/oracle/graal/blob/5dde777cba22a99ebe3f19745d03ddfbc35c563c/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/phases/common/inlining/InliningPhase.java https://github.com/oracle/graal/blob/5dde777cba22a99ebe3f19745d03ddfbc35c563c/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/phases/common/inlining/info/elem/InlineableGraph.java#L148 There are some newer papers, especially in Java land, that try to do a lot of analysis ahead-of-time and bundle the resulting information in .class files. Then the JIT can read it and see more than local context. Or, if you are an AOT compiler, you can probably do a lot more whole system reasoning—both for time budget reasons and also because you can see more functions at once.  ↩ Check it out if you like. I stumbled across it by accident.  ↩ See also “Turbolev”, which seems to merge Maglev (CFG) with Turbofan (Sea of Nodes)… somehow.  ↩ Potentially a misunderstanding based on a private conversation. I’m working on tracking down the implementation…  ↩ Profiles of call target Cumulative caller size (increasing as callees get inlined) Callee size Inline depth Number of inlined calls at a certain depth If recursion is present Callee/caller call count ratio (if callee only called less than K% of calls to caller, don’t inline callee) Callee stack usage Polymorphism in callee What mode the compiler is in (baseline vs more aggressive) If the callee looks like it always raises/throws Train neural networks to make inlining decisions Let inlining drive the entire optimization pipeline, treating it as a search heuristic over a BFS walk of the call graph Use AOT-gathered information to aid in JIT heuristics Hydrogen was the first real SSA IR and it looks very familiar to me, having worked on Cinder and now ZJIT. It is now defunct. Turbofan was the replacement, going full Sea of Nodes. In the grand scheme of things it is a pretty fast compiler, but it does not hold back from doing some expensive rewrites. This was recently rewritten from Sea of Nodes to a mode traditional CFG and nicknamed Turboshaft. Maglev is meant to coexist alongside Turbofan, preferring to speculate a little more eagerly and do fewer incremental rewrites in the name of compile time. 3 https://github.com/tekknolagi/v8/blob/a969ab67f8e1e7475d9b26468225c3a772890c64/src/crankshaft/hydrogen.cc#L9236 something about native context check callee AST size against configurable limit check inlining depth against configurable limit don’t inline recursive functions check current cumulative method size (as tracked by AST node count) against configurable limit Find candidates https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/compiler/js-inlining-heuristic.cc#L134 Can inline https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/compiler/js-inlining-heuristic.cc#L75 Force inline small functions https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/compiler/js-inlining-heuristic.cc#L309 Loop over sorted (by comparator) list https://github.com/v8/v8/blob/036842f4841326130a40adfcff38f85a9b4cd30a/src/compiler/js-inlining-heuristic.cc#L847 skip recursion https://github.com/v8/v8/blob/1a391f98cc7a9196369f2d6cab7df35ffbe92c08/src/objects/shared-function-info-inl.h#L421 not called enough (min call frequency) bytecode too big Bytecode inlining https://github.com/WebKit/WebKit/blob/709c3895afd71e0836f8c8be7393e44d41fab7e1/Source/JavaScriptCore/bytecode/CodeBlock.cpp#L2453 DFG https://github.com/WebKit/WebKit/blob/709c3895afd71e0836f8c8be7393e44d41fab7e1/Source/JavaScriptCore/dfg/DFGCapabilities.cpp#L76 https://github.com/WebKit/WebKit/blob/917854a9c245b87b333e23ed4b195505d574a333/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp#L1703 https://github.com/WebKit/WebKit/blob/917854a9c245b87b333e23ed4b195505d574a333/Source/JavaScriptCore/bytecode/CallLinkStatus.cpp#L294 https://github.com/WebKit/WebKit/blob/d919344236c47b610930636d3310f00380624d43/Source/JavaScriptCore/bytecode/InlineCallFrame.h skip callees with exception handlers (unless explicitly allowed with a CLI flag) skip synchronized callees (unless explicitly allowed with a CLI flag) skip classes with unlinked callees skip uninitialized classes max inline level (default 9) max recursive inline level (default 1) callee bytecode size (max for top level is 35 bytecodes, but falls off by 10% per inline level) callee stack usage (max of 10 slots) max total method size (default 8000 bytecodes) There are some newer papers, especially in Java land, that try to do a lot of analysis ahead-of-time and bundle the resulting information in .class files. Then the JIT can read it and see more than local context. Or, if you are an AOT compiler, you can probably do a lot more whole system reasoning—both for time budget reasons and also because you can see more functions at once.  ↩ Check it out if you like. I stumbled across it by accident.  ↩ See also “Turbolev”, which seems to merge Maglev (CFG) with Turbofan (Sea of Nodes)… somehow.  ↩ Potentially a misunderstanding based on a private conversation. I’m working on tracking down the implementation…  ↩

0 views
Evan Schwartz Yesterday

Scour - May Update

Hi friends, In May, Scour scoured 865,266 posts from 28,671 feeds (1,766 of which were newly added), and 260 new users signed up to bring it across the 3,000 user mark! Here's what's new in the product: Scour is now better at finding posts that match your interests. You should see more relevant content and far fewer off-topic articles in your feed. (This sounds simple, but it represents at least a full month's effort 😅.) The way this works under the hood was one of the single biggest changes I've made to Scour's core ranking system since I started working on it. At a high level, scoring now combines Scour's original fuzzy concept matching (embedding vector distance) with how much the article uses relevant vocabulary (lexical search). While these ingredients are well-established, I think the exact way Scour implements them might be a somewhat novel system design. The reason this was so complex to build was that existing approaches to lexical search did not work for Scour. For example, every Scour user has between a handful and hundreds of interests (I have 642), each of which might have 3-10+ relevant keywords. This means that every "search" is actually a search for thousands of terms (for my feed, it's around 5,000). Most search systems are built for individual queries with a handful of terms. The even more tricky issue is that lexical search algorithms like BM25 do not produce scores that are comparable across queries, because they are designed for ranking (ordering results for a specific query), not scoring . Scour, however, needs to know which of your interests a given post is most related to and it sorts the posts in your feed by how relevant they are for any of your interests. I believe that the custom scoring and indexing system Scour now uses provides both cross-query score comparability and efficient lookup for thousands of parallel queries. Stay tuned for more details! 🙏 Help me out! Please like, dislike, and report posts as off-topic as you're browsing. These signals help me tune the system and figure out the edge cases where it could be improved. Scour bolds keywords in the post titles to make the feed easier to skim. The new lexical scoring layer discussed above makes it easier to bold exactly the words related to your interest. Two other small changes let you peek under the hood of the new scoring system. On desktop, hovering over a post's title will show you the score breakdown between semantic and lexical. Separately, if you click on an interest tag and go to the single-interest page, there is now an Advanced link that will show you the terms the lexical scoring system is using to find and rank posts. Here were some of my favorite posts that I found on Scour in May (you can tell from the topic concentration where my mind has been!): Happy Scouring! Latent Terms: Dense Retrievers Contain Trivially Extractable BM25-ready Zipfian Vocabularies Rethinking Agentic Search with Pi-Serini: Is Lexical Retrieval Sufficient? Re-autoresearching MSMARCO BM25, on Vespa How we made a SQL query optimization agent 59% more accurate using autoresearch and LLM Observability Your Vector Database Doesn't Know What Similar Means My Plan with RSS Agentic Coding is a Trap

0 views
Unsung Yesterday

Three good interactive explainers

Interactive explainers are one of my favourite things about the web: people passionate about things introduce them to others, for free, with care, and often using some interesting interactive or educational approaches in the process. I picked a few I particularly liked for this post. These aren’t just explaining things useful to know as a designer, but also themselves contain inspiring/​unique interactive moments worth knowing about: 1. Curves and Surfaces , Bartosz Ciechanowski 2. ASCII Characters Are Not Pixels , Alex Harri 3. Tab Roving , Niklas Gadermann Also, kudos to all three creators for their explainers working equally well on phones as they do on desktop computers. #above and beyond #interface design #web Every example has draggable points, but it also pops up an undo button once you start messing around, so you can feel safe experimenting: Specific ideas and definitions are color coded between text and the interactive pieces: For complex three-dimensional shapes, you can simply rotate them around to orient yourself better: I liked this trick of claiming something is impossible, but leaving a door open to try it anyway – I bet it will get some people more engaged, in the “but I’m sure I can lick my elbow” sense: I think the traditional “drag a divider to swap between two representations” interaction is actually kind of bad, but this essay subverts it by allowing you to toggle between representation A, representation B, or both side by side: A button to copy code to clipboard is always appreciated: I don’t know, I liked these minimalistic sliders: It’s hard to know what to do with complex interactivity, for example a specific sequence of keystrokes… let alone the fact that mobile phones don’t have easily accessible arrow or Tab keys. Here, a brilliant solution: not just on-screen soft keys, but also automatic playback!

0 views
Jim Nielsen Yesterday

An Ode to the Exacting Pedantry of Computers

The very first computer programming class I ever took introduced me to the idea of there being different kinds of numbers, like integers, floats, and doubles (it was a C++ course). “You mean, when I assign a variable, I have to say up front what kind of number this is?” It was such an odd concept to me. A number is a number. Why do I have to say it’s this kind of number or that kind of number? I dropped out of that class. A few years later, I decided I wanted to try programming again. So I took another intro class. This time they were teaching with Python instead of C++, so you can imagine my excitement to learn that I didn’t have to think of numbers in this way anymore! It felt like the computer was meeting me partway. Over time, I came to learn how pedantic computers are. They require a kind of exacting precision in saying what you want them to do. And they’ll only ever do exactly what you tell them to do, nothing more, nothing less. If there was a bug in your program, that wasn’t because the computer was doing something you told it not to. The computer was only ever doing exactly what you told it to do. A “bug” was very likely a flaw in your conception of how the program should execute, not the actual execution. It was a failure on your part to be more precise, to imagine a scenario where something happened that you didn’t anticipate — and therefore didn’t tell the program how to handle. “Do what I mean, not what I say!” But now, with LLMs, that kind of exacting precision in language and thought is disappearing. You can have a thought, ask the LLM to build it, and it will fill in all the details you didn’t specify or anticipate. All those pesky details which previously would’ve made you reflect, “Oh, I didn’t think of that. Maybe I should design this differently…” Or, “Oh, well now that I have to think about this some more, I can see that it might not actually be a very good idea…” The pedantic friction, which seemed like such a nuisance, was actually acting as a kind of tool for sharpening and improving your thinking and output. The exacting nature of the computer required you to think more. LLMs, however, have significantly lessened that friction. You can think less and move faster. And yet, that feels like our job as software makers: to think, to anticipate, to explicitly articulate intent. As a software user, I’d rather folks spend more time thinking so that I, in turn, have better experience. This is preferable to giving me more stuff faster that’s only partly conceived. As an industry it feels like we’re headed in a direction where we think it’s better to ship more faster and fix the effects of half-conceived intent later, than to spend more time upfront discovering, sculpting, and specifying intent. That’s one thing writing code by hand has taught me: intent — what you want to build and how you want it to work — is shaped through the act of articulating it. That hard work is not required of us anymore. The LLM will fill in the details. The exacting pedantry of the computer is going away, and in its place are assumptions about intent — many of which we don’t even know about until our users run into their effects. Reply via: Email · Mastodon · Bluesky

0 views

Yield Not Thy Core

Yield Not Thy Core Achilles Benetopoulos, Peter Alvaro, Andi Quinn, and Robert Soule EUROSYS’26 This paper describes a solution to the placement problem in distributed systems. If you model a computation as a directed graph, how do you optimally distribute the graph among a set of cooperating computers? The authors propose a dynamic placement system and implement it in Magpie . One common solution to the placement problem is to ship data over the network. For example, a set of compute nodes could access data via network requests to a separate set of nodes running Redis servers. At the opposite end of the spectrum, code can be shipped over the network. The canonical example is expressing computation as a SQL query which is sent to the node(s) that hold the relevant data. Magpie proposes a more fluid solution, where both code and data can move dynamically. In Magpie, an object represents data that is operated on. What makes Magpie objects unique is that pointers to data stored in an object are encoded as tuples. This allows Magpie to dynamically move objects around the system without invalidating pointers. The downside of this approach is that it prevents traditional libraries (that rely on raw pointers) from being used in user code. Magpie assumes a high degree of inter-object locality, so any given object is stored by exactly one node (i.e., a single object is never split between multiple nodes). User code is expressed in terms of nanotransactions and epics . A nanotransaction runs to completion on a single node and accesses a pre-specified set of objects. The Magpie runtime ensures that all objects accessed by a given nanotransaction are resident on a single node before executing the nanotransaction. The code for a nanotransaction is simple, because there is no need to query data over the network, and there is no need to deal with locking. If a hazard is present between two nanotransactions, they will execute serially. In Magpie, nanotransactions are written in Rust. An epic is a computation graph where each vertex is a nanotransaction and each edge is a data dependency. In contrast to nanotransactions, a single epic can be distributed across multiple nodes. Magpie schedules nanotransactions once all data dependencies are satisfied. Conflicts between concurrently running epics are handled via snapshot isolation . Any particular epic has a consistent view of each object and may abort in the event of a conflict. Scheduling and data movement are implemented hierarchically. A worker node can locally determine if it has ownership of all dependencies required for a nanotransaction. If this is the case, then the worker node executes the transaction immediately. Otherwise, the worker node uses a local ownership cache to try to determine if another node has all required dependencies and communicates with that node if possible. Failing that, scheduling is performed by a global orchestration node. Fig. 9 compares Magpie to memcached executing a workload that involves a user-specified read-modify-write operation: Source: https://dl.acm.org/doi/10.1145/3767295.3803616 Magpie is able to offer a lower latency because it is able to ship the entire read-modify-write operation to the server that holds the relevant data, rather than requiring multiple roundtrips. Some applications may benefit from being able to indicate that an object is rarely changed and thus can be distributed among multiple nodes at the same time. Thanks for reading Dangling Pointers! Subscribe for free to receive new posts.

0 views

AI Doesn't Have ROI

If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of NVIDIA , Anthropic and OpenAI’s finances , and the AI bubble writ large . My Hater's Guides To the SaaSpocalypse , Private Credit and Private Equity are essential to understanding our current financial system, and my guide to how OpenAI Kills Oracle pairs nicely with my Hater's Guide To Oracle . Over the last three weeks , I’ve published an exhaustive three-part guide to how the AI bubble might collapse, the events that might trigger it, and the consequences.  Subscribing to premium is both great value and makes it possible to write these large, deeply-researched free pieces every week.  Something changed in the last week. Shortly after Uber COO Andrew Macdonald said that it was “getting harder to justify” spending money on AI as it was “very hard to draw a line” from that spend to useful consumer features ( after its CTO said Uber burned its entire annual token budget in four months ), Axios’ Madison Mills reported that one company had accidentally spent $500 million in the space of a month on Anthropic’s models after failing to set spend limits. A few days later, Mills would report that other companies were now looking for ways to reduce their AI spend . That’s because, as I’ve said before , nobody can actually measure the ROI of AI, or even create a standard measurement of the cost of a task thanks to the inevitable hallucination-prone nature of LLMs and the ever-growing list of different harnesses and “agentic” (sigh) interfaces. Every different prompt and project and interaction can go wrong in a way that is hard to predict or plan for other than having an eternal vigilance that the supposed “intelligence” doesn’t do something catastrophically stupid, because LLMs have no thoughts, consciousness or ability to learn outside of pre and post-training.  If you can’t measure how good something is, how much it might cost, or what your return on investment might be, it’s fair to ask why you’re even paying for it in the first place. People are (reasonably!) harping on about the ROI problem, but I think the “can’t really measure the cost” part is an even bigger problem.  Yesterday, Microsoft’s GitHub Copilot moved all customers to token-based billing from a premium request model ( as I reported a week before everyone ) as users had been allowed to burn thousands of dollars of tokens on a $39-a-month subscription .  Customers are irate. One burned through 50% of their monthly credits in a single prompt , another burned 60% in the space of a few hours , another 31% in a single prompt , another estimated that they’d burn their monthly credits in the space of a single five hour session , another burned nearly half of their credits in eight prompts , another around 14% of their credits in two prompts , and another lamented that GitHub Copilot had gone from their favorite subscription to their most-stressful overnight after burning 33% of their monthly balance in a few hours . And, to be clear, this is during a promotional period where you get $11 or $21 in free monthly credits: These users — much like the users of effectively every subsidized AI subscription — never really knew how much anything they did cost, because Microsoft intentionally hid the actual cost of prompts and allowed users to spend obscene amounts as a way of boosting growth for GitHub Copilot.  This problem is industry-wide. Every single user of every single AI subscription service is having their tokens subsidized and the actual cost of AI obfuscated. As a result, every frothy, fluffy hype-piece about Claude Code or AI in general is a kalopsia — the belief that something is more beautiful than it really is.  Think of it like this: if you’re using an AI subscription with rate limits but no actual costs , any mistakes a model makes — such as getting stuck in a loop or just doing the wrong thing — can be dismissed as the troubled nature of early-stage technology, because the “cost” was $20, $100, or $200 for the entire month. Anthropic, OpenAI and every other AI company deliberately obfuscated these costs because they knew that the second a user actually had to pay for the fuckups of an AI model they’d scream like they were being stung to death by bees. This issue bubbled to the surface in the last few months because Anthropic and OpenAI both quietly moved all of their enterprise customers to token-based billing in Q1 2026 , and because these enterprise customers are run by Business Idiots with no connection to actual work , CEOs encouraged (or actively incentivized ) their workers to use AI as much as possible, in some cases even making one’s AI use a KPI that could cost them their job.  These same workers were conditioned — through their use of AI subscription products that hide the true costs — to use them as if they cost nothing , all while being screamed at by useless middle managers to “make sure to adopt AI at scale,” all while never, ever having any awareness of what a particular unit of work cost. This was always a recipe for destruction. The overwhelming majority of AI users are completely divorced from and actively trained to ignore the true cost of AI tokens, which means they naturally use these services in a way that’s actively uneconomical. Every frothy hype-piece you’ve read has been written by somebody who has been conned into ignoring the true cost of AI, all in service of spreading a technology that’s unreliable, inconsistent and expensive at its core, and never, ever seems to get cheaper.  OpenAI, Anthropic and other AI companies have actively conspired to mislead the world about the true costs of AI, and it was working great right up until they decided to try charging what it actually cost. Less than a quarter into the shift to token-based billing, enterprises are freaking the fuck out, with Walmart setting token limits on its internal “Code Puppy” AI coding tool , with a spokesperson saying that it “wanted employees to apply AI in ways that create value” mere days after Amazon SVP Dave Treadwell told employees to “ not use AI just for the sake of using AI .” The last few years of AI hype have been built on lies. Every company has conspired to make you think that AI is affordable and sustainable, that profitability was possible, that hallucinations were fixable, and that any problems you faced today were a result of being in “ the early innings .” In reality, the AI industry has absorbed over a trillion dollars, effectively all tech talent, the majority of startup funding, the majority of media coverage, the art and work of millions of people, and been given chance after chance after chance to fix the obvious, glaring issues.  Every time a skeptic dared to stand out and say that none of this made sense, they were told that it was just like Uber ( it’s not ) or that Amazon Web Services cost a lot of money ( it cost $52 billion over the course of 14 years and was cash-flow positive in nine ), that “costs always come down,” and that everything would magically be alright as long as they were patient for an indeterminate amount of time. Four years and a trillion dollars in, AI is more expensive, its companies more cash-intensive, its products just as unreliable, and its boosters more desperate than ever to make you ignore reality as a means of empowering one of a few ultra-rich oafs. Products from OpenAI and Anthropic are built to ingratiate and coddle losers while creating work-shaped outputs that are good enough to impress braindead executives, imbeciles and middle management hall monitors that don’t do any real work, and the reason it’s worked this long is that both companies intentionally misled everybody about how much the real costs were. I must repeat myself: AI is more expensive today than it was three years ago, and it is not getting cheaper. Sam Altman’s comments about “ intelligence too cheap to meter ” were lies. NVIDIA’s Blackwell GPUs didn’t make it cheaper, and its Vera Rubin GPUs won’t either. Google’s TPUs won’t do it, Amazon’s Trainium or Inferentia chips won’t do it, Vera Rubin CPUs won’t do it, OpenAI’s chips won’t do it, and no, DeepSeek won’t do it either.  People chose — and still choose — to believe that AI would get cheaper because they think things got cheaper over time in the past, which is sort of true but not remotely similar in any way, because the cost of running and training AI models comes from using the hardware as well as its upfront cost. Large Language Models require expensive GPUs thanks to their reliance on power-intensive parallel processing, and larger, more-complex models in turn require more GPUs to both train and run inference with. And three generations in, NVIDIA GPUs don’t appear to be bringing the cost down at all, which heavily-suggests that the inherent business model of generative AI is broken. People love to compare AI to the Dot Com Bubble ( AI is far, far worse ) because it’s much easier to rationalize bad behavior than accept that we’re facing the largest misallocation of capital of all time. The Dot Com Bubble was really two bubbles — one around eCommerce and internet startups, and one around telecommunications infrastructure. Per Justin Kollar , the telecommunications bubble grew because of a fundamental misunderstanding of demand: As a result, infrastructure was built far in excess of what demand existed, because most people weren’t online, and those who were had very slow internet connections. Per me : Here’s a critical difference between AI and the Dot Com Bubble: when people actually lit up the dark fiber, the underlying internet service was faster, better and cheaper than a dial-up connection. Services like TheGlobe, WebVan, and Pets Dot Com ran businesses that lost incredible sums of money did so not because of the costs associated with accessing their services, but the unrealistic and unsustainable business models themselves.  Their eventual functional forms — Facebook, Instacart, and Chewy — didn’t require fundamental scientific breakthroughs in how goods were delivered or internet services were accessed. Their failures were a result of poorly run businesses that lost money by expanding too rapidly or spending $400 to acquire each customer .   Dell and CoreWeave just turned on the first Vera Rubin GPUs , and you’ll notice nobody is saying the words “profitable” or “sustainable,” because NVIDIA is not interested in making stuff more efficient rather than more expensive.  According to CEO Jensen Huang , AI data centers — which currently cost somewhere in the region of $50 billion per gigawatt — will now cost between $80 billion and $100 billion per gigawatt in the future. Does this sound like it’s getting cheaper to you? Even if said data center packs theoretically more “power,” what does that “power” do for the customer running compute on it? Is it cheaper? More efficient? How do we not have these answers? All of this is to say that the Dot Com Bubble happened due to irrational exuberance and growth lust, and what was recovered at the end came not from scientific breakthroughs but the fact that the useful infrastructure existed and could be adapted and used to make things cheaper and more efficient. That isn’t the case with AI data centers, AI startups or anything else to do with the AI Bubble. Every few days somebody makes a post like this suggesting that “the internet didn’t go away” and “railways didn’t go away” when their bubbles popped, but I think this is a fundamental misunderstanding of what AI is . An AI data center full of AI GPUs is useful for AI and very little else. There are GPU-powered analytics tools, GPU-powered modeling and scientific applications, but the nature of GPUs — good at doing the same thing across big data sets in parallel, but bad at handling many little independent tasks — makes them impractical for most of what modern computing demands. The entire Dot Com Redemption storyline comes from the idea that it “left behind useful infrastructure,” by which they mean “cabling that allowed hundreds of millions of people to use the internet.” While there was some amount of further construction and capex to handle, the end result was useful fiber that connected people with a faster connection at a lower cost. No such story exists for AI. AI data centers are ruinously expensive , requiring billions in upfront funding with operating costs so high that they, at best, run at a loss for the first five or six years of service, if they ever recover their original costs at all. A rack of Vera Rubin or Blackwell GPUs will cost as much to run in five years as they do today, as will an incomplete data center cost just as much to finish construction, connect to the grid or acquire behind-the-meter (IE: generators) power for.  In the aftermath of the Dot Com Bubble, dead startups flooded the market with cheap server and office gear, which allowed plucky founders to cobble together their own services. A single Sun Microsystems Ultra Enterprise 3000 cost $43,000 ($89,000 in today’s money) and had a power draw of between 1,200W and 1,500W, but could run an entire company’s infrastructure . A single B200 Blackwell GPU uses 1,200W , and more-complex AI coding tasks can take up four to twelve of them for a single user’s output. Put simply, you can’t really do very much with a few of these GPUs, and what you can do isn’t profitable, scaleable or valuable. Similarly, dark fiber could be lit up with the right transceivers and networking gear to create internet access. AI data centers are effectively large boxes with custom cooling built for a very limited subset of chips. Adapting them to other uses would require gutting the data center, which would mean that the vast majority of the capital expenditures were wasted.  Even if you were able to buy a hundred Blackwell GPUs from a dead neocloud, you, as a regular person, couldn’t do anything with them. In fact, nobody really could, because you’d still need a physical data center and bespoke cooling , which means that even if the chips were free , the associated construction capex or, at the very least, physical colocation space would still cost a great deal of money The internet and railways didn’t go away because their up front costs were the only real costs that mattered.   Even if somebody were able to pick up a cheap AI data center full of the latest generations of GPUs, the underlying operating expenses are awful, and the only way to make them even close to generating a profit is to have consistent use of all your GPUs. There’s a cost to having them sit idle — both in electricity and personnel — and unless the plan is to have them sit in a data center turned off until you can find somebody else to sell them to, you’ll have to come up with a business model for your AI services that actually makes a profit…which nobody appears to have done, even with unlimited capital and the entire focus of the tech industry. Then there’s the issue of training , which is entirely made up of opex. If you want to train a new model, you’ll likely need thousands — or even tens of thousands — of H100 or H200 GPUs, and they’ll cost just as much electricity whether or not you make anything useful. A failed or unhelpful training run could cost tens of millions or hundreds of millions of dollars , and that will require financial backing that won’t exist. While there could be a theoretical future of LLMs run at their true cost (IE: unaffordable for most) as I covered in last week’s premium newsletter , that would require demand, and as I’ve discussed above, the demand for AI services is a mirage built on subsidized subscriptions, and companies paying the actual costs are already screaming for mercy.  Once the bubble bursts, any excitement for AI — and by extension excitement to spend money on AI — goes out the window. AI startups won’t get funded . AI token budgets won’t get greenlit . AI data centers won’t be able to raise debt .  Every part of this bubble relies upon the momentum of hype to substantiate every link in the chain. Hype must exist around the nebulous concept of an “ AI factory ” to raise debt to buy NVIDIA GPUs and build data centers, hype must exist around AI software to convince enterprises to keep buying services from OpenAI and Anthropic, hype must exist around theoretical demand and outcomes from AI services to fund AI startups, and hype must exist perpetually in the media to make everybody ignore AI’s ruinous costs.  This hype was unsustainable without buckets of lies, misinformation and a captured tech and business media. The value of AI has been inflated by the vagueness of how it’s discussed. For example, major media outlets will gladly write that “AI can build software,” but said sentence suggests that you can just type “build me Slack 2” into Claude and have it fart out a fully-functional, production-ready piece of software, rather than a quasi-functional mound of code-slop that can do enough to trick a business idiot or lazy journalist, but little else.  Said vagueness created a society-wide gravitational pull of consensus that you needed to be behind AI now, because it’s just like the new internet, except bigger, and if you say it’s not you’re going to be really embarrassed.   Creating this pressure was necessary, because without a society-wide aggression against those who didn’t adopt these tools, AI might have actually had to stand on its own merits. That fact AI companies backed by the full manufactured consent of the markets and most of the economy still had to subsidize their products shows exactly how flimsy their value truly is. The only way to inflate the AI bubble both on a hardware and software level was to mislead the general public and investors on the costs and efficacy of AI models.  Now that organizations are having to pay the actual cost of AI, suddenly they’re concerned about its outcomes, and everybody has become a little hysterical. Late last week, SemiAnalysis wrote one of the most insane articles I’ve ever read — AI Dark Output: The Visible Cost of Invisible Output — saying that “AI output will be real before it is measurable,” and, well, whatever the fuck this is: SemiAnalysis is a semiconductor analyst firm with an obvious reason to keep the AI bubble inflated, and if they’re writing a piece that amounts to “AI has a return on investment, you just can’t see it,” things are getting desperate. Here’s how they define “Dark Output”: That “substitution dark output” is explained using a theoretical example of “...a simple legal document which in theoretical GDP should have the same inflation adjusted value to a user whether a lawyer drafts it or AI drafts it,” which is nonsense.   When you pay a lawyer, you don’t pay them to “create an output,” you buy their experience and time and ability to find and adapt case law to reach an outcome, such as in the process of filing stuff, avoiding or actively participating in litigation. Just because AI can fart out an approximation of what a human output may look like — likely riddled with hallucinations — doesn’t mean that said output was created with any “experience.” Models don’t think , they have no experiences , and even if a lawyer is prompting them , that doesn’t mean that the lawyer’s discernment or taste is reflected in the final output. Then there’s this bit: We’re four fucking years into it but we’re still using hypotheticals. Are “...the simplest documents now completed by AI and not lawyers”? You don’t get a lawyer to write a document because they’re the only ones who can write it — you get it to mitigate the risk using the experience of the law firm, both in the associate drafting the document and the partner overseeing it. This flimsy, half-assed logic is how the AI bubble got inflated in the first place. Supposedly smart people continually show a total lack of awareness of how jobs work at basically every level, and in this case — where it should be theoretically possible to find and talk to a lawyer doing this — the supposed “dark output” includes “the research done to complete this article.”  You may be wondering what that “new work done by AI that wasn’t previously being done by humans because AI made it cheap” is, and the answer is “literature reviews” and “summarizing the last six months of email,” and I wish I was kidding. But don’t worry, “...there are anecdotal signs that a large fraction of current token spend is for new work that wasn’t previously paid for rather than replacing existing work.” Have you ever noticed that every story about AI job loss reads like it was written by The Riddler? For example, last year a ton of outlets reported that “Oxford Economics had proven that entry-level workers were being replaced with AI,” but in reality, the study said that “... there are signs that entry-level positions are being displaced by artificial intelligence at higher rates ” with no actual data beyond post-2022 employment declines in some fields that AI might be able to do.  Similarly, CNBC’s brainless headline that an MIT study found that AI “could already replace 11.7% of the US workforce” was entirely based on a labor simulation tool rather than any economic analysis of the actual shit AI can do and what it’s doing in the real world. That’s because AI job loss is a fucking myth. Every company laying off people because of “the power of AI” is doing so because their shareholders are mad and because they know they’ll get headlines.  And if it were actually happening there’d be fucking riots in the streets! Unemployment would be spiking! Things would be burning!  The thing that everybody wants you to avoid thinking about is that if AI worked as advertised, there would be obvious, impossible-to-ignore economic signs: For all of these things to happen, AI would have to be both flawless , hallucination free, a completely different product capable of autonomous intelligence and having unique ideas.  The reason that we can’t measure “AI job loss” is because AI can’t do jobs. It can be used to replace some specific contract positions with extremely shitty versions that don’t scale , but it does not replace jobs because it is incapable of human work. It cannot speak to colleagues, it cannot accrue experience, it does not have instincts or culture or taste or anything other than whatever training data has been crammed up its ass or through endless post-training.  Nevertheless, the threat of AI job loss has been enough to allow both Sam Altman and Dario Amodei to raise hundreds of billions of dollars lying about it, and now that both of them have walked back their job loss scare-propaganda , every oaf and moron that believed them without actually checking should be booted out of their representative industries. It’s fucking embarrassing! You should all be ashamed of yourselves! As I said above, the ROI of AI should be really easy to measure if it actually existed.   If AI was magically able to build and maintain software, we’d have small companies that could build and deploy at the scale of a hyperscaler, and hyperscalers would, in theory, be expanding their margins so aggressively that it would create a new golden age of software revenues…or they’d become entirely infrastructure providers, as anybody else could compete on software. But on a far-simpler level, it would be extremely obvious. Anybody can access ChatGPT, Claude or Gemini, effectively anywhere in the world. The theoretical “power” of AI is that it “just does stuff,” and the proliferation of LLMs would mean that somebody would’ve “done” some “stuff” that we could point at with exceptional ease. Random guys in the midwest would be pumping out profitable, functional, and feature-rich software. Lawsuits would be won by pro se plaintiffs with incredible counsel from a theoretical “ country of geniuses in a data center .” Four years in, we’d have one major AI-powered company demolishing the competition in any industry, or every industry would become so prevalent with (powerful) AI that it would effectively reduce the cost of the service to nothing.  We’d be able to point to companies that adopted AI and then completely fucking exploded. We’d be able to point to useless coworkers who were now doing impressive, meaningful work. There would be widespread economic upheaval, as the concept of a “large company” would lose meaning, because those theoretical “geniuses in the data center” would be automating all the work.” There also wouldn’t be so many pieces insisting that AI is super powerful and so many quotes from Business Idiots saying it’s “ real .” We wouldn’t talk about what AI could do at all. We wouldn’t need Anthropic to lie that Mythos was too powerful to release only to release it several months later .  We wouldn’t have to talk about the fucking potential at all because we’d be able to point to what was going on because it would be obvious! Last week, Bain & Co. released a study of 951 executives from companies with more than $100 million in revenue , and unsurprisingly, the data did not declaratively explain what the ROI of AI was: 10% of…what? What’s the cost you saved on? 10% of $10 million is a lot for a company with $100 million in revenue, but 10% of $1000 isn’t, much like 20% or 30% isn’t either! Yet there are two punchlines to come: This also assumes that those savings are enough to warrant future spending, which…this data does not actually prove. Thankfully, Bain did manage to publish one of the single-funniest quotes of the AI bubble: Put another way, the technology “worked (?),” but did not provide value in doing so. Sounds like it didn’t fuckin’ work to me! Bain had one other crucial bit of advice: Just so we’re clear, Bain & Co, a management consultancy with billions in annual revenue, is advising its clients that they should make sure that they’re getting some sort of return on their investment? And that reinvesting in something that doesn’t have a return on investment would be bad? If AI was real, these fucknuts would be replaced first! They’d replace everybody who wrote this report! You don’t need somebody to tell you this, and if you do you’re a fucking moron!  Thankfully, the AI industry is saved, as Sam Altman had the following to say about AI’s remarkable costs : Motherfucker you are the industry! You are the one that has to work this out! OpenAI is the AI industry ! You are OpenAI’s CEO! You lazy, ignorant, dog-brained loser!  This was an opportunity for “journalist” David Faber to push back, and here’s how that went: This is how the AI bubble inflated! This is how it happened! It happened every time a journalist asked a meaningful question and then immediately diverted to a totally different imaginary topic that made the subject feel good! David Faber, resign and give your job to somebody who has an iota of courage or pride in their work! Unbelievable! Sam Altman is worth billions of dollars, and OpenAI is allegedly worth $852 billion too, and the best he can give us is “teehee, someone else will work it out,” because Sam Altman is a loser that ingrates other losers empowered by losers to sell loser technology to other losers , and the only way that he’s been able to do this is because the people that should know better are sitting around their thumbs up their asses asking him whether there will be data centers in space. If AI had ROI, we wouldn’t be debating whether it had ROI. We wouldn’t discuss its potential, or whether it could, theoretically, under different circumstances, in the future, in a way that nobody can describe be super powerful and do all of the stuff it can’t do today.  If AI had ROI, we’d be able to point with specificity to inarguable examples of economic impacts. AI boosters can jerk their binguses all they like about how Spotify’s CEO said its best engineers don’t write any code anymore . What does that mean? Is Spotify shipping better features, and are those features launching at a rapid clip? Is the software more secure, or stable? Spotify’s design still looks like absolute dogshit ! Most software is worse! Things keep breaking everywhere , and in many cases it’s because of AI coding tools ! In fact, I’d be willing to believe that AI had a negative economic impact, increasing operating expenses across the board and giving some software engineers prompt-based concussions by automating some coding in a way that makes them lazy and bad at writing software by speeding up the process of writing code with so much of it that it’s impossible to review it all ( see Mo Bitar’s video ). LLMs appear to be able to write some code sometimes and do so at high speed , and ingratiates software engineers that don’t really care about writing software by making them feel like they wrote it.  While it might allow some things to go theoretically faster, the overall economic impact of AI-generated code appears to be worse code, worse software, and massive, multi-million dollar bills from Anthropic and Cursor . I will concede that some software engineers seem to like these things, and that many software engineers appear to be using them, but I am yet to see a single one who obsessively posts about their token spend create anything of note or worth, and none of these people appear to be able to point to the actual ROI of all that AI they’re using. I realize I’m painting with a broad brush, so let me get a broader one: I believe anyone who relies on LLMs for anything is a mark.  I don’t give a shit if you use them to spit out a script or do some simple sideline part of your job, or transcribe or dictate into them, or if you’ve used them as a search engine (and even then, you best check every source!), but the moment you rely on and run your entire process on these things, I immediately doubt your ability to do anything, or at the very least wonder how gullible you truly are when somebody ingratiates you enough. Why? Because every single “AI setup” I’ve seen anyone ever use involves a rube goldberg machine of bullshit deterministic scripts to try and bring the hallucination-guaranteed nature of LLMs to heel, usually to the point that you’re doing more work making the LLM work than you did before they existed, and you’re only proud of it because you feel like you’re special. There are, of course, exceptions. I’ve talked to a few people who describe LLMs normally, without hype, who tell very specific stories of very specific outcomes that save indeterminate amounts of time. There are some that have used LLMs to create python scripts to search and organize data, to which I say “you’re impressed with Python, not LLMs.”  If all we’re left with from this era is the ability for some people to write Python scripts without learning Python, this is still an egregious and horrifying waste of capital.  Remember: what you are using is the end result of over a trillion dollars of investment. It is only made possible through manufactured consent that actively misinforms people about the current and future capabilities of LLMs. They didn’t raise hundreds of billions of dollars by talking about any product currently on the market, and that’s because the current products are not very good products. You are all the victims of a con. No matter how “well” your Breakfast Machine of different API calls and if-this-then-that automations may or may not function, you have been sold a bill of goods for “artificial intelligence” that is impossibly stupid. When some of you are pushed to prove the ROI of AI, you immediately return to boring talking points about Uber, or the Dot Com Bubble, or some other slop fed to you by people actively conning you at this very moment.  I mean this with as much empathy as I can muster: if you’re a huge AI booster, why do you defend this so vociferously? What is it about my criticism that hurts? Is it that I’m yucking your yum? Is it that I don’t immediately ingest and regurgitate the theoretical idea that the thing you’re using all the time is or may become sentient? Is it because I’m not impressed?  I think it’s far more likely that people are angry that I’m asking simple questions that should have — and don’t — have satisfying answers. I’m also fundamentally unimpressed with anything I’ve seen an LLM do, because my requirement for software or hardware is that it works as advertised, and the very fundament of the AI con is that LLMs are sold based on their theoretical capabilities. The reason nobody can show you the ROI from AI is that AI does not have a return on investment. Large Language Models can speed up some things in a way that becomes increasingly less-valuable and accurate with the complexity of the task, and more investment in AI data centers does not appear to do anything other than expand the number of tasks that an LLM can attempt.  While some people have been able to get something out of generative AI, that something never seems to be a tangible or impressive achievement. Every “successful” AI story is a result of either ignoring the obvious problems with LLMs or mitigating them at a great cost for an aggressively expensive and mediocre result.  LLMs are sold as “AI,” a technology best-known for automating things, yet they can’t be trusted to run anything on their own.  Instead, they manipulate the user into covering up their errors, explaining away their failures, coddling their meager returns and crediting them with the actual labor that LLMs are meant to automate away.  They do so by their investors and executives conning the media and the markets with outright lies and half-truths that exploit society’s weak points. The media and markets are informed by people that neither understand technology nor history, and Business Idiots that have reached the heights of their careers through diplomacy and ratfucking that care only about attention and adulation for things that other people do.  LLMs coddle the easily-led and narcissistic into believing that the model is doing the work as the human being has to constantly cater to the model’s inefficiencies and inabilities, using more energy and resources than any technology ever made.  And yet with all the money, all the attention, all the resources, all the land, all the power, all the affordances and excuses and endless fucking applause for mediocrity, nobody can actually point to the ROI of AI, because it doesn’t exist outside of it burping out stolen content and enriching and ingratiating billionaire dullards. Even at a hundredth of the price I’d be dismissive, because everything I’ve seen is so decidedly unexceptional. I realize that some will say I’m dismissive of LLMs’ capabilities, and I’m sorry — I’m just not impressed. You spent a trillion dollars to make it somewhat easier to code some things sometimes but not in such a way that it actually results in anything, research reports that nobody will read, shitty powerpoint decks and excel spreadsheets, and art that looks like stock images because that’s exactly what it was trained on.  This shit needs to work every time without fail and be absolutely flawless and autonomous.  You are paying for a tool. You are paying for software. You are a customer. Your job is not to explain to others why this is exciting, nor is it your job to cover up for its mistakes. If you truly love this stuff you should be either secure enough in doing so that you don’t feel compelled to defend it or be demeaning to those that disagree. The fact that I have to write that sentence is proof that something is very, very wrong with the AI industry, and that LLMs are about far more than software.  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 foundation of software would be destroyed, as literally anyone could create and maintain any software they desired . Literally nobody would buy any software because they’d just type “computer make me a Slack clone for my organization” and it would magically appear on AWS.  The SaaSpocalypse ( see my premium here ) is a media and market-based hallucination where the collapsing growth of software companies is being explained as “AI taking their business” versus “private equity and venture capital overvalued software companies between 2018 and 2022 to the point that Apollo’s John Zito said “ all the marks are wrong ,” which is very bad, but nothing to do with AI. Accountancy would completely collapse, as nobody would need anyone but ChatGPT to do their taxes. Law schools would collapse, because legal internships would become useless and law firms would no longer have need for the thousands of new associates, because ChatGPT could just draft it all.  Legal salaries would also dramatically collapse. Research in effectively every discipline would collapse, because you could ask for a detailed report and said report would be better than any human being creates. The entirety of scientific research would change, because you could now automate many different disciplines out of existence.

0 views
Stratechery 2 days ago

The Google Capital Company

Listen to this post : What does the most beautiful business model of all time look like? First, imagine that your supply is free. Second, imagine that your customers willfully compete against each other to raise your prices. Third, imagine that your users decide which of your customers gets the privilege of paying you. All you have to do is build a bit of infrastructure to make it all happen, pay a nominal bit of depreciation on that infrastructure, and make billions of dollars on some of the greatest margins in the history of business. I am, of course, describing Google, a company so good that Warren Buffett, the legendary investor, could never quite bring himself to invest in it. Buffett explained in the 2017 Berkshire Hathaway annual meeting : We were their customer very early on with GEICO, for example, and we saw — these figures are way out of date — but as I remember, we were paying them $10 or $11 a click, or something like that. And any time you’re paying somebody $10 or $11 bucks every time somebody just punches a little thing where you got no cost at all, you know, that’s a good business unless somebody’s going to take it away from you. And so we were close up seeing the impact of that…But, you know, you’ve almost never seen a business like it. One of the characteristics of an Aggregator like Google is the way in which they maximize absolute value at the expense of relative value. For supply — i.e. content on the web — Google dramatically increases the number of visitors, even as the value of any one visitor who comes from Google is worth much less than a visitor who visits directly; for an advertiser, the value of one click makes up for thousands of impressions of an ad that make no difference; for a user, Google helps them discover what they are looking for amidst the overwhelming abundance that is downstream from distribution being free. In every case the Aggregator increases quantity at the expense of relative quality, confident that the absolute amount of quality will be more in the long run. What is interesting is that this is the exact inverse in terms of why these companies have been valued by investors. The best tech companies are “asset-light”, predicated on maximizing zero marginal costs. Yes, they spend a lot of money on R&D and on the infrastructure to make markets happen, but they don’t actually participate in those markets; simply taking a skim and keeping the vast majority of that skim is what gets Wall Street excited. In other words, it was the relative amount of money made that was generally more important to the market than the absolute amount of money. Berkshire Hathaway was, before Buffett acquired it, a failing textile business; Buffett originally invested because the stock was worth less than the liquidation value, and ended up owning it outright after a dispute with management. It was a decision he regretted; from the company’s 1989 letter to shareholders : If you buy a stock at a sufficiently low price, there will usually be some hiccup in the fortunes of the business that gives you a chance to unload at a decent profit, even though the long-term performance of the business may be terrible…Time is the friend of the wonderful business, the enemy of the mediocre… I could give you other personal examples of “bargain-purchase” folly but I’m sure you get the picture: It’s far better to buy a wonderful company at a fair price than a fair company at a wonderful price. Charlie understood this early; I was a slow learner. But now, when buying companies or common stocks, we look for first-class businesses accompanied by first-class managements. One of the first-class businesses Berkshire Hathaway acquired was See’s Candies in 1972. Buffett explained in the 2007 shareholder letter : We bought See’s for $25 million when its sales were $30 million and pre-tax earnings were less than $5 million. The capital then required to conduct the business was $8 million. (Modest seasonal debt was also needed for a few months each year.) Consequently, the company was earning 60% pre-tax on invested capital… Last year See’s sales were $383 million, and pre-tax profits were $82 million. The capital now required to run the business is $40 million. This means we have had to reinvest only $32 million since 1972 to handle the modest physical growth – and somewhat immodest financial growth – of the business. In the meantime pre-tax earnings have totaled $1.35 billion. All of that, except for the $32 million, has been sent to Berkshire (or, in the early years, to Blue Chip). The “problem” with a See’s Candies is that there is nothing to be done with all of that profit; if it’s privately held then its owners end up with more cash than they know what to do with, and if it’s public, then the job is to figure out how to return that cash to shareholders through some combination of dividends and stock buybacks. What Berkshire Hathaway did, however, was use that cash to grow: After paying corporate taxes on the profits, we have used the rest to buy other attractive businesses. Just as Adam and Eve kick-started an activity that led to six billion humans, See’s has given birth to multiple new streams of cash for us. (The biblical command to “be fruitful and multiply” is one we take seriously at Berkshire.) One of the businesses Berkshire Hathaway used the See’s profits for was on the opposite end of the spectrum in terms of capital utilization: BNSF Railway. Railways require a lot of capital to operate; BNSF consumed $3.8 billion last year; they also make a lot of money: BNSF’s net income was $5.5 billion on revenue of $23.4 billion. To put that in perspective, the total amount that Berkshire Hathaway has made from See’s Candies is probably less than $3 billion (the last disclosure was “over $2 billion” in 2019), i.e. less than BNSF made last year. So which is the better business? In Q4 2019, the first year that Alphabet disclosed Google Cloud revenue, Google Services — the high margin beautiful business I described at the beginning — made $43.2 billion in revenue and $13.5 billion in operating profit; Google Cloud made $2.6 billion in revenue and lost $1.2 billion. Google Cloud revenue was 6% the size of Google Services. In Q1 2023, Google Cloud made a profit for the first time. In that quarter Google Services made $62.0 billion in revenue and $21.7 billion in profit; Google Cloud made $7.5 billion in revenue and $0.2 billion in profit. Google Cloud revenue was 12% the size of Google Services, and its profit was 1% the size of Google Services. In Q1 2026, Google Services made $89.6 billion in revenue and $40.6 billion in profit; Google Cloud made $20.0 billion in revenue and $6.6 billion in profit. Google Cloud revenue was 22% the size of Google Services, and its profit was 16% the size of Google Services. Google Services is, needless to say, a much more scalable business than See’s Candies. The growth just over the last seven years — more than doubling revenue and tripling profits — is astounding. And yet, at the same time, Google Cloud is growing faster, and while its margins are worse — 33% last quarter as compared to 45% for Google Services — they are expanding more rapidly. The bigger question is how big can those numbers go? Google Services’ advertising business is inherently high margin, but advertising is definitionally but a fraction of the overall economy; Google Cloud’s growth, meanwhile, is AI, which many people think/worry/hope might take over the entire economy. In other words, might we one day look back and realize that Google Services provided the cash flow to build a business with relatively worse margins but absolutely higher dollars, much like See’s helped fund BNSF? The context for this discussion is this news from Bloomberg : Google parent Alphabet Inc. is raising $80 billion through a package of equity offerings, including an investment deal with Berkshire Hathaway Inc., as the company races to fund its ambitious artificial intelligence spending plans. The undertaking includes a $40 billion so-called at-the-market program to sell shares from time to time beginning in the third quarter, according to a statement Monday. The company will also offer $30 billion in underwritten offerings of shares and mandatory convertible preferred stock, as well as the $10 billion deal with Berkshire. Together, the transactions represent one of the largest equity deals of all time — and they bring an unexpected twist to a blockbuster year for initial public offerings. First off, a decent portion of the ATM program, launching in the fall, is going towards paying tax obligations on Google equity awards (which are quite large thanks to the stock’s run-up in value). That leaves equity being issued now, particularly the $10 billion to Berkshire Hathaway, which is fascinating for a number of reasons. The first question is why did Google issue equity instead of debt? Debt is, all things being equal, the preferred instrument for investment: the proceeds of the latter pay off the former, and existing equity holders reap all of the benefits. Equity, on the other hand, removes the risk of debt, but at the cost of giving up a share of future profits. Google has to date funded its massive AI-related capital expenditures with free cash flow, and while the company does have around $81 billion in debt, that is more than balanced by $126 billion of cash. In other words, Google’s capacity to issue more debt — and to reap the financial benefits of doing so (because interest is tax-deductible) — is substantial. That leads to what may be the Occam’s Razor explanation: Google is also going to start issuing a lot more debt as well, which is to say that everyone continues to underestimate the amount of demand there is for compute. Of course that’s not far off from a more bearish interpretation: Google is uncertain about the return on investment of all that capex, and would prefer to share the risk (along with the upside). If there isn’t a substantial debt issuance down the road then this might be the right answer. The second question is why is Berkshire Hathaway suddenly, after all these years, interested in Google, and at only a slight discount to its all-time high price? Does it really just come down to the fact that Buffett is no longer making investment decisions, and Greg Abel, his successor as CEO, is? In fact, you can make the case that Abel is actually just replaying Buffett’s strategy, only this time Berkshire Hathaway is See’s Candies, and Google is BNSF. At the end of last quarter Berkshire Hathaway had $373 billion in cash, and $25 billion in free cash flow in 2025. How many companies could actually employ that cash in a way that generated a high rate of return? It’s hard to imagine a better option than Google. The company is not only investing in AI, but has optionality in terms of outcomes: its Services business benefits from the investment, it is in contention at the model layer with Gemini, and it can sell capacity to the frontier labs. Moreover, that capacity has a sustainable cost advantage because of TPUs, which means that in a world where compute becomes a commodity — as hard as that is to imagine right now — Google is the hyperscaler that is poised to make the most profit. It is worth noting that $10 billion is a relatively small amount of money to both companies. To that end, perhaps the primary utility is as a signaling mechanism. On Google’s side, the signal is that the expected demand is actually far greater than anyone thinks, and that the company is ready and willing to fund supply using all means at its disposal, including equity; for them Berkshire Hathaway’s investment is an endorsement of this view and a validation of the wisdom of the investment. And, on the flip side, if the signal is correct, then Berkshire Hathaway is getting a deal and putting its cash flow machines to work building the future. A couple of months ago, when Anthropic was clearly ascendant, OpenAI backers tried to make the case that actually OpenAI was in the driver’s seat because the frontier lab had secured more compute; I made the case in Mythos, Muse, and the Opportunity Cost of Compute that this was not at all dispositive: OpenAI is betting that this compute constraint — and the deals they have made to overcome it — will matter more than Anthropic’s current momentum with end users…I’m less certain that this will be dispositive. When it comes to AI, distribution and transaction costs are still free — the two preconditions for Aggregators — which means that the winners should be those with the most compelling products. Those products will win the most users, providing the money necessary to source the compute to serve them; consider Anthropic’s deal to secure a meaningful portion of TPU supply, which, given the capacity constraints at TSMC, is ultimately an example of taking supply from Google. I suspect that Anthropic can take more, including already built hyperscaler and neocloud capacity. Yes, that compute will be more expensive, but if demand is high enough the necessary cash flow will be there. That thesis was proven correct just weeks later when SpaceX ponied up the supply Anthropic needed (and yes, it was expensive): This deal is a perfect example of what really is basic economics. First, if demand exceeds supply, then prices should increase. At the same time, prices are elastic: if they are lower there is more demand, and if they are higher there is less demand. In this case, while there is broad demand for computing, Anthropic has arguably the most demand; furthermore, Anthropic has the most willingness to pay, not just because they are making meaningful revenue, but also because they have the capacity to raise money in the pursuit of winning in AI. Implicit in this analysis was that there was enough compute capacity in the world to be bought; what happens, however, when and if there isn’t? What if the ultimate battle — the one that determines who gets compute — becomes a matter of who can bring the most cash to bear? And what if that advantage compounds, such that the company with the most cash capacity ends up with the most compute capacity (which we already know they will sell, in addition to using themselves) driving the ability to generate more cash? In that world, what company would be your best bet? We now know which one Berkshire Hathaway is betting on. 1 As an aside, it’s notable that Alphabet has another business — Waymo — where the company has so far rejected an asset-light model of licensing their software to OEMs, and has instead to date pursued a much more capital intensive approach of owning and operating their own cars; that’s a choice that has always felt at odds with Google Services, but is perhaps more compelling and aligned with Google Cloud and the Google Capital Company. ︎

0 views
Martin Fowler 2 days ago

Fragments: June 2

Greg Wilson has noticed that lots of folks are using dodgy metrics to figure out if AI tools are worth their costs. Would you measure lines of code generated, or tickets closed? Or would you send out a survey asking whether developers feel more productive? Each of those approaches is flawed in a different way; He lists lots of common metrics, and why they are flawed. Sadly he doesn’t give any suggestions on what would be better. In my view, since we cannot measure productivity , any metrics are weak evidence at the best of times. I do somewhat use one of his flawed measures: “Asking Developers If They Feel More Productive”. While I acknowledge the problems he gives with this measure, I find that in an environment where decent measures are hard to find, even such a dim light is the best we have. In this situation these kinds of qualitative metrics may not be conclusive, but they are useful . ❄                ❄                ❄                ❄                ❄ Benedict Evans observes that extensive automation didn’t mean the demise of professions in the past. we spent a century automating accounting: we built calculating machines, punch cards, mainframes, data processing, databases, PCs, spreadsheets, ERPs, cloud… in fact, we built half of the tech industry around automating this. Yet the number of accountants kept going up. He goes into the myriad of problems that exist when we’re trying to forecast the impact of a technology on jobs. There’s the much-talked-about Jevons paradox - once something becomes cheaper, people do it more, which can increase demand. Often this leads to the nature of jobs changing, even if it’s called the same thing. Accountants today aren’t doing exactly the same work that they did in 1970 or 1980 ‘but more’ - they’re still called ‘accountants’ but the job is different. New technology often starts out being used for ‘the old thing but more’, but it rarely ends up like that. Technologies often affect whole businesses - consider the impact of the internet on news publishing. Did anyone observing the rise of smart phones in the early 2000s realize that a consequence of this would change the economics of taxis due to the rise of ride-sharing apps? The conclusion is that it is, at the very least, almost impossible to forecast the impact of AI on our work. ❄                ❄                ❄                ❄                ❄ Stephen O’Grady looks at how closed and open models have performed on benchmarks over time . Closed models are setting the pace of innovation, and constantly breaking new ground from a capabilities standpoint. Open models are chasing them, and the cycle times seem to be getting shorter. There are no clear capability moats, and what is frontier today is table stakes tomorrow. It tooks 13-18 months for open models to catch up to GPT-4 on these benchmarks, but only 2-7 months to catch up to GPT-4o. There’s a bunch of caveats to this analysis, that he lists, but it’s a worthwhile survey of how various kinds of models perform against the various measures we are trying to assess them with. ❄                ❄                ❄                ❄                ❄ One of the starkest examples of sloppy AI use is hallucinated citations - a give-away of both usage of LLMs and carelessness driving them. GPTZero is a company that makes tools to detect AI writing. I’ve no insight as to whether their tool is effective or not, but they do publish investigations of AI usage, and have published several articles highlighting hallucinated citations. One post focuses on Ernst & Young Canada’s report on cyber threats to loyalty systems and found that more than half its references were hallucinations. The post uses a lot of extremely annoying animations in how it presents its information (breaking Safari’s reader mode in the process). But the harm that these kind of AI generated reports can do goes further than just some misled humans: Publishing a report online is essentially a form of data injection into the pool of knowledge that is the internet. When the report includes fake information (either vibed citations or false claims) it can “poison the well” by misleading future researchers, especially if the report is published by a well-known consulting firm and hosted on a high-traffic website. ❄                ❄                ❄                ❄                ❄ As LLMs get more capable in programming, we are rightly worried that people will use them attack software systems. But these models can also be used for defense, allowing teams to find bugs before attackers do. Some folks from Mozilla posted an article on how they’ve used AI model to identify and fix an unprecedented number of latent security bugs in Firefox . Just a few months ago, AI-generated security bug reports to open source projects were mostly known for being unwanted slop. Dealing with reports that look plausibly correct but are wrong imposes an asymmetric cost on project maintainers: it’s cheap and easy to prompt an LLM to find a “problem” in code, but slow and expensive to respond to it. It is difficult to overstate how much this dynamic changed for us over a few short months. This was due to a combination of two main factors. First, the models got a lot more capable. Second, we dramatically improved our techniques for harnessing these models — steering them, scaling them, and stacking them to generate large amounts of signal and filter out the noise. During 2025, there were 17-31 security bugs fixed each month. In April 2026, they fixed 423. ❄                ❄                ❄                ❄                ❄ Pavel Voronin riffs on Unmesh Joshi’s post on What is Code . He observes that cruft in a codebase (technical debt) has always added friction to software development. But the consequences of this cruft are compounded when LLMs are using existing code as context for future work. In a degraded codebase, the model does not see “technical debt” as debt. It sees examples. It sees precedent. It sees a style to continue. LLMs multiply what’s currently happening. I hear reports that good code might take the place of much of what’s put in markdown, because LLMs will imitate what’s already in the code base. But bad code multiplies too. Inevitably he introduces another variation of rampant debt metaphors: Cognitive debt accumulates when a team uses abstractions it no longer understands. Generative debt accumulates when a codebase contains confused concepts that models are likely to continue. Cognitive debt is about what the team no longer understands. Generative debt is about what the model is now likely to reproduce. ❄                ❄                ❄                ❄                ❄ Jason Koebler, from the very worthwhile 404 media, has written a plaintive essay on how AI-generated slop is driving us crazy . Not just because its filling the web with this slop, but also because how it’s making us humans react to slop and the threat of slop. We review our own writing and notice: it’s not just reading AI slop that hurts us, it’s the risk that we write something that looks like AI slop. If I use phrasing that AI copied from me, does it seem like I’m copying AI? This has led to the appearance of “humanizers” - AI tools that make our writing look less like AI. Humanizers add typos, randomly replaces words, removes “AI tells,” and sometimes inserts random characters. It’s another step on the way to the Zombie internet: I called it the Zombie Internet because the truth is that large parts of the internet are not just bots talking to bots or bots talking to people. It’s people talking to bots, people talking to people, people creating “AI agents” and then instructing them to interact with people. […] It’s my email inbox, in which I used to occasionally get poorly-formatted, poorly written, extremely long emails from delusional people who were positive the CIA had imprisoned them in a virtual torture chamber using undisclosed secret technology but where I now get well-formatted, passably written, extremely long emails from delusional people who are positive they have proven AI sentience and have the AI transcripts to prove it. ❄                ❄                ❄                ❄                ❄ Andy Osmani points out that spawning lots of agents is like launching a bunch of parallel processes that all rely on a single orchestrating thread - yourself . Python has the Global Interpreter Lock (GIL). You can spawn as many threads as you want but only one executes python bytecode at a time because they must acquire the lock. You are the GIL of your AI agents. They all can run at once. But when any of their work needs genuine understanding of the architecture or resolving merge conflicts, that work has to acquire the lock. There is one lock. You hold it. This means you must design the workflow with the agents with that GIL in mind. You shouldn’t launch more agents than you can properly review. It’s handy to separate background tasks that can be offloaded to an agent from complex tasks that require applied attention. Don’t use that precious brain for things that the machine can verify itself. [And I’d add - do get the machine to build tools that ease human verification. For example, it’s better to surface test case data in tables rather than buried in assert statements.] Spawning agents is not the skill. Anyone can run 20. The real skill is designing the system around the one serial resource that cannot be cloned or parallelized. That resource is your attention. ❄                ❄                ❄                ❄                ❄ Jamie Hurst is a Principal Engineer at booking.com, where he works in developer experience with a focus on AI tooling. He’s written realistically about the gains and losses of using LLMs in this work. The cost of building has collapsed, but the cost of aligning organisationally has not. If anything, it’s gone up. When three different teams can each produce a working solution to the same problem in the time it used to take to write a proposal, the bottleneck moves from engineering to coordination. He thinks he’s able to do more as a senior engineer, but is concerned about how sustainable it is, both for him personally and for the organization he works for. He’s able to shape directions for multiple workstreams at once, in a way that he couldn’t three years ago. But one loss is that he doesn’t have enough time for mentoring, which will exact a toll on his employer in the longer term. He also finds he doesn’t have enough time to think. The productivity gains from AI got captured by output volume rather than output quality. The org’s expectations rose to absorb the speed-up, and the slack that used to exist between tasks, the unstructured time where strategic thinking actually happens, got eaten first because it’s invisible on a dashboard. I’m at a point in my career where thinking is supposed to be most of the job, and most of it now happens on holiday because the working week doesn’t accommodate it.

0 views
Brain Baking 2 days ago

Favourites of May 2026

May was another weird month here in Belgium: the last weeks have been unusually hot. It’s pouring now, but I’m glad that it is as it gives our airconditioning units a few moments of respite. We’ll see what the upcoming summer months will bring. This month is packed with exams, grading, and deliberations, but after that, school’s out! Which means I’ll have to play daddy day care as my wife isn’t as lucky as me when it comes to paid leave. Hopefully I’ll emerge beaten up but victorious. Previous month: April 2026 . I somehow managed to keep up the pace from last month and finished four (mostly small) games: Forbidden Solitaire is a candidate for my GOTY. Yes, it’s that good. Related topics: / metapost / By Wouter Groeneveld on 2 June 2026.  Reply via email . Duck Detective: The Ghost of Glamping which is the second episode of the Duck Detective’s deducktions-based adventure game. It’s nice but only two hours long. Forbidden Solitaire , without a doubt the best and most unique card game with horror vibes I’ve ever played. Its atmosphere is inspired by nineties FMV games. Check out the launch trailer and tell me you don’t want to rush out and buy it: Pipistrello and the Cursed Yoyo is inspired by GBA-era top-down adventures. Its unique mechanics, pixel art, and soundtrack are superb, but the platforming near the end was a bit too much for me. Strange Horticulture is a cosy puzzler/visual novel where you have to figure out which client wants which plant. Are we past the point of the The Last Human-Written (academic) Paper ? Scientists Liu et al. compile a hefty report on what they call agent-native research artefacts. The results are… worrying? Promising? Popcar reviewed every single UFO 50 game . I don’t agree with many ratings but they’re well-explained. Noah Clements discusses how he hacked his bycicle monitor . The “welcome to hell developer” message is hilarious! James Sweeting thinks there should be a better term for game remakes and remasters: some specific types could be called videogame remakes instead. PekoeBlaze sees a difference in private versus public creativity . Do you make something different if you don’t have an audience? Seth Godin reminds us that nostalgia used to be deadly : For hundreds of years, nostalgia was seen as a serious disease, with doctors across Europe scrambling for a cure. Hundreds of thousands of people died from it . I enjoyed Pablo Meier’s review of Tunic . Every blog post by Pablo is accompanied by a song (“The song for this post is…”) which is a whimsical way to start an article. What’s a metroidbrania ? Even as a metroidvania lover, I hadn’t come across that term before. GiovanH explains the differences and intersection points . Is Animal Well a metroidbrania? Diederick de Vries played around with a retro printer and explained how you can use a “Retro Printer” daughterboard on top of a Raspberry Pi to connect an old electronics port to a modern printer. Inspired by my workspaces post, Diederick also shared his past and present computing workspaces . Nicole Express unboxes a unique high-tech computer . You’d be surprised. I enjoyed the many photos present in this one emphasiszing the high-tech part. Slightly related: Stephen Sherratt restored his childhood family computer . I’m a sucker for these kinds of articles. Some more articles to rattle the cage: just fucking use Go . Fuck no: Go is a terrible programming language . Ty Porter explains how he built a Game Boy Game in 2021 . Very educational! Blain Smith reflects on 30 years of programming at 44 years old . Profit pursuing enterprises indeed kill the joy of programming. Matthijs van Boxsel maintains a “digital encyclopedia of foolishness” where in 2021 he wrote about the Homo Viator (in Dutch). Miss Booleana writes about the struggles of motherhood (in German). Her experiences with parenting felt very much like ours. Matthias Wiesmann shared his thoughts on the video game Loop Hero . I’ve had my eye on that one for a long while; perhaps it’s finally time to try it out. Fabian Sanglard expresses why he likes the Magic: The Gathering 40 card format more than the usual 60. Over at ResetERA, Toma played 120 roguelikes so that we don’t have to . Their report is very extensive, a must read if you’re into the genre. Jeff Kaufman again urges us to donate 80% of our income and he has the numbers to prove it works for his family. I came across david.reviews , another indie site David maintains where he collects his thoughts on the media he consumes. After ten years of tinkering, Steve McCrea managed the impossible: to recreate Ultima Underworld in the Unity engine. It’s freely available at itch.io and looks very impressive compared to the original. Keep It In Your Pants! What? Apparently, Nintendo thought it was a good idea to create a few bold commercials for their Game Boy—including cuffing a woman to the bed as a misplaced joke to claim the GB is “seriously distracting”. The roguelike Game Boy game Roguecraft got a physical release! Of course I’m too late and everything is sold out. https://www.jwt.io/ is a JWT token debugger that shows how a token is compiled. Retro Ready is a nice Dutch blog that reviews retro-inspired handhelds (think Anbernic, GameMT). It seemed that Atari acquired the rights to the first five Wizardry titles . I still hope they’ll sometime, somewhere do something useful with Wiz 7 & 8. They deserve a proper reimagining/remake/whatever-you-call-it. Geneat is a website that helps you dig into the genealogy of your family. https://cooklang.org/ is a… recipe markup language? Nerds!

0 views