Most people have experienced "shrinkflation" in one form or another, where manufacturers, in lieu of increasing prices, subtly reduce the quantity or size of a product, keeping the packaging mostly the same, in order to deceive their customers into buying less for the same price. Crucially, the reductions must be craftily applied so that the majority of buyers don't notice. It's understandable that people froth with vitriolic effluvium when they arrive home to find that their favourite snack has been permanently altered for the worse. It's a balance of greed against grievance, to dance along that fine line so that the collective anger and disappointment flies under the threshold of brand loyalty destruction. No doubt there are highly paid consultants whose entire careers have been built on this lucrative legal deception. I don't have too strong a reaction to it, at least when it comes to those edible homogenous media like chocolate or cheese. Sure, maybe the portion size is now impractical, but in the end it's simple enough to keep a watchful eye on the price per unit mass, and figure out if we're getting that elusive Good Deal. Or the degree to which the proposed deal is actually Good. Maintaining a mental chart of the acceptable volumetric costs of common goods is one of the small prices we pay for living in a western capitalist society. People hate shrinkflation, and with good reason, as loud complaints are the only thing that can keep it in check. But today I'd like to talk about a related problem, one that no-one seems to be complaining about, one where the Bad Guys have won. Perishable foods are one of the few categories of product where disposable plastic packaging makes a huge amount of sense. The environmental cost of wasted food far outweighs that of the plastic film that could preserve it. Cleaning products – handwash, laundry detergent, shampoo, etcetera – have a near infinite shelf life, and there is no reason not to buy them in bulk. Perhaps you might want to experiment with different brands, sample this one and that, but once you've found a product that you like, stocking up on a few years' supply has no downsides... for the consumer. But bulk purchases are a disaster for the companies behind Big Soap. They want to sell you as little as possible, as often as possible, to lock you into their endless marketing cycle, and they manage this by playing on a peculiar psychological trait we all share. Humans are bad at judging volume. Given two differently-shaped glasses of liquid, most people are completely unable to guess which one holds more. The variation in the shape of pint glasses, which all hold the same volume of liquid, goes some way to illustrate the extremes of the effect. These three cylinders all have the same volume: Even if you remind yourself that it scales by the square of the radius, judging the volume of a cylinder doesn't come naturally to us. And for complex shapes it gets substantially harder. The shape with the largest volume, for the smallest apparent size, is a sphere. Or arguably an oblong, viewed only from the end. Conversely, the shape with the largest apparent size for its volume, at least if we stay within the confines of what can practically be turned into a container, is a thin, flat blob oriented towards the viewer. And this is precisely the shape soap bottles are striving for. This handwash bottle is 85mm wide, but only 35mm thick, dictated by the diameter of the screwcap. If thinner pump mechanisms were available, they would no doubt have made the bottle thinner still. Am I the only one who finds this ridiculous? They recently reduced the volume of these washing-up liquid bottles, by about 30mL – standard shrinkflation – but they managed to keep the width and height almost the same as the older bottles. There is even an indent in the middle section to make it thinner. The cost of retooling the moulds is substantial, but obviously insignificant compared to the increased profits proffered by such thinness. Once I recognised this behaviour, which I have dubbed "thinflation", I started to see it everywhere. It is a contagious marketing technique: if your competitors make their bottles thin and flat, they visually look bigger and will sell more, so every manufacturer has to race to make their bottles as thin and as flat as they can get away with. But what confused me is that nobody else seems to have noticed. In fact, people are so conditioned by the now-expected shape of a soap bottle that they will go out of their way to rationalise it. I met a bloke in the pub who insisted the shape was justified, reeling off multiple arguments, which I shall now dismantle. This is simply untrue. The most efficient shape for transport is a cuboid. For instance, Tetrapak cartons can be arranged onto a tray with virtually no space between them. It's certainly possible to produce a thin, flat cuboid, but the thinflated bottles we see have big curved edges that are directly detrimental to their tessellation. Some of the cardboard trays they're shipped on require additional spacers to keep the oddly-shaped bottles secure. In response to various mumbles about being able to fit them though a letterbox, that would only be relevant if the bottles were thinner than the standard large letter (25mm) which these are not. For a shampoo bottle, sure, a multi-litre bottle would be unwieldy, but the extremes to which some shower gel bottles have been thinned is way beyond the demands of comfort. For each shrinkflation cycle, the bottles get thinner and smaller, eventually looping full circle when they introduce a "new", "bigger" bottle again. The fact that some shampoo bottles are still round, holding almost double the volume of the thin ones, makes this argument especially thin. Remember that Fairy Liquid, within living memory, used to have round bottles. Did anyone at the time complain about how difficult these were to hold? When the clear flat bottles were introduced, it was in the name of "more eco-friendly packaging" which is especially ironic, dare I say an outright lie, when the liquid content was reduced by about 40%. Detergent bottles are particularly guilty of thinflation, and one way to reduce the volume even further is to put a large hole through your bottle to provide a handle. It sounds reasonable enough, but when compared to, say, a milk bottle, the absurdity becomes clear. Unlike detergent, milk is produced and consumed in sufficient quantity that the industry could not put up with such inefficiencies. Here we have the biggest detergent bottle in the supermarket, presented as "XL mega pack", holding a whopping 1.65L. Compare that to the milk bottle of 2.27L, despite being smaller in two of the dimensions. Note that the milk has a roughly cuboid shape to aid packing, fits within the confines of a fridge-door shelf, and still sports a perfectly serviceable handle. For an even starker contrast, consider the 5L containers used to ship industrial chemicals. At over three times the volume, it retains the conveniences of a handle and a cuboid profile, and yet it's still shorter, and barely any wider, than our XL mega pack. And indeed, if we look to the industrial consumers of soap, where the comedic inefficiency of thinflation has failed to get a foothold, this is precisely the type of container they use. Well, as with shrinkflation, there is a fundamentally dishonest nature in play, that we are being manipulated and lied to. That alone should get the blood pumping. But even if we discount the deception aspect, there is a much more important reason to care, one that perhaps I have not made clear: Thin bottles waste more plastic than conventionally shaped ones. Weirder aspect ratio, less efficient bottle. They consume more material and energy to produce, and the extra plastic makes them heavier and bulkier to transport. If you care about environmental damage from disposable plastic, as we are all supposed to do, here is a vast global industry where we could easily cut waste plastic by 30% or more, by doing nothing more than banning such inefficient bottles. In an ideal world, sure. We could all take our reusable soap containers to the refill station and top them up without any plastic waste at all. Some new-age, ultra-eco places even offer such services, but they cash in on the target market by charging vastly more than the disposably served equivalents. The chief concerns with refills are the inevitable mess and the obligatory infrastructure, and being pragmatic, even if the refills could end up cheaper than buying a new bottle, in general, soap is so cheap and lasts so long that very few people are going to care. Asking people to refill their soap bottles is asking people to change the way they live, to suffer a mild inconvenience for no personal benefit. Our ambitions should be to reduce waste without reducing the quality of life. I recently cleared out an old box of chargers and power supplies, for various gadgets of yesteryear. It's easy to forget just how annoying it was for every single product to come with a different charging cable with its own proprietary connector. The only thing that put an end to the madness was government regulation. Life is simpler, and waste vastly reduced, by having everything powered by USB-C. But it does posit a fresh question: If the world governments are able to enforce standardised connectors, why aren't they able to enforce standardised bottles? Government intervention is the only way that thinflation can be stopped. It doesn't even seem that difficult. Just specify hard limits to the aspect ratio, and the world would be a better place. We can't stop corporations being greedy, and we can't stop consumers being stupid, but we can get a real easy win, and make a genuine difference, by eliminating the shamefully thin bottles.
A dependency-free plain-text editor that runs in your browser and installs as a PWA. No accounts, no tracking, works offline.
On-device sentence embeddings — engine, weights, and tokenizer in 7 MB of WASM. Search the React docs entirely on your CPU.
The open source coding agent.
Say you’ve written a little procedural generation program. Say it’s some art, music or level generator. It looks kinda cool, but after a few generations, you are already bored with it. …
What SQL/PGQ property graphs are, how a relational schema maps onto them, what they compile to, and tables can be both a vertex and an edge.
Buy an EMF meter before buying electronic toys for kids
With Claude Code I feel like I can achieve more in less time. But other questions are surging. Before LLMs, building a complex feature meant a tradeoff: use an existing GitHub package or code it myself? How polished is the library, how much does security matter, many parameters. Now there is no friction. Claude Code writes in a few minutes exactly what I want. That old question is slowly disappearing, and in its place I'm facing decisions I used to hit only occasionally, now on a regular basis. Self host or Vercel? A VPS or is a Raspberry Pi enough? Shipping more things automatically forces these questions. The speed of the change in the last year has been overwhelming, fun, and with a real feeling of accomplishment. Along the way I've noticed some patterns. Unix is a fundamental and unquestionable building block, and Claude is amazing at it. I barely know enough Linux to stop an LLM from doing dumb things, but iterating on complex shell scripts with it until they're perfect is a fun process, and the reusability I get is insane. The limit is distribution: my scripts are tailor made for me, and they break on colleagues' machines with incompatible dependencies. Web technologies solve that. Everyone with a computer has a browser. But web tech is also where I have the most expertise, so it's where I scrutinize the LLM's code the most and sometimes cringe, the same way a Linux expert would cringe at my "perfect" shell scripts. When I know less, I only judge the outcome. When I know more, I judge in more dimensions. There are more of these decisions now. Performance: I recently built a server in Rust with little Rust experience, prototyped it in parallel with Zig, liked the Zig code more, but bet that Rust's constraints would pay off as the server grows. Nothing has broken so far. Compute: Vercel free tier for shipping in five minutes, Kubernetes with GitOps on Hetzner for professional work, a Raspberry Pi at home for the simplest possible self hosting. But all of that is context for the actual point. What people actually pay for I like to create things and solve problems, and I like getting paid for it. Usually the problems worth paying someone to solve are complex. Otherwise there would be no need to pay anyone. Complexity is the key, but complexity is also the enemy. When things are too complex, they blow out of understanding. If you solve a problem with a solution of enormous complexity, maybe you solved a problem, but you created another one. The nature of the problems I work on is that they are not clear at the start. The reasons someone decides "ok, I'm gonna pay someone to solve this" are infinite, but if they had a perfect step by step instruction manual, it's hard to imagine they wouldn't just do it themselves, or hire someone temporarily to follow the list. Given, of course, that the list is guaranteed to work. I am paid not only to solve a problem, but to define it, and to create the instruction list to solve it. Only after that can I solve it. I call that systematic problem solving. It's something AI cannot do by itself. We can set up AI agents and workflows to tackle it, but it doesn't happen on its own. That's what people get paid for, that's what creates value, and that's what moves humanity forward. Complexity is the crumbs of solved problems Systematic problem solving generates complexity. I like the phrase "fire bullets before cannonballs". First you try simple solutions. As they fail individually, you start combining them and twisting them. A lucky shot is an elegant solution: everyone understands it, everyone can apply it, it covers all cases, and it's permanent. A less lucky shot solves the problem, but things get left behind along the way. The combination of twisted approaches that solved something novel sticks around, obviously, because it solves a problem. But that spaghetti of solutions also becomes something to manage. That is how complexity is born. The crumbs of a problem that was solved. Building blocks leave no crumbs I like to think of building blocks as pieces that leave no crumbs behind. Pieces that disappear and fade into the background. No one needs to think about them, even when they are everywhere. Creating a building block is very difficult, and there are not many of them. A building block is a tool or technology that I have to force myself to think about, for a reason. Without that reason, it stays hidden from my consciousness. Building blocks are also scoped. There is a clear boundary around them. I consider Linux a building block, but I cannot use it in my acoustic guitar. I cannot use it in my microwave. It's obvious. There is zero or very little overhead in thinking about when I can use it or not. It's almost instinct. So two questions to recap: Does it disappear when I use it, unless I force myself to think about it? Is it instinctive to know when I can use it and when I can't? In the era of using Claude Code to solve a lot of problems, I want to force myself to think about building blocks, and to aim to build those. Emergence, not complexity I think when you manage to create multiple building blocks with clearly defined boundaries that fit together, you get emergent behaviors. Things that are impossible to imagine until you see them emerge out of the blocks and the space where they live. I want to distinguish emergence from complexity. Complexity is hard to manage and it's in the way. It makes it difficult for people to wrap their heads around things. Complexity is very common, it is the norm, and it is what we want to get away from when solving problems. Solve problems with building blocks that fade into the background. Define clear boundaries around them so you automatically know when to use them. If done properly, something emerges, and you're nature creating more nature. I think that's what nature is as well: elegant, made out of simple things that play together under specific rules. One last thought. A package you send via DHL can be fragile. What is the opposite? Robust? Nope. Robust is neutral. Antifragile is the opposite: something that benefits from chaos and mess. I think building blocks are robust. They don't benefit from chaos, but they don't get affected by it either. Emergence, though, is antifragile. It benefits from chaos. But those are thoughts I want to develop later, when I finish reading Antifragile.
'Six Hours to Infiltrate a Bank': How AI Is Industrializing Fraud With the constant development of artificial intelligence (AI), f...
On surviving the Great AI Capital Shift, and our last chance to make useful work
Solar and storage ‘most effective way of addressing energy sustainability, affordability and security’, recent report says