10 interesting stories served every morning and every evening.

Trump administration to pay German firm to halt US wind projects

www.bbc.com

20 hours ago

Rorey Bosotti

Getty Images

German en­ergy com­pany RWE has said it will aban­don its off­shore wind pro­jects in the US af­ter reach­ing a $1.2bn (£892m) pay­out deal with President Donald Trump’s Department of the Interior (DoI).

RWE said that it will now rein­vest the sum into con­ven­tional gas pro­jects, in­clud­ing $900m (£669m) in a liq­ue­fied nat­ural gas (LNG) ex­port ter­mi­nal pro­ject in Louisiana.

After care­ful con­sid­er­a­tion, it was de­ter­mined there is no path for­ward to per­mit these pro­jects in the US for the fore­see­able fu­ture,” the com­pany said in a state­ment.

Trump has de­rided wind power for years and of­ten uses his rally speeches to rail against ugly” tur­bines.

RWE said it has agreed to re­lin­quish its leases off the California and Louisiana coasts as well as in the New York Bight.

Overall, the German firm plans to in­vest ap­prox­i­mately €17bn (£14.5bn; $19.6bn) in the US over the next six years to grow its gen­er­a­tion ca­pac­ity”.

Interior Secretary Doug Burgum said in a state­ment posted on X that Americans de­serve an en­ergy sys­tem built on com­mon sense and not one de­pen­dent on costly sub­si­dies”.

We wel­come RWEs agree­ment and vol­un­tary in­vest­ment in pro­jects that strengthen our na­tion’s en­ergy se­cu­rity,” he added.

The deal is the lat­est the Trump ad­min­is­tra­tion has reached this year as Trump, a vo­cal sup­porter of the fos­sil fuel in­dus­try, con­tin­ues his push to halt off­shore wind pro­jects.

Days af­ter his re­turn to of­fice, he said we’re not go­ing to do the wind thing” and called them big, ugly wind­mills” that were dan­ger­ous to wildlife.

And this week, he said that any coun­try with wind­mills is a loser”.

In March 2026, the DoI reached a deal with TotalEnergies putting an end to the French com­pa­ny’s off­shore wind pro­jects in the US.

Instead, the firm agreed to reroute in­vest­ment to build a LNG plant in Texas and to de­velop upstream con­ven­tional oil” in the Gulf of Mexico.

The ad­min­is­tra­tion signed a sim­i­lar $129m (£96m) agree­ment with Charlotte-based Duke Energy last month in ex­change for the ter­mi­na­tion of the com­pa­ny’s off­shore wind lease in the Carolina Long Bay area.

Why Is Everyone In Tech So Sad?

www.noemamag.com

Credits

Aaron Horwath is the di­rec­tor of AI op­er­a­tions at a cre­ative tech­nol­ogy com­pany where he is fo­cused on im­ple­ment­ing AI in a way that sup­ports both hu­mans and busi­ness.

On a re­cent morn­ing com­mute, I sat on a train in one of those awk­ward four-per­son con­fig­u­ra­tions with a shared table. Across from me sat a typ­i­cal com­muter: early 30s, slacks, dress shirt, dirty white sneak­ers, hair a lit­tle di­sheveled, AirPods in, bask­ing in the glow of an open MacBook.

For over half an hour, I lis­tened to this young man as he was on a call ex­plain­ing, in painfully mo­not­one de­tail, EBITDAs, mar­gin ex­pan­sion op­por­tu­ni­ties, cost struc­tures, ARR, etc. On and on he went un­til the screech­ing of the train’s brakes sig­naled our ar­rival at the fi­nal sta­tion. But as every­one else around us be­gan shuf­fling to dis­em­bark, I watched the man be­gin dig­ging fran­ti­cally through a leather bag at his side. Intriguing! I won­dered what he’d pull out. A copy of Atomic Habits”? A framed por­trait of Gary V? A Mac mini run­ning OpenClaw?

None of the above. Instead, he took out two long knit­ting nee­dles. Between them dan­gled a mound of pink yarn. He ex­plained to me that he was mak­ing a win­ter hat for a niece. And for the first time that morn­ing, I no­ticed a glint of pride and ex­cite­ment in his eyes.

The hat was a pro­ject born from a de­sire, as he put it, to do some­thing.

Among my Knowledge Worker peers, I am hear­ing this more and more of­ten: peo­ple who want to pick up pot­tery, paint­ing, cro­chet or other old-timey ana­log hob­bies. In cof­fee shops and in the low-lit cor­ners of bars, pro­fes­sion­als are shar­ing dreams of disappearing” or living on a farm some­where” or going off the grid.” These aren’t fan­tas­ti­cal day­dreams; they are vi­sions of es­cape shared in a tone that be­trays an un­der­ly­ing ex­is­ten­tial angst, a fun­da­men­tal doubt about work and ca­reerism in­spired by a seem­ingly in­creas­ingly com­mon ex­pe­ri­ence: wak­ing up one morn­ing at an ex­is­ten­tial precipice, struck with a sud­den sense that knowl­edge work is, and per­haps al­ways has been, point­less. Perhaps you too have felt such a feel­ing, a ris­ing tide of over­whelm­ing, in­de­scrib­able melan­choly, slowly threat­en­ing to en­velop you in your Ikea of­fice chair.

Among my Knowledge Worker peers, I am hear­ing this more and more of­ten: peo­ple who want to pick up pot­tery, paint­ing, cro­chet or other old-timey ana­log hob­bies.”

Among my Knowledge Worker peers, I am hear­ing this more and more of­ten: peo­ple who want to pick up pot­tery, paint­ing, cro­chet or other old-timey ana­log hob­bies.”

This dis­il­lu­sion­ment is in­fec­tious. One per­son speaks of it and oth­ers be­gin nod­ding: They too have felt it, the drop in mo­ti­va­tion, the sense of be­ing dis­tant from their work, the lack of sleep, the con­cerns about the fu­ture. These con­ver­sa­tions in­evitably turn to fun­da­men­tal ques­tions about ca­reers: What the fuck are we ac­tu­ally do­ing? What the fuck is the point of all of this?

We are, it’s true, liv­ing through a time of dis­rup­tion. But what seems to dif­fer­en­ti­ate this pe­riod from those of the past is the na­ture of the angst it­self. Yes, AI is threat­en­ing jobs and dis­rupt­ing in­dus­tries. But Knowledge Workers have faced re­ces­sions, out­sourc­ing, new tech­nol­ogy and au­toma­tions of many kinds be­fore. Recent grad­u­ates al­ways worry about break­ing into the job mar­ket. Millennial pro­fes­sion­als have nav­i­gated eco­nomic un­cer­tainty their en­tire ca­reers. What’s dif­fer­ent about this mo­ment is that the ques­tions are not just eco­nomic but ex­is­ten­tial, the kind of ques­tions that cause high-earn­ing tech­ni­cal pro­fes­sion­als to con­tem­plate throw­ing it all away to start a goat farm in Washington or be­come a surf in­struc­tor in Costa Rica.

It strikes me as sig­nif­i­cant that the peo­ple who are usu­ally the most in­su­lated from eco­nomic up­heaval, and seem to be well-po­si­tioned to ride out AIs near-term im­pacts — highly paid ex­ec­u­tives and se­nior pro­fes­sion­als with decades of in­sti­tu­tional knowl­edge — are also un­cer­tain about the fu­ture of their ca­reers amid the rapid change nearly every in­dus­try is un­der­go­ing.

Some will say: good, fuck em. In the 2010s, Knowledge Workers told every­one to learn to code while they sipped kom­bucha and played Xbox in bean­bag chairs. Then, Knowledge Workers sat in­side dur­ing the pan­demic while front­line work­ers risked their health to make Amazon and Uber Eats de­liv­er­ies. Now, those same Knowledge Workers are build­ing AI that threat­ens to elim­i­nate work for hu­mans across in­dus­tries and make a very few peo­ple wealthy be­yond imag­i­na­tion. And these same ass­holes want pity now?

To that I say: fair enough. But this sweep­ing dis­en­chant­ment begs a fas­ci­nat­ing (or ter­ri­fy­ing or sad) set of ques­tions: What is this angst plagu­ing Knowledge Workers? And what hap­pens to a so­ci­ety and its in­dus­tries if an en­tire class of work­ers loses faith in their ca­reers overnight?

Workism: Praise Thee

In 2019, Derek Thompson wrote in The Atlantic about American Workism” where he de­scribed a trend among Knowledge Workers, par­tic­u­larly in the U.S., of in­creas­ingly seek­ing ful­fill­ment, com­mu­nity and a sense of mean­ing from work that pre­vi­ous gen­er­a­tions had gar­nered from re­li­gion. As Thompson wrote, Workism is emotional — even spir­i­tual. The best-ed­u­cated and high­est-earn­ing Americans, who can have what­ever they want, have cho­sen the of­fice for the same rea­son that de­vout Christians at­tend church on Sundays: It’s where they feel most them­selves.”

People have long held ca­reers from which they’ve de­rived a deep sense of mean­ing. Traditionally, we’ve re­ferred to those ca­reers as vo­ca­tions: a call­ing, a way of life. More than a job: a pur­pose.

A vo­ca­tion em­pha­sizes skills, val­ues and the de­sire to con­tribute some­thing ben­e­fi­cial. Vocations have tra­di­tion­ally re­ferred to ca­reers that are chal­leng­ing, so­cially im­pact­ful, of­ten re­ward­ing in ways other than fi­nan­cial. These are your teach­ers, nurses, fire­fight­ers, so­cial work­ers, para­medics or even ser­vice providers with di­rect con­nec­tions to the com­mu­ni­ties and cus­tomers they serve, like me­chan­ics, plumbers or elec­tri­cians. Even on bad days, deep down, most of these folks find their work re­ward­ing in im­por­tant and in­tan­gi­ble ways.

But those aren’t the ca­reers young peo­ple have ded­i­cated their lives to. Instead, grad­u­ates are over­whelm­ingly tak­ing jobs in fi­nance, con­sult­ing or tech­nol­ogy. There’s no doubt that get­ting these jobs is com­pet­i­tive, and that they are de­mand­ing, com­plex and re­quire nav­i­gat­ing lay­ers of pol­i­tics and bu­reau­cracy, a ton of ass-kiss­ing, long work hours, heavy cog­ni­tive work­loads, ad­vanced skillsets and the emo­tional bur­den of a near-con­stant threat of lay­offs. But so much of the work lacks any al­tru­is­tic up­side.

Perhaps you too have felt such a feel­ing, a ris­ing tide of over­whelm­ing, in­de­scrib­able melan­choly, slowly threat­en­ing to en­velop you in your Ikea of­fice chair.”

Perhaps you too have felt such a feel­ing, a ris­ing tide of over­whelm­ing, in­de­scrib­able melan­choly, slowly threat­en­ing to en­velop you in your Ikea of­fice chair.”

In Bullshit Jobs,” David Graeber cat­a­loged peo­ple who ad­mit­ted their jobs serve no mean­ing­ful func­tion. Slide decks built for pro­jects that will never launch. Heated de­bates over the minute de­tails of soft­ware fea­tures no­body asked for. Agonizing over ad­min­is­tra­tive processes to help money move from one rich per­son to an­other. Optimizing every word of an ad no one will no­tice for a ser­vice no one needs. Resting and vest­ing — when en­gi­neers and other highly paid work­ers get to sit around and wait for their stock to vest — and pro­mo­tion-dri­ven de­vel­op­ment, where de­vel­op­ers ig­nore what’s good in fa­vor of what ap­pears to be good when they’re up for a pro­mo­tion.

The al­tru­ism in these ca­reers, then, is hard to find. So how does any­one do it with­out los­ing their mind?

That’s the true beauty of Workism: It is man­u­fac­tured to dis­tract peo­ple from the hole in their souls that a vo­ca­tion would oth­er­wise fill. It is the opi­ate of com­muters in quar­ter zips. And it works. It keeps tal­ented peo­ple show­ing up at the of­fice to ar­gue over re­ports and strat­egy doc­u­ments and re­brand­ings with the se­ri­ous­ness of pe­di­atric heart surgery.

But Workism has a weak­ness. Like re­li­gion, it re­lies on faith’s tri­umph over logic. What would hap­pen, then, if some­thing threat­ened that faith? A par­a­digm shift that broke the spell of Workism? A sort of en­light­en­ment that caused Knowledge Workers to start ask­ing tough ques­tions of their or­ga­ni­za­tions and them­selves. And what would hap­pen if Knowledge Workers awoke from the spell of Workism with no fi­nan­cially vi­able al­ter­na­tive?

Well, it seems AI might of­fer us the plea­sure of find­ing out.

Popping The Workism Bubble

Knowledge work has al­ways been in­her­ently ab­stract. Plenty of these jobs, par­tic­u­larly at larger or­ga­ni­za­tions, are struc­tured like Russian nest­ing dolls: roles de­signed to sup­port other roles, which sup­port still other roles, layer af­ter layer, un­til it’s no longer clear where there’s a solid cen­ter to be found. It’s easy to see how, to a plumber, a car­pen­ter or a line cook, work of this na­ture can ap­pear like ex­actly what David Graeber called it: bull­shit.

Knowledge work’s one sav­ing grace, un­til re­cently, was that it was still ex­e­cuted by hu­mans. We were needed. It was flesh-and-blood hu­mans who sat down to work through a chal­lenge, built the slide deck, wrote the cus­tomer re­sponse and de­vel­oped the strat­egy. Even if it was ex­is­ten­tially mean­ing­less, there was hu­man thought, col­lab­o­ra­tive work and cre­ativ­ity poured into that work, giv­ing it life.

Now, AI agents are in­creas­ingly ex­e­cut­ing much of that work for Knowledge Workers. It is com­mon for peo­ple re­spon­si­ble for in­te­grat­ing these tools into their or­ga­ni­za­tions, my­self in­cluded, to de­scribe the fu­ture of work as one in which all hu­mans will es­sen­tially be man­agers of armies of AI agents. That seems pretty great. Let the soft­ware com­pile the re­ports, chase down the data, for­mat the deck, draft the first pass of doc­u­men­ta­tion and han­dle the dozens of small, repet­i­tive tasks that used to qui­etly eat an af­ter­noon. But in many cases, em­ploy­ees un­der pres­sure from lead­ers to pro­duce more are us­ing AI agents for far more than grunt work: for­mu­lat­ing com­plete busi­ness strate­gies, gen­er­at­ing full mar­ket­ing cam­paigns, build­ing en­tire web­sites, draft­ing strat­egy for whole di­vi­sions of an or­ga­ni­za­tion. From a sin­gle email to an en­tire cor­po­rate strat­egy, the out­puts of in­di­vid­u­als, teams and or­ga­ni­za­tions are in­creas­ingly gen­er­ated in an in­stant by AI.

But does this power — this ad­di­tional level of ab­strac­tion — take peo­ple too far, in some sense, from their work? Does some­thing feel … off … about hav­ing some­one, or some­thing, else ex­e­cute nearly all the work, even if the end prod­uct did­n’t feel very mean­ing­ful to be­gin with?

Debord’s Spectacle: I Don’t Wanna Do This Anymore

In so­ci­eties where mod­ern con­di­tions of pro­duc­tion pre­vail, life is pre­sented as an im­mense ac­cu­mu­la­tion of spec­ta­cles. Everything that was di­rectly lived has re­ceded into a rep­re­sen­ta­tion.”

That’s the open­ing para­graph of Guy Debord’s The Society of the Spectacle.” I will fail to sum­ma­rize the book ad­e­quately. It is si­mul­ta­ne­ously ex­cit­ing and im­pen­e­tra­ble. But the main thrust of Debord’s ar­gu­ment is this: Spectacle is a fea­ture of late cap­i­tal­ism in which life, rather than be­ing di­rectly lived, is per­pet­u­ally me­di­ated. There is al­ways some­thing be­tween us and the thing we are sup­posed to be ex­pe­ri­enc­ing. I don’t talk to my mom; I text her. I don’t travel; I watch other peo­ple travel on YouTube. I don’t have sex; I watch porn. In late cap­i­tal­ism, the medium re­places the ex­pe­ri­ence.

Workism is a mi­cro­cosm of the larger spec­ta­cle: a world where ap­pear­ing busy, im­por­tant and uniquely knowl­edge­able is as valu­able as ac­tu­ally be­ing any of those things, and where work needs only to ap­pear im­pact­ful rather than ac­tu­ally be im­pact­ful. As Debord writes in Thesis 12: The spec­ta­cle pre­sents it­self as a vast, in­ac­ces­si­ble re­al­ity that can never be ques­tioned. Its sole mes­sage is: What ap­pears is good; what is good ap­pears.’” This is Workism’s most con­vinc­ing ar­gu­ment: The work must be im­por­tant be­cause, well, we’re all here, aren’t we? Signing in. Staying late. Every week.

The ques­tions to­day are not just eco­nomic but ex­is­ten­tial.”

The ques­tions to­day are not just eco­nomic but ex­is­ten­tial.”

Adding AI to the spec­ta­cle feels ex­is­ten­tially daunt­ing be­cause it moves us even fur­ther from the work we do, and its value. I don’t build the pitch that wins the client; I write the query that tells the AI to write it, and then I check the work af­ter­ward. I don’t gather the ma­te­ri­als and write the in­dus­try newslet­ter; my agent does it. Before, that work might’ve felt cheap and un­sat­is­fy­ing, deep down, but it was still ours. Now AI is be­ing forced on or­ga­ni­za­tions in ways that call the value of the en­tire en­ter­prise of Workism it­self into ques­tion.

And this is where things get par­tic­u­larly in­ter­est­ing. I don’t think Debord imag­ined some­thing so seis­mi­cally par­a­digm-shift­ing that it could ab­stract work to an ex­tent that it would shake the work­ing class, or, in the case of Knowledge Workers, enough to rup­ture a spec­ta­cle like Workism. But with the in­tro­duc­tion of AI, it is as if, over the past 30 years, we have been slowly tak­ing steps away from the di­rect ex­pe­ri­ence of life and work, and AI risks push­ing us far enough that the il­lu­sion be­comes en­tirely vis­i­ble.

Organizations find them­selves in a pickle. They want to in­te­grate AI into their op­er­a­tions, as do their share­hold­ers. And they will. In the short term, the po­ten­tial ef­fi­ciency gains are too good to pass up. And, done right, it can of­fer ben­e­fits to both busi­nesses and em­ploy­ees. But what makes many ex­ec­u­tives most ex­cited about AI — less col­lab­o­ra­tion, fewer peo­ple — risks dis­man­tling the struc­tures that hold the very or­ga­ni­za­tions they lead to­gether.

What if the en­light­en­ment from Workism, iron­i­cally, is de­liv­ered by Workism’s most rev­o­lu­tion­ary prod­uct? And what does that mean for the em­ploy­ees who have spent their ca­reers pray­ing at the Workism al­tar?

What’s At Stake: The Value Of The Messy Middle

To un­der­stand why AI threat­ens to kill Workism specif­i­cally, we have to un­der­stand what has kept faith in Workism alive.

In Thompson’s ar­ti­cle, he states that one thing peo­ple look for in Knowledge Work jobs is com­mu­nity: to spend time with like-minded peo­ple with sim­i­lar in­ter­ests, to col­lab­o­rate with oth­ers to solve prob­lems. Relationships are the foun­da­tion of the hu­man work­place, and Knowledge Work’s re­deem­ing value. None of us will make it to Knowledge Work’s pearly gates, but at least we will make our false jour­ney to­gether.

Ironically, it’s a grow­ing dream of ex­ec­u­tives that an or­ga­ni­za­tion of em­ploy­ees armed with a swarm of agents and pow­er­ful LLMs no longer need to col­lab­o­rate with one an­other to gather in­for­ma­tion, ideate or ex­e­cute a pro­ject. In their vi­sion for the fu­ture, work goes from a messy ex­pe­ri­ence of learn­ing and ex­plor­ing to some­thing more akin to as­sem­bly-line pro­duc­tion. As Debord wrote back in 1967, This pro­le­tariat is be­ing ob­jec­tively re­in­forced by the vir­tual elim­i­na­tion of the peas­antry and by the in­creas­ing de­gree to which the service’ sec­tors and in­tel­lec­tual pro­fes­sions are be­ing sub­jected to fac­tory-like work­ing con­di­tions.”

But some­times messy in­ef­fi­ciency is a fea­ture, not a bug. In a re­cent episode of Bill Simmons’s pod­cast, the writer Chuck Klosterman ar­gued with Bill about the role of tech­nol­ogy in sports, par­tic­u­larly when it comes to ref­er­ee­ing. Consider ten­nis. The days of Johnny Mac blow­ing up at a ref­eree over a bad line call are over. With Hawk-Eye tech­nol­ogy, the judg­ment is right 100% of the time. In the NBA, the chal­lenge sys­tem now helps to en­sure that bad calls do not change a game. The MLB has in­te­grated an au­to­mated ball-strike sys­tem. These tech­nolo­gies have been im­ple­mented with very dif­fer­ent lev­els of suc­cess, but the goals are the same: Get of­fi­ci­at­ing right more of­ten — maybe al­ways. Who could com­plain? It’s so ef­fi­cient!

What would hap­pen if Knowledge Workers awoke from the spell of Workism with no fi­nan­cially vi­able al­ter­na­tive? It seems AI might of­fer us the plea­sure of find­ing out.”

What would hap­pen if Knowledge Workers awoke from the spell of Workism with no fi­nan­cially vi­able al­ter­na­tive? It seems AI might of­fer us the plea­sure of find­ing out.”

Klosterman ar­gues that bad calls are a nat­ural and fun part of games. In fact, bad calls have cre­ated iconic sports mo­ments that peo­ple still talk about. Sports are hu­man con­structs and the messi­ness of hu­man er­ror, whether by player or ref­eree, is part of them. Getting calls right 100% of the time may be ob­jec­tively bet­ter, but it is sub­jec­tively less in­ter­est­ing and en­ter­tain­ing. And en­ter­tain­ment is the goal of sport.

Knowledge work is strik­ingly sim­i­lar. Sure, an AI that can pro­duce in min­utes a spot-on pro­ject that would have taken hours is cool. But the rate of slide deck cre­ation is­n’t what is go­ing to re­tain tal­ent. Employees over­whelm­ingly choose to re­main or leave their roles be­cause of their col­leagues and/​or bosses, and the qual­ity of the ex­pe­ri­ence of the messy mid­dle a work­place of­fers. Those are the el­e­ments that make work fun—and valu­able.

But not every­one feels that way. In my ex­pe­ri­ence, there are two broad cat­e­gories of Knowledge Workers. The first are out­come-first work­ers. Their fo­cus is on the busi­ness, on win­ning, on ef­fi­ciency. Human needs and faults and emo­tions are an ob­sta­cle to be over­come.

The sec­ond group has an ex­pe­ri­ence-first per­spec­tive. These work­ers love the messy mid­dle. They value the jour­ney. They want their or­ga­ni­za­tions to per­form well but as a nat­ural con­se­quence of col­lab­o­ra­tion, de­bate and shared strug­gle with peo­ple they ac­tu­ally like. Many ex­pe­ri­ence-first peo­ple are artists out­side of work. Photographers, di­rec­tors, screen­writ­ers, sculp­tors, painters, po­ets, writ­ers. Many are ac­tive vol­un­teers. For these peo­ple, to be pulled away from their eco­nom­i­cally un­vi­able pas­sions re­quires some­thing in re­turn: a com­pany ex­pe­ri­ence with free­dom for ex­plo­ration, cre­ativ­ity, prob­lem solv­ing and cool col­leagues.

Research sug­gests this group needs that en­vi­ron­ment to do their best work. Harvard Business School’s Teresa Amabile spent decades study­ing what pro­duces gen­uinely cre­ative, high-qual­ity out­put. Her Intrinsic Motivation Principle de­ter­mines that peo­ple do their most cre­ative and in­no­v­a­tive work when mo­ti­vated by the work it­self — the in­ter­est, the chal­lenge, the en­joy­ment — not by out­comes or met­rics. The en­vi­ron­ments that kill cre­ativ­ity are po­lit­i­cal, risk-averse and re­lent­lessly out­come-fo­cused. The en­vi­ron­ments that stim­u­late it are col­lab­o­ra­tive, idea-dri­ven and free. The messy mid­dle, in other words, is­n’t in­ef­fi­cient. It’s the con­di­tion un­der which gen­uinely valu­able work gets pro­duced.

Workism is a mi­cro­cosm of the larger spec­ta­cle: a world where ap­pear­ing busy, im­por­tant and uniquely knowl­edge­able is as valu­able as ac­tu­ally be­ing any of those things.”

Workism is a mi­cro­cosm of the larger spec­ta­cle: a world where ap­pear­ing busy, im­por­tant and uniquely knowl­edge­able is as valu­able as ac­tu­ally be­ing any of those things.”

It’s im­por­tant to note that the im­pact of re­mov­ing the messy mid­dle from the work ex­pe­ri­ence of these two groups is asym­met­ri­cal: For out­come-first peo­ple, it is a vic­tory. For ex­pe­ri­ence-first peo­ple, it un­der­mines the foun­da­tion of work.

As I’m writ­ing this es­say, big com­pa­nies are on a lay­off ben­der. Thousands of peo­ple are be­ing fired all over the place. Executives are of­ten claim­ing these head­count re­duc­tions are a re­sult of AI. They aren’t. At the mo­ment, AI au­toma­tion is not cre­at­ing any­where near the in­creased ef­fi­ciency nec­es­sary to jus­tify hun­dreds of thou­sands of lost jobs.

We’ve been through waves of hir­ing and fir­ing a thou­sand times be­fore. But this time might be dif­fer­ent. In the past, there was al­ways a fresh co­hort of work­ers wait­ing to be brought in. But what if tal­ent stops com­ing back? What if the AI trans­for­ma­tion gone wrong makes top tal­ent — par­tic­u­larly those who are ex­pe­ri­ence-first by na­ture — lose faith in Workism en masse? What if, when com­pa­nies go to re­plen­ish head­counts, tal­ent freed from the Workism spec­ta­cle has turned to dif­fer­ent ver­sions of their lives? What if their side pro­jects sud­denly be­came prof­itable? The tal­ent pool in­creas­ingly does­n’t own homes and does­n’t plan on hav­ing kids, so it has per­haps never been eas­ier to make a ca­reer pivot to­ward some­thing that is gen­uinely sat­is­fy­ing in ways cor­po­rate life is­n’t.

What would Debord say? Well, he had se­ri­ous doubts about the pos­si­bil­ity of leav­ing the spec­ta­cle be­hind.

Post-Workism: Escaping The Inescapable

As Debord puts it, Complacent ac­cep­tance of the sta­tus quo may also co­ex­ist with purely spec­tac­u­lar re­bel­lious­ness—dis­sat­is­fac­tion it­self be­comes a com­mod­ity as soon as the econ­omy of abun­dance de­vel­ops the ca­pac­ity to process that par­tic­u­lar raw ma­te­r­ial.”

At some point, in other words, the spec­ta­cle will put eco­nomic pres­sure on you that you’ll need to meet. In to­day’s world, that might mean start­ing a YouTube chan­nel and a Substack about how you aban­doned your tech ca­reer to start a horse res­cue farm, ul­ti­mately turn­ing your­self and your life into a com­mod­ity that feeds the larger so­ci­etal spec­ta­cle. Or it might mean start­ing a com­pany of your own, thereby sud­denly need­ing to cre­ate a spec­ta­cle at­trac­tive to po­ten­tial em­ploy­ees. Either way, you are doomed to exit one ver­sion of the spec­ta­cle only to be ab­sorbed into an­other one. That’s the logic of the spec­ta­cle: It re­ab­sorbs even the dis­sat­is­fied in or­der to sus­tain it­self.

Debord be­lieved es­cape from the spec­ta­cle was im­pos­si­ble. He went on to dis­solve his own move­ment rather than watch it be­come in­sti­tu­tion­al­ized, and then drank him­self to death in the coun­try­side.

Some will cer­tainly leave Knowledge Work — the most dis­il­lu­sioned, the most ar­tis­ti­cally tal­ented or mo­ti­vated, the most ex­is­ten­tially sen­si­tive to a sud­den mo­ment of en­light­en­ment, the fi­nan­cially able. But many more will re­main, ei­ther by choice or ne­ces­sity, to face a work ex­pe­ri­ence where the hu­man­ity of work is erod­ing away. Are those who chose to re­main, or who sim­ply can­not leave, doomed to spend their ca­reers ex­is­ten­tially dis­traught?

The en­vi­ron­ments that kill cre­ativ­ity are po­lit­i­cal, risk-averse and re­lent­lessly out­come-fo­cused. The en­vi­ron­ments that stim­u­late it are col­lab­o­ra­tive, idea-dri­ven and free.”

The en­vi­ron­ments that kill cre­ativ­ity are po­lit­i­cal, risk-averse and re­lent­lessly out­come-fo­cused. The en­vi­ron­ments that stim­u­late it are col­lab­o­ra­tive, idea-dri­ven and free.”

Debord also be­lieved the spec­ta­cle could be un­der­mined through de­lib­er­ate acts: hi­jack­ing spec­tac­u­lar im­ages and turn­ing them against them­selves, drift­ing through ur­ban space in ways that re­sist its ge­og­ra­phy and con­struct­ing mo­ments of gen­uine, un­medi­ated ex­pe­ri­ence that the spec­ta­cle can­not me­tab­o­lize. At work, that might mean jump­ing on a call to talk through a prob­lem with a col­league in­stead of query­ing an agent for the an­swer. Or ex­e­cut­ing work the old-fash­ioned way — me­an­der­ing, ex­ploratory — with the un­der­stand­ing that it may be slower but might pro­duce some­thing more gen­uinely hu­man. Or sim­ply de­cid­ing that cer­tain work is best left to hu­man hands en­tirely. Anything that pre­serves the el­e­ments of work that have made it worth do­ing in the first place.

But per­haps the most pow­er­ful ac­tion of all is sim­ply to main­tain an aware­ness (and re­mind oth­ers) that Workism is a spec­ta­cle. For most em­ploy­ees, we owe it to each other to re­mind one an­other that this work is not, in the grand scheme of things, all that im­por­tant. It is il­lu­sory. No one has ever died over a spread­sheet. The world does not wait with bated breath for prod­uct launches. A mar­ket­ing cam­paign will not change the world. Almost no one will re­mem­ber all the work we do. But they might re­mem­ber the types of peo­ple we were, the re­la­tion­ships we had and how we treated the peo­ple we worked with.

And once freed from the false sat­is­fac­tion of be­liev­ing we are chang­ing the world with our day jobs, per­haps we will be in­spired to fill that hole with some­thing real — true al­tru­ism, not its ar­ti­fi­cial Workism sub­sti­tute — by ac­tu­ally try­ing to im­pact real peo­ple, in our com­mu­ni­ties, in real ways.

Even if it’s just one knit­ted hat at a time.

DeepSeek V4 Flash 0731 - ARC-AGI Results

arcprize.org

ARC Prize 2026

Get started and re­ceive of­fi­cial con­test up­dates and news.

No spam. You can un­sub­scribe at any time.

Dealroom.co | Oracle bans AI-generated code from OpenJDK despite Ellison's claim 'Oracle isn't writing' its own code

app.dealroom.co

Oracle has banned AI-generated code from OpenJDK con­tri­bu­tions, cit­ing safety, se­cu­rity, and in­tel­lec­tual prop­erty risks. The open-source Java pro­ject stew­ard said de­vel­op­ers can use LLMs pri­vately for de­bug­ging and re­view­ing code but can­not sub­mit AI-generated ma­te­r­ial to repos­i­to­ries, pull re­quests, or other pro­ject chan­nels.

The pol­icy con­trasts sharply with Oracle’s in­ter­nal prac­tices. Co-founder Larry Ellison re­cently de­clared that AI mod­els now write Oracle’s code, whilst co-CEO Mike Sicilia cred­ited AI tools with en­abling smaller en­gi­neer­ing teams to de­liver faster.

Oracle is in­vest­ing $70 bil­lion this year in dat­a­cen­tre ex­pan­sion. The spend­ing spree prompted credit agency S&P to down­grade Oracle’s rat­ing to BBB-, one notch above junk sta­tus, cit­ing un­cer­tain re­turns on in­vest­ment.

Source: thereg­is­ter.com

Just a moment...

patronview.com

July jobs report: US economy shed 23,000 jobs, a sudden reversal

www.nbcnews.com

The U.S. econ­omy shed 23,000 jobs in July, a sign that the la­bor mar­ket had not sta­bi­lized af­ter four months of pos­i­tive growth.

The un­em­ploy­ment rate ticked down only slightly to 4.1%.

Economists sur­veyed by Dow Jones were ex­pect­ing the re­lease to show 83,000 added roles, more than June’s 57,000.

In yet an­other trou­bling sign for the la­bor mar­ket, the Bureau of Labor Statistics said that it re­vised down the prior two months by a com­bined 103,000. May’s jobs to­tal was cut by 66,000 to 129,000 to­tal jobs added, while June’s to­tal was low­ered by 37,000 to a to­tal gain of 57,000.

The hir­ing data comes against a com­pli­cated eco­nomic back­drop. The U.S. war with Iran con­tin­ues with­out any kind of agree­ment to fully re­open the Strait of Hormuz. As a re­sult, en­ergy prices re­main el­e­vated, even if they are off their high­est lev­els of the year.

The change in work­ers’ av­er­age hourly earn­ings also fell well short of econ­o­mists’ ex­pec­ta­tions. Wage growth was 0.1% from June, or 3.2% from one year ago. That’s also be­low in­fla­tion, which was 3.5% in its most re­cent read­ing.

That’s the num­ber that many Americans are fo­cused on right now,” Heather Long, chief econ­o­mist at Navy Federal Credit Union, told NBC News. Long pointed out that 3.2% was the low­est wage growth has been in five years. At the same time, in­fla­tion is heat­ing back up again.”

Economists had been ex­pect­ing wages to con­tinue pac­ing at 3.5% from a year ago.

The la­bor mar­ket is stalling again,” Long said, also call­ing the re­port bleak.”

Long also pointed to an­other trou­bling data point: The la­bor force par­tic­i­pa­tion rate in July was the low­est since February 2021, a sign that work­ers are drop­ping out of the work­force. It’s pretty shock­ing,” she said. Over two mil­lion peo­ple have left the la­bor force since November.”

The mag­ni­tude of the pay­roll miss sug­gests the la­bor mar­ket may be los­ing mo­men­tum and can no longer be con­sid­ered the pil­lar of strength,” said Allianz in­vest­ment strate­gist Charlie Ripley.

The av­er­age price of reg­u­lar gaso­line also re­mains high, at $4.04 per gal­lon as of Friday morn­ing, up 36% since Feb. 28, when the Iran war be­gan. Inflation re­mains well above the Federal Reserve’s 2% tar­get at 3.5%. Wages are strug­gling to keep pace.

The BLS said em­ploy­ment con­tracted the most in local gov­ern­ment ed­u­ca­tion,” which de­clined by 50,000 roles, likely re­flect­ing teach­ers dur­ing sum­mer break. It also flagged a con­trac­tion of 19,000 roles in the re­tail in­dus­try. The fi­nan­cial in­dus­try shed 14,000 roles.

The leisure and hos­pi­tal­ity in­dus­try also con­tracted by 40,000 jobs. Economists watch this fig­ure closely be­cause a sig­nif­i­cant loss at ho­tels and restau­rants could be an early warn­ing sign of a shift in con­sumer spend­ing.

In July, em­ploy­ment in health care con­tin­ued its up­ward trend,” the BLS said, not­ing a gain of 22,000 jobs. But it said, that was a slower pace than the av­er­age monthly gain over the prior 12 months.”

The agen­cy’s data also showed a 5,000 pay­roll gain in the man­u­fac­tur­ing sec­tor in July and an ad­di­tional 22,000 roles in con­struc­tion. These bright spots come as the AI data cen­ter boom has ben­e­fited some in­dus­tries, but deeply di­vided many com­mu­ni­ties where the cen­ters are lo­cated.

Employment showed lit­tle change” in July in the min­ing, oil & gas, trans­porta­tion and pro­fes­sional & busi­ness ser­vices sec­tors, ac­cord­ing to BLS.

Stocks rose af­ter the re­port, as in­vestors who were con­cerned the Federal Reserve would raise in­ter­est rates breathed a sigh of re­lief. The S&P 500 closed the day higher by 0.6% and the Nasdaq Composite in­dex soared 1.3%.

The Russell 2000, which tracks small and medium size firms that can be more sen­si­tive to rate changes, closed the trad­ing ses­sion up by 1.1%.

Bond yields dropped, with the 10-year U.S. Treasury yield falling to around 4.6%. That Treasury bond specif­i­cally dri­ves the di­rec­tion of con­sumer lend­ing rates, such as for mort­gages, credit cards and per­sonal loans.

The av­er­age 30-year fixed mort­gage rate was 6.74% on Friday af­ter­noon, its low­est level since June 21.

The jobs re­port likely eases some pres­sure on the Federal Reserve, which had been widely ex­pected to hike the fed­eral funds rate — po­ten­tially as soon as September.

Before Friday’s re­port, the fu­tures mar­ket in­di­cated the odds of a September rate hike were over 50%. After the jobs num­bers were re­leased, those odds fell to about 40%.

GitHub - xoreaxeaxeax/asm-hall-of-shame: Racing to the bottom of CPU performance

github.com

Assembly Hall of Shame

Overview

Instruction la­tency analy­sis usu­ally fo­cuses on per­for­mance op­ti­miza­tion—mak­ing code run as fast as pos­si­ble. The Assembly Hall of Shame takes the op­po­site ap­proach: search­ing for the ab­solute floor of sin­gle-in­struc­tion per­for­mance.

🏆 Current Champions 🏆

x86: fxrstor64

Strategy: Use fxrstor64 to load 512-byte FPU/MMX/XMM state from a high-la­tency MMIO re­gion in the PCIe fab­ric, then starve the fab­ric while the load is in flight — a fleet of ham­mer cores pounds a dif­fer­ent high-la­tency MMIO reg­is­ter with tight 4-byte reads, sat­u­rat­ing the PCIe root com­plex and end­point with non-posted trans­ac­tions, so CPU 0′s 512-byte fxrstor64 must queue be­hind all that con­tend­ing traf­fic.

Contender: AMD Ryzen 7 5800H

; CPU 0 — timed in­struc­tion movl $0xfcc68830, %rsi fxrstor64 %rsi

; CPUs 1..N — ham­mer loop against a dif­fer­ent high-la­tency lo­ca­tion movl 0xfcc68858, %eax

🏆 Score: 198,002,498,236 cy­cles

🏆 Time: 62 sec­onds

Honorable Mentions

A spec-vi­o­lat­ing un­aligned ymm0 load that forced non-posted dword trans­ac­tions from stalled GPU reg­is­ters was used to break the fun­da­men­tal de­sign of System Management Mode in smi­i­i­i­i­i­i­i­i­i­i­i­i­iii.

vmovdqu 0xfcc003b1, %ymm0

Rules

Instructions may use what­ever setup is nec­es­sary, but only a sin­gle in­struc­tion is el­i­gi­ble to be scored.

Trapped/emulated/virtualized in­struc­tions may only time the trap, not the han­dler.

Instructions must not be in­ter­rupt­ible. rep movs, pause, etc. are dis­qual­i­fied.

Times are nor­mal­ized based on the CPU base clock fre­quency.

All plat­forms must be in their fac­tory stock con­fig­u­ra­tions - no hard­ware mod­i­fi­ca­tions.

x86 Leaderboard

27. nop

Strategy: nop does noth­ing. It opens the leader­board ac­cord­ingly.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

nop

Score: 1 cy­cles

Time: 0 nanosec­onds

26. nop16

Strategy: Regular nop was too short, but how do we make noth­ing take longer? Try a lonnnnnng nop.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

data16 data16 data16 data16 data16 data16 data16 nopl 0x00000000(%%eax,%%eax,1)

Score: 20 cy­cles

Time: 7 nanosec­onds

25. rdtsc

Strategy: Just a ref­er­ence in­struc­tion to get our bear­ings.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

rdtsc

Score: 49 cy­cles

Time: 18 nanosec­onds

24. idiv

Strategy: Use 128-bit div­i­dend (rdx:rax=2:0) with small di­vi­sor to push the quo­tient above the ceil­ing im­posed by sign-ex­ten­sion, dri­ving the longest path through the di­vider mi­croc­ode.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

xorq %rax, %rax  ; rax = 0 (low 64 bits of div­i­dend) movq $2, %rdx  ; rdx = 2 (high 64 bits: full div­i­dend = 2^65) movq $5, %rbx  ; di­vi­sor → quo­tient = 2^65/5 ≈ 7.4×10^18 idivq %rbx

Score: 77 cy­cles

Time: 28 nanosec­onds

23. en­ter

Strategy: Use max­i­mum nest­ing depth (31) to force 30 dis­play-pointer loads and pushes through the mi­croc­ode dis­play-walk path.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

en­ter $0, $31  ; 0 bytes al­lo­cated, nest­ing depth 31 (maximum)

Score: 112 cy­cles

Time: 41 nanosec­onds

22. fldl

Strategy: Try a small de­nor­mal to trig­ger an FP mi­croc­ode as­sist.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

mov­absq $0x0000000000000001, %rax movq %rax, -8(%rsp) fldl -8(%rsp)

Score: 133 cy­cles

Time: 49 nanosec­onds

21. clflush

Strategy: Just en­sure the cache line is dirty.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

clflush (%rax)  ; rax -> dirty cache line res­i­dent in L3

Score: 165 cy­cles

Time: 60 nanosec­onds

20. fsin

Strategy: Use ex­po­nent 0x7ff to reach special val­ue’ pro­cess­ing in mi­croc­ode; pos­i­tive/​neg­a­tive, NaN/inf does­n’t seem to make a dif­fer­ence, go with QNaN.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

mov­absq $0x7fffffffffffffff, %rax movq %rax, -8(%rsp) fldl -8(%rsp) fsin

Score: 257 cy­cles

Time: 94 nanosec­onds

19. mfence

Strategy: Saturate all write-com­bin­ing line-fill buffers with movnti stores to dis­tinct cache lines, forc­ing mfence to drain the full LFB write path to the un­core be­fore re­tir­ing.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

movnti %r9, 0*64(%rdi)  ; ×16 dis­tinct cache lines — sat­u­rate the write-com­bin­ing LFBs ; … movnti %r9, 15*64(%rdi) mfence  ; must drain all pend­ing LFB writes be­fore re­tir­ing

Score: 326 cy­cles

Time: 120 nanosec­onds

18. mov cr3

Strategy: Nothing for now, just check how long it takes to in­val­i­date the TLB.

Contender: AMD Ryzen 7 5800H with Radeon Graphics (Trigkey S5)

mov %rax, %cr3

Score: 352 cy­cles

Time: 110 nanosec­onds

17. fadd

Strategy: Hit x87 FP mi­croc­ode as­sist path by us­ing de­nor­mal source operand.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

fldl sub­norm  ; 1e-310: value < DBL_MIN, bi­ased ex­po­nent = 0 faddl sub­norm  ; source is sub­nor­mal → FP mi­croc­ode as­sist

Score: 677 cy­cles

Time: 249 nanosec­onds

16. split lock

Strategy: Align lock-pre­fixed operand to strad­dle cache-line bound­ary, forc­ing CPU to as­sert the ex­ter­nal bus lock rather than us­ing the fast MESI cache-co­her­ence path.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

; split_ptr % 64 == 63 — dword spans bytes 63 (line N) and 64 – 66 (line N+1) lock xaddl %r9d, (%rdi)

Score: 865 cy­cles

Time: 319 nanosec­onds

15. fdiv -

Strategy: Use sub­nor­mal di­vi­sor, hard­ware hands con­trol to mi­croc­ode as­sist, as­sist nor­mal­izes operand, per­forms the di­vi­sion, then re­stores ar­chi­tec­tural state.

Contender: Intel(R) Core(TM) i7 – 8559U CPU @ 2.70GHz

mov­absq $0x3ff0000000000000, %rax  ; 1.0 (normal div­i­dend) movq %rax, -8(%rsp) fldl -8(%rsp)  ; ST(0) = 1.0

mov­absq $0x0000002000000000, %rax  ; 6.79e-313 (subnormal di­vi­sor) movq %rax, -8(%rsp) fdivl -8(%rsp)  ; ST(0) = 1.0 / sub­nor­mal → FP as­sist

Score: 883 cy­cles

Time: 325 nanosec­onds

App Store Rejection of the Week: Dark Hours

daringfireball.net

Terry Godier, Browsers Have Standards, the App Store Has Judgment”:

A while ago I tried to sub­mit an iOS app for Dark Hours, my as­tron­omy web­site for nor­mal peo­ple. It was re­jected on the grounds that it was as­trol­ogy.

It has no tarot func­tion, no horo­scopes, and noth­ing that I, or any­one else I’ve asked, would as­so­ci­ate with as­trol­ogy.

A while ago I tried to sub­mit an iOS app for Dark Hours, my as­tron­omy web­site for nor­mal peo­ple. It was re­jected on the grounds that it was as­trol­ogy.

It has no tarot func­tion, no horo­scopes, and noth­ing that I, or any­one else I’ve asked, would as­so­ci­ate with as­trol­ogy.

I penned a nice lit­tle rant two years ago ex­press­ing my fury over the way that kooks pro­mot­ing as­trol­ogy of­ten try to in­sin­u­ate that their voodoo pseu­do­science is even vaguely re­lated to the hard sci­ence of as­tron­omy. And it re­ally is an un­for­tu­nate fluke of the English lan­guage that two sub­jects with a con­tentious re­la­tion­ship are dif­fer­en­ti­ated as words by two let­ters. Even if you know the dif­fer­ence be­tween the two, and care, if you’re read­ing quickly your eyes might con­flate one word with the other.

But if you ac­tu­ally look at Godier’s Dark Hours, for even just a few sec­onds, it is in­stantly ob­vi­ous that it per­tains to the sci­ence of as­tron­omy and has ab­solutely noth­ing — zero, zilch, nada — to do with as­trol­ogy. So even if Apple’s App Store re­viewer mis­read the sub­mis­sion’s de­scrip­tion, and wrongly as­sumed it was yet an­other quack as­trol­ogy app, if they launched it and spent just a few sec­onds pok­ing around, they should have in­stantly rec­og­nized their in­cor­rect as­sump­tion. But that’s not what hap­pened. They re­jected the app on the ut­terly in­cor­rect grounds that it per­tained to as­trol­ogy. If this was an hon­est mis­take from a rea­son­able ju­di­cial board, you’d ex­pect the in­ter­ac­tion with Godier, the de­vel­oper, to have gone some­thing like this:

App Review: REJECTED: Astrology. Developer: No, it’s as­troN­oMy not as­troL­oGy. App Review: Oh, sorry! Carry on, APPROVED.

But that’s not what hap­pened at all. Godier pro­ceeded through a se­ries of es­ca­la­tions up to the App Review Board and the Review Board re­sponded that they de­ter­mined the orig­i­nal re­jec­tion was valid be­cause, I shit you not, We un­der­stand that the app in­cludes a live tarot read­ing fea­ture.” Which is­n’t even about as­trol­ogy. It’s straight out of Kafka.

Dark Hours is not just merely un­re­lated to as­trol­ogy (let alone tarot-card read­ing). It’s ac­tu­ally ex­quis­itely well-de­signed and painstak­ingly crafted. It’s ex­actly the sort of app that the App Store ought to cel­e­brate and high­light. It does­n’t just be­long in the cat­e­gory of as­tron­omy apps in the App Store, it will raise the qual­ity bar for as­tron­omy apps in the App Store. iOS-ex­clu­sive, na­tive Liquid Glass UI, smooth scrolling, beau­ti­ful ty­pog­ra­phy and lay­out, and way more use­ful as a na­tive mo­bile app than as a web­site. Go check out the web­site and I’m sure you’ll agree that it’s the sort of thing that would be even cooler as an app. But it is an app, and the app is bet­ter and more use­ful than the web­site ver­sion, and Godier has fought to get it ap­proved. But Apple’s App Review Board said no, on fal­la­cious eas­ily-re­futed grounds. This is­n’t just con­trary to the ben­e­fit of de­vel­op­ers, like Godier. It’s ob­vi­ously con­trary to the ben­e­fit of Apple it­self, which should not just ac­cept an app like Dark Hours, but cel­e­brate it as an ex­em­plar of the plat­form.

Mistakes hap­pen. But in a func­tion­ing sys­tem mis­takes get cor­rected, and mis­takes as ob­vi­ous as this one get cor­rected al­most in­stantly and in­clude a quick apol­ogy for the con­fla­tion. The App Store is not a func­tion­ing sys­tem.

The Nixpkgs core team has disbanded

discourse.nixos.org

August 7, 2026, 9:39pm

1

The Nixpkgs core team has un­for­tu­nately de­cided to dis­band.

We’re proud to have had the op­por­tu­nity to lead by ex­am­ple in bot­tom‐up, con­sen­sus‐fo­cused gov­er­nance for Nixpkgs, and of our achieve­ments over the past 10 months, in­clud­ing re­form­ing the com­mit­ter del­e­ga­tion process and on­board­ing 19 new com­mit­ters, em­pow­er­ing main­tain­ers by ex­tend­ing the merge bot, re‐es­tab­lish­ing con­tact with GitHub and se­cur­ing the spon­sored Enterprise Cloud up­grade, help­ing triage GHSA-67f2 – 674w-6g63 and track the GitHub se­cu­rity risks ex­posed by that in­ci­dent, and es­tab­lish­ing an ini­tial au­toma­tion/​AI pol­icy, as well as help­ing re­solve many in­ci­dents that were es­ca­lated to us.

However, it has sadly not turned out to be the light­weight role com­pat­i­ble with ac­tive tech­ni­cal con­tri­bu­tion that we had orig­i­nally hoped it would be, and two weeks ago we reached the con­clu­sion that step­ping down is nec­es­sary for our health. We be­lieve that it’s un­sus­tain­able for the team to con­tinue, as demon­strated in part by our at­tri­tion to date. With only one per­son ac­tively ap­ply­ing in re­sponse to our call for new mem­bers and mixed re­sponse to out­reach, re­cruit­ing suf­fi­ciently to keep things healthy looks un­ten­able. Therefore, es­pe­cially with a Steering Committee elec­tion due im­mi­nently, we think the best way for­ward for Nixpkgs gov­er­nance is to be hon­est about the cir­cum­stances that have made dis­solv­ing the team un­avoid­able, in the hopes that it may help fu­ture ef­forts.

Our ex­pe­ri­ence is that the Steering Committee as an in­sti­tu­tion lacks a na­tive in­stinct for the del­e­ga­tion en­vi­sioned by the con­sti­tu­tion, while also not be­ing suf­fi­ciently en­gaged and co­he­sive to han­dle in­di­vid­ual de­ci­sions at those lev­els it­self. This man­i­fests as un­nec­es­sary mi­cro­man­age­ment of teams be­low them and chron­i­cally poor com­mu­ni­ca­tion, in­clud­ing lack of clar­ity from SC mem­bers about when they’re speak­ing for them­selves or rep­re­sent­ing a joint po­si­tion, mat­ters brought to our at­ten­tion with de­sired out­comes al­ready at­tached, tak­ing own­er­ship of is­sues en­tirely within del­e­gated ar­eas with­out in­volv­ing rel­e­vant teams, and in­suf­fi­cient and de­layed re­sponses to con­cerns. The end re­sult has been in­ad­e­quate co­or­di­na­tion on mat­ters like GSoC, grants ini­tia­tives, and AI pol­icy, slow and dif­fi­cult progress on mat­ters rel­e­vant to Nixpkgs like mod­er­a­tion and GitHub org owner re­form, and gen­eral un­cer­tainty about whether we are trusted to au­tonomously make de­ci­sions within our re­mit.

These is­sues have per­sisted de­spite our re­peated at­tempts to dis­cuss them. This is, of course, a sys­temic prob­lem rather than one any sin­gle SC mem­ber could solve; we don’t envy the de­mands of the role, have been im­pressed by the ef­forts of sev­eral mem­bers, and rec­og­nize that every in­di­vid­ual nat­u­rally has lim­ited time and en­ergy and can only do so much in the con­text of a rep­re­sen­ta­tive ma­jori­tar­ian com­mit­tee. Ultimately, though, it leaves the SC not func­tion­ing ef­fec­tively as ei­ther a rep­re­sen­ta­tive back­stop to del­e­ga­tion or a proac­tive de­ci­sion‐mak­ing body. The re­sult­ing en­vi­ron­ment has acted as a con­sis­tent drag on our work, mak­ing it dif­fi­cult for us to ful­fil our con­sti­tu­tional man­date of Project Direction, Decision-Making, Coordination with the NixOS Foundation Board, and Creation and Management of Teams, where they per­tain to Nixpkgs”.

We be­lieve our high‐trust con­sen­sus de­ci­sion‐mak­ing model has re­sulted in high‐qual­ity dis­cus­sions and good re­sults, and is a bet­ter fit for a del­e­gated lo­cal gov­er­nance team than the ma­jor­ity votes used at the top level by the SC. It’s not news to any­body that our com­mu­nity has many strong di­vides and dis­agree­ments, but nonethe­less we’ve seen many sit­u­a­tions where the abil­ity to call on the core team for a res­o­lu­tion has helped calm ten­sions and led to agree­able out­comes. We con­sider the strong ap­proval for the ini­tial au­toma­tion/​AI pol­icy from peo­ple with highly di­ver­gent views to be proof that it’s pos­si­ble to find paths for­ward and make sig­nif­i­cant im­prove­ments even on seem­ingly in­tractable top­ics.

It in­evitably takes its toll to step in un­der such cir­cum­stances, though. Given our own ex­pe­ri­ences and the his­tory of the pro­ject, we un­der­stand why there is a gen­eral dis­trust of gov­er­nance in the com­mu­nity, and how that has en­cour­aged a com­bat­ive, zero‐sum ap­proach to dis­agree­ments. While those meth­ods may work to ef­fect change de­spite a lead­er­ship vac­uum or to be heard by un­re­spon­sive gov­er­nance, they con­tribute to burnout when lead­er­ship teams are try­ing to en­gage in good faith and fos­ter pro­duc­tive dis­cus­sion. That out­come only re­wards those who don’t care to lis­ten to the com­mu­nity or to pur­sue trust‐based con­sul­ta­tive lead­er­ship at all, fur­ther re­duces the small pool of ex­pe­ri­enced con­trib­u­tors with the time and de­sire to par­tic­i­pate in gov­er­nance, and risks lock­ing in the his­tor­i­cal sta­tus quo of de­ci­sion‐mak­ing by dead­lock and at­tri­tion.

We want to be clear that this de­ci­sion is not the re­sult of any one in­ci­dent, but the cul­mi­na­tion of long‐run­ning pat­terns. The mat­ters in our ju­ris­dic­tion are left with no di­rect owner at pre­sent, with the SC act­ing as the fi­nal back­stop as al­ways. We both plan to re­duce our Nixpkgs in­volve­ment and have no in­ten­tion of run­ning for SC. We still be­lieve in the prin­ci­ples the team was founded on — that clear, light­weight processes for de­ci­sion‐mak­ing and dis­pute res­o­lu­tion are crit­i­cal to strength­en­ing Nixpkgs and ad­dress­ing the prob­lems we’ve seen as con­trib­u­tors — and hope that a gen­uine del­e­ga­tion of en­gaged, tech­ni­cally‐fo­cused, col­lab­o­ra­tive Nixpkgs lead­er­ship by top‐level gov­er­nance will be pos­si­ble in the fu­ture.

We’d like to thank every­one who has sup­ported our work, and re­gret that the team has­n’t been in a po­si­tion to solve these is­sues more com­pre­hen­sively and sus­tain­ably.

On be­half of the Nixpkgs core team:

@alyssais

@emilazy

89 Likes

Sad to see this hap­pen, I was very ex­cited to see the AI pol­icy adopted.

This would be the time where nix­p­kgs should glow and grow.

Thanks for all the hard work!

9 Likes

ron

August 8, 2026, 2:54am

3

You both are in­cred­i­ble, and I can first hand at­test to the in­cred­i­ble amount of work and pos­i­tive im­pact you’ve led here. I’m still shocked by the amount of work you han­dled.

I’m sorry that it ended up in burn out. You de­serve so much more. There’s a lot to learn from this ex­pe­ri­ence. If you’d be will­ing, af­ter a much needed break (also un­der­stand if not any­time soon), I’d per­son­ally want to sit down and see how we can turn this into ac­tion.

27 Likes

drupol

August 8, 2026, 5:12am

4

Argh, sad to read this in­deed… Thanks for the work and take care of your­self, both of you.

4 Likes

I would like to per­son­ally thank @qyliss and @emily for all the great work that was done by the nix­p­kgs core team. I am sad­dened to see it dis­band, as I think the team had be­came an es­sen­tial layer of the pro­ject gov­er­nance, and I aknowl­edge the re­spon­s­abil­ity of the SC in that hap­pen­ing. We have to do bet­ter.

9 Likes

SergeK

August 8, 2026, 8:27am

7

The core team for­ma­tion, with its spe­cific mem­ber­ship, has been, per­haps, the most pro­gres­sive thing to hap­pen in the Nixpkgs governance” space dur­ing my short time around

6 Likes

Three things:

I ear­lier talked to @qyliss, whom I’ve al­ways held in the ab­solute high­est re­gard (and still do), a bit to de­brief. I don’t re­ally have much to say about the ac­tual things be­ing dis­cussed. The Nixpkgs Core team has barely come up on the SCs agenda, and I per­son­ally feel we’ve been in delegate and be thank­ful that we can” mode. There is not some long-stand­ing fight here. The claim of micromanagement” is thus ob­jec­tively false.

I ear­lier talked to @qyliss, whom I’ve al­ways held in the ab­solute high­est re­gard (and still do), a bit to de­brief. I don’t re­ally have much to say about the ac­tual things be­ing dis­cussed. The Nixpkgs Core team has barely come up on the SCs agenda, and I per­son­ally feel we’ve been in delegate and be thank­ful that we can” mode. There is not some long-stand­ing fight here. The claim of micromanagement” is thus ob­jec­tively false.

I am to­tally sick of open let­ters. I can’t be­lieve we’re do­ing this again (major team re­signs be­fore elec­tion) — even though the cir­cum­stance are so dif­fer­ent this time. More than any­thing else this is hor­ri­ble de je vu that I would not wish upon any­one.

I am to­tally sick of open let­ters. I can’t be­lieve we’re do­ing this again (major team re­signs be­fore elec­tion) — even though the cir­cum­stance are so dif­fer­ent this time. More than any­thing else this is hor­ri­ble de je vu that I would not wish upon any­one.

The high­est trust move is a pri­vate res­ig­na­tion, and then a pub­lic joint state­ment that al­lows mul­ti­ple sides to agree on some ba­sic facts, and of­fer some muted opin­ions. My god, how I wish we could do that in­stead. My god, how I wish we could do that in­stead. I hope we do do that in­stead go­ing for­ward and never have an­other open let­ter ever again. Open let­ters with one-sided de­nun­ci­a­tions are not a healthy way to work through is­sues at all, and rather a last re­sort when all other av­enues of di­a­logue have failed. Yet it’s one that we’ve nor­mal­ized as a pri­mary way of con­duct­ing com­mu­nity busi­ness. This nor­mal­iza­tion has oc­curred be­cause we’re not a healthy com­mu­nity, and un­healthy com­mu­ni­ties nor­mal­ize un­healthy be­hav­ior un­wit­tingly.

The high­est trust move is a pri­vate res­ig­na­tion, and then a pub­lic joint state­ment that al­lows mul­ti­ple sides to agree on some ba­sic facts, and of­fer some muted opin­ions. My god, how I wish we could do that in­stead. My god, how I wish we could do that in­stead.

I hope we do do that in­stead go­ing for­ward and never have an­other open let­ter ever again. Open let­ters with one-sided de­nun­ci­a­tions are not a healthy way to work through is­sues at all, and rather a last re­sort when all other av­enues of di­a­logue have failed. Yet it’s one that we’ve nor­mal­ized as a pri­mary way of con­duct­ing com­mu­nity busi­ness. This nor­mal­iza­tion has oc­curred be­cause we’re not a healthy com­mu­nity, and un­healthy com­mu­ni­ties nor­mal­ize un­healthy be­hav­ior un­wit­tingly.

Side note: an­other thread was hint­ing at a Lixpkgs. Multiple pack­age sets main­tained by mul­ti­ple groups that each get along much bet­ter within groups than be­tween groups could solve the trust prob­lem. At this point, I am not op­posed to try­ing it.

2 Likes

pie­games

August 8, 2026, 9:25am

9

I can un­der­stand you hav­ing such a re­ac­tion, even though I don’t per­ceive it in the same way at all. In fact, you as an SC mem­ber de­sir­ing that a team which de­cides to dis­band go through you as the SC first for com­mu­ni­ca­tion, is in my eyes the same kind of mi­cro­man­age­ment that has been pointed out here.

That be­ing said, I’d like to not de­rail this dis­cus­sion by cen­ter­ing the SC once again. Especially be­cause many fac­tors have con­tributed to the core team dis­band­ing, as per their own telling. So let’s keep this topic fo­cused on the core team in­stead, and if peo­ple wish so open a new dis­cus­sion cen­tered around the SCs gen­eral op­er­a­tions.

Rebuilding Postgres for 300x faster analytics: batching, operator fusion, and SIMD

malisper.me

Last week we re­leased ver­sion 0.2 of pgrust. This re­lease was all about per­for­mance. It’s 10x faster than the pre­vi­ous ver­sion of pgrust. On OLTP bench­marks, pgrust is 30% faster than Postgres, and on Clickbench, Clickhouse’s bench­mark for an­a­lyt­i­cal data­bases, pgrust is 300x faster than Postgres. It’s even ahead of Clickhouse!

The query en­gine is one of the biggest changes we made to achieve much bet­ter per­for­mance. On its own, the query en­gine drove ~10x of the 300x. We’ll start with a minia­ture ver­sion of the Postgres query en­gine and we’ll one by one add the same op­ti­miza­tions we made to make the pgrust query en­gine so fast.

To give some back­ground on why there’s so much room for im­prove­ment vs Postgres, Postgres was cre­ated in a dif­fer­ent era. The orig­i­nal Postgres pro­ject dates back to the 80s. It was built at a time when the main bot­tle­neck to data­base per­for­mance was disk I/O. Three trends have made that no longer the case:

Many datasets now fit in RAM, elim­i­nat­ing most disk I/O

For datasets that don’t fit in RAM, the work­loads dif­fer. Data an­a­lyt­ics scans data in bulk. The bot­tle­neck is of­ten no longer your disk through­put and is of­ten ei­ther your CPU through­put or mem­ory through­put

Disks have got­ten much faster in re­cent years. NVMe is hun­dreds of times faster than a hard drive.

All three trends have made CPU and mem­ory speeds more im­por­tant than they were his­tor­i­cally. Many of the op­ti­miza­tions we’ve made tar­get this. The query en­gine is the main user of CPU in a data­base. We op­ti­mized the pgrust query en­gine to use less CPU and less mem­ory band­width than Postgres when pro­cess­ing the same queries.

To give you a sense of just how slow the Postgres query en­gine is, let’s take a sim­ple query that sums the first 500 mil­lion num­bers:

CREATE TABLE my_table AS se­lect col::float8 from gen­er­ate_se­ries(1.0, 500000000.0) g(col); SELECT SUM(col) FROM my_table;

When I run this in Postgres, it takes ~20 sec­onds. This was done on a c8g.4xl with par­al­lel queries dis­abled.

For com­par­i­son, when I time the equiv­a­lent in Rust:

let table: Vec<f64> = (1..=500_000_000usize).map(|i| i as f64).col­lect();

let mut sum = 0.0; for &value in &table { sum += value; }

The query takes 358ms. That’s around 55x faster, and be­lieve it or not, we can do even faster than 358ms. Now this ex­am­ple is­n’t an ap­ples-to-ap­ples com­par­i­son. There’s a lot more go­ing on un­der the hood in Postgres. At the same time, op­ti­miz­ing a data­base is all about re­mov­ing as much of this over­head as pos­si­ble. (If you’re cu­ri­ous two of the biggest causes of over­head from Postgres are 1. lock­ing and 2. pars­ing the Postgres stor­age for­mat and ex­tract­ing the tu­ples rel­e­vant to the query).

To nar­row our fo­cus to just the im­pact of the query en­gine, let’s build a minia­ture ver­sion of the Postgres query en­gine. First, a brief ex­pla­na­tion of what a query en­gine is. When pro­cess­ing your SQL query, Postgres first con­verts your query into an in­ter­nal rep­re­sen­ta­tion called a Query Plan,” which de­scribes *how* Postgres will ex­e­cute the query. In the ex­am­ple above, Postgres will pro­duce a query plan that may look some­thing like the fol­low­ing:

This ef­fec­tively says get rows from my_table and sum the val­ues in those rows”. This query plan is pretty sim­ple given the na­ture of the query, but they can get much more com­pli­cated when you start work­ing with joins/​sorts/​sub­queries etc. In to­tal Postgres has over 40 dif­fer­ent types of plan nodes.

After gen­er­at­ing the query plan, Postgres passes it to the query en­gine. The Postgres query en­gine is the part of Postgres that takes the query plan and ac­tu­ally re­trieves the rows and per­forms the ag­gre­ga­tion. Postgres uses a style of ex­ecu­tor known as the Volcano model.” To get a sense of how it works, here’s a minia­ture im­ple­men­ta­tion of the Postgres query en­gine:

use std::hint::black­_box;

trait Node { fn next(&mut self) -> Option<f64>; }

struct SeqScan<’a> { table: &’a [f64], pos: usize, }

impl Node for SeqScan<’_> { fn next(&mut self) -> Option<f64> { if self.pos >= self.table.len() { re­turn None; // end of table } let value = self.table[self.pos]; self.pos += 1; Some(value) } }

struct SumAggregate<’a> { child: Box<dyn Node + a>, to­tal: f64, done: bool, }

impl Node for SumAggregate<’_> { fn next(&mut self) -> Option<f64> { if self.done { re­turn None; } while let Some(value) = self.child.next() { self.to­tal += value; } self.done = true; Some(self.total) } }

let table: Vec<f64> = (1..=500_000_000usize).map(|i| i as f64).col­lect();

let mut plan = SumAggregate { child: black­_box(Box::new(Se­qS­can { table: &table, pos: 0 })), to­tal: 0.0, done: false, };

let sum = plan.next().un­wrap();

(The black­_box is needed to pre­vent com­piler op­ti­miza­tions from thwart­ing our bench­mark)

The key fea­ture of the Volcano model is the `next()` method, which is sup­ported by all nodes in the query plan. The job of `next()` is to re­turn a sin­gle row. `next()` in a se­quen­tial scan re­turns the next row in the se­quen­tial scan. `next()` on an ag­gre­ga­tion will com­pute the en­tire ag­gre­ga­tion and then re­turn the sin­gle row re­sult. Executing a query plan is just a mat­ter of call­ing `next()` on the root plan node un­til it no longer re­turns any rows. The ad­van­tage of the Volcano model is that it’s very sim­ple. You im­ple­ment a sin­gle method for each of your plan nodes, and that’s it. While sim­pli­fied, the above code is very close to what Postgres does in­ter­nally.

While the Volcano model makes things sim­ple, it also adds a lot of over­head. When I run this ex­am­ple, it takes 1.3s. That’s much faster than the Postgres ver­sion be­cause we’re re­mov­ing a lot of the non-query en­gine pieces, but it’s still slower than the raw for loop be­cause of the Volcano mod­el’s over­head.

The biggest per­for­mance hit in the code above is that `next()` processes only one row at a time. There’s no batch­ing. The `SeqScan.next()` func­tion is called once per row. That adds sig­nif­i­cant over­head, es­pe­cially be­cause many CPU op­ti­miza­tions, such as pipelin­ing, don’t work well when you are call­ing a func­tion that is­n’t known un­til run­time. The first op­ti­miza­tion we can im­ple­ment is batch­ing:

const BATCH: usize = 1024;

trait BatchNode { fn nex­t_­batch(&mut self, out: &mut [f64; BATCH]) -> usize; }

struct BatchSeqScan<’a> { table: &’a [f64], pos: usize, }

impl BatchNode for BatchSeqScan<’_> { fn nex­t_­batch(&mut self, out: &mut [f64; BATCH]) -> usize { let n = (self.table.len() - self.pos).min(BATCH); out[..n].copy­_from_s­lice(&self.table[self.pos..self.pos + n]); self.pos += n; n } }

struct BatchSumAggregate<’a> { child: Box<dyn BatchNode + a>, to­tal: f64, }

impl BatchSumAggregate<’_> { fn run(&mut self) -> f64 { let mut buf = [0.0f64; BATCH]; loop { let n = self.child.nex­t_­batch(&mut buf); if n == 0 { break; } for &value in &buf[..n] { self.to­tal += value; } } self.to­tal } }

let mut plan = BatchSumAggregate { child: black­_box(Box::new(Batch­Se­qS­can { table: &table, pos: 0 })), to­tal: 0.0, }; let sum = plan.run();

Batching on its own elim­i­nates most of the over­head. It brings the time to run the query from 1.3 sec­onds down to around 480ms. Still slower than the for loop, but much closer. One very im­por­tant de­tail is that the batch buffer is al­lo­cated on the stack. This means the ag­gre­ga­tion node does­n’t need to al­lo­cate any mem­ory while it’s run­ning. Allocating mem­ory tends to be one of the slower op­er­a­tions. Therefore, when writ­ing ul­tra-fast code, you’ll want to min­i­mize the num­ber of mem­ory al­lo­ca­tions you make.

Now, if you pro­file the batched ver­sion, the hotspot is now `copy_from_slice`. Even though we are now batch­ing, we still need to copy the items into the buffer. This over­head can be elim­i­nated with what’s known as operator fu­sion”. If there are com­mon op­er­a­tions that we know will be per­formed to­gether, we can cre­ate a sin­gle node that re­places two nodes. In our case, we can cre­ate a sin­gle `SumAggregateSequentialScan` node that com­bines the logic of both the se­quen­tial scan and the sum:

struct SumAggregateSequentialScan<’a> { table: &’a [f64], done: bool, }

impl Node for SumAggregateSequentialScan<’_> { fn next(&mut self) -> Option<f64> { if self.done { re­turn None; } self.done = true; let mut to­tal = 0.0; for &value in self.table { to­tal += value; } Some(total) } }

This gives us the same per­for­mance as the straight for loop be­cause it is lit­er­ally the same code as the for loop. Now this may seem like cheat­ing, and it def­i­nitely is be­cause we’re hard­cod­ing in an op­ti­miza­tion for a spe­cific query we know in ad­vance. With op­er­a­tor fu­sion, it makes sense to hard­code a cou­ple of the most com­mon cases, but you’ll still pretty quickly hit cases you did­n’t pre­pare for ahead of time.

This can be solved with JIT com­pi­la­tion. With JIT com­pi­la­tion, you can gen­er­ate the ideal code you wish you had and cheat” in every query. JIT com­pi­la­tion lets you gen­er­ate the per­fect code for your query, no mat­ter what the query is and al­ways do op­er­a­tor fu­sion. Unfortunately, this post is long enough as is, so I’ll have to talk about how pgrust lever­ages JIT com­pi­la­tion an­other time.

For one fi­nal op­ti­miza­tion, we can look to SIMD. SIMD refers to a set of CPU op­er­a­tions that can per­form one op­er­a­tion across mul­ti­ple pieces of data si­mul­ta­ne­ously. Using SIMD to per­form an op­er­a­tion against mul­ti­ple rows si­mul­ta­ne­ously is usu­ally much faster than per­form­ing the op­er­a­tion on one row at a time. If we change our code to use SIMD:

#[cfg(target_arch = aarch64”)] struct SumAggregateSequentialScanSimd<’a> { table: &’a [f64], done: bool, }

#[cfg(target_arch = aarch64”)] impl Node for SumAggregateSequentialScanSimd<’_> { fn next(&mut self) -> Option<f64> { if self.done { re­turn None; } self.done = true; use std::arch::aarch64::*; let mut acc = un­safe { [vdupq_n_f64(0.0); 4] }; let (chunks, rest) = self.table.as_chunks::<8>(); for chunk in chunks { for lane in 0..4 { un­safe { let v = vld1q_f64(chunk.as_ptr().add(2 * lane)); acc[lane] = vad­dq_f64(acc[lane], v); } } } let mut tail = 0.0; for &value in rest { tail += value; } Some(unsafe { let s01 = vad­dq_f64(acc[0], acc[1]); let s23 = vad­dq_f64(acc[2], acc[3]); vad­dvq_f64(vad­dq_f64(s01, s23)) + tail }) } }

Our code now takes 135ms which is now al­most 3x faster than the for loop and 10x faster than our orig­i­nal Volcano code. While it is com­mon for com­pil­ers to re­place for loops with SIMD equiv­a­lents, I chose this ex­am­ple so that would­n’t hap­pen. Compilers will usu­ally avoid in­tro­duc­ing SIMD when op­er­at­ing on floats, be­cause they will pro­duce a slightly dif­fer­ent re­sult. This is be­cause float­ing point arith­metic is not as­so­cia­tive, so chang­ing the or­der in which you do a sum can pro­duce a slightly dif­fer­ent re­sult.

All in all, with three sim­ple op­ti­miza­tions, we were able to make our query 10x faster. Here’s where things ended up:

These types of op­ti­miza­tions, and many more, en­able pgrust to per­form hun­dreds of times faster than Postgres for an­a­lyt­i­cal queries.

Benchmark setup: AWS c8g.4xlarge (Graviton4, 16 vCPU), PostgreSQL 18.4 with `max_parallel_workers_per_gather = 0`, data warm in shared buffers, me­dian of 5 runs. Rust built with `cargo build –release`, 4 runs per im­ple­men­ta­tion, all mea­sured in one process on one ma­chine.

Thanks for read­ing, and if you want to sup­port the pro­ject, the best way to sup­port pgrust is to give us a star on GitHub. If you want to fol­low along:

1. GitHub 2. Discord 3. Mailing list — weekly up­dates on pgrust, in­clud­ing the fol­low-up on JIT com­pi­la­tion 4. pgrust.com

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

Visit pancik.com for more.