|<<>>|25 of 289 Show listMobile Mode

Links and Notes for November 28th, 2025

Published by marco on

Updated by marco on

Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

Public Policy & Politics

That Time The US Coup’ed Australia by Lee Camp (Substack)

“Essentially the CIA used a bureaucratic nuclear option to subvert democracy in an allied country and get Whitlam out of their way. If they hadn’t possessed this unheard-of option, who knows whether they would’ve resorted to more intense measures — Ones that go “bang”. Gough Whitlam was not even exceedingly left-wing. He wasn’t calling for redistribution of wealth or an end to capitalism. Yet clearly all one needs to do to be coup’ed by the US/UK imperial powers is turn your back on their foreign policy of endless war and try to reclaim your country’s sovereignty.


Trump Declares Closure of Venezuela’s Airspace by Dave DeCamp (Scheer Post)

““To all Airlines, Pilots, Drug Dealers, and Human Traffickers, please consider THE AIRSPACE ABOVE AND SURROUNDING VENEZUELA TO BE CLOSED IN ITS ENTIRETY,” the president wrote on Truth Social.

“It’s unclear if the declaration means that the US will impose a no-fly zone on Venezuela, which would be an act of war. Such a step or any military strikes on Venezuela would be illegal without congressional authorization, per the US Constitution.

Not a single instance of U.S. state violence in the last 80 years has had congressional approval. That means that it has all been illegal. This legal nuance doesn’t make any difference to the dozens of millions of people that the U.S. has killed. The only difference now is that the POTUS now declares war on his own personal web site.


In pardon of narco trafficker, Trump destroys his own case for war by Kelley Beaucar Vlahos (Responsible Statecraft)

The title is already wrong because it buys into the notion that Trump’s case for war with Venezuela was based on the drug trade. I know that’s what he gave as the reason but it’s not the real reason.

You see, Donald Trump and everyone surrounding him lies for personal advantage. The only reason they do any of the myriad awful things that they do is that they think it will bring them personal advantage, power, wealth, or a combination thereof.

I’m not sure whether you’ve noticed that.

A corollary of that is that they can’t be hypocrites because they don’t really believe in anything. If they were to ever do anything that benefitted others while either not benefitting themselves, or that caused them to lose wealth, power, or advantage (or a combination thereof), then that could be construed as hypocritical because that would run counter to the only perceivable principle in anything they’ve done until now.

When Trump pardons a convicted drug dealer so that he can return to power as president of one country, and accuses another of dealing drugs with no evidence as a casus belli against another country, then that’s not hypocrisy: it’s business as usual.


The Craziest Thing In The World Is That We Could End Poverty, But We Don’t by Caitlin Johnstone (Substack)

“It’s the craziest thing in the world that we already have the technological ability to provide a decent standard of living for everyone on earth, but it doesn’t happen because it’s not profitable. We attained the greatest scientific achievement of all time and then did nothing with it. Our society is completely uninterested in it because capitalism is completely uninterested in it.

“It’s just so insane how this doesn’t sit front and center in our attention all the time. There are people dying of starvation, exposure and preventable illnesses every single day for no good reason. Humanity became more than capable of ensuring that this never happened to anyone ever again, and just rode right past that stunning moment in history without even glancing up from its smartphone.”

“[…] I would argue that the ability to eliminate poverty and needless human suffering is a far more significant development than flight or the internet. But because it doesn’t generate value for shareholders, we cruised right past it going “Let’s make a chatbot that can generate an Alvin and the Chipmunks version of any song!””
Capitalism has no wisdom. It will start wars to generate profit. It will have impoverished populations toiling in mines and sweatshops for pennies in order to generate profit. It will burn up critical drinking water supplies for AI data centers in order to generate profit. It will cut down the last acre of old-growth rainforest in order to generate profit. It will pollute the air, fill the oceans with plastic and kill all the insects if offloading the cost of industry onto the ecosystem helps generate profit.
“[…] it doesn’t have to be this way. There is nothing inscribed upon the fabric of the universe which says that we need to live under a system which causes us to feed our biosphere into the woodchipper so that billionaires can become trillionaires. Nowhere is it written in adamantine that that the many must always toil and suffer for the benefit of the few. Things are the way they are because of systems that were put in place by human beings, and human beings can replace those systems with different ones.”


Thanksgiving – History They Didn’t Teach You | Office Hours by Dr. Roy Casagranda (YouTube)

“00:00:00 Opening & Childhood Thanksgiving Myths
00:03:10 Who the Pilgrims Really Were
00:07:20 Jamestown Story, Tobacco & Colonial Violence
00:10:00 The Mayflower Mislanding in Massachusetts
00:14:00 Squanto, Prior English Contact & Survival
00:17:00 Turkey Origins & Early Food Traditions
00:19:35 Puritans, Calvinism & Growing Tensions
00:23:45 Conversion, “Praying Towns,” and Cultural Breakdown
00:30:30 Poisoning of Alexander & Rising Conflict
00:33:14 Mythmaking, National Identity & Thanksgiving
00:37:10 Modern Thanksgiving: Football, Black Friday & Nostalgia
00:41:25 Gratitude vs. Historical Reality
00:42:16 Reconciling America’s Past
00:52:00 Privilege, Identity & Generational Responsibility
01:02:00 Modern Native Issues, Legal Barriers & Paths Forward
01:11:10 Final Reflections on Gratitude & Community”

At about 33:30,

“The United States has a problem because its stories are so horribly unethical. Like, you know, what we did to the Native American population and then what we did to the the Africans that we bring over as slaves. I don’t see how that’s any different than what Hitler did to Poland and the Ukraine and Russia and and you know, so I’m trying to figure out in my mind, okay, if Hitler was a bad guy, then how are we not a bad guy? And the only thing I can figure is Hitler killed white people and we killed brown and black people. And so that makes it okay for us, but it was bad for Hitler because literally 99% of Hitler’s victims were were white.”

At about 45:00,

“At some level, I think we’re stuck and that’s one of the reasons why we’ve seen the rise of the the right in the United States, is there’s a percentage of the population that just doesn’t want to deal with the fact that their great-grandparents were just freaking evil.

“There’s no two ways to put it, right? And you might not be evil, but that doesn’t mean your great-grandparents didn’t do something really freaking nasty. Like, imagine Hitler had won World War II and you grew up in what used to be Ukraine, but now has been turned into a German colony and probably renamed. And the native Ukrainian population was turned into a, you know, basically a slave population that’s farming. And you realize, oh my god, I all the wealth I’ve inherited, all the privilege I’ve inherited, all the benefits, the land I live on was procured through genocide. How do you reconcile that in your mind? How do you make that make sense?

“And a good portion of the population is going to go flying to the right because the right offers such a simplistic view of the world. Such a, you know, like, we had God on our side. We were doing a right thing. We were making the land useful. The Native Americans didn’t—you know, they fought each other too. We were just another group of people who showed up, as opposed to really seeing what happened, which was we were a white horde in the same way the Mongols were a horde.

“We overwhelmed the place numerically and with military power and we trampled and plundered just like the Mongols did to the Middle East and Russia and you know like, we don’t see it that way. And we see it as this sort of heroic like, oh, it was us against the frontier. And uh what do you mean ‘us against the front?’ What is the frontier? Well, the frontier was the American population. We’ve couched it as if it was us against trees and us against mountains.

“And you know, we were we were taming a land because it was this wild land. It was so wild that not far from where the Wampanoag were was the Iroquois Confederacy. And the Iroquois Confederacy was a democracy. It had six nations as members. One of them joined because as the English were genociding, they came and they there were five nations originally and they added the Tuscarora because they needed help and they literally carved out a chunk of land and they said, ‘here, this will be for you’ and the Tuscarora then got integrated into the Iroquois Confederacy.

“They had a constitution. They weren’t just a democracy. They had a constitution. They had two houses. They had two legislatures. The lower house was made up strictly of women and they came from the clans as opposed to the nations because there were six nations and—I don’t remember how many clans—I don’t want to guess. And the women legislators made all the domestic decisions. So, the economic decisions, the decisions on where people should live, and how they should live, those types of choices were made by that legislature.

“And then that legislature voted for the Senate or their equivalent of the Senate. And it was made up of 50 members and they were all men and the men were in charge of international relations. And the way the Iroquois saw it was, the men should be because they’re the ones who are going to go off to war and fight. So if the international relations fall apart, they’re the ones who are going to pay the price, so they need to be in charge of it.

“And they had this elegant system that was anything but savage. It was this brilliant and you know, they were the most in many ways the most developed of the Native American populations in that area. But all of them were these elegant civilizations. They were civilizations. They had laws. They had farming. And one of the great twists in the United States that Americans tell themselves, is one of the reasons it was okay to do this is the Native Americans didn’t know how to farm. So, they didn’t know how to use the land. And so, we came and we we taught them farming and we turned the land into—and you’re like, dude, you can hold the pilgrim story and the fact that Native Americans farm in your head at the same time and it makes sense. You’ve never noticed that the two contradict each other?


Roaming Charges: Kill, Kill Again, Kill Them All by Jeffrey St. Clair (CounterPunch)

The double-tap strikes are appalling and illegal, but Hegseth is merely following the bloody path Barack Obama blazed. Obama’s drone assassination team even had a name for wounded survivors they would target for a second kill strike: squirters. According to David Shedd, Obama’s former acting director of the Defense Intelligence Agency.”
“We used double-taps all the time. You would get the initial signature off of a target that’s been hit and if you saw that they ‘squirted’ and were injured … you hit them again.” Shedd told Washington Post columnist Mark Thyssen: “There was often a second predator ready to go … that was fully expected to be used if you didn’t have a 100 percent coming out of the first hit — and maybe a third hit…It was done routinely.”
IDF Press Release: “The Air Force eliminated two suspects this morning in the southern Gaza Strip who crossed the yellow line, carried out suspicious activities… and approached the forces.” The two “suspects” were 8 and 11…

 Palestinian terrorists − now thankfully eliminated

NBC News dutifully reported this as:

 Eliminating child terrorists tests but does not break a ceasefire

It depends on how you look at it, though., At least those kids didn’t have to starve to death. It’s like the IDF was doing them a favor by nipping things in the bud.


“From 2018-2024, Delta Airlines got a $375 million tax refund, meaning the world’s richest airline paid a negative five percent tax rate, according to reporting by Americans for Tax Fairness.”
“The WSJ reports that since 2005, real estate developers and private equity interests in New York City have converted nearly 30 million square feet of office space into residential living, nearly all of it unaffordable to the vast majority of New Yorkers…

“Greed is good, again! Trump pardoned another white collar criminal this week, David Gentile, who had been found guilty for his role in a $1.6 billion scheme that defrauded thousands of investors.

“[…]

Gentile ripped off 10,000 people….the initial 7-year sentence was light for a crime that sent Bernie Madoff to prison for life. Under Trump’s pardon, he won’t even have to pay fines or restitution.

“ Tarek Mansour, CEO and co-founder of Kalshi, a prediction market that promotes betting on real-world events, said the company’s long-term goal “is to financialize everything and create a tradable asset out of any difference in opinion.””

This is the exact kind of mindset that succeeds in this sick, sick society. it’s not just the U.S., though. Europeans (and Swiss) are sadly just as susceptible to this inhuman attitude.


Citizenship Requirements to Change For Millions of Americans Under New Bill by Khaleda Rahman (Newsweek)

“The “Exclusive Citizenship Act of 2025” would establish that citizens of the United States “shall owe sole and exclusive allegiance to the United States,” according to a text of the bill.”

Newsweek didn’t mention it, but I’m assuming that an exemption for Israel would be built in.

Journalism & Media

Julian Assange speaks about AI controlled Facebook propaganda by TIK TOK Dance (YouTube)

Julian Assange predicts our world now by describing the plot of Tomorrow Never Dies. He makes very interesting points. The moderator is a bit adrift but, other than talking over a brief Slavoj Žižek answer, she stayed more-or-less silent, letting Assange speak.


Aaron Maté on Liberalism’s Contradictions: Russia, Israel, and U.S. Hegemony (Scheer Post / IAI)

This is a 38-minute video of a wide-ranging interview with the clever, well-read, well-spoken, and eminently moral journalist.


The New Aesthetics of Fascism by Ben Hoerman (YouTube)

I liked the second half much better than the first. The patriarchy to groyper to genocide-celebrater pipeline is real, of course. Some of the targets seemed to be a bit too low-hanging, though? A bit “straw man”? I know that a lot of people believe this kind of stuff but I’m more cautious about getting sucked into arguing with idiots online. The next step is usually feeling smugly superior, which is a bit hollow when you’re feeling superior to a moron with moronic arguments and immoral believes. Arguing with bad-faith people drags you down to the level of the pig, to utterly abuse that metaphor.

Labor

Conversation with a Centrist by Christopher Horner (3QuarksDaily)

“[…] the role of ideology in modern society is to mobilise fantasy in certain ways. Here media does play a role. Collective fantasies about problems with fantasy solutions to fix them. These ‘solutions’ – which often intensify feelings of righteous anger – provide a kind of relief or enjoyment: ‘these [insert scapegoat here] is why things are so crap’ – and a sense of meaning and purpose in a landscape that has none.

So, they are stupid.

“No: they are adrift. And you aren’t devoid of fantasy, either: fantasy about common-sense, about getting back to ‘normal’ after Trump goes, and so on. And the working of capitalism, voting repeatedly for centrist parties who do the bidding of the billionaires and not voters, who leave things as they are.

Won’t raising taxes on the richest just lead to them leaving?

“That’s a much-cited objection. But how would an under taxed landowner like the Duke of Westminster, who owns a huge part of London’s real estate take that with him? Assets like that aren’t a moveable feast. Still, I do accept that the ‘let’s tax a bit more’ policy isn’t sufficient. And there might be capital flight. Much of the wealth needs to be tackled not after it reaches the pockets of the billionaires but before. Amazon, Walmart, Berkshire Hathaway, etc are huge international organisations. Vampire-like, they have their teeth in value creation across the planet. They suck it up, and avoid tax through multiple dodges and loopholes, many of which were crafted by obedient legislators. Here I’m thinking of the very big corporations not ‘mom and pop’ stores. Assets attract investment because investors expect future profits, which avoid taxation because they aren’t net profit going into individual oligarchs’ bank accounts. We need to be smarter – and more international – in our approach to all this.”

Oh, dear – revolutions? I don’t see that coming. That just gets you the Gulag

And Capitalism? – that got you world wars, catastrophic global warming, rocketing inequality. We must get beyond it, and saying all change is impossible because it might lead to something bad is truly a counsel of despair.

It’s more realistic and safer to stick with what we have, with some reforms to make it fairer.

“But what we have is collapsing: the centre ground is caving in. There is no ‘normal’ to go back to. It’s quite wrong to assume that realism is on the side of the status quo. Being realistic means seeing the need for radical change before it is too late and then acting: being as radical as reality. The alternative isn’t between “what we have now” and “the Gulag”. That’s a false choice. Systemic change is very difficult -to put it very mildly -but it’s not about ‘Storming the Winter Palace’: the reform and radical change politics I advocate involve people moving beyond the obviously dysfunctional thing we call business as usual to something better.

Economy & Finance

Imagine paying for Strava (Reddit)

This was posted into a cycling forum, where its original intent was subverted to make a joke about people paying for premium memberships on a sports social-media site. the original intent is very much a depiction of the economy as she is.

 Keep Pedaling


The “As long as I’ve got mine.” attitude is a reason problems don’t get solved in America. (Reddit)

 Become the oppressor

“Nobody is trying to fix the problems we have in this country. Everyone is trying to make enough money so the problems don’t apply to them anymore.”


On Alyssa Battistoni’s Free Gifts by Corey Robin

“It has given me all sorts of new ways to think about the connections between how we treat the environment and how we treat the world of childcare, eldercare, and the household; between economic accounts of negative externalities and Baumol’s cost disease; Marx’s view of nature; and more. It’s a model of what political theory should be, and a sign of its renaissance in the hands of a new generation of scholars.”
“To ethicists and environmentalists, who think it is immoral to put a price on toxic waste or to trade in pollution rights, Battistoni argues that waste and pollution are parts of production and exchange. They’re costs, like wages or rent. The question is how to price those costs and who should pay them. If the price is too high, maybe that’s telling us something we need to change about how we organize the economy.”

Wasn’t that obvious? The whole point of the system we have now is to externalize all costs and internalize all profits. No-one is seriously arguing that this isn’t happening; they’re just trying as hard as they can to avoid having those costs redound to them.

Under capitalism, value depends upon increases in the productivity of labor. Whether achieved through technology or management, increases in labor productivity decrease the number of workers. Capitalists will always be drawn to industries where they can increase labor productivity or decrease labor’s numbers and thereby increase profit. No matter how hard capitalists try, activities that depend intensively on physical and biological processes—such as agriculture or social reproduction—are not as amenable to increases in labor productivity or decreases in the number of workers as are other activities. The twin force of these limits—on increases in productivity and decreases in labor—means that nature and social reproduction will be systematically devalued by capital.
Since the Greeks, people have obsessed over what economists call the paradox of value: things that are scarce but useless are expensive; things that are plentiful but vital are cheap. Plato cites Pindar, the Greek poet, to say, “It is the rare thing…which is the precious one, and water is cheapest, even though…it is best.” Pufendorf cites the Greco-Roman skeptic Sextus Empiricus: “Those things that are scarce are valued: those that grow among us and are everywhere to be had, are quite otherwise. If Water were difficult to be met with, how much more valuable would it be, than the things we most value now? Or, if Gold lay in the Streets, as common as Stones, who, do you think, would value it, or lock it up?” Grotius cites Plutarch, Ovid, and Virgil to similar effect, even describing water as a “public gift.”
“While Ricardo thinks that nature’s gifts can be free, they’re only free in the sense that Battistoni means it in a particular circumstance: where those gifts are plentiful and of equal quality. That circumstance arises in the early days of society’s development. As populations get bigger, society is pushed to farm more marginal land. Marginal lands require more labor, which drives up the value, and thus the price, of the products of that labor. Through no effort of their own, the owners of the original, more fertile lands benefit from the higher value and the higher price of that product farmed on the marginal lands. That benefit, from higher prices, comes back to the owner in the form of rent.
“I think is the darker implication of Ricardo’s argument. As much as scarcity is a product of population growth, it’s also created by ownership. When nature is owned and its gifts are unequally distributed, scarcity is created, and so is rent. People are now forced to pay for benefits that they previously enjoyed for free.”
“Battistoni argues that thus far, it’s been hard to get capital to attach a price to things like clean air or clean water because there’s been little to no profit, relative to other investments, to be gained from them. But Ricardo gives us reasons to think that needn’t remain true. There are scenarios in which capital could find itself in a similar position to the rentier landlord. In a world of ever more polluted land, air, and water, fertile land, fresh water, and clean air become scarce and thus massive sources of income and wealth, garnered not as productivity- or investment-based profit but as rents born of scarcity. I don’t [think] this Ricardian story requires Battistoni to give up her theory. It just makes her case for collective ownership of the commons more powerful.


Leave the Gold in the Ground by Matt Levine (Bloomberg)

“We talked once about some nickel that JPMorgan Chase & Co. owned in one of those warehouses, nickel that turned out, when kicked, to be bags of rocks. Until someone kicked it, it functioned perfectly well as (abstract) nickel: JPMorgan’s commodities trades were just as good as everyone else’s, even though the underlying nickel was actually rocks.
“If you have a certain type of mind, or if you own a marginal gold mine, you might get to thinking that it is a bit wasteful — and environmentally destructive — to dig gold ore out of the ground, refine the ore into gold, form it into shiny bars of pure gold, and then stick it back underground so that people can trade electronic database entries entitling them to the gold. Why not leave it underground, skip all the other steps and just trade the database entries? If you own a gold mine, you can with reasonable confidence certify how much gold you have underground. That gold is there, in, uh, almost the same sense that the gold at the New York Fed is there. You could just go ahead and sell entitlements to it, without digging it up.”
““people who want digital tokens representing a certain amount of gold” is, in the abstract, a huge market. Central banks that keep gold reserves at the Fed or the Bank of England, gold futures traders, investors in gold ETFs: They all spend many billions of dollars on digital tokens representing a certain amount of gold underground. The NatBridge tokens are just, you know, gold in a slightly different part of underground.”
A theme that I think a lot about these days is that modern finance creates layers of abstraction on top of real-world activity, and sometimes those abstractions become unmoored from the reality. A share of Apple Inc. stock encapsulates all of the labor and creativity that went into inventing the iPhone and manufacturing it and selling it and building app stores and everything else; all the factories and offices and decades of decisions are all reflected in the tradeable electronic token that is a share of stock. And you can just buy Apple shares on your phone without knowing about any of that stuff. The abstractions are so successful that you might lose sight of the underlying activity. The complex apparatus that links a share of Apple stock to all of its underlying reality is largely invisible, and sometimes people forget about it. Similarly, gold is valuable in part because humans have valued shiny yellow jewelry for millennia, and in part because it is difficult and laborious to turn a parcel of rock into gold. When you trade an electronic token entitling you to some gold in a vault, the token encapsulates all of that labor and history. But maybe you don’t care; maybe you just want the token. Here’s a token.

This is a lovely, literary way of describing “speculation.”

“For now, though, not much contagion. But it would be funny if the vector of contagion from crypto to traditional finance was the shares of Fannie and Freddie. On the one hand, they are idiosyncratic quasi-meme stocks. On the other hand they are multi-trillion-dollar institutions and the backbone of US mortgage financing. If crypto prices fall, will that make it harder to get a mortgage? Probably not, no, but there is a link.
““Texas Billionaire’s Heirs Save Some Money on Taxes.” The gist was that a billionaire left an estate consisting in part of a 94% stake in an illiquid public company that he controlled, and, after his death but before the valuation date of the stock for estate tax purposes, his heirs’ charitable foundation sold chunk of stock that represented (1) a small fraction of their holdings but (2) a large multiple of the stock’s daily trading volume. This had the effect of pushing down the price and potentially saving the heirs billions of dollars taxes. I was amused and impressed, as I sometimes am by tax shenanigans.”


Debunking The Capitalism Cult — One Dumb Argument At A Time! by Lee Camp − Unredacted Tonight (YouTube)

“Iff you do not work for wages, you lose access to food, shelter, and basic security. That is not freedom; that is conditional survival.”


For the vast number of participants, the number one ingredient for being excited about a tech boom or invention is naïveté. Only with ignorance can you suspend your disbelief sufficiently.

And for the others? They’re in it for the money.

The number of people who are involved who actually want to do something good more than they want to profit from it are a rounding error.


Kedrosky Daily — Sunday Edition: China’s trade surplus nears $965B Bitcoin mining breaks even by Paul Kedrosky

“The ratio of bitcoin price to production cost has dropped to its lowest level since early 2019, approaching the break-even point, suggesting that bitcoin mining is currently barely profitable.


IBM CEO says there is ‘no way’ spending trillions on AI data centers will pay off at today’s infrastructure costs by Henry Chandonnet (Business Insider)

“On the “Decoder” podcast, Krishna concluded that there was likely “no way” these companies would make a return on their capex spending on data centers.

“Couching that his napkin math was based on today’s costs, “because anything in the future is speculative,” Kirshna said that it takes about $80 billion to fill up a one-gigawatt data center.

““Okay, that’s today’s number. So, if you are going to commit 20 to 30 gigawatts, that’s one company, that’s $1.5 trillion of capex,” he said.

“Krishna also referenced the depreciation of the AI chips inside data centers as another factor: “You’ve got to use it all in five years because at that point, you’ve got to throw it away and refill it,” he said.

“[…]

““If I look at the total commits in the world in this space, in chasing AGI, it seems to be like 100 gigawatts with these announcements,” Krishna said.

“At $80 billion each for 100 gigawatts, that sets Krishna’s price tag for computing commitments at roughly $8 trillion.

“It’s my view that there’s no way you’re going to get a return on that, because $8 trillion of capex means you need roughly $800 billion of profit just to pay for the interest,” he said.

The CEO of IBM is sounding a lot like Ed Zitron.

“Krishna clarified that he wasn’t convinced that the current set of technologies would get us to AGI, a yet to be reached technological breakthrough generally agreed to be when AI is capable of completing complex tasks better than humans. He pegged the chances of achieving [AGI] without a further technological breakthrough at 0-1%.

Several other high-profile leaders have been skeptical of the acceleration to AGI. Marc Benioff said that he was “extremely suspect” of the AGI push, analogizing it to hypnosis. Google Brain founder Andrew Ng said that AGI was “overhyped,” and Mistral CEO Arthur Mensch said that AGI was a “marketing move.””


Heaton fixes housing affordability by Reason | Heaton (YouTube)

“American housing policy is predicated on two mutually exclusive goals. We want the value of our homes to increase. My home should double in value, triple. Also, simultaneously, houses should be more affordable. […] You can’t have cheap, affordable homes and also have houses be the principal investment strategy of the entire nation. America doesn’t actually have a housing policy. We have an investment policy.”


Netflix’s $72B WB acquisition confounds the future of movie theaters, streaming by Scharon Harding (Ars Technica)

“If the deal goes through, Netflix said it will incorporate content from WB Studios, HBO Max, and HBO into Netflix. Netflix is expected to keep HBO Max available as a separate service, at least for the near term, Variety reported today. However, it’s easy to see a future where Netflix tries to push subscriptions bundling Netflix and HBO Max before consolidating the services into one product that would likely be more expensive than Netflix is today. Disney is setting the precedent with its bundles of Disney+ and the recently acquired Hulu, and by featuring a Hulu section within the Disney+ app.”

Science & Nature

True Facts: Electric Nematodes and Flying Spiders by Ze Frank (YouTube)

Today I learned that nematodes can not only jump but that they do so by using a spring-like force coiled up in their little, string-like bodies but that they also benefit from the attraction of electrostatic force generated by insects in flight.

They can’t see or hear anything but they can sense extra electrons in their environment and not only intuit that an insect is flying overhead but its approximate location. They use this information to uncoil and hurl themselves a dozen times their body length into the “orbit” of the insect to be captured by the electrostatic force it trails and thus to land on it, nestling its hungry proboscis into its victim.

Other insects and arthropods (i.e., spiders) also use electrostatic force to pull themselves into the air, sending out filaments that become electrostatically charged and drag them up like a solar sail filling with photons. Marvelous. Miraculous. Science.


Will Fewer Kids mean Fewer Scientists* by John Q (Crooked Timber)

“I’ve been seeing more and more alarmism about the idea that, on current demographic trends, the world’s population might shrink to a billion in a century or two. That distant prospect is producing lots of advocacy for policies to increase birth rates right now.

“One of the big claims is that a smaller population will reduce the rate of scientific progress I’ve criticised this in the past, pointing out that billions of young people today, particularly girls, don’t get the education they need to have any serious chance of realising their potential.”

When people make the argument that the author debunks, they’re really saying that “our system tends to only consider people of privilege for careers in science. People of privilege need a giant support system of thousands of other people, so we need to keep the population of support minions topped up.”


What is the future of intelligence? The answer could lie in the story of its evolution by Blaise Agüera y Arcas (Nature)

“Large language models can be unreliable and say dumb things, but then, so can humans. Their strengths and weaknesses are certainly different from ours. But we are running out of intelligence tests that humans can pass reliably and AI models cannot. By those benchmarks, and if we accept that intelligence is essentially computational — the view held by most computational neuroscientists — we must accept that a working ‘simulation’ of intelligence actually is intelligence. There was no profound discovery that suddenly made obviously non-intelligent machines intelligent: it did turn out to be a matter of scaling computation.

Sure, buddy. I guess this is the state of neuroscience in the U.S.‘s #1 science magazine? I wonder if any of these people will regret what they say these days, in the midst of the bubble, both financial and epistemological? No-one ever seems to pay any price for such outlandish statements like “we have solved intelligence” and “we probably don’t really care about consciousness” and that thing over there in the corner is intelligent and we made it. Is it a tool that does some useful things? Yes. Is it intelligent by any sane philosophical definition? No. Is it conscious? No. Can it be scaled to either of those? No. And yet, here we have a neuroscientist cheerily claiming that we don’t even need to scale it further because it’s already there. I’m glad he’s happy, I guess.

I’m going to be honest and admit that I stopped reading at that point because I just don’t want to spend more time reading an article like this. Lemme know if I missed anything good.

Environment & Climate Change

Bill Gates, Hurricane Melissa, And a Civilization Under Threat by Juan Cole (TomDispatch)

“The same week that U.N. officials spoke of an “apocalypse” in Jamaica, American billionaire Bill Gates expressed a certain unease about officials and scientists concerned with climate change who, he thought, were being hysterical. He urged them to chill the hell out. It was an arrogant and manipulative oracle, uttered with all the privilege of the world’s 19th richest man. A symbol of monopoly capitalism, his individual net worth rivals the annual gross domestic product of the Dominican Republic. And when he responded to Hurricane Melissa, he did so (not surprisingly, I suppose) in the narrow sectional interests of the world’s wealthiest class in Silicon Valley.
“[…] the possible decimation of civilization, as did indeed occur in parts of Jamaica recently, is quite different from the full-scale extinction of the human species, and it certainly raises questions of equity. The nearly half a million Jamaicans who will be without electricity for weeks and who may face severe food shortages because of crop damage will, of course, not be enjoying much in the way of “civilization” In the wake of Melissa.
“[…] at present, with Melissas already appearing, we have only experienced a global 1.3 degrees Celsius increase in temperature over the preindustrial norm. At issue is the quality of life and the degree of civilization that will be possible in a world where the temperature increase could be at least double that.
The high-tech world’s abrupt turn to a rabid anti-science stance is likely the result of the emergence of large language models (also known as “artificial intelligence” or AI) and a consequent new romance with the burning of fossil fuels. This development made Nvidia, which produces the graphics-processing units that run much of AI, the first $5 trillion company. That AI has not yet proven able to increase productivity or produce any measurable added value has not stopped the hype around it from driving the biggest securities bubble since the late 1990s.

Kind of: as the author stated before, billionaires are pro-billionaire more than they’re pro-science or pro-AI.

“MIT’s Noman Bashir concludes ominously, “The demand for new data centers cannot be met in a sustainable way. The pace at which companies are building new data centers means the bulk of the electricity to power them must come from fossil fuel-based power plants.””

Of course. And almost no-one cares.

“The United Nations has recently concluded that we are indeed on a path to limit (if, under the circumstances, that’s even an adequate word for it) global heating to 2.8 degrees Celsius over the preindustrial average, if the countries of the world were to continue with their current policies, which reflect, however modestly, the global consensus that grew out of the 2015 Paris Agreement on climate change. Before that milestone, the world was marching toward an increase of 3.5º Celsius or more in the average surface temperature of the globe by 2100. The reduction in that projection, achieved over a decade, certainly represents genuine progress and should be celebrated, but the one thing it should not be used for (as Gates indeed does) is as an excuse for now slacking off.
“[…] the International Energy Agency has reported that “total energy-related CO2 emissions increased by 0.8% in 2024, hitting an all-time high of 37.8 Gt [gigatons] CO2.” In other words, we’re still putting more CO2 into the atmosphere in each succeeding year. It’s only the rate of increase that has slowed somewhat.
“The oceans absorb carbon dioxide in more than one way. Carbon dioxide mixes with cold sea water to form carbonic acid, which then splits into hydrogen and bicarbonate ions and the bicarbonate tends to stay in the water. More hydrogen, however, makes the oceans more acidic, which is not good for the marine life on which so many of us depend for food.”
Some 90% of global heating is still absorbed by the world’s oceans, the surfaces of which are experiencing rapidly rising temperatures — and the hotter their surfaces get, the less carbon they can bury in Davy Jones’ locker because the water beneath them is growing ever more alkaline.”


COP30 Shows How Corporate Power Is Derailing Climate Justice by Jawad Khalid (CounterPunch)

“It is time for the people to call out this hypocrisy and expose this façade for what it is: a fiesta of corporate power, a spectacle of interests flexing muscles through Big Oil and fossil fuel lobbyists. COP30, like its predecessors, has become less a climate forum and more a playground for polluters.

“Perhaps one can draw a strong parallel with the genocide in Gaza. I say this because the system is rigged: rigged against the people, the weak, and the vulnerable. Witnessing Gaza makes one feel powerless in front of structures built by and for the powerful, at the expense of the oppressed. And I write not just because of genocides in Gaza or Sudan, but because of the enduring sense of helplessness experienced by the poor and working classes across the globe. Systems rigged by corporate and neoliberal interests have fueled record levels of inequality, leaving ordinary people to bear the brunt of stagnant wages, spiraling living costs, and environmental devastation. This is not a problem confined to the so-called Global South. The endemic inequality extends to the West as well: the richest 1% now control more wealth than 95% of humanity.

The climate crisis and economic injustice are deeply intertwined, both fueled by concentrated wealth and corporate influence.

“To expect hope or justice from a world run by billionaires is a delusion. Unless these entrenched systems of inequality are dismantled, unless wealth is distributed more equitably, climate justice like all other lofty promises of fairness will remain a mere pipedream.

Medicine & Disease

This hacker conference installed a literal antivirus monitoring system by Violet Blue (Wired)

““In general, the Michael Fowler venue has a single HVAC system, and uses Farr 30/30 filters with a rating of MERV-8,” Kawaiicon organizers explained, referencing the filtration choices in the space where the convention was held. MERV-8 is a budget-friendly choice–standard practice for homes. “The hardest part of the whole process is being limited by what the venue offers,” they explained. “The venue is older, which means less tech to control air flow, and an older HVAC system.”
“Kawaiicon’s organizers aren’t keen to pretend there were no risks to gathering in groups during ongoing outbreaks. “Masks are encouraged, but not required,” Kawaiicon’s Health and Safety page stated. “Free masks will be available at the con if you need one.” They encouraged attendees to test before coming in, and for complete accessibility for all hackers who wanted to attend, of any ability, they offered a full virtual con stream with no ticket required.”


ACIP key takeaways: What really happened and what it means for you by Katelyn Jetelina (Your Local Epidemiologist)

“In the end, the committee voted to move America back to pre-1991 by removing the universal vaccination recommendation for the Hepatitis B infant dose despite no new evidence of harm and ignoring clear benefits. They also recommended that parents ask clinicians for an antibody blood test to determine the need for subsequent doses, even though there’s no evidence that this works. This ultimately shifts the burden to clinicians and parents and abdicates the responsibility of the recommending body.

“While not the most catastrophic outcome, this change is going to have real consequences— with babies and families paying the price.

“Where this goes from here depends on what happens next. If confusion dominates headlines and clinical practice and falsehoods fill the void, the consequences will be serious. But if we respond the way we saw many do today—pushing back with clarity, authority, evidence, coordination, and grassroots strength—the harm can be contained and minimized.

Philosophy, Sociology, & Culture

”A Christmas Carol” − A Story for Buddhists, Atheists and Everyone Else by Ken MacVey (3QuarksDaily)

“Some take the story as a mere entertainment or a simple allegory to inspire Christmas cheer. But it poses a heavy question: is it possible for someone who has lived a long, narrow, nasty, obsessive, compulsive, solitary and essentially meaningless life to still live a fulfilling, worthwhile, and meaningful one? Dickens’ answer, with humor, pathos and gripping storytelling, was yes, which offers hope and direction for the rest of us however bad or sad our lives have become by our own doing. In the unfolding of his story Dickens also provides a societal critique that unfortunately still rings true today.
“A Christmas Carol showcases the plight of childhood poverty. Scrooge is also Dickens’ foil for attacking the Poor Laws passed in the1830s that set up de facto prisons to enforce workfare programs for the poor and in the process physically separated children from their parents. Unfortunately, such programs sound familiar today.”
“Like A Christmas Carol, The Death of Ivan Illich raises the hard question as to whether it is too late for someone who has spent a lifetime living a meaningless life to find meaning. It’s a story about a bourgeois Russian magistrate in the late nineteenth century, whose life has been organized around status climbing and accumulation of material goods, who comes to realize during terminal illness that his life, and the lives of his acquaintances, family members, and wife who are similarly driven, have lived inauthentic, superficial, empty and meaningless lives.
“The parallels between A Christmas Carol and The Death of Ivan Ilyich are striking. They are critiques of the relentless pursuit of money and material accumulation. They are stories about redemption and freeing oneself from obsessions and compulsions through engaged compassion and care. Both stories end with the protagonist finding joy. These are not stories about conversion. They are stories about transformation.


I was walking past an H&M the other day. As usual, their shop windows were filled with giant posters of emaciated and largely unrealistic-looking people wearing clothes that you can presumably buy there. But you clearly can’t buy food because it’s quite obvious that none of the models has eaten in days, if not weeks. They try to cover it with incredible amounts of makeup but these people are deathly ill. It is unclear how this should be attractive to consumers but we have a very, very sick society.

WHO: ‘Nothing Tastes As Good As Skinny Feels’ (The Onion)

 WHO − ‘Nothing Tastes As Good As Skinny Feels’

But I digress. This is not new, of course. We’ve been trained to believe that these are “real” people. But are they? How much is an actual person and how much is Photoshop? Do any of those people look like the people you know and interact with daily?

I thought these things after my initial reaction was to think that we can now just use AI to generate any of those posters. None of it is real. None of it was ever real. Did those people ever exist? Did you know any of them? Do they look like that in real life?

Why are they even hanging in the store? What is the purpose of having a societally accepted, attractive person wearing the clothes that that store sells. Why did that ever work? How much of everything is fake? This is all selling you a fantasy. It always has been.

So, what would be the problem with selling you a fantasy that, instead of using a heavily manipulated picture of a person who ostensibly exists and breathes, etc. but who reality does not in any way correspond to the representation in the poster, uses a picture generated by a machine of a person that doesn’t exist?

That person never existed. You didn’t know that person. Why were you taking that person‘s advice, why were you implicitly listening to their opinion about which clothes you should be wearing?

I think that this reaction against having AI build our fake world might help people discover, to learn, how much of our world was already fake, how implicitly we have agreed to simply live by our gut instincts, instincts which are manipulated by layers and layers of advertising and propaganda…and always have been.


In the Age of the Epstein Files, True Populists Should Embrace Feminism by Nicky Reid (Exile in Happy Valley)

Powerful men rape and even when they get caught red handed, they tend to get away with it. This is a fact, and it is a fact impervious to partisan bullshit. This is also why everyone should be a feminist, and every feminist should be an anarchist who opposes the patriarchal institutional power represented by the two-party shell game.

“This should include libertarians and even conservatives, and this should also include men who frequently find themselves the victims of the patriarchy as well. For too long feminism has been a boutique fetish of bourgeoise neoliberal hypocrites like Gloria Steinem and Hillary Clinton, but one in every ten rape victims are male and nearly half of all trans people like me have experienced sexual violence in our lives.

“Rape isn’t something that happens to women, it’s something that happens to the victims of powerful men and this often includes children. Nevertheless, 88% of perpetrators of sexual violence are male and sexual violence has far more to do with violence and the power that instructs it than sexuality.

But the sexuality is there. That’s the spark, at least for many. The hormonal drive does not excuse but it helps explain. I think we can agree that if men didn’t want to just stick their dicks into pretty much anything, then there would be a lot less rape. It is perhaps true that the truly powerful, the old and powerful, those who are beyond the years of being able to claim hormonal provenance for their crimes, that are very much doing it for the power, divorced almost completely of the sexual component.


the importance of not knowing by Adam Aleksic (The Etymology Nerd)

“On a whim, I asked Claude AI to recommend me a paper on the phenomenology of asking questions, and it suggested this 1992 article by the University of Tokyo professor Akihiro Yoshida. After reading the paper, I looked more into the professor.

This man has spent his entire career asking the question of what it means to ask a question. After devoting his youth to getting a PhD in educational psychology, Yoshida became interested in phenomenology in the 1970s and spent over a decade working with Japanese master teachers. Only then did he write this paper, and he continued to research questions well into his retirement: here’s a more recent paper on ambiguous expressions, and here’s one on how teachers use questions in their practice.

“In his website biography, Yoshida lists all these details about his life, and then ends with “well, you cannot tell everything in a brief semi-introduction.”

“At this point, I started crying. How dare I think I was worthy of asking the question of what it means to ask a question? I could never understand it to the depth that Yoshida clearly did, and even he admitted there is only so much that can be revealed in an answer.”


The flaw behind AI accelerationism by Etymology Nerd | Adam Aleksic (YouTube)

The whole singularity discourse started with the Jesuit priest Pierre Desardon, who theorized in the early 1900s that humanity was building toward an omega point where our evolution would ultimately unify us with God. That fatalistic idea, stemming from Catholic escatology then gets carried over to Silicon Valley tech bros, who start structuring our conversations and our technologies around the inevitability of our consciousness merging with AI, effectively creating God. Of course, this does just help them justify making a lot of money really quickly without regulations. But this is literally the logical foundation of how people like Peter Thiel think. Meaning that there are billions of dollars being poured into what is essentially an epistemic fallacy.

Technology & Engineering

Switzerland: Data Protection Officers Recommend Broad Cloud Ban for Authorities by Stefan Krempl (heise online)

“The experts cite a lack of protection due to insufficient encryption and the associated loss of control as the main reasons. Most SaaS solutions do not yet offer true end-to-end encryption that would exclude the cloud provider’s access to plaintext data. However, this is the central demand: The use is therefore only permissible if the data is encrypted by the public body itself and the cloud provider has no access to the key.”
“Privatim is particularly concerned about the US Cloud Act. This can obligate providers there to hand over customer data to national authorities, even if the data is stored in Swiss data centers. Rules of international legal assistance do not have to be observed, the controllers complain. This creates considerable legal uncertainty, especially for data subject to a duty of confidentiality.


Spring self-centering fixture of constant force by thang010146 (YouTube)

I’ve written about this guy before. I just really like the simplicity of what he does. He presents interesting mechanism via one-minute videos. He does it for the love of the game. One or two of these show up in my newsfeeds per month and it’s nice.


Techno-Realism; or, Here Is Your Jetpack by Kyle Munkittrick (3QuarksDaily)

“Unbelieving, you scrutinize the website. Your vision tunnels. You rewatch the video. You read the tweets and posts and comments. You watch the commentary clips and clips of those clips. This is real. The thing works. You click all the way through, adding one to your cart.

“You could buy a jetpack. You can buy a jetpack.

“The world tilts. You feel vertiginous. You sit down, dizzy and unmoored. How is this thing straight from the world of not just science fiction, but a bygone and lampooned era of cartoonish Flash Gordon optimism, real? It can’t be. But it is. You live in the future. Not the cynical cyberpunk future of Blade Runner or the nihilistic ruined future of The Road, but the future we had given up for lost, the future we had decided was as impossible as Narnia or Atlantis. Tomorrow is now.

Congratulations, you just had your first bout of future vertigo.

I would have said, “Congratulations, you’ve just been the target of your first scam.”

This type of thinking completely divorced from the reality that most people know. People can’t get groceries. Kindly shut the fuck up about your jetpack. Jesus. Read the room.

I would call this techno-optimism or technocratism. The author is thinking in terms that only apply to a context enjoyed by a tiny minority, a fantasy that the real world would chew up and spit out should anyone outside of this tiny minority dare to entertain it, dare to consider that it might apply to them. This is a hopelessly naive take. It is also viciously elitist.

Why is it viciously elitist? At best, it is ignorantly elitist. It might be willfully elitist. It’s possibly entitled elitist, that it, knowingly elitist but thinking that the elitism is well-placed, that the receiver is entitle to be in the elite (and that most others are not).

As William Gibson said (Quote Investigator),

“The future has arrived — it’s just not evenly distributed yet.”

Nor are there plans for it to become so.


Accepting US car standards would risk European lives, warn cities and civil society (European Transport Safety Council)

“The deal agreed over summer states that “with respect to automobiles, the United States and the European Union intend to accept and provide mutual recognition to each other’s standards.” Yet, EU vehicle safety regulations have supported a 36% reduction in European road deaths since 2010. By contrast, road deaths in the US over the same period increased 30%, with pedestrian deaths up 80% and cyclist deaths up 50%.

“Europe currently has mandatory requirements for life-saving technologies, such as pedestrian protection, automated emergency braking and lane-keeping assistance. Some of the most basic pedestrian protection requirements which have long been in place in the EU, such as deformation zones in the front of vehicles to reduce crash severity and the prohibition of sharp edges have made cars like the Tesla Cybertruck illegal to sell in Europe.”

Watch the following two videos to learn more about what they’re trying to do and what it would entail. The first video has a ton of supporting documentation and links in the description.

These Stupid Trucks are Literally Killing Us by Not Just Bikes (YouTube)

Keep these Stupid American Trucks out of Europe by Not Just Bikes (YouTube)

The U.S. is trying to force Europe (and Switzerland) to allow its stupidly large and stupidly dangerous vehicles on European (and Swiss) roads. They are strong-arming at the trade level.

At this point, the U.S. is very clearly just a mafia boss. It not only wants protection money, it also wants you to enjoy paying it. It wants you to ruin your nice society and make everything as shitty as it is in America.

There is no reason to do both. I get that there are economic arguments for paying the protection money to the U.S. If you’re in a weaker position, then you can’t risk getting the shit kicked out of you. But you can just pay the U.S. what it’s asking for but not take delivery of the trucks, right? I mean, since we’re basically in a hostage situation, why the fuck do we have to keep ourselves hostage when we’re back at home?

Does that sound weird? I don’t think so. It’s the reality for subjugated people all over the world. The church makes you buy a bible but you don’t actually have to read it. The U.S. is making you “balance the trade gap” by buying trucks but you don’t have to drive them. Like, you’re already out the money as it is, why double-down and actually fuck up your society by letting the absolute worst fucking idiots in your own society actually drive them?

The SUV problem in Switzerland is already out of hand. Our roads are narrow. Parking spaces are narrow. The fucking things don’t fit anywhere. It’s the absolute worst people who own the fucking things. It’s just another part of society where the incentives in place seem to reward the worst kind of selfish behavior.

LLMs & AI

The Current State of the Theory that GPL Propagates to AI Models Trained on GPL Code by Shuji Sado (Open Source Guy)

“[…] as of 2025, the theory that the license of the source code propagates to AI models trained on Open Source code is not seen as frequently as it was back then. Although some ardent believers in software freedom still advocate for such theories, it appears they are being overwhelmed by the benefits of AI coding, which has overwhelmingly permeated the programming field. Amidst this trend, even I sometimes succumb to the illusion that such a theory never existed in the first place. Has the theory that the license of training code propagates to such AI models been completely refuted?”

We observe copyright unless either it’s inconvenient to us, we are personally rich and powerful (or a rich and powerful company), the reward outweighs the perceived risk, or some combination of all three.

“Although the court did not recognize claims for monetary damages because the plaintiffs could not demonstrate a specific amount of damage, it determined that there were sufficient grounds for the claim for injunctive relief against the license violation itself. As a result, the plaintiffs are permitted to continue the lawsuit seeking an order prohibiting the act of Copilot reproducing others’ code without appropriate license indications.”
The plaintiffs’ claim in this lawsuit does not directly demand the release of the model itself under the GPL, but it legally pursues the point that license conditions were ignored in the process of training and output; consequently, it suggests that “if the handling does not follow the license of the training data, the act of providing the model could be illegal.” Furthermore, the court has not clearly rejected this logic at this stage and has indicated a judgment that the use of open source code is accompanied by license obligations, and providing tools that ignore this could constitute a tort subject to injunction.
“The court cited the text of the EU InfoSoc Directive that “reproduction includes copies in any form or manner, and does not need to be directly perceptible to humans,” and stated that in the spirit of this, even if the lyrics are encoded within the model’s parameters, it amounts to the creation of a reproduction. It went as far as to mention that “encoding in the form of probabilistic weights does not prevent it from being considered a copy,” showing a strong recognition that differences in technical formats cannot avoid the nature of reproduction under copyright law.
“[…] the work used as training data remains within the model and can be reproduced with a simple operation, it means the model already contains a reproduction of that work.

Yes. Encoding doesn’t (shouldn’t) matter.

“Specifically, if the model memorizes and contains GPL code fragments internally, the act of distributing or providing that model to a third party may be regarded as the distribution of a reproduction of GPL code; in that case, the act of distribution under conditions other than GPL would be evaluated as a GPL license violation. If a GPL violation is established, there would be room to argue for remedies such as injunctions and claims for damages, as well as forced GPL compliance demanding the disclosure of the entire model under the same license, just as in the case of ordinary software.”
““The Thought” states that if training is conducted with the purpose of “intentionally reproducing all or part of the creative expression of a specific work in the training data as the output of generative AI,” it is evaluated as having a concurrent purpose of enjoying the work rather than mere information analysis, and thus lacks the application of Article 30-4. As a typical example of this, “overfitting” is cited, and acts such as making a model memorize specific groups of works through additional training to cause it to output something similar to those works are judged to have a purpose of enjoyment.
“However, “the Thought” simultaneously acknowledges the possibility that, exceptionally, in cases where “the trained model is in a state of generating products with similarity to the work that was training data with high frequency,” the creative expression of the original work remains in the model, and it may be evaluated as a reproduction.
“The model merely holds statistical abstractions where text and code have been converted into weight parameters, and that itself is not a creative expression to humans at all. A “derivative work” under copyright law refers to a creation that incorporates the essential features of the expression of the original work in a form that can be directly perceived, […]”

This argument would also apply to compression algorithms and encryption, no?An mp3 or dvd can also not be directly perceived by humans. “Enjoying” the copyrighted content requires the intervention of a lot of technology.

“[…] it is a tiny fraction when viewed from the entire model, and most parts are occupied by parameters unrelated to the GPL code. There is no clear assumption shown by the GPL drafters as to whether a statistical model that may partially encapsulate information derived from GPL code can be said to be “a work containing the Program”.”

The “we stole so much shit that yours is a tiny fraction” argument. We stole it, but we’re so rich, it can hardly be considered to have been done for the benefit of personal enrichment, so was it even really stealing?

“If we ask whether the training data is the source code, the original trained GPL code itself cannot be said to be the source of the model, nor is it clear if it refers to the entire vast and heterogeneous training dataset. It is difficult to define what should be disclosed to redistribute the model under GPL compliance, and it could lead to an extreme conclusion that all code and data used for model training must be disclosed.

The “we hid what we stole so well that you know it’s there, and you can see it sometimes, but you can’t find it. Spooky and zen.

“Thus, existing GPL provisions are not designed to directly cover products like AI models, and forcing their application causes discrepancies in both text and operation.”

The “nice try but we figured out how to commercialize and benefit from the hard work you generously provided without following your silly communist license” argument. You get to feel good, while we’ll be over here getting rich off of your work.

“AI models, particularly those called large language models, basically hold huge statistical trends internally and do not store the original code or text as they are like a database. Returning a specific output for a specific input is merely generation according to a probability distribution, and it is not guaranteed that the same output as the training data is always obtained. If the model does not perform verbatim reproduction of training data except for a very small number of exceptional cases, evaluating it as “containing GPL code” within the model does not fit the technical reality.”

The argument from non-determinism is the strongest one. LLMs are slot machines.

“Regarding the whole as a reproduction based on the existence of partial memory is like claiming the whole is a reproduction of a photograph just because it contains a tiny mosaic-like fragment in an image, which is an excessive generalization.”

The “we mixed your non-fungible stolen property with myriad others so who even knows which part of the pile was yours anymore” argument. Too bad for you ‘cause we are going to get way rich from this pile in ways that you can’t prove benefit from your work but that definitely do.

“Applying all licenses to an AI model created from training data with mixed licenses is practically bankrupt, and eventually, the only thing that can be done to avoid it would be to exclude code with copyleft licenses like GPL from the training data from the start.

Yes indeed. Or compensation should be provided.

“Is such a situation really desirable for our community? The spirit of the GPL is to promote the free sharing and development of software. However, if asserting excessive propagation to AI models causes companies to avoid using GPL code, and as a result, the value held by GPL software is not utilized in the AI era, it would be putting the cart before the horse.”

Doesn’t that sound reasonable? Isn’t it just a shame that trillion-dollar businesses are building so much of their value on stuff you made and you can’t make them even acknowledge you? What a pity. Maybe if you’d had a license and lived in a society where the law applies equally to all persons, both natural and juristic, then you’d have a chance. But legal niceties of this glorious timeline we occupy mean that generosity is punished. There is no moral compunction to compensate your benefactors with so much as a thank you. In fact, saying “thank you” might open you up to legal obligations, so it’s best to just lie and pretend you either came up with it yourself or that you didn’t benefit, or whatever. Don’t worry: lying is rewarded in this timeline, so you are absolutely good to go.

The point of GPL was not to allow personal enrichment to billionaires and yet here we are. The “the thing we made from your stolen goods is even better for humanity than your contribution, so humanity will allow theft in this case” argument. Neat side effect: while your contribution was open, ours is closed. Too bad for communism. The same argument holds for GPL as people are making for AI: are we willing to kill GPL for AI? GPL has proven its worth many times over but I know that the billionaires will absolutely torch humanity’s shared belief in it for their own short-term gain.

“What is important is how to realize the “freedom of software,” which is the philosophy of open source, in the AI era; the opinion that this should be attempted through realistic means such as ensuring transparency and promoting open model development rather than extreme legal interpretations is potent, and this is something I have consistently argued as well.”

Good luck with that. That horse is out of the barn. Maybe it wanders back once the bubble pops. I wouldn’t hold my breath.

“[…] it can be said that the OSI avoids adopting the theory of license propagation to models to demand training data disclosure, and is exploring a realistic solution that first guarantees transparency and reproducibility. In principle, it could be said that the OSI denied the GPL propagation theory at the time of publishing the OSAID definition.
“[…] the FSF simultaneously states to the effect that “whether a non-free machine learning application is ethically unjust depends on the case,” mentioning that there can be “legitimate moral reasons” for not being able to publish training data (personal information) of a medical diagnosis AI, for example. In that case, it implies that although that AI is non-free, its use might be ethically permitted due to social utility. One can see an attitude of seeking a compromise between the FSF’s ideal and reality here, but in any case, there is no mistake that the FSF ultimately aims for freedom including training data.
“[…] substantially it has a strong aspect of being told as a GPL compliance problem for users (downstream developers) concerned that they bear the risk of GPL violation if Copilot’s output contains GPL code fragments. This is a caution to developers using AI coding tools rather than GPL application to the model itself, and is different from an approach forcing GPL compliance directly on model providers.
Both OSI and FSF ultimately want to make AI something open that anyone can utilize, but they are carefully assessing whether increasing the purity of legal theory in demands for full data disclosure really leads to achieving the objective.”
“Fortunately, solutions to practical problems such as the open publication of large-scale AI models, dataset cleaning methods, and automated attachment of license notices are already being explored by the open source community. Promoting such voluntary efforts and supporting them with legal frameworks as necessary will likely be the key to balancing freedom and development.


Does Gemini Show That Scaling Still Works? No. by Paul Kedrosky

This is late-stage scaling.
Capability improves, but only through massively increasing FLOPs. The marginal return per FLOP is declining quickly, not improving.
Other recent gains in the industry have come from post-training, not scaling.
o1/o3, Claude 3.5→4.x: all technique-driven improvements, not size-driven. Gemini 3 is a clean test of raw scaling—and it shows that the curve is flattening, not re-accelerating.
The narrative is backward.
Bridgewater frames this as proof “scaling still works.” The data show the opposite: scaling works only in a diminishing sense, with each gain costing non-linearly far more than the last.


Wie der neue KI-Hype unsere Infrastruktur, unsere Politik und unseren Verstand überfordert by Günther Burbach (NachDenkSeiten)

“Unternehmen warnen in ihren Pflichtberichten vor KI als Risiko, Sicherheitsforscher sehen kritische Infrastruktur verwundbarer denn je, Militärs hängen an der Satellitenverbindung eines US-Milliardärs und Parlamente verteilen Milliarden, ohne dass auch nur eine Handvoll Abgeordneter erklären könnte, wie diese Systeme konkret funktionieren. Die Frage ist nicht mehr: „Kommt KI?“. Sie ist da. Die Frage ist: Wem vertrauen wir und was passiert, wenn dieses Vertrauen enttäuscht wird?
Die meisten Bürger stehen dieser Entwicklung mit einer Mischung aus Faszination und Unbehagen gegenüber. Sie sehen Deepfakes, Chatbots und automatisierte Entscheidungen, aber niemand erklärt ihnen nachvollziehbar, wer am Ende die Verantwortung trägt. Gleichzeitig wachsen Umfragen zufolge Zweifel an der Verlässlichkeit von KI-Systemen und der Wunsch, bei wichtigen Entscheidungen Menschen statt Maschinen das letzte Wort zu überlassen.
“Die entscheidende Frage lautet also nicht: „Kann KI unser Netz stabiler machen?“ Sondern: „Wer kontrolliert die Systeme, wer haftet im Ernstfall und welche Redundanzen gibt es, wenn die KI ausfällt oder angegriffen wird?“
In dieser Lage wäre es Aufgabe der Politik, Tempo herauszunehmen, Risiken nüchtern abzuwägen und dort „Nein“ zu sagen, wo der Preis für Demokratie und Grundrechte zu hoch ist. Stattdessen dominiert ein merkwürdiger Mix aus Panik („Wir dürfen nicht abgehängt werden!“) und technischer Ahnungslosigkeit.”
Solange es keine eigenständige, öffentlich kontrollierte digitale Infrastruktur gibt, von Kommunikationsnetzen über Cloud-Ressourcen bis zu offenen KI-Modellen, bleibt jede Aufrüstung mit KI ein Risiko: für Demokratie, für Souveränität und am Ende auch für die Menschen, die im Namen der Effizienz „optimiert“ werden. Die eigentliche „Zeitenwende“ wäre nicht, noch mehr Milliarden in KI-Projekte zu pumpen, die niemand durchschaut, sondern zu sagen: Es gibt Bereiche, in denen KI nichts verloren hat. Es gibt Infrastrukturen, die redundant, analog und menschlich kontrollierbar bleiben müssen. Und es gibt eine Grenze, ab der nicht mehr die Frage zählt, wie wir „mitspielen“, sondern ob wir als Gesellschaft überhaupt noch entscheiden, nach welchen Regeln gespielt wird.


Americar: The Dinosaur Island Of Carnivorous Cars by Indrajit Samarajiva (Indica)

“American cars are becoming fossil-fuelled fossils, and America is becoming an isolated dinosaur island. The most popular American cars are not even cars, they’re trucks, and they’re barely trucks, more like luxury lorries that cost as much as a house. American trucks keep getting bigger and bigger (while the truck beds stay the same size or get smaller). This has led to an arms race that looks like a T-Rex running. Terrifying, but also lol. Trump complains that the world doesn’t buy American cars, but bro, you don’t make cars. You make World War tanks with cupholders.
So we see the hegemon of White Empire, America, behaving like a petulant child, taking all its toy trucks and going home. They would rather live in a ruin than accept the civilizing influence of the Chinese. While the rest of the world is moving to a slightly less apocalyptic future (all on a time-delay), America is rushing to apocalypse now. As America collapses in the next few years, their society may well fall apart. Indeed looking at their cars, child-shootings, and general culture, you could say it’s already begun. As a settler colony, America lacks a shared culture beyond violence and decadence, so I suppose these vehicles are suitable for them. But this is not necessarily how things need to be, and, indeed, is not the human default. Most people during times of trouble help each other out, and the natural reaction to a decline in resources is not consuming more via monster trucks. But Americans are, as discussed, not normal. Just look at their cars.

 1969 Toyota Hilux vs. 2024 Ford F-450


New Kid in the Classroom: Exploring Student Perceptions of AI Coding Assistants by Sergio Rojas-Galeano (Arxiv)

“Our findings reveal that students perceived AI tools as helpful for grasping code concepts and boosting their confidence during the initial development phase. However, a noticeable difficulty emerged when students were asked to work unaided, pointing to potential overreliance and gaps in foundational knowledge transfer. These insights highlight a critical need for new pedagogical approaches that integrate AI effectively while effectively enhancing core programming skills, rather than impersonating them.”

I’m glad that they’re adding official experimental evidence to this hypothesis but it is the completely expected result. There is no knowledge transfer. You can only learn if you already know something. You can’t learn from nothing. A non-programmer generating a page of code is like a non-Chinese-writer generating a page of Chinese text. They’re not going to learn anything just by having had it generated.


US Regime Change Interventionism Is Reliably Disastrous, And Other Notes by Caitlin Johnstone (Substack)

“If I had told you five years ago that I’d just invented a product which ends the careers of professional artists and makes it impossible to tell what’s real on the internet, would you have said I should be given billions of dollars immediately, or would you have said I should be fed to crocodiles?

“The debate about generative AI is interesting because it’s all the brilliant, creative people who value truth and the human intellect on one side and all the uncreative, intellectually sluggish people who can’t write a paragraph on the other, and the latter group is winning because they’ve got capital on their side.”


 What copilot writes it did, vs what it did

They also mentioned that the conversation immediately preceding seemed promising:

 It knew what it wanted to do, but it didn't do it

The friend who sent me this wrote afterward,

“but then it took copilot 20 minutes to get to this point, I had to ask it twice to move the web app box halfway into the frontend box

by hand it will probably take considerably less time…”

I’ve been in pair-programming sessions like that and had to beg the other person to just give up. But they were having fun trying to get it work! Like it’s a video game rather than a tool.

(I am a very old, bitter person who doesn’t know what fun is anymore.)

A follow-up was an attempt to sketch it and have Copilot clean it up.

 Sketching it for Copilot

That’s a bit better! But the SQL connection is still to the wrong box and the little box’s connection kind of just drops out of sight. It’s wonky.


AI Is still making code worse: A new CMU study confirms by Rob Bowley (Adventures In Software Development)

Their methodology was:

“Researchers at Carnegie Mellon University analysed 807 open source GitHub repositories that adopted Cursor between January 2024 and March 2025, and tracked how those projects changed through to August 2025. Adoption was identified by looking for Cursor configuration files committed to the repo.

“For comparison, the researchers built a control group of 1,380 similar GitHub repositories that didn’t adopt Cursor […].

For code quality, they used SonarQube, a widely used and well respected code analysis tool that scans code for quality and security issues. The researchers ran SonarQube monthly to track how each codebase evolved, focusing on static analysis warnings, code duplication and code complexity.

“Finally, they attempted to filter out toy or throwaway repositories by only including projects with at least 10 GitHub stars.

“ven across hundreds of real projects, and even after accounting for how much code was added, complexity increased faster in the AI-assisted repos than in the control group. The tools are contributing to the problem, not merely reflecting user behaviour.”
“It’s hard not to see a form of context collapse playing out in real time. If the public code that future models learn from is becoming more complex and less maintainable, there’s a real risk that newer models will reinforce and amplify those trends, producing even worse code over time.
“The structural problems remain, and they aren’t helped by the fact that the code these models are trained on is likely getting worse. The work of keeping code simple, maintainable and healthy still sits with the human, at least for the foreseeable future.”

Code is just like anything else beautiful. We don’t care. Most of would rather get some short-term use out of it and move on. Not many people follow the campsite rule. Look at how we treat nature. Look at how we treat each other. Look at how we treat art. Why should code be any different?

Programming

It Takes Two to Contract by Alex Kladov (Tiger Beetle)

“It’s just that you don’t really need any syntactic mechanisms to use these tools effectively, you don’t need first class support for design by contract in your language. Just write more assertions!

If you use functions, then no, you don’t need first-class structures. A type system with inheritance needs syntactic mechanisms to be wieldy.


Becoming unblockable by Sean Goedecke

The worst thing you can do is to be responsible for two urgent tasks at the same time − no matter how hard you work, one of them will always be making no progress, which is very bad. If you’ve got too many ongoing tasks at the same time, you also risk overloading yourself if one or two of them suddenly blow out. It’s famously hard to scope engineering work. In a single day, you can go from having two or three trivial tasks to having three big jobs at the same time.
I think a lot of developers are too focused on their personal “top speed” with their developer environment when everything is working great, and under-emphasize how much time they spend tweaking config, patching dotfiles, and troubleshooting in general.”
“I see a lot of engineers run into a weird thing − commonly a 403 or 400 status code from some other service − and say “oh, I’m blocked, I need this other service’s owners to investigate”. You can and should investigate yourself. This is particularly true if you’ve got access to the codebase. If you’re getting an error, go and search their codebase to see what could be causing the error. Find the logs for your request to see if there’s anything relevant there. Of course, you won’t be able to dig as deep as engineers with real domain expertise, but often it doesn’t take domain expertise to solve your particular problem.

Oh, this is absolutely true. You can make your requests to other teams nearly stupidly easy to solve when you naively ask them whether the feature you need could be added in this particular location in the source code, with a link to a URL of the source code. You can shame them into helping you out because how could they then claim that it was difficult to do when you’ve pretty much already solved it for them?

“Point Codex (or Copilot agent mode, or Claude Code, or whatever you have access to) at the codebase in question and ask “why might I be seeing this error with this specific request?” In my experience, you get the correct answer about a third of the time, which is amazing. Instead of waiting for hours or days to get help, you can spend ten minutes waiting for the agent and half an hour checking its work.

Ten minutes of waiting! And then thirty more minutes checking the work! Holy shit! That’s … not fast. And then it’s only right (useful?) 30% of the time?

The most effective engineers at are tech company typically have really strong relationships with engineers on many other different teams. That isn’t to say that they operate entirely through backchannels, just that they have personal connections they can draw on when needed.”

Can confirm as well. Staff engineer FTW. 🙌🏼


The programmers who live in Flatland by Nathan Marz (Red Planet Labs)

“Many point to “ecosystems” as the barrier, an argument that’s valid for Common Lisp but not for Clojure, which interops easily with one of the largest ecosystems in existence. So many misperceptions dominate, especially the reflexive reaction that the parentheses are “weird”. Most importantly, you almost never see these perceived costs weighed against Clojure’s huge benefits. Macros are the focus of this post, but Clojure’s approach to state and identity is also transformative. The scale of the advantages of Clojure dwarfs the scale of adoption.
“Lisp/Clojure macros derive from the uniformity of the language to enable composing the language back on itself. Logic can be run at compile-time no differently than at runtime using all the same functions and techniques.

Rust and Zig have something similar but I really have to read up on Lisp and Clojure macros more.

“The syntax tree of the language can be manipulated and transformed at will, enabling control over the semantics of code itself. The ability to manipulate compile-time so effortlessly is a new dimension of programming. This new dimension enables you to write fundamentally better code that you’ll never be able to achieve in a lower dimension.”

This is exactly the kind of thing that will only ever be a tool for advanced programmers, like people who actually grok code and how it works. Most people working in programming today are not that kind of engineer. They’re already confused by the two dimensions they have. Introducing a third dimension isn’t going to make things better. It’s going to make them worse. Marz is right that there are more developers who should be using better tools, but the leverage you can get is low because no-one understands this stuff and no-one cares that they don’t understand this stuff. They will never take the risk to try to learn it to see if it would make them better. I converse with a few developers who would try this, who are interested in going farther. Most of them, though, don’t even notice that they don’t have a rename-refactoring in their IDEs.


Options pattern in .NET: Options interfaces (Microsoft Learn)

IOptions<TOptions>:
  • Does not support:
    • Reading of configuration data after the app has started.
    • Named options
  • Is registered as a Singleton and can be injected into any service lifetime.
IOptionsSnapshot<TOptions>:
  • Is useful in scenarios where options should be recomputed on every injection resolution, in scoped or transient lifetimes. For more information, see Use IOptionsSnapshot to read updated data.
  • Is registered as Scoped and therefore can’t be injected into a Singleton service.
  • Supports named options.
IOptionsMonitor<TOptions>:
  • Is used to retrieve options and manage options notifications for TOptions instances.
  • Is registered as a Singleton and can be injected into any service lifetime.
  • Supports:
    • Change notifications
    • Named options
    • Reloadable configuration
    • Selective options invalidation (IOptionsMonitorCache<TOptions>)


I was once again asked a common problem with IOC containers. The question was as follows,

“More run time config, like boot, pull config from db, instantiate objects (sim/live) at that time.

“The best I’ve found online so far is handling this at a factory level. This seems clunky and hard to sell to the ostensibly “close to the metal” guys.

“I’d love something that consumes from appsettings.json or the like and then sets up the ISomethings nice and cleanly.”

If I’m understanding correctly, the question is “how to do you dynamically configure the IOC without using the IOC?”

I wrestled with this a lot in the past (perhaps the most relevant blog post is from 2015: Quino 2: Starting up an application, in detail).

Basically, my answer ended up being to use two IOCs.

Bootstrap IOC
The first IOC is much smaller and contains registrations for services needed to configure the Main IOC (e.g. configuration-loader, command-line-reader, fs-location-resolver, etc.)
Main IOC
Includes all registrations from the Bootstrap IOC, plus overrides that came out of the configuration, plus anything else needed for the main app.

The startup and shutdown are defined as lists of actions (discussed in Encodo’s configuration library for Quino: part III).

Actions to execute during,

  • the bootstrap phase,
  • the application phase,
  • and shutdown.

So, the application startup kind of looks like this:

  • Configure services and actions for the Bootstrap IOC and Main IOC.
    • Any singleton registered in the Bootstrap IOC is used by the main IOC as well.
  • Seal the Bootstrap IOC (i.e., get the service provider from the service collection).
  • Execute application-startup actions
    • The first few actions will be stuff like “read command line”, “read configuration”, etc.
    • These might alter the registrations in the main IOC and might add or modify actions to execute.
    • Any attempt to alter a registration in the bootstrap IOC results in an error.
    • Modifying an action in the list before the position in the list of actions where the app has already gotten to will have no effect.
    • At some point, the “bootstrap” actions are finished, and an action executes that “seals” the main IOC from modification.
    • Now we’re in the “classic” app startup.
  • Run the main actions.
  • Run the event loop or application logic (e.g, fixed handling for command-line parameters).
  • Run the shutdown actions.

There’s more documentation but it’s no longer available because Encodo has taken down all public documentation … and we never published the source code as open source. 🤷

There was a follow-up question that was more about resolving some reasonable hesitation on the part of some team members for using an IOC—reasonable because they’d been hurt in the past by non-pragmatic and overly magical solutions. I wrote,

I think you can both agree that DI is a good thing. That is, “dependency injection” and “inversion of control” as concepts are good things.

  • IOC is the concept.[3]
  • DI is a way of implementing IOC. (Usually rounded up to be equivalent.)
  • An IOC Container is a helper that stitches the component graph together.

The service provider

  • ✅ Can also be helpful to implement very generalized factories.
  • ✅ Is helpful for keeping your code less fragile when constructors are refactored.
  • ⚠️ Can make it unclear which constructors are called.

The white paper I wrote six years ago has an extended example (in Swift, of all things): Encodo White Papers: DI, IOC and Containers (2019).

In that paper, most of the initial phases of implementing DI do not use a container. You can do DI without a container—it just gets kind of tedious and wordy. As noted in the second mail I sent, let the IOC container do the brain-dead stuff for you.

When I look at [the code my colleague sent], I see a lot of opportunity to improve things with better DI, even if you’re not using a container. The class absolutely breaks IOC and makes testing it completely unclear.

I think that the guts of the problem with that code, though, would be more than adequately addressed with taking the two-IOC approach (bootstrap and main) that I described in the other email I sent. In this case, the existing code could be registered in the bootstrap IOC and would be in charge of configuring the main IOC during an early phase before the main IOC has been “sealed” (i.e., a service provider created from the service collection).

You see? The solution to configuration isn’t “no IOC”; it’s “two IOCs!”

There are solutions here; we all already agree we want an elegant solution; now we’re just discussing implementation.


[3]

A quick introduction is that its definition of “inversion of control” is 100% accurate. That is, the control over who gets to decide which implementation backs a given interface is no longer with the consumer of the interface but the provider.

A main reason for doing wanting this is to improve testability. A lovely side-effect is that it makes it so much easier not only to reason about your system, but to repurpose parts of it.

Suppose you have the following code:

class EmailClient 
{
    void Send(Email email) { … }
}

class SubscriptionManager
{
    void Notify()
    {
        var client = new EmailClient();
        foreach (var email in _subscriptions.Select(CreateEmail))
        {
            client.Send(email);
        }
    }

    Email CreateEmail(Subscription subscription) { … }
}

Now, suppose I’d like to test this code. I can’t test it without an email server configured because the EmailClient is hard-coded. If I invert control, though, I can pass that dependency in to the SubscriptionManager. One way to pass the dependency is directly into the method, like this:

class SubscriptionManager
{
    void Notify(EmailClient client)
    {
        foreach (var email in _subscriptions.Select(CreateEmail))
        {
            client.Send(email);
        }
    }

    Email CreateEmail(Subscription subscription) { … }
}

Is this really solving anything, though? No. The callee is still in control of the type because the type of the parameter is a specific class. The caller has no choice but to pass in an EmailClient, which will try to sent mails to an external server over a network.

In order to support IOC, the callee needs to abstract its requirement. In C#, this is an interface.

interface IEmailClient
{
    void Send(Email email);
}

class EmailClient : IEmailClient
{
    public void Send(Email email) { … }
}

class SubscriptionManager
{
    void Notify(IEmailClient client)
    {
        foreach (var email in _subscriptions.Select(CreateEmail))
        {
            client.Send(email);
        }
    }

    Email CreateEmail(Subscription subscription) { … }
}

We’re done. We’ve implemented inversion of control. The caller now controls the concrete type.

We are also using dependeny injection but of a very manual kind: the caller is expected to provide the email-sending mechanism. For all kinds of reasons, this can be inconvenient and can muddy otherwise legible code.

Therefore, a common practice is to inject dependencies like this through the constructor.

class SubscriptionManager
{
    private readonly IEmailClient _client;

    public SubscriptionManager(IEmailClient client)
    {
        _client = client ?? throw new ArgumentNullException(nameof(client));
    }
    
    void Notify()
    {
        foreach (var email in _subscriptions.Select(CreateEmail))
        {
            _client.Send(email);
        }
    }

    Email CreateEmail(Subscription subscription) { … }
}

There is subtle difference in this version: the code that calls Notify() no longer has to know anything about the dependency, thus better decoupling the SubscriptionManager interface from its consumers. The SubscriptionManager declares its dependencies in the constructor, which makes good use of that language construct.

At this point, we can still construct the SubscriptionManager manually, passing in the concrete type for IEmailClient but we can now also consider using an IOC container (an IServiceCollection in .NET) to register mappings and then use a service provider (IServiceProvider in .NET) to request instances. In IOC parlance, you would generally only request the root component and then call a method on it to get the whole ball rolling.

The examples in the article acknowledge that the “get the whole ball rolling” part in a nontrivial application almost always has several “actions” to execute during “startup” and considers the application to be a service collection, a list of startup actions, a list of shutdown actions, and a service provider.


🆗 If .NET brewed beer… by dotnet | Shaun Lawrence (YouTube)

He starts with a 10-minute presentation on his home-brewing setup, finally getting to the point where he discusses the embedded device for which he used .NET: A Meadow F7v2 DevModule. For the next ten minutes, he just kind of muddles about, showing the API surface of the meadow library.

After showing how to integrate a temperature sensor, he shows how to integrate PID control (Proportional-Integral-Derivative control), again using the API. He mixes in support for PWN (Pulse-width Modulation). Both of these are commonly used algorithms to stabilize the interaction with a sensor: for interpreting and smoothing the signal and for ensuring that the written value corresponds to the desired value without slewing about. At the very end, he shows that his UI is built with Maui but he doesn’t get into it too much.

It’s nice that they provide low-level support for working directly with hardware but it’s not too fascinating. It’s good to know that C# is increasingly becoming a viable alternative to systems programming with C, C++, or even Rust or Go. He uses Visual Studio Code.

✅ Taking .NET out of .NET Aspire − working with non-.NET applications by dotnet | David Gardiner (YouTube)

He presents a multi-language, multi-environment solution that uses Python/uv, Rust/cargo, and TypeScript/pnpm, each of which are run manually. From there, he shows a template Aspire solution with a Redis cache, an API service, and a web front-end.

He starts with a new Aspire solution, then integrates Mongo support using aspire-add-mongo and then integrates the PowerShell script that populates the data using an Aspire API. With that loaded up, he searches for an Aspire extension that works with his existing Python/uv setup. He doesn’t have to change anything; he just binds the startup of that part into Aspire so that the service is available to his “app host” (and also shows up on the dashboard). The Rust service easily follows, again by using an existing Aspire package to integrate Rust/cargo specifically. Finally, he binds the React/Vite/pnpm solution using a node.js extension from the Community Toolkit (again).

Where Aspire shines is that you don’t need to run these disparate apps from various command lines or scripts, and you don’t need to configure containers with YAML; you bind the various components and services with C# code, indicating dependencies between them, which Aspire not only handles but displays in the dashboard.

He uses this power to remove hard-coded ports from his services, using the C# variables to read the and use the dynamically assigned ports instead. Finally, he integrates OpenTelemetry into the Python and Rust services so that the various services show their telemetry in the Aspire console, structured logging, traces, and metrics views.

Finally, he adds an extra service that uses a node backend. Adding it once you have Aspire configured is very, very easy.

This is an absolutely great 22-minute video that you can send to anyone who asks “what can Aspire do for me?”

✅ .NET Framework 4.8 to .NET 9 Step by Step by dotnet | Michael Christiansen (YouTube)

He recommends modernizing the app before retargeting it. This means:

  • Updating to use the SDK-style project format.
  • Using package references.
  • Using the Microsoft.Extensions.* packages, like dependency injection, configuration, logging, and hosting, all of which target the .NET Standard API surface and are therefore available for .NET Framework and .NET.

After that, he recommends side-by-side versions of libraries so that you can split them up better without affecting the existing, working version of the code.

One of the projects was a tougher nut to crack: it was an old-school ASP.NET application, where the patterns had completely changed in .NET 9 and 10. For that, he managed to have Claude Code do about 90% of the conversion and finished it up manually. The process was very manual—“spec-driven development” and “very hands-on”—but Claude Code was quite helpful once he figured out how to steer it properly.

If you have a .NET Framework application, then this is a great video. He really has a lot of good advice for how to avoid certain pitfalls (e.g., platform-specific code, like Windows Services).

⛔ From Architecture to Docs: .NET Aspire Documented with Copilot by dotnet | Jorge Fernandez & David Oliva (YouTube)

This video explains the basics of Aspire (like, the very basics), as well as the basics of Copilot and MCP. You can skip that part, as they’re just reading from the slides, in what I am forced to note are pretty strong Spanish accents.

I honestly can barely tell what’s going on here. I feel so bad for these guys because they are probably much better in their native language but it’s so much work understanding them in English. They’re generating stuff with Copilot to generate an architecture overview for an existing solution file, using Markdown and ASCII diagrams. They then upgrade to using Mermaid diagrams. But I dare you to replicate what they did.

✅ Windows 365 Meets Aspire − Supercharging Multi-Repo Microservice Productivity by dotnet | Eric Guo & Chuanbo Zhang (YouTube)

This video demonstrates using .NET Aspire to wire up microservice servers with simulated Azure services in order to test InTune deployment software. It’s quite a complex use case. They show how you can test locally, using Docker and the Azure-service simulators, and also deploy to Azure infrastructure.

They even show how to simulate some of your own microservices by using the VS .http file format to quickly mock responses for a subset of the functionality. In this vein, they also discuss how to configure data-seeding for a stable environment, then finish up by discussing how to use XUnit to run automated tests against this entire infrastructure, both locally and in pipelines.

Although the specific use case is quite complex, there is a lot of good stuff to learn about testing automation in this talk. .NET Aspire makes it a lot easier to run locally and in the cloud without different approaches.

🆗 Modernizing a 17th Century Italian-English Dictionary by dotnet | Wayne Sebbens (YouTube)
This was not uninteresting but it wasn’t a lot of programming information. Half of the video is a discussion of European martial arts and its relation to archaic Italian dialects and spellings. He basically made an app for searching these terms using vector databases and ML in .NET. If that sounds like something you want to do, check out the video and his repo (GitHub). If not, then you can safely skip the video.
🆗 Carbon Aware Computing − Using .NET Open Source libraries for more sustainable applications by dotnet | Aydin Mir Mohammadi (YouTube)

This video covers tactics and tooling for running data services in a sustainable manner. E.g., load-shifting from day to night, adjusting available capacity depending on local energy availability, etc. There’s a lot of telemetry and real-time monitoring needed to even begin working in a sustainable manner.

In the second half, he gets to integrating an SDK that calculated best-execution time. Even libraries like Hangfire have methods like IncludeCarbonAwareExecution() (I’m not kidding!) that wrap all of this in a very high-level abstraction.

🆗 Visual Studio Debugger: Advanced Techniques by dotnet | Harshada Hole (YouTube)

She takes us through the various live and inline indicators in the debugger, with predictive evaluation, including highlighting of the particular part of a condition that caused it to evaluate to true or false. The debugger has moved much closer to Rider’s, showing a lot of calculated values in the whitespace next to code, so you can see return values and calculated values without having to look in the variables or watches panes. This also allows you to use more concise coding while still being able to see interim values while debugging.

When showing how to analyze exceptions, she showed how to dig down into the call stack to find out why something’s null. She used right-clicking for everything, which was already slower than it needed to be…but then she decided to ask Copilot. The “quick” analysis took 30 seconds and then she had to ask it to do a “deep analysis”, whereupon it found the error that she would have probably found manually much more quickly. Maybe a more complex example wouldn’t have had such an obvious fix. Most people suck at debugging and don’t really understand their code, so probably Copilot is better at this than they are (or ever will be). So who am I to stand in the way of progress? I’m just John Henry.

I cannot stress enough how annoying it is to have to watch people “ask Copilot” and then we all gather around the chat-window output like it’s the word of God. It’s too bad, because the first few minutes of this video showed interesting deterministic tools before devolving into an orgy of just clicking that stupid little Copilot icon everywhere and then watching the completely useless and always-disregarded text in the chat windows scroll by. I cannot recall any one of these presenters actually reading any of this text. No-one cares.

These tools are really trying to reach out to and onboard completely unskilled developers to an unprecedented degree. These kinds of presentations make me sad. It’s fine for what it is, but I don’t think that this is the final form of software-development.

🆗 New dotnet test Experience with Microsoft.Testing.Platform by dotnet | Jakub Jares (YouTube)

This is a demo video, with the presenter working in Visual Studio Code but only from the command line. He shows how the console UI has been considerably improved. He also gets into new analyzers, assertions, and attributes. The improvement to the assertions is that they start analyzing the expression tree, which I find to be more fragile than the NUnit approach, which uses an explicit API to declare the assertion, with no magic. The attributes are for extending the framework, e.g., for determining when and in which environments tests will run.

Finally, he shows how the MSTest runner has massively improved execution speed, not in this version (4.0), but already in the 3.0 version.

The video is OK but the product is quite exciting, as it is a massive improvement over the previous test-runner.

✅ What’s new in Azure App Service for .NET developers by dotnet | Byron Tardif (YouTube)

He quickly covers when .NET 10 will be available in App Service for Linux (Ubuntu, not Debian) and Windows, then moves on to showing how to use .NET Aspire to build and deploy an application to App Service.

Blessedly, he’s doing it manually, following a simple guide, rather than “getting Copilot to do it for him.” This inspires much more confidence that it’s well-designed and simple enough to actually learn, rather than implying that you need to ask a black-box globe-girdling data-model in order to grok it.

He’s got the standard Aspire app and then types azd up. It takes five minutes for the system to analyze, find a subscription, determine existing resources, and then deploy, creating services where needed. Access to the deployment is automatically configured (e.g., the dashboard is only available for authorized users).

He quickly shows the Azure Portal resources that were created for the App Service. This is nice. .NET Aspire is a worthy and welcome successor to Bicep scripts.

He shows a bunch of features of App Services specifically, including scaling options.

✅ Deep Dive: Extending and Customizing Aspire by dotnet | David Fowler & Damian Edwards (YouTube)

Fowler shows a single-project solution with a .NET Aspire AppHost project that binds non-.NET dependencies (i.e., they’re not they’re own projects). One of the dependencies is a postgres database that is absolutely a dependency but has classically been managed outside of the solution. Now, you can declare and bind the dependencies with C#. The takeaway is: a much slimmer readme file, that you just clone and call aspire run.

The great thing about this is that it has to stay in-sync, unlike a readme file.

Fowler shows the app dashboard with a lot of custom dependencies, including the .NET 10 OpenAPI replacement called Scalar, which is fully integrated into the Aspire dashboard. Fowler even shows how you can customize the dashboard appearance with C# code, using very standard options customization, as you would see in other host-based applications like ASP.Net (or many other types, Console, Windows Service, etc.).

Damian points out what we’re all thinking: holy crap, Fowler, WTH you hacked everything into the AppHost.cs file, like hundreds of lines, including a custom database seeder that uses the endpoint spun up by Aspire. It’s neat to see how you can bind in that kind of code, though, to just wait until the HTTP REST server is available and then to run some C# code to seed it with data. It’s ugly and it’s hacky in his code, but it’s wonderful that you can prototype and test so quickly with disparate systems and components. He has only one C# file and orchestrates diverse other components and scripts from it.

OK, he continues to show how you can bind commands into the Aspire Dashboard that he uses to bind a “reset command” that uses the Aspire interaction service to show a message box requesting approval.

Finally, at the very end, he shows how to use an MCP integration with Aspire. This is no more exciting than watching anyone else watch Copilot stumble drunkenly around a dark room. It’s only the last two minutes so we’re not subjected to too much of this foolishness. It was still writing furiously into the chat as the video ended.

Fowler is also using Visual Studio Code rather than Visual Studio. He also speaks very, very quickly, so brace yourself.

🆗 What’s New in NuGet by dotnet | Sean Iyer & Nikolche Kolev (YouTube)

He starts off by threatening us that he will show a bunch of AI stuff. First up: tell us to use the MCP server for NuGet. He uses it to show how to get Copilot to update your dependencies when you have a vulnerability. This is not a hard task and, honestly, you should be aware enough of your dependencies to solve them yourself. It’s nice that the warnings are so good now that you can get a tool to fix up all f the things that people never could figure out on their own. Dude, since assembly-binding redirects were fixed in .NET, there’s no problem anymore. I don’t understand how it’s secure to let a hallucinating machine pick your dependencies for you. Now you don’t have to understand anything!

He spends a bunch of time talking about how to avoid getting outdated implementations that aren’t in the training data using an MCP. Or you could, you know, just update to the latest version. I don’t know why they’re making everything so complicated.

In the second half, he talks about security improvements but then just starts talking about how Copilot did all of his work for him. So, like, it’s secure but also an only partially reliable machine made all of the changes and he didn’t seem to look at them.

Nikolche shows how to eliminate vulnerabilities without Copilot (thank God) and shows how to use the pruning option with the audit command to remove unneeded dependencies that might show up in audits unnecessarily.

⛔️ Modernizing .NET Applications for the Cloud by dotnet | Matt Soucoup (YouTube)

Was there ever going to be a chance that he wouldn’t start off with telling you that Copilot can do all of the tedious work for you? No. No, there wasn’t. Was he ever going to tell you to use your mad skillz with your IDE to apply a ton of changes automatically using tools and refactoring? No, he wasn’t. Like the NuGet guy, he’s going to get copilot to spend ten minutes running a NuGet one-liner.

So like how cool is that? Not only do you have a super-old application that you never upgrade but now you don’t even have to understand what you’re migrating to! I love how he says that going from .NET Framework to .NET 10 is just soooo easy. You know, don’t make any stops along the way, just take the express train. What could go wrong?

Anyway … he shows how to install the Copilot modernization tools, then opens a .NET Framework IIS-based project. Once again, we’re watching a guy watch a Copilot chat window write a ton of text that he barely reads. He asks it to explain the security problems, as if this is something that you should do. Shouldn’t you inform yourself about the packages? Shouldn’t you just upgrade the old things? Do you really need the explanation?

And, once again, he says that “you’re giving up the reins to Copilot,” but, like everyone else, just assumes that everything that Copilot returns in bulletproof. This is still not my experience, to this very day.

Back to the update plan: I see the attraction, I really do. It’s very detailed … but who is it for? Is he keeping this upgrade plan in the repository? How much control does the plan actual give him? Doesn’t the commit that results just show the changes?

He says it “took about an hour to upgrade”. 😱 Oh, hell no. It just works for an hour for what he calls “a simple app”, using God knows how many tokens, and then you still have to review everything? Why not just do it yourself? He really needs to show the diffs. Show us the diffs, bro. I don’t think he’s going to show us the diffs. He’s just going to show us how he has to coddle the tool, which is basically making black-box changes. “That’s just the way it is, that’s the way it is working with AI-assisted dev tooling.”

He didn’t show the diffs. I have no idea what this tool did for him on this project. This tool is for people who would have no idea how to go about upgrading a solution on their own, who can use a chat windows but run screaming from a command-line upgrade tool.

At the very end, he runs the upgraded version but there are warnings in the build that two packages were restored using .NETFramework,Version=4.6.1 (the worst .NET Framework version ever), which strongly indicates that, even after an hour of f@&king around, the solution still references .NET Framework.

“The amount of coding that I had to do was basically zero. All I had to do was supervise things.”

Well done, buddy. You still have old packages and weird references. Check your warnings. I wouldn’t touch this tooling with a ten-foot pole.

As I wrote in a comment on the video,

This kind of workflow doesn’t translate well to a nearly half-hour-long video. There’s nothing to see. He ran a command or two. He didn’t even show the diffs at the end, to show us what the tool actually did. You could still see some odd warnings about .NET Framework in the output that he had to pretend weren’t there. He did a good job FWIW but a lot of this video is watching the Copilot chat window scroll by. The explanation is good but it would have been better as a blog post.

✅ Aspire Unplugged with David and Maddy by dotnet | David Fowler & Maddy Montaquila (YouTube)

They have T-Shirts with a great sentiment on them, “Friends don’t let friends write YAML.” Except that the “Write YAML” part is really, really big for some reason, so it looks like the shirts are exhorting users to actually write YAML. Whatever.

The first question is for Fowler, who describes the impetus of Aspire. It came from the pains of configuring so many scripts for infrastructure, even with a strong tool like Kubernetes.

It grew into a “general-purpose dev tool” for any sort of environment. It was originally scoped as a cloud-native tool but it quickly became obvious that nearly every solution has some sort of orchestration and scripting that always ended up in readme files or PowerShell or Bash scripts: starting the database, starting the backend for a mobile app, whatever.

“That became one of our key things, right? Like you want to onboard someone, you model all the stuff in code and then like you don’t have to tell someone run this script, run that script, pass the output from this script to that script, string together stuff. Like you can just kind of like put it in code, have it be there.”

He gives a lot of examples and detail about how polyglot and scalable .NET Aspire is. The other video he did—Deep Dive: Extending and Customizing Aspire by dotnet | David Fowler & Damian Edwards (YouTube)—showed a lot of code for integrating JavaScript and Python services. Another video—Taking .NET out of .NET Aspire − working with non-.NET applications by dotnet | David Gardiner (YouTube)—also shows how to integrate a lot of plugins from the community, including a Rust backend service.

The next big question is about persisting containers, supporting hot-reload, which is finicky to design and increases the complexity of the architecture significantly but the upside is huge if they can get it working. They managed a huge rewrite of all of the plumbing to support this type of scenario and are much better positioned for future developments.

The next question builds on this, asking about multi-repo support, with what’s called the “AppHost in AppHost” question: can you nest .NET Aspire apps? How does that work? It would be nice to be able to group shared services into one AppHost and then reference then from another high-level AppHost (for much larger solutions, obviously). What happens to the dashboards, though?

The idea of Aspire is to work with existing solutions, so the aspire init is a much more important workflow than aspire new. That is, you’re much more likely to already have a solution into which you’d like to integrate an AppHost or set of projects around which you’d like to wrap an AppHost than you are to be green-fielding a solution and starting with Aspire.

I love the dynamic between Fowler and Maddy. You can really tell they love working together, that they really, really respect one another. They love the “adult” Damian as well.

✅ Rx.NET status and plans by dotnet | Ian Griffiths (YouTube)

He discusses some examples of some new methods in the 6.1 release. These are quite nice, and the concept of RX is just neat, even though I’ve only ever played with it rather than used it in production.

He discusses in detail how some of the new handling for exceptions “bridges between RX’s world of observable streams and more ordinary async programming.”

In the next section, he discusses how the RX project had to do some extra work because System.Linq.Async is no longer their responsibility. It’s now in the standard library. But they had to make sure that their version gets deprecated in favor of the new one. As a library developer, think that this detail is fascinating, because you can see the the tools available for managing changing APIs and dependencies have gotten quite good.

Finally, he discusses the feature set for Rx.NET 7.0. The functionality won’t change much; it’s mostly library and platform-compatibility. There is a fix for the “bloat” issue, which only affects projects that target UI applications on Windows. It turns out that design decision in version 4.0 left self-contained deployments with implicit references to UI frameworks, which add dozens of megabytes needlessly.

The fix causes a compile error, for which they added an analyzer that nicely explains the fix to apply. This is a neat example of how to help consumers of your library get around compiler errors, which we didn’t have available before it was so easy to write and include custom analyzers. Previously, you’d have had to jump through more hoops to avoid giving upgraders compiler errors that weren’t warnings in the previous version. Now, if something like that is unavoidable, then you can still provide guidance with a diagnostic.

I thought it was a very interesting presentation but I’m a library and framework geek. Your mileage may vary.

✅ What’s New in .NET MAUI by dotnet | David Ortinau (YouTube)

This one starts with an overview of the project. SyncFusion contributes heavily, from dozens of PRs to providing over 30 controls as open-source controls.

They’re also working much more closely with the Uno platform, which is ostensibly a competing framework but seems to be merging or moving closer to Maui. They’re working on NativeAOT for Android, SkiaSharp improvements (it’s their main rendering library), as well as WebAssembly multi-threading (that’s another target that they have that Maui does not, unless you count Blazor integration).

His demonstration is kind of neat: he shows a Maui app with SyncFusion controls and Community Toolkit, all running within an Uno Platform App. He shows it running in an Android emulator. This kind of support may extend Maui’s reach without having to replicate everything. For example, the WebAssembly target Uno offers works seamlessly with .NET Maui apps. He demos a NuGet browser that was written for desktop, but now running in a browser.

Next up is a very prosaic but very welcome addition: global usings/namespace declarations for XAML files. You no longer need to use prefixes and you no longer have a clump of stuff at the top of the file. On top of that, they also now support implicit namespaces (the feature is in preview).

Now a XAML file for Maui can look like this:

<ContentPage x:Class="DeveloperBalance.Pages.MainPage"
             x:DataType="MainPageModel"
             x:Name= "OverviewPage"
             Title="{Binding Today}">

This is really nice.

There’s also XAML source-generation now. This increases speed of debugging and reduces the differences between the debug and release builds massively. This is an opt-in feature but it sounds great. You can debug the generated code instead of relying on a bunch of reflection. Debugging uses 99% less memory and view-inflation is now 1000% faster (10x). Overall app performance is 25% faster with 30% less memory usage.

He talks about support for “safe edges” (UI integration with mobile form factors) and improved support for hybrid apps. He briefly discusses Aspire orchestration, which is completely integrated. This is especially interesting with hybrid solutions because the front-end actually has two parts that need to be coordinated. Doing this with Aspire is interesting. You can use the dashboard to inspect telemetry because the standard rendering is integrated as well. This telemetry is also available on the command line if you don’t use Aspire.


Omit for Discriminated Unions in TypeScript (TkDodo's blog)

Omit doesn’t look at each union individually (it’s not distributive), it treats the union as a whole and just maps over all members one by one. As Ryan Cavanaugh says in one of the issue comments, all possible definitions of Omit have certain trade-offs, and they’ve chosen one they think is the best general fit.”

The article goes on to develop an alternative called DistributiveOmit:

type DistributiveOmit<T, K extends keyof T> = T extends any
  ? Omit<T, K>
  : never

This is a wrapper for the standard Omit type:

type Omit<T, K extends keyof any> = {
  [P in Exclude<keyof T, K>]: T[P]
}

“[] it doesn’t have any upper bound on the K type parameter (keyof any just expands to string | number | symbol). This means you can pass keys that don’t actually exist on the object.> That’s harmless in practice, as omitting something that isn’t there doesn’t change anything, but it did surprise me. When I switched to DistributiveOmit (which uses K extends keyof T), TypeScript suddenly flagged places where we were omitting five keys even though two of them no longer existed.

“They likely existed at some point and were just left behind during a cleanup.”


A friend recently wrote this in a discussion,

“In Rust, you get the pretty string and bytes”

Rust doesn’t magic away encodings. There is no way to 100% intuit encoding from the text. That means that the code creating the string should be indicating the encoding for the text (or taking the default, which is an implicit indication).

It looks like Rust, as a modern language, took the right approach by making a \1, which is great. C# doesn’t do that but it has Runes. Swift has probably the most advanced support I’ve ever seen, with string APIs for grapheme clusters. JavaScript is getting better (Intl.Segmenter.

Many, many encodings (if not all of the ones you’ll find in the wild) do have the ASCII at the front, using one-byte encoding. However, some encodings keep them at one-byte encoding (UTF-8, which is a variable-width encoding, from 1-4 bytes per code point), some use two bytes (UCS-2, UTF-16) and some go nuts with 4 bytes per character no matter what (UTF-32). That’s why naive string splits break emojis, for example.

This is a good read: The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 (Still No Excuses!)

For a long and involved read on JavaScript strings, see It’s Not Wrong that “🤦🏼‍♂️”.length == 7.


CSS Fizz Buzz by Susam Pal

The following code:

  1. Declares a counter.
  2. Includes the counter in the content before list items whose index is not divisible by five.
  3. Replaces the content before list items whose index is divisible by three with Fizz.
  4. Includes Buzz in the content after list items whose index is divisible by five.

The second line includes a bit of a hyper-optimization because the author is a mathematician: There is no need to prevent every third list item from including the counter before because the very next line replaces it with the text Fizz anyway, through the cascade.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>CSS Fizz Buzz</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
      li { counter-increment: n }
      li:not(:nth-child(5n))::before { content: counter(n) }
      li:nth-child(3n)::before { content: "Fizz" }
      li:nth-child(5n)::after { content: "Buzz" }
    </style>
  </head>
  <body><ul><li></li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li><li></ul></body>
</html>


Create a reusable Web Component from scratch by Kevin Powell (YouTube)

This is a longer, 72-minute live-coding of a web component with web-component expert Michael Warren, who codes the whole component by hand, from a blank page, explaining everything along the way. He describes <slot> elements and how all children of the web-component instance are automatically added to the default slot (the lone slot or the first one without a name).

Although some of the concepts are more advanced JavaScript—he uses bind to ensure that DOM event handlers treat the component as this and has to explain it to a befuddled Kevin, who is not a programmer—Michael explains all of this to a reasonable degree.

They discuss the pros and cons of styling strategies: custom properties with fallback values vs. parts (MDN). which allow free styling. This freedom would allow the user to break the component but that’s a risk you have to take.

You could make a property that doesn’t let you set colors directly, for example. You could use an enum to set light, dark, or high-contrast, for example. But this level of control makes the web component less flexible. The flexibility applies to slots (MDN) as well. You might make a slot to allow the developer to set an icon but the developer might insert 45 paragraphs instead, completely breaking the component. So what? Let them. This is API design. You always have to locate yourself on the spectrum from complete control to developer discipline.

See the the source code (GitHub). This is really such a lovely way of adding logic to a UI.

Design

I was on a walk the other day and wanted to know whether the Detroit Lions had won their Thanksgiving Day game. So I entered “Lions NFL” in DuckDuckGo.

 Search 'Lions NFL' in DuckDuckGo

Look at that! It’s so nicely formatted! I can see other games that the Lions have had; I can view more of the history; I can see the standings and the schedule.

It’s also easily navigable. You can click the other team names to see their statistics.

Click “Packers”.

 Search 'Green Bay Packers nfl' in DuckDuckGo

The UI stays the same. It’s still clean. It’s still browsable. The word “NFL” and a team name seems to trigger this view.

Click “National Football League” (which is, thankfully, highlighted as a link near the top).

 Search 'nfl games' in DuckDuckGo

Now, we see the most recent games in the NFL, again with quick links to the “Standings”, as well as a dropdown selector to choose which week of the schedule I’d like to see.

I know that this should long since have been the minimum that we should expect in our UIs but, in 2025, seeing something this clean and usable nearly brings tears of joy to my eyes.

It’s clean. No ads. No notes. 🙌🏽

Fun

Strays: Release Info (IMDb)

I saw that this movie was in the TV Guide, on one of the German channels. It was labeled as “Doggy Style,” so I was curious whether that was the name in English as well, or whether the Germans had accidentally named the movie with an idiom unfamiliar to German speakers.

The original title of the movie is “Strays” and the full German title of the movie is “Doggy Style: Dieser Sommer kommt von hinten,” which translates to “Doggy Style: This summer takes you from behind”. So, um, no, there was nothing accidental about the title.


Every Episode of Sex and the City: Fornication and the Metropolitan Area by ulia DiCesare (YouTube)

“You really gotta keep your head on a swivel.”

This is a lovely satire about how stupid and superficial and egocentric the people in these shows are.

“Him: Women are too emotional to be in government.
Her: [thinking] This one felt different. It felt real.”

[Guy admits to being a necrophiliac.]

[Scene: on a bench, eating ice cream with friend.]

Friend: You slept with him?
Her: Why are you judging me?
Friend: Oh, I absolutely get to judge you for this.
Her: What about that time you slept with your dentist?
Friend: That’s not weird. I liked it when he put his fingers in my mouth. That’s not a crazy jump.
Her: Did you do anything fun yesterday?
Friend: No. I had my uncle’s funeral.
Her: Right, right right. I forgot. Philip would have loved that.
Friend: Is he bi?
Her: Oh, you mean ‘cause your uncle’s a man?
Friend: Yeah, like, would he like it because he’s dead or because he’s a man, or what’s the…?
Her: I meant because he’s dead. I don’t know how the fluidity of sexuality works with necrophilia.
Friend: Yeah, right … is it regardless of gender? It is just more the dead element is the main thing?
Her: I have no idea.
Friend: Could we call him and ask?

Video Games

“Call of Duty: Black Ops 7” Signals a Franchise in Stasis by Brian Tallerico (RogerEbert.com)

“Call of Duty: Black Ops 6” was one of the more underrated games of 2025, a blockbuster experience with a genuinely engaging campaign and some of the best multiplayer map design and physics in the genre’s history.
“As defensive as I was about the criticisms often aimed at “Black Ops 6” from people who hadn’t even played it, “Black Ops 7” deserves every one of them. […] To be fair, the actual game mechanics seem to have improved over the last few weeks. But I have to admit I’m a bit exhausted by games that punish their most loyal fans by releasing inferior products that are then fixed through patches.
“[…] it’s hard to shake the feeling that all of this is getting exhaustingly repetitive. Nothing lasts forever. Will the sense that every “Call of Duty” is the same as the last “Call of Duty” eventually catch up with these video game soldiers? Probably not this year, but I don’t believe “Call of Duty” can rest on its success forever without experiencing a decline. The franchise may not need rescuing yet, but the clock is ticking.


A good friend sent me this music video the other day.

The Invincible | Yasna's Song by 11 bit studios (YouTube)

Curious about the game itself, I found the following video.

The Invincible | How Accurate Is It? | Game vs Book Comparison | Story Explained | Stanisław Lem by Morgil the Gamer (YouTube)

This game is based on a book by one of my favorite authors! I can’t remember having read this one, though. I love Stanisław Lem, though. I was incredibly impressed with his magnum opus Summa Technologiae (Electronic Mediations).