Junichi Uekawa: I was hoping to go to debconf but the frequent travel is painful for me right now that I probably won't make it. [Planet Debian]
I was hoping to go to debconf but the frequent travel
is painful for me right now that I probably won't make it.
[$] LWN.net Weekly Edition for April 3, 2025 [LWN.net]
Inside this week's LWN.net Weekly Edition:
Dirk Eddelbuettel: nanotime 0.3.12 on CRAN: Maintenance [Planet Debian]
Another minor update 0.3.12 for our nanotime
package is now on CRAN.
nanotime
relies on the RcppCCTZ
package (as well as the RcppDate
package for additional C++ operations) and offers efficient
high(er) resolution time parsing and formatting up to nanosecond
resolution, using the bit64 package for
the actual integer64
arithmetic. Initially implemented
using the S3 system, it has benefitted greatly from a rigorous
refactoring by Leonardo
who not only rejigged nanotime
internals in S4 but
also added new S4 types for periods, intervals
and durations.
This release responds to recent CRAN nag of also suggesting packages used in demos, makes a small update to the CI script, and improves one version comparison for conditional code.
The NEWS snippet below has the fuller details.
Changes in version 0.3.12 (2025-04-02)
Update continuous integration to use r-ci action with bootstrap
Add ggplot2 to Suggests due to use in demo/ which is now scanned
Refine a version comparison for R 4.5.0 to be greater or equal
Thanks to my CRANberries, there is a diffstat report for this release. More details and examples are at the nanotime page; code, issue tickets etc at the GitHub repository – and all documentation is provided at the nanotime documentation site.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! by Anonymous
Shared bathrooms are appropriate for some public spaces! Actually, bars are one of the only places that I have truly enjoyed a shared bathroom experience because I get to chat with girls and if I have to poop at the bar I’m calling it a night.
Anyway, I do not want to share a bathroom with my coworkers or, god forbid, my boss! Imagine you have to take a dump at work, so you stealthily run to the bathroom to take the quickest shit of all time. Mid-release, your boss walks in. How do you know? You can see them through the enormous gaps in the stalls. WHY ARE THE GAPS SO BIG!
Let me shit in peace! Maybe they have to take a dump, too—that’s great, I just don’t want to know.
I feel like I’m insane? Can we fix this? Can we get a single-stall situation for offices? How does the bathroom at Lumon work?
Do you need to get something off your chest? Submit an I, Anonymous and we'll illustrate it! Send your unsigned rant, love letter, confession, or accusation to ianonymous@thestranger.com. Please remember to change the names of the innocent and the guilty.
It’s Storytime with Wil Wheaton episode two – Proof by Induction, by José Pablo Iriarte [WIL WHEATON dot NET]
When I walked Marlowe this morning, I thought about what I was going to write here, and how I was going to say the stuff that I want to say about my podcast. I had to remind myself that this has existed in my mind and in various stages of not-quite-done for almost two years, and that my strategy is to allow it slow and organic growth, so it can find its audience. It’s only been one week, but early response and early reviews are enthusiastic and positive, and all signs are pointing in the right direction for me to keep doing this.
It’s so wonderful, and I’m so excited, I have this strong impulse to jump to the end, to the part where I find out if there is an audience out there that’s big enough to make this a self sustaining project that goes on for years. But am doing my best to stay in this moment, enjoy this moment, without letting expectations get in the way. I am trying my best to listen to something I have told my boys since they were little kids:
Never trade the journey for the destination.
Don’t skip past the joy of playing because you only care if you win.
Doing the thing is an incredible feat and achievement on its own. You did the thing, and you deserve to enjoy the thing. If the thing grows and grows and turns into A Thing on its way to being The Thing You Dreamed Of, then enjoy it! But if that doesn’t happen, it was still great that you did the thing, and aren’t you grateful that you enjoyed it at every step along the way?
Like, that’s pretty solid Dadvice, if I say so myself, and I’m doing my best to hear it.
So with that in mind, here’s my introduction to this week’s It’s Storytime with Wil Wheaton. José Pablo Iriarte tells a beautiful story that landed in me in such a specific and heartbreaking way, I wasn’t sure I’d be able to narrate it without being overcome.
I love a good quest. The hero’s journey to find the golden fleece and bring it home has been a cornerstone of storytelling for all of recorded history for a reason. At some point in our lives, each of us will hear the call to adventure and set out on a quest of our own. A lucky few even manage to complete their quests, sometimes against incredible odds.
Some famous quests are for knowledge, power, or even to save the world, but we are about to embark on a quest for something far more intimate, far more personal, and elusive: it is a quest for connection, and redemption. And it can only be found using Proof by Induction.
It was a challenge, but I did it, and I am so happy with everything about it (though I discovered, to my horror, I mispronounced “Euler” and we all missed it. Use this note to help you imagine a little audio kintsugi, if it helps.)
One thing before I go, the Big Thing that I probably should have opened with.
I would love it if this podcast became my full time job. As I’ve said elsewhere, I have loved doing other people’s work. Ready Room was one of the greatest experiences of my life, and we should be doing more episodes for the upcoming season of Strange New Worlds (which looks AMAZING), but I don’t think we are, for the dumbest reasons imaginable. And it breaks my heart. Like, I have physical pain in my chest and very real sadness, I feel a tangible sense of loss, because I only get to be the host of The Ready Room, and all the other wonderful stuff that comes with that, when someone from Corporate gives me permission to do it. And if Corporate is like, “Nah, because of reasons, and also who are you?” there’s nothing any of us can do about it.
I don’t want to feel that loss again, or at least as infrequently as possible (it’s a fair price to pay) so I’m REALLY hoping that the podcast takes off and it’s this joyful act of creativity that continues as long as I want it to. t’s only one week old, just two episodes in, and we are already fielding requests for sponsorship and ad sales. That’s a positive indicator that our growth is along the line we’re all hoping for, and it also opens me up to the inevitable complaints about ads.
I get it. I always hoped I would have this High Class Problem, so from the very beginning, we’ve planned to have a Patreon with no ads and extra material available for subscribers. We’re offering a five dollar tier and a ten dollar tier. Both offer an ad-free feed, and some other cool perks, including recordings of my reflections on the story immediately upon finishing it. I loved it when LeVar would talk about the themes and the style and how he interpreted and felt about what he just read to me. I wanted to do that, myself, but I felt like it didn’t fit into the main feed. But it’s exactly the sort of thing that is perfect for Patreon subscribers. I have some other ideas, too, for fun stuff that I can’t do at scale, but can absolutely do for a smaller subscriber community.
Everything you need to know is right here. If you have any questions, I’ll be checking comments here all day.
Stranger Suggests: Protest the Trump Administration, Bake Bread with a TikTok Star, and Dance Your Shoes Off with Remi Wolf [The Stranger]
One really great thing to do every day of the week. by Megan Seling WEDNESDAY 4/2
(FOOD) This biannual event, run by Seattle Good Business Network’s Good Food Economy program, is here to help you break out of your takeout rut and find your new favorite restaurant. Here's how it works: A slew of participating restaurants, bars, cafes, food trucks, caterers, and pop-ups across the greater Seattle area serve up to two special menus for $20, $35, $50, and $65 for lunch and/or dinner, and many offer a "give a meal" option so diners can donate to their in-house community meal programs or to Good Food Kitchens. This spring, there's also an Eat Local First digital passport option—rack up points by checking in with a QR code at designated locations dedicated to serving locally sourced food, then redeem them for restaurant gift cards and earn a chance to win special prizes. See our picks here. (Various locations, through April 12) JULIANNE BELL
THURSDAY 4/3(FILM) Blending Super 8, home video, and modern-day digital footage, Sam Now follows Seattle documentarian Reed Harkness, his half-brother Sam, and their family over the course of 20 years as they grapple with Sam's mother's sudden disappearance. One Letterboxd reviewer describes the flick as a "one-of-a-kind feat of participatory doc filmmaking," so if you're a fan of other participatory documentaries (Super Size Me, The Act of Killing, Fahrenheit 9/11) you'll likely appreciate this. (Northwest Film Forum, 7 pm) LINDSAY COSTELLO
FRIDAY 4/4(MUSIC) Remi Wolf is a firecracker, both live onstage and in her recorded music. Her 2020 EP I'm Allergic To Dogs! exploded onto the scene with cheeky lyrics and boppy beats, and her pop dominance has only grown since. Big Ideas, her second full-length, was released in July of last year and showcases a broad range of genres and influences in her music, from psych rock to R&B. Her live shows call for barefoot dancing in your brightest threads and chunkiest jewelry. (The Paramount, 8 pm, all ages) SHANNON LUBETICH
SATURDAY 4/5Defend Democracy, Then Laugh Your Ass Off
(PROTEST) Earlier this week, as I watched Sen. Cory Booker's record-breaking 25-hour filibuster, I got a weird feeling in my chest. A tingle. A spark. It was a sensation I hadn't felt for several months... it was a tiny glimmer of hope. Booker reminded the hundreds of thousands of Americans who tuned in for his marathon speech that: "The power of the people is greater than people in power." And on Saturday, those words will be echoing across the country as hundreds of cities mobilize for Hands Off!, a National Day of Action. Here in Seattle, the main event is at the Seattle Center from noon–3 p.m., with guest speakers former Gov. Jay Inslee, Rep. Pramilla Jayapal, and Port Commissioner Hamdi Mohamed. What will you be protesting? The tariffs? The illegal deportations? Elon's attempt to buy an election? RKF Jr.'s misinformation that could quite literally get people killed? The administration's complete disregard for national security? There's so much to be mad about! So let's all scream together, like that scene in Midsommar, and then afterward we can soothe our nerves with a good dose of laughter at The Stranger's Champions of Comedy show. (Seattle Center, noon–3 pm, free all ages) MEGAN SELING
SUNDAY 4/6View this post on Instagram
(SPRING) Good news, plant people! The Arboretum's annual spring plant sale is back and offers up a selection of perennials, shrubs, and young trees for purchase. Volunteers will be around to answer any questions you have about caring for all your different plant babies. Good news for us non-plant people who might be dragged along by our friends—Azalea Way is covered in gorgeous blooming cherry and dogwood trees, and a perfect way to mark "see the cherry blossoms" off your Seattle spring bucket list. (Washington Park Arboretum, 10 am–2 pm, free, all ages) SHANNON LUBETICH
MONDAY 4/7Author Talk & Demo: Lacey Ostermann
(BOOKS/FOOD) Self-taught baker and TikTok creator Lacey Ostermann (@_lacebakes_) started a micro-bakery from her London home after picking up bread baking as a pandemic hobby, and has accrued nearly 800k followers who adore her comforting videos and approachable but precise recipes. I'm excited about the dizzying breadth of possibilities from her new book 3 Doughs, 60 Recipes. All you knead (sorry) is three simple master dough recipes—sandwich bread, pizza, and focaccia—to unlock carby delights like bagels, doughnuts, English muffins, burger buns, ciabatta, sandwich rolls, Roman-style pizza, and more. Plus, the book comes with 15 bonus recipes to enhance your baked creations, like homemade butter, hot honey, scallion cream cheese, chimichurri, and stracciatella, and QR codes to video tutorials to help you along the way. Ostermann will drop by Book Larder for an author talk and bread-making demo. (Book Larder, 6:30 pm, all ages) JULIANNE BELL
TUESDAY 4/8Preston Singletary: Raven Is As Raven Does
View this post on Instagram
(VISUAL ART) Native American glass artist Preston Singletary, who first learned his signature glassblowing techniques over 30 years ago, will present a new selection of his mystical works, which feature themes of transformation, animal spirits, and shamanism inspired by his Tlingit cultural heritage. Raven Is As Raven Does finds its footing in Singletary's collaboration with bestselling author Garth Stein. The pair retell ancient raven myths: Singletary with bold colors and unexpected forms, Stein with a contemporary perspective. (Traver Gallery, every Tues–Sat, April 5–26, free) LINDSAY COSTELLO
View From A Hotel Window, 4/2/25: Chicago [Whatever]
Do not be fooled by this hotel window post, for it is I, the Junior Scalzi. I have come to you today with my own hotel view, from Chicago.
Behold!
As much as I love Chicago and I love The Langham, being so close to the Trump Tower is unfortunate.
But, yes, I am in Chicago! Feel free to comment recommendations for me down below! And have a great day.
-AMS
Brookline Travel Issues [Whatever]
Folks who are hoping to see me tonight in Brookline: I’m still on the ground at DFW and won’t be making it tonight. I’m sorry but I can’t control the weather. BUT! We are rescheduling very soon, probably for Monday. Brookline Booksmith will have more info when everything is confirmed.
— JS
Pluralistic: What's wrong with tariffs (02 Apr 2025) [Pluralistic: Daily links from Cory Doctorow]
It's not that the Republicans and the Democrats are the same…obviously. But for decades – since Clinton – the Dems have sided with neoliberal economics, just like their Republican counterparts, so the major differences between the two related to overt discrimination, to the exclusion of the economic policies that immiserated working people, with the worst effects landing on racial minorities, women, and gender minorities.
So the Dems stood against discrimination in mortgage lending – but not for the minimum wage that would have lifted the lowest paid workers out of poverty so the could afford a mortgage. They stood for abortion rights, but against Medicare For All, which meant all women had the right to an abortion, but the poorest women couldn't afford one. And of course, in a country where racial and gender discrimination were still the order of the day, the poorest and most vulnerable Americans were racialized, women, disabled, and/or queer.
The Dems' embrace of Reaganomics meant that working people of all types experienced steady decline over 40 years: stagnating wages, economic precarity, increased indebtedness, and rising prices for health care, education, and housing. When Trump figured out that he could campaign on these issues, Dems had no response. Trump's "Make America Great Again" was meant to appeal to a time when working Americans were – on average, depending on their whiteness, maleness and straightness – better housed, better paid, and better cared for.
Of course, those benefits were unevenly felt: America was slow to extend the New Deal to racial minorities, women, disabled people, and other disfavored groups. Trump's genius was to marry white supremacy to economic grievance, tricking white workers into blaming their decline on women, brown and Black people, and queers – and not on the billionaires who had grown so much richer even as workers got poorer.
But Trump couldn't have pulled this trick off without the Dem establishment's total unwillingness to confront the hollowness of their economic policies. From Pelosi's "We're capitalists and that's the way it is" to Hillary Clinton's catastrophic campaign slogan, "America is already great," the Dems' answer to workers' fear and anger was, "You are wrong, everything is fine." Imagine having had your house stolen in the foreclosure crisis after Obama decided to "foam the runways" for the banks by letting them steal their borrowers' homes and then hearing Hillary Clinton tell you "America is already great":
https://www.npr.org/2014/05/25/315276441/its-geithner-vs-warren-in-battle-of-the-bailout
Racial and gender justice matter, of course, but when they're pursued without considering economic justice, they're dead ends. The point of racial and gender justice can't merely be firing half of the 150 straight white men who control 99% of the country's capital and replacing them with 75 assorted women, queers and people of color. The worst-treated workers in America are also its most discriminated-against workers, so the best way to help women, racialized people, and other disfavored minorities is to help workers: protect unions, raise the minimum wage, defend tenants, cancel student debt, and give everyone healthcare. In the same way that a special tax on incomes over $1m will disproportionately affect straight white men, an increase in the minimum wage will disproportionately benefit women and people of color – as well as the majority of straight white men who are also getting fucked over by people with $1m salaries.
Since the Clinton years, Democrats have been trying to figure out how to defend economic policies that help rich people while still somehow being the party of social justice. This has produced a kind of grotesque, Sheryl Sandberg "Lean In" liberalism, which stood for the rights of women who were also corporate executives. It's not that these women aren't treated worse than their male counterparts – misogyny is alive and well in the boardroom. But the number of women who experience boardroom discrimination is tiny, because the number of women in the boardroom is also tiny.
The right saw an opportunity and seized it. As Naomi Klein writes in Doppelganger, they created "mirror world" versions of social justice issues, warped reflections of the leftist positions that had been abandoned by a progressive coalition led by liberals:
https://pluralistic.net/2023/09/05/not-that-naomi/#if-the-naomi-be-klein-youre-doing-just-fine
In right wing, conspiratorial hands, rage at wage stagnation and lack of parental leave turned into reactionary demands for an economy in which women would be full-time homemakers while their husbands recovered their roles as breadwinners. The 1999 Battle of Seattle saw mass protests over the WTO and a free trade agenda that would let capital chase low wages and weak environmental and worker safety policies around the world. But Clinton went ahead and signed more free trade agreements, which were also pursued by Obama. So the right filled the vacuum with a mirror-world version of the Battle of Seattle's rage at billionaires, transforming the anti-free trade agenda into racism, xenophobia, and Cold War 2.0 sinophobia.
It's a cheap trick, but Dems keep falling for it. When the right declares itself to be against something, Dems can be relied upon to be in favor it, no matter how reactionary, anti-worker and authoritarian "it" is. During Trump 1.0, Dems lit James Comey votive candles and passionately defended the "intelligence community," a community that gave us CIA dirty wars and FBI COINTELPRO. Anthropologists call this "schizmogenesis" – when a group defines itself by valuing whatever its rivals deplore, and vice versa:
https://pluralistic.net/2021/12/18/schizmogenesis/
You can see schizmogenesis playing out right now, as "progressives" make Signalgate scandal into a fight over poor operational security (planning a war crime using a commercial app) and not a fight over war crimes themselves.
Signalgate will be out of the headlines in a matter of days, though – unlike tariffs, which will continue to make global headlines throughout the Trump presidency, as Trump continues his "mad king" policy of recklessly and chaotically erecting trade barriers that are certain to make supply chains more brittle and raise prices.
For the most part, the progressive discussion of Trump's tariffs takes the position that tariffs are always a terrible idea – in other words, that Clinton and Obama had the right idea when they created free trade agreements with countries around the world, and Trump is vandalizing an engine of American and global prosperity out of economic ignorance.
Economists support this analysis. But in a new, well-argued editorial in The Sling, University of Utah economists Mark Glick and Gabriel Lozada present a more nuanced version of the tariff debate, one that dodges the trap of neoliberal economics and schizmogenesis:
https://www.thesling.org/the-failed-assumptions-of-free-trade/
Rejecting tariffs is practically an article of religious faith among economists. As the NYT put it in their reporting of the 2025 meeting of the American Economic Association, "free trade is perhaps the closest thing to a universally held value among economists":
https://www.nytimes.com/2025/01/10/business/economy/economists-politics-trump.html
Every Econ 101 class has a unit on David Ricardo's "theory of comparative advantage," which argues that different countries have different capacities and specialties, and that free trade allows these advantages to be shared to the benefit of everyone, making trade a "positive expectation" game. The corollary is that tariffs make everyone worse off.
As Glick and Lozada write, the logic of this argument is unassailable, provided you accept its bedrock assumptions as true – and that's where the problem lies.
Economics has an assumptions problem. The foundational method of economic practice is to create models grounded in assumptions that are either not known, not knowable, or – incredibly – known to be wrong. As Milton Friedman famously wrote:
Truly important and significant hypotheses will be found to have "assumptions" that are wildly inaccurate descriptive representations of reality, and, in general, the more significant the theory, the more unrealistic the assumptions (in this sense)
https://pluralistic.net/2025/02/17/caliper-ai/#racism-machine
It's actually worse than it seems, because economics, as a field, has been violently allergic to empirically testing its assumptions, so it doesn't even know when it is operating on the basis of one of Friedman's "wildly inaccurate descriptive representations of reality." This is what Ely Devons meant when he said, "If economists wished to study the horse, they wouldn’t go and look at horses. They’d sit in their studies and say to themselves, ‘What would I do if I were a horse?’"
https://pluralistic.net/2022/10/27/economism/#what-would-i-do-if-i-were-a-horse
What are the assumptions that underpin the orthodox view of free trade, then? As Glick and Lozada write, the case against all tariffs depends on five assumptions, all of which fail empirical investigation.
I. Full employment
The standard model of free trade assumes full employment – "when workers are displaced by imports, they can easily become re-employed at the same wages." This is the crux of the "social surplus" that free trade theoretically produces. This assumption doesn't hold up to empirical scrutiny. After the US dropped its tariffs, it experienced a 74% decline in manufacturing jobs – the best-paid jobs for non-college-educated men. Those workers didn't find equivalent employment – indeed, in many cases, the found no employment at all. From 2001-18, the US lost 1.132m manufacturing jobs to China, and gained 0.176m jobs manufacturing goods for export to China.
II. No externalities
The employment losses from free trade are not evenly distributed – they are geographically concentrated, and the greatest concentrations are in regions that flipped from Democratic strongholds to Trumpish heartlands over the decades since the US dropped its tariffs. The losses to these regions aren't limited to the directly affected manufacturing jobs, but all the other economic activity those jobs supported. The people who sold groceries, cars, and furniture to factory workers also lost their jobs. When young people abandoned the cratering regional economy, that devastated education and other services catering to families.
III. Comparative advantage leads to long-term growth and development
The theory of comparative advantage says that the world is better off when each country gets to do the thing it's best at. What are poor countries best at? Being poor: having a cheap labor force and weak rule of law to protect workers' health and the environment.
Without exception, the poor countries that grew richer did so in the presence of tariffs: "free trade is not a development strategy, it is a static policy that can impede development":
https://2024.sci-hub.se/1864/6d3f610c51446f057a4054080c70ab0e/chang2003.pdf#navpanes=0&view=FitH
IV. Floating currencies keep trade balanced
In theory, adjustments in the currency markets will rebalance imports and exports – countries whose currency declines will have to switch to domestic production, because goods from abroad will become costly. That's not what happened. Instead, foreigners have invested the US dollars they got from selling things to Americans into US securities and real estate, "which does not increase US productivity because it generates no new capital formation (at least directly)."
V. The US provides compensation for trade-related job-losses
While other countries with robust social safety nets offered retraining, income support, and other programs to cushion the blow of trade-related job-losses, the US – with the worst social safety net in the rich world – offered "woefully inadequate" supports to dislocated workers:
https://www.piie.com/bookstore/job-loss-imports-measuring-costs
Now, just because some tariffs are beneficial, it doesn't follow that all tariffs are beneficial. When the "Asian Tiger" countries were undergoing rapid industrialization and lifting billions of people out of poverty, they did so with tariffs – but also with extensive industrial policy and direct investment in critical state industries (Biden was the first president in generations to pursue industrial policy, albeit a modest and small one, which Trump nevertheless dismantled).
Trump is doing mirror-world tariffs: tariffs without industrial policy, tariffs without social safety nets, tariffs without retraining, tariffs without any strategic underpinning. These tariffs will crash the US economy and will create calamitous effects around the world:
But the fact that Trump's tariffs are terrible doesn't mean tariffs themselves are always and forever bad. Resist the schizmogenic urge to say, "Trump likes tariffs, so I hate them." Not all tariffs are created equal, and tariffs can be a useful tool that benefits working people.
And also: the fact that tariffs can be useful doesn't imply that only tariffs are useful. The digital age – in which US-based multinational firms rely on digital technology to loot the economies of America's trading partners – offers countries facing US tariffs a powerful retaliatory tactic that has never before been seen on this planet. America's (former) trading partners can retaliate against US tariffs by abolishing the legal measures they have instituted to protect the products of US companies from reverse-engineering and modification. Countries facing US tariffs can welcome US imports – of printers, Teslas, iPhones, games consoles, insulin pumps, ventilators and tractors – but then legalize jailbreaking these devices:
https://pluralistic.net/2025/03/08/turnabout/#is-fair-play
That would deprive the largest US companies of their recurring revenue streams – from service, consumables, software, payment processing, etc – creating huge savings for consumers all over the world, and huge profits for the non-US companies that make these jailbreaking tools, and the small businesses that supply them. For example, your country could become the world's leading exporter of iPhone jailbreaking tools, and the world's powerhouse for alternative iPhone stores that charge 1-2% commissions on payments, as opposed to the 30% Apple takes out of every dollar (euro, pound, peso) that iPhone owners spend within their apps. This would tempt in all the biggest app companies in the world – from Patreon to Tinder, Fornite to the New York Times – who could offer their products at a discount and still make more money than they make on Apple's App Store.
But that's just one market this enables: the actual business of iPhone jailbreaking would likely work much like the market for phone unlocking more broadly: thousands of small and medium-sized businesses like dry-cleaners and convenience stores where you can bring your phone and pay a few dollars to have it unlocked and set up with a new app store where all the apps are the same – but everything is 20% cheaper.
This is a development opportunity without parallel. US tech monopolists worked with the US trade representative to rig markets around the world, allowing tech giants to siphon away vast fortunes from America's trading partners. These rich deposits of wealth are just sitting there, begging for some country to sink a shaft into them and pump them dry, secure in the knowledge that Trump has ejected from the global system of free trade and they have nothing to lose.
Move the United Nations to Montreal https://cultmtl.com/2025/03/move-the-united-nations-to-montreal/ (h/t Gregory Cherlin)
Resolution to Establish a Mutual Defense Compact for the Universities of the Big Ten Academic Alliance in Defense of Academic Freedom, Institutional Integrity, and the Research Enterprise https://senate.rutgers.edu/wp-content/uploads/2025/03/Resolution-to-Establish-a-Mutual-Defense-Compact-for-the-Universities-of-the-Big-Ten-Academic-Alliance-in-Defense-of-Academic-Freedom-Institutional-Integrity-and-the-Research.pdf
#20yrsago Shadow Cities: the untold lives of squatters https://memex.craphound.com/2005/04/03/shadow-cities-the-untold-lives-of-squatters/
#20yrsago Tube escalators to get video ads https://web.archive.org/web/20050406225247/http://www.iht.com/articles/2005/04/03/business/ad04.html
#5yrsago Bug bounty programs as catch-and-kills https://pluralistic.net/2020/04/03/socially-useless-parasite/#features-not-bugs
#5yrsago Wikipedia vs patent troll https://pluralistic.net/2020/04/03/socially-useless-parasite/#worldlogic
#5yrsago Amazon's leaked anti-worker smear plan https://pluralistic.net/2020/04/03/socially-useless-parasite/#christian-smalls
Chicago: ABA Techshow, Apr 3
https://www.techshow.com/
Bloomington: Picks and Shovels at Morgenstern, Apr 4
https://morgensternbooks.com/event/2025-04-04/author-event-cory-doctorow
Bloomington: Ostrom Center, Apr 4
https://events.iu.edu/ostromworkshop/event/1843316-hls-beyond-the-web-cory-doctorow
Pittsburgh: Picks and Shovels at White Whale Books, May 15
https://whitewhalebookstore.com/events/20250515
Pittsburgh: PyCon, May 16
https://us.pycon.org/2025/schedule/
PDX: Teardown 2025, Jun 20-22
https://www.crowdsupply.com/teardown/portland-2025
PDX: Picks and Shovels at Barnes and Noble, Jun 20
https://stores.barnesandnoble.com/event/9780062183697-0
Manchester: Picks and Shovels at Blackwell, Jul 2
https://www.eventbrite.co.uk/e/an-evening-with-cory-doctorow-tickets-1308451968059
New Orleans: DeepSouthCon63, Oct 10-12, 2025
http://www.contraflowscifi.org/
Capitalists Hate Capitalism (MMT Podcast)
https://pileusmmt.libsyn.com/195-capitalists-hate-capitalism-with-cory-doctorow
How to Destroy Our Tech Overlords (Homeless Romantic)
https://www.youtube.com/watch?v=epma2B0wjzU
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org). Signed, personalized copies at Dark Delicacies (https://www.darkdel.com/store/p3007/Pre-Order_Signed_Copies%3A_The_Lost_Cause_HB.html#/)
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com. Signed copies at Dark Delicacies (US): and Forbidden Planet (UK): https://forbiddenplanet.com/385004-red-team-blues-signed-edition-hardcover/.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Attack Surface": The third Little Brother novel, a standalone technothriller for adults. The Washington Post called it "a political cyberthriller, vigorous, bold and savvy about the limits of revolution and resistance." Order signed, personalized copies from Dark Delicacies https://www.darkdel.com/store/p1840/Available_Now%3A_Attack_Surface.html
"How to Destroy Surveillance Capitalism": an anti-monopoly pamphlet analyzing the true harms of surveillance capitalism and proposing a solution. https://onezero.medium.com/how-to-destroy-surveillance-capitalism-8135e6744d59?sk=f6cd10e54e20a07d4c6d0f3ac011af6b) (signed copies: https://www.darkdel.com/store/p2024/Available_Now%3A__How_to_Destroy_Surveillance_Capitalism.html)
"Little Brother/Homeland": A reissue omnibus edition with a new introduction by Edward Snowden: https://us.macmillan.com/books/9781250774583; personalized/signed copies here: https://www.darkdel.com/store/p1750/July%3A__Little_Brother_%26_Homeland.html
"Poesy the Monster Slayer" a picture book about monsters, bedtime, gender, and kicking ass. Order here: https://us.macmillan.com/books/9781626723627. Get a personalized, signed copy here: https://www.darkdel.com/store/p2682/Corey_Doctorow%3A_Poesy_the_Monster_Slayer_HB.html#/.
Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026
Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026
The Memex Method, Farrar, Straus, Giroux, 2026
Today's top sources:
Currently writing:
A Little Brother short story about DIY insulin PLANNING
Picks and Shovels, a Martin Hench noir thriller about the heroic era of the PC. FORTHCOMING TOR BOOKS FEB 2025
Latest podcast: With Great Power Came No Responsibility: How Enshittification Conquered the 21st Century and How We Can Overthrow It https://craphound.com/news/2025/02/26/with-great-power-came-no-responsibility-how-enshittification-conquered-the-21st-century-and-how-we-can-overthrow-it/
This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Medium (no ads, paywalled):
Twitter (mass-scale, unrestricted, third-party surveillance and advertising):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
ISSN: 3066-764X
Could the LA Fires Happen Here? [The Stranger]
Could a disaster like January’s wildfires happen here in Seattle? by Hannah Murphy Winter
On January 1, 2025, a fire sparked outside of Los Angeles, near the Temescal Ridge Trail. It was a minor fire, only burning eight acres of wilderness. Most of us in Seattle didn’t hear about that one. Then six days later, the Pacific Palisades fire started tearing through the LA hills. The same day, about 30 miles away, the Eaton Fire ignited. From 1,100 miles north, Seattleites watched for more than three weeks as 14 wildfires teetered on the edge of a city, consuming 57,000 acres and killing at least 29 people. The Eaton and Palisades fires alone burned an area that would cover 70 percent of Seattle.
Standing in the Pacific Northwest, we could look at the LA fires in two ways: the first is as a disaster that happened in a dry, hot, drought-stricken climate, drastically different from the mossy, pine-y landscape on our horizon. Alternatively, though, we could see them as fires that consumed suburbs built into fire-prone foothills, not dissimilar from our own.
So which one is right? Could a disaster like January’s wildfires happen here in Seattle?
I took the question to Crystal Raymond, the deputy director of policy and management at the University of Washington’s Western Fire and Forest Resilience Collaborative. And you might’ve guessed by now that I didn’t get the clear-cut “no” that I’d hoped for.
“Of course, the answer is yes and no,” she told me over the phone.
To start, it helps to understand what led to the Los Angeles fires. At its core, it wasn’t tied to the climate crisis so much as it was a confluence of really bad luck. “You have three ingredients for these major fires,” explains Raymond. You need an ignition source (usually humans), fuel (dry brush, trees, etc.), and for large, fast-moving fires like these, you need winds that, rather than coming from the cool, wet ocean, come from the east—like California’s Santa Ana winds.
Ignition can happen anywhere. It can occur naturally, but more often, it’s manmade—a cigarette butt, a campfire, a Cybertruck. King County’s Office of Emergency Management usually prepares for more ignition events starting after the Fourth of July; explosives make for excellent ignition events.
The “fuel” part of the equation can be affected by climate change. California’s rainy season came in late last year, leaving its iconic Chaparral shrubland—which is already small, dry fuel that thrives in fire country—especially dry.
When it comes to fires, fuel is quite possibly the greatest differentiator between Southern California and Western Washington. Where California has shrubs, we have thick, wooden trunks. Raymond recommends imagining a campfire. “Think about when someone throws a handful of dry grass or a dry shrub on their campfire. That’s going to burn like that,” she says, snapping. “Now imagine you have a big, sort of dry log, and you put that on your campfire. Maybe if it’s really dry, that’s gonna catch. But typically, when you put a big, sort of dry log on the fire, it doesn’t.”
And then there’s the wind. In California, the Santa Ana winds are a part of the region’s identity. The wind events can happen dozens of times a year. Joan Didion wrote three haunting essays about them; the New York Times once said that “a dry, hot Santa Ana often symbolizes an unnamable menace lying just beneath the sun-shot surface of California life.” We have no such thing. In Seattle, most of our winds come from the west—full of cold, damp sea air that cools our climate down. “It’s what creates our coastal environment,” says Raymond. And when the winds do come from inland, they’re simply called “east winds” or “downslope winds,” she says, “because they come down from the Cascades and out towards the ocean.”
Forest Service researchers have been connecting our east winds to fire risk since the 1950s. “There is a close relation between…severe easterly winds and large forest fires in northwest Oregon and southwest Washington,” Owen P. Cramer wrote from the Pacific Northwest Research Station in 1957. “With the east winds comes the dreaded combination of low humidity and high wind that in the past has whipped small fires into conflagrations such as the Tillamook fire of 1933 and the fire that burned Bandon in 1936.” (The Tillamook burned more than 300,000 acres of wildland before seasonal rains took it out; the Bandon caused almost 2,000 people to evacuate.)
When our east winds come around, they can create the same fast-moving fires that we saw in California. “They’re often very high wind speeds,” she says. “And they’re bringing hot, dry air from the interior of the continent to the west side. And so that’s what makes them particularly concerning for fire. We don’t get them as regularly and as often as they do in California, like the Santa Ana winds. And so that’s probably why they don’t have such a catchy phrase.”
So, to go back to Raymond’s “yes and no”: Obviously, we aren’t Southern California. According to the Forest Service, King County is at higher risk of wildfires than just 60 percent of US counties, while LA County is in the 97th percentile. And without the Chaparral shrubland and Santa Ana winds of California, we’re at lower risk of such a severe fire. But, as Raymond says, “Western Washington is a fire-prone environment. Any ecosystem in the western United States has areas that burn. And have historically burned.”
We can see that pattern reflected over the last 150 years, Raymond says, and our region has had at least one like this in our very recent history: the 2020 Labor Day Fires in northwest Oregon. That September, a combination of these same conditions—ignition events, fuel, and high winds—burned more than a million acres in the Pacific Northwest, including almost 200,000 acres of National Forest land.
“The Labor Day fires in 2020 in Oregon are very much an example of large, fast-moving fires in our wetter forest types of Western Washington. So, yes, it can happen here,” she says.
So what do we do about it?
To understand fire management, it helps to learn one new vocabulary term: Wildland Urban Interface (WUI). It refers to the area where urban development and natural landscape (which they define as areas that are at least 50 percent burnable vegetation) either meet or intermix. Anyone talking about fire risk in our region will refer you to the Washington Department of Natural Resources’s WUI maps (pronounced woo-wee, like wookie).
Wildfires aren’t likely to touch densely urban areas—concrete doesn’t burn well. But our suburbs press against the Cascades. “Washington has always been a place where the land largely dictates how humans can live,” the Department of Natural Resources wrote in their primer for the WUI maps. “Our waterways define our cities’ boundaries. Our hills and mountains limit the extent of our sprawl.” But as our population grows (and our housing crisis increases), and we push the limits of that sprawl, we increase our chance of encountering fires instead of just oppressive, opaque (and toxic) smoke conditions.
The WUI maps show the “interface” in red and orange. (Don’t let that confuse you—DNR emphasizes that the maps do not represent fire risk, just development.) But several of our major suburbs are deep in that interface. Newcastle, Sammamish, Issaquah, and Woodinville are all surrounded by red and orange.
When those suburbs were built, wildfires were a rare concern on this side of the Cascades. Just a decade ago, there were twice as many fire starts in Eastern Washington than on our side. But for the first time in 2023, we outnumbered Eastern Washington.
This is where Raymond urges us to focus less on the possibility of a catastrophic wildfire like LA’s, and more on the increasing reality of our smaller fires—1,000 or 10,000 acres, say. Those are increasing with climate change, and will continue to do so. Which means our Wildland Urban Interface is more likely to encounter them every year.
“From an ecological perspective, they’re not very meaningful,” she says. “But when they’re in the Wildland Urban Interface, they can be really consequential. They won’t necessarily take off like fires do in a wind event, but those are ones that can put homes at risk.”
In a lot of ways, it feels like we’re preparing for these incidents from scratch in Western Washington. To start, fire experts are battling our lack of wildfire muscle memory, so to speak. “You talk to people in California, and a lot of people are like, ‘Yeah, I’ve been through an evacuation before. I remember 20 years ago, we evacuated here, or we evacuated when I was a kid,’” Raymond says. “There’s so many people who live here in Western Washington that that is not in their memory at all.”
Sheri Badger, the Public Information Officer for King County’s Office of Emergency Management (OEM), is part of the team that’s helping us build that muscle memory. She says the office has only been focusing seriously on wildfires for about five years. And the Bolt Creek Fire in 2022, she says, which burned more than 10,000 acres in King and Snohomish Counties, was the event that shook them into action. “Before that, it was always ‘Yes, this could happen here.’ But having an example of, ‘Yes, this did happen here,’ was really instrumental, I think, in kick-starting a lot of our efforts.”
Wildfires are only one of 14 hazards that their office prepares the county for, ranging from dam failure to volcanoes to cyberterrorism. And they’ve prepared an “all hazards response” that can be applied to most of them. That can affect things like how our transit system responds, and how they send out alerts through SMS.
But realistically, our region is much more prepared to respond to an earthquake than to a wildfire. There are some fire-specific projects. The Office of Emergency Management is in their third year of implementing their “Ready, Set, Go” evacuation messaging (they found that Levels 1, 2, and 3 were too confusing for people). “This is something that is very familiar to people in the eastern part of the state, but for us here, it’s not,” Badger says.
“Ready” means evacuation is possible in your area. Keep track of local media, check on your neighbors, identify evacuation routes, make sure your go kit is up to date. “Set” means evacuation is likely to happen in your area with short notice. Get your go kit in your car and be ready to move. “Go” means get the hell out. Follow emergency officials’ instructions and don’t come back until officials tell you to. In all stages, they say, leave if you feel unsafe.
Our fire response is clearly still in its infancy, though. Five years is nothing in County Bureaucracy Time, and there are so many more factors that can inform how we relate to these fires before evacuation: building codes, landscaping, insurance. Last year, an investigation by KING 5 found that the Washington State Office of the Insurance Commissioner received more complaints of people being dropped by their insurance provider for wildfire risk in the first half of 2024 than the last two years combined.
Right now, a lot of that wildfire prep is left to individual decisions—to landscape with slow-burning trees or to build with more wildfire-resistant materials. For people who are eager to manage their fire risk themselves, Badger points to programs like the National Fire Protection Association’s Firewise, which provides resources so communities work together to take control of their own fire mitigation.
But as the Trump administration strips climate scientists out of the National Oceanic and Atmospheric Administration, which tracks wildfire conditions, we’re going to be more and more dependent on our local government to protect and prepare us for these increasing hazards.
I asked Badger if they felt like they were building a plane while they were flying it. “Yes,” she says. “But also, it’s not a new concept. It’s just new to us. Being able to take a look at the places around us—Eastern Washington, California, Eastern Oregon—we can see the plane they’ve built as we’re building ours.”
Welcome to The Stranger's 2025 Climate Issue [The Stranger]
Ultimately, if this issue does anything, I hope it reminds you that our future is still ours to imagine. by Hannah Murphy Winter
We started imagining this issue last year, before Donald Trump won the election; before he started dismantling FEMA, the EPA, NOAA, and every other agency that’s trying to help us stave off the climate crisis.
And while the country has changed in drastic ways since last year, our approach to this issue didn’t. From the beginning, we knew we couldn’t look at the climate crisis in a vacuum. We can’t separate it from the rest of our lives, our work, our art, or the way we imagine the future. Treating it as a separate issue just makes it easier to turn it into something huge, overwhelming, and unapproachable; or, worse, something we can pretend doesn’t exist—or deny altogether.
And so we built this issue with that in mind. We'll be rolling out the content online over the next week or so, and you can find a physical issue at hundreds of locations—from Tacoma to Everett—starting today. In it, we take on some of our region’s big, scientific questions about the climate crisis: Staff Writer Vivian McCall asks experts if we’re really on the cusp of cracking the code on nuclear fusion energy, as one local startup claims. I asked if the fires that happened in Los Angeles in January could happen here.
But we also asked how the climate crisis shapes the art we make, and the art we seek. Senior Staff Writer Charles Mudede explored why there’s a trend of doomsday bunkers on TV, from Fallout to Silo to Paradise. And Stranger contributor Nathalie Graham visited the recycling dump to see how their artists-in-residency program is transforming trash into treasure.
Through the process, we looked for little, compact seeds of hope. Our managing editor Megan Seling found one in a Bluesky thread, of all places, about how some scared, confused, half-pound pocket gophers turned the scorched ash from Mount St. Helens’s eruption into thriving wildlands again. We put that thread (written by science journalist Margaret Harris) in the hands of the talented illustrator Greg Stump, who turned it into a comic about surviving in a hostile environment—the same way the gophers kept digging through the ash.
And we’re so excited to introduce you to Drippy, the Soggy Paper Straw. We and our (very real and not at all made up) readers had a lot of questions about environmentalism in 2025. Is it worth it to replace your gas-powered car with an electric one? Are the recycling rules still the same as the ones we learned as kids? How many microplastics are really in my junk? Drippy (Microsoft’s Clippy’s Zoomer nephew) is here to answer all that and more.
Ultimately, if this issue does anything, I hope it reminds you that our future is still ours to imagine. Almost every story in this paper is a story about making beauty out of trash, ash, or absolutely nothing.
So remember to keep digging.
Hannah Murphy Winter
Editor-in-Chief
Cover Art by Tyler Gross
Emma Schmuckler Is an Undisputable Champion of Comedy [The Stranger]
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Saturday, April 5. by Megan Seling
On Saturday, April 5, some of Seattle’s funniest comedians will take the stage as part of The Stranger’s annual Undisputable Champions of Comedy showcase. It’ll be hilarious! The lineup was curated with help from everyone’s comedy bestie, Emmett Montgomery, co-host of Joketellers Union at Clock-Out Lounge and purveyor of all things delightfully weird. And this year’s lineup is stacked with talent, from a local comedy legend who once won over a crowd of bikers at an Aurora bar in the ’80s to a comic who uses laughter as a way to deal with grief. We even have a bunny and a fundamentalist Christian pastor on the bill! It’s gonna be great.
We're posting interviews with the champs all week long, and this morning, say hello to Emma Schmuckler! She's the founder of Queer/Bar's One Man Show, a showcase of female and non-binary comedians… and one man. (The next one is April 27, btw.)
Describe your comedy in five words.
Heartwarming, disruptive storytelling. Also, gay.
What’s the first thing you did when you found out you were chosen as one of The Stranger’s Champions of Comedy?
In all honesty, one of the first things I did was text my ex. Mostly because he's a friend, and I wanted to share the excitement. But also, who doesn't revel in an ex seeing you win?
View this post on Instagram
You’ve used comedy to deal with some heavy stuff. You produced the comedy showcase Good Grief, which featured comedians sharing stories about death and grief, for example. Why is platforming humor in dark times important to you?
Eight months after I started doing stand-up, my dad died suddenly (unrelated to the stand-up, I think. But his autopsy was inconclusive, so there's really no way to know). Two weeks after he died, I was booked to do one of my first-ever paid spots. I didn't think I could do it. The haze of acute grief was all-consuming—how could I get on stage and joke about pap smears and threesomes?
So I didn't. I talked about ICUs and funeral homes and my complicated relationship with my dad. My set was unpolished and raw. I closed by reading the "honest" obituary my siblings wouldn't let me publish in the newspaper. As unconventional as my set was, it killed. This was a real turning point for me as an artist. These days, the majority of my material is true stories about my real life, dark times and all.
People are hungry for vulnerability. There's a catharsis in hearing someone talk about the thing no one talks about. And there's an even greater catharsis in laughing about the thing no one talks about. That being said, the traditional comedy show isn't necessarily the best venue for winding stories about the intricacies of grief. So I think it's important to create spaces where performers and audiences alike can celebrate the human condition in its entirety—without totally killing the vibe.
Where is your favorite place to see comedy in Seattle right now?
I love Kitchen Sink at the Rendezvous on Wednesdays. It's a variety mic, so it's a rad place to see in-progress alt-comedy like sketch, characters, and powerpoints. They also produce a showcase at the Rendezvous on the first Friday of every month.
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Sat April 5, Washington Hall, $25, 21+. Tickets available here.
Planting Hope: Join Humble in Supporting One Tree Planted for Earth Month [Humble Bundle Blog]
As we celebrate Earth Month this April, Humble is excited to spotlight our featured charity, One Tree Planted, a nonprofit dedicated to global reforestation. With climate change and deforestation posing alarming threats to our planet, supporting organizations like One Tree Planted is more crucial than ever. One Tree Planted has made remarkable strides in environmental conservation since its founding in 2014. Their mission is simple …
The post Planting Hope: Join Humble in Supporting One Tree Planted for Earth Month appeared first on Humble Bundle Blog.
[$] Catching up with calibre [LWN.net]
Saying that calibre is ebook-management software undersells the application by a fair margin. Calibre is an open-source Swiss Army knife for ebooks that can be used for everything from creating ebooks, converting ebooks from obscure formats to modern formats like EPUB, to serving up an ebook library over the web. The most recent major release, calibre 8.0, brings a better text-to-speech engine, a tool for creating audio overlays when authoring ebooks, support for profiles in the ebook viewer, and more.
Slog AM: Cory Booker Is a Badass, Trump Calls Today "Liberation Day," and Bob Ferguson Shoots Down a Wealth Tax [The Stranger]
Seattle's Only News Roundup. by Hannah Murphy Winter
Good morning! We’re getting some sun this afternoon, and the temps will get up into the 50s. I’m sure April will pull the rug out from under us soon, so enjoy it today!
It’s April 2: Did you fall for anything stupid yesterday? My local favorite was the NRDC’s “narwhal spotting.”
View this post on Instagram
“I Rise”: Senator Cory Booker stood and spoke on the Senate floor from 7 p.m. on Monday to 8:05 Tuesday night. He held the floor for more than 25 hours—breaking the previous record held by Strom Thurmond, a segregationist who was filibustering against a civil rights bill (that was lost on absolutely no one in the chamber). Booker hadn’t eaten since Friday. He stopped drinking water on Sunday night. He never went to the bathroom or sat down for 25 hours. And he spent those hours demanding that the body see the harm the Trump administration is causing all of their scared constituents, and hundreds of thousands of people watched him do it. Technically, this speech did nothing. He wasn’t pushing against policy, just demanding attention and action and hope. But maybe for the first time since November 5, he gave hundreds of thousands of us something to collectively root for. I think that’s something we can build on, if we choose to.
A New Holiday: Trump is calling today “Liberation Day in America”: the day he’s announcing a heap of new “reciprocal” tariffs. He’s announcing the specifics at 4 p.m. ET today, but economists overwhelmingly agree that this is going to hit most Americans in the wallet. Trump, meanwhile, is using sizzle reels of Fox propaganda clips to insist that this is going to drive billions of dollars in investment in American business. As economist Paul Krugman put it: “I don’t see any thinking at all.”
Musk Loses in Wisconsin: In a victory for abortion and labor rights, Judge Susan Crawford won the Wisconsin state Supreme Court race, crushing anti-abortion Judge Brad Schimel. Schimel, best known for his charming parenting confessions ("I just psychologically beat the daylights out of an 8-year-old in the back seat”) was bankrolled by Elon Musk, another grade-A dad. Musk spent $20 million backing Schimel, and his super PAC offered $50 on Tuesday for Cheesehead selfies outside of polling sites. Super normal! The race shattered record spending as the most expensive judicial contest in US history, topping $100 million. "As a little girl growing up in Chippewa Falls, I never could have imagined that I'd be taking on the richest man in the world for justice in Wisconsin,” Crawford said at her election night watch party. “And we won!"—likely locking in liberal control for the next three years.
The GOP Won in Florida: But not by the margin they would have liked to. Two Trump-backed Republicans won their special congressional elections in Florida yesterday, solidifying the party’s majority in the House. For now, these wins will help President Trump’s domestic agenda, but the slim wins are giving Dems some hope for the midterms.
Batman Forever: Val Kilmer passed away yesterday at age 65. If you were an ’80s kid, you know him best as Iceman from Top Gun. If you’re a ’90s kid, you know him as Batman or Jim Morrison. If you’re younger than that, I’m just gonna assume your parents had the good sense to show you all three. In his NYT obit, they described him as “unpredictable,” “charismatic,” and “tall and handsome in a rock-star sort of way.” We hadn’t seen him much lately. He left the Hollywood spotlight around the 2010s, and when NYT asked him why, he told them that “he had other interests; he wanted to hang out with his kids.” But, he added: “Once you’re a star, you’re always a star.” To honor the star, enjoy this homoerotic masterpiece (The Stranger’s Marcus Harrison Green reminded me this morning that the phrase “mostly straight” didn’t exist in the American lexicon before Top Gun):
Luigi Faces the Death Penalty: Pam Bondi announced yesterday that the DOJ is calling for the death penalty in the Luigi Mangione case. In a statement, she wrote: “I have directed federal prosecutors to seek the death penalty in this case as we carry out President Trump’s agenda to stop violent crime and Make America Safe Again.” One of Bondi’s first acts as Attorney General was to release a memo announcing that she would be “reviving the federal death penalty and lifting the moratorium on federal executions.” In it, she called federal executions “critical work” that “undoubtedly” makes Americans safer. Doubt it. Studies have consistently shown that the death penalty isn’t a crime deterrent. You’re just killing people because you want to.
Karma’s a Bitch: Tesla sales fell 13 percent in the first three months of this year.
Local HHS Office Chopped: Remember the 10,000 jobs RFK Jr. cut yesterday? That included the entire Seattle regional office of HHS. Local officials say the closures will impact 15 million people across the Pacific Northwest and Alaska who rely on these services, and local tribes will be hit especially hard—in case there was any question that MAHA just means leaving vulnerable communities without critical support. Washington AG Nick Brown has joined a multi-state lawsuit against the Trump administration, arguing that the slashing of funding for health programs violate federal law and will harm communities already struggling with public health challenges.
Ferguson Says Nope to a Wealth Tax, Again: Did you think Bob Ferguson had a splinter of progressive backbone left? Cute. On Tuesday, he splashed cold water on Democrats’ proposal to fix our state budget deficit by taxing the ultra-rich. My guy says he won’t commit to the wealth tax, but nor will he commit to cutting everything, basically just leaving everyone on read like a bad Hinge date. So, we’re stuck in a Schrödinger’s budget crisis where the only certainty is that billionaires’ piles of dubiously concentrated cash will go untouched. Republicans are acting like this is some full-throated endorsement of trickle-down economics when, in reality, Ferguson is just ghosting both sides, hoping the budget magically balances itself. It won’t.
Why Aren’t We Taxing the Rich? Ferguson claims that he won’t sign a bill with a wealth tax because it’s “novel, untested, difficult to implement” and likely to face legal challenges. It’s true that it’s novel, and the WA Department of Revenue released a report at the end of last year laying out guidance for avoiding legal pitfalls, and warning that the revenue from the tax could be difficult to predict. But the alternative can’t be cutting essential services throughout the state, especially while we’re losing more support from the federal government every day. The reality is that we need a new, progressive tax model, and Ferguson is intentionally failing to use even an ounce of imagination to build something better. The silver lining? He left the door open for a payroll tax similar to our JumpStart tax. But he also said he wouldn’t pass a budget without $100 million over two years to hire cops.
For Your Wednesday: Doppelganger by the Montreal-based Japanese band TEKE:TEKE—a perfect song to commute to.
This Slog AM was a group project with Marcus Harrison Green.
Copyright-Aware AI: Let’s Make It So [Radar]
On April 22, 2022, I received an out-of-the-blue text from Sam Altman inquiring about the possibility of training GPT-4 on O’Reilly books. We had a call a few days later to discuss the possibility.
As I recall our conversation, I told Sam I was intrigued, but with reservations. I explained to him that we could only license our data if they had some mechanism for tracking usage and compensating authors. I suggested that this ought to be possible, even with LLMs, and that it could be the basis of a participatory content economy for AI. (I later wrote about this idea in a piece called “How to Fix ‘AI’s Original Sin’.”) Sam said he hadn’t thought about that, but that the idea was very interesting and that he’d get back to me. He never did.
And now, of course, given reports that Meta has trained Llama on LibGen, the Russian database of pirated books, one has to wonder whether OpenAI has done the same. So working with colleagues at the AI Disclosures Project at the Social Science Research Council, we decided to take a look. Our results were published today in the working paper “Beyond Public Access in LLM Pre-Training Data,” by Sruly Rosenblat, Tim O’Reilly, and Ilan Strauss.
There are a variety of statistical techniques for estimating the likelihood that an AI has been trained on specific content. We chose one called DE-COP. In order to test whether a model has been trained on a given book, we provided the model with a paragraph quoted from the human-written book along with three permutations of the same paragraph, and then asked the model to identify the “verbatim” (i.e., correct) passage from the book in question. We repeated this several times for each book.
O’Reilly was in a position to provide a unique dataset to use with DE-COP. For decades, we have published two sample chapters from each book on the public internet, plus a small selection from the opening pages of each other chapter. The remainder of each book is behind a subscription paywall as part of our O’Reilly online service. This means we can compare the results for data that was publicly available against the results for data that was private but from the same book. A further check is provided by running the same tests against material that was published after the training date of each model, and thus could not possibly have been included. This gives a pretty good signal for unauthorized access.
We split our sample of O’Reilly books according to time period and accessibility, which allows us to properly test for model access violations:
We used a statistical measure called AUROC to evaluate the separability between samples potentially in the training set and known out-of-dataset samples. In our case, the two classes were (1) O’Reilly books published before the model’s training cutoff (t − n) and (2) those published afterward (t + n). We then used the model’s identification rate as the metric to distinguish between these classes. This time-based classification serves as a necessary proxy, since we cannot know with certainty which specific books were included in training datasets without disclosure from OpenAI. Using this split, the higher the AUROC score, the higher the probability that the model was trained on O’Reilly books published during the training period.
The results are intriguing and alarming. As you can see from the figure below, when GPT-3.5 was released in November of 2022, it demonstrated some knowledge of public content but little of private content. By the time we get to GPT-4o, released in May 2024, the model seems to contain more knowledge of private content than public content. Intriguingly, the figures for GPT-4o mini are approximately equal and both near random chance suggesting either little was trained on or little was retained.
AUROC scores based on the models’ “guess rate” show recognition of pre-training data:
We chose a relatively small subset of books; the test could be repeated at scale. The test does not provide any knowledge of how OpenAI might have obtained the books. Like Meta, OpenAI may have trained on databases of pirated books. (The Atlantic’s search engine against LibGen reveals that virtually all O’Reilly books have been pirated and included there.)
Given the ongoing claims from OpenAI that without the unlimited ability for large language model developers to train on copyrighted data without compensation, progress on AI will be stopped, and we will “lose to China,” it is likely that they consider all copyrighted content to be fair game.
The fact that DeepSeek has done to OpenAI exactly what OpenAI has done to authors and publishers doesn’t seem to deter the company’s leaders. OpenAI’s chief lobbyist, Chris Lehane, “likened OpenAI’s training methods to reading a library book and learning from it, whereas DeepSeek’s methods are more like putting a new cover on a library book, and selling it as your own.” We disagree. ChatGPT and other LLMs use books and other copyrighted materials to create outputs that can substitute for many of the original works, much as DeepSeek is becoming a creditable substitute for ChatGPT.
There is clear precedent for training on publicly available data. When Google Books read books in order to create an index that would help users to search them, that was indeed like reading a library book and learning from it. It was a transformative fair use.
Generating derivative works that can compete with the original work is definitely not fair use.
In addition, there is a question of what is truly “public.” As shown in our research, O’Reilly books are available in two forms: Portions are public for search engines to find and for everyone to read on the web; others are sold on the basis of per-user access, either in print or via our per-seat subscription offering. At the very least, OpenAI’s unauthorized access represents a clear violation of our terms of use.
We believe in respecting the rights of authors and other creators. That’s why at O’Reilly, we built a system that allows us to create AI outputs based on the work of our authors, but uses RAG (retrieval-augmented generation) and other techniques to track usage and pay royalties, just like we do for other types of content usage on our platform. If we can do it with our far more limited resources, it is quite certain that OpenAI could do so too, if they tried. That’s what I was asking Sam Altman for back in 2022.
And they should try. One of the big gaps in today’s AI is its lack of a virtuous circle of sustainability (what Jeff Bezos called “the flywheel”). AI companies have taken the approach of expropriating resources they didn’t create, and potentially decimating the income of those who do make the investments in their continued creation. This is shortsighted.
At O’Reilly, we aren’t just in the business of providing great content to our customers. We are in the business of incentivizing its creation. We look for knowledge gaps—that is, we find things that some people know but others don’t and wish they did—and help those at the cutting edge of discovery share what they learn, through books, videos, and live courses. Paying them for the time and effort they put in to share what they know is a critical part of our business.
We launched our online platform in 2000 after getting a pitch from an early ebook aggregation startup, Books 24×7, that offered to license them from us for what amounted to pennies per book per customer—which we were supposed to share with our authors. Instead, we invited our biggest competitors to join us in a shared platform that would preserve the economics of publishing and encourage authors to continue to spend the time and effort to create great books. This is the content that LLM providers feel entitled to take without compensation.
As a result, copyright holders are suing, putting up stronger and stronger blocks against AI crawlers, or going out of business. This is not a good thing. If the LLM providers lose their lawsuits, they will be in for a world of hurt, paying large fines, reengineering their products to put in guardrails against emitting infringing content, and figuring out how to do what they should have done in the first place. If they win, we will all end up the poorer for it, because those who do the actual work of creating the content will face unfair competition.
It is not just copyright holders who should want an AI market in which the rights of authors are preserved and they are given new ways to monetize; LLM developers should want it too. The internet as we know it today became so fertile because it did a pretty good job of preserving copyright. Companies such as Google found new ways to help content creators monetize their work, even in areas that were contentious. For example, faced with demands from music companies to take down user-generated videos using copyrighted music, YouTube instead developed Content ID, which enabled them to recognize the copyrighted content, and to share the proceeds with both the creator of the derivative work and the original copyright holder. There are numerous startups proposing to do the same for AI-generated derivative works, but, as of yet, none of them have the scale that is needed. The large AI labs should take this on.
Rather than allowing the smash-and-grab approach of today’s LLM developers, we should be looking ahead to a world in which large centralized AI models can be trained on all public content and licensed private content, but recognize that there are also many specialized models trained on private content that they cannot and should not access. Imagine an LLM that was smart enough to say, “I don’t know that I have the best answer to that; let me ask Bloomberg (or let me ask O’Reilly; let me ask Nature; or let me ask Michael Chabon, or George R.R. Martin (or any of the other authors who have sued, as a stand-in for the millions of others who might well have)) and I’ll get back to you in a moment.” This is a perfect opportunity for an extension to MCP that allows for two-way copyright conversations and negotiation of appropriate compensation. The first general-purpose copyright-aware LLM will have a unique competitive advantage. Let’s make it so.
Joe Marshall: Lisp at Work [Planet Lisp]
Lisp is not a good fit for most of the projects I'm doing at work. Our company has few Lisp programmers, so there would be no one to help maintain any code I wrote, and no one has a Lisp environment set up on their machine. I'll sometimes do a quick prototype in Lisp, and I keep a REPL open on my machine, but I don't develop code I expect to share or deploy. Once I have a prototype or proof of concept, I'll write the real thing in a language that is more commonly used at work.
But sometimes, Lisp is such a good fit for a problem that it overrides the considerations of how well it fits into your company's ecosystem. Not often, but sometimes.
I had to migrate some builds from CircleCI 2 to CircleCI 4. We had tried (twice) and failed (twice) to do an in-place upgrade of the server, so we instead brought up CircleCI 4 in parallel and migrated the builds over. To migrate a build, we had to extract the build information from the old server and import it into the new server. The API to the old CircleCI server did not expose all the data we needed, and there was no API on the new server that let you import everything we needed.
But CircleCI is written in clojure. So you can connect to a running instance of CircleCI and open a REPL. The REPL has access to all the internal data structures. It is an easy matter to write some lisp code to extract the necessary data and print it to stdout. It is also an easy matter to write some lisp code to read some data from stdin and import it into the new server.
The migration code could be written in any language, but it had to talk to a clojure REPL, format data in such a way that the clojure REPL could read it, and parse the output from the clojure REPL, which was going to be a Lisp object. Any language with a Common Lisp reader and printer would do, but you sort of get these for free if you actually use Lisp. I knew that the migration code could be written in Lisp because I had already prototyped it.
So I wrote a migration function that would take the name of the project to be migrated. The I created a Dockerfile that would boot an instance of sbcl on a core file. I preloaded the migration code and dumped the core. I ran the Dockerfile and got an image that, when run, would migrate a single project read from the command line. I then created a server that a user could visit, enter the name of his project, and it would run the Docker image as a kubernetes job.
We migrated most of the projects this way. At one point, I wrote an additional script that would read the entire list of projects in the old server and simply print them to stdout. After we shut down the migration server, I'd get requests from people that didn't seem to understand what a deadline was. I could prime the migration script from the file and it would initialize a project on the new server with the old state that I dumped. Migration stragglers could often recover this way.
Using Lisp for the migration tool did not add risk to the company. Just using the tool did not require Lisp knowledge. Anyone that needed to understand the migration process in detail had to understand clojure anyway. The migration took place over a period of weeks, and the migration tool was shut down at the end of this period. Long term maintenance was not a concern. Users of the migration tool did not have to understand Lisp, or even know what language was being used. It was a black box kubernetes job. I got buy-in from management because the tool simply worked and solved a problem that had twice been been unsuccessfully attempted before.
The Big Idea: Ada Palmer [Whatever]
Author and historian Ada Palmer was asked a seemingly simple question and, of course, not only was the answer to the question more complicated than it seemed, but the question itself was more than a little suspect. Palmer is here to explain why in this Big Idea for Inventing the Renaissance.
ADA PALMER:
Inventing the Renaissance began that grew into a book, trying to answer the terrible question that I and all my Renaissance studies friends got asked by journalists dozens of times during COVID: “If the Black Death caused the Renaissance, will COVID cause an economic boom?”
The worst questions actually require really good, thorough answers to show just why the question is that bad, so by the time I finished answering this one to my satisfaction it had battle popes, and clairvoyant prophetesses, and Machiavelli’s sex life, and Lorenzo de Medici’s pet giraffe, and astral-projecting Platonists, and politically savvy princesses, all of them real, and all bundled together to try to get across the Big Idea that there is no such thing as a golden age or a dark age. There never was.
The whole idea of dark ages and golden ages is propaganda—propaganda born in the Renaissance and applied first to the Renaissance, then multiplied out from there into other histories, and textbooks, and political propaganda, and fantasy and science fiction world building, all repeating the assumption that there are such things as golden ages, and falls, and dark ages, and rebirths, and great Cycles of History.
It’s very narratively satisfying to believe in such things, so we keep repeating them even though we have thousands of fresher histories confirming that just isn’t how history worked even in the supposed original Dark Age and Renaissance which were the source of the idea. I think it’s because I’m both a historian and a science fiction writer that I can see, when I put on both hats at once, how much the way we retell history and the way we narrate imagined otherworlds are interlinked in both simultaneously advancing claims about how historical change works, and about who has power in history.
We often don’t notice how many times a day someone lies to us about history. Often the speaker doesn’t know it’s a lie, they’re repeating a lie someone repeated to them, and often the historical specifics have been dropped so it’s just a claim about how people think history works. The Washington Post covered Trump just a couple weeks ago week saying the economic plan was an economic downturn and “short-term pain” which would then turn to a “golden age.”
Now, “golden age” is common shorthand for the belief that there was an apocalypse (Fall of Rome and/or Black Death) then a Dark Age, then the golden Renaissance. This gets abstracted to the belief that there’s a natural cycle of history, that if you have a world order, you smash the world order, things are bad for a while, and then the world order recovers and you get a golden age—recovers automatically on its own as a law of history.
It’s a very appealing myth, especially to people who want to see themselves as powerful reshapers of the world, because it’s very hard to come up with a plan to improve society, it’s much easier to come up with a plan to smash society and declare that, if you smash it thoroughly enough, it will work like the Fall of the Roman Empire and the scorched Earth will grow back green after the wildfire without anyone needing to have a plan.
Spoiler: nothing social grows on its own, every social thing that exists is the hard work of human teamwork over time, and smashing it just makes that teamwork longer and harder, which is exactly what the Renaissance was: a lot of long, hard work, where individual choices and local policy were everything.
In the book I talk about what I call the History Lab—while colleagues down the hall in the Chemistry Lab and Physics Lab mix new chemicals to make new medicines or particles, in the History Lab we mix up new historical data to come up with, usually, new proofs Nazis are wrong, not just in their micro-claims like whether there were PoC or Queer people in the Middle Ages (Yes there were!) but in their macro-claims about the so-called arc of history.
The real answer to “What did the Black Death do to the economy?” is that it was totally different in different places depending on local actions and local policy. Some places did see the fabled increase in wages and empowerment of the working classes due to labor shortage. Other places saw oligarchs entrench and pass new laws restricting labor freedom and creating the first debtors’ prisons.
Yet other areas saw complete devastation as the bottom dropped out of some specific market: remember how during COVID industries like board games and home improvement boomed while tourism and fashion suffered mass bankruptcy? The Black Death did that too, and when the bottom fell out of a trade in something like walrus ivory it could make a whole region dependent on that industry empty out like Flint Michigan.
But journalists and their readers didn’t want the answer, “Policy is everything, the choices we make now really, really matter and the aftermath of COVID will hurt or harm depending on exactly what we do!” because that answer is very stressful, it puts pressure on saying Yes we do have to work hard and Yes our choices matter, and in the midst of overwhelm and burnout it’s much more emotionally satisfying to believe that great forces of history will grind on to some fixed end whether or not we force ourselves to keep on trying.
Answering this question thoroughly (Are there Dark Ages and Golden Ages?—No!) took a long book (though I hope a fun one, full of jokes and anecdotes and chess-playing monkeys and angry Michelangelo) because it isn’t enough to say “Here’s who invented this myth, and what their motive was (*cough*nationalism*cough*),” it required finding a way to zoom in and show the way I, as a historian, see history actually working, not as big inhuman forces that grind on, but through exclusively human forces: the tiny decisions made by innumerable people whose efforts interact, resonate, magnify, flow, and cascade, changing the world in a messy, zoomed-in, and infinitely plural way, in which lots and lots of people try to change the world and none of them get exactly the world they wanted, but all of them contribute to changing the world in bigger, newer, weirder, stranger ways than they ever imagined.
That’s why the middle of the book is a set of fifteen mini-biographies of different Renaissance people—men, women, scholars, soldiers, assassins, monks—whose lives crisscross and intersect, sometimes telling the same story of a particular battle or a particular papacy three or four times, but from a different point of view it feels completely different, bad guys becoming good guys, triumph becoming loss, as you hop perspectives and so see another person who was pushing at and shaping the same thing from the same side.
Were you near Cesare Borgia, far from Cesare Borgia, with Cesare Borgia, against Cesare Borgia, afraid of Cesare Borgia, in awe of Cesare Borgia—even the big protagonist names like Cesare Borgia or Machaivelli stop feeling like intimidating marble busts on pedestals and start feeling like everyday overwhelmed real human beings like ourselves when we put back in the many, many sides and points of view that were all pushing, everything everywhere all at once.
So Inventing the Renaissance is really about power—who really has the power in history. And the answer, the precious, frail-as-starlight, stressful-hopeful answer to “Who has power in history?” is: Us. Every one of us. Always. It’s vital that we believe that very Big Idea. It’s scary, feeling that our actions do matter. It’s also scary seeing how much bad actors draw on bad history to shape their bad actions. But we need to zoom in on how history works to show that the big names who shaped our past felt just as overwhelmed and powerless as we do, but the ones who kept on trying even in the face of overwhelm did change the world.
I’ll close with a quote I use to open Inventing the Renaissance, from a letter a friend wrote to Machiavelli who’d just written the first half of a history of the decade they’d just lived through (the decade around the year 1500). The friend urged Machiavelli: you must write more, finish your history, because without a good history of this moment future generations will never believe how bad it was, and they will never forgive us for losing so much so quickly. Feels pretty much like right now, doesn’t it? That’s the decade when Michelangelo carved the David and Leonardo painted the Mona Lisa, and about which Machiavelli was about to write The Prince.
A lot of Italy burned in that decade, but those like Machiavelli who worked hard to protect what they could often succeeded, and a lot was saved that we now find precious. There was a big macro-study released this year showing that, over the past 15 years, two thirds of conservation efforts that aimed at saving an endangered species succeeded; one third failed but two-thirds succeeded, and the ones that failed taught us a lot so the next ones can learn from them and do better. Machiavelli’s peers who worked hard at it saved things from disaster at a similar rate—and so can we.
I hope people reading this are familiar with the Speculative Resistance movement, the power genre fiction has by showing us imagined other worlds to show us new possibilities and empower us to demand more and better of this world too. Inventing the Renaissance is history written in that same lens, part of that same project, because it’s empowering visiting other ways the world was, and the projects and people that helped hold the line during the worst of times, and gave the next generations something much better than they had themselves. We can do that. Inventing the Renaissance aims to leave you sure we can do that. And that we will.
—
Inventing the Renaissance USA: Amazon | Barnes & Noble | Bookshop | Powell’s | Kobo | Libro
Inventing the Renaissance UK: Amazon.uk | Blackwell’s | Bookshop.uk | Kobo.uk
USA only: 30% discount ordering direct from UChicago Press coupon: UCPNEW
Author Socials: Website | Blog (ExUrbe) | Bluesky | Fediverse | Podcast
Tell Congress: No to Internet Blacklists [EFF Action Center]
FADPA, and other proposals in the works, would force internet service providers (ISPs) and domain name system (DNS) providers to block sites, including U.S. sites, based on one-sided copyright accusations, even when those sites also host lawful content. These blunt tactics would fragment the internet, silence innocent users, invite more censorship by people in power, and push Americans to rely on risky workarounds just to access information.
We've seen this play out before. Thirteen years ago, internet freedom supporters stopped SOPA and PIPA. Now we have to do it again.
Tell your members of Congress: Don't let private actors build a censorship machine into the core of the internet. Block site-blocking legislation now.
Adding delays to our task sequencer, part 1 [The Old New Thing]
Suppose you want to use the task_sequencer
class we created a while back (and which we
fixed not too long ago), but you also want to implement a
rudimentary form of throttling, so that tasks run at a specified
maximum rate.
Suppose for concreteness that you want to have a 1-second
cooling off period before the next task runs. How would we add this
to our task_sequencer
?
Well, the thing that kicks off the next task is the
completer
, which calls complete()
on the
chained task to trigger the start of the next task. All we have to
do is delay that completion. For that, we can use
fire_and_forget
.
struct task_sequencer { ⟦ ... ⟧ struct completer { ~completer() { complete_later(std::move(chain)); } std::shared_ptr<chained_task> chain; static fire_and_forget complete_later( std::shared_ptr<chained_task> chain) { co_await winrt::resume_after(1s); chain->complete(); } }; ⟦ ... ⟧ };
Instead of calling chain->complete()
immediately
from the destructor, we kick off a coroutine that calls it after
waiting one second.
This coroutine is simple enough you might find it easier to inline it, so that all the logic is in one place.
struct task_sequencer { ⟦ ... ⟧ struct completer { ~completer() { [](auto chain) -> winrt::fire_and_forget { co_await winrt::resume_after(1s); chain->complete(); }(std::move(chain)); } std::shared_ptr<chained_task> chain; }; ⟦ ... ⟧ };
Maybe instead of waiting one second between the completion of one operation and the start of the next, you want to wait one second between the start of one operation and the start of the next. We’ll look at that next time.
The post Adding delays to our task sequencer, part 1 appeared first on The Old New Thing.
[$] An update on GCC BPF support [LWN.net]
José Marchesi and David Faust kicked off the BPF track at the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit with an extra-long session on what they have been doing to support compiling to BPF in GCC. Overall, the project is slowly working toward full support for BPF, with most of the self-tests now passing using Faust's in-progress patches. However, the progress toward that goal has turned up a number of problems with how Clang supports BPF that needed to be discussed at length to find a path forward for both projects.
Thunderbird plans "Thundermail" email and other services [LWN.net]
Ryan Sipes has
announced efforts to expand Thunderbird's offerings with web
services to "enhance the experience of using
Thunderbird
".
The Why for offering these services is simple. Thunderbird loses users each day to rich ecosystems that are both clients and services, such as Gmail and Office365. These ecosystems have both hard vendor lock-ins (through interoperability issues with 3rd-pary clients) and soft lock-ins (through convenience and integration between their clients and services). It is our goal to eventually have a similar offering so that a 100% open source, freedom-respecting alternative ecosystem is available for those who want it.
The planned services include hosted email, appointment
scheduling, a revival of Firefox Send, and
(of course) an AI assistant based on a partnership with Flower AI. The AI features will "always
be optional for use by people who want them
". Sipes is managing
director of product for Thunderbird's parent organization, MZLA
Technologies Corporation. LWN covered his GUADEC 2024
keynote last July.
Site-Blocking Legislation Is Back. It’s Still a Terrible Idea. [Deeplinks]
More than a decade ago, Congress tried to pass SOPA and PIPA—two sweeping bills that would have allowed the government and copyright holders to quickly shut down entire websites based on allegations of piracy. The backlash was immediate and massive. Internet users, free speech advocates, and tech companies flooded lawmakers with protests, culminating in an “Internet Blackout” on January 18, 2012. Turns out, Americans don’t like government-run internet blacklists. The bills were ultimately shelved.
Thirteen years later, as institutional memory fades and appetite for opposition wanes, members of Congress in both parties are ready to try this again.
Act Now To Defend the Open Web
The Foreign Anti-Digital Piracy Act (FADPA), along with at least one other bill still in draft form, would revive this reckless strategy. These new proposals would let rights holders get federal court orders forcing ISPs and DNS providers to block entire websites based on accusations of infringing copyright. Lawmakers claim they’re targeting “pirate” sites—but what they’re really doing is building an internet kill switch.
These bills are an unequivocal and serious threat to a free and open internet. EFF and our supporters are going to fight back against them.
Today, many websites are hosted on cloud infrastructure or use shared IP addresses. Blocking one target can mean blocking thousands of unrelated sites. That kind of digital collateral damage has already happened in Austria, Russia, and in the US.
Site-blocking is both dangerously blunt and trivially easy to evade. Determined evaders can create the same content on a new domain within hours. Users who want to see blocked content can fire up a VPN or change a single DNS setting to get back online.
These workarounds aren’t just popular—they’re essential tools in countries that suppress dissent. It’s shocking that Congress is on the verge of forcing Americans to rely on the same workarounds that internet users in authoritarian regimes must rely on just to reach mislabeled content. It will force Americans to rely on riskier, less trustworthy online services.
The First Amendment should not take a back seat because giant media companies want the ability to shut down websites faster. But these bills wrongly treat broad takedowns as a routine legal process. Most cases would be decided in ex parte proceedings, with no one there to defend the site being blocked. This is more than a shortcut–it skips due process entirely.
Users affected by a block often have no idea what happened. A blocked site may just look broken, like a glitch or an outage. Law-abiding publishers and users lose access, and diagnosing the problem is difficult. Site-blocking techniques are the bluntest of instruments, and they almost always punish innocent bystanders.
The copyright industries pushing these bills know that site-blocking is not a narrowly tailored fix for a piracy epidemic. The entertainment industry is booming right now, blowing past its pre-COVID projections. Site-blocking legislation is an attempt to build a new American censorship system by letting private actors get dangerous infrastructure-level control over internet access.
FADPA is already on the table. More bills are coming. The question is whether lawmakers remember what happened the last time they tried to mess with the foundations of the open web.
If they don’t, they’re going to find out the hard way. Again.
Tell Congress: No To Internet Blacklists
Site-blocking laws are dangerous, unnecessary, and ineffective. Lawmakers need to hear—loud and clear—that Americans don’t support government-mandated internet censorship. Not for copyright enforcement. Not for anything.
Charity shops and their impact on society [Judith Proctor's Journal]
Is thinking of starting a phd
Proposal title: With the Best of Intentions. Society, Economy and the British Charity Landscape.
It's an interesting read that sparks a lot of ideas. Worth reading.
Gambling and sports don’t mix for me. I want a version of games without the gambling. I don’t know how parents can let their kids watch games with all the gambling ads.
Introducing Fedora Project Leader Jef Spaleta [LWN.net]
Outgoing Fedora Project Leader (FPL) Matthew Miller has announced his successor, Jef Spaleta.
Some of you may remember Jef's passionate voice in the early Fedora community. He got involved all the way back in the days of fedora.us, before Red Hat got involved. Jef served on the Fedora Board from July 2007 through the end of 2008. This was the critical time after Fedora Extras and Fedora Core merged into one Fedora Linux where, with the launch of the "Features" process, Fedora became a truly community-led project.
Spaleta will be joining Red Hat full time in May and Miller will be formally handing off FPL duties at the Flock conference in June.
PorteuX 2.0 released [LWN.net]
Version 2.0 of PorteuX, a distribution based on Slackware Linux, has been released. This release adds the ability to test experimental Wayland sessions for the Cinnamon, LXQt, and Xfce desktops. PorteuX 2.0 updates the Linux kernel to 6.14 and includes many package updates and bug fixes. Users have the choice of PorteuX stable or its rolling release called current. See the install.txt for instructions on installing PorteuX to disk.
Literally Windows on arm: here is Windows running on the Pixel Watch 3 [OSnews]
Right off the bat, there is not that much use for a Pixel Watch with Windows on it. The project, as the maker says, is for “shits and giggles” and more like an April Fool’s joke. However, it shows how capable modern smartwatches are, with the Pixel Watch 3 being powered by a processor with four ARM Cortex A53 cores, 2GB of DDR4X memory, and 32GB of storage.
Getting Windows to run on Gustave’s arm, as you can imagine, took some time and effort of inspecting a rooted boot image, modifying the stock UEFI to run custom UEFI, editing the ACPI table, and patching plenty of other files. The result of all that is a Pixel Watch 3 with Windows PE.
↫ Taras Buria at Neowin
More of this sort of nonsense, please. This is such a great idea, especially because it’s so utterly useless and pointless. However pointless it may be, though, it does show that Windows on ARM is remarkably flexible, as it’s been ported to a variety of ARM devices it should never be supposed to run on. With Microsoft’s renewed entry into the ARM world with Windows on ARM and Qualcomm, I would’ve hoped for more standardisation in the ARM space to bring it closer to the widely compatible world of x86.
That, sadly, has not yet happened, and I doubt it ever will – it seems like ARM is already too big of a fragmented mess to be consolidated for easy portability for operating systems. Instead, individual crazy awesome people have to manually port Windows to other ARM variants, and that, while cool projects, is kind of sad.
FreeDOS: history, legacy, and a valuable resource for old machines [OSnews]
FreeDOS is a free and open‐source operating system designed to be compatible with MS‑DOS. Developed to keep the DOS experience alive even after Microsoft ended support for MS‑DOS, FreeDOS has grown into a complete environment that not only preserves classic DOS functionality but also introduces modern enhancements. Its simplicity and low resource requirements have made it a cherished resource for retro computing enthusiasts and a practical tool for embedded systems and legacy hardware.
↫ André Machado
A short but useful overview of what FreeDOS is. One of my favourite stories about FreeDOS will always be not just that HP offered it as an option on some of its laptops – supposedly because it couldn’t sell laptops without an operating system preinstalled – but also just how convoluted this preinstalled copy of FreeDOS was set up. They shipped several FreeDOS virtual machines on top of a minimal installation of Debian, in a complex web of operating systems and VMs.
Cory
Booker asked the right question. "Where does the Constitution
live? On paper or in our hearts?" Every living American was raised
under the Bill of Rights. That's different from other countries
which have long traditions of autocracies. Fascism on a mass scale
will have a harder time taking root in this country.
Joe Rogan said what Trump is doing is wrong. He knows he has
the right to say that. Setting a fine example. It will be hard to
suppress that.
[$] Approaches to reducing TLB pressure [LWN.net]
The CPU's translation lookaside buffer (TLB) caches the results of virtual-address translations, significantly speeding memory accesses. TLB misses are expensive, so a lot of thought goes into using the TLB as efficiently as possible. Reducing pressure on the TLB was the topic of Rik van Riel's memory-management-track session at the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit. Some approaches were considered, but the session was short on firm conclusions.
The Girl That My Mother Is Leaving Me For [Original Fiction Archives - Reactor]
Illustrated by Sara Wong
Edited by Mal Frazier
Published on April 2, 2025
In a corporate-run dystopia, a trans girl plucked out of poverty to give birth to a clone meets her replacement.
Novelette | 8,925 words
The girl that my mother is leaving me for has hair as rich and glossy as a horse chestnut. Her skin is ivory and her eyes are emerald green. Her belly is slightly round, and that’s what matters.
“This is beautiful,” she says. She’s holding up a fabric sample, deep green embroidered with gold. I wore green at my adoption too. I’ll wear black to be abandoned. She slips the little square of cloth into my hand. It’s soft like the silk it is, but her voice is softer.
We’re on the ninety-first floor of the tower. Outside the window, a woman walks by on the skyway, a guard. She’s strong and tall—guard bodies are all made that way. The skyway’s narrow and there’s no handrail, but she isn’t bothered, because her bare feet stick tight to the smooth glass. Her eyes scan for tiny drones, for cameras ordinary people couldn’t see, signs of espionage or attack. Another guard passes her going the other way; she smiles like she’s greeting a friend. I don’t know if the smile is real. People whose minds are put into enhanced bodies always say they feel the same as ever. But maybe they just don’t remember what it’s like to feel at all.
Far from this tower, people are living in slums and in camps, starving because the world is broken. I don’t want to starve in a slum or a camp. If I’m cast out, that’s probably where I’ll end up. I could beg the new daughter, Mira, not to take my mother from me, but what would be the point? She doesn’t want to starve either. She’s already carrying my mother’s child. So I can’t stop what’s going to happen. But if I am very obedient—if I smile when I’m disowned, applaud when Mira is adopted in my place, and even help to plan the double ceremony—maybe my mother will find some kind of job for me.
“Has she set a date yet?” I ask.
“Not till September, when I’ll be six months. She wants to be sure.”
“You’re already further along than I ever got.”
She makes a sympathetic face. “They say sometimes it’s harder when you were born a man.”
I should smile and agree, yes, that’s so, but I can’t help myself. “That’s a myth,” I say. “And I was born a baby.”
“I’m sorry. I didn’t mean anything.”
I can’t bring myself to apologize. But I pick up a square of fabric, an amethyst jacquard. “This one is pretty too.”
She smiles and she agrees.
My mother is the CEO of Griffin Corporation, the third of her line. Every Griffin CEO adopts a daughter. Every daughter bears a child who is the Founder’s clone, and raises her in just the same way the Founder was raised. When the CEO retires, the clone takes over. In this way every CEO of Griffin is the same.
The Founder’s mother grew up poor but she still managed to start college. So my mother went through all the records of scholarship students, and I was the one that she wanted to see. She was a woman in a suit behind a desk, no older than thirty, I thought. Her hair was pulled back in a perfect twist with not a strand left free. It was red-brown, almost the same shade as mine. She didn’t look like my real mother, didn’t really look like me—her face was more pinched, eyes were a pure green where mine have brown around the iris—but close enough that someone might have assumed we were relatives. That was the idea. I’d tell people the clone was my genetic daughter, and it would be easy for them to believe.
The CEO told me she was impressed I started on hormones so early, even though I was poor and an orphan. She said that showed determination. I spent years pleading for help while my body changed in the wrong direction, until somebody finally listened—that’s what she considered early. But I smiled and I agreed.
She said I would have to leave school, because the Founder’s mother did. I’d marry a woman, because she did that too. If I had a fiancée in mind, she would have to be vetted. If I didn’t, the company would find a bride. We could stay in the tower till the baby was born, rent-free with everything provided. Then all three of us would live for eighteen years in costume poverty. We’d have a little apartment, shabby and in bad repair, but the building would be solid and fireproof, free of mold, and every person in it screened for safety by the company. Enhanced guards would watch over me discreetly on the train to my low-level corporate job. The baby would go to a charity clinic, where fancy doctors volunteering just for that day would check her health. Also my mother would make sure we always had enough to eat. It was easier to eat, back in the Founder’s time.
“The point,” she said, “is that it will feel real to her, as it did to the Founder. But sickness and malnutrition could cause lasting damage, and I won’t allow that.”
I missed meals as a child, inhaled all kinds of spores, didn’t see doctors when I should have. But I didn’t complain that she was calling me damaged. I’m not that big a fool.
The CEO explained the rest. At eighteen my daughter would go off to college. At the end of the school year, she would be told we both died in an accident, because the Founder’s mothers did. She wouldn’t come home for our death, because her school wouldn’t let her defer her exams—Griffin money would make sure they didn’t. So there’d be no need to stage a funeral, I wouldn’t have to lie still in a coffin. I’d have a lifetime stipend. I’d be free.
I was wondering why the CEO didn’t just move into a new body before she could get old, like every other rich person who’s terrified of death. Of course I didn’t say that, but she must have guessed what I was thinking.
“To change bodies is to change perspectives. To age is to change too, even when you cheat the wrinkles by adopting a new face. I’ll move on from this body when I need to, and that’s when your child will take over the company. She’ll have the same body as I did, the same fire, the same spark of youth, the same mind. But all of that depends on you to raise her right.”
It was a better life than I was going to get out of a college degree. So I gave up my scholarship and moved into the tower. My mother paid for my surgery. I think she liked the idea of buying a clean new lab-grown reproductive system, instead of using one that some poor person had been walking around with. That’s what I’d always wanted. Not to throw away this body for a new one, but to heal it. Me, but made right.
Then I miscarried three times, and that was it, I’d missed my chance. The Founder was born when her mother was twenty, and now it was too late to meet the deadline. So my mother found another girl. Probably she found a few. After my failure, she would want to hedge her bets.
There’s no reason she couldn’t have had both of us as daughters. It’s not like I’d inherit anything—only a clone can be her heir. But my mother likes things tidy, and she doesn’t want the stink of failure clinging to her. So I’m being traded in for Mira of the auburn hair, patient and demure, everything I pretended to be. Just look at her, it’s obvious I can’t compete.
Mira has decided to sew her own dress, to have something to do. I tell her she should sit back and enjoy the idleness—it’s the last rest she is going to get for eighteen years. She says she likes to keep her hands busy. I iron the pieces of the sewing pattern flat for her so she can pin them out. At fourteen weeks it isn’t like she couldn’t stand up at an ironing board, but I want to be helpful. I’m living in these rooms on borrowed time, as a companion until Mira gets adopted and married. I should look like I’m useful, so nobody gets the idea of kicking me out early.
I remember being alone here, having no one but the guards to talk to. Mira shouldn’t have to live like that. Most of the guards are nice and you can learn a lot from them, but some of what you learn’s depressing. Usually borrowing money to take an enhanced body was the only way they could find work. Then most of every payday goes toward servicing the debt.
I know Mira met her future wife today. She’s been quiet since she came home and she hasn’t mentioned it. I watch her push pin after pin into the fabric and the paper, slipping each point underneath, then making it come up again. She makes me feel silly and idle, but I like watching her slender fingers. How they move, how they tense and then relax. Now and then she looks at me and smiles.
“How did you like her?” I ask, finally.
“She seems nice.”
“When are you going to be married?”
“The same day I become the CEO’s daughter. Adoption in the morning, wedding in the afternoon. It’s to save money, I think. They can put all the leftover food in the fridge and serve it cold at the reception.”
Mira thinks this is funny for some reason. I guess if you want to fit in with the rich kids, you treat food conservation like a joke. I never bothered trying, I wouldn’t have fit in anyway.
“What’s her name?” I ask.
“Colleen.”
It’s a small kitchen and as her belly gets bigger, it seems to get smaller. When we cook together—which for some reason she wants to do more often—she’s always brushing my arm as she reaches past me for something on the counter. Touching a hand to the small of my back to let me know she’s passing by, so I won’t bump into her. She acts like she doesn’t mind being so crowded together, but I try to keep out of her way.
Today Mira baked bread, so I make us a soup. We didn’t get the carrots we asked for, another crop failure, I guess. But I have a broth I made from tops and peels before, and there are lots of potatoes and even some beef. It’s not as good as it would have been, but it’s okay.
Mira’s always nice about my cooking, even though hers is better. She was sixteen when her parents died, she’d had a chance to learn these things. My real mother died still thinking I was a boy.
There’s a table in the kitchen but we hardly use it. Mira likes to curl up on the couch, balancing her soup bowl on her plate, her legs tucked up beside her. And she likes me to be next to her—if I try to sit down somewhere else, she’ll call me over. I know her feet swell at the end of the day now. I wish I dared to ask to rub them. I wish we could stay here forever, making our little meals and being alone. But I’ll see her for the last time at her wedding. After that, Colleen moves in.
She puts her plate down on the table, stretches out her leg, nudges my knee with her bare toe. “What are you thinking about now?”
“The wedding,” I say, which is true.
“Well, don’t. Do something useful. Rub my feet.”
I don’t think Mira’s happy with Colleen. They’ve met four times now and she’s always quiet after. I asked what the girl looked like and she changed the subject. If she refused to marry her, would my mother find somebody else? Probably, but she’d be irritated. It’s not smart to defy her just because you don’t think your bride’s pretty enough, or whatever. I don’t know if Mira understands that.
We’re sitting on the couch. She’s sewing, and I’m watching her. We had a good meal and we ought to be happy. She’s nervous, and she’s been nervous for days.
“It’s natural to worry now,” I tell her. “Once you’re married you’ll get to know her better.”
“It’s not that,” Mira says. She’s staring at her sewing and not working on it. “Do you like living here? I mean, do you like living here with me?”
“Of course I do. I wish it could go on forever.”
“What if it could? Not the here, but the with me?”
This makes me shiver but it’s perilously close to treason. I’m sure there are bugs in these rooms—probably cameras too. If my mother thinks I’m tempting Mira out of her prescribed marriage, I don’t know what she’ll do.
“We can’t,” is all I dare to say.
She puts her sewing down and finally looks at me, and I can see that she’s afraid. Of Colleen? I consider carefully what I can get away with saying.
“If something’s wrong with Colleen that could affect the baby—”
“No, nothing like that. I like her well enough, I guess. I just don’t feel the way you’re supposed to feel about someone you’re going to marry.”
Oh God, she’s going to back out of the marriage just because it’s not a romance. We’ll both be on the street. Or no, we won’t, because my mother will find some way to threaten her into obedience. But I can be thrown out, and even if I’m not, everything will be much worse for both of us.
“This is a job that you signed up for. It’s for the baby’s sake. You have to think of it that way. The feelings will come after.”
“That’s what I thought. But then I met you. I can’t think of marrying anyone else.”
She looks into my eyes, and I don’t know what she can possibly be seeing other than panic and disbelief, but whatever it is makes her bold enough to say it. “I love you.”
She kisses me, soft and tentative. I can feel that she’s trembling. This terrifies her, and me too. I never even dared to hope that she could want me. But even as we’re still kissing, as she presses close against me, the certainty sinks in that what she feels now isn’t love. It’s not even desire. It’s only mercy.
I pull away a little. We have to get this right. There are cameras and microphones to worry about. “I love you too,” I say, and it sounds real.
It’s not like that takes any acting. How could I not love her, when she’s throwing me a lifeline? She’s afraid I’ll be turned out on the street—or maybe she knows I will, my mother might have said something. So she’s offering me a life with her and with the baby. It would be safer for her if she married Colleen, like my mother planned. She’s too good to do that, she’s too kind.
She holds tight to me. “I was so worried you’d say no.” She’s stopped trembling, all the tension has gone out of her—it must be visible, for anyone who’s watching. She’s really good at this.
“I’ll make you a dress for the wedding,” she adds.
I think of saying that technically, she’s supposed to ask me to marry her, but what would be the point? We both know the answer would be yes—it’s not like I have any better options. Instead I say what matters.
“We have to ask my mother first.”
Mira tells the CEO that we’re in love, words spilling out in an excited nervous rush, sounding younger than she is. She’s so much better at talking to my mother than I am. She even manages to sound contrite when she apologizes for disrupting Griffin’s plans. “I can’t help it,” she says. “You put us together and we fell in love—that seems like fate.”
I doubt my mother believes in fate and I’m sure she had her answer ready before we walked in here. She gives a practiced sigh and turns her gaze to me. “Well, you’ve been vetted. You already know what’s required of a clone’s parent. Your infertility is no defect in a daughter-in-law—a benefit, even. One of my mothers got pregnant when I was six. Of course it had to be aborted before she could show. The founder never had a sibling.”
I wonder if the mother wanted that. I wonder how the CEO found out it happened.
“My mothers were never in love,” she adds. “It’s not essential, obviously, but it might reduce the chances of that kind of complication.”
She pauses, like she’s considering. Was the Founder like this—treating everyone like an object, even herself? Or did that only start when Griffin started raising clones on lies?
When did she find out her mothers weren’t really dead, that they took their payoff and abandoned her? When will the child we raise find out?
“Very well,” she says. “I’ll give Colleen her walking papers.”
I wish she hadn’t said that. I don’t want to think about somebody else being put out on the street for my sake. Maybe Colleen didn’t give up as much as I did—maybe she still has a life she can go back to. Maybe I just won’t think about it.
Mira and I look grateful and don’t meet each other’s eyes.
Mira wears the green-and-gold she chose to her adoption. She wears the amethyst I picked out at our wedding. She looked better in the green, of course. The cream lace dress she made for me is every bit as perfect as she said it would be. All the fabrics that I wanted for myself got vetoed. “You are not a summer, you’re an autumn. You can’t wear those dusty tones.” This is some kind of a system, an astrology for colors. Still, I like it. Summer is smoke in the air, thought-crushing heat. It’s fainting in the sun and burning yourself if you fall on the sidewalk. Autumn is reprieve. That’s what I hope I’ll be to her.
We weren’t allowed to invite anyone. Nobody’s supposed to know what CEOs of Griffin look like, because then someone might recognize her clone. She’s invited the people who’re in on the secret, but they all seem more like underlings than friends. None of them bother to talk to us, but we still have to keep up appearances.
Mira is the picture of a happy bride. I never knew she was so good at acting. We dance, we lean our heads together, I kiss her even when nobody’s looking, except, probably, a camera. We say “I love you,” and she sounds just like she means it. I quiver whenever her hand touches mine, my whole skin is embarrassed being next to her. I know all these people are wondering why she’d want someone like me. It wouldn’t matter what they thought, if only she really did.
That night we share a bed, of course. She switches the light off, so the cameras can’t see us as well. Then she turns onto her side and kisses me. She puts a hand against my collarbone, then moves it down. She does like to keep her hands busy. I guess so do I. I know this is because of pity, or to make the marriage look convincing to my mother. But she’s lovely in the dark, the way she feels against me. I wish I could believe she wanted me, but for a little while I let myself pretend.
There’s a meal she’s been wanting to make for a while. She chopped up cabbage weeks ago in preparation, bathed it in brine in a jar that she’d boiled, aged it on the counter. Now the homemade sauerkraut is in the fridge and we have all the vegetables we need, leftover chicken stock that needs to be used up, plenty of ground beef and even some butter and pork. Tonight’s the night. Mostly I cook the meal at her direction so she can stay off her feet, except that I have no idea how to make pie crust, so she does that sitting at the kitchen table. Meanwhile I cut up fresh cabbage to combine with sauerkraut in the soup. It seems like something you would only make because you got a lot of cabbage cheap, and I’m not expecting much, but it tastes wonderful—sour, but also a little bit sweet from the carrots. Then instead of bread with soup like usual, I get a mouthful of the meat and buttery crust.
“This is so rich,” I tell her. “I feel like a queen.”
“I always felt that way when I was little.”
So probably her real mom or her dad made this. I don’t think she likes to talk about them, so I don’t press for details. I wish I could know everything about her, but it really doesn’t matter. All that matters is this time, us here together, an interlude with no beginning that will never end.
But her belly’s getting bigger, and sometimes reality leaks in. After dinner she picks up her sewing, but her mind keeps wandering. I see her looking at the bookshelf where we keep our wedding present from her mother, the only one we got—we wouldn’t have been allowed to take anything else with us, after the baby was born. A pile of old board games that her mother told us were the Founder’s, then her grandmother’s, then hers. She gave them to us in the reception hall after the other guests had left. Mira carefully removed the wrapping paper and held up a box, admiring its condition. “You must have been very careful with your things.”
“We were, as children go,” her mother said. “But parts have been replaced as needed.”
Now they’re in a loose stack on the shelf, bright-colored boxes, long and flat. Mira can’t stop being distracted by them. Finally she says, “Do you want to try one?”
“Sure,” I say, although I don’t.
I just pick the one on the top of the pile. We take it to the table, assemble the board, read part of the instructions and give up, then start to play. Parents and children are pink and blue pegs slotted into the outside of old cars, and their colors never change. We both get educations and houses, we pile up money just by moving forward. At first it just seems stupid, then it starts to feel like a sick joke. We’re supposed to count up all our assets at the end and figure out who won, but we don’t have the heart.
“It’s colorful and things are happening all the time,” she says. “Our daughter will like it.”
“We’re going to get sick of it, aren’t we?”
“I don’t know. It’s different with a child, don’t you think? They’re having fun, so you have fun.”
“Maybe.” I imagine our daughter, a little brown-haired girl in a blue dress, leaning in over the board to move a car three squares. Excited, she demands more money from the bank. She’s probably already winning. What lies are we telling her that day? What are we trying to make her be?
“Anyway,” Mira says, putting the lid on the box, “a baby could choke on those cars. It’ll have to be put away until she’s old enough. Probably all of them will.”
I understand what she’s saying. When we move into our new apartment, we’ll put the games up on the top shelf of our closet, and this one will never find its way back down again. Mira and I work well together in this way, I think. Even if she’ll never love me, she can be my co-conspirator. Together we can hollow out a little space where things make sense.
Mira’s due in sixteen days the night that her phone wakes us. She picks it up and listens. “Okay,” she says at last, and puts it down.
“Vega Corporation is invading the tower. My mother is dead. We should each pack a bag, and somebody will take us to safety.”
We wait an hour and then the lock on the door clicks, making us jump. Nobody opens it. I go to answer, hoping it’s a guard, fearing it’s Vega soldiers. But the hall is empty. Nothing’s happened except that the door is unlocked and it won’t lock again.
“I don’t think anyone’s coming to help us,” I say.
We creep out into the hallway. The elevators are all dark, disabled. We go into the stairwell, sit on the landing and listen, and for a while it’s quiet.
Vega’s CEOs are clones too, but they raise their own successors. Mira’s mother says they get weirder and stupider with every generation. I guess they haven’t gotten stupider than Griffin yet, because it seems like they won easily. That’s the only reason for the doors to be unlocked: they’ve finished off the guards and now they’re going through the building floor by floor. They don’t want there to be anywhere to hide.
Finally we hear steps and shouts, far below, and a sound like a door being kicked open. They’re pacifying another level. There’s shooting right away and it goes on in bursts for a long time.
Maybe some fools are doing a last stand down there, but I don’t think so. I think Vega is killing everyone. No hope of getting past them—they won’t leave any exits unguarded.
“We have to go up,” I tell her. “There’s something we can use up there.”
“How many floors?”
“I don’t know. I don’t know where it is, I just heard the guards talking about it.”
“Okay.” She doesn’t press for details, she just trusts me. I’ve done nothing to deserve that. I should tell her what I’m looking for at least, but I don’t want to think about it.
She starts up the stairs, slow but steady. I follow after with both bags. I’m afraid we’re going to die because her footsteps are so heavy and her breathing is so loud, but apart from that she doesn’t make a sound.
There are cameras in the stairwell, probably, though nothing big enough to see. Vega disabled all the locks, they probably have access to look through them. If they see us, I’m no one and not worth coming after, but I’m sure they would rather not have an heir running around. On the other hand, we’re moving slowly, and they won’t think there’s any way we can escape up there. A pregnant woman trudging up the stairs toward a dead end doesn’t cry out for a strike force. At least that’s what I have to hope.
We make it to the next floor. Mira rests on the landing, I go in to scout. It’s not what I’m looking for and it’s deserted. Anybody who was working late here must have fled while we were still waiting for help, or else they’re hiding.
Then we do it again, eight more times. Every time, I think Mira can’t possibly make it. She pants and leans hard on the railing, but keeps moving. I wish I could make this easier for her. All I can do is follow close and try to catch her if she falls.
On the third flight of stairs my ankle starts to ache—the revenge of a fracture that never quite healed right. I remember how my mother sang to me while I was stuck in bed. Every time we stop on a landing, I rub at the scar on my palm where I fell on a sharp rock when I was little. My mother cleaned the wound and kissed it better.
On the ninth landing I open the door and I know right away.
The first room is male bodies and I back right out again. Not that, not for anything. In the next one they’re all female but for sex workers, I think—no powers I can use. We keep searching through a maze of rooms, all full of bodies lying in glass chambers. How close is Vega now, I wonder.
The last room is the biggest and it has both men and women. I pick one and read the label. Stealth. Endurance. Agility. Perception. Strength. Precision. Electronic countermeasures. Gecko. Gecko is what sticks the guards’ feet to the skyways. But these aren’t guards—guards have maybe half that many powers. There are forty-eight bodies, enough for an invasion. Maybe Vega was smart to strike first.
Mira’s staring into a chamber as if a snake’s coiled up inside it. “I can’t,” she says. “I can’t leave the baby like that.”
I know what she means. If she transfers her mind to another body, the baby will rot in the old one. She’s carried it inside her for most of nine months—of course she can’t leave it to die, even if it is the next edition of our mother. In her place I’d feel the same way.
“It’s okay,” I tell her. “You don’t have to. I’m going to change, then we’ll escape. You destroy all the rest of these bodies so no one can use them to come after us. It’s this switch here, under the flip-up cover. Then see if you can find a manual for these enhancements.”
I look down at the nearest of them, lying in its chamber. It’s uncanny, with its empty face, its perfect body. After I’ve lived and worried and worked too much and hardly slept at all in it for a few months, maybe it will look less like a doll.
I don’t want to transfer. I want my body, with its scars and flaws. Even with the damage done by all those years of the wrong hormones. With all that, it’s still mine, it’s still me. But if I stay in my body I’ll die here and she will too.
“Is this what you want?” she says.
“No. But it’s the only way.”
“What if we surrender?”
There’s no real hope in her voice. She knows as well as I do they’re not taking prisoners. I don’t want to say it, so I just shake my head.
“Please,” she says, and tears are in her eyes. “I don’t want you to do this. You’re my wife, the way you are, I love you.”
She means it. If she didn’t, she wouldn’t be crying. Anyway nobody’s watching now, there isn’t any reason left to lie. She didn’t marry me out of pity—or not just. She really fell in love.
I don’t know why she would do something so stupid. But I’m going to save her and then maybe I’ll be worth it.
“I have to,” I say, and I kiss her. I try to memorize what kissing her feels like in my real body. I focus on wanting to save her. Even if I can’t feel that anymore after the change, I might remember. “Help me pick one of these out.”
She walks along the rows of bodies, stops with her hand on a chamber. Copper hair, skin like peaches and cream. The eyes are amber and stare up at nothing. They blink mechanically once, like a doll’s. If they didn’t, I guess, they’d dry out.
“This one is beautiful,” she says. Her voice is hollow.
I can’t bring myself to smile, but I agree.
I wake up and the room’s not full of soldiers. Mira isn’t dead, she’s here and crying. I want to comfort her, I want to protect her. I don’t dare try to touch her yet, because I think she’d flinch away. But I can feel things. I’m still me, I’m real inside this, it’s okay.
Then I open up the side of the glass chamber and climb out, and everything is wrong. The body’s balance is off, its eyes are too high up. Even how my tongue feels in my mouth is strange and fake. I want to collapse to the floor, I want to lie down there and die. But I have to save Mira.
So this body doesn’t feel like me, so what. I felt that way at thirteen, fourteen, fifteen, most of sixteen. I was a brain cased in a robot, I pushed my body forward like a wheelbarrow, because I had to. I tuned out everything that hurt and made myself a perfect student, because if anybody could get hormones without parents or money to pay for them, it would be a high achiever, not a failure. I did that for almost four years, until my first shots of estrogen bathed me in calm, made me feel like a person. I can do it long enough to get us out of here.
I make the body walk over to Mira. She’s found a manual, but it’s videos. There’s one about gecko, but the guards say that’s simple—the body’s made already knowing how to do it. I play the one on electronic countermeasures instead, because that sounds like it might help us against cameras.
The first two minutes are on motivation. I skip forward and it’s talking about loyalty to Griffin. Another skip and it’s explaining that these countermeasures are new and a secret, so whatever you do, don’t get taken alive. Then it’s telling about how the technology was invented. We’re going to die before I get anything useful out of this.
“Let’s just go,” I say. It comes out high and thin, because I’m still trying to correct the too-deep pitch of my real body. I try to loosen up my vocal cords, remember how I used to talk, but don’t repeat the line.
I go into my suitcase and pick out clothes I hope will look like office wear. I manage to get the bra on, stretching the band till the eyes barely capture the last set of hooks, but the fit is all wrong—the edges of the cups dig hard into my breasts, the band is nowhere near my sternum in the middle. The blouse gaps between buttons, too. I throw a jacket over it and hope no one will notice. I try on my old shoes, but they’re too big and they’d just slip off. Anyway, I’m going to need my feet bare soon.
I’m afraid to see my old body, but it’s right there and I can’t help looking. I must have turned onto my side at the beginning of the transfer, while it was still like sleep, before it was like death. One leg is stretched out and one drawn up. My hair has curled unevenly, the way it does when I air-dry it, the way my mother’s did, and spread all over everywhere. It would need a lot of brushing out, if I woke up. I didn’t even get to look like Sleeping Beauty in the end, I just look like I passed out in there. I want to open up the chamber, touch my body’s face and stroke its tangled hair, but then I think maybe that’s morbid, and anyway we need to hurry. I just leave it behind.
At the door out to the stairwell, I think of the cameras again. The body’s made already knowing how to do it. I close my eyes and try to feel what this body wants from me. I see my right hand moving, flicking upward. I’m probably imagining it. But all I can do is try.
I push the door open a little, standing so my feet are hidden, and peek out. High on a wall I see a little winking light, a star. Is that what cameras look like to these eyes? I push my hand out through the gap.
As the body makes the gesture I realize what it is. It’s the way you cup up water from a pool to splash someone in front of you. I went to a pool once, when I was little. There were public pools back then, it didn’t cost too much. And I was still wearing boy’s clothes, so I didn’t have to worry about what a girl’s swimsuit might show. I remember splashing some woman, my real mother, I guess. The memory is just a glimpse and I don’t really see her face, but who else would let me splash her. I feel something shiver in my chest and flow out through my fingers in a rush. The little winking light turns red and dull.
“The cameras are disabled. Or deceived. I think.”
I push the door open slowly, and when another light appears I splash it right away. Would that gesture be the same for anyone, I wonder? Or did this body search my mind to find a memory of joy?
We go out on the landing. “Can I carry you?” I ask.
I’m so afraid she’s going to say no. But she’s figured out what’s coming, knows she’ll have to let me carry her soon anyway. So she just shrugs. “I don’t know, can you? We didn’t watch the strength video.”
I never picked up a person before, but I have an idea about how from somewhere, movies probably. I wrap one arm around her back and one behind her knees, and when I lift she just comes up. It isn’t like I’m strong, it’s like she’s light. She puts her arms around my neck, then winces and lets go.
“I’m sorry,” I say, and start to put her down.
“It’s just that my belly’s getting squished.”
I shift my arms and she says it’s better, but I think she’s still uncomfortable. She should have had more time to get used to this body before she had to touch it.
We have to leave the suitcases behind. Our wedding dresses are inside those. My real body is still lying in the leaving-chamber. Vega will paw through it all, but by that time we’ll be gone.
“Do you want to keep this baby?” I ask her as we’re going up the stairs.
She doesn’t complain that I’m talking about the future while we’re running for our lives. I think maybe this was on her mind too.
“If we leave her at a hospital or something, Vega could find her and kill her. We have to keep her hidden. And she’s been inside me all this time, I can’t help loving her.”
“Your mother put her in you. She made you feel that way.”
“I know,” she says, but the way she says it, I can tell she means “that doesn’t matter.” Then she adds, “Anyway, I couldn’t bring myself to make someone an orphan,” and I know that I can’t either, and that’s all there is to say.
Outside, the skyway wraps around the building so the guards can patrol everything, just like on every floor. On this one there’s a bridge ahead, a long and narrow path, unlit. The skyways are built on a framework of steel, but the surface is glass, polished smooth and slick, with no sides and no handrails. No one without gecko could use them to attack the central tower. But if one of the satellite towers gets invaded, guards can run across them from the main one to defend.
This bridge goes to the southwest tower, which is Marketing. I’m betting that it’s safer than the one we’re in. Who’d bother doing an armed incursion on a Marketing department?
“You’ll have to hold on with both hands for this part. Press against me and keep your eyes closed.”
I walk in place for a few steps, feeling how my feet stick, testing how the bond gets firmer when I press down, weakens when I rock my foot forward. Then I step out into the cold. The tower is swaying in the wind. The guards say Griffin’s towers are the most stable ever built, and I guess the range of motion’s not that big really, but I still feel like it’s trying to throw me off. I’m terrified and so is Mira—I can feel the tension in her body. “It’s okay,” I tell her. The voice that comes out doesn’t sound like it’s okay. I wish this body was made knowing how to lie better.
Our tower is swaying and Marketing is swaying out of time with it. The bridge between them slips and shifts, pulls away and comes close again. It has to—if the bridges were fused rigidly, the movement of the towers would snap them. I watch the bridge until I’ve learned the rhythm of it, then step out and stick my foot down, pull the other one after it quickly. My grip on Mira is too tight. She doesn’t seem to mind.
The bridge is only wider than my shoulders by a little, and carrying Mira I can’t see my feet at all. I still feel unstable and off balance, my legs are too long, I’m going to topple even without the wind’s help. How did I give up my trans body for this perfect female doll and manage to be taller than before? I keep my eyes on the opposite end of the bridge and feel my way with my feet.
It’s a cold night. There are heating coils beneath the glass, but Vega didn’t turn them on. By the midway point my feet are freezing, starting to get tingly—I’m afraid they’ll go numb and I’ll fall off.
Then I put my right foot down and there’s nothing underneath the edge of it but empty space. I freeze, then shift my weight back slowly, plant the foot back in a safer spot. I can’t bring myself to take another step.
If I fall off, it won’t just be some doll I’m piloting that shatters on the pavement. It will be me—I feel that in my bones now. Wrong and awkward, artificial, but still me. Fear shows me that, and I know fear is telling me the truth.
“Just keep going,” Mira says into my shoulder. “Don’t look down.”
“I can’t, you’re in the way of down.”
She makes a noise that’s kind of like a laugh. I’m freezing everywhere except the part she’s pressed against. I focus on that part and let the body’s feet think for me.
Finally we’re at the door to the Marketing tower. I let her legs drop down, smack my hand against the door and stick it there. For a moment I just breathe. Her feet are on the slick glass, but she’s pinned against the closed door by my body, held up by my arm, safe inside a cage of me. This isn’t the body she loves, but it’s the one that can protect her. She doesn’t try to shrink away.
Inside, the elevators are alive, but I tell Mira it’s too dangerous. “The door could open on anything.”
“You cannot carry me down a hundred flights of stairs.”
“I think maybe I can.”
“Even if you don’t pass out, my spine would never be the same.”
So I stick a hand inside the elevator, splash imaginary water all around, and we get in. The whole back wall is a mirror, so I can’t help seeing the body I’m wearing. Of course I’m beautiful—a little bit too much so to be natural. I look right, next to Mira. People will believe she married me on purpose. Nobody will guess I’m trans now, nobody will ever think She’s poor, or she’d have gotten a new body. Then she’d look like a real woman.
I turn toward the door right away, avoiding the sight of myself, but the picture is still in my head and I have the whole ride down to think about it. It comes to me that maybe I won’t always hate this, being perfect. Maybe hating it is one more thing I’ll lose.
We get out on the second floor. I carry her to the very bottom of the stairs. I don’t have a plan for this part. I push the door open an inch, spot a camera and splash it, then push it a little more.
I can see a station with two Griffin guards. Not enhanced I think, just guys in uniforms to check IDs. Does Marketing even know we’ve been invaded? They might let us walk out—you don’t need an ID to leave a building. If not, this body’s strong enough to knock them out. I hope it was made knowing how to throw a punch.
I ease the door shut, lean my head close to hers, and whisper. “You’re in labor, we’re both freaking out, a car is waiting for us outside. No matter what they say, keep moving toward the door.”
She nods like this is normal. It feels that way to me too. Trying stupid desperate plans and hoping not to die is just our life now.
I crack open the door, just enough to make sure the guards aren’t looking this way. Then I put my arm and shoulder through the gap. I skim the surface of the pool in a big arc, sending a wave out in every direction, feeling the power flow from inside me, and just for a moment it feels like joy. Then I’m back to being terrified, which is good because I won’t have to do any acting. We burst through the door and make for the lobby. She’s walking like it hurts her, I’m supporting her on one side.
“Did our car come?” she asks. There’s panic in her voice. Of course the guards don’t know the answer, they’re not there to keep track of cars. They look startled and don’t try to stop us.
We turn toward the doors and there are Vega soldiers, four of them, sitting in chairs on both sides. Enhanced. They’re going to notice my bare feet, how can they not. If they figure out I’m gecko then we’re dead. I’m her wife, she started bleeding, I ran out without my shoes, I think, hoping it will somehow translate into body language.The nearest one is standing up. I don’t know what to do, but I told Mira to keep moving and that’s what she does, so I go with her. The soldier takes a step closer to the door we’re headed toward. Then he holds it open.
“There it is!” I shout, and point at nothing down the street, away from the main tower. We hurry that way. I don’t dare look around, but I can’t hear anyone following.
So now we’re free. I did it, we got away. I feel light, like anything is possible, these city streets could take us anywhere. But then the triumph fades into a chill. We’re all alone and we have nothing, no one we can turn to. We’re out here on the street exposed to cameras. Vega will find us anytime they figure out they want us. I took this body for one purpose and that’s done now. Now I don’t know what I’m for.
We’re just walking, trying to put more distance between us and Griffin. I wish my feet weren’t cold again. I wish I dared to pick her up and run, but someone might be watching from a window, or through a security camera. We’re conspicuous enough as it is.
“I don’t know what to do,” I tell her.
“Just find a way to get us out of here,” she says. “I have a plan.” She’s breathing hard again, and can’t walk very fast. I don’t know how much more of this she can take.
The streets are dead this time of night—no people and no vehicles, nothing that can help us. Nothing but corporate towers in every direction. I wish this body was made knowing how to find a bus.
Finally we come upon a whole block lined with empty taxis on both sides. It’s eerie. I can’t help feeling they’re a herd that’s going to stampede when we get too close, or flick away all in the same direction like a school of fish. But they’re just drones, brought here by some algorithm to wait until demand increases.
“I don’t have any money,” I realize. “My wallet’s still on my old body.”
“I have a cash card a friend gave me that’s in her name. She thought the idea of raising a clone baby to replace the CEO was sick and I might have to run.”
“It was sick and we do have to run.”
“I’m sure she’ll put us up tonight, probably until the baby’s born. She might need to yell at me a little first.”
“You’re a desperate pregnant woman fleeing a war. People aren’t allowed to yell at you.”
“You’re right, she’ll probably yell at you instead.”
We’re supposed to touch the cash card to the door to make it open. As an experiment I splash some water on the lock instead. It opens and the drone asks where we want to go. This way we’ll be harder to trace.
The cab pulls out, a silent chariot. Soon we’re in a part of town where there are lighted signs, things on a human scale. We’re getting away. Mira leans in and puts her head against my shoulder. I stroke her hair and she melts into me. I guess after I carried her, my body feels familiar to her now. More familiar than everything else ahead of us, at least.
“You’ll stay with me, won’t you?” she murmurs.
“Always,” I say, and it feels so good. But I can’t help thinking of what always looks like. We’re going to raise her mother’s clone in poverty, just like we promised to. We’re gliding back into the same cage we were headed for, only without the guarantee of safety and enough to eat.
“Hey,” she says, tugging on the lapel of my jacket to get my attention and looking up at my face. “It’s okay. You did it, we’re safe, you can rest now.”
I feel a wave of relief. Not because I believe for a second we’re safe. Because she knew what I was feeling, even if she didn’t quite know why. Because even in this shell, this armor suit, she understands that I need comfort too.
“I love you,” she says. It sounds just like it did before, when I didn’t believe her but it was true.
I remember I’m supposed to say “I love you” back, and so I do, although I think it’s pretty obvious.
She sits up, wincing, and pulls my head to her. She brushes my tears away and kisses me. “It’s going to come out fine. With what your body can do, you’ll get good work. I can probably get something. We’ll be all right, even with the baby.”
“No. Listen.” I move close so our sides are pressed together and I take her hand. “We need to break out of the Griffin program every way we can. Like, tell our daughter a child-size amount of the truth about who she is, fill in details as soon as she’s ready for them.”
“Of course, that’s better.”
“And we can’t just scrape by with corporate jobs. That’s what she wanted. So I’m going to be a thief.”
“What?”
“I’m going to steal from all these corporations. It’s perfect. The countermeasures in this body are brand-new, no one will be prepared for them except for Vega and whatever’s left of Griffin. I’ll stay away from those two. I can climb up the sides of buildings and confuse any cameras or drones they have watching. Their guards will be like toy soldiers compared to me—I don’t think this many powers have ever been stuffed into one body. The best part is, they’ll probably blame Vega.”
She thinks about it for a long time. “It’s a good job for raising a child,” she says. “You’ll be home all day. Away one night every couple of weeks, maybe?”
“Maybe even less.”
“What will you steal?”
“Bodies, if we can figure out how to keep them alive until we sell them. If not, maybe equipment. Anything I can carry.”
“We should brainstorm targets, and I’ll do the research.”
“We’ll have to do it fast. We need money for a place where we can raise a child. And we need new ID right away.”
She nods at that. I hope she’s up to this, I hope I am. It’s one thing not to want to let a baby die, another to love her and care for her. We’ll have to learn to see her for who she is, not who she looks like or what her genes want her to be.
Mira lays her hand against her belly. She strokes it soothingly, like you would comfort someone who’s been hurt.
“It’s okay,” she whispers to the baby. “It’s over. This time will be different.”
“The Girl That My Mother Is Leaving Me For”
copyright © 2025 by Cameron Reed
Art copyright © 2025 by Sara Wong
The post The Girl That My Mother Is Leaving Me For appeared first on Reactor.
Rockbox 4.0 released [LWN.net]
For those of you who still have dedicated audio players: version 4.0 of Rockbox, a replacement firmware for many players, has been released. This release brings support for a number of new devices, updated codecs, a number of user-interface improvements, some new games, and more. (LWN last reviewed Rockbox in 2010 — and looked at the ill-fated Android port that year as well).
Security updates for Wednesday [LWN.net]
Security updates have been issued by Debian (firefox-esr, jetty9, openjpeg2, and tomcat9), Fedora (dokuwiki, firefox, php-kissifrot-php-ixr, php-phpseclib3, and rust-zincati), Red Hat (kernel and pki-core), Slackware (mozilla), SUSE (apparmor, atop, docker, docker-stable, firefox, govulncheck-vulndb, libmodsecurity3, openvpn, upx, and warewulf4), and Ubuntu (inspircd, linux, linux-aws, linux-gcp, linux-gke, linux-gkeop, linux-ibm, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-oem-6.8, linux-oracle, linux-oracle-6.8, linux-aws, linux-aws-5.4, linux-aws-fips, linux-azure-6.8, linux-hwe-6.8, linux-raspi, linux-realtime, nginx, phpseclib, and vim).
CodeSOD: Join Us in this Query [The Daily WTF]
Today's anonymous submitter worked for a "large, US-based, e-commerce company." This particular company was, some time back, looking to save money, and like so many companies do, that meant hiring offshore contractors.
Now, I want to stress, there's certainly nothing magical about national borders which turns software engineers into incompetents. The reality is simply that contractors never have their client's best interests at heart; they only want to be good enough to complete their contract. This gets multiplied by the contracting firm's desire to maximize their profits by keeping their contractors as booked as possible. And it gets further multiplied by the remoteness and siloing of the interaction, especially across timezones. Often, the customer sends out requirements, and three months later gets a finished feature, with no more contact than that- and it never goes well.
All that said, let's look at some SQL Server code. It's long, so we'll take it in chunks.
-- ===============================================================================
-- Author : Ignacius Ignoramus
-- Create date: 04-12-2020
-- Description: SP of Getting Discrepancy of Allocation Reconciliation Snapshot
-- ===============================================================================
That the comment reinforces that this is an "SP", aka stored procedure, is already not my favorite thing to see. The description is certainly made up of words, and I think I get the gist.
ALTER PROCEDURE [dbo].[Discrepency]
(
@startDate DATETIME,
@endDate DATETIME
)
AS
BEGIN
Nothing really to see here; it's easy to see that we're going to run a query for a date range. That's fine and common.
DECLARE @tblReturn TABLE
(
intOrderItemId INT
)
Hmm. T-SQL lets you define table variables, which are exactly what they sound like. It's a local variable in this procedure, that acts like a table. You can insert/update/delete/query it. The vague name is a little sketch, and the fact that it holds only one field also makes me go "hmmm", but this isn't bad.
DECLARE @tblReturn1 TABLE
(
intOrderItemId INT
)
Uh oh.
DECLARE @tblReturn2 TABLE
(
intOrderItemId INT
)
Oh no.
DECLARE @tblReturn3 TABLE
(
intOrderItemId INT
)
Oh no no no.
DECLARE @tblReturn4 TABLE
(
intOrderItemId INT
)
This doesn't bode well.
So they've declared five variables called
tblReturn
, that all hold the same data structure.
What happens next? This next block is gonna be long.
INSERT INTO @tblReturn --(intOrderItemId) VALUES (@_ordersToBeAllocated)
/* OrderItemsPlaced */
select
intOrderItemId
from CompanyDatabase..Orders o
inner join CompanyDatabase..OrderItems oi on oi.intOrderId = o.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
AND intOrderItemId Not In
(
/* _itemsOnBackorder */
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..Orders o on o.intOrderId = oi.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
and oi.strstatus='backordered'
)
AND intOrderItemId Not In
(
/* _itemsOnHold */
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..Orders o on o.intOrderId = oi.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
and o.strstatus='ONHOLD'
and oi.strStatus <> 'BACKORDERED'
)
AND intOrderItemId Not In
(
/* _itemsOnReview */
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..Orders o on o.intOrderId = oi.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
and o.strstatus='REVIEW'
and oi.strStatus <> 'BACKORDERED'
)
AND intOrderItemId Not In
(
/*_itemsOnPending*/
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..Orders o on o.intOrderId = oi.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
and o.strstatus='PENDING'
and oi.strStatus <> 'BACKORDERED'
)
AND intOrderItemId Not In
(
/*_itemsCancelled */
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..Orders o on o.intOrderId = oi.intOrderId
where o.dtmTimeStamp between @startDate and @endDate
and oi.strstatus='CANCELLED'
)
We insert into @tblReturn
the result of a query,
and this query relies heavily on using a big pile of subqueries to
decide if a record should be included in the output- but these
subqueries all query the same tables as the root query.
I'm fairly certain this could be a simple join with a pretty
readable where
clause, but I'm also not going to sit
here and rewrite it right now, we've got a lot more query to look
at.
INSERT INTO @tblReturn1
/* _backOrderItemsReleased */
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..orders o on o.intorderid = oi.intorderid
where oi.intOrderItemid in (
select intRecordID
from CompanyDatabase..StatusChangeLog
where strRecordType = 'OrderItem'
and strOldStatus in ('BACKORDERED')
and strNewStatus in ('NEW', 'RECYCLED')
and dtmTimeStamp between @startDate and @endDate
)
and o.dtmTimeStamp < @startDate
UNION
(
/*_pendingHoldItemsReleased*/
select intOrderItemId
from CompanyDatabase..OrderItems oi
inner join CompanyDatabase..orders o on o.intorderid = oi.intorderid
where oi.intOrderID in (
select intRecordID
from CompanyDatabase..StatusChangeLog
where strRecordType = 'Order'
and strOldStatus in ('REVIEW', 'ONHOLD', 'PENDING')
and strNewStatus in ('NEW', 'PROCESSING')
and dtmTimeStamp between @startDate and @endDate
)
and o.dtmTimeStamp < @startDate
)
UNION
/* _reallocationsowingtonostock */
(
select oi.intOrderItemID
from CompanyDatabase.dbo.StatusChangeLog
inner join CompanyDatabase.dbo.OrderItems oi on oi.intOrderItemID = CompanyDatabase.dbo.StatusChangeLog.intRecordID
inner join CompanyDatabase.dbo.Orders o on o.intOrderId = oi.intOrderId
where strOldStatus = 'RECYCLED' and strNewStatus = 'ALLOCATED'
and CompanyDatabase.dbo.StatusChangeLog.dtmTimestamp > @endDate and
strRecordType = 'OrderItem'
and intRecordId in
(
select intRecordId from CompanyDatabase.dbo.StatusChangeLog
where strOldStatus = 'ALLOCATED' and strNewStatus = 'RECYCLED'
and strRecordType = 'OrderItem'
and CompanyDatabase.dbo.StatusChangeLog.dtmTimestamp between @startDate and @endDate
)
)
Okay, just some unions with more subquery filtering. More of the same. It's the next one that makes this special.
INSERT INTO @tblReturn2
SELECT intOrderItemId FROM @tblReturn
UNION
SELECT intOrderItemId FROM @tblReturn1
Ah, here's the stuff. This is just bonkers. If the goal is to combine the results of these queries into a single table, you could just insert into one table the whole time.
But we know that there are 5 of these tables, so why are we only going through the first two to combine them at this point?
INSERT INTO @tblReturn3
/* _factoryAllocation*/
select
oi.intOrderItemId
from CompanyDatabase..Shipments s
inner join CompanyDatabase..ShipmentItems si on si.intShipmentID = s.intShipmentID
inner join Common.CompanyDatabase.Stores stores on stores.intStoreID = s.intLocationID
inner join CompanyDatabase..OrderItems oi on oi.intOrderItemId = si.intOrderItemId
inner join CompanyDatabase..Orders o on o.intOrderId = s.intOrderId
where s.dtmTimestamp >= @endDate
and stores.strLocationType = 'FACTORY'
UNION
(
/*_storeAllocations*/
select oi.intOrderItemId
from CompanyDatabase..Shipments s
inner join CompanyDatabase..ShipmentItems si on si.intShipmentID = s.intShipmentID
inner join Common.CompanyDatabase.Stores stores on stores.intStoreID = s.intLocationID
inner join CompanyDatabase..OrderItems oi on oi.intOrderItemId = si.intOrderItemId
inner join CompanyDatabase..Orders o on o.intOrderId = s.intOrderId
where s.dtmTimestamp >= @endDate
and stores.strLocationType <> 'FACTORY'
)
UNION
(
/* _ordersWithAllocationProblems */
select oi.intOrderItemId
from CompanyDatabase.dbo.StatusChangeLog
inner join CompanyDatabase.dbo.OrderItems oi on oi.intOrderItemID = CompanyDatabase.dbo.StatusChangeLog.intRecordID
inner join CompanyDatabase.dbo.Orders o on o.intOrderId = oi.intOrderId
where strRecordType = 'orderitem'
and strNewStatus = 'PROBLEM'
and strOldStatus = 'NEW'
and CompanyDatabase.dbo.StatusChangeLog.dtmTimestamp > @endDate
and o.dtmTimestamp < @endDate
)
Okay, @tblReturn3
is more of the same. Nothing more
to really add.
INSERT INTO @tblReturn4
SELECT intOrderItemId FROM @tblReturn2 WHERE
intOrderItemId NOT IN(SELECT intOrderItemId FROM @tblReturn3 )
Ooh, but here we see something a bit different- we're taking the
set difference between @tblReturn2
and
@tblReturn3
. This would almost make sense if there
weren't already set operations in T-SQL which would handle all of
this.
Which brings us, finally, to the last query in the whole thing:
SELECT
o.intOrderId
,oi.intOrderItemId
,o.dtmDate
,oi.strDescription
,o.strFirstName + o.strLastName AS 'Name'
,o.strEmail
,o.strBillingCountry
,o.strShippingCountry
FROM CompanyDatabase.dbo.OrderItems oi
INNER JOIN CompanyDatabase.dbo.Orders o on o.intOrderId = oi.intOrderId
WHERE oi.intOrderItemId IN (SELECT intOrderItemId FROM @tblReturn4)
END
At the end of all this, I've determined a few things.
First, the developer responsible didn't understand table variables. Second,they definitely didn't understand joins. Third, they had no sense of the overall workflow of this query and just sorta fumbled through until they got results that the client said were okay.
And somehow, this pile of trash made it through a code review by internal architects and got deployed to production, where it promptly became the worst performing query in their application. Correction: the worst performing query thus far.
This is a view from a hotel window, but not an official View From a Hotel Window post, because it’s morning and I’m leaving this hotel soon. Nevertheless, I had a lovely time in Dallas and I wanted to commemorate it. Tonight I’m in the Boston area, doing an event for Brookline Booksmith, at 6pm. You can still get tickets! Come see me, please.
— JS
Rational Astrologies and Security [Schneier on Security]
John Kelsey and I wrote a short paper for the Rossfest Festschrift: “Rational Astrologies and Security“:
There is another non-security way that designers can spend their security budget: on making their own lives easier. Many of these fall into the category of what has been called rational astrology. First identified by Randy Steve Waldman [Wal12], the term refers to something people treat as though it works, generally for social or institutional reasons, even when there’s little evidence that it works—and sometimes despite substantial evidence that it does not.
[…]
Both security theater and rational astrologies may seem irrational, but they are rational from the perspective of the people making the decisions about security. Security theater is often driven by information asymmetry: people who don’t understand security can be reassured with cosmetic or psychological measures, and sometimes that reassurance is important. It can be better understood by considering the many non-security purposes of a security system. A monitoring bracelet system that pairs new mothers and their babies may be security theater, considering the incredibly rare instances of baby snatching from hospitals. But it makes sense as a security system designed to alleviate fears of new mothers [Sch07].
Rational astrologies in security result from two considerations. The first is the principal-agent problem: The incentives of the individual or organization making the security decision are not always aligned with the incentives of the users of that system. The user’s well-being may not weigh as heavily on the developer’s mind as the difficulty of convincing his boss to take a chance by ignoring an outdated security rule or trying some new technology.
The second consideration that can lead to a rational astrology is where there is a social or institutional need for a solution to a problem for which there is actually not a particularly good solution. The organization needs to reassure regulators, customers, or perhaps even a judge and jury that “they did all that could be done” to avoid some problem—even if “all that could be done” wasn’t very much.
New Comic: April Tools
That might be the wrong question [Seth's Blog]
“Will it work?”
Along the way, we’ve been pushed to load our decisions with a need for certainty. It’s easier, it seems, to not try than it is to fail.
But the question, “is it worth trying?” unlocks possibility.
A surgeon in the middle of an operation should probably not experiment with an untested technique. But a writer, a leader or a musician can make that question part of their craft.
It’s the only way we learn.
Console War, p101 [Ctrl+Alt+Del Comic]
The post Console War, p101 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Wednesday, April 02, 2025 [Girl Genius]
The Girl Genius comic for Wednesday, April 02, 2025 has been posted.
Paul Wise: FLOSS Activities March 2025 [Planet Debian]
The SWH work was sponsored. All other work was done on a volunteer basis.
Vivian Blaxell Worries She'll Disappoint You [The Stranger]
On page 230 of her new book, Worthy of the Event, Vivian Blaxell writes, “steer clear of Suicides.” To that I say, whoopsie daisy! My life has been rife with ’em. Still, this book gripped me and stole my attention. Though Blaxell said that some have worried about her over it, that they hear nihilism in it, to this reader, there is humor, resilience, and a learned fearlessness of death, or perhaps pain (though I didn’t confirm with her).
Vivian Blaxell is an academic, a translator of Japanese poetry, a whirling dervish of contradictions that continually surprised me and kept me sharp for our hour-and-a-half conversation, and a trans woman who has always wanted to be “in the world” not just “in the community.”
Worthy of the Event shows its resistance to form starting with the subtitle. It's called "an essay," but you could also say it's composed of many essays, or sections. In this series, Blaxell has created a voice that is not her own. The speaker is a character, which she describes later in this interview—a trans woman of her own creation. Yes, reader, here we are again in that spin of genre, never to be found properly notated on the bookstore aisles, and to gorgeous ends.
We learn the meaning of the title of the book when Blaxell describes monks surrounding their teacher, the 16th Gyalwang Karmapa, on his deathbed. “Grief beams on their faces like ten thousand suns in a noonday sky as their leader slips away… They enjoy the event. They are worthy of it.” I sat with these lines a long time, as I made my way slowly and utterly compelled by her nearly 300 pages. Blaxell is brilliant at serving up new perspectives cheekily and constantly, furiously and beautifully, always flipping the angle and point of view.
I spoke to her as she began her book tour in New York City, having traveled from Melbourne, Australia, and she did not disappoint.
The first essay of the book is called “the
disappointments” and I wanted to ask you about what's
disappointing you lately.
That's such a difficult
question because mostly I'm disappointed in myself. That's the
whole point of that chapter. There's one line in it which says,
“I'm afraid of myself and that's logical.” Some people
have misconstrued that to mean, I'm afraid of what I might do to
myself. Some people think that there's a stream of nihilism running
through the entire book, but actually, I'm afraid of disappointing
other people. I think I've disappointed a lot of people in my time.
I'm concerned about that. I wouldn't do it any other way, but I'm
concerned about it.
I don't think I'm ever disappointed in other people. I'm sometimes disappointed in the way that relationships with other people unfold. In a relationship between two people, even between groups, people go in with expectations about the way people are going to behave, what they're going to get out of it, and what service that relationship will provide to them. Rather than what service they will provide in the relationship, and that always seems to end up risking great disappointment at some point. Sometimes it takes years, but it seems inevitable to me.
I've loved lifelong friendships that have vanished over the
years, and are still vanishing at this age, people that I've known
for 50 years. We disagree on something and decide we're not going
to be friends anymore. I do it. I just say, “You're absurd. I
can't stand you anymore. Goodbye.” I think the disappointment
is just a prologue to something else. Disappointment isn’t an
end to anything.
Expectation precipitates disappointment.
I
think that's right. I don't think there's anything wrong with
expecting people to behave well, and expecting oneself to behave
well, or expecting things to turn out well. I think most people
expect. Hope is really a pathetic thing. I have nothing good to say
about hope. When something starts appearing on Hallmark greeting
cards you know that it's empty.
If we're talking about the difference between
expectation and hope, my understanding of a Buddhist approach would
be that you cannot will anything, that it would be pointless to
try. So my understanding is that hope is expectation without the
will.
I think that what I take from the message of the
Buddha is go ahead and will all you like. But be conscious that
that's what you're doing and that it's not you, it's just thoughts,
and that your thoughts are not who you are. I think will is
necessary, don't you? I don't like this idea that people have about
Buddhism and all sorts of things, that people can just float along
on the river of life, so to speak, without doing anything. That's
not possible. Making a cup of coffee requires an act of will. But
hope, it's futile. Hope is hopeless. I don't hope at all. I don't
know if I've ever hoped. If I did, I gave it up fairly early, as a
child. Not in a dismal way. I just realize that hoping is not an
action, it doesn't make anything happen. It's almost the very
definition of useless.
In that context, hope seems inherently selfish. If my
life has proven anything, it's proven you correct. Hope is dopey;
it's not going to do anything for you.
It could make
you feel better. But feeling better is temporary.
How did this book come into existence?
At
home during Covid, I still needed to teach, because I actually
don't have a lot of money, like a lot of trans women my age. I was
teaching on Zoom at home, so I had a lot of time to
myself.
At the same time, a mainstream literary magazine in Australia had a call out, so I wrote this thing, and they turned it down. An old friend I've known since I was 16, a major Australian poet, called me, and when I told her they rejected it, she asked, “Are you disappointed?” I said, “I'm really disappointed.” And she said, “Write an essay about it.” I said, “I don't want to. I'm an academic. I've done that for so long.” But I sat down and I thought to myself, I'm just going to write it the way I want to write it. I have all this background in philosophy and theory, I had to try and understand disappointment in that way.
That first essay was published really quickly, I think because of the first sentence: “My vagina disappoints me.” I didn't add that until I'd written the essay, and thought, What am I going to do to make sure these people that really don't want to hear from me just can't resist it? Then I met the editor of that journal at a colleague's book launch and he said, “Are you writing a book?” And I said, “That's not your business what I'm doing.”
But later I thought about what the great philosophical issues have been for me, in my life and my work. So the next one that came up was about the cruelty to animals, and immediately all this stuff I already knew about theories of animals and posthumanism came up. I proceeded in that way, and by the time the essay “Nuclear Cats” was shortlisted for the Melbourne Prize for literature, I already had eight philosophical topics.
Can you talk about Gertrude Stein’s influence on
your writing, and your take on the importance and power of
repetition? And how did you come to your syntax and your
voice?
I'm much more interested in form than in
content. I don't really give a fuck about the content very much as
long as the form is what I want. I wanted the voice to sound like
somebody speaking, and without it being quotable direct speech.
Gertrude Stein is really the only writer that does prose where it
actually sounds like somebody talking, and she does that by
repetition. Because when we speak, people repeat isolated words,
sometimes more than once and quite close together. And the way
[Stein] manages punctuation invokes the speech act in what is, in
fact, not quoted prose. It's not dialogue prose. It's just the
opposite. Really, it's quite high-flown intellectual prose. I
thought this was a way of creating this sort of transsexual
voice.
I had to change “the disappointments” a lot from the original to make the voice consistent. I had to go through everything and texturize it really carefully. I wanted it to sound like [the narrator is] speaking directly to you in a quite urgent way, and you can't ignore it. You have to keep up with it even when she does that sort of panning, where everything gets a bit blurry because she's [covering so much] so quickly.
Can you speak to that in the context of transition as a
craft tool?
I was very deliberate. One of the reasons
it's written in a lot of short pieces is because that's the only
way I could control the connections between all the pieces.
Otherwise it would have been too dense, and the short pieces meant
I could move them around really easily, reposition them to make
this sort of rotation around a central axis, to make it
clearer.
What would you call the voice, or the style of this book
which is supposedly nonfiction?
I have no idea. Call it
whatever people call it, whatever they want. I don't care. The only
thing that makes me laugh is when people send me messages and stuff
saying, “It's so good to see you had such a great
relationship with your mother.” I'm like, maybe that narrator
had a better relationship with the mother than I had with mine.
Can you talk about the lessons you learned from studying
poetry, which the narrator talks about in the
book?
She's actually talking about translation. And
what happens when you are required to translate a whole set of
Japanese poems by a modern Japanese poet, not classical poetry, and
you make the most accurate word-for-word translation, but it's not
a poem you end up with at all. I can read Kaneko Mitsuharu's poems,
[who uses] a
Kanji which is very obscure, and that's part of the pleasure of
reading that poem in Japanese. But you can't replicate that. You
can't repeat that in a translation. So what do you do? You end up
writing a new poem that tries to capture the spirit and the meter.
The sense of the original poem.
I read poetry quite a lot, but I can't write poetry. I read it because it teaches me something about how to use language. It teaches me how to be lyrical in prose, which is important to me. I like to write about landscape, and poems teach me how to do that better, because I think it's hard in prose to write lyrically.
I wonder about what you would say about the value of
putting really unpleasant or gross shit in art. What does that do
for us?
Maybe it wakes us up. Maybe it makes us aware
that we're alive, and that's good. I'm a trans woman, and we're
kind of shocking by definition. Certainly in my generation we were.
I think I've made clear points in the text, my mother saying,
“will Centaurs be next?” It's good to make people feel
revolted or disgusted. I read things I'm disgusted by and I see
movies that disgust me.
Your lyrical language is stunning and it seems to appear
in moments that are absurd or ugly in order to create
contrast.
It's been my experience that being able to
see beauty when other things are really very difficult, has the
power to preserve trust. I think there's nothing—apart from
kindness, which is a kind of beauty itself—more important
than beauty. I'm not talking about people. I think my purpose in
juxtapositioning lyrical description close to difficult things was
a lesson.
One of the times I was living in Japan, I was invited to a dinner party at Arashiyama, which is a very beautiful area of Kyoto by the river, in the middle of the cherry blossom viewing season, and there was a Rinzai monk who had some seniority there. He and I had to leave together, late at night, because we both were using the same train. We walked across the bridge over the river and there was a huge riverside promenade. Lines and lines and lines of very mature ancient cherry trees. They were all in full blossom in the night. It was very quiet, because all the people that are usually out enjoying themselves were home in bed. He said to me, “How beautiful, how beautiful that is!” And I looked, and I said, “Yes, but look at all the shit they've left behind, these people,” and he said to me, “Look up, Look up.”
I've never forgotten the lesson that he gave me. That was all he said. “Look up, look up!” That's why I write lyrical stuff next to stuff that's not so nice. It's like, “look up, look up, look up.”
Vivian Blaxell’s Worthy of the Event is out on LittlePuss Press.
City Council Passes a Nonbinding Resolution Decrying SPD Defunding That Never Happened [The Stranger]
This afternoon, City Council passed a nonbinding resolution denouncing the Defund SPD movement and acknowledging the city’s actions to reform our police department under the federal consent decree. The vote passed by 6- 0, with councilmembers Alexis Mercedes Rinck, Dan Strauss, and Cathy Moore absent from today’s council meeting. by Tobias Coughlin-Bogue
This afternoon, City Council passed a nonbinding resolution denouncing the Defund SPD movement and acknowledging the city’s actions to reform our police department under the federal consent decree. The vote passed by 6- 0, with councilmembers Alexis Mercedes Rinck, Dan Strauss, and Cathy Moore absent from today’s council meeting.
During his speech before the vote on the resolution, Saka invoked the murder of George Floyd and the uprisings that followed, claiming the previous city council’s pledge to defund the police was “purportedly made in my best interest as a Black man, and other Black people across this great city. Yet, strangely, those defund pledges were made at the height of a racial reckoning when there were zero Black or African American members of descent on the council.”
There’s a lot to unpack there (and my editor, Marcus, assures me we will at a later date), but this revisionist history boils down to Saka asking, “Do you believe me or your own eyes?” No community is a monolith, sure—but if he or anyone else is curious about who was actually marching and demanding a reallocation of police funding in 2020, a quick Google search will do the trick. And wouldn’t you know it? The same communities the council claimed to be listening to at the time were the ones leading the charge. Spoiler alert: the receipts are not in Saka’s favor.
So why do we care about a non-binding resolution?
This vote is about a conservative-leaning City Council that wants you to believe that we remain under the consent decree because of the Defund movement of 2020, instead of egregiously poor police behavior.
First, the details. Res. 32167 affirms the city’s support for police, fire, and other first responders, and disavows any efforts to “defund or abolish SPD services or personnel.” Saka’s announcement of the resolution advancing to full council said that it would “[finalize] Seattle’s federal Consent Decree with the Seattle Police Department (SPD)” and “[shape] the future of public safety in our city.” It will do no such thing.
What it will do is ask other people to do that. Again, in Saka’s own words: “Once SPD has updated its crowd management policies to comply with the Less Lethal Weapons Bill that we passed earlier this year, my proposed legislation would formally request that the City Attorney submit the updated policies to the court for review.”
To be clear, City Attorney Ann Davison was 110% already going to do that. One of Mayor Bruce Harrell’s rare explicit goals has been to get out from under the 2012 consent decree, and despite the police continuing to do bad shit, we’re pretty damn close.
The reason we’re still under consent decree has nothing to do with the Defund movement. In Rob Saka’s reality, Seattle politicians pledged to defund the police by 50 percent. He is joined in that belief by cosponsor Bob Kettle and Mayor Bruce Harrell, who also came out in favor of this, along with such luminaries as Brandi Kruse, Jonathan Choe, and Jason Rantz.
Besides being our region’s most nightmarish of nightmare blunt rotations, all of those people are obsessed with something that never occurred.
While seven out of our nine councilmembers did express support in 2020 for a proposal put forth by Decriminalize Seattle and King County Equity Now to reduce the police budget by 50 percent, they a) never put anything down on paper about it and b) didn’t actually do it.
What happened, after those seven councilmembers said they would support defunding the police by 50 percent, is that then Councilmember Kshama Sawant proposed a budget amendment to do so and no one voted for it. So that’s about all their “pledge” amounted to.
“The idea that the SPD was defunded by 50 percent in 2020 is a complete myth. I know because I was the socialist on the City Council who put forward the legislation that year, which not a single Democrat supported. City Hall Democrats like Councilmember Saka and Mayor Bruce Harrell have been doing the bidding of big business, cutting funding for social services and pumping more money into the already-bloated police department,” Sawant told The Stranger.
A few weeks later, her fellow councilmembers voted through a budget that, Sawant wrote, “fails to address the systemic racism of policing, trimming only $3 million from the bloated department’s remaining 2020 budget of $170 million.”
The police budget did technically shrink after the council chose to move parking enforcement under the purview of the Seattle Department of Transportation, but that simply moved the money to a different department. It did not do away with parking enforcement. Once they were moved back, in Harrell’s 2022 proposed budget, funding for SPD was above 2020 levels, where it has remained since. In recent budgets, it has only grown.
(If you want an eye-opening look at how cops twisted and wriggled to avoid ever being defunded, give this Real Change investigation by watchdog Glen Stellmacher a read.)
The reason we’re still under consent decree then, has everything to do with police misbehavior.
Seattle’s federal consent decree has been hanging around since 2012, thanks to a DOJ investigation that found SPD had a little habit of using excessive force—an investigation sparked by the police killing of John T. Williams. Since then, the city has burned through more than $200 million trying to prove it can police without violating civil rights, and yet, here we are, still talking about police accountability like it’s some unsolvable mystery.
One major roadblock? The Seattle Police Officers Guild (SPOG), which has spent the past decade making sure that any real oversight is dead on arrival. Case in point: a 2018 contract that gutted a city ordinance meant to improve civilian oversight. Fast forward to May 2024, and Seattle’s latest love letter to SPOG handed officers hefty raises while barely touching accountability reforms, so much so that even the federal judge overseeing the decree, James Robart, and the Community Police Commission threw up their hands in frustration.
At a March 2025 hearing, Robart admitted Seattle has made progress but remained unimpressed by the glaring lack of accountability fixes. The city’s next steps? Finalizing a crowd control policy and pushing through legislation on less lethal weapons before asking the feds to officially end the decree. Robart expects it to wrap up soon but is clearly annoyed that he can’t do much about the SPOG contract’s flimsy disciplinary measures.
So, after six mayors, seven police chiefs, and 12 years of legal wrangling, Seattle is almost free from federal oversight. But if you thought that meant SPD suddenly fixed its accountability and bias issues, well, you’d be as cartoonishly wrong as Rob Saka.
Nonbinding resolutions are useful for at least one thing: telling us how politicians want to be seen. And, in some cases, how they see things. This is one of those cases.
And, sure, it sounds great to claim that Seattle defunded the police if you’re, say, a right-wing commentator trying to portray us as a “socialist hellhole.” But a sitting councilmember in the actual city that you’re actually supposed to represent? Why?
Saka’s resolution concludes by claiming that the council’s hastily abandoned commitment to a 50 percent defund “led to the resignation of hundreds of police officers.” Complaining that the idea of maybe possibly defunding the police did so much emotional damage to the police that they quit in droves is as close to compelling as his argument gets here, but even that claim is dubious at best.
We get that most of the current council has never seen a pair of boots they didn’t want to lick, but come on.
“Defund is dead,” Rob? Really?
It was never alive! It never happened!
Marcus Harrison Green contributed reporting to this article
Mary Lou Gamba Is an Undisputable Champion of Comedy [The Stranger]
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Saturday, April 5. by Megan Seling
On Saturday, April 5, some of Seattle’s funniest comedians will take the stage as part of The Stranger’s annual Undisputable Champions of Comedy showcase. It’ll be hilarious! The lineup was curated with help from everyone’s comedy bestie, Emmett Montgomery, co-host of Joketellers Union at Clock-Out Lounge and purveyor of all things delightfully weird. And this year’s lineup is stacked with talent, from a local comedy legend who once won over a crowd of bikers at an Aurora bar in the ’80s to a comic who uses laughter as a way to deal with grief. We even have a bunny and a fundamentalist Christian pastor on the bill! It’s gonna be great. We're going to post interviews with the champs all week long.
Now, let's get to know tennis lover and rotisserie chicken enthusiast Mary Lou Gamba!
Describe your comedy in five words.
Silly and punchy meets bawdy.
What’s the first thing you did when you found out you were chosen as one of The Stranger’s Champions of Comedy?
Well, I'm embarrassed to say I immediately checked with other comics to see if it was legit. Then, when I found out it was, I TOLD EVERYONE! I was very excited! I am very grateful to be recognized. It means a lot to me.
You describe yourself as a rotisserie chicken enthusiast. There are always debates raging about who’s rotisserie chicken is the best. Costco. Whole Foods. QFC. Etc. Are you prepared to say, right here and right now, once and for all, who sells the best rotisserie chicken?
PCC's Balsamic Herb rotisserie chicken.
Do you remember your first time doing stand-up? Were you immediately hooked?
I do remember. I took a class a million years ago, and the day of the big show, where we all performed in front of our friends and family, I could not stop laughing. I laughed all day leading up to the show. I had never experienced that before. It was so weird. I finally stopped laughing after I went up. It was really fun, and the crowd was very supportive. Although, I was not hooked until I found an open mic years later that really worked for me. After that, I was addicted.
Where is your favorite place to see comedy in Seattle right now?
There are many great places to go. I just go to the place that has someone I want to see.
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Sat April 5, Washington Hall, $25, 21+. Tickets available here.
Trump administration at "war" with mRNA technology [Richard Stallman's Political Notes]
*Trump administration at "war" with mRNA technology: scientists alarmed vaccine skeptics could kill research.*
mRNA vaccines are the target of persistent disinformation along many fronts. Some disinformation exaggerates the significance of side effects that happen a small fraction of the time and generally cause no permanent harm. Others harp on thousands of people go had serious side effects but neglect to compare those with the millions of lives the vaccines saved.
Johannes Schauer Marin Rodrigues: NASA has pride across most of the universe [Planet Debian]
In July 2024, NASA posted an article titled “NASA Has Pride Across the Universe” featuring a pride flag by Rachel Lense where each color band is made up of images from across NASA. Today is the annual International Transgender Day of Visibility. The original NASA article from last year has since been taken offline. But the heroes from archive.org still carry a copy which I now archived myself together with the other source images. Here is NASA’s pride flag in all its glory:
Southern Fried Science has an article about the flag. The original 4000x2547 TIFF image was stored by archive.org but the PNG version in the same resolution can be downloaded here or by clicking on the image.
The Best Things To Do in Seattle This Month: April 2025 [The Stranger]
The first full month of spring brings a bouquet of entertainment options across genres to our fair Emerald City. Below, we've compiled the biggest concerts, food events, theater shows, author talks, and other great things to do, from Kylie Minogue to Sakura-Con and from Live Wire Radio to KUOW Presents: The Splendid Table Live.
COMEDY
Mo Amer: El Oso Palestino Tour
Palestinian American comic Mo Amer has found a unique way to blend
difficult real-life experiences with humor: His path to citizenship
took two decades, he once endured a flight next to Eric Trump, and
his performances often work to defuse harmful stereotypes about
Muslim Americans. It makes sense that the humble, cheeky charmer
landed the semi-autobiographical Netflix series Mo. (The
second season started in January, by the way.) Personally, I'm
hoping to hear more about his favorite
vaccine. (I'm a Moderna girly, myself.) LINDSAY
COSTELLO
Moore Theatre, Belltown (Sun Apr 6)
Ricci Armani Is an Undisputable Champion of Comedy [The Stranger]
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Saturday, April 5. by Megan Seling
On Saturday, April 5, some of Seattle’s funniest comedians will take the stage as part of The Stranger’s annual Undisputable Champions of Comedy showcase. It’ll be hilarious! The lineup was curated with help from everyone’s comedy bestie, Emmett Montgomery, co-host of Joketellers Union at Clock-Out Lounge and purveyor of all things delightfully weird. And this year’s lineup is stacked with talent, from a local comedy legend who once won over a crowd of bikers at an Aurora bar in the ’80s to a comic who uses laughter as a way to deal with grief. We even have a bunny and a fundamentalist Christian pastor on the bill! It’s gonna be great. We're going to post interviews with the champs all week long. Today, say hello to Ricci Armani!
Describe your comedy in five words.
Fun, Sassy, Honest, Good Universal
What’s the first thing you did when you found out you were chosen as one of The Stranger’s Champions of Comedy?
I was very excited, but honestly, the first thing I did was get right back to work. I wish I had a better story about this, but unfortunately, I am constantly working, whether that's at my part-time day job or working on my show or working on my own personal stand-up. I am constantly working, haha.
View this post on Instagram
Caroline Rhea was a recent guest on your comedy show My Straight Friends. She is so great! Please tell me you have a good Caroline Rhea story.
Caroline was such a treat. She was so nice and so sweet and very giving of her time. We played a game with her onstage similar to Taboo, and she had to get me to say Sabrina the Teenage Witch. All the hints that were given to me sounded like the TV show Charmed, so that's what I said. She stormed off the stage when I said that instead of Sabrina. It was hilarious to see and I felt so dumb afterwards.
Speaking of My Straight Friends, you host the show once a month with Joe Dombrowski in both LA and Seattle. I gotta ask: Which city has a better audience?
I suppose that's subjective. I would say both cities now have their cult following, and I couldn't be more thankful for them. Both cities are full of fans who love the show and love what we put out.
Where is your favorite place to see comedy in Seattle right now?
My favorite place to see comedy in Seattle right now, honestly,
would be through Don't Tell Comedy. They are a nationwide chain of
popup comedy shows, and it's really my favorite place to perform
and watch. I get to see the best of Seattle, and I get to see
random larger names come through as well. Though there is no wrong
answer here. All of the clubs and venues in the area are pretty
great, depending on the lineup.
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Sat April 5, Washington Hall, $25, 21+. Tickets available here.
Wesley Crusher and The Travelers [WIL WHEATON dot NET]
While you wait for this incredible new Star Trek series to release, I invite you to listen to episode one of It’s Storytime with Wil Wheaton, before episode two drops tomorrow.
Vote for “How to Fix the Internet” in the Webby Awards People's Voice Competition! [Deeplinks]
EFF’s “How to Fix the Internet” podcast
is a nominee in the Webby Awards 29th Annual People's Voice
competition – and we need your
support to bring the trophy
home!
We keep hearing all these dystopian stories about technology’s impact on our lives and our futures — from tracking-based surveillance capitalism to the dominance of a few large platforms choking innovation to the growing pressure by authoritarian governments to control what we see and say. The landscape can feel bleak. Exposing and articulating these problems is important, but so is envisioning and then building a better future.
That’s where our podcast comes in. Through curious conversations with some of the leading minds in law and technology, “How to Fix the Internet” explores creative solutions to some of today’s biggest tech challenges.
Over our five seasons, we’ve had well-known, mainstream names like Marc Maron to discuss patent trolls, Adam Savage to discuss the rights to tinker and repair, Dave Eggers to discuss when to set technology aside, and U.S. Sen. Ron Wyden, D-OR, to discuss how Congress can foster an internet that benefits everyone. But we’ve also had lesser-known names who do vital, thought-provoking work – Taiwan’s then-Minister of Digital Affairs Audrey Tang discussed seeing democracy as a kind of open-source social technology, Alice Marwick discussed the spread of conspiracy theories and disinformation, Catherine Bracy discussed getting tech companies to support (not exploit) the communities they call home, and Chancey Fleet discussing the need to include people with disabilities in every step of tech development and deployment.
We’ve just recorded our first interview for Season 6, and episodes should start dropping next month! Meanwhile, you can catch up on our past seasons to become deeply informed on vital technology issues and join the movement working to build a better technological future.
And if you’ve liked what you’ve heard, please throw us a vote in the Webbys competition!
Our deepest thanks to all our brilliant guests, and to the Alfred P. Sloan Foundation's Program in Public Understanding of Science and Technology, without whom this podcast would not be possible.
Click below to listen to the show now, or choose your podcast player:
Or get our YouTube playlist! Or, listen to the episodes on the Internet Archive!
[$] Slab allocator: sheaves and any-context allocations [LWN.net]
The kernel's slab allocator is charged with providing small objects on demand; its performance and reliability are crucial for the functioning of the system as a whole. At the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit, two adjacent sessions in the memory-management track dug into current work on the slab allocator. The first focused on the new sheaves feature, while the second discussed a set of allocation functions that are safe to call in any context.
The 2025 Campaign Season Has Begun [The Stranger]
The filing deadlines are in early May, so there’s still time for some surprises, but even now, the election is shaping up to be an interesting one. by Stranger Election Control Board
We blinked, and suddenly, we’re on the cusp of another local election season.
In case you haven’t been following the election so far (and with totalitarian takeover on our heels, we’d understand), here’s your chance to catch up. The filing deadlines are in early May, so there’s still time for some surprises, but even now, the election is shaping up to be an interesting one.
This year, we have a mayor’s race featuring an embattled moderate incumbent who speaks the language of progressivism, but governs like a conservative. We’ve got a challenger for the District 9 City Council seat and a wide-open race in District 2. And finally, a City Attorney race, where anyone with an ounce of progressivism (or human decency) has been eager to unseat the incumbent from the moment she took office.
We’ve got months before endorsement time, but that doesn’t mean we shouldn’t meet the candidates who have thrown their hats in the ring. Without further ado, here’s our quick breakdown of the local elections so far.
MayorBruce Harrell, Seattle’s very own Chamber of Commerce sock puppet, finally has some challengers.
The biggest name in the game so far is Katie Wilson: a street-fighting policy wonk who’s built a strong, progressive reputation actually winning battles for working people (raising the minimum wage, keeping transit affordable). When she launched her campaign, she told The Stranger about the kind of mayor she hopes to be: a coalition builder who’s able to reach across the aisle to find common goals, without diluting progressive, research-backed policies. She described herself as someone who’s willing to test new ideas and push forward on issues that have stagnated in this city for a decade.
She’s untested in elected office—or even running in an election—but she urged voters to look at her record as a policy advocate. “I’ve spent the last 14 years of my career organizing, building powerful coalitions that win major victories for working people,” she told The Stranger. “And I’ve done all that from the outside. I would be happy to put my legislative record up against Bruce Harrell’s any day of the week.”
Then there’s Ry Armstrong, an MLK Labor Delegate for SAG-AFTRA and an elected member of the Actor’s Equity Association, repping 50,000 actors from Texas to Hawaii. This is Armstrong’s second go at elected office. In 2023, they ran for Kshama Sawant’s City Council seat in District 3, and while progressives generally got wildly outspent by big business (and therefore creamed) in that election, Armstrong’s showing was particularly rough. Only 1.86 percent of the electorate (a total of 488 people) voted for Armstrong in that race. They’re proud of their big ideas, and a suite of progressive taxes to pay for them.
Ry and Katie are joined in the race by a handful of other candidates, including: MAGA-y Rachael Savage, the Republican who is campaigning to block permanent supportive housing and arrest homeless addicts as means of recovery; and Joe Molloy, a homeless man who says he lost his housing last year due to an unsupported disability, and is running his grassroots campaign from Tent City 3.
City Council District 9Seattle’s City Council President Sara Nelson has been on the council since 2022 and has been president since 2024. Her leadership has represented the Chamber of Commerce (and Amazon’s) bid to claim control of city government, so we’re very pleased to announce that she has a challenger. Her name is Dionne Foster, progressive policy wonk, and capital gains tax champion. Nelson, known for her right-leaning, business-first politics, might be in trouble, given the city’s enthusiastic support for progressive Alexis Mercedes Rinck in November, and the runaway success of February’s social housing initiative. Foster’s got the right ideas on housing and homelessness, but let’s be real, to quote a Reddit-er, if a rock ran against Nelson, some Seattleites would probably throw a vote its way just to avoid the “right-wing, inept millionaire” vibe.
City Council District 2At the end of last year, Tammy Morales stepped down from her seat representing D2 on City Council, saying that the conservative, business-oriented City Council was a toxic, undemocratic environment. The council appointed Seattle Police Department crime prevention coordinator and long-time City Council hopeful Mark Solomon to hold down the seat until this year’s election, when it goes back to the people.
So who’s gonna replace the progressive Morales? In the battle for D2’s vote, we start with Assistant City Attorney Eddie Lin, who primarily works with the Office of Housing. He describes himself as a champion of affordable housing, progressive revenue, and creating a city where “artists and bike messengers and baristas and educators can all afford to live here.” So far, he’s light on details for how he plans to do that, so we’ll be watching him closely.
Then there’s Adonis Ducksworth, the Mayor’s senior transportation policy official and one of the architects of the 2024 transportation levy. He’s pushing a platform that combines safety, affordability, and... skate parks? The lifelong skateboarder knows how important public space is for kids (yay) but he also believes safety in D2 comes with more cops (boo). Like Lin, though, he hasn’t offered many other details yet.
Eclipsing both of their fundraising, though, is a newer entrant: Takayo Minakami Ederer, a Columbia City-born real estate investor and karate instructor (and one of the first members of the women’s national karate team). Based on her early interviews, she’s largely running on a “public safety” platform—which, you guessed it, to her means more cops. She also acknowledges that we need more shelter beds, and advocates for a public-private partnership to make that happen.
City AttorneyIn our friendly neighborhood City Attorney showdown, Nathan Rouse, Rory O’Sullivan, and Erika Evans all have big ideas on how to fix Seattle’s broken justice system in contrast to incumbent Ann Davison—spoiler alert: most of them don’t involve locking up more people. Rouse, a public defender who’s done with Davison’s “tough-on-crime” charade, wants to bring back community court and stop prosecuting minor offenses like SODA and SOAP violations (which, fun fact, aren’t even being enforced right now). Meanwhile, Evans is focusing on serving up anti-Trump tea and advocating for harm reduction programs that actually help people instead of shoving them into jail. And then there’s O’Sullivan, who thinks the City Attorney’s office could use a little more compassion and a little less spectacle. So, get ready for a race that could decide whether Seattle stays stuck in the criminal justice quicksand or finally tries to pull itself out with actual solutions.
Stranger Election Control Board is Marcus Harrison Green, Vivian McCall, Charles Mudede, Emily Nokes, Megan Seling, and Hannah Murphy Winter.
A Special Game of D&D [Penny Arcade]
Recently Jerry and I were invited out to Wizards of the Coast headquarters to meet and play Dungeons and Dragons with two young men whose brother had a five year battle with Lymphoma. These boys had made a video about how important D&D was to their family during their brother's illness and how they are now raising money for The Leukemia & Lymphoma Society.
From the LibreQoS site
comes the sad
news that Dave Täht has passed away. Among many other
things, he bears a lot of credit for our networks functioning as
well as they do. "
We're incredibly grateful to have Dave as our
friend, mentor, and as someone who continuously inspired us –
showing us that we could do better for each other in the world, and
leverage technology to make that happen. He will be dearly
missed
".
Searching through LWN's archives will turn up many references to his work fixing WiFi, improving queue management, tackling bufferbloat, and more. Farewell, Dave, we hope the music is good wherever you are.
(Thanks to Jon Masters for the heads-up).
Got problems? Yes, you do! Email your question for the column to mailbox@savage.love! by Dan Savage 1. How does one find the clitoris? I’m told the clitoris is not hard to find — go north, young man — but if one tries to find it and one fails, one should pull over (or pull out) and ask for directions. 2. If someone tells you to “do whatever you want,” should you? Someone who says that and means will eventually say it to the wrong person and get hurt; they’re a danger to themselves. Someone who hears that and takes it as license to do whatever they want is a danger to others. So, a decent person — by definition — wouldn’t do whatever they wanted to someone who told them they could. And seeing as you’re a reader of mine, I’m hoping you’re a decent person. P.S. People who say “do whatever you want” don’t mean it. What they mean is this: “I’m too embarrassed to…
[ Read more ]
Dear Hendrix: Don’t Smoke Weed...With Losers [The Stranger]
There is no drug more important than spending time with good people, people you love. There’s no drug worth risking a stranger’s actions. There is no drug worth risking something important to you. No drug worth getting caught up in a damn robbery. And there’s DEFINITELY no drug worth your life. But like a person living in the real world, I know you may consider cannabis at some point. So remember: WWJD. Don’t smoke weed…with losers. by Eva Walker
Eva Walker is a writer, a KEXP DJ, one-half of the rock duo the Black Tones, and mom to her baby girl, Hendrix. She also co-wrote the book The Sound of Seattle: 101 Songs That Shaped a City, which was released in 2024. Every month for The Stranger she writes a letter to Hendrix to share wisdom learned from her experiences—and her mistakes.
Dear Hendrix,
My dear Hendrix, you will likely have your mother’s rebel gene. And let me tell you, it’s not something to hide from, but it is something to sharpen.
To learn how to do that, I want to tell you about a woman named Jo.
Jo has known your grandmother for more than 35 years, so she’s been in my life since I was young. Jo is one of those people who’s seen it all. She’s tough and she knows how to handle herself in a pinch. She’s often got a smile on her face. She’s one of the most honest and straightforward people I know. It’s one of my favorite qualities about her.
Jo started doing my hair when I was a teenager. And one day, when I was 15, we started talking about cannabis. I’m not sure how it came up. We talked about damn near everything during my Saturday hair appointments. That’s the beauty of Jo. She knows hair and she knows life. At this point in mine, I hadn’t yet tried pot—or any drugs, for that matter. And I was aware of the stigma it had—especially with adults Jo’s age. By then, though, I had watched the 1936 anti-dope propaganda film, Reefer Madness. (You should watch it too, sometime. It’s hilarious!) That movie has made way more people want to try cannabis than not. Me included.
That day, Jo said to me something I’ll never forget. Something so important that I want to pass it down to you here. She said, “Baby, don’t do drugs.” But she wasn’t finished with her worldly advice. What she added so poignantly was, “But if you’re going to try weed… don’t do it with losers.”
Bingo was his name-o! That was some of the deepest shit I’ve ever heard. But what IS a loser? It’s not someone exclusive to any race, gender, class, background or anything like that. Losers come in all forms. If you only remember one thing I ever tell you, remember this: Losers wear suits. Losers wear boots. Some losers even read Dr. Suess. They’re everywhere. It’s one of those things where your gut just tells you. You know one when you see one. (If you need help, just ask me, I’ve seen plenty!) And they’re to be avoided when you’re doing anything special, from drugs to sex to going out to your favorite restaurant.
Jo’s point was that people are curious, but curiosity can be dangerous. So if you indulge yours then it’s important to be around others worthy of your time and attention. People who have self-respect, goals, intellect, and something to lose. Your father and I want you to appreciate yourself and to always remember this.
Speaking of losers, the infamous crook Richard Nixon declared a whole war on drugs on June 17, 1971. That was 18 years to the day before I was born. A whole person came of age between that declaration and when I popped out of the womb. So to have another adult tell me pot wasn't the worst thing in the world—but what was worse was doing it with losers, Hendrix, that was some life-changing shit. So, did I eventually try weed? Duh. I was 17 when I first smoked pot (I refuse to type out all the letters in marijuana, which might be a side-effect of using marijuana). I first smoked at a party in high school, which is where you’ll likely be offered something, too. Or it could be college, or a bathroom stall or outside a bar or at a friend’s house. Weed is everywhere. (Note: make sure whatever weed you might try is store-bought and not wrapped in foil.)
The first time I smoked, I went up to a guy at a party who had a glass pipe. He carefully showed me how to use it. He was kind and wasn’t shady or gross. He passed the test! The only painful part was the cough. Hendrix, you will never forget the pain of your first weed cough after a big hit. Unfortunately, people rarely warn you about that part. Your throat will want to call the fire department.
It turns out, though, that I still needed to sharpen my Inner Jo. While the boy with the pipe was no loser, the party was full of them. And after that first-ever hit, the fun house party turned quickly and strangely into a robbery. Your Uncle Cedric was with me as men with guns started demanding possessions. Thankfully, he whisked me out the backdoor like a superhero. That led to a class field trip to a lineup at the police station. Ugh. See, I wasn’t smart that day.
My advice to you is this: WWJD? What would Jo do? There is no drug more important than spending time with good people, people you love. There’s no drug worth risking a stranger’s actions. There is no drug worth risking something important to you. No drug worth getting caught up in a damn robbery. And there’s DEFINITELY no drug worth your life. In the end, you don’t need drugs—weed, included. And like any parent, I’d prefer it if you didn’t do them. But like a person living in the real world, I know you may consider cannabis at some point. So remember: WWJD. Don’t smoke weed…with losers.
Mystery, magic, and far-off realms arrive in April [Humble Bundle Blog]
April’s Humble Choice games are here, and this month’s mix features high-fantasy realm creation, dark & twisted fishing, and lots more! Catch fish ‘n’ solve mysteries in DREDGE. Raid some classic tombs with Lara Croft. Survive a Xenomorph infestation, help restore humanity, and a whole lot more with your membership this month! Your Games for April DREDGE The murky depths of unknown waters just got …
The post Mystery, magic, and far-off realms arrive in April appeared first on Humble Bundle Blog.
March GNU Spotlight with Amin Bandali [Planet GNU]
Eighteen new GNU releases in the last month (as of March 31, 2025):
Johannes Schauer Marin Rodrigues: TIL: OpenPGP Web Key Directory [Planet Debian]
Today I was looking for a way on how to best publish my OpenPGP key on my webserver. Surely, somebody came up with some sort of standard way for where to place that key, right? Turns out, they did: https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/
The TLDR summary is, that my key can now be found here:
https://mister-muffin.de/.well-known/openpgpkey/hu/8yxgr5jjfok88r9um56kb44x9h4dyj7f
Or be downloadable by just running:
$ gpg --locate-key josch@mister-muffin.de
Where does the hash come from? It’s the local part of my email (josch) hashed with sha1 and encoded in z-base32. That computation can be done by gpg:
$ gpg --with-wkd-hash -k josch@mister-muffin.de | grep mister-muffin.de
[...]
8yxgr5jjfok88r9um56kb44x9h4dyj7f@mister-muffin.de
I exported the key that I put there using the following command:
$ gpg --no-options --export --export-options export-minimal,export-clean \
--export-filter keep-uid="uid = Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>" \
F83356BBE112B7462A41552F7D5D8C60CF4D3EB4
There is a handy validator for such setups that can be found here: https://www.webkeydirectory.com
I had an interesting debugging experience when I tried to verify my setup in a fresh Debian chroot because I got this error message when I ran above command:
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: error retrieving 'josch@mister-muffin.de' via WKD: General error
gpg: error reading key: General error
That’s not very descriptive… Turns out, that I was
missing the ca-certificates
package. After installing
it, everything worked as expected:
$ gpg --locate-key josch@mister-muffin.de
gpg: key 7D5D8C60CF4D3EB4: public key "Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>" imported
gpg: Total number processed: 1
gpg: imported: 1
pub rsa4096 2013-07-04 [SC]
F83356BBE112B7462A41552F7D5D8C60CF4D3EB4
uid [ unknown] Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>
sub rsa4096 2013-07-04 [E]
sub rsa4096 2013-07-04 [S]
sub rsa4096 2023-07-08 [S]
Urgent: Stop fueling destruction to Amazon forest [Richard Stallman's Political Notes]
US citizens: call on banks to stop fueling destruction of the Amazon forest.
Wedge in solidarity [Richard Stallman's Political Notes]
*Despite the diversity of pro-Palestinian demonstrators, [deportation thugs] go after non-white visa and scholarship holders "to create a wedge in solidarity".*
Universities that survive eager submission to state [Richard Stallman's Political Notes]
Universities that hope to survive through eager submission to state repression will find themselves reduced to even more abject subservience,
Saboteur tried to seize control over who can vote [Richard Stallman's Political Notes]
The saboteur tried to seize personal control over who is allowed to vote in the US.
It follows the latest magat fashion of using a small federal power for leverage to bully lesser governments and institutions into repression: in this case, into requiring voters to show ID cards. The range of ID cards to be accepted would be so limited that many poor voters would do without them, and be disenfranchised.
Greg Palast estimates that 21 million eligible voters would be barred from voting, if states obey this.
It would also take the US another bit step towards having a national ID card — which is, itself, oppression.
EPA email address to request exemption to evade air pollution rules [Richard Stallman's Political Notes]
* EPA sets up email address where "regulated community" can request exemption to evade air pollution rules.*
This is to speed the billionaires' ultimate sabotage project — to make the survival of civilization outside their realms impossible.
Harvard's Middle Eastern Studies department [Richard Stallman's Political Notes]
Two faculty of Harvard's Middle Eastern Studies department have suddenly "departed", and it is reported that they were fired except that the university doesn't want to admit that.
Migrating Social Security Administration off of COBOL [Richard Stallman's Political Notes]
The Social Security Administration has 60 million lines of COBOL code and has long planned to migrate that very slowly and carefully into a more modern programming language. It would take years. But now the wrecking crew (LOGE, *) wants to do it in a few months.
It will surely have many new bugs. But instead of having humans do it, they plan to use bullshit generators to write the new code.
That will guarantee plenty of absurd mistakes that humans wouldn't make.
What could make the situation worse than that? The SSA could stop answering the phones, and eliminate most of the human beings to complain to.
Hmm, that's what they just did. Looks like someone is planning to make the Social Security system fail disastrously.
* LOGE = Lots of Grief, Evisceration
Data from Amazon echo to be sent to Amazon [Richard Stallman's Political Notes]
Amazon "echo" devices should be called "tattle" because they tell Amazon what they hear.
Rebuke for Smithsonian Institute [Richard Stallman's Political Notes]
The magats rebuke the Smithsonian Institution for presenting modern scientists' and scholars' ideas of science and history, instead of the old-fashioned superstitions and prejudices they replaced.
The Big Idea: Mary G. Thompson [Whatever]
If you could abandon this world and live in your most perfect world, would you? What about the people that are stuck in your perfect world? Author Mary G. Thompson explores this concept in the Big Idea for her new novel, One Level Down. Dive in to see what it’s like to be stuck in a “perfect” reality.
MARY G. THOMPSON:
Imagine you have the power to
create your own universe. Not a virtual reality space or a game or
a holodeck program, but an entire universe with a home planet and
stars, with laws of physics and inhabitants that you choose, with
people who uploaded with you and with people—real, sentient
human beings—born inside it. Imagine you could escape your
life for a better one, a life with no limits except your
imagination and your funding.
Now imagine you are the person born
inside it. Imagine that someone else has created a universe to his
specifications, that his choices control everything you see,
everything you experience, and even the size and shape of your
body. Imagine that someone else has created you to exist forever,
unchanging, as a five-year-old child.
For one person, the technology to
simulate universes is life-saving, life-affirming, miraculous. For
another, it’s an eternal prison. Everything depends on
whether you are inside or outside, in control or
controlled.
The big idea of One Level Down is the co-existence of these perspectives: of
the miraculous ability to create and the vast beauty of all the
infinite forms of existence, and of the soul-crushing weight of
powerlessness, of living as an element in someone else’s
creation. There are the vastness of space and the simulations with
their own vastness of space inside them; there are spaceships and
colonies and humans exploring a multitude of ways of being; there
are people whose minds are so small that they dream of remaining
small, of keeping others small, of preventing change; and there are
people who have no choice in the matter, who were born into
stifling, horrific limits.
As a person with a law degree, I
can’t help but think about legal rights and legal wrongs.
It’s all well and good to provide the owner of a simulation
with his choice of parameters, but what if those parameters include
the ability to create new people who have no choice? It sounds bad
when you put it that way, but our parents pretty much did the same
thing to us when they chose to have babies in the real world. After
all, we can’t upload into a different universe where
there’s no aging, disease, or death. Many of us would select
different parents if we could. I mean, my parents are wonderful,
but if I was going to choose whatever I wanted, I’d go with
all of their amazing real qualities plus extreme wealth. Seriously, Mom—please get on that! I
also didn’t choose to be born into a world with the current
level of technology, political systems, climate disasters,
etc.
But the other big idea in One Level Down is that even in the smallest of prisons, even
in the worst of times, there is a world outside your window. Ella lives inside
a universe with a beautiful, green planet and a community of
thousands of people. Each person in this universe is constrained by
their own troubles, their own fears, their own psychological
limits. Even the one person Ella believes can help her, the
Technician scheduled to come from outside, has his own limitations.
Every single person Ella has met in her life has had the ability to
help her. Some have helped, but never to the full extent of their
abilities. Each person struggles to see what lies outside of their
personal box.
My challenge in writing
One Level Down
was to find a way for someone stuck
in the situation we’re all fundamentally in—born into a
universe not of our own choosing—to form a plan, to make
decisions, to take action even though the odds seem long. I looked
around Ella’s universe for the holes, the cracks, the places
where light might seep in around the edges of Ella’s locked
room. In doing so, I re-discovered a perspective I’ve tried
to hold onto my entire life, but that has often become clouded or
obscured by challenges, habits, or self-created limitations of
vision.
That perspective is this: What
looks like a lock may be a key. What looks like a wall may be a
door. What seems out of reach may be closer than it appears. What
sounds like fiction may be possible. You can’t decide where
you start, and you may not be able to decide where you end up, but
you can decide whether you’re going to use all the tools at
your disposal. You can decide whether your current parameters will
be your limit or if you’re willing to poke your fingernails
into the holes and rip.
Keep your imagination open and your
fingernails sharp, and you may find your way out of the universe
you were born in. Or maybe something much weirder will happen.
Whatever the result, you won’t be sorry you took a peek at
the light.
One Level Down: Amazon|Barnes & Noble|Bookshop|Powell’s
Author socials: Website|Bluesky|Facebook
Read an excerpt.
Slog AM: A School District Tattles on Washington State, Layoffs at HHS, and We Have a New County Executive [The Stranger]
The Stranger's Only News Roundup by Hannah Murphy Winter
Good morning! It’s April Fools Day, a day that has a storied history of tricking journalists into reporting stupid fictional shit—from predator trout to the first human-powered flight machine. Stay sharp and keep your parents away from the internet until midnight. IRL, the rain’s only sticking around til 10 a.m., and it’s kindly staying away til the sun goes down, so get out there and enjoy the grey. Until then, grab a Mighty-O poop donut, and let’s get into it.
Council Loves to Blame Defund SPD: Later today, City Council is voting on Resolution 32167, a nonbinding “public safety” resolution that is trying to blame the Defund SPD movement for the fact that our police department is still under federal consent decree (which basically means we’re being babysat by the DOJ). Introduced by Rob Saka, the resolution is framed as a step toward ending the consent decree. It reaffirms the city’s support for police, fire, and other first responders, but also specifically disavows any efforts to “defund or abolish SPD services or personnel.” The problem? We never defunded SPD, and we’re still being babysat by the feds because we can’t get our police oversight game together. The resolution won’t change any law or policy, but if (when) they pass it later today, City Council should be embarrassed that they’re still trying to peddle this straight-up lie. Stranger contributor Tobias Coughlin-Bogue will have more on it after the vote.
School District Tattles on Washington to Fasc Daddy: Last week, the Kennewick School District filed a complaint with the U.S. Department of Education’s Office for Civil Rights, claiming that they’re in an impossible position: disobey Trump’s Executive Order and allow trans athletes to compete in school sports; or break state law and ban them. The district—which is about an hour west of Walla Walla—explains to the DOE that they’re already on Trump’s side on the issue, with classic “don’t let dicks in the locker room” coded language: “The Kennewick School Board is committed to ensuring the protection of biological female athletics, maintaining ‘all-female’ locker rooms separate from male locker rooms, and prioritizing the privacy rights of our students,” they wrote in the complaint. “However, we find ourselves caught between conflicting directives that threaten not only our federal funding but also the rights and values of the families we serve.”
This is what boot licking looks like. The school district asked for three things: Assurance that if they’re obedient subjects, they won’t lose federal funding; confirmation that either the school district or the federal government gets control over how they treat their trans students; and an investigation into Washington State’s Office of Superintendent of Public Instruction for civil rights and “parental rights” violations.
Cruelty Is the Point: Two weeks ago, Fife police believe a 26-year-old drove an SUV covered in fake ICE decals around a Ukrainian market, honking and blocking the parking lot entrance. Ukrainian store employees were scared and thought authorities were “coming for them,” police said. On closer examination, in much smaller print, the decal said “ICE Deliveries.” He’s still being charged with second-degree criminal impersonation. He pleaded not guilty.
Why Did They Think ICE Was Coming for Them? Because ICE officers have been making themselves very noticeable in Washington these days. Last week, they detained Alfredo “Lelo” Juarez Zeferino, a farmworker activist in Skagit County, and Lewlyn Dixon, a lab technician at UW Medicine, both of whom are now being held at the Northwest Detention Center in Tacoma. At least 100 protesters showed up outside of the facility over the weekend. La Resistencia, which helped coordinate the protest, said that they video-called a migrant detained in the facility during the rally, and they said that “the large public display of support brought tears inside the detention facility.” Photographer Jake Nelson was there for The Stranger. Check it out.
Death of 10,000 Cuts: This morning, Health and Human Services Secretary RFK Jr. made good on his promise to lay off 10,000 people from his department. According to the New York Times, combined with earlier cuts and departures, this will shrink the department by almost a quarter. The officials responsible for minority health and infectious disease prevention were both laid off, as well as our top tobacco regulator, staff who oversee veterinary medicine, and the people who review new drug applications. Entire departments at the CDC studying chronic diseases and environmental problems were cut. HIV prevention was gutted. The FDA alone lost 3,500 staff members.
Don’t Call It a Filibuster: But Cory Booker has been speaking on the Senate floor since 7 p.m. last night, and as of 11 a.m. ET today, he was still talking. This isn’t to block specific legislation. It’s a protest of the Trump Administration’s “complete disregard for the rule of law, the Constitution and the needs of the American people,” and it’s possibly the strongest demonstration of protest we’ve seen in our federal representatives. Around dawn, he said: “I’m wide awake. I’m going to stand here for as many hours as I can.”
New Blood: King County has a new executive this morning. Dow Constantine, who’s been in the role since 2009, has officially stepped into his new $450,000-a-year job as the head of Sound Transit, and King County Council has named his deputy, Shannon Braddock, to finish out the last nine months of his term. So what do we know about her? She’s the first-ever woman in the role. She’s lost two elections in the last 10 years—one for city council and one for state senate—and we endorsed her opponent both times. What was our beef? Mostly her big-business leanings. We’ll be watching.
Two-Wheeled Highway: While Washington State has been struggling to fund most of its major transportation projects, the chair of the state Senate Transportation Committee says financing a statewide bikeway system is cheap enough to pull off. The project would connect our existing major bike paths across the state—the Burke-Gilman, Palouse to Cascades, Eastrail, and Spokane’s Centennial—for less than $50 million over two years. It’s orders of magnitude cheaper than car infrastructure AND better for our environment. Let’s fucking go.
It Wasn’t Aliens, This Time: Over the weekend, Seattleites noticed a dark grey smoke ring hovering over the city. Was it a vape cloud? An alien chem trail? Or, as one commenter asked: “Is that the tornado?” Most likely, our big black halo was thanks to the pyrotechnics show at Lumen’s Supercross event this weekend. KING 5’s meteorologist says it didn’t affect air quality. But like—look at that thing.
View this post on Instagram
After All That Smoke-Ring Excitement: Here’s a gentle groove for your Tuesday morning. This duo met at Mali’s Institute for the Young Blind, and they’ve been making (Grammy-nominated) music together ever since.
"Chinga La Migra" [The Stranger]
Last weekend, hundreds of migrant advocates and union members rallied in front of NWDC for the release of Alfredo “Lelo” Juarez Zeferino, a farmworker activist in Skagit County; and Lewlyn Dixon, a lab technician at UW Medicine—and the release of the 1,500 other detainees at the facility. Photographer Jake Nelson went to Tacoma to capture the day for The Stranger. by Jake Nelson
Introduction and captions by Hannah Murphy Winter. Photography is by Jake Nelson.
Last month, Immigration and Customs Enforcement (ICE) made two high-profile arrests in our region: Alfredo “Lelo” Juarez Zeferino, an Indigenous Mixteco farmworker activist who's been working as a berry picker in and around Skagit County since he was 14; and Lewelyn Dixon, a lab technician at UW Medicine, originally from the Philippines, who moved here 50 years ago. Both of them were transferred to the Northwest Detention Center in Tacoma (NWDC)—one of the largest immigration detention facilities in the United States.
These aren't the first, nor the last, people detained by ICE in Washington. While we don't have state-by-state numbers, Homeland Security says they've made 32,809 immigration-related arrests nationwide in the first 50 days of the Trump Administration, and the ICE Seattle X account practically fetishizes their local arrests, posting daily photos of people in handcuffs, facing deportation. But Zeferino and Dixon have drawn particular attention. Zeferino has been an activist for farmworker rights in Skagit County, and friends and colleagues suspect he was targeted for his activism. And Dixon, who is a green card holder who came to the US from the Philippines five decades ago, has been held for more than three weeks. Her family and her union at the university, SEIU Local 925, have been rallying for her release.
Last weekend, hundreds of migrant advocates and union members rallied in front of NWDC for their release and the release of the 1,500 other detainees at the facility. Photographer Jake Nelson went to Tacoma to capture the day for The Stranger.
The chickens of sanewashing come home to roost.
[$] Updates on storage standards [LWN.net]
As he has in some previous editions of the Linux Storage, Filesystem, Memory-Management, and BPF Summit (LSFMM+BPF), Fred Knight gave an update on the status of various storage standards this year. In it, he looked at changes to the NVM Express (NVMe) standards in some detail. He also updated attendees on the fairly small changes that have come to the SCSI (T10) and ATA (T13) standards over the last few years.
The return of Building 7 [The Old New Thing]
The new Microsoft Redmond campus occupies the space formerly held by several older buildings, including the original X-shaped Redmond campus buildings 1 through 11. The freed-up building numbers were reassigned to the new buildings, so we now have new buildings 1 through 15.
And that includes a new Building 7 at the corner of NE 36th St. and 156 Avenue NE.
Yes, this means that pranksters have lost one of their longtime inside jokes.
To honor the ghost of the original Building 7, a colleague of mine shared an article from the February 19, 1988 issue of the Micronews, Microsoft’s internal employee newsletter.
New Building Going Up
On the two-year anniversary of moving to Corporate Campus, it’s new building time again at Microsoft! Building 8, which will contain a whopping 115,000 square feet, gets underway in the next few days on the meadow land just north of corporate campus.
The new building will be the equivalent of two of the present corporate campus structures, but keeps the same floor plan. Building 8 should be completed by December.
While Building 7 is in the master plan to be constructed, city requirements mandate that the road improvements to Bel-Red Road must occur first – and the Bel-Red improvements are not on the City’s near-term construction plans. This is good news in that the grove of trees where Building 7 is planned can be preserved.
So why isn’t Building 8 renamed Building 7 if the original Building 7 isn’t being built now? “Building 7 is an established location on all the master plans approved by the city of Redmond and all the pertinent legal documents,” notes Buck Ferguson, Director of Administration. “Since the police and fire departments and emergency medical personnel use these master plans for their information, the city of Redmond designated the next building to be #8.”
With space on Corporate Campus in such short supply, Microsoft is expanding this spring to short-term quarters in the adjacent East Tech office complex. The Mailroom, Copy Center, and Training Rooms will all be moving to East Tech; CD ROM and Microsoft Press will also be occupying temporary space there. An asphalt path will be installed between Microsoft and East Tech for easier walking – and the move there will take place as soon as possible. Construction of the offices, restrooms, etc. in the shell space began last week and is planned to be completed in mid-April.
Bonus chatter: Wait, we freed up numbers 1 through 11, but the new buildings are numbered 1 through 15. What about building numbers 12 through 15?
Buildings 12 through 15 were the buildings referred to in the above article as the “East Tech office complex”. Those numbers were freed up in 2000 when the East Tech buildings were torn down to construct buildings 33 and 34.
The post The return of Building 7 appeared first on The Old New Thing.
[$] Memory persistence over kexec [LWN.net]
The kernel's kexec mechanism allows one kernel to directly boot a new one; it can be thought of as a sort of kernel equivalent to the execve() system call. Kexec has a number of uses, including booting a special kernel to perform dumps after a crash. Normally, one does not expect user-space processes to survive booting into a new kernel, but that has not stopped developers from trying to implement that ability. Mike Rapoport ran a memory-management-track session at the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit to discuss one piece of that problem: enabling the contents of memory to persist across a kexec handover so that the new kernel can pick up where the old one left off.
Firefox 137.0 released [LWN.net]
Version 137.0 of the Firefox browser has been released. Changes include the rollout of tab groups, a number of search-bar changes, and the ability to add signatures to PDF files.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (freetype, grub2, kernel, kernel-rt, and python-jinja2), Debian (freetype, linux-6.1, suricata, tzdata, and varnish), Fedora (mingw-libxslt and qgis), Mageia (elfutils, mercurial, and zvbi), Oracle (grafana, kernel, libxslt, nginx:1.22, and postgresql:12), Red Hat (opentelemetry-collector), SUSE (corosync, opera, and restic), and Ubuntu (aom, libtar, mariadb, ovn, php7.4, php8.1, php8.3, rabbitmq-server, and webkit2gtk).
Radar Trends to Watch: April 2025 [Radar]
March was the biggest month that Trends has ever had. In addition to almost daily announcements about AI, a lot has been going on in programming, in security, in operations (which usually doesn’t merit its own topic), and even in quantum computing. It’s been a long time since we’ve had much to say about social media, but with a reboot of Digg, a new attempt at Napster, and alternatives to Facebook and Instagram, we’re wondering: Has the world tired of the current social platforms? Someone obviously thinks so.
And we should spend some time on AI. I’ve been running LLMs locally on my laptop. Gemma 3, DeepSeek R1:32B, and QwQ all work well—especially the 4B version of Gemma 3, which is reasonably fast even without a GPU. If you want to spend $10K, you can run the full DeepSeek V3 on a loaded Mac Studio. Does the future belong to giant AI providers? They’ll remain important, but local alternatives are getting better every day.
What will April bring?
Pluralistic: Anyone who trusts an AI therapist needs their head examined (01 Apr 2025) [Pluralistic: Daily links from Cory Doctorow]
There's a debate to be had about whether AI chatbots make good psychotherapists. This is not an area of my expertise, so I'm not going to weigh in on that debate. But nevertheless, I think that if you use an AI therapist, you need your head examined:
I'm not an expert on psychotherapy, but I am an expert on privacy and corporate misconduct, and holy shit is the idea of a chatbot psychotherapist running on some Big Tech cloud a terrible idea. Because while I'm no expert on therapy, I have benefited from therapy, and I know this for certain: therapy requires confidentiality.
Shrinks are incredibly careful about privacy. For example: when my brother was getting married, my therapist was invited to the wedding. His daughter and my brother's fiancee were close friends, and my brother's fiancee had grown up staying over at their house and wanted her friend and her friend's parents at the wedding. My therapist sat me down and said, "Now listen, I take confidentiality very seriously. If you want me to, I will pretend not to know you at the wedding. No one needs to know that you're seeing me or – any therapist."
I told him I didn't mind people knowing I'd seen him, but just that little fastidious gesture confirmed the trust I'd put in Alan. It meant that I could openly and freely discuss things I'd never told anyone before, and that I never told anyone ever again. Having those genuinely open conversations transformed my life, for the better.
Now consider the chatbot therapist: what are its privacy safeguards? Well, the companies may make some promises about what they will and won't do with the transcripts of your AI sessions, but they are lying. Of course they're lying! AI companies lie about what their technology can do (of course). They lie about what their technologies will do. They lie about money. But most of all, they lie about data.
There is no subject on which AI companies have been more consistently, flagrantly, grotesquely dishonest than training data. When it comes to getting more data, AI companies will lie, cheat and steal in ways that would seem hacky if you wrote them into fiction, like they were pulp-novel dope fiends:
When an AI company tells you it won't use your intimate secrets as training data, they are lying. Of course they're lying! This isn't just any data, it's data that isn't replicated elsewhere on the internet. It's rare – it's unique. It's a competitive advantage. AI companies will 100%, without exception, totally use your private therapy data as training data.
What's more: they will leak your therapy sessions. They will leak them because they can't figure out how to prevent models from vomiting up their training data verbatim:
https://www.theatlantic.com/technology/archive/2024/01/chatgpt-memorization-lawsuit/677099/
But they'll also leak because tech companies leak like hell. They are crawling with insider threats. If the AI company sticks around long enough, it'll leak your secrets. And if it goes bankrupt? That's even worse! When tech companies go bust, the first thing their creditors do is sell off their warehouses full of private data. The more private and compromising that data is, the harder they'll try to sell it:
https://www.eff.org/deeplinks/2025/03/how-delete-your-23andme-data
Now, maybe you're thinking, "OK, but that's a small price to pay if we can finally get therapy for everyone." After all, the country – the world – is in the midst of a terrible mental health crisis and there's a dire shortage of therapists.
Now, let's stipulate for the moment to the idea that chatbots are substitutes for human therapists – that, at the very least, they're better than nothing. I don't think that's true, but let's say it is. Even so, this is a bad tradeoff.
Here, try this thought-experiment: someone figures out a great business-model for to pay for therapy for poor people. "We turned therapy into a livestreamed reality TV show. If you're too poor to afford a therapist, you can go to one of our partially trained livestreamer therapists, who will broadcast all of your secrets to anyone who watches. There's a permanent archive of these sessions, and the worst people in the world comb through it 24/7 looking for embarrassing stuff to repost and go viral with. What, you don't like that? Oh, I see: you just don't think poor people deserve mental health. I guess the perfect really is the enemy of the good."
This gambit is called "predatory inclusion." Think of Spike Lee shilling cryptocurrency scams as a way to "build Black wealth" or Mary Kay promising to "empower women" by embroiling them in a bank-account-draining, multi-level marketing cult. Having your personal, intimate secrets sold, leaked, published or otherwise exploited is worse for your mental health than not getting therapy in the first place, in the same way that having your money stolen by a Bitcoin grifter or Mary Kay is worse than not being able to access investment opportunities in the first place.
But it's not just people struggling with their mental health who shouldn't be sharing sensitive data with chatbots – it's everyone. All those business applications that AI companies are pushing, the kind where you entrust an AI with your firm's most commercially sensitive data? Are you crazy? These companies will not only leak that data, they'll sell it to your competition. Hell, Microsoft already does this with Office365 analytics:
https://pluralistic.net/2021/02/24/gwb-rumsfeld-monsters/#bossware
These companies lie all the time about everything, but the thing they lie most about is how they handle sensitive data. It's wild that anyone has to be reminded of this. Letting AI companies handle your sensitive data is like turning arsonists loose in your library with a can of gasoline, a book of matches, and a pinky-promise that this time, they won't set anything on fire.
(Image: Zde, CC BY-SA 4.0, modified)
Global Working Conditions Matter for American Workers https://prospect.org/labor/2025-03-30-global-working-conditions-matter-american-workers-su-tai-ilab/
"An off switch? She'll get years for that." https://www.jwz.org/blog/2025/03/an-off-switch-shell-get-years-for-that-2/
#15yrsago Noteworthy Modern Occurances: the Digital Economy Bill https://www.openrightsgroup.org/blog/disconnection-notices-served/
#15yrsago Digital Economy Bill: the last hours https://www.youtube.com/watch?v=gOyg1GUY18U
#5yrsago Turn on wifi sharing https://pluralistic.net/2020/04/02/eff-livestream-today/#digital-divide
#5yrsago Coronavirus travel posters https://pluralistic.net/2020/04/02/eff-livestream-today/#jennifer-baer
#5yrsago How you are subsidizing the otherwise unprofitable Fox News https://pluralistic.net/2020/04/02/eff-livestream-today/#unfoxmycablebox
#5yrsago Ted Chiang on pandemics as idiot plots https://pluralistic.net/2020/04/02/eff-livestream-today/#disaster-capitalism
#5yrsago Bird's "Black Mirror" mass layoffs https://pluralistic.net/2020/04/02/eff-livestream-today/#2-mins
#5yrsago UK public health official endorses official reagents for covid tests https://pluralistic.net/2020/04/02/eff-livestream-today/#unauthorized-reagents
#5yrsago A promising, plausible plan for "privacy-preserving" surveillance https://pluralistic.net/2020/04/02/eff-livestream-today/#pepp-pt
#5yrsago Private equity titan squats on empty hospital https://pluralistic.net/2020/04/02/eff-livestream-today/#joel-kills
#1yrago Prison-tech company bribed jails to ban in-person visits https://pluralistic.net/2024/04/02/captive-customers/#guillotine-watch
Chicago: ABA Techshow, Apr 3
https://www.techshow.com/
Bloomington: Picks and Shovels at Morgenstern, Apr 4
https://morgensternbooks.com/event/2025-04-04/author-event-cory-doctorow
Bloomington: Ostrom Center, Apr 4
https://events.iu.edu/ostromworkshop/event/1843316-hls-beyond-the-web-cory-doctorow
Pittsburgh: Picks and Shovels at White Whale Books, May 15
https://whitewhalebookstore.com/events/20250515
Pittsburgh: PyCon, May 16
https://us.pycon.org/2025/schedule/
PDX: Teardown 2025, Jun 20-22
https://www.crowdsupply.com/teardown/portland-2025
PDX: Picks and Shovels at Barnes and Noble, Jun 20
https://stores.barnesandnoble.com/event/9780062183697-0
New Orleans: DeepSouthCon63, Oct 10-12, 2025
http://www.contraflowscifi.org/
Capitalists Hate Capitalism (MMT Podcast)
https://pileusmmt.libsyn.com/195-capitalists-hate-capitalism-with-cory-doctorow
How to Destroy Our Tech Overlords (Homeless Romantic)
https://www.youtube.com/watch?v=epma2B0wjzU
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org). Signed, personalized copies at Dark Delicacies (https://www.darkdel.com/store/p3007/Pre-Order_Signed_Copies%3A_The_Lost_Cause_HB.html#/)
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com. Signed copies at Dark Delicacies (US): and Forbidden Planet (UK): https://forbiddenplanet.com/385004-red-team-blues-signed-edition-hardcover/.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Attack Surface": The third Little Brother novel, a standalone technothriller for adults. The Washington Post called it "a political cyberthriller, vigorous, bold and savvy about the limits of revolution and resistance." Order signed, personalized copies from Dark Delicacies https://www.darkdel.com/store/p1840/Available_Now%3A_Attack_Surface.html
"How to Destroy Surveillance Capitalism": an anti-monopoly pamphlet analyzing the true harms of surveillance capitalism and proposing a solution. https://onezero.medium.com/how-to-destroy-surveillance-capitalism-8135e6744d59?sk=f6cd10e54e20a07d4c6d0f3ac011af6b) (signed copies: https://www.darkdel.com/store/p2024/Available_Now%3A__How_to_Destroy_Surveillance_Capitalism.html)
"Little Brother/Homeland": A reissue omnibus edition with a new introduction by Edward Snowden: https://us.macmillan.com/books/9781250774583; personalized/signed copies here: https://www.darkdel.com/store/p1750/July%3A__Little_Brother_%26_Homeland.html
"Poesy the Monster Slayer" a picture book about monsters, bedtime, gender, and kicking ass. Order here: https://us.macmillan.com/books/9781626723627. Get a personalized, signed copy here: https://www.darkdel.com/store/p2682/Corey_Doctorow%3A_Poesy_the_Monster_Slayer_HB.html#/.
Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026
Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026
The Memex Method, Farrar, Straus, Giroux, 2026
Today's top sources:
Currently writing:
A Little Brother short story about DIY insulin PLANNING
Picks and Shovels, a Martin Hench noir thriller about the heroic era of the PC. FORTHCOMING TOR BOOKS FEB 2025
Latest podcast: Why I don't like AI art https://craphound.com/news/2025/03/30/why-i-dont-like-ai-art/
This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Medium (no ads, paywalled):
Twitter (mass-scale, unrestricted, third-party surveillance and advertising):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
ISSN: 3066-764X
Colin Watson: Free software activity in March 2025 [Planet Debian]
Most of my Debian contributions this month were sponsored by Freexian.
You can also support my work directly via Liberapay.
Changes in dropbear 2025.87 broke OpenSSH’s regression tests. I cherry-picked the fix.
I reviewed and merged patches
from Luca Boccassi to send and accept the
COLORTERM
and NO_COLOR
environment variables.
Following up on last month, I fixed some more uscan errors:
I upgraded these packages to new upstream versions:
In bookworm-backports, I updated python-django to 3:4.2.19-1.
Although Debian’s upgrade to python-click 8.2.0 was reverted for the time being, I fixed a number of related problems anyway since we’re going to have to deal with it eventually:
dh-python dropped its dependency on python3-setuptools in 6.20250306, which was long overdue, but it had quite a bit of fallout; in most cases this was simply a question of adding build-dependencies on python3-setuptools, but in a few cases there was a missing build-dependency on python3-typing-extensions which had previously been pulled in as a dependency of python3-setuptools. I fixed these bugs resulting from this:
We agreed to remove python-pytest-flake8. In support of this, I removed unnecessary build-dependencies from pytest-pylint, python-proton-core, python-pyzipper, python-tatsu, python-tatsu-lts, and python-tinycss, and filed #1101178 on eccodes-python and #1101179 on rpmlint.
There was a dnspython autopkgtest regression on s390x. I independently tracked that down to a pylsqpack bug and came up with a reduced test case before realizing that Pranav P had already been working on it; we then worked together on it and I uploaded their patch to Debian.
I fixed various other build/test failures:
I enabled more tests in python-moto and contributed a supporting fix upstream.
I sponsored Maximilian Engelhardt to reintroduce zope.sqlalchemy.
I fixed various odds and ends of bugs:
I contributed a small documentation improvement to pybuild-autopkgtest(1).
I upgraded rust-asn1 to 0.20.0.
I finally gave in and joined the Debian Science Team this month, since it often has a lot of overlap with the Python team, and Freexian maintains several packages under it.
I fixed a uscan error in hdf5-blosc (maintained by Freexian), and upgraded it to a new upstream version.
I fixed python-vispy: missing dependency on numpy abi.
I fixed debconf should automatically be noninteractive if input is /dev/null.
I fixed a build failure with GCC 15 in yubihsm-shell (maintained by Freexian).
Prompted by a CI failure in debusine, I submitted a large batch of spelling fixes and some improved static analysis to incus (#1777, #1778) and distrobuilder.
After regaining access to the repository, I fixed telegnome: missing app icon in ‘About’ dialogue and made a new 0.3.7 release.
How did the music industry get through hip-hop sampling in the 80s without blowing itself up? I was paying attention to copyright issues in software at the time, we used copy protection, but we knew it didn't work. It was just how things were done.
More weird ChatGPT fun [Scripting News]
The prompt: Here's a drawing and a profile picture. I'd like you to insert the person in the profile into the drawing, and adapt it as you see fit, but the face of the person in the profile should be in the same style as the ones around it.
I gave it a snapshot of the art from the season finale of Severance, and my profile picture from Facebook.
Happy April 1st [Charlie's Diary]
This is not an April Fool's Day joke. It was, however, my April Fool's Day joke in 2013, so I'm blowing the dust off it, tweaking a couple of infelicities, and giving it to you as a chew toy: hopefully you've already forgotten it by now.
Greetings. The financial agreements having been finalized, I am now at liberty to publicly announce my big new media project for 2013 — my first movie deal!
Many of you have asked me, "when are we going to see a movie of one of your books?" Secrecy and a non-disclosure agreement have forced me to evade and misdirect callers, but I can now reveal the surprising truth; it could well be on a screen near you as early as fall 2014! However, it's not going to be based on one of my existing novels. My existing long-form fiction has always been problematic from a visual perspective; plot complexity is not an obstacle, but too much time spent inside my characters' heads is, and unreliable narrators are notoriously hard to convey in film — especially with today's pressure to deliver an action-packed adventure for the short attention span generation. Films are made or broken in their first weekend box-office receipts, and I see no reason to make my first movie my last. So I'm determined to start my new career as a producer with a property that is so hot it comes in a tin labelled DROP AND RUN.
Producer?
Yes, I'm going into production. The success of "Iron Sky" demonstrated that kickstarter assisted low to medium budget SFX-dominated movies with a largely unknown cast can achieve cult success and a decent ROI via streaming download services. The enduring popularity of the low-budget gorefest horror sector with plausible non-supernatural monster threats also suggests an option. My analysis of the sector, conducted with the assistance of my agent and production associates, suggests that one particular area is ripe for creative disruption.
There is a glut of Shark-related wildlife horror on the market at present, from "Megalodon" to "Shark vs. Giant Octopus" and "Sharktopus", not to mention the immortal "Sharknado" and next year's blockbuster "Sharks vs. Tanks". Why sharks? Well, they have teeth, and they inspire primal fear of being eaten — especially when accompanied by a John Williams score.
But I'm not going to produce a shark movie; instead I'm going to go back to basics, with another popular wildlife phobia. Take a primal threat, inflate it to massive proportions, riff off a parasitic life-cycle that Ridley Scott used to great effect in his most enduring horror creation, and add a high concept. I present to you ...
At a shadowy genetic research lab in the corn fields of Arizona, white-coated scientists are tampering with nature. Bees are dying out, so what will pollinate our crops? The researchers, including idealistic whistle-blower Amanda Powers (performed by [TO BE ANNOUNCED]) are transplanting bee genes and growth factors into another flying insect species. They hope this will let their corporate employer continue to profit from their GM crop line after the bees it is killing become extinct.
(The researchers are unaware that the evil CEO of their employer, the Mandrake Corporation, has other plans for his genetically modified wasps; he is working on a fat DARPA contract to develop wireless-controlled cyborg insect predators to use as drones in the War On Terror and to patrol the Mexican border to keep climate refugees out.)
Amanda makes covert contact with ruggedly handsome undercover EPA Agent Garrison Ambrose (played by [TO BE ANNOUNCED]) who is also, unknown to his employers, a deep cover Greenpeace mole inserted into the US government agency a decade ago to uncover evidence of corporate corruption of the civil service.
Mandrake Corporation is, unknown to everyone else, working with DNA samples stolen from Jurassic Park. They're building some really big wasps — wasps the size of pigeons — with turbocharged biology that enables them to fly (and sting).
A Greenpeace sympathizer at the EPA leaks word of the experiments to a group of idealistic PETA activists, but the message gets mangled: they think Mandrake Corporation are trying to breed GM beagles for medical research. They organize a night-time break-in and open the containment airlock on the dome that holds the wasps before realizing their mistake — in a very terminal manner.
At this point Ambrose is called in in his official capacity, along with local good ole' boy Sheriff Bill O'Rourke, who is in the pay of Mandrake Corp (with a remit to hush-up the leak). Ambrose wants to spray with insecticide to kill the feral wasps before their queen starts laying eggs; O'Rourke is more concerned with protecting Mandrake assets and finding the source of the leak. Powers tries to warn them about the danger posed by the wasps but O'Rourke isn't listening. She and Ambrose hole up to try and work out where the wasps might be nesting.
Meanwhile: a hitch-hiker is found dead by the roadside, bloated up and stabbed repeatedly. "Looks like a pack of rattlesnakes," observes O'Rourke.
A helicopter circles around the research station, spraying a proprietary experimental insecticide. Wasps fly through it and fail to die. Instead, they begin to grow, shedding their exoskeletons and metamorphizing into a new, larger, deadlier form.
Spraying completed, O'Rourke begins to hunt down the source of the leak. He works out that it's probably Powers, and sends his men to arrest her. Ambrose remonstrates with the small-town cops while Powers escapes; they arrest and beat him instead.
CUT TO: A mini-bus full of protestors from the GOD HATES QUEERS church are found stung to death, with horrible gaping wounds. (A giant stinger has punched right through the windshield and impaled the driver through his face.)
O'Rourke holes up to interrogate Ambrose. Ambrose warns him: "you have no idea how bad this is going to get." O'Rourke beats him up.
CUT TO: a twin-engined airliner flies into a swarm of giant wasps, loses both engines, and makes a successful crash-landing ... only for the traumatized survivors to be stung to death and eaten as they crawl from the wreckage.
Meanwhile, Powers escapes into the desert. She sees giant wasps in the distance. With her camera, she photographs one of them chewing off a tree branch to carry back to its nest. She uploads the photo to the internet: SOMETHING TERRIBLE IS COMING.
Next morning, a Gulfstream full of men in black from the EPA lands at the nearest airfield and heads for O'Rourke's jail. They spring Ambrose, haul him off to their HQ in Phoenix — then tell him he's suspended pending an investigation. He tries to warn them. His boss, Schaeffer, tells him that the USAF is lending them a surveillance asset to track down the wasps nest.
CUT TO: A predator drone being bitten in half by a wasp with a 20 metre wingspan.
CUT TO: Gigantic wasps peeling back the roof of the Mandrake Corporation research center, picking up screaming victims, stinging them into paralysis, laying eggs in their abdominal cavity, and flying them back to the nest to incubate their voracious larvae.
Powers is trying to drive to Phoenix. Her ipad is filling up with frantic questions from journalists as the story is now breaking news; but O'Rourke has sent his men after her. A Highway Patrol officer on a motorcycle pulls her over and is about to haul her out of her car when she looks in the rear-view mirror and sees a squadron of giant wasps hurtling towards them. She warns him to take cover just as the first wasp roars overhead and spears the motorbike on its stinger. The cop dives into the back seat, and a car chase of a different kind ensues. Powers finally reaches town, driving on her front wheels after a vexatious vespulan has bitten the back half off her car. She's met by a national guard unit armed with stinger missiles who shoot down the insects ...
The men from the EPA reveal to Ambrose that the national guard have found the nest and are about to douse it with insecticide. Ambrose warns them that it won't work, that they need Powers' special insight into how to kill the wasps.
CUT TO: Another Predator drone firing missiles, trailing clouds of gas, at a WASPS' NEST THE SIZE OF A SKYSCRAPER CLINGING TO THE EDGE OF THE GRAND CANYON.
CUT TO: ENRAGED GIANT WASPS FLYING INTO SKYSCRAPERS IN CHICAGO AND TOKYO. ONE OF THEM IS STILL AIRBORNE DESPITE TRAILING FLAMES FROM A MISSILE WOUND INFLICTED BY A FIGHTER JET. SKYSCRAPERS COLLAPSING IN FLAMES.
Powers explains to the EPA that the wasps are breeding up a new batch of super-queens which will be invulnerable to anything short of nuclear weapons. A crack team of special forces will have to abseil into the giant nest, find the encysted, paralysed, still-living human egg-incubators, and incinerate them with flame-throwers before the nest's Guards can stop them. Otherwise the problem will only get worse.
The President has taken an interest by this point and is ordering the spill-ways on the Grand Hoover Dam to be opened, in hope of flushing the giant nest all the way out to sea. There is therefore a forty-minute deadline in which to accomplish the mission.
CUT TO: A GIANT WASP BITING THE GUN BARREL OFF A TANK.
CUT TO: A GANG OF GIANT WASPS STINGING GODZILLA TO DEATH THEN ADVANCING ON MEGA-TOKYO.
CUT TO: A GIANT WASP WITH STRAP-ON BOOSTERS LAUNCHING TO ORBIT FROM CAPE CANAVERAL TO EAT THE INTERNATIONAL SPACE STATION.
CUT TO: WASPS WITH GIANT FRICKEN' LASERS STRAPPED TO THEIR STINGERS SHOOTING DOWN BOEING 747's OVER LA.
CUT TO: IT'S KIND OF LIKE 'ALIENS' ONLY WITH GIANT WASPS AND THE WORLD'S BIGGEST FLUSH TOILET INSTEAD OF A NUKE AND IF THEY FIND THE CUTE KID WHO'S PREGNANT WITH A CHEST-BURSTER MAGGOT THE SIZE OF A FOOTBALL THEY'RE GOING TO SET FIRE TO HER WITH A FLAME-THROWER FOR HER OWN GOOD.
WASPS. WASPS. WASPS EVERYWHERE!!!!1!!
You may hate my project, but my backers love it and they're working up a buzz. So it's going ahead, whether you like it or not!
CodeSOD: A Ruby Encrusted Footgun [The Daily WTF]
Many years ago, JP joined a Ruby project. This was in the heyday of Ruby, when every startup on Earth was using it, and if you weren't building your app on Rails, were you even building an app?
Now, Ruby offers a lot of flexibility. One might argue that it offers too much flexibility, especially insofar as it permits "monkey patching": you can always add new methods to an existing class, if you want. Regardless of the technical details, JP and the team saw that massive flexibility and said, "Yes, we should use that. All of it!"
As these stories usually go, that was fine- for awhile. Then one day, a test started failing because a class name wasn't defined. That was already odd, but what was even odder is that when they searched through the code, that class name wasn't actually used anywhere. So yes, there was definitely no class with that name, but also, there was no line of code that was trying to instantiate that class. So where was the problem?
def controller_class(name)
"#{settings.app_name.camelize}::Controllers".constantize.const_get("#{name.to_s.camelize}")
end
def model_class(name)
"#{settings.app_name.camelize}".constantize.const_get("#{name.to_s.camelize}")
end
def resource_class(name)
"#{settings.app_name.camelize}Client".constantize.const_get("#{name.to_s.camelize}")
end
It happened because they were dynamically constructing the class names from a settings field. And not just in this handful of lines- this pattern occurred all over the codebase. There were other places where it referenced a different settings field, and they just hadn't encountered the bug yet, but knew that it was only a matter of time before changing a settings file was going to break more functionality in the application.
They wisely rewrote these sections to not reference the settings, and dubbed the pattern the "Caramelize Pattern". They added that to their coding standards as a thing to avoid, and learned a valuable lesson about how languages provide footguns.
Since today's April Fool's Day, consider the prank the fact that everyone learned their lesson and corrected their mistakes. I suppose that has to happen at least sometimes.
Cell Phone OPSEC for Border Crossings [Schneier on Security]
I have heard stories of more aggressive interrogation of electronic devices at US border crossings. I know a lot about securing computers, but very little about securing phones.
Are there easy ways to delete data—files, photos, etc.—on phones so it can’t be recovered? Does resetting a phone to factory defaults erase data, or is it still recoverable? That is, does the reset erase the old encryption key, or just sever the password that access that key? When the phone is rebooted, are deleted files still available?
We need answers for both iPhones and Android phones. And it’s not just the US; the world is going to become a more dangerous place to oppose state power.
The beautiful art that came with the season finale of Severance could have been drawn by ChatGPT, it's that good, in the way that machine art is good. There's a point of view reflected in its creations, looking into a soul that in no way exists. We're learning about it, but it's a moving target, evolving before our eyes, in huge steps.
My server has been coughing up hairballs tonight. It coughed up a link to this piece from two years ago, when Twitter pulled the plug on their API. It knocked everything I had built on the Twitter API off the air. Every thing. Just like that. That's what tonight was like here. It was just some of my apps, suddenly, not working. Whew.
WordLand and Scripting News and a bunch of other sites/apps were off the air starting about 1AM Eastern, but mostly things seem to be working now, shortly after 6AM. It was a big scramble, I had to provision a new server on Digital Ocean.
Urgent: Amazon lawsuit attacking CPCS [Richard Stallman's Political Notes]
US citizens: call on Amazon to drop its lawsuit attacking the Consumer Product Safety Commission.
Also, don't buy from Amazon. Yes, you can do it!
Michael Ablassmeier: qmpbackup 0.46 - add image fleecing [Planet Debian]
I’ve released qmpbackup 0.46 which now utilizes the image fleecing technique for backup.
Usually, during backup, Qemu
will use a so
called copy-before-write filter so that data for new guest writes
is sent to the backup target first, the guest write blocks until
this operation is finished.
If the backup target is flaky, or becomes unavailable during backup operation, this could lead to high I/O wait times or even complete VM lockups.
To fix this, a so called “fleecing” image is introduced during backup being used as temporary cache for write operations by the guest. This image can be placed on the same storage as the virtual machine disks, so is independent from the backup target performance.
The documentation on which steps are required to get this going, using the Qemu QMP protocol is, lets say.. lacking..
The following examples show the general functionality, but
should be enhanced to use transactions where possible. All commands
are in qmp-shell
command
format.
Lets start with a full backup:
# create a new bitmap
block-dirty-bitmap-add node=disk1 name=bitmap persistent=true
# add the fleece image to the virtual machine (same size as original disk required)
blockdev-add driver=qcow2 node-name=fleecie file={"driver":"file","filename":"/tmp/fleece.qcow2"}
# add the backup target file to the virtual machine
blockdev-add driver=qcow2 node-name=backup-target-file file={"driver":"file","filename":"/tmp/backup.qcow2"}
# enable the copy-before-writer for the first disk attached, utilizing the fleece image
blockdev-add driver=copy-before-write node-name=cbw file=disk1 target=fleecie
# "blockdev-replace": make the copy-before-writer filter the major device (use "query-block" to get path parameter value, qdev node)
qom-set path=/machine/unattached/device[20] property=drive value=cbw
# add the snapshot-access filter backing the copy-before-writer
blockdev-add driver=snapshot-access file=cbw node-name=snapshot-backup-source
# create a full backup
blockdev-backup device=snapshot-backup-source target=backup-target-file sync=full job-id=test
[ wait until block job finishes]
# remove the snapshot access filter from the virtual machine
blockdev-del node-name=snapshot-backup-source
# switch back to the regular disk
qom-set path=/machine/unattached/device[20] property=drive value=node-disk1
# remove the copy-before-writer
blockdev-del node-name=cbw
# remove the backup-target-file
blockdev-del node-name=backup-target-file
# detach the fleecing image
blockdev-del node-name=fleecie
After this process, the temporary fleecing image can be deleted/recreated. Now lets go for a incremental backup:
# add the fleecing and backup target image, like before
blockdev-add driver=qcow2 node-name=fleecie file={"driver":"file","filename":"/tmp/fleece.qcow2"}
blockdev-add driver=qcow2 node-name=backup-target-file file={"driver":"file","filename":"/tmp/backup-incremental.qcow2"}
# add the copy-before-write filter, but utilize the bitmap created during full backup
blockdev-add driver=copy-before-write node-name=cbw file=disk1 target=fleecie bitmap={"node":"disk1","name":"bitmap"}
# switch device to the copy-before-write filter
qom-set path=/machine/unattached/device[20] property=drive value=cbw
# add the snapshot-access filter
blockdev-add driver=snapshot-access file=cbw node-name=snapshot-backup-source
# merge the bitmap created during full backup to the snapshot-access device so
# the backup operation can access it. (you better use an transaction here)
block-dirty-bitmap-add node=snapshot-backup-source name=bitmap
block-dirty-bitmap-merge node=snapshot-backup-source target=bitmap bitmaps=[{"node":"disk1","name":"bitmap"}]
# create incremental backup (you better use an transaction here)
blockdev-backup device=snapshot-backup-source target=backup-target-file job-id=test sync=incremental bitmap=bitmap
[ wait until backup has finished ]
[ cleanup like before ]
# clear the dirty bitmap (you better use an transaction here)
block-dirty-bitmap-clear node=disk1 name=bitmap
Or, use a simple reproducer by directly passing qmp commands via stdio:
#!/usr/bin/bash
qemu-img create -f raw disk 1M
qemu-img create -f raw fleece 1M
qemu-img create -f raw backup 1M
qemu-system-x86_64 -drive node-name=disk,file=disk,format=file -qmp stdio -nographic -nodefaults <<EOF
{"execute": "qmp_capabilities"}
{"execute": "block-dirty-bitmap-add", "arguments": {"node": "disk", "name": "bitmap"}}
{"execute": "blockdev-add", "arguments": {"node-name": "fleece", "driver": "file", "filename": "fleece"}}
{"execute": "blockdev-add", "arguments": {"node-name": "backup", "driver": "file", "filename": "backup"}}
{"execute": "blockdev-add", "arguments": {"node-name": "cbw", "driver": "copy-before-write", "file": "disk", "target": "fleece", "bitmap": {"node": "disk", "name": "bitmap"}}}
{"execute": "query-block"}
{"execute": "qom-set", "arguments": {"path": "/machine/unattached/device[4]", "property": "drive", "value": "cbw"}}
{"execute": "blockdev-add", "arguments": {"node-name": "snapshot", "driver": "snapshot-access", "file": "cbw"}}
{"execute": "block-dirty-bitmap-add", "arguments": {"node": "snapshot", "name": "tbitmap"}}
{"execute": "block-dirty-bitmap-merge", "arguments": {"node": "snapshot", "target": "tbitmap", "bitmaps": [{"node": "disk", "name": "bitmap"}]}}
[..]
{"execute": "quit"}
EOF
Where do con men come from?
There are three conditions that need to be met:
First, there needs to be rising societal pressure to get ahead, cut the line and find a win.
Second, there needs to be people willing to set aside their ethical principles to take advantage of others in their community.
And third, we need to be lulled into a state of unjustified credulity, eager to believe that seeds might be magical or that motion might be perpetual.
While all three of these conditions are present throughout time, they go in cycles.
And we’re having one right now.
We’re far too tolerant of ridiculous promises, particularly around tech, money and leadership. And instead of quickly learning to become a bit more skeptical, we get caught in a cycle of letting the con man (person, actually) off the hook.
Inevitably, when it ends badly, we overreact and become too risk averse, costing us nearly as much with our skepticism.
If someone tells you that they forgot to put the word ‘gullible’ in the new edition of the dictionary, don’t dismiss them out of hand, but yes, check first.
Joe Marshall: Vibe Coding, final word [Planet Lisp]
I couldn't leave it alone. This AI was going to write some Lisp code if I had to force it. This isn't &lquovibing” anymore. We're going to be pecise, exact, and complete in our instructions, and we're going to check the results.
Again, I'm taking on a Minesweeper clone as the problem. All the code was to be written in a single file using a single package. The AI simply didn't understand the problem of forward references to symbols in other packages. Perhaps a game loop is beyond the ability of the AI. I wrote a basic game loop that initializes all the required libraries in correct order with unwind-protects to clean up in reverse order. I wrote a main function that creates a window and a renderer to draw on it, and a game loop that polls for events and handles keypresses and the quit event. This is a basic black window that has no behavior beyond the ability to quit. There should be no need for the AI to modify this code.
The AI used the GPT-4o model. Instructions were given in precise, imperative English. For example,
“Each cell on the board is in one of these states: hidden, flagging, flagged, unflagging, exposing, exposed Cells start out in hidden state. When a cell is hidden, it renders as a blank square. When a cell is hidden and the mouse is over the cell and the right button is down, the cell enteres the flagging state. When a cell is flagging and the mouse is over the cell and the right button is up, the cell enters the flagged mode. When a cell is flagged and the mouse is over the cell and the right button is down, the cell enters unflagging. When the cell is unflagging, the mouse is over the cell and and right button is up, the cell enters hidden. Cells that are flagging or flagged display as the flag texture. Cells that are hidden or unflagging display as the blank texture.”
This is programming, not vibing. There is always room for misunderstanding, but I spelled out the details of part of the state transitions that I wanted the AI to implement. In particular, notice that when flagging a cell, there are hidden states beyond the flagged and unflagged states. These are necessary to make the effect of flagging and unflagging be edge triggered. I didn't trust the AI to know about this, so I spelled it out.
Sometimes I could write simple directions, such as:
“When rendering a cell, if it is under the mouse, highlight the cell with a red border.”
Or:
“When the cell is in the exposing state, it should display as a blank, depressed cell.”
But then again,
“When the mouse is over a cell, if the cell is in hidden state and left mouse button is down, the cell enters the exposing state. If a cell is in exposing state and the mouse is not over the cell, the cell reverts to hidden state. If a cell is in exposing state, and the mouse is over the cell, and the left mouse button is raised, the cell enters the exposed state.”
The AI did a surprisingly good job at handling the parenthesis. There was one function that it kept adding a stray parenthesis to. I went back more than once to delete that extra parenthesis when the reader barfed.
At one point, the AI accidentally removed the abiity to place a flag on a cell. I asked it to restore that ability, but I didn't give instructions in as great detail as I did before. It added transitions to and from the flagged state, but it didn't add the intermediate flagging and unflagging states as I had explicitly directed it to before. As a result, flagging ended up being non-deterministic, with the flag being toggled on and off every 16 ms. I had to go back and add the intermediate states by hand again to restore the determinism.
After a few hours of this, I had a working Minesweeper clone. Let's look at the generated code.
;; -*- mode: lisp; package: "VIBE" -*- (in-package "VIBE") ;; Define constants for magic numbers (defparameter *tile-size* 32) ;; Size of each tile in pixels (defparameter *game-width* 25) ;; Number of columns (defparameter *game-height* 15) ;; Number of rows (defparameter *frame-delay* 16) ;; Delay between frames in milliseconds ;; Define cell states (defconstant +hidden+ 'hidden) (defconstant +flagging+ 'flagging) (defconstant +flagged+ 'flagged) (defconstant +unflagging+ 'unflagging) (defconstant +exposing+ 'exposing) (defconstant +exposed+ 'exposed) ;; Define game states (defconstant +playing+ 'playing) (defconstant +won+ 'won) (defconstant +lost+ 'lost)
It is a little odd to define the state constants as symbols. This adds a pointless extra level of symbolic indirection. I would have used keywords instead of symbols.
;; Global game state (defparameter *game-state* +playing+) ;; The game board (defparameter *board* nil) ;; The game board content (e.g., :mine or a number) (defparameter *board-content* nil) (defun initialize-board () "Initialize the game board with all cells in the hidden state and place mines." ;; Initialize the board state (setf *board* (make-array (list *game-height* *game-width*) :initial-element +hidden+)) ;; Initialize the board content (setf *board-content* (make-array (list *game-height* *game-width*) :initial-element 0)) ;; Place 50 mines randomly (loop repeat 50 do (let ((row (random *game-height*)) (col (random *game-width*))) ;; Ensure no duplicate mines (unless (eql (aref *board-content* row col) :mine) (setf (aref *board-content* row col) :mine) ;; Update adjacent cells (update-adjacent-cells row col))))) (defun update-adjacent-cells (row col) "Increment the mine count for all adjacent cells." (loop for r from (max 0 (1- row)) to (min (1+ row) (1- *game-height*)) do (loop for c from (max 0 (1- col)) to (min (1+ col) (1- *game-width*)) do (unless (eql (aref *board-content* r c) :mine) (incf (aref *board-content* r c))))))
You can tell that I didn't write this code. I hate loop.
The textures are loaded from PNG files just before beginning the game loop. The AI decided to maintain them as four separate values that are passed around to the functions that need them. This will get out of hand quickly. A table of resources would be better.
(defun render-frame (renderer blank-texture flag-texture mine-texture digit-textures) (sdl2:set-render-draw-color renderer 0 0 0 0) (sdl2:render-clear renderer) ;; Render game state (loop for row from 0 below *game-height* do (loop for col from 0 below *game-width* do (render-tile renderer row col blank-texture flag-texture mine-texture digit-textures)))) (defun render-tile (renderer row col blank-texture flag-texture mine-texture digit-textures) "Render a single tile based on its state and highlight it if under the mouse." (let ((state (aref *board* row col)) (content (aref *board-content* row col)) ;; Content of the cell (e.g., :mine or a number) (dest-rect (sdl2:make-rect (* col *tile-size*) (* row *tile-size*) *tile-size* *tile-size*))) ;; Render the tile based on its state (cond ;; Hidden or unflagging state: render blank texture ((or (eql state +hidden+) (eql state +unflagging+)) (sdl2:render-copy renderer blank-texture :dest-rect dest-rect)) ;; Flagging or flagged state: render flag texture ((or (eql state +flagging+) (eql state +flagged+)) (sdl2:render-copy renderer flag-texture :dest-rect dest-rect)) ;; Exposing state: render blank texture with a depressed effect ((eql state +exposing+) (sdl2:render-copy renderer blank-texture :dest-rect dest-rect) (sdl2:set-render-draw-color renderer 50 50 50 100) ;; Semi-transparent dark overlay (sdl2:render-fill-rect renderer dest-rect)) ;; Exposed state: render mine or digit ((eql state +exposed+) (cond ;; If the cell contains a mine, render the mine texture ((eql content :mine) (sdl2:render-copy renderer mine-texture :dest-rect dest-rect)) ;; If the cell contains a digit (positive number), render the corresponding digit texture ((and (integerp content) (> content 0)) (let ((digit-texture (gethash content digit-textures))) (when digit-texture (sdl2:render-copy renderer digit-texture :dest-rect dest-rect)))) ;; Otherwise, render a default exposed tile (e.g., light gray) (t (sdl2:set-render-draw-color renderer 200 200 200 255) ;; Light gray for exposed (sdl2:render-fill-rect renderer dest-rect))))) ;; Highlight the tile with a red border if it is under the mouse (multiple-value-bind (mouse-x mouse-y _) (sdl2:mouse-state) (declare (ignore _)) (let ((mouse-row (floor (/ mouse-y *tile-size*))) (mouse-col (floor (/ mouse-x *tile-size*)))) (when (and (= row mouse-row) (= col mouse-col)) (sdl2:set-render-draw-color renderer 255 0 0 255) ;; Red color (sdl2:render-draw-rect renderer dest-rect) (sdl2:set-render-draw-color renderer 0 0 0 255)))))) ;; Reset color to black
Each time we go around the game loop, we update the state the cell under the mouse. The AI decided to pass the state input as spread arguments to the update function.
(defun update-cell-state (row col mouse-over left-button-down left-button-up right-button-down right-button-up) "Update the state of a cell based on mouse input." (let ((state (aref *board* row col))) (cond ;; If the cell is hidden and the left mouse button is down, it enters the exposing state ((and (eql state +hidden+) mouse-over left-button-down) (setf (aref *board* row col) +exposing+)) ;; If the cell is exposing and the mouse is not over it, it reverts to hidden ((and (eql state +exposing+) (not mouse-over)) (setf (aref *board* row col) +hidden+)) ;; If the cell is exposing, the mouse is over it, and the left mouse button is raised, it enters the exposed state ((and (eql state +exposing+) mouse-over left-button-up) (setf (aref *board* row col) +exposed+) ;; If the cell contains a mine, the game is lost and all mines are exposed (when (eql (aref *board-content* row col) :mine) (setf *game-state* +lost+) (expose-all-mines)) ;; If the cell has zero neighboring mines, recursively expose neighbors (when (and (integerp (aref *board-content* row col)) (= (aref *board-content* row col) 0)) (expose-neighbors row col))) ;; If the cell is hidden and the right mouse button is down, it enters the flagging state ((and (eql state +hidden+) mouse-over right-button-down) (setf (aref *board* row col) +flagging+)) ;; If the cell is flagging and the right mouse button is up, it enters the flagged state ((and (eql state +flagging+) mouse-over right-button-up) (setf (aref *board* row col) +flagged+)) ;; If the cell is flagged and the right mouse button is down, it removes the flag ((and (eql state +flagged+) mouse-over right-button-down) (setf (aref *board* row col) +unflagging+)) ((and (eql state +unflagging+) mouse-over right-button-up) (setf (aref *board* row col) +hidden+))))) (defun poll-mouse-and-update () "Poll the mouse position and button states, and update the board accordingly." (when (eql *game-state* +playing+) ;; Only process mouse input if the game is playing (multiple-value-bind (x y buttons) (sdl2:mouse-state) (let ((row (floor (/ y *tile-size*))) (col (floor (/ x *tile-size*))) (left-button-down (logbitp 0 buttons)) ;; SDL_BUTTON_LEFT is bit 0 (right-button-down (logbitp 2 buttons))) ;; SDL_BUTTON_RIGHT is bit 2 (when (and (>= row 0) (< row *game-height*) (>= col 0) (< col *game-width*)) ;; Update the cell state based on mouse input (update-cell-state row col t ;; mouse-over is true for the current cell left-button-down (not left-button-down) right-button-down (not right-button-down)))))))
This illustrates that while the lights appear to be on, no one
is at home. The mouse-over
variable is always true,
there is no need for it to exist at all. There is no need to pass
both left-button-down
and its complement. Same with
right-button-down
.
I did allow the AI to modify game-loop
, but the
modifications were subject to careful scrutiny to make sure that
the game would continue to run. In particular, one time it wanted
to add handlers for mouse events. I told it no, and that it could
poll the mouse state as necessary instead.
(defun game-loop (window renderer blank-texture flag-texture mine-texture digit-textures game-over-texture) "Main game loop." (declare (ignore window)) ;; Main game loop (sdl2:with-event-loop (:method :poll) (:idle () ;; Clear the screen (sdl2:set-render-draw-color renderer 0 0 0 255) ;; Black background (sdl2:render-clear renderer) ;; Poll mouse and update game state (poll-mouse-and-update) ;; Render the game frame (render-frame renderer blank-texture flag-texture mine-texture digit-textures) ;; Render the "Game Over" overlay if the game is lost (when (eql *game-state* +lost+) (let ((screen-width (* *tile-size* *game-width*)) (screen-height (* *tile-size* *game-height*))) ;; Set blend mode and alpha for transparency (sdl2:set-texture-blend-mode game-over-texture :blend) (sdl2:set-texture-alpha-mod game-over-texture 192) ;; 75% transparency ;; Render the texture as a full-screen overlay (let ((dest-rect (sdl2:make-rect 0 0 screen-width screen-height))) (sdl2:render-copy renderer game-over-texture :dest-rect dest-rect)))) ;; Present the rendered frame (sdl2:render-present renderer) ;; Delay for the next frame (sdl2:delay *frame-delay*)) (:keydown (:keysym keysym) (cond ;; Reset the game when the 'o' key is pressed ((eql (sdl2:scancode keysym) :scancode-o) (reset-game)) ;; Quit the game when the 'x' key is pressed ((eql (sdl2:scancode keysym) :scancode-x) (sdl2:push-quit-event)) ;; Lose the game and expose all mines when the 'p' key is pressed ((eql (sdl2:scancode keysym) :scancode-p) (progn (setf *game-state* +lost+) (expose-all-mines))))) (:quit () t)))
Notice that in this game loop, we're not accounting for the time it takes to update the game state and render the frame. If this game really tried to animate anything, the animation would be jittery. A better game loop would track real time and refresh accordingly.
For a simple game such as this, it makes sense to load the all the bitmaps into memory at the get-go. For a more complicated game with many levels, you might not be able to fit them all in memory.
Passing the surfaces around as arguments is not going to work when you have a lot of them.
(defun initialize () "Initialize the game, load textures, and create the game board." (initialize-board) ;; Initialize the game board (let ((blank-surface nil) (flag-surface nil) (mine-surface nil) (game-over-surface nil) (digit-surfaces (make-hash-table))) (unwind-protect (progn ;; Load PNG surfaces (setq blank-surface (sdl2-image:load-image (asdf:system-relative-pathname "vibe" "textures/blank.png"))) (setq flag-surface (sdl2-image:load-image (asdf:system-relative-pathname "vibe" "textures/flag.png"))) (setq mine-surface (sdl2-image:load-image (asdf:system-relative-pathname "vibe" "textures/mine.png"))) ;; Load digit textures (e.g., "1.png", "2.png", etc.) (loop for i from 1 to 8 do (setf (gethash i digit-surfaces) (sdl2-image:load-image (asdf:system-relative-pathname "vibe" (format nil "textures/~a.png" i))))) ;; Create the "GAME OVER" surface (setq game-over-surface (create-game-over-surface)) ;; Create the window and renderer (sdl2:with-window (window :title "Vibe" :x 0 :y 0 :w (* *tile-size* *game-width*) :h (* *tile-size* *game-height*) :flags '(:shown)) (sdl2:with-renderer (renderer window :index -1 :flags '(:accelerated)) (let ((blank-texture (sdl2:create-texture-from-surface renderer blank-surface)) (flag-texture (sdl2:create-texture-from-surface renderer flag-surface)) (mine-texture (sdl2:create-texture-from-surface renderer mine-surface)) (digit-textures (make-hash-table)) (game-over-texture (sdl2:create-texture-from-surface renderer game-over-surface))) ;; Convert digit surfaces to textures (maphash (lambda (key surface) (setf (gethash key digit-textures) (sdl2:create-texture-from-surface renderer surface))) digit-surfaces) (unwind-protect (game-loop window renderer blank-texture flag-texture mine-texture digit-textures game-over-texture) ;; Cleanup textures (sdl2:destroy-texture blank-texture) (sdl2:destroy-texture flag-texture) (sdl2:destroy-texture mine-texture) (sdl2:destroy-texture game-over-texture) (maphash (lambda (_key texture) (declare (ignore _key)) (sdl2:destroy-texture texture)) digit-textures))))))) ;; Cleanup surfaces (when flag-surface (sdl2:free-surface flag-surface)) (when blank-surface (sdl2:free-surface blank-surface)) (when mine-surface (sdl2:free-surface mine-surface)) (when game-over-surface (sdl2:free-surface game-over-surface)) (maphash (lambda (_key surface) (declare (ignore _key)) (sdl2:free-surface surface)) digit-surfaces)))
In Minesweeper, if you click on a cell with no neighboring mines, all the neighboring cells are exposed. This will open up larger areas of the board. The AI did a good job of implementing this, but I was careful to specify that only the hidden cells should be exposed. Otherwise, the recursion would not bottom out because every cell is a neighbor of its neighbors.
(defun expose-neighbors (row col) "Recursively expose all hidden neighbors of a cell with zero neighboring mines." (loop for r from (max 0 (1- row)) to (min (1+ row) (1- *game-height*)) do (loop for c from (max 0 (1- col)) to (min (1+ col) (1- *game-width*)) do (when (and (eql (aref *board* r c) +hidden+)) ;; Only expose hidden cells (setf (aref *board* r c) +exposed+) ;; If the neighbor also has zero mines, recursively expose its neighbors (when (and (integerp (aref *board-content* r c)) (= (aref *board-content* r c) 0)) (expose-neighbors r c))))))
We need a way to get the game back to the initial state.
(defun reset-game () "Reset the game by reinitializing the board and setting the game state to playing." (initialize-board) (setf *game-state* +playing+))
The AI writes buggy code. Here is an example. It is trying figure out if the player has won the game. You can state the winning condition in couple of different ways.
This does't quite achieve either of these.
(defun check-win-condition () "Check if the player has won the game." (let ((won t)) ;; Assume the player has won until proven otherwise (loop for row from 0 below *game-height* do (loop for col from 0 below *game-width* do (let ((state (aref *board* row col)) (content (aref *board-content* row col))) (when (and (not (eql state +exposed+)) ;; Cell is not exposed (not (or (eql state +flagged+) ;; Cell is not flagged (eql content :mine)))) ;; Cell does not contain a mine (setf won nil))))) (when won (setf *game-state* +won+))))
create-game-over-surface
prepares a surface with
the words “Game Over” writ large.
(defun create-game-over-surface () "Create a surface for the 'GAME OVER' splash screen using SDL2-TTF." (let ((font nil) (text-surface nil)) (unwind-protect (progn ;; Load the font (adjust the path and size as needed) (setq font (sdl2-ttf:open-font (asdf:system-relative-pathname "vibe" "fonts/arial.ttf") 72)) ;; Render the text "GAME OVER" in red (setq text-surface (sdl2-ttf:render-text-solid font "GAME OVER" 255 0 0 255))) ;; Cleanup (when font (sdl2-ttf:close-font font))) text-surface))
The main
function initializes the SDL2 library and
its auxiliar libraries along with unwind-protect
s to
uninitialize when we leave the game. The AI was not permitted to
change this code.
(defun main () (sdl2:with-init (:video) (unwind-protect (progn (sdl2-image:init '(:png)) (unwind-protect (progn (sdl2-ttf:init) (initialize)) (sdl2-ttf:quit))) (sdl2-image:quit))))
If you step on a mine, it exposes the other mines.
(defun expose-all-mines () "Expose all mines on the board." (loop for row from 0 below *game-height* do (loop for col from 0 below *game-width* do (when (eql (aref *board-content* row col) :mine) (setf (aref *board* row col) +exposed+)))))
This wasn't “vibe coding”. This was plain old coding, but filtered through an English language parser. It added an extra level of complexity. Not only did I have to think about what should be coded, I had to think about how to phrase it such that the AI would generate what I had in mind and not disturb the other code.
Whenever I tried to let go and “vibe”, the AI would generate some unworkable mess. Programming is a craft that requires training and discipline. No dumb pattern matcher (or sophisticated one) is going to replace it.
In languages other that Common Lisp, you might get further. Consider Java. It takes a page and half of boilerplate to specify the simplest first-class object. An AI can easily generate pages and pages of boilerplate and appear to be quite productive. But you've missed the point if you think that it is better to generate boilerplate automatically than to use abstractions to avoid it and a language that doesn't need it.
Guido Günther: Free Software Activities March 2025 [Planet Debian]
Another short status update of what happened on my side last month. Some more ModemManager bits landed, Phosh 0.46 is out, haptic feedback is now better tunable plus some more. See below for details (no April 1st joke in there, I promise):
meson dist
job and work around meson not
applying patches in meson dist
(MR,
MR)XdgSurface
to XdgToplevel
to
prevent errors like the above (MR)[0.0, 1.0]
as ranges for
magnitude (MR)_NET_WM_WINDOW_OPACITY
(which is around
since ages) (MR)This is not code by me but reviews on other peoples code. The list is (as usual) slightly incomplete. Thanks for the contributions!
If you want to support my work see donations.
Join the Fediverse thread
The Worst Kind Of Sins! [QC RSS]
R O D R I G O
Neil Munro: Ningle Tutorial 5: Environmental Variables [Planet Lisp]
Welcome back, before we begin looking at databases we need to look at storing process related data in the application environment, this month will be a relatively short, but important part in this series.
If you are unfamiliar, there's a methodology called 12factor for building web applications that advocates for storing variable data in environment variables. In anticipation of working with databases that are going to need database names, potentially usernames and passwords etc, we need a system to load this data into our system without writing this potentially sensitive information down in the application code itself.
Environmental
Variables are just that, variables defined in the environment
of a process. Your operating system defines a number of these, for
example, your system will have an area where files might be stored
temporarily, and a program may run on different systems, but if
both systems have an environmental variable TMP
then the program
can read the value of the TMP
environmental
variable and use the directory the system specifies, making it
portable across systems without needing to change the code. You
just read the value defined by the TMP
environmental
variable from the system and that's it!
When a process starts, it gets a copy of all system defined environmental variables, although a process generally can't override the values to affect other processes, it is, however, possible to change existing ones or add new ones to the running process, which is what we are going to do here. We have a process we want to run, but want to hide sensitive information in the environment and so will inject new environmental variables into the running process without adding to the system environmental variables for any other process.
Typically we do this by creating a file (usually called
.env
)
that will define the new values, and this file will be loaded as
the program starts, importantly this file will NOT be stored in
version control, otherwise we wouldn't hide the data, just move it
to a different file. It is very important to ensure that you ignore
this file!
In order to use this technique we will be using the cl-dotenv package, so first ensure you have added it to your dependencies in the project asd file.
:depends-on (:clack
:cl-dotenv
:ningle
:djula
:cl-forms
:cl-forms.djula
:cl-forms.ningle)
Integrating the package is quite simple, just below where we
create the application object in main.lisp
, we use the
package to load in the custom environmental variables.
(defvar *app* (make-instance 'ningle:app))
(dotenv:load-env (asdf:system-relative-pathname :ningle-tutorial-project ".env"))
It is important to ensure we have a .env
file prior to
starting the application though! We are likely going to use
sqlite (at least in the
beginning) so we need to tell our application where to store the
database file, for now that will be the only thing we store in the
.env
file, we can always add to the file as/when we need to, and this
tutorial serves as an introduction to injecting environmental
variables, so if it works for one, it'll work for many! Please
note, this .env
file must be in
the root of your project.
DBPATH=~/quicklisp/local-projects/ningle-tutorial-project/ntp.db
To confirm this works, we will add a format
expression to
prove things are as we need them to be, in the start function, we
use the uiop
package (which comes installed with sbcl) to get the variable.
(defun start (&key (server :woo) (address "127.0.0.1") (port 8000))
(format t "Test: ~A~%" (uiop:getenv "DBPATH"))
(djula:add-template-directory (asdf:system-relative-pathname :ningle-tutorial-project "src/templates/"))
(djula:set-static-url "/public/")
(clack:clackup
(lack.builder:builder :session
(:static
:root (asdf:system-relative-pathname :ningle-tutorial-project "src/static/")
:path "/public/")
*app*)
:server server
:address address
:port port))
If you start the application now, you should see the value being loaded and printed out.
Test: ~/quicklisp/local-projects/ningle-tutorial-project/ntp.db
NOTICE: Running in debug mode. Debugger will be invoked on errors.
Specify ':debug nil' to turn it off on remote environments.
Woo server is started.
Listening on 127.0.0.1:8000.
#S(CLACK.HANDLER::HANDLER
:SERVER :WOO
:SWANK-PORT NIL
:ACCEPTOR #<BT2:THREAD "clack-handler-woo" {1005306473}>)
To recap, after working your way though this tutorial you should be able to:
cl-dotenv
to load a
file containing data to be loaded into the processThe link for this tutorial code is available here.
guess who likes you? [WIL WHEATON dot NET]
When I was a child actor and my mom was forcing me to do all of the child actor things, she was obsessed with my reviews. She made me feel like they were a test that I had to pass. I had to make the reviewers happy, so the audience (“your fans”) would remain happy. She relentlessly drilled into me that nothing was more important than what other people thought about me and my work, that I should be terrified of this audience that simultaneously hung on my every word (“your fans”) but was also so fickle they’d abandon me the instant I upset them.
That wasn’t how anything worked. It did not reflect reality at all, but it was an extremely effective method of control. After Roger Ebert gave The Buddy System (a bad movie) a fair review (It’s a bad movie), I was distraught. He said something about how I played a brat in the film (I did) but what I heard was “Wil Wheaton is a brat”. All the fear and anxiety my mom had poured into me threatened to drown me — did I mention I was ELEVEN? — so the only way I could manage to fight back was to just completely reject the whole notion of reviews. I remember telling people that I just wanted to let the work speak for itself, and I didn’t want to be out there talking about it. I didn’t have the awareness I have now to understand I was crying out for my family to notice me as a person, instead of the thing that paid for their stuff and made my mom feel important. I knew in my heart the next review would be the bad one that my dad would shove in my face as evidence that I deserved his rejection, that I wasn’t good enough to be worthy of his love and attention. Over the decades, I decided it was better to just ignore all the good ones, because I knew in my heart I’d only listen to the bad ones. And it’s all subjective, anyway. It can’t be about an artist’s inherent worth or value as a person and creator.
(It breaks my heart that younger Wil carried that burden as long as he did, and as a parent, I can’t comprehend doing anything that would make my children feel about themselves the way my parents made me feel about myself. It’s why, when someone in my Reddit AMA asked me what’s one thing in your personal life that you’re proud of?, I said “I am the dad I didn’t have.”)
In about 1986, my mom realized that teen magazines were always thirsty for me. Before too long, their editors realized that she was thirsty for their approval. Thus began several years of me being forced into endless photo shoots and choreographed encounters with other teeny bopper magazine kids. It all felt like I was just being used by everyone involved, and I couldn’t say no to it.
For the longest time, I didn’t grok that all press isn’t the same, that some press can actually work against my career goals (like being in every teen magazine in the world when you’re trying to be taken seriously as an actor), and that there is press that can make all the difference. My experience was warped because the press my mother prioritized wasn’t the kind of press I learned how to do when I was promoting my book, and now my podcast. It wasn’t press that was coordinated and targeted to give the work the best chance to find its audience. It was almost always attention for its own sake, another way for my mom to put me in a place where I was on display while she gorged herself on the attention I didn’t want. I hated it. I hated that it was more important than literally anything about me as a person or a son. So I frequently chose to give bad interviews, rarely took them seriously, and was pretty crap at the whole thing. If you’re one of the people who had to interview that kid, I’m sorry. He’s struggling like you wouldn’t believe and doesn’t have any support.
I always felt like it was speeding up the countdown clock on my fifteen minutes. After Stand By Me, it sent this message that I was the teeny bopper flavor of the month, and River was the serious actor*. When I was put in front of the photographers and stuff, I felt like a piece of dry bread, being pecked to death by birds who didn’t care who they were eating, as long as they were fed.
Starting with Tabletop, my attitude about press and promotion began to change. I began to see it as a necessary part of the whole thing, that didn’t have to be gross. In fact, I learned that it wasn’t inherently gross — that was my mom — unless I chose to talk to a gross outlet, which I haven’t done since I was in charge of my life. Doing interviews with Felicia, I began to see press as something that could be fun while it was helpful. I realized that nearly all the people I’m talking to are also just people who are doing their jobs. I’m sure there are countless entertainers who treat press the way I did when I was a kid, and I’m sure working with them (or that version of me) isn’t great. So I choose to be as close to great as possible when I have the chance. I’m going to honor their time and their audience’s attention, and I’m only going to say yes to people I actually want to talk to.
I took all of that energy into the promotion of Still Just A Geek, and I think it’s a big part of my book becoming a New York Times bestseller. So OBVIOUSLY I’m going to continue down that road as I promote It’s Storytime with Wil Wheaton.
This is where I stop to make sure you know that I don’t hate any of what I’m doing now. I love all of it, and I’m grateful as fuck for everything that’s in front of me right now. This is where I think for a long time that I’m going to delete everything I just wrote and get to the thing I sat down here to write about in the first place.
…but I feel like that context is going to make the thing I wanted to write about in the first place a little more poignant. So. Thanks for your indulgence.
This is where I get to the actual post, and you realize that everything you’ve read to this point isn’t really the post, for some reason.
Before I walked Marlowe this morning, I was doing some administrative podcast work with my team. Our launch last week was met with enthusiasm that vastly exceeded my expectations, and we have way more media requests in five days than I thought we’d get in the whole first season. Yay! Go us! More people will get to find out we exist!
I’ve always planned for this podcast to start small and grow slowly. If this is going to find a large audience, it’s going to be because people who listened to it told their friends about it, who told their friends about it, and so on. It’s the only way I can compete for time and attention in a crowded marketplace.
This is a very important distinction I want to make about that phrase: I’m not personally competing with anyone in any kind of zero sum contest that will define our worth. I don’t feel like I need to prove to anyone that this is good enough (or that I am good enough) to justify their time; I just want to ensure that any person who will enjoy what we are doing knows we exist. And I hope those folks will choose to give me some of their time, once a week, until the heat death of the universe or I retire, whichever comes first.
As part of this discussion, my producer asked me if I’d looked at any reviews. I most certainly had not, for the reasons I wrote about (and nearly deleted) above. Well, I may want to, she told me, because they were entirely positive. Not mostly positive, mind you, but entirely positive**. I did not believe that was possible, so I went ahead and peeked through my fingers at the Apple Podcasts page for my show.
And, uh, well … yeah. The audience that listened to episode one and left reviews seems to have loved listening to it the way I loved narrating it.
Holy crap that’s incredible. It looks like what I worked to put into the world and what these people heard ended up being the same thing. That’s wonderful and so exciting!
We have a new episode dropping on Wednesday, and some other extremely cool stuff that’s sort of rendering into our reality as I type this. I’ll have more on that later this week or early next week. Also, I wanted to shout out Caroline M Yoachim, who wrote Rock Paper Scissors Love Death, for her Nebula nomination for We Will Teach You How To Read | We Will Teach You How To Read.
Oh, also, I was going to put this into its own blog, but it can go here: I don’t watch myself often, but when I do, I’m always looking for what I did wrong, where I fumbled my words, what I forgot to say, all the ways I sucked, etc. Because I am the executive producer and primary force behind this whole thing, I felt like I needed to watch myself on KTLA, the way an athlete looks at tape from the game, in case I am invited to be on other broadcasts or whatever.
I pressed play, and after about one minute, I became aware of tears flowing down my cheeks, because I was watching someone who looked and sounded just like me, only he was so happy and so comfortable in his own skin, so effortlessly proud of what he did without being Prideful, totally engaged with the hosts and genuinely grateful to be there. That guy takes nothing for granted and chooses gratitude. I want to be more like him.
Crying, yawning, laughing, are all ways our body reregulates our nervous system from an activated, fight or flight state, into a resting, parasympathetic state. My body had a lot to release, it turns out. Tears poured down my face and I felt all this tension in my chest and shoulders soften and release. I noticed that so much of the worry and weight of the possibility and hope I’m afraid to embrace wasn’t as heavy.
I was so happy to see that guy be happy. I was so happy to see that guy genuinely enjoying the opportunity in front of him, and I was so happy that he could receive the sincere interest and kindness of the hosts.
And that guy was me! I’m that guy!
There’s a version of me who doesn’t do The Work I have done and continue to do, and I don’t know that he even tries to make It’s Storytime. He doesn’t believe in himself, and he’s terrified to take chances. He is convinced that his dad is right about him. I want to gently hug that guy and show him what’s possible when he does The Work. I want him to know — I need him to know — that he can do it, because if I can, anyone can. Everything worth doing is hard, including The Work. That version of me — all versions of me — are worth it. I’m so grateful to be a version of me who never gave up when it was hard. I’m so grateful that I could see and feel and BE that version of myself.
To bring this back around (I love a good bookend***): I rarely read reviews, and when I do, I’ve always struggled to take anything away from them other than “well, 500 people say you’re awesome, but this one dude who can’t spell says you suck so he obviously sees through your facade and you should quit because you’ll never be good enough.”
I’ve done so much work, healed so much trauma, grown into something that looks an awful lot like what I hope my best self looks like, and that means I’m in a place where I can accept that the audience I hoped to reach is finding the thing I made, they are enjoying the thing, and telling other people about the thing. And not because they feel sorry for me or want something from me, but because they liked the thing I made and want to share how it made them feel with other people. That means everything to me.
It’s my understanding that the reviews and ratings y’all are leaving on the show are all very helpful for our discovery and growth. So I appreciate you all so much. I think we’ll have a good sense of the size and retention of the audience in about two weeks, and we’ll know if we can start ramping up for another season.
Thanks for being part of this, and coming on this journey with me. As I will continue saying, I’m so grateful you are here, and offering me a chance to entertain you.
Here’s my subscribe to the blog thingy:
And here are the obligatory collection of links to subscribe to (and rate and review) It’s Storytime with Wil Wheaton:
*That’s not entirely inaccurate, but not because of any choices I made, or anything inherent to me.
**I realize that this is begging for a review bombing.
***I need it to have been a true Oner, don’t you? Either way, it’s amazing, and they even told us where they could have cheated, but she said it was a true Oner with no cheats so … I choose to believe that it was, even though I know how unlikely that is.
EFF Urges Third Circuit to Join the Legal Chorus: No One Owns the Law [Deeplinks]
Two appeals courts have recently rejected efforts by private parties to use copyright to restrict access to the laws that most directly affect ordinary citizens: regulations that ensure our homes, workplaces, devices, and many other products, are safe and fit for purpose. Apparently hoping the third time will be the charm, a standards organization is asking the Third Circuit Court of Appeals to break ranks and hold that a private party that helps develop a law also gets to own that law. In an amicus brief filed with co-counsel Abigail Burton and Samuel Silver of Welsh & Recker, P.C., on behalf of multiple entities— including Watch Duty, iFixit, Public.Resource.Org, and multiple library associations—EFF urged the court to instead join the judicial consensus and recognize that no one owns the law.
EFF urged the court to join the judicial consensus and recognize that no one owns the law.
This case concerns UpCodes, a company that has created a database of building codes—like the National Electrical Code—that includes codes incorporated by reference into law. ASTM, a private organization that coordinated the development of some of those codes, insists that it retains copyright in them even after they have been adopted into law, and therefore has the right to control how the public accesses and shares them. Fortunately, neither the Constitution nor the Copyright Act support that theory. Faced with similar claims, some courts, including the Fifth Circuit Court of Appeals, have held that the codes lose copyright protection when they are incorporated into law. Others, like the D.C. Circuit Court of Appeals in a case EFF defended on behalf of Public.Resource.Org, have held that, whether or not the legal status of the standards changes once they are incorporated into law, making them fully accessible and usable online is a lawful fair use. A federal court in Pennsylvania followed the latter path in this case, finding that UpCodes’ database was a protected fair use.
The Third Circuit should affirm the ruling, preferably on the alternative ground that standards incorporated into law are necessarily promoted to the public domain. The internet has democratized access to law, making it easier than ever for the public —from journalists to organizers to safety professionals to ordinary concerned citizens —to understand, comment on, and share the myriad regulations that bind us. That work is particularly essential where those regulations are crafted by private parties and made mandatory by regulators with limited public oversight and increasingly limited staffing. Copyright law should not be read to impede it.
The Supreme Court has explained that “every citizen is presumed to know the law, and it needs no argument to show that all should have free access” to it. Apparently, it needs some argument after all, but it is past time for the debate to end.
[$] Improving the merging of anonymous VMAs [LWN.net]
The virtual memory area (VMA), represented by struct vm_area_struct, is one of the core abstractions of the kernel's memory-management subsystem; a VMA represents a portion of a process's address space with the same characteristics. A memory-mapped file will be represented by (at least) one VMA, as will the process's stack or a region of anonymous memory. Efficiently managing VMAs and the logic around them is crucial for good performance overall. Lorenzo Stoakes focused on one specific problem area: the merging of anonymous VMAs, during the memory-management track at the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit.
Zahnae Aquino Is an Undisputable Champion of Comedy [The Stranger]
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Saturday, April 5, at Washington Hall. by Megan Seling
On Saturday, April 5, some of Seattle’s funniest comedians will take the stage as part of The Stranger’s annual Undisputable Champions of Comedy showcase. It’ll be hilarious! The lineup was curated with help from everyone’s comedy bestie, Emmett Montgomery, co-host of Joketellers Union at Clock-Out Lounge and purveyor of all things delightfully weird. And this year’s lineup is stacked with talent, from a local comedy legend who once won over a crowd of bikers at an Aurora bar in the ’80s to a comic who uses laughter as a way to deal with grief. We even have a bunny and a fundamentalist Christian pastor on the bill! It’s gonna be great. We're going to post interviews with the champs all week long—say hello to Zahnae Aquino!
Describe your comedy in five words.
Bodacious, bombastic, beautiful, buoyant, and humorous.
What’s the first thing you did when you found out you were chosen as one of The Stranger’s Champions of Comedy?
I finished eating the bowl of granola that I had started prior to getting the notification. After that, I realized I was still hungry and went up to get a banana. Once I was satiated, I said thank you to Emmett Montgomery for helping me get to this point in my comedy career.
You founded the Fun & Flirty comedy dating game. You’ve helped a lot of people hook up! Hopefully, that’s resulted in some good karma, but do you have a funny bad date story?
One time on a date I asked a guy who his celebrity crush was and he said Anna from Frozen (FYI not a celebrity). He also made me pay for everything and give him a ride to QFC afterward.
What’s a good joke or icebreaker people should tuck away for a first date if things start getting awkward?
Ask them who their celebrity crush is. Just kidding. Ask them: “If you could choose any movie where all of the characters would be replaced by muppets except ONE, which movie would it be?”
Where is your favorite place to see comedy in Seattle right now?
Laughs Comedy Club, Here-After, or the Clock-Out Lounge every other Wednesday.
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Sat April 5, Washington Hall, $25, 21+. Tickets available here.
I changed the domain for Radio Free America and the Bluesky channel. It's not a Canadian site. Maybe at some time we can have a version of the news flow from Canada. We may need it!
Dirk Eddelbuettel: Rblpapi 0.3.15 on CRAN: Several Refinements [Planet Debian]
Version 0.3.16 of the Rblpapi package arrived on CRAN today. Rblpapi provides a direct interface between R and the Bloomberg Terminal via the C++ API provided by Bloomberg (but note that a valid Bloomberg license and installation is required).
This is the sixteenth release since the package first appeared on CRAN in 2016. It contains several enhancements. Two contributed PRs improve an error message, and extended connection options. We cleaned up a bit of internal code. And this release also makes the build conditional on having a valid build environment. This has been driven by the fact CRAN continues to builder under macOS 13 for x86_64, but Bloomberg no longer supplies a library and headers. And our repeated requests to be able to opt out of the build were, well, roundly ignored. So now the builds will succeed, but on unviable platforms such as that one we will only offer ‘empty’ functions. But no more build ERRORS yelling at us for three configurations.
The detailed list of changes follow below.
Changes in Rblpapi version 0.3.16 (2025-03-31)
A quota error message is now improved (Rodolphe Duge in #400)
Convert remaining
throw
intoRcpp::stop
(Dirk in #402 fixing #401)Add optional
appIdentityKey
argument toblpConnect
(Kai Lin in #404)Rework build as function of Blp library availability (Dirk and John in #406, #409, #410 fixing #407, #408)
Courtesy of my CRANberries, there is also a diffstat report for the this release. As always, more detailed information is at the Rblpapi repo or the Rblpapi page. Questions, comments etc should go to the issue tickets system at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Dirk Eddelbuettel: RProtoBuf 0.4.24 on CRAN: Minor Polish [Planet Debian]
A new maintenance release 0.4.24 of RProtoBuf arrived on CRAN today. RProtoBuf provides R with bindings for the Google Protocol Buffers (“ProtoBuf”) data encoding and serialization library used and released by Google, and deployed very widely in numerous projects as a language and operating-system agnostic protocol.
This release brings an both an upstream API update affecting one function, and an update to our use of the C API of R, also in one function. Nothing user-facing, and no surprises expected.
The following section from the NEWS.Rd file has full details.
Changes in RProtoBuf version 0.4.24 (2025-03-31)
Add bindings to EnumValueDescriptor::name (Mike Kruskal in #108)
Replace EXTPTR_PTR with R_ExternalPtrAddr (Dirk)
Thanks to my CRANberries, there is a diff to the previous release. The RProtoBuf page has copies of the (older) package vignette, the ‘quick’ overview vignette, and the pre-print of our JSS paper. Questions, comments etc should go to the GitHub issue tracker off the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Music For Your Monday: Valiant Hearts [Whatever]
There’s a band I really like that I think more
people should know about, and it’s called Valiant
Hearts. It’s just two guys, Igor Serokvasha for
the instrumentals and Tom Byrne for the
vocals. These two guys have made some of my favorite songs of all
time, all of which are off their album from 2019 called
“Odyssey.” And I’m going to share them with
you!
Not only are the lyrics and vocals stellar, but I absolutely love the drums in all of these songs, as well. Their lyrics are so whimsical and full of magic and wonder, talking about the cosmos and eternity, I really feel like I get lost in their music sometimes. Also, I love this album cover. I would totally get it as a tattoo.
This is without a doubt the one I listen to most often:
And this is the first song I ever heard by them:
But I also really love this one:
And I think you should listen to this one, as well:
You can also check them out on Spotify, too! While the whole album is really good, these are just my most favorite of their songs.
The singer also sings for another band called Galleons, and their song “DeLorean” is seriously awesome:
So, there you have it! Some lovely music to get you through the rest of this week. I hope you enjoy, let me know your thoughts in comments, and have a great day!
-AMS
Erin Ingle Is an Undisputable Champion of Comedy [The Stranger]
The Stranger Presents: The 2025 Undisputable Champions of Comedy! Saturday, April 5, at Washington Hall. by Megan Seling
On Saturday, April 5, some of Seattle’s funniest comedians will take the stage as part of The Stranger’s annual Undisputable Champions of Comedy showcase. It’ll be hilarious! The lineup was curated with help from everyone’s comedy bestie, Emmett Montgomery, co-host of Joketellers Union at Clock-Out Lounge and purveyor of all things delightfully weird. And this year’s lineup is stacked with talent, from a local comedy legend who once won over a crowd of bikers at an Aurora bar in the ’80s to a comic who uses laughter as a way to deal with grief. We even have a bunny and a fundamentalist Christian pastor on the bill! It’s gonna be great. We're going to post interviews with the champs all week long, starting with Erin Ingle!
Describe your comedy in five words.
Relatable musings on the everyday.
What’s the first thing you did when you found out you were chosen as one of The Stranger’s Champions of Comedy?
I said, “Cowabunga,” and ripped a sick 1080 on my Razor scooter.
View this post on Instagram
Your Is This Normal? podcast co-host Alyssa Yeoman was in last year’s showcase! I have to ask you the same question I asked her: What quirk do you have that some people might not consider “normal”?
I have no idea where this comes from, but I regularly mix up the words "green" and "orange”—I can fully discern the two different colors, but I'll be like, "Could you pass me the green—I mean orange—marker?" No other colors, no other words, but those two, I swap sometimes accidentally. I have met one other person in my life that does this, and we are both deeply confused why it happens.
Where is your favorite place to see comedy in Seattle right now?
I love seeing shows at Here-After, and I can't wait for the reopening of the new Emerald City Comedy Club.
The Stranger Presents: The 2025 Undisputable Champions of Comedy!, Sat April 5, Washington Hall, $25, 21+. Tickets available here.
IGN Live to Return June 7-8, Tickets Now on Sale [Humble Bundle Blog]
IGN Live is officially returning to Los Angeles June 7-8, 2025. Featuring tons of playable games on PCs, consoles, handhelds, trailer and gameplay reveals, celebrity panels, interviews, awesome merch, a live DJ, giveaways, and much more. The event will be a huge celebration of everything fans love from the world of games, movies, TV, comics, collectibles, and more. Tickets are on sale now, so head …
The post IGN Live to Return June 7-8, Tickets Now on Sale appeared first on Humble Bundle Blog.
Etran de L’Aïr perform April 8 at Neumos. by Dave Segal
Not to get all chamber of commerce-y about it, but Seattle has played a crucial role in laying the foundation for Saharan rock’s current popularity. In the ’00s while based in the Emerald City, the esteemed global music label Sublime Frequencies issued transformative releases by Group Bombino, Group Doueh, and Koudede. Thus began the groundswell of Western interest in heat-hazed, mantric rock that’s imbued with the blues’ ability to transmute oppression into transcendent art.
But the real boom in guitar-centric African music occurred in the 2010s, when artists such as Bombino, Mdou Moctar, Tinariwen, Les Filles de Illighadad, and Tamikrest broke out into America’s live circuit. Etran de L’Aïr have joined these compelling musicians in the 21st century’s great Desert Rock Invasion.
Striking out from Agadez, Niger, Etran de L’Aïr (henceforth, EDL) consist of three brothers and a cousin: bassist Abdoulaye “Illa” Ibrahim, drummer Alghabid Ghabdouan, guitarist/vocalist Moussa “Abindi” Ibra, and guitarist/vocalist Abdourahamane “Allamine” Ibrahim.
They formed in 1995 as young lads (group leader Abindi was 9), playing Niger’s demanding wedding circuit and singing in Tamasheq, a language spoken mainly by nomadic tribes in North and West Africa. Very few Americans know Tamasheq, which could be considered an impediment to enjoyment, but the grain and intensity of EDL’s vocals make it easy to understand the players’ profound joy and sadness.
According to EDL’s Portland-based label, Sahel Sounds, the members belonged to nomadic families that settled in Agadez after escaping the droughts of the 1970s. When they started the group, EDL only had one acoustic guitar and they’d thwack a calabash with a sandal for percussion. Before they attained American patronage, EDL would haul their own gear while on foot, sometimes traversing 25 kilometers (about 15 miles), to play free gigs.
Now three albums deep into their official music-biz career, EDL have adapted to this hemisphere’s protocols. That being said, their songs feel as if they are theoretically infinite and that they only truncate them into manageable durations to placate the demands and attention spans of the Western music industry. On their home turf, though, EDL have been known to play sets that would make Springsteen’s band look like slackers.
Saharan rock is a distant cousin of America’s desert rock, which arose in 1997 out of jam sessions manifested by stoner-rock behemoths Kyuss. While both strains of desert rock rely on repetition to drive home their incisive riffs, and both have their psychedelic moments, the American brand doesn’t tap into spirituality and strife like its African counterparts do—unless you count running out of marijuana and getting sunburned to be serious hardships.
With the 2018 debut album, No. 1, EDL established their galvanizing approach and have continued on that path with few deviations through 2022’s Agadez and 2024’s 100% Sahara Guitar. The opening track from No. 1, “Etran Hymne,” bears rough fidelity, but the guitars’ liquid gold tone is buoyed by beats that have a lopsided propulsion. What sounds like an agitated women’s choir ululates wildly, while the men sing in unison with poised defiance. That combo never gets old. On “Agrim Agadez,” the awkward beats clash with the coruscating guitar riffs. This is peak Saharan rock: roiling, trance-inducing juggernauts with intricately interlocking guitar motifs and massed vocals conveying indomitable joy among hardships that comfortable Westerners cannot fathom. “Hadija” conjures slow-rolling hypnosis with those mad lady trills in the background. Yes, there’s very little variation in the rhythms, but the guitar/bass/vocal interaction is often riotous.
Sophomore LP Agadez boasts fuller production, boosting the songs’ impact while avoiding slickness. “Imouwizla” instantly pleases with easy-rolling blues rock, albeit with that patented rhythm which feels as if you’re on a merry-go-round with a sputtering motor. The galloping and undulating rock of “Toubouk Ine Chihoussay” accrues an irrepressible momentum, with the main cyclical guitar riff positively spangling with euphoria. If EDL have a “hit” single, this is it. “Karade Marhane” is an outlier with its darker mode and coiled rhythm, but it’s still a trance-inducer. The album closes with “Tarha Warghey Ichile,” a celebratory banger that begins at a phenomenal velocity and then accelerates near the end. You can imagine this went down a storm at the many Nigerien weddings EDL played.
EDL’s latest album, 100% Sahara Guitar, begins auspiciously with “Ighre Massina,” in which ebullient vocals, tight, cyclical guitar riffs (Moussa and Allamine are the Tom Verlaine and Richard Lloyd of Africa), and ratatat drums that make you feel as if you’re running with one leg much shorter than the other. “Igrawahi” is EDL’s most laid-back song, and it’s nice to hear some variation in tempo and intensity. The singing is as gorgeous and yearning as the sparkling, mesmerizing guitars. In a better world, “Igrawahi” would be a smash hit. “Amidinine” rolls like a diamond-encrusted tank over dunes, unstoppable and glinting in the unforgiving sun.
As exhilarating as their recordings are, EDL are, by all reports, even more exciting live. They’re traveling over 7,000 miles to hit Seattle, so you’d best believe Etran de L’Aïr will bring the desert heat to zap your blues.
Etran de L’Aïr perform April 8 at Neumos, 7 pm, 21+.
View From a Hotel Window, 3/31/25: Austin [Whatever]
The parking lot is nothing to write home about, but Austin generally is lovely and I’m glad to be here. Although I did just troll the Austinites on Bluesky:
Spoiler: I did not eat at Chipotle. I ate at a food truck down the road where I got a carnitas/kimchi fusion bowl. It was delicious and now I am very sleepy.
Austin! Tonight I am at Book People at 7pm. Please come see me, I wish to be seen by you.
Tomorrow: I’m at the Texas Library Association convention in Dallas, and unless you’re a Texas librarian, I’m unlikely to see you. But if you are a Texas librarian, perhaps I will see you there!
— JS
The only time I ever use photomode is when I push whatever that button is on accident. The boss I'm fighting will freeze in place, no doubt as surprised as I am, and a ton of UI elements unrelated to boss killing will bloom all around him. Maybe he's surprised to learn that he is a character in a game at all; a mechanical speedbump on my ascent to martial excellence. It's rude in that context to go back as though nothing happened but once I figure out what button I pushed, you know, that's how it's gotta be.
The Top 42 Events in Seattle This Week: Mar 31–Apr 6, 2025 [The Stranger]
We've taken stock of everything happening this week and distilled our findings into one handy guide, just for you. Read about all of our picks below, including events from Remi Wolf to Seattle Restaurant Week and from Janeane Garofalo to The Stranger Presents: The 2025 Undisputable Champions of Comedy!
MONDAY FILM
Goodbye Horses: The Many Lives of Q Lazzarus
The new documentary Goodbye Horses: The Many Lives of Q
Lazzarus chronicles the life of Diane Luckey (aka Q Lazzarus),
the singer behind the absolute banger "Goodbye Horses."
The story goes like this: a 25-year-old Luckey was driving a yellow
taxi in NYC when she picked up director Jonathan Demme and played
her demo for him. Demme became infatuated with her androgynous
vocals and cerebral new wave sound, using her music in three of his
films—Married to the Mob, Silence of the Lambs, and Something
Wild. After a brief stint with fame, Q vanished for more than two
decades until she was recognized by documentarian Eva Aridjis in
2019. Don't miss a rare screening of the film followed by a Q&A
with Aridjis. AV
(Here-After at the Crocodile, Belltown)
If one program blocks shutdown, then all programs block shutdown, revisited [The Old New Thing]
Some time ago, I noted that if one program blocks shutdown, then all programs block shutdown. Each program is asked in turn if they have any final words, and only after each program says that it’s finished do we ask the next program.
But what if we asked all the programs for their final words? After all, it’s frustrating to go through two shutdown confirmations from two programs, only to find that the question from the third program is one that you realize “Oh, right, I should send that unfinished email. I need to cancel shutdown.” If you could see all the questions at once, then you would see the third question right away and cancel shutdown without having to deal with the first two programs.
The problem with this design is that the current shutdown mechanism doesn’t have a way for the system to tell programs, “I know I asked you to say your final good-byes, and you’re in the middle of a dialog with the user, but I need you to cancel out of it right now because we’re not shutting down after all.”
That’s not to say that such a mechanism couldn’t be invented, but you’d have to deal with the adoption curve, because the feature doesn’t work until everybody supports it, and in practice, there will always be programs that don’t support it, either because it’s too hard to implement, or because the programs are no longer being maintained by their vendors.
Windows has instead been encouraging programs to dispense with the farewells entirely.
Programs written to the Universal Windows Platform, for example, never even get told that the system is shutting down. They are expected to autosave any relevant state whenever they receive a notification from the system that they are about to be suspended, and once suspended, the system is permitted to terminate the program without any further warning. And programs that adhere to the classic application model are encouraged to employ their own autosave/autorecover logic so that the user can shut down with a minimum of fuss.
I mean, when you power off your phone, you don’t get a barrage of apps asking you if you want to save. They just go away quietly, and when you launch them next time, they try to pick up where they left off.
In other words, instead of trying to make the shutdown problem easier to deal with, Windows is trying to make the shutdown problem go away.
The post If one program blocks shutdown, then <I>all</I> programs block shutdown, revisited appeared first on The Old New Thing.
Announcing EFF’s New Exhibit on Border Surveillance and Accompanying Events [Deeplinks]
EFF has created a traveling exhibit, “Border Surveillance: Places, People, and Technology,” which will make its debut at the Angel Island Immigration Station historical site this spring.
The exhibition on Angel Island in San Francisco Bay will run from April 2, 2025 through May 28, 2025. We would especially like to thank the Angel Island Immigration Station Foundation and Angel Island State Park for their collaboration. You can learn more about the exhibit’s hours of operation and how to visit it here.
For the last several years, EFF has been amassing data and images detailing the massive increase in surveillance technology infrastructure at the U.S.-Mexico border. EFF staff members have made a series of trips along the U.S.-Mexico border, from the California coast to the tip of Texas, to learn from communities on both sides of the border; interview journalists, aid workers, and activists; and map and document border surveillance technology. We created the most complete open-source and publicly-available map of border surveillance infrastructure. We tracked how the border has been used as a laboratory to test new surveillance technologies. We went to court to protect the privacy of digital information for people at the border. We even released a folder of more than 65 open-licensed images of border surveillance technology so that reporters, activists, and scholars can use alternative and open sources of visual information to inform discourse.
Now, we are hoping this traveling exhibit will be a way for us to share some of that information with the public. Think of it as Border Surveillance 101.
We could not ask for a more poignant or significant place to launch this exhibit than at the historic Angel Island Immigration Station. Between 1910 and 1940, hundreds of thousands of immigrants, primarily from Asia, hoping to enter the United States through the San Francisco Bay were detained at Angel Island. After the Chinese Exclusion Act of 1882 prevented Chinese laborers from moving to the United States, immigrants were held on Angel Island for days, months, or in some cases, even years, while they awaited permission to enter the country. Unlike New York City’s Ellis Island, which became a monument to welcoming immigrants, Angel Island became a symbol of exclusion. The walls of the buildings where people awaited rulings on their immigration proceedings to this day,bear inscriptions and carved graffiti that show the depths of their uncertainty, alienation, fear—and hope.
We hope that by juxtaposing the human consequences of historic exclusion with today’s high-tech, digital surveillance under which hopeful immigrants, asylum seekers, and borderlands residents live, we will invite viewers to think about what side of history they want to be on.
If your institution—be it a museum, library, school or community center—is interested in hosting the exhibit in the future, please reach out to Senior Policy Analyst Matthew Guariglia at matthew@eff.org.
ProgramingIn addition to the physical exhibit that you can visit on Angel Island, EFF will host two events to further explore surveillance at the U.S.-Mexico border. On April 3, 2025 from 1-2pm PDT, EFF will be joined by journalists, activists, and researchers that operate on both sides of the border, for a livestream event titled “Life and Migration Under Surveillance at the U.S.-Mexico Border.”
For people in the Bay Area, EFF will host an in-person event in San Francisco titled “Tracking and Documenting Surveillance at the U.S.-Mexico Border” on April 9th, 6-8pm hosted by the Internet Archive. Please check our events page for more information to RSVP.
Slog AM: Shooting at Rainier Beach Night Club, France Bars Marine Le Pen from Election, Israel Killed and Buried 15 Aide Workers in Mass Grave [The Stranger]
The Stranger's morning news roundup. by Nathalie Graham
Two Dead After Night Club Shooting: A security guard and another man were shot and killed outside Capri Bar and Restaurant, a hookah lounge in Rainier Beach. A different shooting occurred at this same lounge just a month ago. The recent violence draws fresh attention to new city council legislation that seeks to crack down on after-hours lounges that operate as private clubs, stay open past 2am, and aren't regulated the same way as typical bars and restaurants. Several recent Seattle-area shootings like the December International District shooting have occurred outside similar establishments.
Shooting Near House Party: In the Tacoma area, two people are dead and four are injured after an early Saturday shooting near a house party. Multiple people called 911 when a fight broke out at the party. Police arrived about 30 seconds before the gunfire started. The victims were between 16 to 21 years old.
Local Jurisdictions Need New Revenue: That's the subject line in the open letter to Gov. Bob Ferguson signed by 68 local officials across the Evergreen state. The letter calls on Ferguson to seek new progressive revenue options as budget deficits grow and federal cuts become imminent. Washington's regressive tax code means there isn't enough "funding for infrastructure, housing and human services, public health, and public safety" investments. The signers then list the measures they support including current bills in Olympia that would lift the 1 percent property tax cap, expand the sales tax to fund public safety programs, and more. Outgoing King County Executive Dow Constantine signed the letter, as did KC Exec hopeful Girmay Zahilay. King County Council Members Teresa Mosqueda, Rod Dembowski, and Jorge L. Barón also signed. The only Seattle City Council members to sign were Alexis Mercedes Rinck and Dan Strauss. Mayor Bruce Harrell, unsurprisingly, did not sign on.
The Weather: I'll wager it'll rain today. And, you know what? I wager it'll rain tomorrow, too. April showers and all that.
Must Be Nice: France's far-right party leader, Marine Le Pen, was barred from seeking office by a court due to embezzlement. The judge ruled Le Pen, as well as eight other people in her party and 12 who served as parliamentary aides, were embezzling public funds. Le Pen, the judge said, was "at the heart of 'a system' that her party used to siphon off EU parliament money," reports the Associated Press. Some worry this ruling is an overstep. I dunno, I think it's a good thing to prevent criminals from taking political control of a country and burning it to the ground for their own gain.
France raises a fascinating hypothetical point: what if the law still exists even if people might get mad at you
— Ian Boudreau (@ianboudreau.com) March 31, 2025 at 5:55 AM
Musk Gives Out His Million Dollar Checks: Ahead of the Wisconsin Supreme Court election, which could change the makeup of the highest legal body in a battleground state, Elon Musk gave two $1 million checks to two Wisconsin voters at a rally for the conservative candidate. Musk and groups he's affiliated with have spent $20 million to get this guy elected ahead of a year where the Wisconsin Supreme Court—where liberals currently hold a 4-3 majority—will consider legislation on "abortion rights, congressional redistricting, union power, and voting rules." The current Supreme Court declined to hear a case that objected to Musk's political interference ahead of the event.
Myanmar Quake Kills Over 1,700: Friday's quake in Myanmar and neighboring Thailand caused devastation. Though the death tolls are already high, prediction models expect deaths could exceed 10,000. Buildings collapsed throughout Myanmar. Many people are believed to still be trapped under the rubble. A woman was pulled out from under a collapsed hotel after 60 hours. She was alive.
The Stock Market Hates Trump: Trump's beloved stock market keeps on plummeting. In the wake of his recent announcement that he would level tariffs on imports from all countries, the stock market hit its lowest point since 2022. The value of the US dollar also decreased 3.5 percent this month thanks to Trump's global trade buffoonery. Meanwhile, the value of gold keeps on climbing as investors look for something—anything—safe to invest in. Goldman Sachs believes there's a 35 percent chance that the US enters a recession in the next 12 months.
See? You Don't Need Musk's Blood Money: All you need is 88 cents and a dream. Last week, a gambler at the Mardi Gras-themed Orleans Hotel & Casino about two miles off the Las Vegas Strip bet 88 cents on a slot machine and won $19,627.01.
Tensions are high: The Pistons and the Timberwolves got into a tussle last night. Five players and two coaches were ejected from the game. In case you want to watch seven minutes of grown men fighting each other, here you go:
International Students Asked to Self-Deport: An email from the Department of Defense to certain student-visa holders in the US notified them that their F-1 visa had been revoked and that they should voluntarily leave the country. Allegedly, the students getting these emails participated in campus activism or showed social media activity—things as small as liking a political post the Trump administration considers unsavory—critical of those in power. Immigration attorneys say impacted students should seek legal representation.
Aide Worker Mass Grave in Gaza: Last week, aide group Palestine Red Crescent Society said nine of its emergency medical technicians had been missing for days after Israeli forces opened fire on ambulances and fire trucks near southern Rafah. Israel said the ambulances and fire trucks were "being used as cover by Hamas and Palestinian Islamic Jihad militants." The United Nation’s Office for the Coordination of Humanitarian Affairs unearthed the missing humanitarian aides alongside their missing vehicles and six other aide workers using bulldozers and heavy machinery. They had been buried in what the UN called a mass grave.
Seems Like a Red Flag? Trump keeps refusing to say whether he'll leave office after his second term—which, you know, is unconstitutional. He said he wasn't joking about seeking a third term and that there are "methods" to make it happen.
I'm sorry to report we are actually not saving the bees. Honeybee deaths in the US have reached record highs. Scientists don't know what's causing it.
A Song for Your Monday: Do you like 1970s German electronic music? Good, I have just the ditty for you.
Nova Custom: this week’s sponsor [OSnews]
Nova Custom, based in The Netherlands, makes laptops focused on privacy, customisation, and freedom. Nova Custom laptops ship with either Linux, Windows, or no operating system, and they’re uniquely certified for Qubes OS (the V54 model will be certified soon), the ultra-secure and private operating system. On top of that, Nova Custom laptops come with Dasharo coreboot firmware preinstalled, which is completely open source, instead of a proprietary BIOS. Nova Custom can also disable the Intel Management Engine for you, and you can opt for Dasharo coreboot+Heads for the ultimate in boot security.
Nova Custom offers visual customisations, too, including engraving a logo or text of your choice on the metal screen lid and/or palmrest and adding your own boot logo. They also offer privacy customisations like removing the microphone and webcam, installing a privacy screen, and more. A small touch I personally appreciate: Nova Custom offers a long, long list of keyboard layouts, as well as the option to customise the super key. Nova Custom products enjoy 3 years of warranty, as well as updates and spare parts for at least seven years after the launch of a product, which includes everything from motherboard replacements down to sets of screws.
Nova Custom laptops can be configured with a wide variety of Intel processor options, as well as a choice between integrated Intel GPUs or Nvidia laptop GPUs. Thanks to Nova Custom for sponsoring OSNews!
[$] A herd of migration discussions [LWN.net]
Migration is the act of moving data from one location in physical memory to another. The kernel may migrate pages for many reasons, including defragmentation, improving NUMA locality, moving data to or from memory hosted on a peripheral device, or freeing a range of memory for other uses. Given the importance of migration to the memory-management subsystem, there is a lot of interest in improving its performance and removing impediments to its success. Several sessions in the memory-management track of the 2025 Linux Storage, Filesystem, Memory-Management, and BPF Summit were dedicated to this topic.
Bluesky is today brimming with irreverance.
When Apple bought NeXT, it wasn't long before we understood that it was the other way around.
Great artists, before they die, should share their secrets, so the next generation can be even greater.
More ChatGPT fun [Scripting News]
Yesterday I uploaded an image of a pizza pie, in a New York pizzeria, with a couple dressed in evening clothes with a NYC cop and off-duty sanitation worker lurking in the background.
Paolo Valdemarin writes from London, "Have you tried adding more images to a prompt? From my experiments it can easily keep 'in mind' five different images and mix them. You can get a bunch of people sitting in the same room, with a very detailed version of the room." He sent two examples which are somewhat embarrassing, but you'll probably enjoy them. :-)
First, he uploaded my profile picture from Facebook. And asked ChatGPT to add me to the picture and then to "sit him next to the couple, with both of them kissing him on the cheek, and as you can see ChatGPT complied!
[$] Fedora change aims for 99% package reproducibility [LWN.net]
The effort to ensure that open-source software is reproducible has been gathering steam over the years, and gaining traction with major Linux distributions. Debian, for example, has been working toward reproducible builds for more than a decade; it can now produce official live CDs of the current stable release that are reproducible. Fedora started on the path much later, but it has progressed far enough that the project is now considering a change proposal for the Fedora 43 development cycle, expected to be released in October, with a goal of making 99% of Fedora's package builds reproducible. So far, reaction to the proposal seems favorable and focused primarily on how to achieve the goal—with minimal pain for packagers—rather than whether to attempt it.
Security updates for Monday [LWN.net]
Security updates have been issued by Debian (amd64-microcode, flatpak, intel-microcode, libdata-entropy-perl, librabbitmq, and vim), Fedora (augeas, containerd, crosswords-puzzle-sets-xword-dl, libssh2, libxml2, nodejs-nodemon, and webkitgtk), Red Hat (libreoffice and python-jinja2), SUSE (389-ds, apparmor, corosync, docker, docker-stable, erlang26, exim, ffmpeg-4, govulncheck-vulndb, istioctl, matrix-synapse, mercurial, openvpn, python3, rke2, and skopeo), and Ubuntu (ansible, linux, linux-hwe-5.4, linux-azure, linux-azure-5.4, linux-bluefield, linux-gcp, linux-gcp-5.4, linux-ibm, linux-kvm, linux-oracle, linux-oracle-5.4, linux-xilinx-zynqmp, linux-azure-fips, linux-gcp-fips, linux-fips, linux-fips, linux-aws-fips, linux-azure-fips, linux-gcp-fips, linux-nvidia-tegra, linux-nvidia-tegra-igx, linux-realtime, linux-intel-iot-realtime, linux-xilinx-zynqmp, opensc, and ruby-doorkeeper).
Pluralistic: Private-sector Trumpism (31 Mar 2025) [Pluralistic: Daily links from Cory Doctorow]
Trumpism is a mixture of grievance, surveillance, and pettiness: "I will never forgive your mockery, I have records of you doing it, and I will punish you and everyone who associates with you for it." Think of how he's going after the (cowardly) BigLaw firms:
https://abovethelaw.com/2025/03/skadden-makes-100-million-settlement-with-trump-in-pro-bono-payola/
Trump is the realization of decades of warning about ubiquitous private and public surveillance – that someday, all of this surveillance would be turned to the systematic dismantling of human rights and punishing of dissent.
23 years ago, I was staying in London with some friends, scouting for a flat to live in. After at day in town, I came back and we ordered a curry and had a nice chat. I mentioned how discomfited I'd been by all the CCTV cameras that had sprouted at the front of every private building, to say nothing of all the public cameras installed by local councils and the police. My friend dismissed this as a kind of American, hyper-individualistic privacy purism, explaining that these cameras were there for public safety – to catch flytippers, vandals, muggers, boy racers tearing unsafely through the streets. My fear about having my face captured by all these cameras was little more than superstitious dread. It's not like they were capturing my soul.
Now, I knew that my friend had recently marched in one of the massive demonstrations against Bush and Blair's illegal invasion plans for Iraq. "Look," I said, "you marched in the street to stand up and be counted. But even so, how would you have felt if – as a condition of protesting – you were forced to first record your identity in a government record-book?" My friend had signed petitions, he'd marched in the street, but even so, he had to admit that there would be some kind of chilling effect if your identity had to be captured as a condition of participating in public political events.
Trump has divided the country into two groups of people: "citizens" (who are sometimes only semi-citizens) and immigrants (who have no rights):
Trump has asserted that he can arrest and deport immigrants (and some semi-citizens) for saying things he doesn't like, or even liking social media posts he disapproves of. He's argued that he can condemn people to life in an offshore slave-labor camp if he doesn't like their tattoos. It is tyranny, built on ubiquitous surveillance, fueled by spite and grievance.
One of Trumpism's most important tenets is that private institutions should have the legal right to discriminate against minorities that he doesn't like. For example, he's trying to end the CFPB's enforcement action against Townstone, a mortgage broker that practiced rampant racial discrimination:
By contrast, Trump abhors the idea that private institutions should be allowed to discriminate against the people he likes, hence his holy war against "DEI":
This is the crux of Wilhoit's Law, an important and true definition of "conservativism":
Conservatism consists of exactly one proposition, to wit: There must be in-groups whom the law protectes but does not bind, alongside out-groups whom the law binds but does not protect.
https://crookedtimber.org/2018/03/21/liberals-against-progressives/#comment-729288
Wilhoit's definition is an important way of framing how conservatives view the role of the state. But there's another definition I like, one that's more about how we relate to one-another, which I heard from Steven Brust: "Ask, 'What's more important: human rights or property rights?' Anyone who answers 'property rights are human rights' is a conservative."
Thus the idea that a mortgage broker or an employer or a banker or a landlord should be able to discriminate against you because of the color of your skin, your sexual orientation, your gender, or your beliefs. If "property rights are human rights," then the human right not to rent to a same-sex couple is co-equal with the couple's human right to shelter.
The property rights/human rights distinction isn't just a way to cleave right from left – it's also a way to distinguish the left from liberals. Liberals will tell you that 'it's not censorship if it's done privately' – on the grounds that private property owners have the absolute right to decide which speech they will or won't permit. Charitably, we can say that some of these people are simply drawing a false equivalence between "violating the First Amendment" and "censorship":
https://pluralistic.net/2022/12/04/yes-its-censorship/
But while private censorship is often less consequential than state censorship, that isn't always true, and even when it is, that doesn't mean that private censorship poses no danger to free expression.
Consider a thought experiment in which a restaurant chain called "No Politics At the Dinner Table Cafe" buys up every eatery in town, and then maintains its monopoly by sewing up exclusive deals with local food producers, and then expands into babershops, taxis and workplace cafeterias, enforcing a rule in all these spaces that bans discussions of politics:
https://locusmag.com/2020/01/cory-doctorow-inaction-is-a-form-of-action/
Here we see how monopoly, combined with property rights, creates a system of censorship that is every bit as consequential as a government rule. And if all of those facilities were to add AI-backed cameras and mics that automatically monitored all our conversations for forbidden political speech, then surveillance would complete the package, yielding private censorship that is effectively indistinguishable from government censorship – with the main difference being that the First Amendment permits the former and prohibits the latter.
The fear that private wealth could lead to a system of private rule has been in America since its founding, when Benjamin Franklin tried (unsuccessfully) to put a ban on monopolies into the US Constitution. A century later, Senator John Sherman wrote the Sherman Act, the first antitrust bill, defending it on the Senate floor by saying:
If we would not submit to an emperor we should not submit to an autocrat of trade.
https://pluralistic.net/2022/02/20/we-should-not-endure-a-king/
40 years ago, neoliberal economists ended America's century-long war on monopolies, declaring monopolies to be "efficient" and convincing Carter, then Reagan, then all their successors (except Biden) to encourage monopolies to form. The US government all but totally suspended enforcement of its antitrust laws, permitting anticompetitive mergers, predatory pricing, and illegal price discrimination. In so doing, they transformed America into a monopolist's playground, where versions of the No Politics At the Dinner Table Cafe have conquered every sector of our economy:
https://www.openmarketsinstitute.org/learn/monopoly-by-the-numbers
This is especially true of our speech forums – the vast online platforms that have become the primary means by which we engage in politics, civics, family life, and more. These platforms are able to decide who may speak, what they may say, and what we may hear:
https://pluralistic.net/2022/12/10/e2e/#the-censors-pen
These platforms are optimized for mass surveillance, and, when coupled with private sector facial recognition databases, it is now possible to realize the nightmare scenario I mooted in London 23 years ago. As you move through both the virtual and physical world, you can be identified, your political speech can be attributed to you, and it can be used as a basis for discrimination against you:
https://pluralistic.net/2023/09/20/steal-your-face/#hoan-ton-that
This is how things work at the US border, of course, where border guards are turning away academics for having anti-Trump views:
https://www.nytimes.com/2025/03/20/world/europe/us-france-scientist-entry-trump-messages.html
It's not just borders, though. Large, private enterprises own large swathes of our world. They have the unlimited property right to exclude people from their properties. And they can spy on us as much as they want, because it's not just antitrust law that withered over the past four decades, it's also privacy law. The last consumer privacy law Congress bestirred itself to pass was 1988's "Video Privacy Protection Act," which bans video-store clerks from disclosing your VHS rentals. The failure to act on privacy – like the failure to act on monopoly – has created a vacuum that has been filled up with private power. Today, it's normal for your every action – every utterance, every movement, every purchase – to be captured, stored, combined, analyzed, and, of course sold.
With vast property holdings, total property rights, and no privacy law, companies have become the autocrats of trade, able to regulate our speech and association in ways that can no longer be readily distinguished state conduct that is at least theoretically prohibited by the First Amendment.
Take Madison Square Garden, a corporate octopus that owns theaters, venues and sport stadiums and teams around the country. The company is notoriously vindictive, thanks to a spate of incidents in which the company used facial recognition cameras to bar anyone who worked at a law-firm that was suing the company from entering any of its premises:
https://www.nytimes.com/2022/12/22/nyregion/madison-square-garden-facial-recognition.html
This practice was upheld by the courts, on the grounds that the property rights of MSG trumped the human rights of random low-level personnel at giant law firms where one lawyer out of thousands happened to be suing the company:
Take your kid's Girl Scout troop on an outing to Radio City Music Hall? Sure, just quit your job and go work for another firm.
But that was just for starters. Now, MSG has started combing social media to identify random individuals who have criticized the company, and has added their faces to the database of people who can't enter their premises. For example, a New Yorker named Frank Miller has been banned for life from all MSG properties because, 20 years ago, he designed a t-shirt making fun of MSG CEO James Dolan:
https://www.theverge.com/news/637228/madison-square-garden-james-dolan-facial-recognition-fan-ban
This is private-sector Trumpism, and it's just getting started.
Take hotels: the entire hotel industry has collapsed into two gigachains: Marriott and Hilton. Both companies are notoriously bad employers and at constant war with their unions (and with nonunion employees hoping to unionize in the face of flagrant, illegal union-busting). If you post criticism online of both hotel chains for hiring scabs, say, and they add you to a facial recognition blocklist, will you be able to get a hotel room?
After more than a decade of Uber and Lyft's illegal predatory pricing, many cities have lost their private taxi fleets and massively disinvested in their public transit. If Uber and Lyft start compiling dossiers of online critics, could you lose the ability to get from anywhere to anywhere, in dozens of cities?
Private equity has rolled up pet groomers, funeral parlors, and dialysis centers. What happens if the PE barons running those massive conglomerates decide to exclude their critics from any business in their portfolio? How would it feel to be shut out of your mother's funeral because you shit-talked the CEO of Foundation Partners Group?
https://kffhealthnews.org/news/article/funeral-homes-private-equity-death-care/
More to the point: once this stuff starts happening, who will dare to criticize corporate criminals online, where their speech can be captured and used against them, by private-sector Trumps armed with facial recognition and the absurd notion that property rights aren't just human rights – they're the ultimate human rights?
The old fears of Benjamin Franklin and John Sherman have come to pass. We live among autocrats of trade, and don't even pretend the Constitution controls what these private sector governments can do to us.
(Image: Cryteria, CC BY 3.0, modified)
Know Your Rights – City of Burbank https://www.burbankca.gov/know_your_rights
The Tech Fantasy That Powers A.I. Is Running on Fumes https://www.nytimes.com/2025/03/29/opinion/ai-tech-innovation.html (h/t Nelson Minar)
#15yrsago Why I won’t buy an iPad (and think you shouldn’t, either) https://memex.craphound.com/2010/04/01/why-i-wont-buy-an-ipad-and-think-you-shouldnt-either/
#5yrsago Solar as a beneficial fad https://pluralistic.net/2020/04/01/pluralistic:-01-apr-2020/#pv-or-bust
#5yrsago American employment exceptionalism https://pluralistic.net/2020/04/01/pluralistic:-01-apr-2020/#usausausa
#5yrsago Tiktok Kremlinology https://pluralistic.net/2020/04/01/pluralistic:-01-apr-2020/#going-pandemic
#5yrsago Alteon cuts covid-fighters' pay https://pluralistic.net/2020/04/01/pluralistic:-01-apr-2020/#private-equity
#5yrsago Snowden's Box https://pluralistic.net/2020/04/01/pluralistic:-01-apr-2020/#94-1054-Eleu-St
#1yrago Humans are not perfectly vigilant https://pluralistic.net/2024/04/01/human-in-the-loop/#monkey-in-the-middle
Chicago: ABA Techshow, Apr 3
https://www.techshow.com/
Bloomington: Picks and Shovels at Morgenstern, Apr 4
https://morgensternbooks.com/event/2025-04-04/author-event-cory-doctorow
Bloomington: Ostrom Center, Apr 4
https://events.iu.edu/ostromworkshop/event/1843316-hls-beyond-the-web-cory-doctorow
Pittsburgh: Picks and Shovels at White Whale Books, May 15
https://whitewhalebookstore.com/events/20250515
Pittsburgh: PyCon, May 16
https://us.pycon.org/2025/schedule/
PDX: Teardown 2025, Jun 20-22
https://www.crowdsupply.com/teardown/portland-2025
PDX: Picks and Shovels at Barnes and Noble, Jun 20
https://stores.barnesandnoble.com/event/9780062183697-0
New Orleans: DeepSouthCon63, Oct 10-12, 2025
http://www.contraflowscifi.org/
Capitalists Hate Capitalism (MMT Podcast)
https://pileusmmt.libsyn.com/195-capitalists-hate-capitalism-with-cory-doctorow
How to Destroy Our Tech Overlords (Homeless Romantic)
https://www.youtube.com/watch?v=epma2B0wjzU
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org). Signed, personalized copies at Dark Delicacies (https://www.darkdel.com/store/p3007/Pre-Order_Signed_Copies%3A_The_Lost_Cause_HB.html#/)
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com. Signed copies at Dark Delicacies (US): and Forbidden Planet (UK): https://forbiddenplanet.com/385004-red-team-blues-signed-edition-hardcover/.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Attack Surface": The third Little Brother novel, a standalone technothriller for adults. The Washington Post called it "a political cyberthriller, vigorous, bold and savvy about the limits of revolution and resistance." Order signed, personalized copies from Dark Delicacies https://www.darkdel.com/store/p1840/Available_Now%3A_Attack_Surface.html
"How to Destroy Surveillance Capitalism": an anti-monopoly pamphlet analyzing the true harms of surveillance capitalism and proposing a solution. https://onezero.medium.com/how-to-destroy-surveillance-capitalism-8135e6744d59?sk=f6cd10e54e20a07d4c6d0f3ac011af6b) (signed copies: https://www.darkdel.com/store/p2024/Available_Now%3A__How_to_Destroy_Surveillance_Capitalism.html)
"Little Brother/Homeland": A reissue omnibus edition with a new introduction by Edward Snowden: https://us.macmillan.com/books/9781250774583; personalized/signed copies here: https://www.darkdel.com/store/p1750/July%3A__Little_Brother_%26_Homeland.html
"Poesy the Monster Slayer" a picture book about monsters, bedtime, gender, and kicking ass. Order here: https://us.macmillan.com/books/9781626723627. Get a personalized, signed copy here: https://www.darkdel.com/store/p2682/Corey_Doctorow%3A_Poesy_the_Monster_Slayer_HB.html#/.
Unauthorized Bread: a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, 2026
Enshittification, Why Everything Suddenly Got Worse and What to Do About It (the graphic novel), Firstsecond, 2026
The Memex Method, Farrar, Straus, Giroux, 2026
Today's top sources: Slashdot (https://slashdot.org/).
Currently writing:
A Little Brother short story about DIY insulin PLANNING
Picks and Shovels, a Martin Hench noir thriller about the heroic era of the PC. FORTHCOMING TOR BOOKS FEB 2025
Latest podcast: Why I don't like AI art https://craphound.com/news/2025/03/30/why-i-dont-like-ai-art/
This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Medium (no ads, paywalled):
Twitter (mass-scale, unrestricted, third-party surveillance and advertising):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
ISSN: 3066-764X
There's now a home page for Radio Free America. Once we have more feeds, the home page will be a timeline of news that can be acessed outside of Bluesky. Please subscribe now, and help spread the word. Via the dynamic OPML file that's publicly available there can be many such pages on the open web.
Russell Coker: Links March 2025 [Planet Debian]
Longnow has an insightful article about religion and magic mushrooms [2].
Interesting story about people working for free at Apple to develop a graphing calculator [6]. We need ways for FOSS people to associate to do such projects.
Interesting YouTube video about a wiki for building a cheap road legal car [7].
Interesting video about powering spacecraft with Plutonion 238 and how they are running out [8].
Interesting information about the search for mh370 [9]. I previously hadn’t been convinced that it was hijacked but I am now.
CodeSOD: Nobody's BFF [The Daily WTF]
Legacy systems are hard to change, and even harder to eliminate. You can't simply do nothing though; as technology and user expectations change, you need to find ways to modernize and adapt the legacy system.
That's what happened to Alicia's team. They had a gigantic, spaghetti-coded, monolithic application that was well past drinking age and had a front-end to match. Someone decided that they couldn't touch the complex business logic, but what they could do was replace the frontend code by creating an adapter service; the front end would call into this adapter, and the adapter would execute the appropriate methods in the backend.
Some clever coder named this "Backend for Frontend" or "BFF".
It was not anyone's BFF. For starters, this system didn't actually allow you to just connect a UI to the backend. No, that'd be too easy. This system was actually a UI generator.
The way this works is that you feed it a schema file, written in JSON. This file specifies what input elements you want, some hints for layout, what validation you want the UI to perform, and even what CSS classes you want. Then you compile this as part of a gigantic .NET application, and deploy it, and then you can see your new UI.
No one likes using it. No one is happy that it exists. Everyone wishes that they could just write frontends like normal people, and not use this awkward schema language.
All that is to say, when Alicia's co-worker stood up shortly before lunch, said, "I'm taking off the rest of the day, BFF has broken me," it wasn't particularly shocking to hear- or even the first time that'd happened.
Alicia, not heeding the warning inherent in that statement, immediately tracked down that dev's last work, and tried to understand what had been so painful.
"minValue": 1900,
"maxValue": 99,
This, of course, had to be a bug. Didn't it? How could the
maxValue
be lower than the minValue
?
Let's look at the surrounding context.
{
"type": "eventValueBetweenValuesValidator",
"eventType": "CalendarYear",
"minValue": 1900,
"maxValue": 99,
"isCalendarBasedMaxValue": true,
"message": "CalendarYear must be between {% raw %}{{minValue}}{% endraw %} and {% raw %}{{maxValue}}{% endraw %}."
}
I think this should make it perfectly clear what's happening.
Oh, it doesn't? Look at the isCalendarBasedMaxValue
field. It's true. There, that should explain everything. No, it
doesn't? You're just more confused?
The isCalendarBasedMaxValue
says that the
maxValue
field should not be treated as a literal
value, but instead, is the number of years in the future relative
to the current year which are considered valid. This
schema definition says "accept all years between 1900 and 2124 (at
the time of this writing)." Next year, that top value goes up to
2125. Then 2126. And so on.
As features go, it's not a terrible feature. But the implementation of the feature is incredibly counter-intuitive. At the end of the day, this is just bad naming: (ab)using min/max to do something that isn't really a min/max validation is the big issue here.
Alicia writes:
I couldn't come up with something more counterintuitive if I tried.
Oh, don't sell yourself short, Alicia. I'm sure you could write something far, far worse if you tried. The key thing here is that clearly, nobody tried- they just sorta let things happen and definitely didn't think too hard about it.
The Signal Chat Leak and the NSA [Schneier on Security]
US National Security Advisor Mike Waltz, who started the now-infamous group chat coordinating a US attack against the Yemen-based Houthis on March 15, is seemingly now suggesting that the secure messaging service Signal has security vulnerabilities.
"I didn’t see this loser in the group," Waltz told Fox News about Atlantic editor in chief Jeffrey Goldberg, whom Waltz invited to the chat. "Whether he did it deliberately or it happened in some other technical mean, is something we’re trying to figure out."
Waltz’s implication that Goldberg may have hacked his way in was followed by a report from CBS News that the US National Security Agency (NSA) had sent out a bulletin to its employees last month warning them about a security "vulnerability" identified in Signal.
The truth, however, is much more interesting. If Signal has vulnerabilities, then China, Russia, and other US adversaries suddenly have a new incentive to discover them. At the same time, the NSA urgently needs to find and fix any vulnerabilities quickly as it can—and similarly, ensure that commercial smartphones are free of backdoors—access points that allow people other than a smartphone’s user to bypass the usual security authentication methods to access the device’s contents.
That is essential for anyone who wants to keep their communications private, which should be all of us.
It’s common knowledge that the NSA’s mission is breaking into and eavesdropping on other countries’ networks. (During President George W. Bush’s administration, the NSA conducted warrantless taps into domestic communications as well—surveillance that several district courts ruled to be illegal before those decisions were later overturned by appeals courts. To this day, many legal experts maintain that the program violated federal privacy protections.) But the organization has a secondary, complementary responsibility: to protect US communications from others who want to spy on them. That is to say: While one part of the NSA is listening into foreign communications, another part is stopping foreigners from doing the same to Americans.
Those missions never contradicted during the Cold War, when allied and enemy communications were wholly separate. Today, though, everyone uses the same computers, the same software, and the same networks. That creates a tension.
When the NSA discovers a technological vulnerability in a service such as Signal (or buys one on the thriving clandestine vulnerability market), does it exploit it in secret, or reveal it so that it can be fixed? Since at least 2014, a US government interagency "equities" process has been used to decide whether it is in the national interest to take advantage of a particular security flaw, or to fix it. The trade-offs are often complicated and hard.
Waltz—along with Vice President J.D. Vance, Defense Secretary Pete Hegseth, and the other officials in the Signal group—have just made the trade-offs much tougher to resolve. Signal is both widely available and widely used. Smaller governments that can’t afford their own military-grade encryption use it. Journalists, human rights workers, persecuted minorities, dissidents, corporate executives, and criminals around the world use it. Many of these populations are of great interest to the NSA.
At the same time, as we have now discovered, the app is being used for operational US military traffic. So, what does the NSA do if it finds a security flaw in Signal?
Previously, it might have preferred to keep the flaw quiet and use it to listen to adversaries. Now, if the agency does that, it risks someone else finding the same vulnerability and using it against the US government. And if it was later disclosed that the NSA could have fixed the problem and didn’t, then the results might be catastrophic for the agency.
Smartphones present a similar trade-off. The biggest risk of eavesdropping on a Signal conversation comes from the individual phones that the app is running on. While it’s largely unclear whether the US officials involved had downloaded the app onto personal or government-issued phones—although Witkoff suggested on X that the program was on his "personal devices"—smartphones are consumer devices, not at all suitable for classified US government conversations. An entire industry of spyware companies sells capabilities to remotely hack smartphones for any country willing to pay. More capable countries have more sophisticated operations. Just last year, attacks that were later attributed to China attempted to access both President Donald Trump and Vance’s smartphones. Previously, the FBI—as well as law enforcement agencies in other countries—have pressured both Apple and Google to add "backdoors" in their phones to more easily facilitate court-authorized eavesdropping.
These backdoors would create, of course, another vulnerability to be exploited. A separate attack from China last year accessed a similar capability built into US telecommunications networks.
The vulnerabilities equities have swung against weakened smartphone security and toward protecting the devices that senior government officials now use to discuss military secrets. That also means that they have swung against the US government hoarding Signal vulnerabilities—and toward full disclosure.
This is plausibly good news for Americans who want to talk among themselves without having anyone, government or otherwise, listen in. We don’t know what pressure the Trump administration is using to make intelligence services fall into line, but it isn’t crazy to worry that the NSA might again start monitoring domestic communications.
Because of the Signal chat leak, it’s less likely that they’ll use vulnerabilities in Signal to do that. Equally, bad actors such as drug cartels may also feel safer using Signal. Their security against the US government lies in the fact that the US government shares their vulnerabilities. No one wants their secrets exposed.
I have long advocated for a "defense dominant" cybersecurity strategy. As long as smartphones are in the pocket of every government official, police officer, judge, CEO, and nuclear power plant operator—and now that they are being used for what the White House now calls calls "sensitive," if not outright classified conversations among cabinet members—we need them to be as secure as possible. And that means no government-mandated backdoors.
We may find out more about how officials—including the vice president of the United States—came to be using Signal on what seem to be consumer-grade smartphones, in a apparent breach of the laws on government records. It’s unlikely that they really thought through the consequences of their actions.
Nonetheless, those consequences are real. Other governments, possibly including US allies, will now have much more incentive to break Signal’s security than they did in the past, and more incentive to hack US government smartphones than they did before March 24.
For just the same reason, the US government has urgent incentives to protect them.
This essay was originally published in Foreign Policy.
Grrl Power #1343 – Parting is such and such [Grrl Power]
Sciona definitely controls the senator, and the senator does sit on the committee that deals with Archon’s budget, but that doesn’t exactly give her much power over Archon. Not that she is necessarily gunning for them directly, anyway. Well, she might be, but trying to cut their discretionary budget 15% over the next five years is hardly the kind of slam dunk she’s looking for. She just put herself where she is because anyone who has access to military budgeting can probably get away with a lot.
Lorlara is fun to write, but god, she would be exhausting to be around for any extended length of time. I do kind of feel like doing a few comics in the vein of “A day in the life of…” about her though. Or maybe just the Galytn crew in general. Hmm.
I drew Deus way too big there. He looks like he’s pushing 6’11” or something. He’s supposed to be 6’4.” Oh well.
I’d originally intended that this page would be my stick figure page since I did this one the same week of the move, but I didn’t quite manage to make myself do stick figures, so instead it’s… this. It’s not my favorite art. You know, you see sketchy, loose art that still has a sense of style to it and you think, that looks like someone drew it in 5 minutes. Sure. If that’s their regular style. If it isn’t, then capturing that almost spontaneous, free feeling takes a surprising amount of work. Oy.
Anyway, we’re “moved in” in that the stuff that came with us in the 27 foot truck is mostly unpacked and distributed around the house. Now I just have to deal with the remnants of me and my wife’s house – all the major furniture is out, but I’m still not set back up with my usual drawing setup. I’ve got my computer and several extra screens moved over, but the array of desks I ensconce myself in is still over at my old house. I’ll show you a setup when I get it all, well, set up here. It’s fairly elaborate. I also have two 16′ POD containers to deal with. I have a feeling I won’t actually be able to park our cars in the garage for at least 6 months while we sort everything out. The new house is actually a bit larger than my parent’s old house, square footage wise, but every room in the old house had a walk in closet. Even the front office. (In American real estate terms, any room with a window and a closet is technically considered a bedroom.) In my personal terms, there has to be a closet and carpeting. I know you can put a rug down, but we passed on one of the houses we were considering because the master had finished, hard floors. My mom is a fall risk, and no way am I putting her in an uncarpeted bedroom.
I tell you what spending the last 2-3 months looking at houses has done to me though. It’s made me want to design houses. I just don’t understand some design choices that people make. Like every house we looked at was basically fine except for one stupid architectural choice. Yes, the houses I design would probably be a touch boring, architecturally, but they would be functional. Also probably a bit on the large side, if I’m honest. I like walk in closets. I don’t even have that much clothing, but I’ve lived in enough apartments and houses with those shitty bifold closet doors and closets that are 2′ by 5′ to know that I want some storage space.
I’m going to try something with this new
vote incentive.
This month, I’m closing on a new house, selling my Mom’s house, finishing packing Mom’s house, moving city to city to the new house, forwarding mail, canceling utilities, all that. And after that’s done, I get to start the process of selling my old house, which needs a little work before it can realistically go on the market.
SO. I’m going to try and do this vote incentive in stages. Currently it’s just pencils. The TopWebcomics one will update with colors and detail until we get to the no clothes versions, then that will continue over at Patreon. Also there will be a comic or two in between each version to fill out the story.
I know it’s hard to tell from just the pencils, but this is Heatwave and Jiggawatt. The comics will explain why they’re doing what they’re doing. Although I feel like even saying that much makes it easy to guess, but hopefully the journey will still amuse.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Division is easier than connection [Seth's Blog]
But connection is where the value lies.
Connected, resilient communities create possibility and forward motion.
Division is satisfying in the short run, and it might even draw a crowd. But the only useful reason to disconnect is if it opens up the chance to increase connection somewhere else.
Simon Josefsson: On Binary Distribution Rebuilds [Planet Debian]
I rebuilt (the top-50 popcon) Debian and Ubuntu packages, on amd and arm64, and compared the results a couple of months ago. Since then the Reproduce.Debian.net effort has been launched. Unlike my small experiment, that effort is a full-scale rebuild with more architectures. Their goal is to reproduce what is published in the Debian archive.
One differences between these two approaches are the build inputs: The Reproduce Debian effort use the same build inputs which were used to build the published packages. I’m using the latest version of published packages for the rebuild.
What does that difference imply? I believe reproduce.debian.net will be able to reproduce more of the packages in the archive. If you build a C program using one version of GCC you will get some binary output; and if you use a later GCC version you are likely to end up with a different binary output. This is a good thing: we want GCC to evolve and produce better output over time. However it means in order to reproduce the binaries we publish and use, we need to rebuild them using whatever build dependencies were used to prepare those binaries. The conclusion is that we need to use the old GCC to rebuild the program, and this appears to be the Reproduce.Debian.Net approach.
It would be a huge success if the Reproduce.Debian.net effort were to reach 100% reproducibility, and this seems to be within reach.
However I argue that we need go further than that. Being able to rebuild the packages reproducible using older binary packages only begs the question: can we rebuild those older packages? I fear attempting to do so ultimately leads to a need to rebuild 20+ year old packages, with a non-negligible amount of them being illegal to distribute or are unable to build anymore due to bit-rot. We won’t solve the Trusting Trust concern if our rebuild effort assumes some initial binary blob that we can no longer build from source code.
I’ve made an illustration of the effort I’m thinking of, to reach something that is stronger than reproducible rebuilds. I am calling this concept a Idempotent Rebuild, which is an old concept that I believe is the same as John Gilmore has described many years ago.
The illustration shows how the Debian main archive is used as input to rebuild another “stage #0” archive. This stage #0 archive can be compared with diffoscope to the main archive, and all differences are things that would be nice to resolve. The packages in the stage #0 archive is used to prepare a new container image with build tools, and the stage #0 archive is used as input to rebuild another version of itself, called the “stage #1” archive. The differences between stage #0 and stage #1 are also useful to analyse and resolve. This process can be repeated many times. I believe it would be a useful property if this process terminated at some point, where the stage #N archive was identical to the stage #N-1 archive. If this would happen, I label the output archive as an Idempotent Rebuild of the distribution.
How big is N today? The simplest assumption is that it is infinity. Any build timestamp embedded into binary packages will change on every iteration. This will cause the process to never terminate. Fixing embedded timestamps is something that the Reproduce.Debian.Net effort will also run into, and will have to resolve.
What other causes for differences could there be? It is easy to see that generally if some output is not deterministic, such as the sort order of assembler object code in binaries, then the output will be different. Trivial instances of this problem will be caught by the reproduce.debian.net effort as well.
Could there be higher order chains that lead to infinite N? It is easy to imagine the existence of these, but I don’t know how they would look like in practice.
An ideal would be if we could get down to N=1. Is that technically possible? Compare building GCC, it performs an initial stage 0 build using the system compiler to produce a stage 1 intermediate, which is used to build itself again to stage 2. Stage 1 and 2 is compared, and on success (identical binaries), the compilation succeeds. Here N=2. But this is performed using some unknown system compiler that is normally different from the GCC version being built. When rebuilding a binary distribution, you start with the same source versions. So it seems N=1 could be possible.
I’m unhappy to not be able to report any further technical progress now. The next step in this effort is to publish the stage #0 build artifacts in a repository, so they can be used to build stage #1. I already showed that stage #0 was around ~30% reproducible compared to the official binaries, but I didn’t save the artifacts in a reusable repository. Since the official binaries were not built using the latest versions, it is to be expected that the reproducibility number is low. But what happens at stage #1? The percentage should go up: we are now compare the rebuilds with an earlier rebuild, using the same build inputs. I’m eager to see this materialize, and hope to eventually make progress on this. However to build stage #1 I believe I need to rebuild a much larger number packages in stage #0, it could be roughly similar to the “build-essentials-depends” package set.
I believe the ultimate end goal of Idempotent Rebuilds is to be able to re-bootstrap a binary distribution like Debian from some other bootstrappable environment like Guix. In parallel to working on a achieving the 100% Idempotent Rebuild of Debian, we can setup a Guix environment that build Debian packages using Guix binaries. These builds ought to eventually converge to the same Debian binary packages, or there is something deeply problematic happening. This approach to re-bootstrap a binary distribution like Debian seems simpler than rebuilding all binaries going back to the beginning of time for that distribution.
What do you think?
PS. I fear that Debian main may have already went into a state where it is not able to rebuild itself at all anymore: the presence and assumption of non-free firmware and non-Debian signed binaries may have already corrupted the ability for Debian main to rebuild itself. To be able to complete the idempotent and bootstrapped rebuild of Debian, this needs to be worked out.
Joe Marshall: Avoiding Stringly Typed Code [Planet Lisp]
It can be tempting to implement certain objects by their printed representation. This is especially true when you call out to other programs and pass the parameters in command line arguments and get a result back through the stdout stream. If an object is implemented by its printed representation, then serialization and deserialization of the object across program boundaries is trivial.
Objects implemented by their printed representation are jokingly referred to as “stringly typed”. The type information is lost so it is possible to pass strings representing objects of the wrong type and get nonsense answers. There are no useful predicates on arbitrary strings, so you cannot do type checking or type dispatch. This becomes a big problem for objects created from other utilities. When you call out to a bash script, you usually get the response as stream or string.
The solution? Slap a type on it right away. For any kind of
string we get back from another program, we at least define a CLOS
class with a single slot that holds a string. I define two Lisp
bindings for any program implemented by a shell script. The one
with a %
prefix is the program that takes and returns
strings. Without the %
it takes and returns Lisp
objects that are marshaled to and from strings before the
%
version is called. The %
version
obviously cannot do type checking, but the non-%
entry
point can and does enforce the runtime type.
Console War, p100 [Ctrl+Alt+Del Comic]
We’ve seen the signs for years now, but it seems like everyone is finally accepting it: the “Console War” that has raged since the 80s has finally… sputtered and died. I figured it was a good time to post some closure pages for my comic series of the same name. That’s not to say I […]
The post Console War, p100 appeared first on Ctrl+Alt+Del Comic.
New Comic: Poe Cameron
Urgent: Protect privacy of customers of 23 and Me [Richard Stallman's Political Notes]
Everyone: call on the directors of 23 and Me to protect the privacy of their customers.
Search warrants for student rooms [Richard Stallman's Political Notes]
The deportation thugs seems to have got search warrants for student rooms at Columbia University by misleading a judge, as well as misrepresenting the law they were claiming to enforce.
Wrecker attacking law firms [Richard Stallman's Political Notes]
The wrecker is attacking law firms with executive orders to cut off their business. Three of them have taken legal action against these orders.
Head of CDC facing right-wing disinformation [Richard Stallman's Political Notes]
The wrecker tried to appoint a serious medical researcher as head of the CDC. He, and she, now face right-wing extremist disinformation.
I expect he will try to develop a system by which to control more completely which kinds of disinformation are permitted.
Quid pro quo deals between US government and billionaires [Richard Stallman's Political Notes]
Alvaro Bedoya, FTC commissioner until he was fired by the corrupter, warns of apparent "quid pro quo" deals between the US government and billionaires. In other words, apparent corruption.
When the "Department of Justice" is part of the same corruption, there is no way to tackle it.
Parents following RFK's medical misinformation [Richard Stallman's Political Notes]
Parents following RFK's medical misinformation are giving their children cod-liver oil, thinking that will cure or prevent measles. It does nothing against measles, but it does cause liver damage.
European universities rescuing threatened scientists from US [Richard Stallman's Political Notes]
European universities are starting to rescue threatened scientists from US universities.
Turks holding large rallies [Richard Stallman's Political Notes]
Turks are holding very large rallies for jailed opposition leader İmamoğlu.
Florida law against teachers that are Chinese residents [Richard Stallman's Political Notes]
Florida's law forbidding hiring teachers who are officially residents of China (or some other countries) makes no exception for Chinese refugees who are applying for asylum.
I wonder whether this law violates federal anti-discrimination law.
FDA official in charge of vaccines has resigned [Richard Stallman's Political Notes]
The FDA's official in charge of vaccines has resigned, saying RFK "wishes subservient confirmation of his misinformation and lies."
This and other appointments described here suggest he will attack vaccinations and put Americans greatly in danger.
That includes me. I got a Covid-19 booster vaccination a week ago, because I was worried it might cease to be available if I waited. That's good for now, but what about next fall. and subsequent years.
Academics in US [Richard Stallman's Political Notes]
Academics in the US are making preparations in case they are disappeared.
I expect that Republican officials will maintain the lie that the people who may be arrested and deported are supporting terrorists and insist that nothing is wrong.
Social Security website crashing [Richard Stallman's Political Notes]
*Social Security website is crashing, nobody monitors customer experience since DOGE eliminated that office.*
This could be their plan for how to get rid of Social Security in practice even though it may continue to exist in name.
Russ Allbery: Review: Ghostdrift [Planet Debian]
Review: Ghostdrift, by Suzanne Palmer
Series: | Finder Chronicles #4 |
Publisher: | DAW |
Copyright: | May 2024 |
ISBN: | 0-7564-1888-7 |
Format: | Kindle |
Pages: | 378 |
Ghostdrift is a science fiction adventure and the fourth (and possibly final) book of the Finder Chronicles. You should definitely read this series in order and not start here, even though the plot of this book would stand alone.
Following The Scavenger Door, in which he made enemies even more dramatically than he had in the previous books, Fergus Ferguson has retired to the beach on Coralla to become a tea master and take care of his cat. It's a relaxing, idyllic life and a much-needed total reset. Also, he's bored. The arrival of his alien friend Qai, in some kind of trouble and searching for him, is a complex balance between relief and disappointment.
Bas Belos is one of the most notorious pirates of the Barrens. He has someone he wants Fergus to find: his twin sister, who disappeared ten years ago. Fergus has an unmatched reputation for finding things, so Belos kidnapped Qai's partner to coerce her into finding Fergus. It's not an auspicious beginning to a relationship, and Qai was ready to fight once they got her partner back, but Belos makes Fergus an offer of payment that, startlingly, is enough for him to take the job mostly voluntarily.
Ghostdrift feels a bit like a return to Finder. Fergus is once again alone among strangers, on an assignment that he's mostly not discussing with others, piecing together clues and navigating tricky social dynamics. I missed his friends, particularly Ignatio, and while there are a few moments with AI ships, they play less of a role.
But Fergus is so very good at what he does, and Palmer is so very good at writing it. This continues to be competence porn at its best. Belos's crew thinks Fergus is a pirate recruited from a prison colony, and he quietly sets out to win their trust with a careful balance of self-deprecation and unflappable skill, helped considerably by the hidden gift he acquired in Finder. The character development is subtle, but this feels like a Fergus who understands friendship and other people at a deeper and more satisfying level than the Fergus we first met three books ago.
Palmer has a real talent for supporting characters and Ghostdrift is no exception. Belos's crew are criminals and murderers, and Palmer does remind the reader of that occasionally, but they're also humans with complex goals and relationships. Belos has earned their loyalty by being loyal and competent in a rough world where those attributes are rare. The morality of this story reminds me of infiltrating a gang: the existence of the gang is not a good thing, and the things they do are often indefensible, but they are an understandable reaction to a corrupt social system. The cops (in this case, the Alliance) are nearly as bad, as we've learned over the past couple of books, and considerably more insufferable. Fergus balances the ethical complexity in a way that I found satisfyingly nuanced, while quietly insisting on his own moral lines.
There is a deep science fiction plot here, possibly the most complex of the series so far. The disappearance of Belos's sister is the tip of an iceberg that leads to novel astrophysics, dangerous aliens, mysterious ruins, and an extended period on a remote and wreck-strewn planet. I groaned a bit when the characters ended up on the planet, since treks across primitive alien terrain with jury-rigged technology are one of my least favorite science fiction tropes, but I need not have worried. Palmer knows what she's doing; the pace of the plot does slow a bit at first, but it quickly picks up again, adding enough new setting and plot complications that I never had a chance to be bored by alien plants. It helps that we get another batch of excellent supporting characters for Fergus to observe and win over.
This series is such great science fiction. Each book becomes my new favorite, and Ghostdrift is no exception. The skeleton of its plot is a satisfying science fiction mystery with multiple competing factions, hints of fascinating galactic politics, complicated technological puzzles, and a sense of wonder that reminds me of reading Larry Niven's Known Space series. But the characters are so much better and more memorable than classic SF; compared to Fergus, Niven's Louis Wu barely exists and is readily forgotten as soon as the story is over. Fergus starts as a quiet problem-solver, but so much character depth unfolds over the course of this series. The ending of this book was delightfully consistent with everything we've learned about Fergus, but also the sort of ending that it's hard to imagine the Fergus from Finder knowing how to want.
Ghostdrift, like each of the books in this series, reaches a satisfying stand-alone conclusion, but there is no reason within the story for this to be the last of the series. The author's acknowledgments, however, says that this the end. I admit to being disappointed, since I want to read more about Fergus and there are numerous loose ends that could be explored. More importantly, though, I hope Palmer will write more novels in any universe of her choosing so that I can buy and read them.
This is fantastic stuff. This review comes too late for the Hugo nominating deadline, but I hope Palmer gets a Best Series nomination for the Finder Chronicles as a whole. She deserves it.
Rating: 9 out of 10
Girl Genius for Monday, March 31, 2025 [Girl Genius]
The Girl Genius comic for Monday, March 31, 2025 has been posted.
Comic Strip for Monday, March 31, 2025 [General Protection Fault: Comic Updates]
Current Story: Surreptitious Machinations II: Ashes to Ashes
How Each Pillar of the 1st Amendment is Under Attack [Krebs on Security]
“Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.” -U.S. Constitution, First Amendment.
Image: Shutterstock, zimmytws.
In an address to Congress this month, President Trump claimed he had “brought free speech back to America.” But barely two months into his second term, the president has waged an unprecedented attack on the First Amendment rights of journalists, students, universities, government workers, lawyers and judges.
This story explores a slew of recent actions by the Trump administration that threaten to undermine all five pillars of the First Amendment to the U.S. Constitution, which guarantees freedoms concerning speech, religion, the media, the right to assembly, and the right to petition the government and seek redress for wrongs.
The right to petition allows citizens to communicate with the government, whether to complain, request action, or share viewpoints — without fear of reprisal. But that right is being assaulted by this administration on multiple levels. For starters, many GOP lawmakers are now heeding their leadership’s advice to stay away from local town hall meetings and avoid the wrath of constituents affected by the administration’s many federal budget and workforce cuts.
Another example: President Trump recently fired most of the people involved in processing Freedom of Information Act (FOIA) requests for government agencies. FOIA is an indispensable tool used by journalists and the public to request government records, and to hold leaders accountable.
The biggest story by far this week was the bombshell from The Atlantic editor Jeffrey Goldberg, who recounted how he was inadvertently added to a Signal group chat with National Security Advisor Michael Waltz and 16 other Trump administration officials discussing plans for an upcoming attack on Yemen.
One overlooked aspect of Goldberg’s incredible account is that by planning and coordinating the attack on Signal — which features messages that can auto-delete after a short time — administration officials were evidently seeking a way to avoid creating a lasting (and potentially FOIA-able) record of their deliberations.
“Intentional or not, use of Signal in this context was an act of erasure—because without Jeffrey Goldberg being accidentally added to the list, the general public would never have any record of these communications or any way to know they even occurred,” Tony Bradley wrote this week at Forbes.
Petitioning the government, particularly when it ignores your requests, often requires challenging federal agencies in court. But that becomes far more difficult if the most competent law firms start to shy away from cases that may involve crossing the president and his administration.
On March 22, the president issued a memorandum that directs heads of the Justice and Homeland Security Departments to “seek sanctions against attorneys and law firms who engage in frivolous, unreasonable and vexatious litigation against the United States,” or in matters that come before federal agencies.
The POTUS recently issued several executive orders railing against specific law firms with attorneys who worked legal cases against him. On Friday, the president announced that the law firm of Skadden, Arps, Slate, Meager & Flom had agreed to provide $100 million in pro bono work on issues that he supports.
Trump issued another order naming the firm Paul, Weiss, Rifkind, Wharton & Garrison, which ultimately agreed to pledge $40 million in pro bono legal services to the president’s causes.
Other Trump executive orders targeted law firms Jenner & Block and WilmerHale, both of which have attorneys that worked with special counsel Robert Mueller on the investigation into Russian interference in the 2016 election. But this week, two federal judges in separate rulings froze parts of those orders.
“There is no doubt this retaliatory action chills speech and legal advocacy, and that is qualified as a constitutional harm,” wrote Judge Richard Leon, who ruled against the executive order targeting WilmerHale.
President Trump recently took the extraordinary step of calling for the impeachment of federal judges who rule against the administration. Trump called U.S. District Judge James Boasberg a “Radical Left Lunatic” and urged he be removed from office for blocking deportation of Venezuelan alleged gang members under a rarely invoked wartime legal authority.
In a rare public rebuke to a sitting president, U.S. Supreme Court Justice John Roberts issued a statement on March 18 pointing out that “For more than two centuries, it has been established that impeachment is not an appropriate response to disagreement concerning a judicial decision.”
The U.S. Constitution provides that judges can be removed from office only through impeachment by the House of Representatives and conviction by the Senate. The Constitution also states that judges’ salaries cannot be reduced while they are in office.
Undeterred, House Speaker Mike Johnson this week suggested the administration could still use the power of its purse to keep courts in line, and even floated the idea of wholesale eliminating federal courts.
“We do have authority over the federal courts as you know,” Johnson said. “We can eliminate an entire district court. We have power of funding over the courts, and all these other things. But desperate times call for desperate measures, and Congress is going to act, so stay tuned for that.”
President Trump has taken a number of actions to discourage lawful demonstrations at universities and colleges across the country, threatening to cut federal funding for any college that supports protests he deems “illegal.”
A Trump executive order in January outlined a broad federal crackdown on what he called “the explosion of antisemitism” on U.S. college campuses. This administration has asserted that foreign students who are lawfully in the United States on visas do not enjoy the same free speech or due process rights as citizens.
Reuters reports that the acting civil rights director at the Department of Education on March 10 sent letters to 60 educational institutions warning they could lose federal funding if they don’t do more to combat anti-semitism. On March 20, Trump issued an order calling for the closure of the Education Department.
Meanwhile, U.S. Immigration and Customs Enforcement (ICE) agents have been detaining and trying to deport pro-Palestinian students who are legally in the United States. The administration is targeting students and academics who spoke out against Israel’s attacks on Gaza, or who were active in campus protests against U.S. support for the attacks. Secretary of State Marco Rubio told reporters Thursday that at least 300 foreign students have seen their visas revoked under President Trump, a far higher number than was previously known.
In his first term, Trump threatened to use the national guard or the U.S. military to deal with protesters, and in campaigning for re-election he promised to revisit the idea.
“I think the bigger problem is the enemy from within,” Trump told Fox News in October 2024. “We have some very bad people. We have some sick people, radical left lunatics. And I think they’re the big — and it should be very easily handled by, if necessary, by National Guard, or if really necessary, by the military, because they can’t let that happen.”
This term, Trump acted swiftly to remove the top judicial advocates in the armed forces who would almost certainly push back on any request by the president to use U.S. soldiers in an effort to quell public protests, or to arrest and detain immigrants. In late February, the president and Defense Secretary Pete Hegseth fired the top legal officers for the military services — those responsible for ensuring the Uniform Code of Military Justice is followed by commanders.
Military.com warns that the purge “sets an alarming precedent for a crucial job in the military, as President Donald Trump has mused about using the military in unorthodox and potentially illegal ways.” Hegseth told reporters the removals were necessary because he didn’t want them to pose any “roadblocks to orders that are given by a commander in chief.”
President Trump has sued a number of U.S. news outlets, including 60 Minutes, CNN, The Washington Post, The New York Times and other smaller media organizations for unflattering coverage.
In a $10 billion lawsuit against 60 Minutes and its parent Paramount, Trump claims they selectively edited an interview with former Vice President Kamala Harris prior to the 2024 election. The TV news show last month published transcripts of the interview at the heart of the dispute, but Paramount is reportedly considering a settlement to avoid potentially damaging its chances of winning the administration’s approval for a pending multibillion-dollar merger.
The president sued The Des Moines Register and its parent company, Gannett, for publishing a poll showing Trump trailing Harris in the 2024 presidential election in Iowa (a state that went for Trump). The POTUS also is suing the Pulitzer Prize board over 2018 awards given to The New York Times and The Washington Post for their coverage of purported Russian interference in the 2016 election.
Whether or not any of the president’s lawsuits against news organizations have merit or succeed is almost beside the point. The strategy behind suing the media is to make reporters and newsrooms think twice about criticizing or challenging the president and his administration. The president also knows some media outlets will find it more expedient to settle.
Trump also sued ABC News and George Stephanopoulos for stating that the president had been found liable for “rape” in a civil case [Trump was found liable of sexually abusing and defaming E. Jean Carroll]. ABC parent Disney settled that claim by agreeing to donate $15 million to the Trump Presidential Library.
Following the attack on the U.S. Capitol on Jan. 6, 2021, Facebook blocked President Trump’s account. Trump sued Meta, and after the president’s victory in 2024 Meta settled and agreed to pay Trump $25 million: $22 million would go to his presidential library, and the rest to legal fees. Meta CEO Mark Zuckerberg also announced Facebook and Instagram would get rid of fact-checkers and rely instead on reader-submitted “community notes” to debunk disinformation on the social media platform.
Brendan Carr, the president’s pick to run the Federal Communications Commission (FCC), has pledged to “dismantle the censorship cartel and restore free speech rights for everyday Americans.” But on January 22, 2025, the FCC reopened complaints against ABC, CBS and NBC over their coverage of the 2024 election. The previous FCC chair had dismissed the complaints as attacks on the First Amendment and an attempt to weaponize the agency for political purposes.
According to Reuters, the complaints call for an investigation into how ABC News moderated the pre-election TV debate between Trump and Biden, and appearances of then-Vice President Harris on 60 Minutes and on NBC’s “Saturday Night Live.”
Since then, the FCC has opened investigations into NPR and PBS, alleging that they are breaking sponsorship rules. The Center for Democracy & Technology (CDT), a think tank based in Washington, D.C., noted that the FCC is also investigating KCBS in San Francisco for reporting on the location of federal immigration authorities.
“Even if these investigations are ultimately closed without action, the mere fact of opening them – and the implicit threat to the news stations’ license to operate – can have the effect of deterring the press from news coverage that the Administration dislikes,” the CDT’s Kate Ruane observed.
Trump has repeatedly threatened to “open up” libel laws, with the goal of making it easier to sue media organizations for unfavorable coverage. But this week, the U.S. Supreme Court declined to hear a challenge brought by Trump donor and Las Vegas casino magnate Steve Wynn to overturn the landmark 1964 decision in New York Times v. Sullivan, which insulates the press from libel suits over good-faith criticism of public figures.
The president also has insisted on picking which reporters and news outlets should be allowed to cover White House events and participate in the press pool that trails the president. He barred the Associated Press from the White House and Air Force One over their refusal to call the Gulf of Mexico by another name.
And the Defense Department has ordered a number of top media outlets to vacate their spots at the Pentagon, including CNN, The Hill, The Washington Post, The New York Times, NBC News, Politico and National Public Radio.
“Incoming media outlets include the New York Post, Breitbart, the Washington Examiner, the Free Press, the Daily Caller, Newsmax, the Huffington Post and One America News Network, most of whom are seen as conservative or favoring Republican President Donald Trump,” Reuters reported.
Shortly after Trump took office again in January 2025, the administration began circulating lists of hundreds of words that government staff and agencies shall not use in their reports and communications.
The Brookings Institution notes that in moving to comply with this anti-speech directive, federal agencies have purged countless taxpayer-funded data sets from a swathe of government websites, including data on crime, sexual orientation, gender, education, climate, and global development.
The New York Times reports that in the past two months, hundreds of terabytes of digital resources analyzing data have been taken off government websites.
“While in many cases the underlying data still exists, the tools that make it possible for the public and researchers to use that data have been removed,” The Times wrote.
On Jan. 27, Trump issued a memo (PDF) that paused all federally funded programs pending a review of those programs for alignment with the administration’s priorities. Among those was ensuring that no funding goes toward advancing “Marxist equity, transgenderism, and green new deal social engineering policies.”
According to the CDT, this order is a blatant attempt to force government grantees to cease engaging in speech that the current administration dislikes, including speech about the benefits of diversity, climate change, and LGBTQ issues.
“The First Amendment does not permit the government to discriminate against grantees because it does not like some of the viewpoints they espouse,” the CDT’s Ruane wrote. “Indeed, those groups that are challenging the constitutionality of the order argued as much in their complaint, and have won an injunction blocking its implementation.”
On January 20, the same day Trump issued an executive order on free speech, the president also issued an executive order titled “Reevaluating and Realigning United States Foreign Aid,” which froze funding for programs run by the U.S. Agency for International Development (USAID). Among those were programs designed to empower civil society and human rights groups, journalists and others responding to digital repression and Internet shutdowns.
According to the Electronic Frontier Foundation (EFF), this includes many freedom technologies that use cryptography, fight censorship, protect freedom of speech, privacy and anonymity for millions of people around the world.
“While the State Department has issued some limited waivers, so far those waivers do not seem to cover the open source internet freedom technologies,” the EFF wrote about the USAID disruptions. “As a result, many of these projects have to stop or severely curtail their work, lay off talented workers, and stop or slow further development.”
On March 14, the president signed another executive order that effectively gutted the U.S. Agency for Global Media (USAGM), which oversees or funds media outlets including Radio Free Europe/Radio Liberty and Voice of America (VOA). The USAGM also oversees Radio Free Asia, which supporters say has been one of the most reliable tools used by the government to combat Chinese propaganda.
But this week, U.S. District Court Judge Royce Lamberth, a Reagan appointee, temporarily blocked USAGM’s closure by the administration.
“RFE/RL has, for decades, operated as one of the organizations that Congress has statutorily designated to carry out this policy,” Lamberth wrote in a 10-page opinion. “The leadership of USAGM cannot, with one sentence of reasoning offering virtually no explanation, force RFE/RL to shut down — even if the President has told them to do so.”
The Trump administration rescinded a decades-old policy that instructed officers not to take immigration enforcement actions in or near “sensitive” or “protected” places, such as churches, schools, and hospitals.
That directive was immediately challenged in a case brought by a group of Quakers, Baptists and Sikhs, who argued the policy reversal was keeping people from attending services for fear of being arrested on civil immigration violations. On Feb. 24, a federal judge agreed and blocked ICE agents from entering churches or targeting migrants nearby.
The president’s executive order allegedly addressing antisemitism came with a fact sheet that described college campuses as “infested” with “terrorists” and “jihadists.” Multiple faith groups expressed alarm over the order, saying it attempts to weaponize antisemitism and promote “dehumanizing anti-immigrant policies.”
The president also announced the creation of a “Task Force to Eradicate Anti-Christian Bias,” to be led by Attorney General Pam Bondi. Never mind that Christianity is easily the largest faith in America and that Christians are well-represented in Congress.
The Rev. Paul Brandeis Raushenbush, a Baptist minister and head of the progressive Interfaith Alliance, issued a statement accusing Trump of hypocrisy in claiming to champion religion by creating the task force.
“From allowing immigration raids in churches, to targeting faith-based charities, to suppressing religious diversity, the Trump Administration’s aggressive government overreach is infringing on religious freedom in a way we haven’t seen for generations,” Raushenbush said.
A statement from Americans United for Separation of Church and State said the task force could lead to religious persecution of those with other faiths.
“Rather than protecting religious beliefs, this task force will misuse religious freedom to justify bigotry, discrimination, and the subversion of our civil rights laws,” said Rachel Laser, the group’s president and CEO.
Where is President Trump going with all these blatant attacks on the First Amendment? The president has made no secret of his affection for autocratic leaders and “strongmen” around the world, and he is particularly enamored with Hungary’s far-right Prime Minister Viktor Orbán, who has visited Trump’s Mar-a-Lago resort twice in the past year.
A March 15 essay in The Atlantic by Hungarian investigative journalist András Pethő recounts how Orbán rose to power by consolidating control over the courts, and by building his own media universe while simultaneously placing a stranglehold on the independent press.
“As I watch from afar what’s happening to the free press in the United States during the first weeks of Trump’s second presidency — the verbal bullying, the legal harassment, the buckling by media owners in the face of threats — it all looks very familiar,” Pethő wrote. “The MAGA authorities have learned Orbán’s lessons well.”
Exceptional Circumstances [QC RSS]
Tai briefly dated a lot of people's roommates in college
The 32bit RISC OS needs to be ported to 64bit to survive, seeks help [OSnews]
RISC OS, the operating system from the United Kingdom originally designed to run on Acorn Computer’s Archimedes computers – the first ARM computers – is still actively developed today. Especially since the introduction of the Raspberry Pi, new life was breathed into this ageing operating system, and it has gained quite a bit of steady momentum ever since, with tons of small updates, applications, and new hardware support, including things like support for wireless networking. This development has always been a bit piecemeal, though, and the pace has never been exceptionally fast.
Now, though, time really is ticking for RISC OS: popular RISC OS platforms like the Raspberry Pi are moving to 64bit ARM only, and this poses a big problem for RISC OS: most of it is written in pure 32bit ARM assembly. As you can imagine, the supply of capable 32bit ARM boards is going to dwindle over the coming years, which would put RISC OS right back where it was before the launch of the Raspberry Pi: floundering, relying on old hardware. This is obviously not ideal, and as such, RISC OS Open Limited wants to take a big leap to address this.
Since 2011, ROOL has successfully delivered dozens of community-funded improvements through its bounty scheme. While this model has enabled steady progress, it is not suited to the scale of work now required to modernise RISC OS. The Moonshots initiative represents a fundamental shift: focused, multi-year development projects undertaken by full-time engineers.
The first Moonshot aims to make the RISC OS source code portable and compatible with 64-bit Arm platforms, a prerequisite for future hardware support. ROOL has already scoped the work, identified key milestones, and built cost models based on realistic employment and project management needs.
↫ Steve Revill in a ROOL press release
They’re going to need a dedicated team of several developers working over the course of several years to port RISC OS to 64bit ARM. That’s going to require quite a bit of money, manpower, and expertise, and considering ROOL has only collected about £100000 worth of donations over the past 14 years, I can see why they’re aiming to go big for this effort. All these giant technology corporations with trillion dollar stock valuations are currently relying on ARM technology, so you’d think they could empty a few socks and cough up a few million to get this effort funded properly, but alas, we all know that’s not going to happen.
I hope ROOL can make this work. RISC OS is a ton of fun to use, and occupies a unique place in computing history. I would be incredibly sad to see technological progress leave it behind, when what amount to chump change for so many wealthy companies and individuals could save it.
Microsoft makes it even harder to use a local account on Windows 11 [OSnews]
Do you want to install Windows 11 without internet access or without an online Microsoft Account? It seems Microsoft really doesn’t want you to, as it has removed a very common and popular way of bypassing this requirement. In the release notes for the latest builds from the Dev and Beta channels, the company notes:
We’re removing the bypassnro.cmd script from the build to enhance security and user experience of Windows 11. This change ensures that all users exit setup with internet connectivity and a Microsoft Account.
Let me blow your minds and state that I don’t think online accounts for an operating system are inherently a bad idea. I would love it if I could install Fedora KDE on a new machine, optionally log into some online “Fedora Account”, and have my customisations and applications synchronise automatically. It would save me some time and effort, and assuming it’s all properly encrypted and secured, I don’t think the risk factors are particularly high. The keyword here is, of course, optionally. Microsoft wants every Windows 11 user to have a Microsoft Account instead of a local account, and would rather not make it optional at all.
Of course, this is still Microsoft, a company wholly incapable of doing anything right when it comes to operating systems, so even making this script available again during installation is stupidly easy. It took a few nerds mere moments to discover you could just make some registry changes during installation, reboot, and have the script return to its rightful place.
Oh Microsoft. Never change.
Urgent: Town-hall meetings [Richard Stallman's Political Notes]
US citizens: phone your congresscritter and say, "Hold town-hall meetings with the public, in your district and maybe in other districts too."
When Democrats do this, it wins support. But when Republicans do this, it exposes what they really are.
If you phone, please spread the word! Main Switchboard: +1-202-224-3121
Urgent: Robert Reich on Social Security [Richard Stallman's Political Notes]
US citizens: phone your congresscritter and senators at (202) 224-3121 and call on them to save Social Security, by rehiring the staff that the DOSE(*) got rid of and reversing all other recent changes made by the bully and the muskrat.
* Depredations of Swinging Evisceration.
Israel broke cease-fire [Richard Stallman's Political Notes]
Israel broke the cease-fire with Lebanon by destroying a specific building by bombing. It gave warnings first, but that doesn't mean the attack was justified.
Why I don’t like AI art [Cory Doctorow's craphound.com]
This week on my podcast, I read Why I don’t like AI art, a column from last week’s Pluralistic newsletter:
Which brings me to art. As a working artist in his third decade of professional life, I’ve concluded that the point of art is to take a big, numinous, irreducible feeling that fills the artist’s mind, and attempt to infuse that feeling into some artistic vessel – a book, a painting, a song, a dance, a sculpture, etc – in the hopes that this work will cause a loose facsimile of that numinous, irreducible feeling to manifest in someone else’s mind.
Art, in other words, is an act of communication – and there you have the problem with AI art. As a writer, when I write a novel, I make tens – if not hundreds – of thousands of tiny decisions that are in service to this business of causing my big, irreducible, numinous feeling to materialize in your mind. Most of those decisions aren’t even conscious, but they are definitely decisions, and I don’t make them solely on the basis of probabilistic autocomplete. One of my novels may be good and it may be bad, but one thing is definitely is is rich in communicative intent. Every one of those microdecisions is an expression of artistic intent.
Steinar H. Gunderson: It's always the best ones that die first [Planet Debian]
Berge Schwebs Bjørlo, aged 40, died on March 4th in an avalanche together with his friend Ulf, while on winter holiday.
When writing about someone who recently died, it is common to make lists. Lists of education, of where they worked, on projects they did.
But Berge wasn't common. Berge was an outlier. A paradox, even.
Berge was one of my closest friends; someone who always listened, someone you could always argue with (“I'm a pacifist, but I'm aware that this is an extreme position”) but could rarely be angry at. But if you ask around, you'll see many who say similar things; how could someone be so close to so many at the same time?
Berge had running jokes going on 20 years or more. Many of them would be related to his background from Bergen; he'd often talk about “the un-central east” (aka Oslo), yet had to admit at some point that actually started liking the city. Or about his innate positivity (“I'm in on everything but suicide and marriage!”). I know a lot of people have described his humor as dry, but I found him anything but. Just a free flow of living.
He lived his life in free software, but rarely in actually writing code; I don't think I've seen a patch from him, and only the occasional bug report. Instead, he would spend his time guiding others; he spent a lot of time in PostgreSQL circles, helping people with installation or writing queries or chiding them for using an ORM (“I don't understand why people love to make life so hard for themselves”) or just discussing life, love and everything. Somehow, some people's legacy is just the number of others they touched, and Berge touched everyone he met. Kindness is not something we do well in the free software community, but somehow, it came natural to him. I didn't understand until after he died why he was so chronically bad at reading backlog and hard to get hold of; he was interacting with so many people, always in the present and never caring much about the past.
I remember that Berge once visited my parents' house, and was greeted by our dog, who after a pat promptly went back to relaxing lazily on the floor. “Awh! If I were a dog, that's the kind of dog I'd be.” In retrospect, for someone who lived a lot of his life in 300 km/h (at times quite literally), it was an odd thing to say, but it was just one of those paradoxes.
Berge loved music. He'd argue for intensely political punk, but would really consume everything with great enthuisasm and interest. One of the last albums I know he listened to was Thomas Dybdahl's “… that great October sound”:
Tear us in different ways but leave a thread
throughout the maze
In case I need to find my way back home
All these decisions make for people living without faith
Fumbling in the dark nowhere to roam
Dreamweaver
I'll be needing you tomorrow and for days to come
Cause I'm no daydreamer
But I'll need a place to go if memory fails me & let you slip
away
Berge wasn't found by a lazy dog. He was found by Shane, a very good dog.
Somehow, I think he would have approved of that, too.
Dirk Eddelbuettel: RcppSpdlog 0.0.21 on CRAN: New Upstream [Planet Debian]
Version 0.0.21 of RcppSpdlog arrived on CRAN today and has been uploaded to Debian. RcppSpdlog bundles spdlog, a wonderful header-only C++ logging library with all the bells and whistles you would want that was written by Gabi Melman, and also includes fmt by Victor Zverovich. You can learn more at the nice package documention site.
This release updates the code to the version 1.15.2 of spdlog which was released this weekend as well.
The NEWS entry for this release follows.
Changes in RcppSpdlog version 0.0.21 (2025-03-30)
- Upgraded to upstream release spdlog 1.15.2 (including fmt 11.1.4)
Courtesy of my CRANberries, there is also a diffstat report. More detailed information is on the RcppSpdlog page, or the package documention site.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
A new Bluesky news feed, Radio Free
America. It will also be on a web page as a river of news, and
of course in
dynamic OPML so it can be reproduced in lots of places. It will
be hard to shut down, if it catches on. The idea: deliver news
stories, blog posts and podcasts from sources with ideas and facts
an informed person would want. We hope we are helping the United
States respond to threats to our freedom, well-being, the rule of
law, and our country's friendships around the world. As the depth
of what's happening is understood across the country, I believe we
may need more flexible sources of news. We use mature tech that's
widely deployed, well-understood. And it is completely and utterly
one hundred percent billionaire-proof. We start out today with two
feeds,
FactPost which is the official rapid response page of the
Democratic Party, and my
linkblog feed, so I can easily test the system. The part that
hooks up to Bluesky is relatively new, so we'll need to look at
problems. As they say -- still diggin!
Blue95: Fedora Atomic Xfce converted to a Windows 95 desktop [OSnews]
Blue95 is a modern and lightweight desktop experience that is reminiscent of a bygone era of computing. Based on Fedora Atomic Xfce with the Chicago95 theme.
↫ Blue95 GitHub page
Exactly as it says on the tin. This is by far the easiest way to get the excellent Chigaco95 theme for Xfce set up and working in a polished way, and it also contains a few different application choices from the regular Fedora Xfce desktop to improve the illusion even further.
Microsoft releases Windows 11 roadmap tool to help make sense of Windows 11’s development [OSnews]
I’ve complained about the utter inscrutability of the Windows release process for a long time, with Microsoft seemingly using channels, build numbers, code names, date-based version numbers, and so on interchangeably, making it incredibly hard to keep track of what is being released when. It turns out even Microsoft itself started losing track, because it’s now released a roadmap for Windows 11 development.
In the roadmap tool – of course it’s a tool – you can select a platform, which isn’t x86 or ARM, but Windows PC or Copilot+ PC, a version (23H2 or 24H2 for now), a status (In preview, Gradually rolling out, or Generally available), and a channel (Canary, Dev, Beta, or Retail), after which the roadmap tool will list whatever features match those criteria. Do you now see why people might want such a tool to keep track of what the hell is going on with Windows?
Anyway, as the date-based version numbers – 23H2 and 24H2 – may already make clear, this seems more like a roadmap about where development’s been than where development’s going. The problem for Microsoft, of course, is that it maintains several different Windows variants with different feature sets and update schedules, and users, too, can of course opt to stick to certain versions before moving on. The end result is this spaghetti, which makes it hard to untangle when you’re getting which feature.
Anyway, if you’re elbow-deep in the Windows spaghetti, this tool may be of use to you.
Freexian Collaborators: Monthly report about Debian Long Term Support, February 2025 (by Roberto C. Sánchez) [Planet Debian]
Like each month, have a look at the work funded by Freexian’s Debian LTS offering.
In February, 18 contributors have been paid to work on Debian LTS, their reports are available:
In February, we have released 38 DLAs.
LTS contributors Emilio Pozuelo Monfort and Santiago Ruano Rincón coordinated the administrative aspects of LTS updates of postgresql-13 and pam-u2f, which were prepared by the respective maintainers, to whom we are most grateful.
As has become the custom of the LTS team, work is under way on a number of package updates targeting Debian 12 (codename “bookworm”) with fixes for a variety of vulnerabilities. In February, Guilhem Moulin prepared an upload of sssd, while several other updates are still in progress. Bastien Roucariès prepared an upload of krb5 for unstable as well.
Given the importance of the Debian Security Tracker to the work of the LTS Team, we regularly contribute improvements to it. LTS contributor Emilio Pozuelo Monfort reviewed and merged a change to improve performance, and then dealt with unexpected issues that arose as a result. He also made improvements in the processing of CVEs which are not applicable to Debian.
Looking to the future (the release of Debian 13, codename “trixie”, and beyond), LTS contributor Santiago Ruano Rincón has initiated a conversation among the broader community involved in the development of Debian. The purpose of the discussion is to explore ways to improve the long term supportability of packages in Debian, specifically by focusing effort on ensuring that each Debian release contains the “best” supported upstream version of packages with a history of security issues.
Sponsors that joined recently are in bold.
(satire) Texans To Show ID [Richard Stallman's Political Notes]
(satire) *New Law Requires Texans To Show ID To Buy Phallic Foods.*
Hegseth war plan leaks [Richard Stallman's Political Notes]
*🤯Hegseth should go to jail for war plan leaks, according to Hegseth.*
Open letter Columbia University [Richard Stallman's Political Notes]
*Open letter: we call on Columbia to stand up to authoritarianism.*
Russia ukraine ceasefire deal [Richard Stallman's Political Notes]
*Ukraine ceasefire deal looks like a Russian wishlist tied with a US bow.*
(satire) Big Bird At Starbucks [Richard Stallman's Political Notes]
(satire) *Big Bird Seen Working At Local Starbucks After PBS Funding Cuts.*
Greenland takeover [Richard Stallman's Political Notes]
Putin has enthusiastically supported the US intention to seize Greenland, probably expecting the corrupter to support his intention to seize Ukraine.
Palestinian director [Richard Stallman's Political Notes]
*Oscar-winning Palestinian director released from Israeli detention.*
The "Academy" that gives these awards has persistently refused to comment on the attack.
This attack by extremist bullies and the arrest by the Israeli state are not unusual in the West Bank. They happen to plenty of Palestinians. They are just as vicious when they are done to people who have not won awards. However, the fact of the award has one significant implication: it shows that the attackers have completely quashed their consciences.
Protests held in Turkey [Richard Stallman's Political Notes]
8 more Turkish journalists have been jailed for covering nationwide protests against Erdoğan.
(satire) Elon Musk Amazed [Richard Stallman's Political Notes]
(satire) *Elon Musk Amazed At How Much Cheaper Bribing Voters Is In Midwest.*
The US is being run like a TV show, with predictable results.
Dirk Eddelbuettel: RcppZiggurat 0.1.8 on CRAN: Build Refinements [Planet Debian]
A new release 0.1.8 of RcppZiggurat is now on the CRAN network for R, following up on the 0.1.7 release last week which was the first release in four and a half years.
The RcppZiggurat package updates the code for the Ziggurat generator by Marsaglia and others which provides very fast draws from a Normal (or Exponential) distribution. The package provides a simple C++ wrapper class for the generator improving on the very basic macros, and permits comparison among several existing Ziggurat implementations. This can be seen in the figure where Ziggurat from this package dominates accessing the implementations from the GSL, QuantLib and Gretl—all of which are still way faster than the default Normal generator in R (which is of course of higher code complexity).
This release switches the vignette to the standard trick of
premaking it as a pdf and including it in a short Sweave document
that imports it via pdfpages
; this minimizes
build-time dependencies on other TeXLive components. It also
incorporates a change contributed by Tomas to rely on the system
build of the GSL on Windows as well if Rtools 42 or later is found.
No other changes.
The NEWS
file entry below lists all changes.
Changes in version 0.1.8 (2025-03-30)
The vignette is now premade and rendered as Rnw via pdfpage to minimize the need for TeXLive package at build / install time (Dirk)
Windows builds now use the GNU GSL when Rtools is 42 or later (Tomas Kalibera in #25)
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the Rcppziggurat page or the GitHub repository.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Feed | RSS | Last fetched | Next fetched after |
---|---|---|---|
@ASmartBear | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
a bag of four grapes | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Ansible | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
Bad Science | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Black Doggerel | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Blog - Official site of Stephen Fry | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Charlie Brooker | The Guardian | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Charlie's Diary | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Chasing the Sunset - Comics Only | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Coding Horror | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
Cory Doctorow's craphound.com | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Cory Doctorow, Author at Boing Boing | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Ctrl+Alt+Del Comic | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Cyberunions | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
David Mitchell | The Guardian | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Deeplinks | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
Diesel Sweeties webcomic by rstevens | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Dilbert | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Dork Tower | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Economics from the Top Down | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Edmund Finney's Quest to Find the Meaning of Life | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
EFF Action Center | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Enspiral Tales - Medium | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Events | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Falkvinge on Liberty | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Flipside | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Flipside | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Free software jobs | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
Full Frontal Nerdity by Aaron Williams | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
General Protection Fault: Comic Updates | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
George Monbiot | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Girl Genius | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Groklaw | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Grrl Power | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Hackney Anarchist Group | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Hackney Solidarity Network | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
http://blog.llvm.org/feeds/posts/default | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
http://eng.anarchoblogs.org/feed/atom/ | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
http://feed43.com/3874015735218037.xml | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
http://fulltextrssfeed.com/ | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
http://london.indymedia.org/articles.rss | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
http://planet.gridpp.ac.uk/atom.xml | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
http://shirky.com/weblog/feed/atom/ | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
http://thecommune.co.uk/feed/ | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
http://theness.com/roguesgallery/feed/ | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
http://www.baen.com/baenebooks | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
http://www.feedsapi.com/makefulltextfeed.php?url=http%3A%2F%2Fwww.somethingpositive.net%2Fsp.xml&what=auto&key=&max=7&links=preserve&exc=&privacy=I+accept | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
http://www.godhatesastronauts.com/feed/ | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
http://www.tinycat.co.uk/feed/ | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
https://broodhollow.krisstraub.comfeed/ | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
https://debian-administration.org/atom.xml | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
https://feeds.feedburner.com/Starslip | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
https://hackbloc.org/rss.xml | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
https://kajafoglio.livejournal.com/data/atom/ | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
https://philfoglio.livejournal.com/data/atom/ | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
https://propertyistheft.wordpress.com/feed/ | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
https://requiem.seraph-inn.com/updates.rss | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
https://studiofoglio.livejournal.com/data/atom/ | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
https://thecommandline.net/feed/ | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
https://torrentfreak.com/subscriptions/ | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
https://twitter.com/statuses/user_timeline/22724360.rss | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
https://web.randi.org/?format=feed&type=rss | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
https://www.dcscience.net/feed/medium.co | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
https://www.freedompress.org.uk:443/news/feed/ | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
https://www.goblinscomic.com/category/comics/feed/ | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
https://www.loomio.com/blog/feed/ | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
https://www.marinadelreyny.com/ | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
https://www.rightmove.co.uk/rss/property-for-sale/find.html?locationIdentifier=REGION^876&maxPrice=240000&minBedrooms=2&displayPropertyType=houses&oldDisplayPropertyType=houses&primaryDisplayPropertyType=houses&oldPrimaryDisplayPropertyType=houses&numberOfPropertiesPerPage=24 | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Humble Bundle Blog | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
I, Cringely | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Irregular Webcomic! | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Joel on Software | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
Judith Proctor's Journal | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
Krebs on Security | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Lambda the Ultimate - Programming Languages Weblog | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
Looking For Group | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
LWN.net | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Mimi and Eunice | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Neil Gaiman's Journal | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
Nina Paley | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
O Abnormal – Scifi/Fantasy Artist | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Oglaf! -- Comics. Often dirty. | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Oh Joy Sex Toy | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
Order of the Stick | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
Original Fiction Archives - Reactor | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
OSnews | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Paul Graham: Unofficial RSS Feed | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Penny Arcade | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Penny Red | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
PHD Comics | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Phil's blog | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
Planet Debian | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Planet GNU | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Planet Lisp | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Pluralistic: Daily links from Cory Doctorow | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
PS238 by Aaron Williams | XML | 03:07, Thursday, 03 April | 03:55, Thursday, 03 April |
QC RSS | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
Radar | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
RevK®'s ramblings | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
Richard Stallman's Political Notes | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Scenes From A Multiverse | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
Schneier on Security | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
SCHNEWS.ORG.UK | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
Scripting News | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Seth's Blog | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
Skin Horse | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Spinnerette | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
Tales From the Riverbank | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
The Adventures of Dr. McNinja | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
The Bumpycat sat on the mat | XML | 03:07, Thursday, 03 April | 03:47, Thursday, 03 April |
The Daily WTF | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
The Monochrome Mob | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
The Non-Adventures of Wonderella | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
The Old New Thing | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
The Open Source Grid Engine Blog | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
The Stranger | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
towerhamletsalarm | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
Twokinds | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
UK Indymedia Features | XML | 03:00, Thursday, 03 April | 03:42, Thursday, 03 April |
Uploads from ne11y | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
Uploads from piasladic | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |
Use Sword on Monster | XML | 03:07, Thursday, 03 April | 03:54, Thursday, 03 April |
Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 02:28, Thursday, 03 April | 03:14, Thursday, 03 April |
what if? | XML | 03:07, Thursday, 03 April | 03:48, Thursday, 03 April |
Whatever | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
Whitechapel Anarchist Group | XML | 02:21, Thursday, 03 April | 03:10, Thursday, 03 April |
WIL WHEATON dot NET | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
wish | XML | 02:42, Thursday, 03 April | 03:27, Thursday, 03 April |
Writing the Bright Fantastic | XML | 02:42, Thursday, 03 April | 03:26, Thursday, 03 April |
xkcd.com | XML | 02:42, Thursday, 03 April | 03:25, Thursday, 03 April |