Latest Posts (20 found)

Armenian Shorthand System from 1888!

Read on the website: It turns out, Armenian has at least one stenography system. The one designed in 1888 by a monastic order from Venice! Althought it’s imperfect, it’s a nice historic rarity.

0 views

LightDSA: Enabling Efficient DSA Through Hardware-Aware Transparent Optimization

LightDSA: Enabling Efficient DSA Through Hardware-Aware Transparent Optimization Yuansen Wang, Teng Ma, Yuanhui Luo, Dongbiao He, Zheng Liu, and Yunpeng Chai EUROSYS'26 This paper describes performance characteristics of the Intel DSA hardware accelerator, and software techniques to maximize performance when using DSA. My takeaway is: the DSA supports a variety of convenience features, but each one is so expensive that you are better off adding software complexity to avoid these paths. The Data Streaming Accelerator ( DSA ) is a hardware accelerator in recent Intel chips. It can implement simple memory operations like , , , and CRC generation. Fig. 2 contains a high-level diagram of the DSA architecture. Source: https://dl.acm.org/doi/10.1145/3767295.3769356 Operations are written into work queues as 64-byte descriptors. A work descriptor (WD) describes a single operation, whereas a batch descriptor (BD) references many work descriptors. A batch is the fundamental unit of control (the DSA signals the CPU when a batch has completed). The DSA contains multiple engines and arbiters to spread work across the engines. Source and destination buffers accessed by the DSA do not need to be pinned into memory, the DSA can handle page faults. The DSA supports demand faulting via the page request service (PRS). This enables the DSA to send an interrupt to the OS (via the IOMMU) requesting the OS to resolve the fault. This paper reports a similar finding to a previous paper looking at the PCIe page request interface: demand faulting is convenient, but slow. The LightDSA authors recommend that software forcibly fault in pages before submitting descriptors. The DSA supports operations that require unaligned reads and writes of data from/to DRAM but the authors find that 64-byte aligned accesses are much faster. Fig. 8 has some numbers, even 32-byte alignment is expensive (compare the light green and dark green bars). Source: https://dl.acm.org/doi/10.1145/3767295.3769356 The authors recommend having software ensure that all writes performed by the DSA are 64-byte aligned. Software can do this by executing the operation for the first few bytes of each task, up until the destination buffer is 64-byte aligned. Like many HW/SW interfaces, the DSA writes both result data and metadata to memory. Result data is associated with each work descriptor, while completion metadata is associated with each batch descriptor. Metadata is read by software to learn when an operation completes. In such a scheme, it is important that software observes the batch metadata write after the result writes have completed. If the metadata write can land first, then software may try to read the result buffer before it has actually been updated. The DSA supports multiple traffic classes (TC). As with discrete PCIe accelerators, writes from the DSA associated with the same traffic class will land in host memory in order (these are posted writes ). However, writes associated with different TCs may be reordered. Here is a previous paper that describes performance problems with reordering. Section 3.8 of the DSA architecture specification describes two choices that software developers have. Either they should configure work descriptors and batch descriptors to use the same traffic class, or they should configure the DSA to enforce ordering via the (readback) flag. When that flag is set, the DSA will ensure that all result writes have landed in host memory by issuing a read request to read the most recently written result data back to the DSA, waiting for the response to come back, and then issuing metadata writes associated with the batch descriptor. Discrete PCIe devices can use the same trick to enforce ordering across traffic classes. Fig. 7 shows the performance cost of using this feature: Source: https://dl.acm.org/doi/10.1145/3767295.3769356 My takeaway is that DSA users should ensure that work and batch descriptors use the same traffic class, to avoid having to invoke this slow read-back path. Because the DSA contains multiple engines, tasks can complete in a different order than the order in which they are submitted. This is fine in itself, but the authors note that software must take care to efficiently support allocating work and batch descriptors in light of this. Time spent bookkeeping to handle out-of-order completion is overhead that adds up for small tasks. The solution proposed by this paper is for software to maintain two batch descriptor lists (free, and busy). When software needs to recycle descriptors from the busy list to the free list, it checks most (but not all) batch descriptors in the busy list to see if the hardware has completed the batch. This is in contrast to an approach which simply checks to see if the oldest-submitted batch has completed. The paper finds that it is optimal for the recycling process to ignore the 25 most recently submitted batch descriptors but check the completion status of all other outstanding batches. Figs. 12 and 13 compare the performance you can expect to see from using DSA naively versus using the techniques described in this paper (LightDSA). My takeaway is that the DSA is powerful, but only if you use it carefully. Source: https://dl.acm.org/doi/10.1145/3767295.3769356 Dangling Pointers I suspect the elevator pitch for DSA is something like: “just re-compile your existing C/C++ code and all of the memcpy/memcmp time will be optimized out”. It seems like DSA falls short of that. I wonder if the elevator pitch would be better realized if application code was written in other languages (like an explicitly pipeline parallel language). Thanks for reading Dangling Pointers! Subscribe for free to receive new posts.

0 views

Building Reliable Agentic AI Systems

One of the most interesting projects my colleagues have done with LLMs has been building a system with Bayer to allow pharmaceutical researchers to query decades of information about studies buried in PDF reports. Sarang Sanjay Kulkarni describes its evolution from keyword-based search to an intelligent research assistant capable of answering complex questions and drafting regulatory documents.

0 views

Create A Static Site Using 11ty & Deploy to Neocities (2026 Refresh)

What’s going on, Internet? Way back in 2022 I wrote a guide on building a static site with 11ty and deploying it to Neocities . It’s been one of my most-read posts, but it’s also aged: Eleventy has moved to v3 with a brand new module system, the dev server changed, and my whole workflow has shifted away from GitHub toward Forgejo and Codeberg . So here’s the refresh. I haven’t hosted my own site on Neocities for years now, but it’s still home to a huge community of personal sites and homepages, especially folks in the 32-Bit Cafe , so this guide is still very much for them. This guide aims to help you create a homepage using the static site generator (SSG) 11ty , keep the code in version control, and deploy it to Neocities , first by hand, then automatically. The homepage that we are creating will take advantage of the Nunjucks templating language, allowing us to create a shared header, navigation and footer across all the pages on our homepage. We will be creating an about, links, and contact pages before diving in and creating the ability to add a blog and a list of all blog posts on the blog page! We will structure and style the page with a standard HTML5 boilerplate and some basic CSS that should allow you to add in your unique flavour that we all know you love to do. This guide assumes the following: First off, from a terminal, confirm that you have Node and NPM installed: Create a new directory and cd into it: Initiate a new project: Install 11ty: Once the 11ty installation is complete, open the project in your favourite code editor: You should now be in VSCodium with the following project structure: Open and update the scripts section to the following: We also need to tell Node that this is an ESM project. Add to . The file should look like this: The line lets us use modern / syntax in our config and JavaScript files. The script lets us run to serve our homepage with hot-reload, provided by Eleventy's built-in dev server. Every time you save a change in VSCodium, the browser reloads with your most recent changes, amazing! From the terminal (or VSCodium), create a new file at the project root: Open the file in VSCodium and add the following and save: This configuration file tells 11ty what to do. Setting the directory to tells 11ty where to look for changes, this is our working directory. When changes are detected, 11ty builds the site and outputs it to the directory which is where the static html/css/img files are served from, amazing! As we’re going to be keeping our homepage code in version control, create a file in the project root: Open the file in VSCodium and add the following and save: The .gitignore file is a text file that tells Git which files or folders to ignore in a project. In this case, our file tells git to ignore the directory and the directory where our static files are built locally. Now comes the fun part, building our homepage. 11ty supports a number of templating languages, but the two you’ll reach for most are Markdown and plain HTML. Markdown is the popular choice for content like blog posts: you just write, without tags getting in the way. HTML is handy when you need precise structure. The best part is you can drop HTML straight into a Markdown file and 11ty renders it correctly, so it’s never one or the other. For the pages that make up the site’s structure (home, about, links, contact) we’ll use HTML, because it maps neatly onto the layouts and partials we’re about to build. When we get to the blog, we’ll write the posts in Markdown, where it shines. Use whichever fits the job. Create a directory at the project root and cd into it: Create an file in the terminal or VSCodium: Open the file and add some content: Now from the terminal start 11ty: If everything has been configured right so far you should see the following: Now you can open up and check out your new 11ty homepage! It should look like this: A Basic Hello World HTML Page Amazing! But what we want to avoid is having to write out the and and tags on each and every page, and be able to include a site header, navigation and footer so we don’t have to copy and paste the changes across every page each time we update. Let’s checkout templating a layout! Create a new directory in the directory and cd into it: Create a file in the terminal or VSCodium: Open the file and add the following: We've created as a Nunjucks template file, hence the file extension. This means we can use Nunjucks' double curly braces for using frontmatter variables. In our layout template we're calling and . Now, head back to the file you created earlier, delete the contents and add some front matter and some content: If you’ve kept 11ty running and the browser running it should look like this: A Basic Hello World HTML Page Using a Template Amazing! Now lets create the additional pages for our homepage. Create the following pages in the directory with the terminal or VSCodium: Open each of them up and add in some front matter and content: about.html: links.html: contact.html: You should now be able to browse each of these pages if you kept 11ty running on the following urls: Great stuff, but that’s no use without a navigation! Let’s take a look at and create a shared , , and to bring our homepage together. In the terminal cd into and create three partial files: Open each of them up and add some content: header.njk: navigation.njk footer.njk: Once our partials are created, open again and update it to include our new elements and partials: If you’ve kept 11ty running and the browser running it should look like this: A Basic Hello World HTML Page Using a Template and Partials Amazing! Now lets add the blog. Blog posts are mostly prose, so this is where Markdown earns its keep. We’ll write the posts as files and let 11ty turn them into pages. Create a new directory in the directory and cd into it: Create the following files in the directory with the terminal or VSCodium: Awesome, Open each of them up in VSCodium and add the following: my-first-post.md : my-second-post.md : my-third-post.md We better create a blog layout so it renders! Head back to the directory to create a new layout file: Open up in VSCodium and add the following: Check that your blog posts are loading: Amazing right? But to make it a blog, we need a blog page that lists all of our blog posts. We can do this with a collection: Open again and add a key called with a value of : Now 11ty has created a collection called and all we have to do is list it. Head back to the directory and create a file: Open it and add the following: If you’ve kept 11ty running and the browser running it should look like this: A Basic Blog List Page Amazing huh? Great, so far we have a fully functional home page, but it doesn’t look quite right. We need a style sheet. You can use the one below as an example, it’s basic styling with some modern techniques, or just throw in your own! Create a new directory in , cd into it and create : Open in VSCodium and add the following: styles.css: Now we need to include the style sheet in our layout file. Open it up and add to the : _includes/base.njk: You would have noticed that the stylesheet hasn’t been applied, we have to do one more thing in , something called file passthrough copy. Open in VSCodium and add the following: Because this will come up we may as well create the directories and add in the configuration for our images, fonts and JavaScript files. Create the following directories in : Update again: Just make sure you put all your static files in the appropriate directory and you’ll be good. So finally, if you’ve kept 11ty running and the browser running it should look like this: A Nicely Styled Homepage Yours will look a little different depending on the colours and fonts you chose above. Now we have a homepage we’re happy with, let’s get it online. There are two ways to get your site onto Neocities. We’ll start with the simplest, pushing it from your terminal by hand, then automate it so a deploy happens every time you commit. Whichever method you choose, first build a fresh copy of your site: This writes the finished HTML, CSS and assets to the directory. That’s the folder we deploy. Neocities provides a command-line tool that lets you push your site straight from your terminal. It’s a Ruby gem, so you’ll need Ruby installed. The first time you run a command it’ll ask for your Neocities username and password, then store an API key locally so you don’t have to log in again. Push the contents of your directory: That’s it, your homepage is live. For a lot of people this is all you need. Build, push, done. Pushing by hand is fine, but it’s even nicer to have your site rebuild and deploy itself every time you commit a change. We can do that with Forgejo Actions , the built-in CI for Forgejo. If you self-host Forgejo this runs on your own runner; if you don’t self-host, Codeberg offers the same thing (more on that below). First, push your project to a repository on your Forgejo instance. Then grab your Neocities API key from your account settings (Manage Site Settings → API Key) and add it to your repository as a secret named (Repository → Settings → Actions → Secrets). Now create a workflow file at : A few things to note in this workflow: Commit and push the workflow file. From now on, every push to rebuilds your site and deploys it to Neocities automatically. If you don’t run your own Forgejo instance, Codeberg is a free, community-run home for your code and runs the very same Forgejo Actions. The workflow file above works as-is. Push your project to a Codeberg repo, add the secret in the repository settings, and you’re away. You may need to enable Actions for your repository first; see the Codeberg CI documentation for details. Already have a homepage you’ve been hand-coding on Neocities? You don’t have to start from scratch. Eleventy is happy to take what you’ve got and slot it into this structure. Copy each existing page into (your old becomes , and so on). Then move the parts every page repeats, the , header, nav and footer, into and the partials you built earlier. Delete that boilerplate from each page and add a little front matter at the top: Whatever’s left in the file is just that page’s own content, and the layout wraps it. Your CSS goes in , images in , and fonts in . The passthrough copy we set up earlier ships them straight to . If a page is mostly writing, paste the body into a file instead of . Any fiddly HTML, like an embed or some custom markup, can stay exactly as it is and 11ty will render the Markdown around it. Run , check looks the way you expect, then push it live with the Neocities CLI or your Forgejo Actions workflow. Same site you already had, now with layouts, partials and a build step doing the repetitive work for you. Reference: I created the original version of this guide based heavily on these existing guides, and they’re still well worth a read: Without these, I wouldn’t even know how to write down what I needed to. 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. You have a basic understanding of HTML and CSS You have a basic understanding of the command line and terminal You have Node.js installed (version 18 or newer) You're using VSCodium as your editor You have a Neocities account You have somewhere to keep your code: a Forgejo instance or a Codeberg account http://localhost:8080/blog/my-first-post/ http://localhost:8080/blog/my-second-post/ http://localhost:8080/blog/my-third-post/ picks the runner label. This is the default on Forgejo and Codeberg. Actions are referenced by their full URL. The checkout and setup-node actions come from , so we stay off GitHub for those. The deploy step uses , which is hosted on GitHub. We're only using it. Your code still lives on Forgejo or Codeberg. The option removes remote files that aren't in your new build, the same as on the CLI. Create Your First Basic 11ty Website Itsiest, Bitsiest Eleventy Tutorial

0 views

Fox Buys Roku, The Problem With Fox’s Smart Strategy, Streaming That Works

The market hates Fox's acquisition of Roku, but the company is trading extraction from rights holders for leverage as a renter.

0 views

Speeding up static site generation with BSSG

Three months ago, I moved from hugo to BSSG for this blog (and my work blog). You can get BSSG here . I’ve been really happy with BSSG, and a couple of recent changes by Stefano have made it even better. I have a minimalist blog. A list of posts on the front page, and generally text-only posts. I like it to load fast even though it is running on a Raspberry Pi 4, along with a couple of other bits. This means that there are some features of BSSG that I do not use, including descriptions of blogposts. I use the title for that, on the basis that this should be informative in itself. It suits me, anyway. There are also some other UI elements that I do not need, such as reading time. I bodged my way around these, using CSS rules to hide the unwanted content from display. I could have changed the code to neither generate nor display them, but I didn’t really want to run, and need to maintain, my own branch. With the recent changes, Stefano added some new config options: These are set to “true” by default - to preserve the experience for people who already use BSSG and expect these things, which makes sense to me - but now I can set them to “false”, and have an even slicker, faster experience. The second brilliant change is about the way the scripts handle incremental updates. The idea being that, rather than building every post, every time, it will just build the new posts. I struggled to get this to work initially, as it was building all posts, every time. This turned out to be entirely down to me: my build script, which I use to control building and deploying both the cleartext and .onion versions of the blogs, cleared the output directory each time. I removed that, and bingo, incremental updates! This combination of things meant that building each site went from ~10 minutes (which was a bit painful) to ~1 minute (which is fine!). Happy days.

0 views

📝 2026-06-16 08:11: Sun's out, so there's only one way to travel to the office... ☀️

Sun's out, so there's only one way to travel to the office... Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views

📝 2026-06-16 07:55: Like we don't have enough animals already. This little black blob will be joining us...

Like we don't have enough animals already. This little black blob will be joining us on August. Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views

Exclusive: OpenAI Losses Increased Nearly 8X in 2025, With Spending Hitting $34 Billion

Soundtrack: In Flames - Colony To further support my independent journalism, please subscribe to my premium newsletter. It’s $7 a month or $70 a year. If you’re subscribed to the free newsletter and logged in, you should see at the bottom right hand corner of your screen a little circle you can click, and you’ll be able to sign up for premium.  Today, I can exclusively report, based on audited financial documents viewed by this publication that have been independently verified by the Financial Times , that OpenAI lost around $38.5 billion in 2025, as well as other crucial details about the financial condition of the company.  Due to the seriousness of this story, I am not going to do very much editorializing, as the numbers speak for themselves. OpenAI’s financial statements tell the story of a company with incredible losses. Additional factors – including interest income and interest expense – left it with a net loss of $8.84 billion. It then marked $3.74 billion of losses as “net loss attributable to noncontrolling members capital,” leaving the net loss attributable to the company as $5.09 billion.  It’s unclear what this means, nor how OpenAI reconciled the removal of $3.74 billion in costs. I will not speculate further. Please note that 2025 was the year that OpenAI converted from a non-profit to a for-profit entity, leading to a $41.55 billion loss due to changes in fair value of convertible interests and warrant liability.  Taking into account other minor factors like interest income and interest expense, OpenAI is left with a net loss of $60.35 billion, which it lowered to $38.53 billion by removing $17.87 billion in costs via that “net loss attributable to noncontrolling members capital” and another $3.95 billion via a “net loss attributable to redeemable noncontrolling interests.”  Ultimately, the net loss attributable to OpenAI in 2025 was $38.5 billion.  At the end of the year, OpenAI had just over $50 billion in assets, with almost half of that in cash. In 2025, SoftBank paid OpenAI $867 million. Microsoft paid it $303 million.  The documents revealed how much OpenAI paid Microsoft for services. In the 2025 calendar year, OpenAI paid Microsoft $10.59 billion for “Research and development” expenses. We believe this most likely refers to the cost of training OpenAI’s models.  The documents also mention a $6.047 billion charge related to “cost of revenue,” a $527 million charge for sales and marketing, and $42 million in “general and administrative expenses.” In total, OpenAI’s expenses to Microsoft amounted to $17.2 billion.  According to the figures, OpenAI had liabilities to Microsoft of $3.64 billion at the close of the calendar year, and additional $21 million in “accrued expenses and other current liabilities.” The documents also mention a further $58 million in non-current liabilities. I intend to follow up this story in the next month with more in-depth reporting related to the documents. The documents are detailed, and I need time to fully parse them. Once I have done so, you’ll know. The financial condition of OpenAI is deeply concerning. $38.53 billion in losses are astronomical, and far higher than most believed it would be. Losses also appear to be mounting year-over-year at a dramatic rate, and I’m not sure how this company finds a way toward any kind of sustainability or profitability. As discussed, I have not editorialized much today. I believe the best thing I can do for the general public is to deliver this news as plainly as possible.  As I mentioned at the beginning, 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 .  Revenue: $3.7 billion Cost of Revenue: $2.65 billion Research and Development: $7.81 billion Sales and Marketing: $1.11 billion General and Administrative: $907 Million Total Costs and Expenses: $12.48 billion Loss from Operations: $8.78 billion Revenue: $13.07 billion Cost of Revenue: $7.5 billion Research and Development: $19.18 billion Sales and Marketing: $5.73 billion General and Administrative: $1.57 Billion Total Costs and Expenses: $34 billion Loss from Operations: $20.92 billion

0 views
Unsung Today

Fontificator

I thought about this the other day, and I thought it’d be fun to share this internal tool I made over a decade ago to aid with exploring options for Medium’s typographical redesign. It’s called Fontificator. You can play with Fontificator here (desktop browsers only), or watch the likely confusing video below: The motivation for building Fontificator came from two observations: With Fontificator, I was aiming at this Doug Engelbart-esque notion of one hand on the keyboard + one hand on the mouse, and the UI where it was only necessary to point to an element, and the keys under your other hand would start working immediately – no clicking needed: This way, we could move really, really fast. To accommodate that, Fontificator always tried to keep the current item under the cursor by counter-adjusting scroll position as needed. On top of it all, a few more shortcuts: You can also edit any text if you are so inclined, and also drag in any font file from your computer onto a paragraph – then that font becomes part of the F/G stack. (Bernino Sans and Freight Text were the starting fonts before the redesign.) On the left, you can also see a naïve mobile preview – there was also more sophisticated on-smartphone preview, but I removed it from this restored version. Fontificator was literally made for an audience of 2–3 designers (and perhaps 1–2 stakeholders in read-only mode), and it was surprising to me how quickly one could master this strange tool, have fun with it, and feel the entire typography on the page becoming much more malleable. We also put up a more “traditional” list of contenders on the wall… = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/fontificator/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/fontificator/2.1600w.avif" type="image/avif"> …but it was in Fontificator where we learned the most. I love internal UIs because they allow you to go very wild and very tactical. If you have one you’d be willing to share (maybe it, too, is on the other side of the statute of limitations?), or one you already wrote about or spotted someone else doing so, please let me know! #internal ui #typography font previews on type foundry sites were generally too limited to get a real sense of how a certain typeface feels, and it was best to see a font in situ, often an extremely tiny nuance – like adding some letter spacing, or messing with line height – was what separated something that was promising from something that seemed very far from working. F and G to change the font, – and + for font size, ← and → for letter spacing, ↑ and ↓ for line height, < and > for opacity (for all the above you can hold Shift for bigger moves), and, there are a few more shortcuts you can see at the top. ⇥ and ⇧⇥ move very quickly between different types of stories so you can preview that, Space compares to the original/​current version, 1–9 allow you to switch to different “slots” so you can have various presets ready to compare, Esc hides the toolbar for maximum immersion,

0 views

TIL: Iroh: peer-to-peer networking for app developers

I came across Iroh ( via , via ) today as it hit 1.0 and found it a really interesting solution to a problem I knew existed but had not thought a lot about. Judging from the comment sections, it seems pretty clear that lots of people are confused as to exactly what Iroh is. I don’t think their launch post does their product justice at all, and their tagline is “IP addresses break, dial keys instead” which sounds cool, but if you think about it for just a second, you’ll end up with lots of questions. The biggest one is: “so how is this different from a mesh VPN like Tailscale, ZeroTier, Netbird, etc.?” It’s only after reading a lot of developers’ comments on the threads that I feel I understand: Iroh is aimed at  application  developers who want to communicate P2P between machines running their app, while mesh networks are aimed at  network admins  who want to connect devices they own/manage together.

0 views

Lean, not backpressure

Lucas Costa has written a good article on how to build systems that can handle code-generating robots. Unfortunately, when calling it backpressure , he used the wrong metaphor. Backpressure is about signaling to upstream processes that they are running too fast and need to slow down. The suggestions presented by Costa are mostly about signaling to the upstream process that it needs to do things differently , rather than just slow down. This has more to do with ensuring sufficient quality is sent downstream, rather than quantity . This irked me. As I was reading, I was searching for the right analogy. I kept coming back to lean manufacturing . The more famous half of the lean philosophy is waste reduction. The other half is about managing the unstable input of people. That’s what we’re interested in here. (Continue reading the full article on the web.)

0 views

JAX: commitment issues

Imagine you have JAX code like this, and run it on a machine with CUDA set up: We're creating a big array, blocking until it's ready (JAX is asynchronous, so this makes sure that it's actually finished creating it), then getting the first item, and as a belt-and-braces thing making sure that that is ready too. How long do you think those last two lines -- a simple retrieval of a 6 x 1024 array from a larger one -- will take? Some tiny fraction of a second would seem reasonable. But running it on my machine just now, the answer is a bit of a surprise: just over 5 seconds. And if you try to get immediately afterwards, it still takes about 1.2s. Further lookups into consistently take more than a second -- so while the larger initial number might be something to do with setup -- maybe internal stuff being JITted -- that's clearly not the whole story. Something is making these seemingly-simple array lookups take much longer than you'd expect them to. Let's dig into that. First things first, why would you want to do that slightly strange dance with the context manager in the first place, rather than telling what device you want to use (eg. with )? I'm writing some LLM training code, and want to load my training dataset. I don't want to load it into the VRAM on the GPU -- that would be a waste of valuable GPU resources -- so I need it in the CPU-side memory. I'm using Safetensors, which will load stuff onto the system's default device . So I need to override that temporarily to make sure that the dataset is loaded onto the device where I want it. I initially discovered this problem when I tried to iterate over the resulting array in my training loop; the code above is a simplified version of that -- a minimal repro of the issue. And it's a serious one! If each iteration has an overhead of 1.2s just to get 6,144 tokens ready for the model, JAX will max out at about 5,000 tokens per second of training speed just due to that overhead -- a real forward and backward pass plus an optimiser step will obviously make things even slower. For comparison, my PyTorch training loop managed almost 20,000 tokens/second on the same hardware: all steps from getting the training data, putting it on the GPU, and doing the actual training. So, let's look at that code again. We've created our variable on the CPU explicitly, and indeed if you print , it says . But if you print the device of the , you get . What's worse, if you watch while the code is running, as soon as it hits the lookup into the array, it starts using the GPU -- for each one, there's a spike in GPU usage. So, what gives? We asked JAX to put the array on the CPU, but now it's doing GPU work, and putting the items there. The problem is that when you create an array using the context manager, it is placed on the specified device, but it's not committed to it. If an array is not committed to its device, then JAX will feel free to move it around to others. In order to commit an array to a device, you need to use explicitly stating which device you want it on. Running the same code, but with this: ...immediately before the lookup into the array changes the numbers drastically; the first lookup takes about 0.95s on my machine, the second 0.0002s, and then subsequent ones less than 0.0001s. I decided to exercise this in depth, and wrote this script . If you run it without the command line flag, it will create the array, then iterate over the first ten items, measuring how long it takes to get each one. Running it just now: With the flag, it uses to explicitly commit the array to the CPU. Running that: Now, that didn't quite cover my use case -- what if, I wondered, the slow operation was putting things onto the GPU? The script also has a flag to do that -- after getting each item, it uses . With that flag: So, there's still a small startup penalty -- perhaps JAX is having to JIT some of its internal stuff -- but a perfectly decent speed after that. Commitment works! I'm still building my mental model of how JAX works, and working out exactly what is going on here is proving a bit tricky. The split between a committed and an uncommitted array seems clear; the former is tied to a device, while JAX will move the latter around as needed. It also makes a certain amount of sense that it would want to move the items to the GPU; it is, after all, the default device. But I'm less clear on why that was so slow, compared to the manual process of getting the item then putting it there. Hypothesis: the array is on the CPU's RAM, but not committed there. We ask for an item from that array, and maybe JAX wants that to be on the default device, the GPU. So it moves the entire "parent" array there, extracts that item, and then returns that. Then next time around when we ask for the next item, it does the same thing again. Plausible? Maybe, but it does sound a bit pathological! Anyway, at the end of the day, I have a solid new heuristic of my own: if you want something to definitely be on some specific device, make sure that you nail it down there with . And then you won't have commitment issues like these. Getting the zeroth item from the array took about 5.4s. Each subsequent one consistently took about 1.2s Getting the zeroth item from the array took about 0.95s Each subsequent one took less than 0.0002s. Getting the zeroth item from the array took about 0.86s, and putting it on the GPU took 0.02s. Subsequent items had "get" times similar to the previous run, and "put" times of about 0.0006s.

0 views

AI's Brokenomics

If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of NVIDIA , Anthropic and OpenAI’s finances , and the AI bubble writ large (updated to version 3.0 last week). 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 . Last Friday, I published the first of a two-part series where I explore the many bubbles that form the basis of the AI bubble — including the tokenomics bubble, and the cult of personality bubbles surrounding Sam Altman and Dario Amodei.   Subscribing to premium is both great value and makes it possible to write these large, deeply-researched free pieces every week.  Soundtrack — Local H — Manifest Destiny (Part 2) We live in a time of deep uncertainty. On Friday, Anthropic was forced to shut off access to its Mythos and Fable models after the US government imposed an export control ban barring any non-US citizens both inside and outside of the country from accessing them.  To explain, Fable is basically Anthropic’s supposedly “ too dangerous to release ” Mythos model with guardrails forbidding you from what appears to be anything biological weapons and cybersecurity, except it was jailbroken within days by Amazon researchers, leading to Amazon CEO Andy Jassy (and other unnamed companies) reporting it to the US commerce department which gave Anthropic 90 minutes to roll back Fable and Mythos due to “national security risks.” Semafor also reports that this all might have happened because China got access to Mythos . This situation is a complete mess. PCast co-chair and podcaster David Sacks claimed that Anthropic refused to fix the issue , claiming it wasn’t serious , per Business Insider: A White House official told Business Insider that “export controls were a last resort after begging them for hours to work with us”: Anthropic claims no begging occurred, and all it got was (as noted above) 90 minutes. According to Axios, the company has dispatched some of its senior technical staff to D.C to negotiate with the Trump Administration , after virtual meetings with White House officials failed to bear fruit.  In any case, this is a reaping/sowing for the ages. Dario Amodei has spent years selling AI models based on completely fantastical scaremongering about the “rapid advancements” of large language models , cresting the hill in April when he announced Claude Mythos, an LLM that was “ too powerful to release ” until June 2, when it was released to 150 organizations in 15 countries , and June 9, when it was released with said guardrails under the name “Fable.” Fable is, of course, just another large language model that’s an indeterminate amount of “better” than the last one. Having talked to multiple people that claim to have used Mythos and deeply enjoyed Davi Ottenheimer’s takedown of its system card , it appears to be much the same model but with security protocols flimsy enough to last only a few days before anonymous researcher Pliny The Liberator broke them . Anthropic has not created recursive self-improvement , nor has it done much more than create a very large language model that gets higher benchmarks in tests built for large language models, wrapped in a veneer of mysticism and panic-hype built to scare organizations in paying them to use it. The problem with this kind of hype is that you can only use it for so long before somebody believes you. The outright mythology of Mythos existed to scare people and help Anthropic raise at a $965 billion valuation , and because the tech industry has existed fairly divorced from reality, scrutiny, and regulation, Dario Amodei continued to inflate the “ Anthropic is too powerful ” bubble, believing that all that would happen would that he’d create a new enterprise API business. Some are attempting to read this story as bullish for Anthropic — that the government will work with it to bring the models back online, creating a proxy marketing campaign for its models — and while I think that’s possible, if not likely , I think there’re many other possibilities. On Sunday, slopaganidst and Microsoft CEO Satya Nadella posted a mealy-mouthed blog on Twitter that didn’t really say very much of anything, but had two interesting comments: This, combined with Microsoft AI CEO Mustafa Suleyman saying Anthropic’s models were too expensive and Andy Jassy likely being part of the reason that Anthropic got banned makes me think that hyperscalers might be trying to cast doubt on the inevitability of AI labs. While Nadella’s piece has clearly gone through 8 PR people and 16 lawyers, it seems to smell of a company saying that no one model actually matters, and given that it was posted on a Sunday , I’m going to guess it’s about the current Anthropic situation. It’s hard to see how everything goes back to normal from here. Even if Anthropic gets its models greenlit for availability, it’s clear the government has some animus against it after Q1’s battle with the Department of Defense , and may or may not have been waiting for an opportunity to rattle Dario Amodei’s cage.  And, according to Axios , there’s a real animus between the US government and Anthropic, caused in part because of its “inability to communicate effectively,” with one source saying that “Anthropic has not done a great job at trying to speak to the administration and appreciate the ideological differences." Alternatively, the government has taken Anthropic’s (nonsensical) marketing seriously, and thus decided to take the kind of blunt-force authoritarian position you’d expect — shut the whole thing down, as China might use Mythos to uh, do something!  The other problem is that this is terrible, terrible timing for an AI industry in the throes of a cost crisis. Anthropic and OpenAI’s IPOs depend on myth, hype, and certainty that their growth will never slow . The government’s ability to cut off access at random based on genuine concerns or politicking isn’t a great advertisement at a time when everybody is struggling to find the ROI of AI . This isn’t a Too Big To Fail or nationalization situation. Amazon and Microsoft are far more scared of the White House than they are of killing their golden goose, and may honestly be relieved to find a reason to bring this era to an end. You see, Anthropic and OpenAI have much bigger problems than regulation or pissing off Pete Hegseth. Their business models don’t fucking work. I’ve been saying for years that the underlying economics of AI don’t make sense — that AI labs were intentionally obfuscating the costs of subscriptions and heavily subsidizing users’ compute, and that the moment that that changed , everything would begin to fall apart, and god damn has it finally begun. As I discussed in last week’s premium newsletter, the AI Tokenomics Bubble is the simplest and most consequential of them all, because it comes back to something I’ve been saying for years: that the majority of users will refuse to pay the actual cost of AI.  Said bubble inflated through the combined failure of the tech and business media to question AI’s economics and the unprecedented subsidy con perpetuated by Anthropic and OpenAI. Those who dared to suggest that OpenAI burning $5 billion was some sort of problem were dismissed as haters and skeptics that “didn’t care about the future,” with the vast majority of the media completely ignoring the economics until the latter half of 2025.  The Tokenomics Bubble inflated because everybody aggressively ignored the AI industry’s greatest weakness, choosing instead to repeat tired mythologies about how Uber lost a lot of money ( which I’ve refuted here ) or Amazon Web Services cost a lot of money ( Amazon’s total capex between 2003 and 2017 was $52 billion normalized for inflation ) instead of being skeptical of…well, anything. And now it’s bursting because Anthropic and OpenAI’s customers are in revolt, to the point that they’re planning “drastic” price cuts . Alright, let’s do this one last time . Sometime early in Q1 2026, Anthropic and OpenAI moved all of their enterprise customers to token-based billing, meaning that instead of using subsidized subscriptions with varying (and ridiculous, as I’ll get into) rate limits, big businesses suddenly had to pay for their AI usage based on the actual tokens they used.  Many hailed this as a masterful gambit, assuming that organizations would have near-infinite budgets for AI services that had yet to prove themselves useful. It only took a few months for OpenAI and Anthropic’s customers to start sweating.  In the middle of April, The Information’s Laura Bratton likely burst the AI bubble with a piece about how Uber had burned through its entire annual token budget in a single quarter.  This kicked off an industry-wide anxiety about the mounting costs of AI, with multiple other companies burning millions of dollars in the space of a few months, including Zillow, which destroyed its annual Cursor budget by the end of May . What really began the downfall was a comment by Uber COO Andrew Macdonald : In a single podcast, Andrew Macdonald gave the entire tech industry permission to say the truth: that nobody was actually able to show any ROI despite its massive costs. This was always going to be a problem. By starting everybody off with subsidized subscriptions, AI labs shielded users from the costs, training them by proxy to use AI models without any concern for efficiency.   That, and organizations are run by Business Idiots beguiled by a captured tech and business media and a complete disconnection from actual work, meaning that they’d encouraged (or forced) their workers to use AI as much as humanly possible, never once thinking about the costs until they were made to by the AI labs. All it took was a few months of tokenmaxxing to start turning organizations’ stomachs . This began an increasingly-anxious conversation around AI’s ROI , made worse by the fact that you can’t measure the cost of a task because of the sheer number of models and harnesses, and can’t cleanly translate “AI spend” into “actual financial outcomes.” Toward the end of May, Axios would publish a story about how a company somehow spent $500 million on Anthropic tokens in a single month after failing to set up cost controls . A few days later, Sam Altman would make a massive fuckup , saying that customers were “totally happy” with their AI spend at the beginning of the year (before token-based billing), and that spend was now a “huge issue,” likely because the costs vastly increased. Boosters would immediately argue that these massive costs were, in fact, proof that AI was very successful, even if said “success” came from organizations that let their workers burn as many tokens as humanly possible without any consideration of the cost. As I’ve argued previously , the vast majority of Anthropic’s recent surge in revenue comes from experimental revenue from paypigs that it doesn’t deign worthy of clear visibility into their organizational token spend . In any case, OpenAI and Anthropic need to make a combined $358 billion in annual revenue by 2029 to keep up with their $1.1 trillion in compute commitments. Any slowdown in their growth, as I discussed last week, would be fatal to two companies that have marketed themselves almost entirely by putting the cart before the horse.  It turns out that Altman wasn’t kidding that costs were a “huge issue” for his customers. Around a week later, The Wall Street Journal reported that OpenAI was planning “drastic” price cuts to its token prices in response to Anthropic potentially doing the same: If you’re wondering why they might be doing so, earlier in the day, Cisco President and Chief Product Officer Jeetu Patel said exactly what everybody had been thinking but were too scared to admit: that “...the costs of [AI tokens] are far higher than the actual value that these tokens are generating at scale. I cannot express how deadly these price cuts would be to the AI industry, and how dangerous this conversation has become. The move to token-based billing has created a revolt in the AI industry’s customer base, coming from (as I’ve discussed) a confusion around the actual ROI and utter despair around the costs. Depending on how “drastic” these discounts are, any (entirely theoretical) gross margin these companies make on inference will be eaten alive…all so that OpenAI and Anthropic can…uh… decrease their revenues? It’s a desperate strategy being deployed, I imagine, because of a massive wall of customer churn as a result of Business Idiots spunking millions of dollars on tokens they’re no longer able to justify.  Remember: we’re less than three months in to organizations paying the actual costs of LLM-based services, and they’re clearly so outraged at the spiralling costs that both Anthropic and OpenAI are planning to cut the prices of an already-unprofitable service , likely collapsing their revenues while increasing their overall costs.  I anticipate a few booster quips in response, so let’s address them head-on: Here’s what Jevon’s Paradox means, per Planet Money : Newsflash! These price cuts are not happening because Anthropic or OpenAI made their products more efficient! They’re making these price cuts because their customers don’t want to pay their current prices! In fact, their costs appear to be increasing, which is why they’ve raised (assuming the rounds completely close) over $230 billion in the last six months. You don’t do that unless you think your costs are about to explode or, I dunno, you’re about to massively increase your losses, though the timing and velocity of these price cuts suggests this was a very recent idea. Oh, right, Jevon’s Paradox! This isn’t that. These companies aren’t getting more efficient. They don’t have any bright ideas to make their businesses lose money, and in fact seem pretty incompetent when it comes to growing their revenues outside of scamming dimwits and selling people $40 for $1. And that is not hyperbole. So, you know how I keep going on about “ subsidized subscriptions ”? And how people online keep saying that they’re not really subsidized? Well, SemiAnalysis , an extremely pro-AI semiconductor analyst, ran a test made up of random long-horizon coding tasks until they maxed out the limit on OpenAI and Anthropic’s various subscription levels. Their findings were shocking. That’s right. Anyone with a $200-a-month Anthropic subscription can burn $8000 in tokens, and with a $200-a-month ChatGPT subscription, you can burn $14,000 in tokens.   This business fucking stinks! It’s not even a real business! OpenAI and Anthropic have to give away somewhere between 20 and 70 times the cost of their subscription in API tokens, which means that they realize that the vast majority of people value these tokens at a fraction of their real cost. This obscene and wasteful subsidy is what you do when you have little to no confidence in the actual value of your product!  SemiAnalysis also modeled out — based on the ridiculous assumption that OpenAI and Anthropic have a 75% gross margin on their tokens — what the margin of a user looks like, and I’m sure it’s f- OH MY GOD ! That’s right folks. With the current subsidies, all it takes for a user to have a gross margin of at best negative 25% is for them to use as little as 25% of their rate limit. And this is based on the generous assumption that they have a 75% gross margin on tokens! I’ll repeat myself: this is not a real business! This is a joke business, a comedy business, a business invented by the Gods as a means of mocking venture capital! For Sam Altman and Dario Amodei to run a business in this fashion is a sign that they have utter contempt for their investors, the tech media, sell-side analysts, and the general public. If you or I ran our lives in this way, we’d be called fiscally irresponsible millennials that believe the world owes us everything. This isn’t a real business model because generative AI companies are not real businesses.  Generative AI does not have a business model. It is not a tool with value remotely commensurate with its costs. It isn’t getting cheaper for the providers or the customers. It isn’t becoming “better” in a way that’s measurable using anything other than benchmarks invented specifically for generative AI — an industry-wide coddling of a mediocre technology that only makes money through massive subsidies, FOMO and executive ignorance. It requires endless pre-training, post-training and script-based MacGuffins to do tasks with mathematically-guaranteed hallucinations that burn more tokens, raising costs on customers who are already in mutiny less than a quarter into being forced to pay a cost that is already unprofitable.   Boosters and the recently-concussed will say that these companies can simply stop training, to which I say if that was possible they’d have already done it, and if they stop training, the models will eventually drift into obscurity. If stopping training was all that it’d take to turn these businesses profitable, they’d have done it already, because inference would be a money-printer rather than a cursed object eating away at Altman and Amodei’s souls.  I’ve said it once and I’ll say it again: I believe a large majority of AI token spend — and specifically Anthropic’s revenue growth — has come from Business Idiots disconnected from any real work that have become convinced that “lots of AI” would do something other than rack up massive bills.  And wouldn’t you know I was right! A little over a month after encouraging its workers to “ tokenmaxx ,” Meta is now planning to pull back on its AI token spend after realizing it was on track to spend billions on tokens, per The Information:  It didn’t even take two months for Meta to go from encouraging its employees to compete to burn the most tokens to talking like a British MP giving a speech about austerity measures.   Meanwhile, The Times reports that banks are running up massive nine-to-ten figure bills from “experiments with artificial intelligence tools”: These are the kinds of things you say when you’re planning to drastically cut costs, and I think Uber’s COO gave everybody permission to admit the lack of ROI or, well, any measurable benefits of spending millions of dollars on AI tokens.  Remember: Business Idiots are lemmings! The only reason they wanted to “do AI” was because they read it in the newspaper or heard somebody they thought was intelligent insist that it was the future. These people are extremely sensitive to suggestion (see: Nik Suresh’s Brainwash an Executive Today ) and marketing hype, which means they’re also extremely sensitive to peer judgment, meaning that if the worm turns and everybody starts saying “I’m not sure we should spend as much money on AI,” they’ll become anxious to be judged as wasteful for doing something that was considered innovative mere months ago. Some are suggesting that lower-priced open source models (including some developed in China) for some operations could be the solution, per the Wall Street Journal : The problem with this argument is that we’re yet to prove if running these models is profitable (or even sustainable) for any provider, nor do we have tangible proof that they can compete at scale with Anthropic or OpenAI’s more-complex LLMs.  Citadel Securities argued late last week that they might be: The problem is that the hundreds of billions of dollars of AI data centers full of NVIDIA GPUs are being built with the expectation that there will be incredible demand — over $150 billion a year just to cover what’s under construction — for very large and compute-intensive models. I am still skeptical that this is a real shift away, if only because using open source models requires you to either work with an inference provider or run your own GPUs.  Nevertheless, even the hint of this migration is enough to start making Business Idiots say “hmmm, what about open source?” even if they don’t know what that means. But everything comes back to one very simple point: that a lot of AI use (and by extension AI spend) is from the cargo cult mentality of an economy run by the most easily-led dullards in history. They jumped on the AI train because they saw a webinar or read a LinkedIn post or saw a news story about Sam Altman saying his tech was scary or an Atlantic piece saying that Claude Code was ChatGPT 2.0 and thought “fuck, I better throw as much money at this as possible.” In the end, what is it these organizations are paying for? They’re not replacing anyone, and there isn’t compelling evidence that AI models speed people up. Allowing non-technical people to use LLMs to write code isn’t speeding up the delivery of software in a measurable way, and introduces obvious problems in the sense that, well, you’ve got a bunch of code written by somebody who can’t read or understand it.  People will argue that AI is “really helpful with research,” despite the fact that any research you receive from AI will absolutely have hallucinations , meaning that if you don’t actually know what the answer is to a particular question (which, I assume, is why you researched it), you’re certain to have some sort of small (or large) fuckup. In a story that’s a little on the nose, The Financial Times reported last week (covering a study by GPTZero ) that a KPMG report (that’s now been taken down) about the benefits of AI had exaggerated the scale of its adoption through multiple AI hallucinations: The report also included hallucinations about AI agent use by Swiss Federal Railways, Transport for London and NHS Greater Manchester, fabricating entire integrations and product lines in a report that was likely used to justify billions of dollars of spend.  Per GPTZero, 40 out of 45 of the report’s citations are either fake, make critical mistakes about the contents, or lack enough detail to be used as proof. They also believe that whoever wrote the report let the AI do most of the work: GPTZero also notes that the report is being cited by LLMs as evidence to prove the success of AI agents , poisoning the already-hallucinatory well of information that these models draw upon.  KPMG has annual revenues of over $39 billion, and sells something called KPMG Workbench which promises to “supercharge your business with [its] multi-agent AI platform, combining advanced, trusted AI agents with insights and deep industry expertise of KPMG professionals.” I assume these are the same professionals that greenlit the report. It’s likely that this was a mixture of laziness and ignorance, but I also think it might be a situation where the person (or people) writing the report simply couldn’t find any real citations to prove their point, choosing instead to let an LLM crap out some thought-slop in the hopes that nobody would notice. The fact that Anthropic and OpenAI have any business left after stories like these is proof that the vast majority of companies paying for these services are doing so because they feel pressured to by their peers, investors or the media.  That’s not a tenable business model! You can only get so far on FOMO, gaslighting, and the vague promise that something good will happen if you hand over your credit card.  Hell, let’s take it one step further: neither OpenAI nor Anthropic is a real business. Let’s cut to the chase: these aren’t real companies! Their businesses only function by subsidizing or swindling their customer base using deceptive media campaigns that say “let people use as much AI as possible,” and it’s becoming clear that token-based billing might genuinely not work as a viable business line.  The only hope that these companies had was the possibility that they could actually charge something approximating their real costs, though I’d argue that was only the case if there was the option for OpenAI or Anthropic to increase their token costs in the future.   To make matters worse, it’s abundantly clear that the vast majority of people would never actually pay for the tokens they burn. If OpenAI and Anthropic are allowing their customers to burn such egregious amounts of tokens, it’s because they’ve seen that their customers churn when they don’t get to do so. Anthropic’s aggressive rate limiting in March — which still allowed people to burn far more than their subscription cost! — likely scared the everliving shit out of them, to the point that they signed up to pay Elon Musk $1.25 billion a month for access to his Colossus data centers specifically so that they could give people higher usage limits . The only way that these companies can make money is by giving it away. Both OpenAI and Anthropic have recently started handing out $1000 in API credits to convince people to move over to Codex or Claude Code.  Their services are not valuable enough for people to cover their business expenses, even if you remove the cost of training, which is so severe it drowns out every dollar of revenue on its own. They cannot raise prices — or even bring them in line with their costs — without their users flipping out. Their training costs are necessary to continue making their models an indeterminate level of “better,” which means that they’re a cost of goods sold, and not a capital expenditure.  Anthropic and OpenAI want you to believe that their businesses can somehow turn profitable, yet neither of them have any explanation as to how. Anthropic negotiated discounted compute for the first two months of its SpaceX deal as a means of pretending to be profitable for a single quarter , but any price cut — or even customer churn! — will immediately put its finances in a kind of red usually reserved for the deeply embarrassed or steroid-enhanced.  They do not have a plan.  You can go on about TPUs, Trainium, Inferentia, and custom silicon for as long as you like — it’s not profitable to run these companies, their costs are too high, and their customers are price-sensitive. Their customers lasted less than three months paying for their actual token burn before crying for mercy. There is no reversing this trend, because if there were, OpenAI and Anthropic would’ve reversed it in any way, shape or form, rather than raising more money than anyone has ever raised before for what appears to be no reason other than to burn it. OpenAI and Anthropic are unsustainable and recklessly-run companies that do not make sense outside of the broken world of Silicon Valley. The tech industry and venture capital are run by a coterie of has-beens who create no value, and the vague memories of the pre-2015 era, before investors gave up on investing on seed stage companies and decided to joylessly trend-hop for years until they were driven insane by COVID lockdowns and “X: The Everything App.”  The tech industry is run by people who do not experience real problems or have to run real businesses, because a cluster of fellow grifters will vault them back into the black. Investments are no longer made based on rugged meritocracy or any interest in creating the future — it’s only about the Rot Economy’s mediocre growth-at-all-costs accelerationism and making varying numbers go up, though very rarely ones associated with profits. I think it’s fair at this point to ask whether you could’ve just hired real people to do the shit that AI has done given its enormous cost. $14,000 could probably get you a great deal out of a real software engineer — hell, you could’ve probably hired an agency to do the work for you and actually have someone manage the risk.  The completely imaginary assumption about the AI industry is that it’ll magically get cheaper. That is not something that’s happening. More data centers will not make OpenAI or Anthropic profitable. More data centers will not make customers more willing to pay the actual cost of AI. More venture capital funding will not make Anthropic or OpenAI real businesses.  I agree with anyone saying there should be a pause in the development of generative AI, but I do so based on the belief that this is a doomed grift and science experiment masquerading as an industry that has only gone on this long because it allowed the hardware industry to extract hundreds of billions of dollars from startups, venture capitalists, asset managers, and retirement and insurance funds . And anyone in Silicon Valley fooling themselves into believing they’re anything other than a corporate stooge is a mark. The AI industry is the direct opposite of what made Silicon Valley famous.  It is a flattening of everything, absorbing the majority of venture capital funding, media attention, talent, and intellectual oxygen, invading whatever space you’re in because investors insist you must have something to do with AI and because everybody has been convinced they have to use it. It is an intellectual black hole, dragging every conversation toward it, demanding the most money, the most focus, endless justifications and defenses from people that must be rejected for questioning whether LLMs are the future. It debases and humiliates its fans by forcing them to constantly face indignities and embarrassments like it deleting entire databases or breaking AWS . It stunts the intellects of those who use it and, in demanding complete devotion to be considered “part of Silicon Valley,” suffocates the kind of meritocratic skepticism that allegedly got these fuckers so rich.  Silicon Valley was founded on the potentially fictional idea of plucky software developers that rejected the bounds of corporatism. It’s now ingested the worst qualities of corporate America — groupthink, trend-hopping, tribalism, hero-worship, managerial feudalism, and wasteful spending chasing things based on what might make a rich, heavily-coddled oaf smile. There is nothing daring or individualistic about Silicon Valley. At this point, you may as well work at fucking McKinsey.  Silicon Valley is the establishment. OpenAI and Anthropic are effectively owned by Microsoft, Google and Amazon — they do not have infrastructural or financial dependence, they principally run on their hardware, and if anything happens to them, they will likely be absorbed into multiple arms of the Magnificent Seven.  Their financial success benefits only the richest people in Silicon Valley and the wealthiest companies on the stock market. They sell themselves as democratizing software as they extract as many dollars as possible from venture capital, all while selling them back a story of spreading “abundance.”  AI represents the commoditization of startups as a fuel for tech firms with trillion-dollar market caps. AI startups exist only to send money upwards , burning Claude or GPT tokens that run on infrastructure built and owned by the very incumbents that the Valley allegedly takes pride in unseating.  The groupthink and monoculture of the Valley has gaslit these poor individuals into believing that there’s some sort of happy ending rather than a slow descent into insolvency, duping them into defending expensive, unsustainable tools using mythology that benefits only the richest people on Earth.  Someone recently said they think Anthropic and OpenAI are “ the last startups ,” saying that there was no point in building anything else as “everything has been solved or will be shortly.” I agree, though for totally different reasons. Anthropic and OpenAI represent what I believe may be the last hypergrowth startups, and their collapse ( however it may happen ) will represent the end of the dream of founding a little company that turns into the next Google or Meta.  Neither company was possible without the involvement of Microsoft, Google or Amazon, who provided their earliest funding and, most importantly, their entire physical infrastructure. Anthropic and OpenAI were always entirely dependent on these hyperscalers to shoulder the $100bn+ in infrastructure costs to make training their earliest models or serving inference possible. The reason there are no other Anthropic or OpenAI-sized startups is that neither of them are actually startups. These are not plucky underdogs who shoulder-barged their way to near-trillion dollar valuations — they’re quite literally subsidiaries of the largest companies in the world, using the mythology of the startup ecosystem to create the mistaken belief that anyone can actually compete with big tech. AI startups are all entirely dependent on big tech, yet sell themselves as rugged individuals. The fact that Amazon deliberately dobbed Anthropic in to the Commerce Department and neither Microsoft nor Google have shown any interest in defending it suggests that neither really cares if it lives or dies. This would be the exact situation that would prove that Anthropic (or OpenAI) had real leverage over their hyperscale benefactors. Instead, the largest companies in the world have left them to the wolves.  Anthropic believed it was too big to fail, or at least too big to be stopped. It likely believed it would see a flood of support as it did with its argument with the Department of Defense, but nobody seems particularly interested in defending it. Instead, everybody seems kind of confused and annoyed, and the largest companies in the world are making vague statements about how no one model can be “the best.”  Silicon Valley, this is your King — a company that grew through conning and scaring and lying to people at scale, overstating both the capabilities and possibilities of its models in the hopes that everybody would be too scared not to pay for them, only to find its business model collapse because you can’t wish your way to a fucking business model.  While OpenAI is no better, Anthropic is offensive in that it resembles everything that’s ruined the tech industry — a company with a product that costs billions of dollars that can only be sold by talking about what it might do in the future, a masterpiece of grift and hubris that I believe will stumble and crumble in the future. The next generation of startups will not get built in a system more interested in Twitter clout and trend-chasing than making good software that solves real problems. Braindead, growth-drunk “accelerationists” conflate economic growth with human progress, and as long as they’re in power, the only ones who will build things of note will be the actual outcasts.  You can’t win as a startup anymore. There is no competing with or scaling without the Magnificent Seven, at least not under the current terms of Silicon Valley.  And there never will be again without aggressively flushing away the hubris and ignorance of the current generation of venture capitalists that have abandoned building the future in favor of praying at the feet of management consultants and grifters. 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.  This will make organizations spend more on AI!  The problem with this idea is that it assumes that organizations are currently burning the amount of tokens they intend to burn forever, when in reality, most organizations have no idea how many tokens they want to burn , just that they’re spending way too much burning them!  This means that there’s every chance this both cuts revenues and ends up with organizations using fewer tokens. Remember, nobody can actually measure the ROI of AI! A 50% price cut doesn’t actually answer the question of “why am I paying so much for this,” and unless the price cuts are to DeepSeek levels (which would also be fatal), it’s hard to see how organizations are going to be won over.  They’ll drop the prices then raise them again in the future! Oh you sweet summer child, you really are attached to these companies, aren’t you? What do you think customers will do when the prices go up again? Do you think they’ll say “thank you so much sir for raising the prices”? Or do you think they’ll say “hey man I didn’t like these before and I don’t like them now”? They’ll have a haves-and-have-nots system where only some models are discounted but the expensive ones are the only good ones!  …that…that’s what’s happening right now? Even if Anthropic decides it only sells Mythos or Fable or whatever to big enterprises, these are the same big enterprises that are complaining about the price! Jevon’s Paradox Jevon’s Paradox Jevon’s- Shut the fuck up!

0 views
Unsung Today

Panic’s blog respect its own history

The software company Panic has a blog , and has had it since 2009. It has a clean, modern aesthetic that looks something like that: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/1.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/1.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/2.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/2.1600w.avif" type="image/avif"> However, something interesting happens as you start going back in time by clicking Older Posts at the bottom – the historical posts are rendered using their original styling: = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/3.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/3.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/4.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/4.1600w.avif" type="image/avif"> = 2x) and (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/5.2096w.avif" type="image/avif"> = 3x) or (width >= 700px)" srcset="https://unsung.aresluna.org/_media/panics-blog-respect-its-own-history/5.1600w.avif" type="image/avif"> This isn’t something that happens for free, as with any redesign every piece of content gets ported to a new framework and style by default. So, I gather this was an intentional thing that also required extra effort both to make it work like this to begin with, and to allow the old style to appear nicely within the different confines and technical realities of the new style (you can compare the above screenshot of Firewatch announcement as retrieved today with its original appearance in the late 2015 ). I love this effort. I wonder if more places on the web could use that kind of thinking. As an example: what if your social posts or blog posts from long ago came adorned with the same avatar that you used when posting them, even if you updated it many times since? #change management #web

0 views
Ankur Sethi Yesterday

Nobody clicks your share buttons

Link: https://derekhanson.blog/nobody-clicks-your-share-buttons/ (Via rendezvous with cassidoo .) I've always wondered if anyone actually used the social sharing buttons embedded on news sites and (some) WordPress blogs. Derek Hanson digs into the numbers : The UK government ran one of the most thorough studies on this. When GOV.UK added social sharing buttons, they tracked usage for 10 weeks across 6.8 million pageviews. The share buttons got clicked 14,078 times. That’s a 0.21% usage rate, which works out to about 1 in 476 visitors. The most telling part: the feature sat in their backlog for ages because zero end users had ever requested it. In their user testing, people just copied and pasted links. Moovweb found the same thing when they analyzed 61 million mobile sessions . Only 0.2% of mobile users interacted with social sharing at all. Visitors were twelve times more likely to click an advertisement. Luke Wroblewski, the interaction designer and author, crowdsourced data from his readers and landed on an average of 0.25% across 18 million pageviews. Different organizations, different audiences, same number. What do people do instead? They copy and paste URLs or use the share button in their browser. In 2012, Alexis Madrigal at The Atlantic noticed a huge chunk of the magazine’s web traffic showing up as “direct” in Google Analytics. Those visitors weren’t typing URLs or using bookmarks. They were clicking links that someone had pasted into a text thread, an email chain, a Slack channel. This reflects my own experience. "Direct/none" is the number one referrer on this very website.

0 views
ava's blog Yesterday

let's talk about your digital remains!

" When I die, delete my browser history. " ­— Unknown When you die, there are lots of processes in place to deal with your body, your burial, your physical possessions, subscriptions and bank accounts. But what about your digital accounts and possessions? As our lives become more and more digital, taking these into account when tying up the affairs of a dead person is increasingly important. Think about it: This can involve e-mail accounts, social media accounts, messengers, LLM conversations, hard drives, cloud storage, crypto wallets, websites, your digital media licenses, intellectual property you released (like four (F)OSS projects, for example), and more. In a broader sense, you might count browser history and other metadata, too! What's interesting is that so many of these do not fall under the laws you might expect them to, like succession/inheritance law or privacy law. Services that offer you licensed content (like Steam) have made clear in the past that family members are unable to inherit the accounts or licenses, like they would with physical items. In terms of privacy and data protection, the GDPR applies only to living people, so you lose these rights upon death; the task of legislating the rights of the dead in these regards has been given to the Member States, which results in quite a patchwork of rights 1 . This patchwork makes things difficult, because it means your European country can have different laws than another, and companies will have to see how to comply with them all. France, for example, has one of the most developed post-mortem data protection regimes in Europe. The French Data Protection Act (the Loi Informatique et Libertés ) actively considers death in data protection and explicitly allows a person to give instructions regarding the retention, deletion, and communication of their personal data after death and appoint a person responsible for implementing those instructions. It mandates that controllers must follow the deceased's valid instructions, and heirs can obtain access to data necessary to settle the estate, to identify assets and liabilities, or to close user accounts and manage digital affairs. Germany, on the other hand, is pretty much the opposite: Protection of deceased persons' data arises from a combination of post-mortem personality rights (postmortales Persönlichkeitsrecht) concluded from civil law and constitutional law, inheritance/succession law, confidentiality obligations and possibly some sector-specific laws. It's a lot more complicated and full of holes for specific types of digital data. I wish we had a law like France has! Regardless of when we might have a European law harmonizing this aspect across Member States, it's still important to ask yourself: Who is allowed to have access to your accounts and data after you pass? You might still want to give your younger sibling access to your Steam account later, or you need your spouse to be able to log in and keep a personal website up and running, or save pictures from the cloud. For this, you should make sure that the correct people can have access to your accounts in case of death, and know what to do with them. How you do that is up to you: You might set up something that automatically notifies them about how to access your accounts in times of death when you don't check in for a while, or you tell them a physical location where they can find the device passwords and the Master password to your password manager. I personally mention it in my when i die page. Remember to keep this information updated! Some companies and services, like Apple, Google and Meta, offer settings about what should happen after your death (usually called Digital Legacy tools, Inactive Account preferences, or Memorialization). You're able to set a successor/manager, deletion preferences and more, depending on the service. You have to dig a little in the settings, but if you're reading this right now, I encourage you to go find it. Good to know: Despite setting someone as a legacy contact, these companies might still request additional documents to prove that you really died. On the other hand, it's also okay to want things to be deleted, either by family members, or automatically by the platform itself. At CPDP 2026, I participated in a workshop about digital remains, and my discussion partner said that her Instagram feels so personal that it should be deleted upon her death, but something like a LinkedIn she'd keep up. So decide for yourself: What accounts do you want deleted, which ones can remain up/dormant? You should communicate this clearly in a way the people tasked with your digital legacy can see it, and talk to these people about it beforehand, if possible, or set it up in the settings. If you want to keep data up, is there a maximum retention period you want to set so that the data would be deleted afterwards? As a next step, you have to think about the future. The world will move on without you, and even right now as you are reading this, we are building tech that promises to bring people "back to life" via AI. Even just a decade ago, you likely couldn't have foreseen where we are at the moment with tech being trained to impersonate you. So where will we be decades down the line? That may require the restraints you set in a will to be more on the tech-agnostic side instead of just banning very specific processes and products. This is not just about the recent Meta AI thing; there are several companies in this space, as it looks to be a profitable new market niche: Bereavement tech . So, how do you want your data to be processed? Do you want tech to be trained on it? Do you allow the platform, or your relatives, to train AI on your accounts and other data and media they have on you? Your account might keep posting for you as if you were still alive, generate selfies or videos with your likeness, or it will respond to messages people send to it so they can keep chatting with "you". Side note : Does this truly help the grieving process? I guess we'll have to find out. A physical removal of items, telephone numbers going out of business, and a burial help saying goodbye and accept the finality of it all. Yet social media accounts can exist visually unchanged for years afterward, as the platform may nudge you to message them, reminds you of their birthday, or shows memories from a couple years ago out of nowhere on your feed. If we soon have the option to have people posting as if nothing happened to them, they stay stuck how they were when they died forever. If you never have to deal with the deafening silence from the other party, do you ever really have to grapple with death? And will the person die a second time for you when they stop offering the model? Maybe that's something you wanna blog your thoughts about :) It doesn't have to be so personal and focused on social media platforms as well. How about archives? Museums? You might laugh at the idea, but most stuff in museums is by ordinary people; we might not even know their name. Some people become famous after their death and their possessions and likeness are displayed for people to learn about them (for example: Anne Frank). We get great insights from the things they left behind that they thought no one would read, and if we're honest, likely wouldn't have consented to be out there. This will increasingly happen with digital means. How okay are you with a holo-you or virtual avatar greeting people in a museum? You might not care about any of this at all - if you're dead, then what does privacy and the data matter? It's not like it can still affect you! And that's fair. The views on this can be pretty diverse. Others see the digital remains as a digital version/informational "body" that should also be untouchable and remain undisturbed, and that there should be a general right not to "become a bot". Reading papers and studies about this topic is interesting, because it seems if you belong to the current older generations, you are more in favor of deleting it all, while the younger generations want to keep it up 2 . This makes sense: They might have way more online friends they'd wanna keep this up for. Women seem more in favor to deleting everything than men are 2 , which I can totally see; women tend to make a lot of negative experiences online that center the loss of control over their data and misuse of it. Death, without being able to lock down or delete anything based on developments online seems like the biggest loss of control of all. There are country and cultural differences as well. Unfortunately, unless you control the data (your own Mastodon instance, your self-hosted personal website, etc.), you are reliant on these services to heed your/your loved ones' requests about this. As the big social media companies' business model relies on data harvesting and using existing data for new projects and growth, this might be a hard fight in the future, as they see it as their property. Companies can hold the data hostage because of a lack of laws in your region and no goodwill from their side. There have also been cases already where the companies have refused giving access of a deceased's account to the relatives until a court decided they had to. How many would just give up? For good digital hygiene, we should remember death and make it as easy as possible or sensible for the people we leave behind to get the access they need to manage our stuff how we want them to. Organize your data well (maybe you also want to do some recurring digital version of Swedish Death Cleaning ?), leave instructions, set emergency/legacy access when available, include digital assets in your will, decide how your data is allowed to be used after death, especially around AI replicas. Families should talk about this openly, and relatives and nurses should learn to ask affected parties about these things. Previous related entry: plans for your blog after you die Reply via email Published 15 Jun, 2026 France is very invested in this aspect and its data protection authority (CNIL) has made it one of their main points and even wrote a paper on it. ↩ The CNIL paper has some study summaries about this on page 15. Generally speaking, another good study to read is this one . ↩ France is very invested in this aspect and its data protection authority (CNIL) has made it one of their main points and even wrote a paper on it. ↩ The CNIL paper has some study summaries about this on page 15. Generally speaking, another good study to read is this one . ↩

0 views
Farid Zakaria Yesterday

A trillion dollars

This is not meant to be a political post. Headlines recently have been projecting Elon Musk’s net worth to hit $1 trillion USD. Working in software, you inevitably come up against Jeff Dean’s latency numbers every programmer should know . The original post wasn’t just insightful for sharing the time costs of common I/O operations. By using the scale of one access pattern to contextualize the next order of magnitude, it really helped entrench the cost of these increasing access patterns in my mind. Scale at increasing orders of magnitude is often difficult to comprehend. Although logarithmic graphs are useful for showing exponential growth or displaying vastly different scales on a single chart, they are easily misunderstood. If we were to map 1 million USD to 1 ns , what are the matching parallels to I/O access patterns? I have seen similar graphics for representing wealth, but I decided to make my own – because why not . Check it out: https://fzakaria.github.io/trillion-wut/ – how fast can you scroll to the bottom? You can find the source available at https://github.com/fzakaria/trillion-wut .

0 views
Kev Quirk Yesterday

Bloggers, can we make better titles for our posts?

by Michael Harley Michael makes the case for us bloggers to use better titles when writing our posts as it helps discovery. Read post ➡ I agree with Michael on this, but I realised that since adding other post types to my RSS feed I too am guilty of this, as my notes posts only show the date and time of the post in the RSS feed. I've just pushed an update to my RSS feed that shows the first 15 words of the note after the date and time, which hopefully makes things more descriptive. That aside, good post by Michael, you should go check out his blog. 🙃 P.S. apologies for any RSS reader spam. Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️ You can reply to this post by email , or leave a comment .

0 views
ava's blog Yesterday

something my wife said today

I'm feeling pretty down in the dumps today. As my wife listened to me and kindly massaged my feet to make me feel better, she said " It's exhausting how life is like training with Yoda at Dagobah. Everything is about overcoming obstacles, waiting, and having patience. " Thought that was funny, and cute. Reply via email Published 15 Jun, 2026

0 views