2026年03月27日 · 50篇 · 由 伊利虾 🦐 自动整理 · 全文翻译
William Shockley, John Bardeen, and Walter Brattain, winners of the 1956 Nobel Prize for their work on the “transistor effect.” Via Wikipedia.As we’ve noted more than a few times before, for most of the 20th century AT&T’s...
📝
My bank card never arrived. I called the bank and, after being redirected through several departments, was assured that it had been mailed. Then we argued a bit about what "7 to 10 business days" meant, we were already on day 14. We ended the call by...
📝
Suppose you have a calculator or math library that only handles real arguments but you need to evaluate sin(3 + 4i). What do you do? If you’re using Python, for example, and you don’t have NumPy installed, you can use the built-in math li...
📝
Be healthy, be young, fall ill. You have a great job of course, you have insurance. It would be ok if the worst thing about health insurance in America was it is hard to navigate. No! The actual problem is that your insurance is incentivized not to c...
📝
I alluded to Lebesgue constants in the previous post without giving them a name. There I said that the bound on order n interpolation error has the form where h is the spacing between interpolation points and δ is the error in the tabulated values. T...
📝
Richard Feynman said that almost everything becomes interesting if you look into it deeply enough. Looking up numbers in a table is certainly not interesting, but it becomes more interesting when you dig into how well you can fill in the gaps. If you...
📝
Last time, we looked at how the owner of a dialog can take control just before the dialog box message loop goes idle. I said that I pulled a trick. The trick is that I used the common file open dialog instead of a simple MessageBox. Indeed, if you r...
📝
Companies, as they grow to become multi-billion-dollar entities, somehow lose their vision. They insert lots of layers of middle management between the people running the company and the people doing the work. They no longer have an inherent feel or ...
📝
The Melissa virus was a mass-mailing macro virus from March 1999. It was one of the more notorious computer viruses of the 1990s, and reportedly the author named it for a dancer he met in a Florida nightclub. Authorities quickly The post The Melissa ...
📝
It’s a popular joke among software engineers that writing overcomplicated, unmaintainable code is a pathway to job security. After all, if you’re the only person who can work on a system, they can’t fire you. There’s a related take that “nobody gets ...
📝
A customer wanted to know how to change a dialog box’s message loop so that it used MsgWaitForMultipleObjects instead of GetMessage. (I’m guessing that they had a handle that they wanted to wait on while the dialog was up.) The stand...
📝
With apologies for the short notice, a few quick announcements:I will be having an ultra-timely conversation tonight on war and AI at with Katrina Manson, Bloomberg journalist and author of the excellent, could-not-be-more-topical new book Project Ma...
📝
Steven Anthony Ballmer, born March 24, 1956, served as chief executive officer of Microsoft from 2000 to 2014. Today he is the owner of the Los Angeles Clippers of the National Basketball Association (NBA). Steve Ballmer’s personal wealth is ar...
📝
->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links The cost of doing business: "Market definition" is a denial-of-service attack on antitrust law. Hey look at this: Delights to delectate. Object permanence:...
📝 ->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links The cost of doing business: "Market definition" is a denial-of-service attack on antitrust law. Hey look at this: Delights to delectate. Object permanence: Union Pacific v model railroads; Warners v Potter fans; NYT's trademark trolling; Why Rebecca Black mashups suck; Jabba the peep; Grenfell costs v tenants. Upcoming appearances: Berkeley, Montreal, London, Berlin, Hay-on-Wye. Recent appearances: Where I've been. Latest books: You keep readin' em, I'll keep writin' 'em. Upcoming books: Like I said, I'll keep writin' 'em. Colophon: All the rest. The cost of doing business (permalink) The most important part of any law, rule or policy isn't what it permits or prohibits – it's whether you can enforce the law at all. After all, as odious as a law that forbids people from thinking mean thoughts about Trump would be, it would also be completely unenforceable, and would ultimately just not be very important, except as a symbol of Trump's evil. This property is called "administrability," meaning, "the degree to which an authority can administer the policy." There are many dimensions to administrability, including "Is it even possible to detect whether this policy has been violated?" In that same vein, there're questions like, "If you discover someone has violated this policy, will you be able to stop them from continuing to do so?" For example, the US routinely indicts North Korean
Wander 0.3.0 is the third release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent website owners. To try it, go to susam.ne...
📝 Wander 0.3.0 is the third release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent website owners. To try it, go to susam.net/wander/. This release brings small but important bug fixes. The previous release, version 0.2.0 introduced a number of new features. Unfortunately, two of them caused issues for some users. A new feature in the previous release was the ignore list feature. The ignore list defines console URLs and page URLs that the console never uses while discovering page recommendations. While this feature works fine, due to a bug in the implementation, the Console dialog fails to load in consoles that do not define any ignore list. This has now been fixed. There was another issue due to which the <iframe> that displays discovered websites and pages could not load certain websites. In particular, any website that relied on same-origin context to load its own resources failed to load in the console. This has been fixed as well. Please see codeberg.org/susam/wander/issues/7 for a detailed discussion on this issue. Apart from these two important fixes, there are a few other minor fixes too pertaining to preventing horizontal scrolling in small devices and preventing duplicate recommendations from appearing too close to each other. Please see CHANGES.md for a detailed changelog. To learn more about Wander, how it works and how to set it up,
I created three design docs for the same open-source web app: I spent 16 hours writing one of the design docs completely by hand. I generated one using Claude Opus 4.6 (medium effort). I generated one using GPT-5.4 (high effort). I generated the AI v...
📝 I created three design docs for the same open-source web app: I spent 16 hours writing one of the design docs completely by hand. I generated one using Claude Opus 4.6 (medium effort). I generated one using GPT-5.4 (high effort). I generated the AI versions in a few minutes. I fed the agents a prompt that included the design docs chapter of my book and a skeleton design doc structure. The agents who wrote the AI-generated docs did not see the version I wrote.
In Sebastian Raschka's book "Build a Large Language Model (from Scratch)", he writes that weight tying, while it reduces the parameter count of a model, in his experience makes it worse. As such, apparently people don't use it in modern LLMs. Intuiti...
📝 In Sebastian Raschka's book "Build a Large Language Model (from Scratch)", he writes that weight tying, while it reduces the parameter count of a model, in his experience makes it worse. As such, apparently people don't use it in modern LLMs. Intuitively, that makes sense -- I'll explain why in this post. But as I'm trying various interventions to see if I can get my model -- based on Raschka's code, but trained for a fraction of the time that the original GPT-2 model was -- to perform as well as the original in terms of the loss it gets on a test set, I thought it would be worth seeing if it really is a negative for this particular tiny model of 163M parameters. After all, the original weights use weight tying, and I did find that QKV bias appeared to help -- and that's another old-school technique that they used, which has since dropped out of fashion. Might this one help too? Worth a try! Let's give it a go. Weight tying: a refresher I'll start with a quick refresher on what weight tying is, and how it works. This is really targeted at people who've been reading along with this series -- if it's all new to you, you might find my post on Maths for LLMs a useful catch-up guide first. In our LLM code, right at the start, we use an embedding layer to take our input token IDs, and turn them into embeddings -- each token becomes a vector in a high-dimensional space (768 in our case), which we see as representing in some manner the "meaning" of the token. A useful way to think ab
Steve Krouse wrote a piece that has me nodding along: Programming, like writing, is an activity, where one iteratively sharpens what they're doing as they do it. (You wouldn't believe how many drafts I've written of this essay.) There’s an incredible...
📝 Steve Krouse wrote a piece that has me nodding along: Programming, like writing, is an activity, where one iteratively sharpens what they're doing as they do it. (You wouldn't believe how many drafts I've written of this essay.) There’s an incredible amount of learning and improvement, i.e. sharpening, to be had through the process of iteratively building something. As you bring each aspect of a feature into reality, it consistently confronts you with questions like, “But how will this here work?” And “Did you think of that there?” If you jump over the process of iteratively building each part and just ask AI to generate a solution, you miss the opportunity of understanding the intricacies of each part which amounts to the summation of the whole. I think there are a lot of details that never bubble to the surface when you generate code from English as it’s simply not precise enough for computers. Writing code is a process that confronts you with questions about the details. If you gloss over the details, things are going to work unexpectedly and users will discover the ambiguity in your thinking rather than you (see also: “bugs”). Writing code is a tool of process. As you go, it sharpens your thinking and helps you discover and then formulate the correctness of your program. If you stop writing code and start generating it, you lose a process which helped sharpen and refine your thinking. That’s why code generation can seem so fast: it allows you to skip over the slow, painfu
Hi! If you like this piece and want to support my independent reporting and analysis, why not 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 500...
📝 Hi! If you like this piece and want to support my independent reporting and analysis, why not 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 5000 to 18,000 words, including vast, detailed analyses of NVIDIA, Anthropic and OpenAI’s finances, and the AI bubble writ large. I just put out a massive Hater’s Guide To The SaaSpocalypse, as well as the Hater’s Guide to Adobe. It helps support free newsletters like these! The entire AI bubble is built on a vague sense of inevitability — that if everybody just believes hard enough that none of this can ever, ever go wrong that at some point all of the very obvious problems will just go away.Sadly, one cannot beat physics.Last week, economist Paul Kedrosky put out an excellent piece centered around a chart that showed new data center capacity additions (as in additions to the pipeline, not brought online) halved in the fourth quarter of 2025 (per data from Wood Mackenzie): Wood Mackenzie’s report framed it in harsh terms:US data-centre capacity additions halved from Q3 to Q4 2025 as load-queue challenges persisted. The decline underscores the difficulties of the current development environment and signals a resulting focus on existing pipeline projects. While Texas extended its pipeline capacity lead in Q4 2025, New Mexico, Indiana and Wyoming saw greater relative growth. Planned ca
The famous article Choose Boring Technology lists two problems with using innovative technology: There are too many "unknown unknowns" in a new technology, whereas in boring technology the pitfalls are already well-known. Shiny tech has a maintenance...
📝 The famous article Choose Boring Technology lists two problems with using innovative technology: There are too many "unknown unknowns" in a new technology, whereas in boring technology the pitfalls are already well-known. Shiny tech has a maintenance burden that persist long after everybody has gotten bored with it. Both of these tie back to the idea that the main cost of technology is maintenance. Even if something is easy to build with, it might not be as easy to keep running. We cannot "abandon" mission-critical technology. Say my team builds a new service on Julia, and 2 years later decides it was the wrong choice. We're stuck with either the (expensive) process of migrating all our data to Postgres code to Java or the (expensive) process of keeping it running anyway. Either way, the company needs to spend resources keeping engineers trained on the tech instead of other useful things, like how to mine crypto in their heads. Tech is slow to change. Not as slow to change as, say, a bridge, but still pretty slow. Now say at the same time as Julia, we also decided to start practicing test && commit || revert (TCR). After two years, we get sick of that, too. To deal with this, we can simply... not do TCR anymore. There is no "legacy practice" we need to support, no maintenance burden to dropping a process. It is much easier to adopt and abandon practices than it is to adopt and abandon technology. This means while we should be conservative in the software we use, we ca
Back in the days of 16-bit Windows, many system components were redistributable, meaning that programs that used those components could include a copy of those system components and install them onto the system as part of the program’s installe...
📝 Back in the days of 16-bit Windows, many system components were redistributable, meaning that programs that used those components could include a copy of those system components and install them onto the system as part of the program’s installer. The guidance for installing the system components was that if the installer finds a copy of the system component already on the system, then they should compare the version number of the existing file with the version number of the file being installed and then overwrite the file only if the file being installed has a higher version number. if the existing file has a higher version number, then it should be left alone. This rule relies on the fact that Windows maintains backward compatibility, so the newer version still works even if used by an older program. This doesn’t mean that installers actually followed this guidance. It was common for program installers to overwrite any file that was in their way, regardless of the existing file’s version number. When these installers ran on Windows 95, the replaced the Windows 95 versions of the components with the Windows 3.1 versions. You can imagine how much of a disaster this caused to the rest of the system. Windows 95 worked around this by keeping a backup copy of commonly-overwritten files in a hidden C:\Windows\SYSBCKUP directory. Whenever an installer finished, Windows went and checked whether any of these commonly-overwritten files had indeed been overwritten. If
Penn & Teller have this philosophy about their craft. Or, I guess, all stage magicians do, but Penn & Teller are the ones who spend the most time talking about it.They will spend months on a single trick. Years, sometimes. More time on someth...
📝 Penn & Teller have this philosophy about their craft. Or, I guess, all stage magicians do, but Penn & Teller are the ones who spend the most time talking about it.They will spend months on a single trick. Years, sometimes. More time on something than anyone else might reasonably expect, they’ve said. The same motion. The same timing. The same angle of the wrist at the exact same millisecond. Eliminate every possible deviation from the plan.Because when you’re an illusionist… you only get one shot.One audience. One moment. One chance for the coin to appear behind the ear instead of falling into your sleeve and rolling under the table while everyone watches on in secondhand embarrassment.The illusionist lives in scarcity because the medium demands it. The show is live. The audience is right there. The trick either works or it doesn’t. So you rehearse. You refine. You do the thing ten thousand times in a mirror until your hands move like they belong to someone who has never once been nervous.Conjurers, on the other hand, do it differently.The ConjurerHave you ever watched a sports photographer work? I mean really watched one?They’re crouched at the edge of a basketball court or pressed against the boards at a hockey game and they are just...Thousands of photos in a single night. A shutter that sounds like you’re speeding down a hill on your bike with a playing card in your spokes. And then they go home, or back to the press room, or wh
Short stories offer you the chance to dip briefly into a world and then skip out so there's not much time for development; just straight in to the plot and off we go. But this is all exposition and very little action. Rather than let the plots develo...
📝 Short stories offer you the chance to dip briefly into a world and then skip out so there's not much time for development; just straight in to the plot and off we go. But this is all exposition and very little action. Rather than let the plots develop naturally, there are just vast passages of infodumping. I'm sad to say this is a rather dreary and insipid collection of stories. Some of the stories start out with an interesting premise but then just fizzle out. There's a reasonably good idea in "The Materiality of Emotions" which describes people buying little trinkets which induce emotions in them. Again, emotions as drugs is well-worn stuff, but this builds up momentum nicely before suddenly ending. The highlight is "Spectrum" which has some delightful world-building but, like the others, it's rather derivative of older stories. A woman's space ship crashes on a strange planet and she tries to befriend the local hominids. You've almost certainly read it before. Overall I found it underwhelming. Many thanks to NetGalley for the review copy.
->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links Goodhart's Law vs "prediction markets": Putting a gun to the metric's head. Hey look at this: Delights to delectate. Object permanence: Apple v interop; Ya...
📝 ->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links Goodhart's Law vs "prediction markets": Putting a gun to the metric's head. Hey look at this: Delights to delectate. Object permanence: Apple v interop; Yahoo v the world; Rasputin v the Haunted Mansion; Opening chord from A Hard Day's Night; Mondrian Pong; "IP": Patent trolls v Apple. Upcoming appearances: Berkeley, Montreal, London, Berlin, Hay-on-Wye. Recent appearances: Where I've been. Latest books: You keep readin' em, I'll keep writin' 'em. Upcoming books: Like I said, I'll keep writin' 'em. Colophon: All the rest. Goodhart's Law vs "prediction markets" (permalink) The most selectively believed-in verse in the conservative catechism is the idea that "incentives matter." Sure, "incentives matter" if you're seeking healthcare. That's why you're nibbled to death by co-pays and deductibles – if you could get healthcare whenever you felt like it, you might get too much healthcare. "Incentives matter," so we have to make sure that you only seek care when you really need it: https://pluralistic.net/2025/04/14/timmy-share/#a-superior-moral-justification-for-selfishness But rich people don't need to be disciplined by incentives. They can get no-bid contracts with Uncle Sucker without being tempted to rip off the USA. They can force their workers into nondisparagement clauses without being tempted to act like a colossal asshole, secure in the knowledge that they can sue workers w
In the nightmarish world of 2026 it can be difficult to know how to help at all. There are too many horrors happening to quickly to know where one can inject even a small amount of assistance. However I wanted to quickly post about something I did th...
📝 In the nightmarish world of 2026 it can be difficult to know how to help at all. There are too many horrors happening to quickly to know where one can inject even a small amount of assistance. However I wanted to quickly post about something I did that was easy, low impact and hopefully helps a tiny fraction of a fraction of a percent of people. Snowflake So I was browsing Mastodon when someone posted a link asking for people to host Snowflake proxies. Snowflake is a lightweight proxy best explained by David Fifield below.So, in summary, Snowflake is a censorship circumvention system, and what that means is, it's a way of enabling network communication between two endpoints despite the presence of some adversary in the middle, a censor in the middle, who's interfering with the communication. Now, that's kind of an abstract, scientifically useful definition of censorship, but this model is, of course, motivated by real-world considerations, actual censorship people encounter in practice. It's security and privacy, but it's also tied up with human rights and freedom of expression, and that's why we do this work. There are a lot of networks in the world—I won't belabor the point—but there are a lot of networks where, you want to read some news, you want to use some app, you want to participate in some discussion group, and you can't. Or you cannot easily, because there's a censor preventing you from doing so. And to give
This newsletter is free to read, and it’ll stay that way. But if you want more - extra posts each month, access to the community, and a direct line to ask me things - paid subscriptions are $2.50/month. A lot of people have told me it’s...
📝 This newsletter is free to read, and it’ll stay that way. But if you want more - extra posts each month, access to the community, and a direct line to ask me things - paid subscriptions are $2.50/month. A lot of people have told me it’s worth it. Upgrade On any given day, I have roughly 5 or so fucks to give. Before anyone takes that as a confession of total selfishness, I want to be precise about what I mean.I wake up each morning with a finite quantity of moral and emotional attention. That quantity isn’t replenishable on demand by any external urgency, by any movement, by any poster on any social media platform. By the time I’ve spent however many fucks on my own anxieties, my own work, my own relationships, my own family, my own half-articulated and variously grasping fears about the future - there is precious little left over for the existential dread and the exhortations for me to “not look away” that keep arriving in my feed with all their attached moral instruction.When I scroll past your doom posting, your thread about how everything is bad and the world is full of horrors, your viral images, your statistics, I’m not making a statement about how important the things you give a fuck about actually are in the real world.But I’m already living on the edge of a nervous system that’s already fully deployed, and no amount of public shaming or insistence has ever - or will ever - expand my capacity by a single u
Watching OpenClaw do its thing must be like watching the first plane take flight. It's a bit rickety and stuck together with a lot of sticky tape, but squint and you can see the potential for agentic AI to change the world as we know it. And I d...
📝 Watching OpenClaw do its thing must be like watching the first plane take flight. It's a bit rickety and stuck together with a lot of sticky tape, but squint and you can see the potential for agentic AI to change the world as we know it. And I don't think that's hyperbolic. A lot of what people claim to have done with it is hyperbolic, and as with all new tech, the challenge is to cut through the noise and find the value. Stay tuned for more on that, as I've already found some really useful applications for it to help me do my job better, which I think I should devote my next weekly vid to just that.
TLDR PT2 is in production!! Water resistance update - 30m What you need to know about Pebble Time 2 Address confirmation email…...
📝 TLDR PT2 is in production!! Water resistance update - 30m What you need to know about Pebble Time 2 Address confirmation email…
Wander 0.2.0 is the second release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent personal website owners. To try it, go t...
📝 Wander 0.2.0 is the second release of Wander, a small, decentralised, self-hosted web console that lets visitors to your website explore interesting websites and pages recommended by a community of independent personal website owners. To try it, go to susam.net/wander. This release brings a number of improvements. When I released version 0.1.0, it was the initial version of the software I was using for my own website. Naturally, I was the only user initially and I only added trusted web pages to the recommendation list of my console. But ever since I announced this project on Hacker News, it has received a good amount of attention. It has been less than a week since I announced it there but over 30 people have set up a Wander console on their personal websites. There are now over a hundred web pages being recommended by this network of consoles. With the growth in the number of people who have set up Wander console, came several feature requests, most of which have been implemented already. This release makes these new features available. Since Wander 0.2.0, the wander.js file of remote consoles is executed in a sandbox iframe to ensure that it has no side effects on the parent Wander console page. Similarly, the pages recommended by the network are also loaded into a sandbox iframe. This release also brings several customisation features. Console owners can customise their Wander console by adding custom CSS or JavaScript. Console owners can also block certain URLs from ever
I'm still working on improving the test loss for a from-scratch GPT-2 small base model, trained on code based on Sebastian Raschka's book "Build a Large Language Model (from Scratch)". In my training code, I have this code to create the optimiser: op...
📝 I'm still working on improving the test loss for a from-scratch GPT-2 small base model, trained on code based on Sebastian Raschka's book "Build a Large Language Model (from Scratch)". In my training code, I have this code to create the optimiser: optimizer = torch.optim.AdamW( model.parameters(), lr=0.0004, weight_decay=0.1 ) In my last post I looked into the learning rate, the lr parameter in that code, and found a value for that, plus some extra code to schedule it -- that is, to vary it over time -- which gave better training results. This time I want to go into the weight decay. What is it, what is it for, and is 0.1 really the best value? I was a little concerned going into this that in order to understand this hyperparameter, I'd need to have a good understanding of how the optimiser works; I've been building what I think is a solid mental model of optimisers, but I don't think I understand them well enough to explain them yet, and I've been hoping to delay posting about them to a separate blog post series after this one. The good news is that while weight decay is an important aspect of how optimisers work -- the "W" in AdamW, the thing that makes it different to the older Adam optimiser, is a nod to its different treatment of weight decay -- you don't need to know how the optimiser itself works to understand what weight decay is. Instead, you just need to consider an older and more fundamental aspect of building ML systems -- regularisation. In order to dig into that
A financially motivated data theft and extortion group is attempting to inject itself into the Iran war, unleashing a worm that spreads through poorly secured cloud services and wipes data on infected systems that use Iran’s time zone or have F...
📝 A financially motivated data theft and extortion group is attempting to inject itself into the Iran war, unleashing a worm that spreads through poorly secured cloud services and wipes data on infected systems that use Iran’s time zone or have Farsi set as the default language. Experts say the wiper campaign against Iran materialized this past weekend and came from a relatively new cybercrime group known as TeamPCP. In December 2025, the group began compromising corporate cloud environments using a self-propagating worm that went after exposed Docker APIs, Kubernetes clusters, Redis servers, and the React2Shell vulnerability. TeamPCP then attempted to move laterally through victim networks, siphoning authentication credentials and extorting victims over Telegram. A snippet of the malicious CanisterWorm that seeks out and destroys data on systems that match Iran’s timezone or have Farsi as the default language. Image: Aikido.dev. In a profile of TeamPCP published in January, the security firm Flare said the group weaponizes exposed control planes rather than exploiting endpoints, predominantly targeting cloud infrastructure over end-user devices, with Azure (61%) and AWS (36%) accounting for 97% of compromised servers. “TeamPCP’s strength does not come from novel exploits or original malware, but from the large-scale automation and integration of well-known attack techniques,” Flare’s Assaf Morag wrote. “The group industrializes existin
A customer was developing a Windows service process, and it is important to them that the service keep running on their servers. They wanted to know if there was a way they could prevent users who connect to the server from terminating the service. I...
📝 A customer was developing a Windows service process, and it is important to them that the service keep running on their servers. They wanted to know if there was a way they could prevent users who connect to the server from terminating the service. In particular, they wanted to make sure that the user couldn’t use the anti-malware software to terminate their service, either by mistake or maliciously. The fact that they made it to asking about anti-malware software tells me that they have already locked down the more obvious access points. For example, they’ve already set the appropriate permissions on their service so that only administrators can Stop the service. But how do you protect your process from anti-malware software? The answer, of course, is that you can’t. Because if you could inoculate yourself against being terminated by anti-malware software, then malware would do it! Anti-malware software runs with extremely high levels of access to the system. They have components that run in kernel mode, after all. Even if they can’t terminate your process, they can certainly make it so that your process can’t accomplish anything (say, by preventing its threads from being scheduled to execute). And if anti-malware software goes awry, the entire system can be rendered catastrophically broken. The customer will have to work with the anti-malware software that runs on their server to see if there is a setting or other way to tell the anti-malware s
I have always enjoyed the act of typing words and seeing them come up on screen. While my favorite word processor of all time might be WordPerfect (here), I've used almost all of them. These programs were what sold me on the entire value proposi...
📝 I have always enjoyed the act of typing words and seeing them come up on screen. While my favorite word processor of all time might be WordPerfect (here), I've used almost all of them. These programs were what sold me on the entire value proposition of computers. They were like typewriters, which I had used in school, except easier in every single way. You could delete things. You could move paragraphs around. It felt like cheating, and I loved it.As time has gone up what makes up a "document" in word processing has increased in complexity. This grew as word processors moved on from being proxies for typewriters and into something closer to a publishing suite. In the beginning programs like WordPerfect, WordStar, MultiMate, etc had flat binary files with proprietary formatting codes embedded in there. When word processors were just proxies for typewriters, this made a lot of sense. But as Microsoft Word took off in popularity and quickly established itself as the dominant word processor, we saw the rise of the .doc file format. This was an exponential increase in complexity from what came before, which made sense because suddenly word processors were becoming "everything tools" — not just typing, but layout, images, revision tracking, embedded objects, and whatever else Microsoft could cram in there.The .doc: A Filesystem Inside Your FileAt its base the .doc is a Compound File Binary Format, which is effectively just a FAT file system with the
This is a blog where I talk mostly about programming in the workplace. These past few years the subject has often been AI, because it affects everything. From the hiring process to the very code we type. AI might just replace me mid-sentence... So wh...
📝 This is a blog where I talk mostly about programming in the workplace. These past few years the subject has often been AI, because it affects everything. From the hiring process to the very code we type. AI might just replace me mid-sentence... So when a subject that affects us all dominates the world, I want to give you my perspective. I may not be your source of political perspective, but here goes. Right now, we are at war. At least the United States of America is. It turns out, congressional rules are a lot like HTML standards: they are merely a suggestion you can choose to adopt or ignore. First, I want to say this firmly: you don't need to be an expert to talk about war. It affects us all on some level. That trope, that only experts should weigh in, is often used by people who want to control a narrative. But this time, the layman of every corner of the world will get involved in shaping the story. One of my earliest memories of what was called "the news" was footage of children throwing rocks at tanks rumbling through buildings. I didn't understand if it was courage, or just a game. I was just a kid after all. In hindsight, those were Palestinian children in a devastated city, throwing rocks at their unmatched adversary, the Israeli army. Some years later, I remember my brothers fitting me with an oversized gas mask while we played tag. I had to constantly readjust it, so I could see what was in front of me, and also breathe! Those masks, along with other supplies, had
->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links Understaffing as a form of enshittification: A way to shift value from workers, patients and shoppers to investors. Hey look at this: Delights to delectate...
📝 ->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None --> Today's links Understaffing as a form of enshittification: A way to shift value from workers, patients and shoppers to investors. Hey look at this: Delights to delectate. Object permanence: Marvel v "superhero"; What's a photocopier?; "Up Against It"; "Medusa's Web"; AI can't do your job; Coping with plenty; "The Shakedown"; Chickenized reverse-centaurs; France v iTunes; Copyfight discipline; Mystery lobbyists; "Where the Axe is Buried"; Free/open microprocessor; Folk models of computer security; Bug-eyed steampunk mask; Academics embracing Wikipedia. Upcoming appearances: Berkeley, Montreal, London, Berlin, Hay-on-Wye. Recent appearances: Where I've been. Latest books: You keep readin' em, I'll keep writin' 'em. Upcoming books: Like I said, I'll keep writin' 'em. Colophon: All the rest. Understaffing as a form of enshittification (permalink) At root, enshittification can only take place when companies can move value around. Digital tools make it easier than ever to do this, for example, by changing prices on a per-user, per-session basis, using commercial surveillance data to predict the highest price or lowest wage a user will accept: https://pluralistic.net/2023/02/19/twiddler/ Digital "twiddling" represents a powerful system of pumps for moving value around, taking it away from users and giving it to business customers, then taking it from businesses and giving it to users, and then, ultimate
This newsletter is free to read, and it’ll stay that way. But if you want more - extra posts each month, access to the community, and a direct line to ask me things - paid subscriptions are $2.50/month. A lot of people have told me it’s...
📝 This newsletter is free to read, and it’ll stay that way. But if you want more - extra posts each month, access to the community, and a direct line to ask me things - paid subscriptions are $2.50/month. A lot of people have told me it’s worth it. Upgrade In 1944, the Wehrmacht launched into Hitler’s last ditch effort to save the Third Reich. The Battle of the Bulge was a doomed campaign and a doomed gamble from a doomed regime, but its brutality was a true second test of the US Army on the Western Front. During the battle, Army historian S.L.A Marshall began interviewing infantry companies who’d been baptised in combat. Published 3 years later in his 1947 book, Men Against Fire, Marshall’s research showed that just 15-20% of riflemen in active combat positions ever fired their weapons - most kept their heads down. They moved when they were ordered and they held their positions, and they mimicked the outward appearance of a soldier in battle - but shoot, they did not. By any standard organisational metric, the men were present and accounted for, but 4 out of 5 never pulled the trigger. You can debate the extent of Marshall’s numbers, and you can debate his methodology, but his ratio shows up, again and again. IBM stumbled onto it in the ‘60s when they discovered that 80% of computer usage came from 20% of the system’s features. The pattern recurs because it describes something real about how effort is distributed ins
I shipped some updates to my notes site. Nothing huge. Just small stuff. But what is big stuff except a bunch of small stuff combined? So small stuff is important too. What follows is a bunch of tiny details you probably don’t care about, but they we...
📝 I shipped some updates to my notes site. Nothing huge. Just small stuff. But what is big stuff except a bunch of small stuff combined? So small stuff is important too. What follows is a bunch of tiny details you probably don’t care about, but they were all decisions I had to make and account for along the way to shipping. For me, the small details are the fun part! Each Post Now Has Its Own URL The site used to consist of a single, giant HTML page with every note ever. For feeds and linking purposes, I would link to individual posts by anchor linking somewhere in that giant HTML document, e.g. https://notes.jim-nielsen.com/#2026-03-09T2305 That worked fine, but as my notes page was getting bigger and bigger, it seemed like a waste to load everything when all I wanted to do was link to a single note. So I changed things. Now every note now gets its own individual page, e.g. https://notes.jim-nielsen.com/n/2026-03-09-2305/ You Might Have Noticed: I Changed the Note’s Identifier Whenever I create a note, I name it based on the date/time of publishing, e.g. 2026-03-09T2305.md That is what turns into the fragment identifier when deep linking to the note, e.g. /#2026-03-09T2305 Initially, I was going to just translate those IDs to paths, e.g. /#2026-03-09T2305 -> /n/2026-03-09T2305/ And while it seems fragment identifiers are supposed to be case-sensitive, in testing I was seeing Safari sometimes change the T to a t in the URL bar, e.g. /#2026-03-09T2305 -> /n/2026-03-09t2305
I called a large company the other day. Did I know the information I wanted could be found on their website?0 And was I aware that I could manage my account online?1 And would I like to receive a link to chat with their AI assistant via WhatsApp?2 Na...
📝 I called a large company the other day. Did I know the information I wanted could be found on their website?0 And was I aware that I could manage my account online?1 And would I like to receive a link to chat with their AI assistant via WhatsApp?2 Naturally, call volumes were higher than expected. I can only assume that whoever was in charge of predicting call volumes had recent suffered a traumatic brain injury and was unable to count beyond five without pulling their other hand out of their fundament. The cheerful woman warbled through her pre-recorded script and was suddenly replaced with a hideous electronic monstrosity. I recorded the call3 so that you can experience this monument to synthetic glory! 🔊 💾 Download this audio file. This is from a company whose website gushes about how innovative it is. AI is transforming its business at scale! Dedicated to technological excellence and delivering ISO accredited quality in all its divisions! And yet, somewhere, someone decided that customer experience was good enough. "Dogfooding" is a sacred practice in the tech industry. Use your own products. That's it. That's all you have to do. For example, if you work for Slack - you can't use Teams for your messaging solution. You have to show people that you have faith in your own products. But it goes deeper than that. When I used to work for mobile phone networks, they asked us to spend time in call centres. It isn't enough to receive a quarterly report on customer KPIs. You have t
Het Internationaal Energie Agentschap zegt dat we zuinig aan moeten doen vanwege de oorlogen in het Midden Oosten. Ministers in Den Haag zeggen dat het niet hoeft, want er zijn hier geen tekorten (!). Doet wel erg denken aan ‘COVID blijft in Br...
📝 Het Internationaal Energie Agentschap zegt dat we zuinig aan moeten doen vanwege de oorlogen in het Midden Oosten. Ministers in Den Haag zeggen dat het niet hoeft, want er zijn hier geen tekorten (!). Doet wel erg denken aan ‘COVID blijft in Brabant’. Kennelijk een Nederlandse traditie! Maar, natuurlijk komen die tekorten ook naar ons toe, de benzine is nu al stervensduur. Maar heeft het zin om nu in de zomer slim met energie te doen?
One night, I wrote a simple tool to pick a random programming language. After shuffling a few times, I landed on Arturo. I decided to try it for fun. What’s Arturo? Best I understand, Arturo is a stack-based programming language. It’s pri...
📝 One night, I wrote a simple tool to pick a random programming language. After shuffling a few times, I landed on Arturo. I decided to try it for fun. What’s Arturo? Best I understand, Arturo is a stack-based programming language. It’s primarily maintained by Yanis Zafirópulos. They published a vision of the language in 2020. Here’s the stated goal from that post: to make something that I myself will use as an easier do-it-all scripting language, you know… automation scripts, templating, latex generation and perhaps help me a bit in the packaging of webview-based applications (think of Electron, but something far more manageable and without having to deal with Node.js and the likes). As a stickler for syntax, I bristle at this writing. That first word, “to”, should be capitalized. In fact, the whole sentence is too long and structured strangely. “latex” should be “LaTeX”. This post, while readable, could be edited for clarity and correctness. Arturo’s website, on the other hand? Flawless! Not a grammar error in sight, and a spiffy design to boot! “Simple. Expressive. Portable.” sits in a prominent <h2>. I scrolled down to see the language’s features. Here are two of the six I liked most, reformatted slightly: Elegant & Minimal: Clean, expressive syntax that gets out of your way. No semicolons, no braces, no noise. Just clear code that says exactly what it means. Learn the basics in minutes,
I wrote a web app to choose a random programming language. It’s very simple; I hestitate to even call it an “app”! The interesting part was scraping all the languages on Rosetta Code, and even that wasn’t very interesting. But...
📝 I wrote a web app to choose a random programming language. It’s very simple; I hestitate to even call it an “app”! The interesting part was scraping all the languages on Rosetta Code, and even that wasn’t very interesting. But I hope you like it! I learned about a language called Arturo this way, and wrote a short story about that experience.
Cargo ship Marine Angel navigating the Chicago River in 1953. Via History Calendar.Welcome to the reading list, a weekly roundup of news and links related to buildings, infrastructure, and industrial technology. This week: damage to the Ras Laffan LN...
📝 Cargo ship Marine Angel navigating the Chicago River in 1953. Via History Calendar.Welcome to the reading list, a weekly roundup of news and links related to buildings, infrastructure, and industrial technology. This week: damage to the Ras Laffan LNG facility, housing bubble risks, North Korea’s naval production, Bezos’ $100 billion for manufacturing automation, and more. Roughly 2/3rds of the reading list is paywalled, so for full access become a paid subscriber.War in IranRas Laffan, the world’s largest LNG facility in Qatar, was extensively damaged by an Iranian missile, and production has been completely shut down. The facility is responsible for something like 20% of the world’s supply of LNG, as well as for a third of global helium supply, which is used for semiconductor manufacturing. [Bloomberg] [CNBC]Oil shipments from the UAE’s port of Fujairah have declined by two-thirds thanks to Iranian drone attacks. [Lloyds List]To try and address rising oil prices following the closure of the Strait Hormuz, the Trump Administration has waived the Jones Act (which requires transportation between US ports to be done by US ships) for 60 days. [Reuters] It also invoked the Defense Production Act to order oil drilling to resume off the coast of California. [LA Times]China tries to entice Taiwan to reunify by offering it energy security in the face of Middle East oil disruptions. [Reuters] And BYD dealerships are seeing a surge of interest in EVs. [Blo
Dave Rupert puts words to the feeling in the air: the unspoken promise of AI is that you can automate away all the tasks and people who stand in your way. Sometimes I feel like there’s a palpable tension in the air as if we’re waiting to see whether ...
📝 Dave Rupert puts words to the feeling in the air: the unspoken promise of AI is that you can automate away all the tasks and people who stand in your way. Sometimes I feel like there’s a palpable tension in the air as if we’re waiting to see whether AI will replace designers or engineers first. Designers empowered by AI might feel those pesky nay-saying, opinionated engineers aren’t needed anymore. Engineers empowered with AI might feel like AI creates designs that are good enough for most situations. Backend engineers feel like frontend engineering is a solved problem. Frontend engineers know scaffolding a CRUD app or an entire backend API is simple fodder for the agent. Meanwhile, management cackles in their leather chairs saying “Let them fight…” It reminds me of something Paul Ford said: The most brutal fact of life is that the discipline you love and care for is utterly irrelevant without the other disciplines that you tend to despise. Ah yes, that age-old mindset where you believe your discipline is the only one that really matters. Paradoxically, the promise of AI to every discipline is that it will help bypass the tedious-but-barely-necessary tasks (and people) of the other pesky disciplines. AI whispers in our ears: “everyone else’s job is easy except yours”. But people matter. They always have. Interacting with each other is the whole point! I look forward to a future where, hopefully, decision makers realize: “Shit! The best products come from teams of people acros
This series of articles chronicles the history, both real and pseudo, behind Gabriel Knight 3: Blood of the Sacred, Blood of the Damned. Rennes-le-Château enjoyed its first watershed moment as a media phenomenon when Albert Salamon wrote his newspape...
📝 This series of articles chronicles the history, both real and pseudo, behind Gabriel Knight 3: Blood of the Sacred, Blood of the Damned. Rennes-le-Château enjoyed its first watershed moment as a media phenomenon when Albert Salamon wrote his newspaper articles in 1956. Its second came when a documentary about the village was aired on French television in 1961. And its third arrived in 1967, when the first of the eventual hundreds of books that would be written about François-Bérenger Saunière and matters adjacent was published in France. The book was initially entitled L’Or de Rennes, ou la Vie Insolite de Bérenger Saunière (“The Gold of Rennes, or the Strange Life of Bérenger Saunière”), then republished under the more sensationalized title Le Trésor Maudit de Rennes-le-Château (“The Cursed Treasure of Rennes-le-Château”). By whatever name, it proved very, very popular in France, elevating the story’s profile enormously and also changing its personality in some quite fundamental ways. Gérard de Sède. The author of the book was Gérard de Sède, one of a succession of mercenary raconteurs who have been hanging about Rennes-le-Château ever since Noël Corbu drove up the hill for the first time; such men make wonderfully entertaining dinner guests, but before you bid them farewell you might be well-advised to check their pockets for any stray pieces of your good cutlery that might have fallen into them. Born in 1921, Sède had, by his own account
I hear from a lot of people that are filled with bilious fury about the tech industry, but few companies have pissed off the world more than Adobe.As the foremost monopolist in software, web and graphic design, Adobe has created one of the single-mos...
📝 I hear from a lot of people that are filled with bilious fury about the tech industry, but few companies have pissed off the world more than Adobe.As the foremost monopolist in software, web and graphic design, Adobe has created one of the single-most abusive, usurious freakshows in capitalist history, trapping users in endless, punishing subscriptions to software they need that only ever seems to get worse.In the Department of Justice’s recently-settled case against Adobe, it was revealed that early termination fees for its annual subscriptions amounted to 50% of the remaining balance on the customer’s subscription, with one unnamed Adobe executives referring to these fees as “a bit like heroin for Adobe,” adding that there [was] “...absolutely no way to kill off ETF or talk about it more obviously [without] taking a big business hit.” Let me explain how loathsome Adobe’s business model truly is. The below is a screenshot from Adobe’s website from Wednesday March 18 2026.One might read this and think “wow, $34.99 a month, what a deal!” and immediately sign up without clicking on “view terms,” which reveals that after three months the subscription cost becomes $69.99 a month, and that this “monthly” subscription is a year-long contract. Adobe deliberately hid (and I’d argue still hides!) its early termination fees behind “inconspicuous hyperlink
We begin the episode with the absolutely ingenious and surprising way in which Kepler discovered the laws of planetary motion.People sometimes say that AI will make especially fast progress at scientific discovery because of tight verification loops....
📝 We begin the episode with the absolutely ingenious and surprising way in which Kepler discovered the laws of planetary motion.People sometimes say that AI will make especially fast progress at scientific discovery because of tight verification loops.But the story of how we discovered the shape of our solar system shows how the verification loop for correct ideas can be decades (or even millennia) long.During this time, what we know today as the better theory can often actually make worse predictions (Copernicus's model of circular orbits around the sun was actually less accurate than Ptolemy's geocentric model).And the reasons it survives this epistemic hell is some mixture of judgment and heuristics that we don’t even understand well enough to actually articulate, much less codify into an RL loop.Hope you enjoy!Watch on YouTube; listen on Apple Podcasts or Spotify.SponsorsJane Street loves challenging my audience with different creative puzzles. One of my listeners, Shawn, solved Jane Street’s ResNet challenge and posted a great walk-through on X. If you want to try one of these puzzles yourself, there’s one live now at janestreet.com/dwarkesh.Labelbox can get you rubric-based evals, no matter your domain. These rubrics allow you to give your model feedback on all the dimensions you care about, so you can train how it thinks, not just what it thinks. Whatever you’re focused on—math, physics, finance, psychology or something else—Labelbox c
Our survey of stack limit checking wraps up with arm64, also known as AArch64. The stack limit checking takes two forms, one simple version for pure arm64 processes, and a more complex version for Arm64EC. I’m going to look at the simple versio...
📝 Our survey of stack limit checking wraps up with arm64, also known as AArch64. The stack limit checking takes two forms, one simple version for pure arm64 processes, and a more complex version for Arm64EC. I’m going to look at the simple version. The complex version differs in that it has to check whether the code is running on the native arm64 stack or the emulation stack before calculating the stack limit. That part isn’t all that interesting. ; on entry, x15 is the number of paragraphs to allocate ; (bytes divided by 16) ; on exit, stack has been validated (but not adjusted) ; modifies x16, x17 chkstk: subs x16, sp, x15, lsl #4 ; x16 = sp - x15 * 16 ; x16 = desired new stack pointer csello x16, xzr, x16 ; clamp to 0 on underflow mov x17, sp and x17, x17, #-PAGE_SIZE ; round down to nearest page and x16, x16, #-PAGE_SIZE ; round down to nearest page cmp x16, x17 ; on the same page? beq done ; Y: nothing to do probe: sub x17, x17, #PAGE_SIZE ; move to next page¹ ldr xzr, [x17] ; probe cmp x17, x16 ; done? bne probe ; N: keep going done: ret The inbound value in x15 is the number of bytes desired divided by 16. Since the arm64 stack must be kept 16-byte aligned, we know that the division by 16 will not produce a remainder. Passing the amount in paragraphs expands the number of bytes expressible in a single constant load from 0xFFF0 to 0x0FFF0 (via the movz instruction), allowing convenient allocation of stack frames up to just shy of a megabyte in size. Since the
Many years ago, someone tried to get me into cryptocurrencies. "They're the future of money!" they said. I replied saying that I'd rather wait until they were more useful, less volatile, easier to use, and utterly reliable. "You don't want to get lef...
📝 Many years ago, someone tried to get me into cryptocurrencies. "They're the future of money!" they said. I replied saying that I'd rather wait until they were more useful, less volatile, easier to use, and utterly reliable. "You don't want to get left behind, do you?" They countered. That struck me as a bizarre sentiment. What is there to be left behind from? If BitCoin (or whatever) is going to liberate us all from economic drudgery, what's the point of "getting in early"? It'll still be there tomorrow and I can join the journey whenever it is sensible for me. Part of the crypto grift was telling people to "Have Fun Staying Poor". That weaponisation of FOMO was an insidious way to get people to drop their scepticism. I feel the same way about the current crop of AI tools. I've tried a bunch of them. Some are good. Most are a bit shit. Few are useful to me as they are now. I'm utterly content to wait until their hype has been realised. Why should I invest in learning the equivalent of WordStar for DOS when Google Docs is coming any-day-now? If this tech is as amazing as you say it is, I'll be able to pick it up and become productive on a timescale of my choosing not yours. I didn't use Git when it first came out. Once it was stable and jobs began demanding it, I picked it up. Might I be 7% more effective if I'd suffered through the early years? Maybe. But so what? I could just as easily have wasted my time learning something which never took off. I wrote my MSc on The Metaver
If you only listen to spokespersons for AI companies, you'll have a skewed view of how AI is actually being integrated into the workplace. You probably don't need to convince a developer to include it in their workflow, but you also can't dictate how...
📝 If you only listen to spokespersons for AI companies, you'll have a skewed view of how AI is actually being integrated into the workplace. You probably don't need to convince a developer to include it in their workflow, but you also can't dictate how they do so. Whenever I sit next to another developer during pair programming, I can't help but feel frustrated by their setup. But I don't complain, because they'd be just as annoyed with mine. The beauty of dev work is that all that matters is the output. If you use a boilerplate generator like Create React App, few will complain. If you use AI to generate the same code, as long as it works, no one will complain either. If the code is crafted with your own wetware, no one will be the wiser. Developers will use any tool at their disposal to increase their own productivity. But what happens when that thousand-dollar-per-developer-per-month subscription starts to feel expensive? What happens when managers expect a tenfold return on investment, yet sprint velocity doesn't budge? On one end, new metrics are created to track developers' use of the tool. Which, in my experience, are highly inaccurate and vary wildly. On the other hand, companies are using AI as justification for laying off workers. So which metric is to be trusted? AI isn't simply a solution in search of a problem. It's quite useful. One person will tell you it's great for writing tests, another will praise it for writing utility functions, and another will use it to b
On March 20, 1996, Orchid Technologies announced the Orchid Righteous 3D, the first consumer graphics card based on 3Dfx technology. It retailed for $299, achieved FCC certification July 24, 1996, and reached retail shelves October 6, 1996, beating D...
📝 On March 20, 1996, Orchid Technologies announced the Orchid Righteous 3D, the first consumer graphics card based on 3Dfx technology. It retailed for $299, achieved FCC certification July 24, 1996, and reached retail shelves October 6, 1996, beating Diamond Multimedia’s The post The first 3Dfx card: Orchid Righteous 3D appeared first on The Silicon Underground.