10 interesting stories served every morning and every evening.




1 549 shares, 15 trendiness

Yes, It’s Fascism

This ar­ti­cle was fea­tured in the One Story to Read Today newslet­ter. Sign up for it here.

Until re­cently, I re­sisted us­ing the F-word to de­scribe President Trump. For one thing, there were too many el­e­ments of clas­si­cal fas­cism that did­n’t seem to fit. For an­other, the term has been overused to the point of mean­ing­less­ness, es­pe­cially by left-lean­ing types who call you a fas­cist if you op­pose abor­tion or af­fir­ma­tive ac­tion. For yet an­other, the term is hazily de­fined, even by its ad­her­ents. From the be­gin­ning, fas­cism has been an in­co­her­ent doc­trine, and even to­day schol­ars can’t agree on its de­f­i­n­i­tion. Italy’s orig­i­nal ver­sion dif­fered from Germany’s, which dif­fered from Spain’s, which dif­fered from Japan’s.

I ac­cepted President Biden’s char­ac­ter­i­za­tion of the MAGA move­ment as semi-fascist” be­cause some par­al­lels were glar­ingly ap­par­ent. Trump was def­i­nitely an au­thor­i­tar­ian, and un­ques­tion­ably a pat­ri­mo­ni­al­ist. Beyond that, though, the best de­scrip­tion seemed to be a psy­cho­log­i­cal one pro­pounded by John Bolton, Trump’s first-term na­tional se­cu­rity ad­viser: He lis­tens to Putin, he lis­tens to Xi, he lis­tens to how they talk about gov­ern­ing un­bur­dened by un­co­op­er­a­tive leg­is­la­tures, un­con­cerned with what the ju­di­ciary may do, and he thinks to him­self, Why can’t I do that? This does­n’t amount to be­ing a fas­cist, in my view, [or] hav­ing a the­ory of how you want to gov­ern. It’s just Why can’t I have the same fun they have?”

Writing a year ago, I ar­gued that Trump’s gov­ern­ing regime is a ver­sion of pat­ri­mo­ni­al­ism, in which the state is treated as the per­sonal prop­erty and fam­ily busi­ness of the leader. That is still true. But, as I also noted then, pat­ri­mo­ni­al­ism is a style of gov­ern­ing, not a for­mal ide­ol­ogy or sys­tem. It can be lay­ered atop all kinds of or­ga­ni­za­tional struc­tures, in­clud­ing not just na­tional gov­ern­ments but also ur­ban po­lit­i­cal ma­chines such as Tammany Hall, crim­i­nal gangs such as the Mafia, and even re­li­gious cults. Because its only firm prin­ci­ple is per­sonal loy­alty to the boss, it has no spe­cific agenda. Fascism, in con­trast, is ide­o­log­i­cal, ag­gres­sive, and, at least in its early stages, rev­o­lu­tion­ary. It seeks to dom­i­nate pol­i­tics, to crush re­sis­tance, and to rewrite the so­cial con­tract.

Over Trump’s past year, what orig­i­nally looked like an ef­fort to make the gov­ern­ment his per­sonal play­thing has drifted dis­tinctly to­ward doc­tri­nal and op­er­a­tional fas­cism. Trump’s ap­petite for leben­sraum, his claim of un­lim­ited power, his sup­port for the global far right, his politi­ciza­tion of the jus­tice sys­tem, his de­ploy­ment of per­for­ma­tive bru­tal­ity, his os­ten­ta­tious vi­o­la­tion of rights, his cre­ation of a na­tional para­mil­i­tary po­lice—all of those de­vel­op­ments be­speak some­thing more pur­pose­ful and sin­is­ter than run-of-the-mill greed or gang­ster­ism.

When the facts change, I change my mind. Recent events have brought Trump’s gov­ern­ing style into sharper fo­cus. Fascist best de­scribes it, and re­luc­tance to use the term has now be­come per­verse. That is not be­cause of any one or two things he and his ad­min­is­tra­tion have done but be­cause of the to­tal­ity. Fascism is not a ter­ri­tory with clearly marked bound­aries but a con­stel­la­tion of char­ac­ter­is­tics. When you view the stars to­gether, the con­stel­la­tion plainly ap­pears.

Demolition of norms. From the be­gin­ning of his first pres­i­den­tial run in 2015, Trump de­lib­er­ately crashed through every bound­ary of ci­vil­ity; he mocked Senator John McCain’s war hero­ism, mocked fel­low can­di­date Carly Fiorina’s face, seem­ingly mocked the Fox News host Megyn Kelly’s men­stru­a­tion, slurred im­mi­grants, and much more. Today he still does it, re­cently mak­ing an ob­scene ges­ture to a fac­tory worker and call­ing a jour­nal­ist piggy.” This is a fea­ture of the fas­cist gov­ern­ing style, not a bug. Fascists know that what the American Founders called the republican virtues” im­pede their po­lit­i­cal agenda, and so they glee­fully trash lib­eral pieties such as rea­son and rea­son­able­ness, ci­vil­ity and civic spirit, tol­er­a­tion and for­bear­ance. By mock­ing de­cency and say­ing the un­sayable, they open the way for what William Galston has called the dark pas­sions” of fear, re­sent­ment, and es­pe­cially dom­i­na­tion—the kind of pol­i­tics that shifts the pub­lic dis­course to ground on which lib­er­als can­not com­pete.

Glorification of vi­o­lence. Every state uses vi­o­lence to en­force its laws, but lib­eral states use it re­luc­tantly, whereas fas­cism em­braces and flaunts it. Trump thus praises a vi­o­lent mob; en­dorses tor­ture; muses fondly about punch­ing, body-slam­ming, and shoot­ing pro­test­ers and jour­nal­ists; and re­port­edly sug­gests shoot­ing pro­test­ers and mi­grants. His re­cruit­ment ads for ICE glam­or­ize mil­i­tary-style raids of homes and neigh­bor­hoods; his pro­pa­ganda takes child­ish de­light in the killing of civil­ians; and we have all seen videos of agents drag­ging peo­ple out of cars and homes—partly be­cause the gov­ern­ment films them. Like the de­mo­li­tion of civic de­cency, the val­oriza­tion of vi­o­lence is not in­ci­den­tal to fas­cism; it is part and par­cel.

Might is right. Also char­ac­ter­is­tic of fas­cism is what George Orwell called bully-worship”: the prin­ci­ple that, as Thucydides fa­mously put it, the strong do what they can and the weak suf­fer what they must.” This view came across in Trump’s no­to­ri­ous Oval Office meet­ing with Ukrainian President Volodymyr Zelensky, in which Trump showed open con­tempt for what he re­garded as Ukraine’s weak­ness; it came across ex­plic­itly, and chill­ingly, when Stephen Miller, the pres­i­den­t’s most pow­er­ful aide, told CNNs Jake Tapper: We live in a world, in the real world, that is gov­erned by strength, that is gov­erned by force, that is gov­erned by power. These are the iron laws of the world that have ex­isted since the be­gin­ning of time.” Those words, though alien to the tra­di­tions of American and Christian moral­ity, could have come from the lips of any fas­cist dic­ta­tor.

Politicized law en­force­ment. Liberals fol­low the law whether they like it or not; fas­cists, only when they like it. Nazism fea­tured a dual state,” where, at any mo­ment, the pro­tec­tions of or­di­nary law could cease to ap­ply. Trump makes no se­cret of de­spis­ing due process of law; he has de­manded count­less times that his op­po­nents be jailed (“Lock her up!” chants, with his en­dorse­ment, were a promi­nent fea­ture of his 2016 cam­paign), and he has sug­gested the Constitution’s termination” and said I don’t know” when asked if he is re­quired to up­hold it. His sin­gle most dan­ger­ous sec­ond-term in­no­va­tion is the re­pur­pos­ing of fed­eral law en­force­ment to per­se­cute his en­e­mies (and shield his friends). No prior pres­i­dent has pro­duced any­thing like Trump’s di­rect and pub­lic or­der for the Justice Department to in­ves­ti­gate two for­mer of­fi­cials, or like his bla­tantly re­tal­ia­tory pros­e­cu­tions of James Comey and Letitia James. At least 470 peo­ple, or­ga­ni­za­tions and in­sti­tu­tions have been tar­geted for ret­ri­bu­tion since Trump took of­fice—an av­er­age of more than one a day,” Reuters re­ported in November (and to­day one can add oth­ers to the list, be­gin­ning with Federal Reserve Chair Jerome Powell). Had Trump done noth­ing else, his de­mo­li­tion of in­de­pen­dent and apo­lit­i­cal law en­force­ment would still have moved the U. S. gov­ern­ment closer than ever be­fore to a fascis­tic model.

Dehumanization. Fascism draws its le­git­i­macy from its claims of de­fend­ing the peo­ple from en­e­mies who are an­i­mals, crim­i­nals, brutes. Trump char­ac­ter­izes (for in­stance) po­lit­i­cal op­po­nents as vermin” and im­mi­grants as garbage” who are poisoning the blood of our coun­try” (language straight out of the Third Reich). Vice President Vance, as a sen­a­tor, en­dorsed a book called Unhumans (a ti­tle that refers to the left). And who can for­get his false claim that Haitians abduct and eat pet cats and dogs?

Police-state tac­tics. Trump has turned ICE into a sprawl­ing para­mil­i­tary that roves the coun­try at will, searches and de­tains nonci­t­i­zens and cit­i­zens with­out war­rants, uses force os­ten­ta­tiously, op­er­ates be­hind masks, re­ceives skimpy train­ing, lies about its ac­tiv­i­ties, and has been told that it en­joys absolute im­mu­nity.” He more than dou­bled the agen­cy’s size in 2025, and its bud­get is now larger than those of all other fed­eral law-en­force­ment agen­cies com­bined, and larger than the en­tire mil­i­tary bud­gets of all but 15 coun­tries. This is go­ing to af­fect every com­mu­nity, every city,” the Cato Institute scholar David Bier re­cently ob­served. Really al­most every­one in our coun­try is go­ing to come in con­tact with this, one way or the other.” In Minneapolis and else­where, the agency has be­haved provoca­tively, some­times bru­tally, and ar­guably il­le­gally—be­hav­iors that Trump and his staff have en­cour­aged, shielded, and sent cam­era crews to pub­li­cize, per­haps in the hope of elic­it­ing vi­o­lent re­sis­tance that would jus­tify fur­ther crack­downs, a stan­dard fas­cist strat­a­gem. Homeland Security Secretary Kristi Noem’s re­cent ap­pear­ance with a sign read­ing One of ours, all of yours seemed to nod to­ward an­other fas­cist standby, col­lec­tive pun­ish­ment—as did the ad­min­is­tra­tion’s de­ci­sion to flood Minneapolis with thou­sands of of­fi­cers af­ter res­i­dents there be­gan protest­ing fed­eral tac­tics, a pri­or­i­ti­za­tion that was ex­plic­itly ret­ribu­tive.

Undermining elec­tions. Trump’s re­cent mus­ing that there should be no 2026 elec­tion may or may not have been joc­u­lar (as the White House has main­tained), but he and his MAGA sup­port­ers be­lieve they never lose an elec­tion, pe­riod. They went to great lengths to over­turn the 2020 elec­tion, as the pros­e­cu­tor Jack Smith’s in­dict­ment of Trump and sub­se­quent re­port de­tail ad nau­seam. Rigging, steal­ing, or out­right can­cel­ing elec­tions is, of course, job one for fas­cists. Although Trump is term-lim­ited, we must not ex­pect that he and his MAGA loy­al­ists will vol­un­tar­ily turn over the White House to a Democrat in 2029, re­gard­less of what the vot­ers say—and the sec­ond in­sur­rec­tion will be far bet­ter or­ga­nized than the first.

What’s pri­vate is pub­lic. Classical fas­cism re­jects the fun­da­men­tal lib­eral dis­tinc­tion be­tween the gov­ern­ment and the pri­vate sec­tor, per Mussolini’s dic­tum: No in­di­vid­u­als or groups out­side the State.” Among Trump’s most au­da­cious (if only in­ter­mit­tently suc­cess­ful) ini­tia­tives are his ef­forts to com­man­deer pri­vate en­ti­ties, in­clud­ing law firms, uni­ver­si­ties, and cor­po­ra­tions. One of his first acts as pres­i­dent last year was to brazenly defy a newly en­acted law by tak­ing the own­er­ship of TikTok into his own hands. Bolton un­der­stood this men­tal­ity when he said, He can’t tell the dif­fer­ence be­tween his own per­sonal in­ter­est and the na­tional in­ter­est, if he even un­der­stands what the na­tional in­ter­est is.”

Attacks on news me­dia. Shortly af­ter tak­ing of­fice in 2017, Trump de­nounced the news me­dia as the en­emy of the American peo­ple,” a phrase fa­mil­iar from dic­ta­tor­ships abroad. His hos­til­ity never re­lented, but in his sec­ond term, it has reached new heights. Trump has threat­ened broad­cast li­censes, abused his reg­u­la­tory au­thor­ity, ma­nip­u­lated own­er­ship deals, filed ex­or­bi­tant law­suits, played fa­vorites with jour­nal­is­tic ac­cess, searched a re­porter’s home, and vil­i­fied news out­lets and jour­nal­ists. Although Trump can­not dom­i­nate news me­dia in the United States in the way that Prime Minister Viktor Orbán has done in Hungary, he is run­ning the Orbán play­book. No other pres­i­dent, not even Richard Nixon (no friend of the me­dia), has used such bla­tantly il­lib­eral tac­tics against the press.

Territorial and mil­i­tary ag­gres­sion. One rea­son I held out against iden­ti­fy­ing Trumpism with fas­cism in his first term was Trump’s ap­par­ent lack of in­ter­est in ag­gres­sion against other states; if any­thing, he had seemed shy about us­ing force abroad. Well, that was then. In his sec­ond term, he has used mil­i­tary force promis­cu­ously. Of course, many pres­i­dents have de­ployed force, but Trump’s ex­plic­itly preda­tory use of it to grab Venezuela’s oil and his gang­ster-style threat to take Greenland from Denmark the easy way” or the hard way” were 1930s-style au­thor­i­tar­ian moves. The same goes for his con­tempt for in­ter­na­tional law, bind­ing al­liances, and transna­tional or­ga­ni­za­tions such as the European Union—all of which im­pede the state’s un­con­strained ex­er­cise of its will, a cen­tral fas­cist tenet. (Mussolini: Equally for­eign to the spirit of Fascism … are all in­ter­na­tion­al­is­tic or League su­per­struc­tures which, as his­tory shows, crum­ble to the ground when­ever the heart of na­tions is deeply stirred by sen­ti­men­tal, ide­al­is­tic or prac­ti­cal con­sid­er­a­tions.”)

Transnational reach. Like au­thor­i­tar­i­ans gen­er­ally, fas­cists love com­pany; the world is safer for them if there are more of them. In his sec­ond term, Trump has bro­ken with long-stand­ing U. S. pol­icy by di­al­ing back sup­port for hu­man rights while prais­ing and sup­port­ing au­thor­i­tar­ian pop­ulists and il­lib­eral na­tion­al­ists in Serbia, Poland, Hungary, Germany, Turkey, El Salvador, and Slovakia, among other places—and by be­ing weirdly def­er­en­tial to the strong­man Russian President Vladimir Putin. Even more strik­ing is his de facto align­ment against America’s lib­eral al­lies and their par­ties in Europe, which he holds in con­tempt.

Blood-and-soil na­tion­al­ism. A fas­cist trade­mark is its in­sis­tence that the coun­try is not just a col­lec­tion of in­di­vid­u­als but a peo­ple, a Volk: a mys­ti­cally de­fined and eth­ni­cally pure group bound to­gether by shared blood, cul­ture, and des­tiny. In keep­ing with that idea, Trump has re­pu­di­ated birthright cit­i­zen­ship, and Vance has called to redefine the mean­ing of American cit­i­zen­ship in the 21st cen­tury” so that pri­or­ity goes to Americans with longer his­tor­i­cal ties: the peo­ple whose an­ces­tors fought in the Civil War,” as he put it, or peo­ple whom oth­ers on the MAGA right call heritage Americans.” In other words, some Americans are more volk­ish than oth­ers.

White and Christian na­tion­al­ism. While Vance, Trump, and MAGA do not pro­pound an ex­plicit ide­ol­ogy of racial hi­er­ar­chy, they make no se­cret of pin­ing for a whiter, more Christian America. Trump has found many ways to com­mu­ni­cate this: for ex­am­ple, by mak­ing clear his dis­dain for shithole” coun­tries and his pref­er­ence for white Christian im­mi­grants; by point­edly ac­cept­ing white South Africans as po­lit­i­cal refugees (while clos­ing the door to most other asy­lum seek­ers); by re­nam­ing mil­i­tary bases to share the names of Confederate gen­er­als (after Congress or­dered their names re­moved); by say­ing that civil-rights laws led to whites’ be­ing very badly treated.” In his National Security Strategy, he cas­ti­gates Europe for al­low­ing im­mi­gra­tion to un­der­mine civilizational self-con­fi­dence” and pro­claims, We want Europe to re­main European,” a ral­ly­ing cry of white Christian na­tion­al­ists across the con­ti­nent. Taking his cue, the Department of Homeland Security has prop­a­gated unashamedly white-na­tion­al­ist themes, and na­tional parks and mu­se­ums have scrubbed their ex­hibits of ref­er­ences to slav­ery.

Mobs and street thugs. The use of mili­tias and mobs to ha­rass, rough up, and oth­er­wise in­tim­i­date op­po­nents is a stan­dard fas­cist strat­a­gem (the text­book ex­am­ple be­ing Hitler’s Kristallnacht pogrom in 1938). As few will need re­mind­ing, the Trump-MAGA par­al­lel is the mob and mili­tia vi­o­lence against the U. S. Capitol on January 6, 2021. Trump know­ingly laid ground­work for this op­er­a­tion, call­ing on mili­tia forces to stand back and stand by” in September 2020 and later dog-whistling Be there, will be wild!” to his sup­port­ers. His par­don of all of the Capitol at­tack­ers—more than 1,500, in­clud­ing the most vi­o­lent—only proved what we knew, which is that they had his bless­ing. While Trump has found state vi­o­lence ad­e­quate to his pur­poses so far in his sec­ond term, street vi­o­lence is self-ev­i­dently in his reper­toire.

Leader ag­gran­dize­ment. Since 2016, when he de­clared that I alone can fix it” and bragged that his sup­port­ers would re­main loyal if he shot some­one on Fifth Avenue, Trump has cul­ti­vated a per­son­al­ity cult. Although some of his ef­forts at self-ag­gran­dize­ment can seem com­i­cal (the gild­ing of the Oval Office, the re­nam­ing of the Kennedy Center, the pro­posed tri­umphal arch), he un­der­stands the cen­tral­ity of leader wor­ship in a fas­cist-style regime. In sharp con­tradis­tinc­tion to the American pres­i­den­tial tra­di­tion since George Washington, he makes no pre­tense of serv­ing the peo­ple or the Constitution. His mind­set, his sym­bol­ism, and his rhetoric all un­der­score the point he made to The New York Times this month: His own mind and moral­ity are the only lim­its on his global power. This is Fascism 101.

Alternative facts. As Orwell, Hannah Arendt, and prac­ti­cally every other scholar of au­thor­i­tar­i­an­ism have em­pha­sized, cre­at­ing a re­al­ity-dis­tor­tion field is the first thing a fascis­tic gov­ern­ment will do, the bet­ter to drive its own twisted nar­ra­tive, con­fuse the cit­i­zenry, de­mor­al­ize po­lit­i­cal op­po­nents, and jus­tify every man­ner of cor­rup­tion and abuse. While other pres­i­dents (including some good ones) have lied, none have come close to Trump’s de­ploy­ment of Russian-style mass dis­in­for­ma­tion, as I de­tail in my book The Constitution of Knowledge. From the start of his first term, Trump has made alternative facts” a hall­mark of his gov­ern­ing style, is­su­ing lies, ex­ag­ger­a­tions, and half-truths at a rate of 20 a day. Predictably, his sec­ond term has brought more of the same. Following his lead, a MAGA-fied post­mod­ern right glee­fully trashes ob­jec­tiv­ity as elit­ism and truth as a mask for power.

Politics as war. A dis­tinc­tive mark of fas­cism is its con­cep­tion of pol­i­tics, best cap­tured by Carl Schmitt, an early-20th-cen­tury German po­lit­i­cal the­o­rist whose doc­trines le­git­imized Nazism. Schmitt re­jected the Madisonian view of pol­i­tics as a so­cial ne­go­ti­a­tion in which dif­fer­ent fac­tions, in­ter­ests, and ide­ol­ogy come to agree­ment, the core idea of our Constitution. Rather, he saw pol­i­tics as a state of war be­tween en­e­mies, nei­ther of which can un­der­stand the other and both of which feel ex­is­ten­tially threat­ened—and only one of which can win. The aim of Schmittian pol­i­tics is not to share the coun­try but to dom­i­nate or de­stroy the other side. This con­cep­tion has been ev­i­dent in MAGA pol­i­tics since Michael Anton (now a Trump-administration of­fi­cial) pub­lished his fa­mous ar­ti­cle ar­gu­ing that the 2016 elec­tion was a life-and-death bat­tle to save the coun­try from the left (a Flight 93” elec­tion: charge the cock­pit or you die”). In the speech given by Stephen Miller at Charlie Kirk’s memo­r­ial ser­vice, MAGAs em­brace of Schmittian to­tal­ism found its apoth­e­o­sis: We are the storm. And our en­e­mies can­not com­pre­hend our strength, our de­ter­mi­na­tion, our re­solve, our pas­sion … You are noth­ing. You are wicked­ness.”

Governing as rev­o­lu­tion. Although born in rev­o­lu­tion, the American lib­eral tra­di­tion, es­pe­cially its con­ser­v­a­tive branch, prizes con­ti­nu­ity, sta­bil­ity, and in­cre­men­tal change guided by rea­son. Fascism, by con­trast, is not re­ac­tionary but rev­o­lu­tion­ary,” as Mussolini in­sisted. It seeks to up­root and re­place the old or­der and em­braces bold, ex­hil­a­rat­ing ac­tion un­shack­led to ra­tio­nal de­lib­er­a­tion. MAGA em­braces its own rev­o­lu­tion­ary ethos, what Russell Vought, the ad­min­is­tra­tion’s Office of Management and Budget di­rec­tor and prob­a­bly its most for­mi­da­ble in­tel­lect, has called radical con­sti­tu­tion­al­ism,” a doc­trine that would vi­ti­ate many checks on pres­i­den­tial power. In pur­suit of this vi­sion, Vought told Tucker Carlson in a November 2024 in­ter­view, The pres­i­dent has to move ex­ec­u­tively as fast and as ag­gres­sively as pos­si­ble, with a rad­i­cal con­sti­tu­tional per­spec­tive, to be able to dis­man­tle that [federal] bu­reau­cracy and their power cen­ters” be­cause the bu­reau­cra­cies hate the American peo­ple.” He pre­dicted, If you have a rad­i­cal con­sti­tu­tion­al­ism, it’s go­ing to be desta­bi­liz­ing … But it’s also ex­hil­a­rat­ing.” He said he would put fed­eral agen­cies in trauma,” an idea echoed by Christopher Rufo, an ar­chi­tect of Trump’s at­tack on uni­ver­si­ties, which Rufo de­scribed as a counterrevolution blue­print” to put uni­ver­si­ties in an ex­is­ten­tial ter­ror.” As Trump shut­tered a con­gres­sion­ally man­dated agency, re­named an in­ter­na­tional body of wa­ter, ar­rested an op-ed writer, de­ported im­mi­grants to a for­eign gu­lag, ter­ror­ized American cities, threat­ened an ally, and more, he showed how it looks when a rad­i­cal­ized state aban­dons ra­tio­nal de­lib­er­a­tion and goes to war against it­self.

One can ob­ject that there are el­e­ments of clas­si­cal European fas­cism that are not found in Trumpism (mass ral­lies and pub­lic rit­u­als, for ex­am­ple)—or that there are ad­di­tional el­e­ments of Trumpism that be­long on the list (MAGAs hy­per­mas­culin­ity, misog­yny, and co-op­tion of Christianity all re­sem­ble fas­cist pat­terns). The ex­er­cise of com­par­ing fas­cis­m’s var­i­ous forms is not pre­cise. If his­to­ri­ans ob­ject that Trump is not a copy of Mussolini or Hitler or Franco, the re­ply is yes—but so what? Trump is build­ing some­thing new on old prin­ci­ples. He is show­ing us in real time what 21st-century American fas­cism looks like.

If, how­ever, Trump is a fas­cist pres­i­dent, that does not mean that America is a fas­cist coun­try. The courts, the states, and the me­dia re­main in­de­pen­dent of him, and his ef­forts to brow­beat them will likely fail. He may lose his grip on Congress in November. He has not suc­ceeded in mold­ing pub­lic opin­ion, ex­cept against him­self. He has out­run the man­date of his vot­ers, his coali­tion is frac­tur­ing, and he has ne­glected tools that al­low pres­i­dents to make en­dur­ing change. He and his party may defy the Constitution, but they can­not rewrite it, thank good­ness.

Read: How to tell if your pres­i­dent is a dic­ta­tor

So the United States, once the world’s ex­em­plary lib­eral democ­racy, is now a hy­brid state com­bin­ing a fas­cist leader and a lib­eral Constitution; but no, it has not fallen to fas­cism. And it will not.

In which case, is there any point in call­ing Trump a fas­cist, even if true? Doesn’t that alien­ate his vot­ers? Wouldn’t it be bet­ter just to de­scribe his ac­tions with­out la­bel­ing him con­tro­ver­sially?

Until re­cently, I thought so. No longer. The re­sem­blances are too many and too strong to deny. Americans who sup­port lib­eral democ­racy need to rec­og­nize what we’re deal­ing with in or­der to cope with it, and to rec­og­nize some­thing, one must name it. Trump has re­vealed him­self, and we must name what we see.

...

Read the original on www.theatlantic.com »

2 447 shares, 92 trendiness

After two years of vibecoding, I'm back to writing by hand

Most peo­ple’s jour­ney with AI cod­ing starts the same: you give it a sim­ple task. You’re im­pressed. So you give it a large task. You’re even more im­pressed.

You open X and draft up a rant on job dis­place­ment.

If you’ve per­sisted past this point: con­grat­u­la­tions, you un­der­stand AI cod­ing bet­ter than 99% of peo­ple.

Serious en­gi­neers us­ing AI to do real work and not just week­end pro­jects largely also fol­low a pre­dictable de­vel­op­ment arc.

Still amazed at the big task you gave it, you won­der if you can keep giv­ing it big­ger and big­ger tasks. Maybe even that haunt­ing refac­tor no one wants to take on?

But here’s where the cur­tain starts to crin­kle.

On the one hand, you’re amazed at how well it seems to un­der­stand you. On the other hand, it makes frus­trat­ing er­rors and de­ci­sions that clearly go against the shared un­der­stand­ing you’ve de­vel­oped.

You quickly learn that be­ing an­gry at the model serves no pur­pose, so you be­gin to in­ter­nal­ize any un­sat­is­fac­tory out­put.

It’s me. My prompt sucked. It was un­der-spec­i­fied.”

If I can spec­ify it, it can build it. The sky’s the limit,” you think.

So you open Obsidian and be­gin draft­ing beefy spec docs that de­scribe the fea­ture in your head with im­pres­sive de­tail. Maybe you’ve put to­gether a full page of a prompt, and spent half an hour do­ing so.

But you find that spec-dri­ven de­vel­op­ment does­n’t work ei­ther. In real life, de­sign docs and specs are liv­ing doc­u­ments that evolve in a volatile man­ner through dis­cov­ery and im­ple­men­ta­tion. Imagine if in a real com­pany you wrote a de­sign doc in 1 hour for a com­plex ar­chi­tec­ture, handed it off to a mid-level en­gi­neer (and told him not to dis­cuss the doc with any­one), and took off on va­ca­tion.

Not only does an agent not have the abil­ity to evolve a spec­i­fi­ca­tion over a multi-week pe­riod as it builds out its lower com­po­nents, it also makes de­ci­sions up­front that it later does­n’t de­vi­ate from. And most agents sim­ply sur­ren­der once they feel the prob­lem and so­lu­tion has got­ten away from them (though this rarely hap­pens any­more, since agents will just force them­selves through the walls of the maze.)

What’s worse is code that agents write looks plau­si­ble and im­pres­sive while it’s be­ing writ­ten and pre­sented to you. It even looks good in pull re­quests (as both you and the agent are well trained in what a good” pull re­quest looks like).

It’s not un­til I opened up the full code­base and read its lat­est state cover to cover that I be­gan to see what we the­o­rized and hoped was only a di­min­ish­ing ar­ti­fact of ear­lier mod­els: slop.

It was pure, unadul­ter­ated slop. I was be­wil­dered. Had I not re­viewed every line of code be­fore ad­mit­ting it? Where did all this…gunk..come from?

In ret­ro­spect, it made sense. Agents write units of changes that look good in iso­la­tion. They are con­sis­tent with them­selves and your prompt. But re­spect for the whole, there is not. Respect for struc­tural in­tegrity there is not. Respect even for neigh­bor­ing pat­terns there was not.

The AI had sim­ply told me a good story. Like vibewrit­ing a novel, the agent showed me a good cou­ple para­graphs that sure enough made sense and were struc­turally and syn­tac­ti­cally cor­rect. Hell, it even picked up on the idio­syn­crasies of the var­i­ous char­ac­ters. But for what­ever rea­son, when you read the whole chap­ter, it’s a mess. It makes no sense in the over­all con­text of the book and the pre­ced­ing and pro­ceed­ing chap­ters.

After read­ing months of cu­mu­la­tive highly-spec­i­fied agen­tic code, I said to my­self: I’m not ship­ping this shit. I’m not gonna charge users for this. And I’m not go­ing to promise users to pro­tect their data with this.

I’m not go­ing to lie to my users with this.

So I’m back to writ­ing by hand for most things. Amazingly, I’m faster, more ac­cu­rate, more cre­ative, more pro­duc­tive, and more ef­fi­cient than AI, when you price every­thing in, and not just code to­kens per hour.

You can fol­low me on X @atmoio, where I post a few times a week about agen­tic cod­ing.

You can watch the video coun­ter­part to this es­say on YouTube:

...

Read the original on atmoio.substack.com »

3 443 shares, 15 trendiness

Oneplus phone update introduces hardware anti-rollback

...

Read the original on consumerrights.wiki »

4 404 shares, 38 trendiness

Things I’ve learned in my 10 years as an engineering manager

It’s been a while since my boss told me I needed to start hir­ing for my team. While I was at it, I should also han­dle on­board­ing… Since I knew the roadmap, I could take own­er­ship of that… And be­cause I knew the peo­ple, I could coach them in their ca­reers.

I did­n’t re­al­ize at the time, but he was doom­ing me to be an en­gi­neer­ing man­ager.

Since then, I’ve worked across four com­pa­nies as a man­ager, one as a founder, and an­other as a man­ager of man­agers. I will skip the stan­dard ad­vice and lessons on Engineering Management and fo­cus on the non-ob­vi­ous ones.

There is no stan­dard de­f­i­n­i­tion for an Engineering Manager. If you pick two ran­dom man­agers, they can do very dif­fer­ent things, even if they are at the same com­pany.

In every com­pany I’ve worked at, my role has never been the same. The only con­stant is that it’s de­fined by the team’s needs, re­quir­ing you to bal­ance across four pil­lars: Product, Process, People, and Programming.

* Large team? Say good­bye to pro­gram­ming. You’ll fo­cus on build­ing ca­reers, co­or­di­nat­ing ef­forts, and nav­i­gat­ing the or­ga­ni­za­tion to get re­sources for your team.

* Small team? You’ll man­age scope to match re­al­ity, and with less com­mu­ni­ca­tion over­head, you might ac­tu­ally do some cod­ing.

* No PM? You own the prod­uct com­pletely: val­i­dat­ing fea­tures, pri­or­i­tiz­ing the roadmap, and talk­ing to clients. This takes up most of your time be­cause ship­ping fea­tures that don’t of­fer user value makes every­thing else point­less.

* Reporting to the CEO? You’re now the link to sales, op­er­a­tions, and client com­mu­ni­ca­tions.

The key is to iden­tify where your team’s bot­tle­neck lies in your soft­ware de­vel­op­ment life­cy­cle. You’ll prob­a­bly shift be­tween pil­lars as cir­cum­stances change, and that’s the point: the role re­quires flex­i­bil­ity.

Tip: Never ask the in­ter­viewer what they ex­pect from a man­ager. Some man­agers as­sume their ex­pe­ri­ence is in­dus­try stan­dard and might find that ques­tion odd. Instead, ask about their daily life and the chal­lenges that take up most of their time.

A few times in my ca­reer as a de­vel­oper, I won­dered, Who is this fea­ture even for? Who will use it?” No one on my team knew. We were do­ing it be­cause we were told to. Morale was low. We felt we were work­ing on things that did­n’t mat­ter - and we were. Eventually, our team dis­banded, and en­gi­neers scat­tered across other pro­jects.

The most com­mon rea­son com­pa­nies fail is cre­at­ing prod­ucts that don’t de­liver value to users, caus­ing them not to pay.

Oh, but I have a PM for that,” you might say. But hav­ing a PM is not enough. Everyone needs to care about the prod­uct. Your team is­n’t paid to just de­liver code but to use it to solve prob­lems.

Code is valu­able only when it ben­e­fits the end user. Sometimes, a no-code in­te­gra­tion can out­per­form a cus­tom so­lu­tion. At times, it’s bet­ter not to cre­ate a new fea­ture at all to avoid main­tain­ing a sys­tem. Teams that un­der­stand the prob­lem, not just the spec, can pivot when nec­es­sary.

Every process trades time and at­ten­tion for re­li­a­bil­ity or qual­ity. The prob­lem oc­curs when teams stop ques­tion­ing if the trade is still worth it. Ceremonies be­come rit­u­als. Metrics turn into goals. No one re­mem­bers why we spend an hour of our lives on this meet­ing.

Process bloat creeps in slowly. An en­gi­neer ships a bro­ken UI to pro­duc­tion. Designers com­plain, man­agers panic, and sud­denly every PR re­quires de­signer ap­proval. The whole team bears the cost of a sin­gle iso­lated in­ci­dent.

Good process serves you so you can serve cus­tomers. But if you’re not watch­ful, the process can be­come the thing. You stop look­ing at out­comes and just make sure you’re do­ing the process right. The process is not the thing. It’s al­ways worth ask­ing, do we own the process or does the process own us?

The right process varies based on con­text: team size, ex­pe­ri­ence lev­els, and dead­line pres­sure. What works for a ma­ture team might not work for a new one. Keep ques­tion­ing and it­er­at­ing. If a process is­n’t im­prov­ing de­liv­ery, cut it.

Your di­rect re­ports are the peo­ple who in­ter­act with you the most. They look to you for lead­er­ship and clar­ity, and trust that you’ll tell them what they need to know.

That’s why ly­ing or with­hold­ing in­for­ma­tion that af­fects them causes ir­re­versible dam­age. They might not leave im­me­di­ately, but they will re­sent you.

I have a friend who still re­sents a man­ager for a lie told three years ago. They found an­other com­pany, but they’re still an­gry about it.

Trust ar­rives on foot and leaves by horse­back.”

I’ve seen some man­agers de­scribe the role as a shield that blocks every­thing from above,” and I dis­agree. A good man­ager is more like a trans­par­ent um­brella. They pro­tect the team from un­nec­es­sary stress and pres­sure, but don’t hide re­al­ity from them.

Telling the team: Our users aren’t thrilled so far. We need to find ways to bet­ter serve them. The pro­ject risks can­cel­la­tion if we don’t.” That’s fair game. They de­serve to know.

When you do de­liver hard news, state it clearly and fo­cus on how the team will do about it. If you act scared, they’ll be scared too. Your goal is to get them think­ing about the next steps.

I see man­agers walk into ex­ec­u­tive meet­ings say­ing, We’re not sure what to do - maybe A, maybe B?” and then leave with or­ders to do Z, which does­n’t ben­e­fit the team or the pro­ject.

Executives can’t think of every pos­si­bil­ity in de­tail - that re­spon­si­bil­ity lies with you and the per­son who owns the prod­uct (which, as we saw, could be you too). When a prob­lem reaches the ex­ec­u­tives, it’s be­cause a de­ci­sion is needed, and they will make one.

People above you have lim­ited time to fo­cus on your spe­cific is­sues. You can’t info dump on them. If they take a mis­guided ac­tion based on what you tell them, it will be your fault.

If you be­lieve in some­thing, clearly state your case, in­clud­ing the ad­van­tages and dis­ad­van­tages. Don’t ex­pect higher-ups to think for you. It’s okay to bounce rough ideas off your di­rect man­ager, but be­yond that, re­fine your thoughts - no one will think harder about your prob­lems than you and your team.

If you need a guide­line, a doc­u­ment should be: con­text → prob­lem → plan / al­ter­na­tives → what sup­port you need.

Player (10%): Yes, only 10%. You might take on work your team is­n’t ex­cited about, but that mat­ters: CI/CD im­prove­ments, flaky tests, process tool­ing. However, you need to stay off the crit­i­cal path. As soon as you start han­dling es­sen­tial tick­ets, you’ll block your team when man­age­r­ial work pulls you away.

Coach (30%): Your per­for­mance as a man­ager is the sum of your team’s out­put. Coaching in­volves pre­vent­ing prob­lem­atic be­hav­iors from be­com­ing nor­mal­ized, such as tox­i­c­ity, re­peated mis­takes, and con­sis­tent un­der­per­for­mance.

It also means sup­port­ing en­gi­neers’ growth by chal­leng­ing them ap­pro­pri­ately, pro­vid­ing the right feed­back, and help­ing them de­velop skills they’ll carry for­ward.

Cheerleader (60%): Praise peo­ple more than you think you should. Validation is im­por­tant. Most en­gi­neers pre­fer feel­ing ap­pre­ci­ated over hav­ing a ping-pong table.

But give praise gen­uinely, not au­to­mat­i­cally. I once joined a team where ret­ro­spec­tives in­cluded 30 min­utes of mu­tual praise - n-squared com­pli­ments every week. It felt hol­low. Not every week has some­thing ex­tra­or­di­nary, and when praise be­comes ex­pected, it loses its im­pact. The hedonic tread­mill is real.

Make your en­gi­neers’ wins vis­i­ble be­yond your team. Encourage them to pur­sue im­pact out­side the team, and cel­e­brate their achieve­ments when they do.

Every team op­er­ates like a small com­pany within the larger or­ga­ni­za­tion. I find that its morale also ex­ists in­de­pen­dently of the com­pa­ny’s over­all morale.

Most man­agers don’t plan to be­come bot­tle­necks. It hap­pens grad­u­ally. A crit­i­cal tool needs an owner, and you think, I’ll han­dle this for now.” Someone needs to be the point of con­tact for an­other team, and it’s eas­i­est if it’s you. Technical de­ci­sions keep land­ing on your desk be­cause you’re the one with con­text. Before you know it, work stops with­out you.

If you can’t take a month off and re­turn to a well-func­tion­ing team, you need to work to­ward mak­ing that pos­si­ble.

You’re too busy to be the bot­tle­neck. If peo­ple keep reach­ing out to you for re­cur­ring tasks, del­e­gate by teach­ing some­one else to han­dle them. Point team mem­bers di­rectly to each other or, even bet­ter, cre­ate group chats to fa­cil­i­tate nat­ural dis­cus­sions.

Don’t be­come the bus fac­tor of 1. Train oth­ers so work con­tin­ues smoothly even when you’re over­whelmed or un­avail­able.

Avoid mak­ing peo­ple feel they need your per­mis­sion for small, re­versible de­ci­sions. Empower them with agency. Request to stay in­formed about their de­ci­sions, but let them han­dle the tech­ni­cal side.

The rea­son you will do this is that man­age­r­ial work can, and will, ap­pear at the worst time. If you are the bus fac­tor, you will be screw­ing your team when it hap­pens. There are many en­gi­neers, but only one man­ager. Stay ac­ces­si­ble for tasks that only you can han­dle.

Ask your­self: can you trust every en­gi­neer on your team to do their best with­out you con­stantly watch­ing? If not, some­thing needs to change—ei­ther in you or in them.

Trust is­n’t about just tech­ni­cal skill. If I asked my cur­rent en­gi­neers (mobile and web de­vel­op­ers) to build a Game Boy em­u­la­tor from scratch, they would­n’t know where to be­gin. They’d prob­a­bly take months (some just weeks). But I’m sure they’d try their best to fig­ure out how to run Pokémon Gold.

You need to trust both their abil­i­ties and their hon­esty:

* If you can’t trust their skills at their level of ex­pe­ri­ence, it’s your job to help them get bet­ter.

* If you can’t trust their hon­esty, and you have good rea­sons not to, then you need to part ways.

Even great en­gi­neers get stuck with­out re­al­iz­ing it. Watching progress helps you spot when they need sup­port be­fore oth­ers see them as un­der­per­form­ing.

Processes like sprints and OKRs mainly fo­cus on the verify” stage (see, your man­ager does this too). They serve as a shared in­ter­face to en­sure work gets done. This is­n’t about lack of trust but ac­count­abil­ity.

Verification in­volves us­ing met­rics and ev­i­dence. There are two types: quan­ti­ta­tive and qual­i­ta­tive.

Quantitative is sim­ple: PRs merged, points com­pleted, code re­viewed. You can glance at these, but de­ci­sions should­n’t be based on them alone. If you could gauge en­gi­neer per­for­mance from num­bers, man­agers would­n’t be needed.

Knowing the Qualitative met­rics shows a man­ager’s worth. This en­gi­neer has fewer PRs, but they’re al­ways watch­ing Slack and hop­ping into calls to help oth­ers.” This en­gi­neer al­ways dis­cusses tick­ets with prod­uct first - their out­put ends up far bet­ter than our orig­i­nal specs.” This en­gi­neer ex­plains com­plex con­cepts in ways every­one can un­der­stand and makes other teams use our tool bet­ter.”

These in­sights de­pend on truly know­ing your team. That’s why most management AI tools” are doomed to fail. They only fo­cus on quan­ti­ta­tive met­rics. They don’t at­tend your standups, don’t con­duct 1:1s for you, and don’t know who’s qui­etly hold­ing the team to­gether. A good man­ager does.

Stop hav­ing pet pro­jects; that’s a Staff Engineer’s do­main. For a man­ager, every pro­ject is cat­tle: it needs to be com­pleted, au­to­mated, del­e­gated, or can­celled.

Managers hold on to pro­jects for many rea­sons. Sometimes it’s com­fort - you know this sys­tem, you built it, and it feels good to stay close to it. Sometimes it’s iden­tity - you want to stay technical” and not lose your edge. Sometimes it’s fear - you don’t trust it’ll be done right with­out you. None of these is a good rea­son to hold on.

The I can do it faster my­self” mind­set might be ac­cu­rate, but in the long run, it’s not sus­tain­able. Every time you do it your­self, you rob some­one else from learn­ing and en­sure you’ll be do­ing it for­ever.

Be risk-averse, not risk-para­noid. You can’t ac­count for every vari­able. Some things can’t be an­tic­i­pated, and over­cor­rect­ing may be worse than the orig­i­nal is­sue.

Hiring is where I see this most of­ten. After a bad hire, man­agers start re­quir­ing re­fer­rals, but al­most any­one, no mat­ter how un­skilled or dis­hon­est, can find some­one to vouch for them. Others add more in­ter­view­ers to the panel, think­ing more eyes means bet­ter vet­ting.

The op­po­site hap­pens: each in­ter­viewer be­comes more lax, ex­pect­ing some­one else to be the bad guy.” Responsibility gets di­luted. Three great in­ter­views beat seven mediocre ones.

Think about sec­ond-or­der ef­fects too: while you’re sched­ul­ing that sev­enth round, good can­di­dates are ac­cept­ing of­fers else­where. The best tal­ent moves quickly. A slow, risk-averse process fil­ters out ex­actly the peo­ple you wanted to hire.

If any of this res­onated, my free on­line work-in-progress book goes deeper. If you’re a man­ager too, I’d love to hear what you’ve learned. Drop it in the com­ments!

...

Read the original on www.jampa.dev »

5 367 shares, 26 trendiness

Iran’s internet blackout may become permanent, with access for elites only

Regime in­sid­ers use white SIM cards” for un­re­stricted ac­cess, while 85 mil­lion cit­i­zens re­main cut off. Irancell’s CEO was fired for de­lay­ing the shut­down.

Iran’s near-to­tal com­mu­ni­ca­tions black­out has en­tered its 16th day, but that’s just a live test.

Following a re­pres­sive crack­down on protests, the gov­ern­ment is now build­ing a sys­tem that grants web ac­cess only to se­cu­rity-vet­ted elites, while lock­ing 90 mil­lion cit­i­zens in­side an in­tranet.

Government spokesper­son Fatemeh Mohajerani con­firmed in­ter­na­tional ac­cess will not be re­stored un­til at least late March. Filterwatch, which mon­i­tors Iranian in­ter­net cen­sor­ship from Texas, cited gov­ern­ment sources, in­clud­ing Mohajerani, say­ing ac­cess will never re­turn to its pre­vi­ous form.”

This is what makes Iran’s at­tempt unique: Other au­thor­i­tar­ian states built walls be­fore their pop­u­la­tions went on­line. Iran is try­ing to seal off a con­nected econ­omy al­ready in freefall.

The sys­tem is called Barracks Internet, ac­cord­ing to con­fi­den­tial plan­ning doc­u­ments ob­tained by Filterwatch. Under this ar­chi­tec­ture, ac­cess to the global web will be granted only through a strict se­cu­rity whitelist.

The regime is ter­ri­fied of one thing: Iranians be­ing heard telling their own truth and hav­ing crimes doc­u­mented,” Mahsa Alimardani, a dig­i­tal rights re­searcher at U. S.-based Witness, which trains ac­tivists to use video for ad­vo­cacy, told Rest of World. The ques­tion be­comes: How do we give Iranians an un­break­able voice?”

The idea of tiered in­ter­net ac­cess is not new in Iran. Since at least 2013, the regime has qui­etly is­sued white SIM cards,” giv­ing un­re­stricted global in­ter­net ac­cess to ap­prox­i­mately 16,000 peo­ple. The sys­tem gained pub­lic at­ten­tion in November 2025 when X’s lo­ca­tion fea­ture re­vealed that cer­tain ac­counts, in­clud­ing the com­mu­ni­ca­tions min­is­ter, were con­nect­ing di­rectly from in­side Iran, de­spite X be­ing blocked since 2009.

What is dif­fer­ent now is scale and per­ma­nence. The cur­rent black­out tests in­fra­struc­ture de­signed to make two-tier ac­cess the de­fault, not a tem­po­rary crack­down.

Only a hand­ful of na­tions have at­tempted to wall off their cit­i­zens from the global in­ter­net. North Korea’s Kwangmyong in­tranet was built from scratch for a pop­u­la­tion that never had con­nec­tiv­ity. China con­structed its Great Firewall over two decades while nur­tur­ing do­mes­tic al­ter­na­tives such as WeChat and Alibaba. Iran is at­tempt­ing to do both in weeks, with no do­mes­tic al­ter­na­tives.

The eco­nomic costs of the black­out are stag­ger­ing. Iran’s deputy com­mu­ni­ca­tions min­is­ter pegged the daily losses at as much as $4.3 mil­lion. NetBlocks es­ti­mates the true cost ex­ceeds $37 mil­lion daily. More than 10 mil­lion Iranians de­pend di­rectly on dig­i­tal plat­forms for their liveli­hoods.

Tipax, one of Iran’s largest pri­vate de­liv­ery com­pa­nies han­dling about 320,000 daily ship­ments be­fore the protests, now processes fewer than a few hun­dred, ac­cord­ing to Filterwatch. The com­pany op­er­ates a na­tion­wide lo­gis­tics net­work com­pa­ra­ble to FedEx in the U. S. mar­ket.

The gov­ern­ment fired Irancell’s CEO for fail­ing to com­ply with shut­down or­ders. Irancell, the coun­try’s sec­ond-largest mo­bile op­er­a­tor with 66 mil­lion sub­scribers, is partly owned by South Africa’s MTN Group. Alireza Rafiei was re­moved for dis­obey­ing or­ders on restriction of in­ter­net ac­cess in cri­sis sit­u­a­tions,” ac­cord­ing to Fars news agency.

Foreign tele­com part­ners have left Iran in re­cent days un­der se­cu­rity es­cort, with­out me­dia cov­er­age, ac­cord­ing to Filterwatch. This may sig­nal the end of in­ter­na­tional co­op­er­a­tion in crit­i­cal in­fra­struc­ture, re­placed by the Revolutionary Guard’s con­struc­tion arm or lim­ited co­op­er­a­tion with Huawei.

Technical ex­perts doubt the regime can sus­tain Barracks Internet with­out crip­pling the econ­omy. Georgia Tech’s Internet Intelligence Lab, which has tracked Iran’s shut­downs since the Arab Spring, called the black­out the most so­phis­ti­cated and most se­vere in Iran’s his­tory.” Its mea­sure­ments show about 3% con­nec­tiv­ity per­sists, likely gov­ern­ment of­fi­cials and state ser­vices.

Kaveh Ranjbar, for­mer chief tech­nol­ogy of­fi­cer at RIPE NCC, the body man­ag­ing European in­ter­net in­fra­struc­ture, calls the plan a digital air­lock” that can’t fully seal a mod­ern econ­omy. No coun­try has her­met­i­cally sealed a func­tion­ing dig­i­tal econ­omy, he told The New Arab.

Activists have smug­gled an es­ti­mated 50,000 Starlink satel­lite ter­mi­nals into Iran since 2022, when the Biden ad­min­is­tra­tion ex­empted the ser­vice from sanc­tions. SpaceX has made the ser­vice free for Iranian users.

The gov­ern­ment claims it cut off 40,000 Starlink con­nec­tions and jammed some ter­mi­nals dur­ing the black­out, though oth­ers re­main op­er­a­tional af­ter firmware up­dates to by­pass gov­ern­ment block­ing. Still, the tech­nol­ogy re­mains vul­ner­a­ble to sig­nal jam­ming, mean­ing the regime holds ul­ti­mate lever­age.

We need to rev­o­lu­tion­ize ac­cess to the in­ter­net,” said Alimardani. And move be­yond the lim­it­ing struc­tures and norms of internet sov­er­eignty.’”

...

Read the original on restofworld.org »

6 341 shares, 17 trendiness

clawdbot/clawdbot: Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

Clawdbot is a per­sonal AI as­sis­tant you run on your own de­vices. It an­swers you on the chan­nels you al­ready use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMes­sage, Microsoft Teams, WebChat), plus ex­ten­sion chan­nels like BlueBubbles, Matrix, Zalo, and Zalo Personal. It can speak and lis­ten on ma­cOS/​iOS/​An­droid, and can ren­der a live Canvas you con­trol. The Gateway is just the con­trol plane — the prod­uct is the as­sis­tant.

If you want a per­sonal, sin­gle-user as­sis­tant that feels lo­cal, fast, and al­ways-on, this is it.

Preferred setup: run the on­board­ing wiz­ard (clawdbot on­board). It walks through gate­way, work­space, chan­nels, and skills. The CLI wiz­ard is the rec­om­mended path and works on ma­cOS, Linux, and Windows (via WSL2; strongly rec­om­mended). Works with npm, pnpm, or bun. New in­stall? Start here: Getting started

Model note: while any model is sup­ported, I strongly rec­om­mend Anthropic Pro/Max (100/200) + Opus 4.5 for long‑con­text strength and bet­ter prompt‑in­jec­tion re­sis­tance. See Onboarding.

npm in­stall -g clawd­bot@lat­est

# or: pnpm add -g clawd­bot@lat­est

clawd­bot on­board –install-daemon

The wiz­ard in­stalls the Gateway dae­mon (launchd/systemd user ser­vice) so it stays run­ning.

clawd­bot on­board –install-daemon

clawd­bot gate­way –port 18789 –verbose

# Send a mes­sage

clawd­bot mes­sage send –to +1234567890 –message Hello from Clawdbot”

# Talk to the as­sis­tant (optionally de­liver back to any con­nected chan­nel: WhatsApp/Telegram/Slack/Discord/Google Chat/Signal/iMessage/BlueBubbles/Microsoft Teams/Matrix/Zalo/Zalo Personal/WebChat)

clawd­bot agent –message Ship check­list” –thinking high

Prefer pnpm for builds from source. Bun is op­tional for run­ning TypeScript di­rectly.

git clone https://​github.com/​clawd­bot/​clawd­bot.git

cd clawd­bot

pnpm in­stall

pnpm ui:build # auto-in­stalls UI deps on first run

pnpm build

pnpm clawd­bot on­board –install-daemon

# Dev loop (auto-reload on TS changes)

pnpm gate­way:watch

Note: pnpm clawd­bot … runs TypeScript di­rectly (via tsx). pnpm build pro­duces dist/ for run­ning via Node / the pack­aged clawd­bot bi­nary.

* DM pair­ing (dmPolicy=“pairing” / chan­nels.dis­cord.dm.pol­icy=“pair­ing” / chan­nels.slack.dm.pol­icy=“pair­ing”): un­known senders re­ceive a short pair­ing code and the bot does not process their mes­sage.

* Approve with: clawd­bot pair­ing ap­prove (then the sender is added to a lo­cal al­lowlist store).

* Public in­bound DMs re­quire an ex­plicit opt-in: set dm­Pol­icy=“open” and in­clude *” in the chan­nel al­lowlist (allowFrom / chan­nels.dis­cord.dm.al­lowFrom / chan­nels.slack.dm.al­lowFrom).

Clawdbot can auto-con­fig­ure Tailscale Serve (tailnet-only) or Funnel (public) while the Gateway stays bound to loop­back. Configure gate­way.tailscale.mode:

* serve: tail­net-only HTTPS via tailscale serve (uses Tailscale iden­tity head­ers by de­fault).

* gate­way.bind must stay loop­back when Serve/Funnel is en­abled (Clawdbot en­forces this).

* Serve can be forced to re­quire a pass­word by set­ting gate­way.auth.mode: password” or gate­way.auth.al­low­Tailscale: false.

* Funnel re­fuses to start un­less gate­way.auth.mode: password” is set.

It’s per­fectly fine to run the Gateway on a small Linux in­stance. Clients (macOS app, CLI, WebChat) can con­nect over Tailscale Serve/Funnel or SSH tun­nels, and you can still pair de­vice nodes (macOS/iOS/Android) to ex­e­cute de­vice‑lo­cal ac­tions when needed.

* Gateway host runs the exec tool and chan­nel con­nec­tions by de­fault.

* Device nodes run de­vice‑lo­cal ac­tions (system.run, cam­era, screen record­ing, no­ti­fi­ca­tions) via node.in­voke.

In short: exec runs where the Gateway lives; de­vice ac­tions run where the de­vice lives.

The ma­cOS app can run in node mode and ad­ver­tises its ca­pa­bil­i­ties + per­mis­sion map over the Gateway WebSocket (node.list / node.de­scribe). Clients can then ex­e­cute lo­cal ac­tions via node.in­voke:

* sys­tem.run runs a lo­cal com­mand and re­turns std­out/​stderr/​exit code; set needsS­creen­Record­ing: true to re­quire screen-record­ing per­mis­sion (otherwise you’ll get PERMISSION_MISSING).

* sys­tem.no­tify posts a user no­ti­fi­ca­tion and fails if no­ti­fi­ca­tions are de­nied.

* can­vas.*, cam­era.*, screen.record, and lo­ca­tion.get are also routed via node.in­voke and fol­low TCC per­mis­sion sta­tus.

* Use /elevated on|off to tog­gle per‑ses­sion el­e­vated ac­cess when en­abled + al­lowlisted.

* Gateway per­sists the per‑ses­sion tog­gle via ses­sions.patch (WS method) along­side think­ingLevel, ver­bose­Level, model, send­Pol­icy, and groupActi­va­tion.

* Use these to co­or­di­nate work across ses­sions with­out jump­ing be­tween chat sur­faces.

ClawdHub is a min­i­mal skill reg­istry. With ClawdHub en­abled, the agent can search for skills au­to­mat­i­cally and pull in new ones as needed.

Send these in WhatsApp/Telegram/Slack/Google Chat/Microsoft Teams/WebChat (group com­mands are owner-only):

* /new or /reset — re­set the ses­sion

The Gateway alone de­liv­ers a great ex­pe­ri­ence. All apps are op­tional and add ex­tra fea­tures.

If you plan to build/​run com­pan­ion apps, fol­low the plat­form run­books be­low.

* Menu bar con­trol for the Gateway and health.

Note: signed builds re­quired for ma­cOS per­mis­sions to stick across re­builds (see docs/​mac/​per­mis­sions.md).

* Pairs as a node via the Bridge.

* Pairs via the same Bridge + pair­ing flow as iOS.

agent: {

model: anthropic/claude-opus-4-5”

* Default: tools run on the host for the main ses­sion, so the agent has full ac­cess when it’s just you.

* Group/channel safety: set agents.de­faults.sand­box.mode: non-main” to run non‑main ses­sions (groups/channels) in­side per‑ses­sion Docker sand­boxes; bash then runs in Docker for those ses­sions.

* Allowlist who can talk to the as­sis­tant via chan­nels.what­sapp.al­lowFrom.

* If chan­nels.what­sapp.groups is set, it be­comes a group al­lowlist; in­clude *” to al­low all.

* Optional: set chan­nels.telegram.groups (with chan­nels.telegram.groups.“*”.re­quire­Men­tion); when set, it is a group al­lowlist (include *” to al­low all). Also chan­nels.telegram.al­lowFrom or chan­nels.telegram.web­hookUrl as needed.

chan­nels: {

telegram: {

bot­To­ken: 123456:ABCDEF”

* Optional: set com­mands.na­tive, com­mands.text, or com­mands.use­Ac­cess­Groups, plus chan­nels.dis­cord.dm.al­lowFrom, chan­nels.dis­cord.guilds, or chan­nels.dis­cord.me­dia­MaxMb as needed.

chan­nels: {

dis­cord: {

to­ken: 1234abcd”

* ma­cOS only; Messages must be signed in.

* If chan­nels.imes­sage.groups is set, it be­comes a group al­lowlist; in­clude *” to al­low all.

* Allowlist who can talk via msteams.al­lowFrom; group ac­cess via msteams.groupAl­lowFrom or msteams.group­Pol­icy: open”.

browser: {

en­abled: true,

con­trolUrl: http://​127.0.0.1:18791,

color: #FF4500

Use these when you’re past the on­board­ing flow and want the deeper ref­er­ence.

Clawdbot was built for Clawd, a space lob­ster AI as­sis­tant. 🦞 by Peter Steinberger and the com­mu­nity.

See CONTRIBUTING.md for guide­lines, main­tain­ers, and how to sub­mit PRs. AI/vibe-coded PRs wel­come! 🤖

Special thanks to Mario Zechner for his sup­port and for

pi-mono.

Thanks to all clawtrib­u­tors:

...

Read the original on github.com »

7 305 shares, 39 trendiness

a modern and efficient vector tile format

Today we are happy to an­nounce MapLibre Tile (MLT), a new mod­ern and ef­fi­cient vec­tor tile for­mat.

MapLibre Tile (MLT) is a suc­ce­sor to Mapbox Vector Tile (MVT). It has been re­designed from the ground up to ad­dress the chal­lenges of rapidly grow­ing geospa­tial data vol­umes and com­plex next-gen­er­a­tion geospa­tial source for­mats, as well as to lever­age the ca­pa­bil­i­ties of mod­ern hard­ware and APIs.

MLT is specif­i­cally de­signed for mod­ern and next-gen­er­a­tion graph­ics APIs to en­able high-per­for­mance pro­cess­ing and ren­der­ing of large (planet-scale) 2D and 2.5 basemaps. This cur­rent im­ple­men­ta­tion of­fers fea­ture par­ity with MVT1 while de­liv­er­ing on the fol­low­ing:

* Improved com­pres­sion ra­tio: up to 6x on large tiles, based on a col­umn-ori­ented lay­out with re­cur­sively ap­plied (custom)

light­weight en­cod­ings. This leads to re­duced la­tency, stor­age, and egress costs and, in par­tic­u­lar, im­proved cache uti­liza­tion.

* Better de­cod­ing per­for­mance: fast, light­weight en­cod­ings that can be used in com­bi­na­tion with SIMD/vectorization in­struc­tions.

In ad­di­tion, MLT was de­signed to sup­port the fol­low­ing use cases in the fu­ture:

* Improved pro­cess­ing per­for­mance, based on stor­age and in-mem­ory for­mats that are specif­i­cally de­signed for mod­ern graph­ics APIs,

al­low­ing for ef­fi­cient pro­cess­ing on both CPU and GPU. The for­mats are de­signed to be loaded into GPU buffers with lit­tle or no ad­di­tional pro­cess­ing.

* Support for lin­ear ref­er­enc­ing and m-val­ues to ef­fi­ciently sup­port the up­com­ing next-gen­er­a­tion source for­mats such as Overture Maps (GeoParquet).

As with any MapLibre pro­ject, the fu­ture of MLT is de­cided by the needs of the com­mu­nity. There are a lot of ex­cit­ing ideas for other fu­ture ex­ten­sions and we wel­come con­tri­bu­tions to the pro­ject.

For a more in-depth ex­plo­ration of MLT have a look at the fol­low­ing slides, watch

this talk or read this pub­li­ca­tion by MLT in­ven­tor Markus Tremmel.

For the ad­ven­tur­ous, the an­swer is: to­day. Both MapLibre GL JS and MapLibre Native now sup­port MLT sources. You can use the new en­cod­ing prop­erty on sources in your style JSON with a value of mlt for MLT vec­tor tile sources.

To try out MLT, you have the fol­low­ing op­tions:

* The eas­i­est way to try out MLT is to use the MLT-based de­motiles style.

* You can also try out the en­cod­ing server that con­verts ex­ist­ing (MVT-based) styles and vec­tor tile sources to MLT on the fly. This is mostly a tool for de­vel­op­ment.

* To cre­ate tiles for pro­duc­tion, you could use Planetiler, as the up­com­ing ver­sion will sup­port gen­er­at­ing MLTs.

Refer to this page for a com­plete and up-to-date list of in­te­gra­tions and im­ple­men­ta­tions. If you are an in­te­gra­tor work­ing on sup­port­ing MLT, feel free to add your own pro­ject there.

We would love to hear your ex­pe­ri­ence with us­ing MLT! Join the #maplibre-tile-format chan­nel on our Slack or cre­ate an Issue or Discussion on the tile spec repo.

MapLibre Tile came to be thanks to a multi-year col­lab­o­ra­tion be­tween acad­e­mia, open source and en­ter­prise. Thank you to every­one who was in­volved! We are very proud that our com­mu­nity can in­no­vate like this.

Special thanks go to Markus Tremmel for in­vent­ing the for­mat, Yuri Astrakhan for spear­head­ing the pro­ject, Tim Sylvester for the C++ im­ple­men­ta­tion, Harel Mazor, Benedikt Vogl and Niklas Greindl for work­ing on the JavaScript im­ple­men­ta­tion.

Also thanks to Microsoft and AWS for fi­nanc­ing work on MLT.

...

Read the original on maplibre.org »

8 280 shares, 23 trendiness

the browser is the sandbox

the browser is the sand­box. Paul Kinlan is a web plat­form de­vel­oper ad­vo­cate at Google and re­cently turned his at­ten­tion to cod­ing agents. He quickly iden­ti­fied the im­por­tance of a ro­bust sand­box for agents to op­er­ate in and put to­gether these de­tailed notes on how the web browser can help:

This got me think­ing about the browser. Over the last 30 years, we have built a sand­box specif­i­cally de­signed to run in­cred­i­bly hos­tile, un­trusted code from any­where on the web, the in­stant a user taps a URL. […]

Could you build some­thing like Cowork in the browser? Maybe. To find out, I built a demo called Co-do that tests this hy­poth­e­sis. In this post I want to dis­cuss the re­search I’ve done to see how far we can get, and de­ter­mine if the browser’s abil­ity to run un­trusted code is use­ful (and good enough) for en­abling soft­ware to do more for us di­rectly on our com­puter.

Paul then de­scribes how the three key as­pects of a sand­box - filesys­tem, net­work ac­cess and safe code ex­e­cu­tion - can be han­dled by browser tech­nolo­gies: the File System Access API (still Chrome-only as far as I can tell), CSP head­ers with and WebAssembly in Web Workers.

Co-do is a very in­ter­est­ing demo that il­lus­trates all of these ideas in a sin­gle ap­pli­ca­tion:

You se­lect a folder full of files and con­fig­ure an LLM provider and set an API key, Co-do then uses CSP-approved API calls to in­ter­act with that provider and pro­vides a chat in­ter­face with tools for in­ter­act­ing with those files. It does in­deed feel sim­i­lar to Claude Cowork but with­out run­ning a multi-GB lo­cal con­tainer to pro­vide the sand­box.

My biggest com­plaint about re­mains how thinly doc­u­mented it is, es­pe­cially across dif­fer­ent browsers. Paul’s post has all sorts of use­ful de­tails on that which I’ve not en­coun­tered else­where, in­clud­ing a com­plex dou­ble-iframe tech­nique to help ap­ply net­work rules to the in­ner of the two frames.

Thanks to this post I also learned about the tag which turns out to work on Firefox, Safari and Chrome and al­lows a browser read-only ac­cess to a full di­rec­tory of files at once. I had Claude knock up a we­bkit­di­rec­tory demo to try it out and I’ll cer­tainly be us­ing it for pro­jects in the fu­ture.

...

Read the original on simonwillison.net »

9 277 shares, 15 trendiness

Scientists Identify Brain Waves That Define The Limits of 'You'

At what point do you” end and the out­side world be­gins?

It might feel like a weird ques­tion with an ob­vi­ous an­swer, but your brain has to work sur­pris­ingly hard to judge that bound­ary. Now, sci­en­tists have linked a spe­cific set of brain waves in a cer­tain part of the brain to a sense of body own­er­ship.

In a se­ries of new ex­per­i­ments, re­searchers from Sweden and France put 106 par­tic­i­pants through what’s called the rub­ber hand il­lu­sion, mon­i­tor­ing and stim­u­lat­ing their brain ac­tiv­ity to see what ef­fect it had.

Related: Octopuses Fall For The Classic Fake Arm Trick — Just Like We Do

This clas­sic il­lu­sion in­volves hid­ing one of a par­tic­i­pan­t’s hands from their view and re­plac­ing it with a rub­ber one in­stead. When both their real and fake hands are re­peat­edly touched at the same time, it can evoke the eerie sen­sa­tion that the rub­ber hand is part of the per­son’s body.

The tests, which in one ex­per­i­ment in­volved EEG (electroencephalography) read­ings of brain ac­tiv­ity, re­vealed that a sense of body own­er­ship seems to arise from the fre­quency of al­pha waves in the pari­etal cor­tex, a brain re­gion re­spon­si­ble for map­ping the body, pro­cess­ing sen­sory in­put and build­ing a sense of self.

We have iden­ti­fied a fun­da­men­tal brain process that shapes our con­tin­u­ous ex­pe­ri­ence of be­ing em­bod­ied,” says lead au­thor Mariano D’Angelo, a neu­ro­sci­en­tist at Karolinska Institute in Sweden.

The find­ings may pro­vide new in­sights into psy­chi­atric con­di­tions such as schiz­o­phre­nia, where the sense of self is dis­turbed.”

In the first batch of ex­per­i­ments, par­tic­i­pants had a ro­botic arm tap the in­dex fin­ger of their real and fake hands, ei­ther at the ex­act same time or with a de­lay of up to 500 mil­lisec­onds be­tween each tap.

As ex­pected, par­tic­i­pants re­ported feel­ing that the fake hand was part of their body more strongly if the taps were syn­chro­nized, and the feel­ing steadily weak­ened as the gap widened be­tween what they felt and what they saw.

The EEG read­ings from the sec­ond ex­per­i­ment added more de­tail to the story. The fre­quency of al­pha waves in the pari­etal cor­tex seemed to cor­re­late with how well par­tic­i­pants could de­tect the time de­lay be­tween taps.

Those with faster al­pha waves ap­peared to rule out fake hands even with a tiny gap in taps, while those with slower waves were more likely to feel the fake hand as their own, even if the taps were far­ther apart.

Finally, the re­searchers in­ves­ti­gated whether the fre­quency of these brain waves ac­tu­ally con­trols the sen­sa­tion of body own­er­ship, or if they were per­haps both ef­fects of some other fac­tor.

With a third group of par­tic­i­pants, they used a non-in­va­sive tech­nique called tran­scra­nial al­ter­nat­ing cur­rent stim­u­la­tion to speed up or slow down the fre­quency of a per­son’s al­pha waves. And sure enough, this seemed to cor­re­late with how real a fake hand felt.

Speeding up some­one’s al­pha waves gave them a tighter sense of body own­er­ship, mak­ing them more sen­si­tive to small tim­ing dis­crep­an­cies. Slowing down the waves had the op­po­site ef­fect, mak­ing it harder for peo­ple to tell the dif­fer­ence be­tween their own body and the out­side world.

Our find­ings help ex­plain how the brain solves the chal­lenge of in­te­grat­ing sig­nals from the body to cre­ate a co­her­ent sense of self,” says Henrik Ehrsson, neu­ro­sci­en­tist at Karolinska.

The re­searchers say that the find­ings could lead to new un­der­stand­ing of or treat­ments for con­di­tions where the brain’s body maps have gone askew, such as schiz­o­phre­nia or the sen­sa­tion of phantom limbs’ ex­pe­ri­enced by am­putees.

It could also help make for more re­al­is­tic pros­thetic limbs or even vir­tual re­al­ity tools.

The re­search was pub­lished in the jour­nal Nature Communications.

...

Read the original on www.sciencealert.com »

10 253 shares, 27 trendiness

Vibe Coding Kills Open Source

...

Read the original on arxiv.org »

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.

If you like 10HN please leave feedback and share

Visit pancik.com for more.