10 interesting stories served every morning and every evening.

Debian votes to allow 'responsible use of generative AI'

lwn.net

Debian nei­ther en­dorses nor pro­hibits the use of gen­er­a­tive AI tools in the de­vel­op­ment, main­te­nance, or doc­u­men­ta­tion of soft­ware, pack­ag­ing, doc­u­men­ta­tion, and other me­dia pub­lished within the Debian Project. We rec­og­nize that such tools can sub­stan­tially im­prove the pro­duc­tiv­ity of con­trib­u­tors when used re­spon­si­bly, al­low­ing vol­un­teers to spend more of their lim­ited time on work that re­quires tech­ni­cal ex­per­tise, judg­ment, re­view, and col­lab­o­ra­tion.

The Debian Project nev­er­the­less ex­pects that all con­tri­bu­tions sub­mit­ted to Debian, re­gard­less of how and with which tools they were pro­duced, sat­isfy the same stan­dards of qual­ity, cor­rect­ness, main­tain­abil­ity, and le­gal com­pli­ance. The use of a gen­er­a­tive AI tool does not di­min­ish the con­trib­u­tor’s re­spon­si­bil­ity for the work they sub­mit. Contributors are ex­pected to un­der­stand, re­view, test, and, where ap­pro­pri­ate, mod­ify AI-assisted out­put be­fore in­cor­po­rat­ing it into Debian.

The Debian Project nev­er­the­less ex­pects that all con­tri­bu­tions sub­mit­ted to Debian, re­gard­less of how and with which tools they were pro­duced, sat­isfy the same stan­dards of qual­ity, cor­rect­ness, main­tain­abil­ity, and le­gal com­pli­ance. The use of a gen­er­a­tive AI tool does not di­min­ish the con­trib­u­tor’s re­spon­si­bil­ity for the work they sub­mit. Contributors are ex­pected to un­der­stand, re­view, test, and, where ap­pro­pri­ate, mod­ify AI-assisted out­put be­fore in­cor­po­rat­ing it into Debian.

The Internet Is Kind of a Predatory Cesspit Now

www.stephendiehl.com

I’m a kid of the 90s, and I still re­mem­ber the early in­ter­net. It was slow, ugly, un­re­li­able, and full of cranks, a strange world of wheez­ing dial-up modems, Usenet flame­wars, <marquee> tags, and danc­ing ba­bies. It was also stub­bornly alive and hu­man. People built web­sites about Babylon 5, model rock­ets, train timeta­bles, share­ware, and what­ever else had colonised their minds. Most of it had no busi­ness model. That was the lit­eral point. The web felt like a pub­lic square as­sem­bled by ob­ses­sive am­a­teurs.

None of this was en­tirely in­no­cent. There were scams, viruses, Nazis, pornog­ra­phy, and chain emails from de­posed Nigerian princes. But then pre­da­tion moved from the pe­riph­ery to the cen­tre. It used to be an abuse of the net­work. Now it is the net­work’s or­gan­is­ing prin­ci­ple. The scam­mer once had to find a vic­tim. The plat­form now finds one, pro­files the weak­ness, op­ti­mises the pitch, processes the pay­ment, and rec­om­mends the next scam. What was once an aber­ra­tion has be­come the norm.

The mod­ern in­ter­net is now a highly op­ti­mised ma­chine for de­tect­ing hu­man vul­ner­a­bil­ity, am­pli­fy­ing it, and plac­ing a pay­ment link be­side it. Any in­se­cu­rity can be­come a com­mer­cial niche, in­clud­ing the de­sire to es­cape com­mer­cial life it­self. There is al­ways a course, a newslet­ter, a pri­vate com­mu­nity, or a re­fer­ral code wait­ing at the end of the fun­nel.

The bleak part is not that grifters ex­ist. Every so­ci­ety has huck­sters. It is that much of the pop­u­la­tion has been con­scripted into the down­line. Ordinary peo­ple now spend their lives pro­mot­ing in­vest­ments they barely un­der­stand, prod­ucts that do not work, and po­lit­i­cal claims they have never ex­am­ined. Many earn noth­ing. They are un­paid dis­trib­u­tors for some­one far­ther up the pyra­mid. The con­sumer, sales­man, and prod­uct have col­lapsed into the same ex­hausted per­son.

People in­creas­ingly be­have like ad­dicts be­cause ad­dic­tion is the busi­ness model. The feed sup­plies al­ter­nat­ing doses of out­rage, fear, envy, lust, and hope. Each feel­ing ar­rives with some­thing to buy. People doom­scroll un­til they ac­quire the anx­i­ety that the next in­flu­encer will mon­e­tise. Then they pur­chase a bet, a coin, a sup­ple­ment, a course, or an en­emy. Finally, they re­post the pitch. Consumption be­comes dis­tri­b­u­tion. The mark be­comes the sales­man.

This is an in­dus­trial sys­tem for man­u­fac­tur­ing weak­ness at scale. A le­git­i­mate busi­ness can sur­vive a sat­is­fied cus­tomer. A grift can­not. It needs the cus­tomer fright­ened, ag­grieved, lonely, sick, or greedy for­ever.

When I started writ­ing about cryp­tocur­rency in 2020, I still car­ried a naive as­sump­tion about the size of this econ­omy. I thought peo­ple were gen­er­ally de­cent and the grifter class was a small pool of de­gen­er­ates with rot­ten moral char­ac­ter, prey­ing on those made vul­ner­a­ble by the ma­te­r­ial con­di­tions of our time.

I was very wrong. The grift econ­omy is mas­sive. More dis­turb­ing still, it is par­tic­i­pa­tory. A large and grow­ing share of the pop­u­la­tion now ap­pears will­ing to de­vote every wak­ing hour to fleec­ing their fel­low man as a ca­reer choice. They stream, post, re­cruit, pro­mote, re­fer, as­tro­turf, and close. They turn every friend­ship into a lead and every con­ver­sa­tion into a qual­i­fy­ing call. They do not clock out be­cause the mar­ket fol­lows them into bed. The smart­phone is a shop counter that sleeps be­side their head.

Obviously most of these peo­ple are not suc­ceed­ing. The maths sim­ply can never work out. That is part of the trick. The as­pir­ing in­flu­encer with forty-seven fol­low­ers is not an en­tre­pre­neur in any mean­ing­ful sense. He is free labour for the plat­form and cheap dis­tri­b­u­tion for the per­son sell­ing him the dream. The af­fil­i­ate mar­keter buys a course about af­fil­i­ate mar­ket­ing, then re­cov­ers the cost by sell­ing the same course to the next af­fil­i­ate mar­keter. The life coach coaches new life coaches. The drop­ship­per sells tu­to­ri­als to failed drop­ship­pers. The pyra­mid is so­cial be­fore it is fi­nan­cial. Everyone stands on some­one else while in­sist­ing they are about to es­cape.

This arrange­ment blurs the use­ful moral dis­tinc­tion be­tween preda­tor and prey. Many on­line grifters are them­selves marks. They be­lieve the rub­bish they sell be­cause be­lief makes the sell­ing bear­able. They have sunk money, time, iden­tity, and pub­lic dig­nity into the scheme. Admitting the prod­uct is worth­less would mean ad­mit­ting that years of their life were worth­less too. It is psy­cho­log­i­cally cheaper to re­cruit an­other vic­tim. The fraud sus­tains the faith, and the faith sus­tains the fraud.

A nor­mal trade ends when a need is sa­ti­ated. You need a chair. Someone sells you a chair. You sit down and stop think­ing about chairs. However, an on­line grift can never sa­ti­ate. It must pre­serve the need that feeds it. The griev­ance mer­chant can­not re­solve your griev­ance. The well­ness in­flu­encer can­not let you feel well. The trad­ing guru can­not let you be­come fi­nan­cially se­cure. The manos­phere pod­caster can­not let young men be­come calm, loved, and so­cially com­pe­tent. Satisfaction is churn. Misery is re­cur­ring rev­enue.

The plat­forms did not in­vent fear, greed, lone­li­ness, or sta­tus anx­i­ety. They in­dus­tri­alised their ex­trac­tion. Their rec­om­men­da­tion sys­tems are vast re­in­force­ment-learn­ing loops that con­tin­u­ously ex­per­i­ment on hu­man weak­ness. Each ob­jec­tive is a mov­ing com­pos­ite of high-di­men­sional sig­nals for at­ten­tion, re­ten­tion, and con­ver­sion, dis­persed across mod­els, met­rics, tests, and feed­back sys­tems. The sub­ject can­not see the ex­per­i­ment. The op­er­a­tor can­not fully ex­plain it. The reg­u­la­tor can barely com­pre­hend it. The loop knows only that one stim­u­lus keeps a per­son scrolling while an­other lets them leave. Calm ac­cu­racy loses. Threat, trans­gres­sion, hu­mil­i­a­tion, and im­pos­si­ble promises win. The re­sult­ing so­cial dam­age ap­pears nowhere in the ob­jec­tive func­tion. It ar­rives as an ex­ter­nal­ity.

This cre­ates a bru­tal se­lec­tion en­vi­ron­ment. The hon­est fi­nan­cial ad­viser ex­plains di­ver­si­fi­ca­tion and gets twelve views. The crypto lu­natic pre­dicts a thou­sand­fold re­turn and gets twelve mil­lion. The physi­cian says a chronic con­di­tion re­quires care­ful man­age­ment. The well­ness crank says seed oils are poi­son­ing your soul. The his­to­rian de­scribes an am­bigu­ous event with con­tin­gent causes. The po­lit­i­cal in­flu­encer iden­ti­fies a se­cret ca­bal and gives you the ad­dress of a pizza par­lour. One of these peo­ple has the bet­ter busi­ness model. It is not the one bur­dened by re­al­ity.

The sys­tem is dopamin­er­gic in the most ba­nal and me­chan­i­cal sense. It runs on an­tic­i­pa­tion, un­cer­tainty, and vari­able re­ward. The next re­fresh might bring ap­proval, out­rage, profit, or vin­di­ca­tion. Usually it brings noth­ing, which makes the next re­fresh more ur­gent. Social me­dia fused the Skinner box with the com­mis­sion struc­ture. The ad­dict is handed a re­fer­ral code and told he is now a small busi­ness owner.

Crypto has be­come the sub­ject of my ver­bal ire so of­ten be­cause it is the apoth­e­o­sis of the grift econ­omy. It takes alien­ation, pre­car­ity, gam­bling ad­dic­tion, tech­no­log­i­cal mys­ti­fi­ca­tion, and a thick slurry of lib­er­tar­ian derp, then syn­the­sises them into the ul­ti­mate preda­tory in­vest­ment prod­uct.

Crypto also per­fected the re­cur­sive struc­ture of the mod­ern on­line grift. Promotion cre­ates price move­ment. Price move­ment is pre­sented as proof of adop­tion. That proof re­cruits new buy­ers. Their money cre­ates more price move­ment. Every par­tic­i­pant has a di­rect fi­nan­cial in­cen­tive to be­come a pub­li­cist for his own po­si­tion. The as­set comes with its own vol­un­teer pro­pa­ganda net­work. It is a pyra­mid scheme with a pod­cast de­part­ment.

Much to my dis­may, the rest of the in­ter­net has learned the same les­son. The cheap­est prod­uct is empty promises un­teth­ered to re­al­ity. The most scal­able labour force is the ad­dict. The best mar­ket­ing con­ceals it­self in­side iden­tity. Sell peo­ple a world­view, and they will ad­ver­tise it for free be­cause crit­i­cism of the prod­uct now feels like crit­i­cism of the self.

Language mod­els will make this cheaper and worse. The cost of pro­duc­ing plau­si­ble lies has been dri­ven to pre­cisely zero. One per­son can gen­er­ate a land­fill of ar­ti­cles, videos, tes­ti­mo­ni­als, in­vest­ment analy­sis, and syn­thetic ex­perts be­fore break­fast. The grift no longer needs con­vic­tion, charisma, or even a pulse. It needs a lan­guage model, an af­fil­i­ate ac­count, and ac­cess to a pop­u­la­tion whose crit­i­cal fac­ul­ties have been sand­blasted by twenty years of al­go­rith­mic me­dia.

There is a temp­ta­tion to re­gard the peo­ple caught in this ma­chine with sim­ple con­tempt. Some de­serve it. A per­son who know­ingly ru­ins strangers for com­mis­sion has made a moral choice. But con­tempt is not an analy­sis. Precarity sup­plies the re­cruits. Alienation sup­plies the au­di­ence. The col­lapse of sta­ble work, af­ford­able hous­ing, lo­cal in­sti­tu­tions, and plau­si­ble routes to ma­te­r­ial se­cu­rity is what makes the pitch of the grift econ­omy so se­duc­tive. The grift of­fers agency where or­di­nary life of­fers de­lay. It of­fers com­mu­nity where so­ci­ety of­fers iso­la­tion. It of­fers a jack­pot where work of­fers a per­for­mance re­view and an­other year of rent in­creases.

Then it metabolises those in­juries into new in­juries. The lonely man buys a doc­trine that makes him in­tol­er­a­ble to women. The in­debted worker gam­bles his re­main­ing sav­ings on a crypto to­ken. The fright­ened pa­tient aban­dons med­i­cine for sup­ple­ments. The po­lit­i­cally pow­er­less per­son spends four­teen hours a day scream­ing at strangers while the peo­ple with power qui­etly cut his wages and pub­lic ser­vices. The promised es­cape re­pro­duces the con­di­tion that made es­cape de­sir­able.

It is a des­per­ately sad way to live. There is no craft in it, no sol­i­dar­ity, and no com­ple­tion. No com­pas­sion or joy. Every re­la­tion­ship be­comes an au­di­ence. Every in­ter­est just be­comes grist for the con­tent mill. Every con­vic­tion be­comes a con­tent strat­egy. The grifter can never rest be­cause ab­sence kills en­gage­ment. The mark can never rest be­cause the next post might con­tain the se­cret. Both wake to the same no­ti­fi­ca­tions, trapped on a dopamine tread­mill dri­ven by opaque al­go­rithms that can never slow down.

The worst ad­vice from the 90s, just say no,” starts to look less stu­pid when our great­est tech­ni­cal in­no­va­tion learns to turn dis­tress into in­ven­tory. Disconnection is not Luddism in that en­vi­ron­ment. It is the re­fusal to mis­take a preda­tory sys­tem for a so­cial world.

Complete dis­con­nec­tion is nearly im­pos­si­ble. Modern life no longer per­mits it. But an ap­pli­ance is used for a bounded pur­pose and then put away. Emails, train times, ar­ti­cles, and files all have end­points. Infinite feeds of dri­vel do not. They carry the casino into bed and let an opaque RL loop se­lect the emo­tions that ar­rive be­fore break­fast.

The in­ter­net is in­dis­putably an in­hu­man place. Not be­cause it con­tains no hu­mans. Billions of us are in here, scream­ing fran­ti­cally at each other while feel­ing ut­terly alone. It is in­hu­man be­cause the sys­tems gov­ern­ing it are ut­terly alien al­go­rithms that can­not recog­nise hu­man ends. They recog­nise en­gage­ment, con­ver­sion, re­ten­tion, and growth. Grief is a mar­ket seg­ment. Loneliness is a tar­get­ing sig­nal. Friendship is a re­ten­tion mech­a­nism. Political con­vic­tion is ad in­ven­tory. Nothing can sim­ply mat­ter. It must per­form.

Life in­side this en­vi­ron­ment means adopt­ing its cat­e­gories. Thoughts are as­sessed by their reach, ex­pe­ri­ences by their share­abil­ity, and peo­ple by their use­ful­ness to an iden­tity. A per­son be­comes leg­i­ble to the ma­chine by be­com­ing less leg­i­ble to him­self. Eventually the sys­tem no longer needs to im­pose its val­ues. Its sub­jects carry them in their pock­ets and en­force them on their own minds.

The phys­i­cal world is not pure. It con­tains sales­men, casi­nos, dem­a­gogues, fa­nat­ics, and bores. It also con­tains stub­born lim­its. A con­ver­sa­tion ends. A pub closes. A book runs out of pages. Your friend gets tired of hear­ing you talk and tells you to shut up. Reality sup­plies fric­tion, and fric­tion is one of the few re­main­ing de­fences against ap­petite with­out limit.

We are not go­ing back to the early in­ter­net. Nor should we ro­man­ti­cise it. The old web had plenty of sewage. What it also had was space be­yond the mar­ket. A per­son could make some­thing with­out be­com­ing a brand. A con­ver­sa­tion could end with­out a con­ver­sion. A com­mu­nity could ex­ist with­out turn­ing its mem­bers into marks for an in­vest­ment scheme.

The ques­tion is not whether the in­ter­net con­tains use­ful things. It does. The ques­tion is whether hu­man ex­is­tence should be or­gan­ised around alien and in­hu­man ob­jec­tive func­tions no hu­man chose and no­body can in­spect or un­der­stand. An RL loop can op­ti­mise en­gage­ment, re­ten­tion, and con­ver­sion. It can­not tell us what a hu­man life is for. The fi­nal grift is let­ting the loop de­cide what your life should be.

Tether: Linux + iPhone

zackbartel.com

I did­n’t miss ma­cOS, but…

When I went to Linux full time I was sur­prised to not miss much from ma­cOS.

tldr; I made Tether to do all the things I did miss.

No AirPlay kinda sucked, but the one thing I kept wish­ing I had was what Apple calls Continuity”: the abil­ity to send and re­ceive iMes­sages and SMS, share files, sync clip­board, and see no­ti­fi­ca­tions from my iPhone on my com­puter.

In par­tic­u­lar, that thing where OTP codes sent to Mail or Messages aut­ofill into the lo­gin form I’m wait­ing for on the Mac. It sounds small, but that was the one thing I re­ally missed!

It is im­pos­si­ble to fully im­ple­ment all of Continuity on Linux, but Tether’s goal is to do all of it that is tech­ni­cally pos­si­ble.

Before you ask, I know KDE Connect ex­ists. It’s great! If you’re on Android you should def­i­nitely use it. The prob­lem is that it did­n’t do what I wanted and it’s roadmap in­di­cated it never would.

Origins

Tether started its life fill­ing the ma­jor holes. Clipboard sync was first, I wanted the OTP flow and I knew this was go­ing to be re­quired, and it was also the eas­i­est. This let me copy / paste be­tween ma­cOS and Linux (Wayland) and forced the pro­ject to build out all the foun­da­tion I knew it would need later.

I knew the App Store was go­ing to be a hur­dle so I shipped the iOS app first with only sup­port for clip­board sync. There was a very ba­sic teth­erd dae­mon for the linux side but that was it.

Security was a first class cit­i­zen from day one.

I never skipped out on safety. The net­work­ing be­tween iOS and Linux has been mTLS from the start, and both sides must agree be­fore any­thing can com­mu­ni­cate. Since then I’ve done Opus and then Fable bug / se­cu­rity sweeps reg­u­larly.

After that, file trans­fer was the ob­vi­ous next step and that went in quick and easy.

Wat

As for mail and browser stuff, I’m not very cre­ative. To be hon­est I’ve kinda cheated here. I use Zen Browser (Firefox) and Betterbird (Thunderbird) and both sup­port WebExtensions very well. So, I just made a browser and mail ex­ten­sion to deal with OTP stuff.

The mail ex­ten­sion looks for OTP codes and sends them to the browser ex­ten­sion which looks for OTP in­put el­e­ments and aut­ofills OTP codes as they ar­rive from mail.

It ac­tu­ally works great! The prob­lem is broad sup­port: if you use a dif­fer­ent mail client you’re kinda out of luck for now. I’d LOVE if some­one wants to help with that stuff, but it’s so far out of my com­fort that I’ll stick with the back­end side for now.

Bluetooth Breakthrough

My un­der­stand­ing to this point was that there was no in­ter­face to iMes­sage / SMS di­rectly. You could al­ways run a proxy on a Mac and send and re­ceive texts through that, but in my opin­ion that is not a so­lu­tion. I tried it. Even with Tailscale it was an un­pleas­ant ex­pe­ri­ence.

Then I ran across an­c­s4linux and later BlueFerry and I was com­pletely shocked. In par­tic­u­lar, erik­w­b’s pro­to­col doc­u­men­ta­tion, which fi­nally gave me enough in­for­ma­tion to un­der­stand what was hap­pen­ing.

There was a li­cens­ing is­sue, these pro­jects are GPL and Tether is and al­ways will be MIT, but I wanted a clean room im­ple­men­ta­tion in C++ any­way. Personally, I think putting an in­ter­op­er­abil­ity pro­to­col im­ple­men­ta­tion be­hind a copy­left li­cense is a lit­tle un­for­tu­nate! I’d rather see some­thing like this us­able by any­one, re­gard­less of the li­cense of the pro­ject us­ing it (libtether?).

Anyway, now that the truly hard prob­lem was solved, im­ple­men­ta­tion went about as smooth as you could ex­pect a blue­tooth in­te­gra­tion would go (it’s still a com­plete shit show in 2026). Problem af­ter prob­lem with no clear ex­pla­na­tion, an au­to­matic kick­ing ma­chine, and a bunch of care­fully tracked edge cases com­pen­sat­ing for blue­tooth’s in­ad­e­qua­cies.

But we got there.

And Tether now sup­ports: iMes­sage, SMS, Notifications, Contact sync on Linux. In ad­di­tion to its pre­vi­ous: File Transfer, Clipboard Sync, OTP han­dling.

And my damn text OTP codes FINALLY aut­ofill in the web browser!

Why?

While I did scratch my own itch with this pro­ject, I gen­uinely want Tether to be for every­one. I don’t get any­thing out of peo­ple us­ing it other than the sat­is­fac­tion of know­ing that some­thing I built is use­ful.

Contributions are wel­come! Bugs, fea­ture re­quests, trans­la­tions, doc­u­men­ta­tion, re­ally any­thing would be won­der­ful.

If you’re on Linux with an iPhone, I re­ally hope you give it a try.

Trump’s DHS is using an obscure law to secretly snoop on journalists, non-profits and unions: ‘It’s outrageous’

www.theguardian.com

The Trump ad­min­is­tra­tion has been de­ploy­ing an ob­scure le­gal ma­neu­ver to try to ob­tain pri­vate in­for­ma­tion on jour­nal­ists, non-prof­its and unions, rais­ing alarm over a power the gov­ern­ment has as­serted with­out ju­di­cial over­sight.

In one in­stance, the gov­ern­ment ob­tained six months of tele­phone records for Georgia Fort, a Minneapolis jour­nal­ist. Fort was not no­ti­fied of the re­quest for her in­for­ma­tion, nor was she given a chance to con­test the gov­ern­men­t’s ef­fort to ob­tain them, her lawyers said in court pa­pers.

In February of this year, fed­eral pros­e­cu­tors twice sought search war­rants for ac­count in­for­ma­tion for the YouTube chan­nel of Fort and the jour­nal­ist Don Lemon, both of whom have pleaded not guilty to crim­i­nal charges in con­nec­tion to a protest at a Minneapolis church in January that they were cov­er­ing. A judge twice re­jected the re­quest, writ­ing that the gov­ern­ment had failed to es­tab­lish prob­a­ble cause of a crime and that he wanted Lemon and Fort to be in­formed of the re­quest so they could have a chance to chal­lenge it. About a month af­ter the judge’s rul­ing in late February, the gov­ern­ment said it was with­draw­ing the re­quest.

But of­fi­cials had­n’t given up on get­ting the data.

Less than a month later, the DHS served Google with a dif­fer­ent re­quest for the YouTube in­for­ma­tion. This time, DHS uti­lized a dif­fer­ent method that did­n’t re­quire ap­proval from a judge, only a sign-off from a DHS of­fi­cial. It served Google an ad­min­is­tra­tive sum­mons cit­ing an ar­cane pro­vi­sion of fed­eral law — 19 USC 1509 — deal­ing with cus­toms im­ports. The pro­vi­sion gives the DHS broad power to in­spect records in or­der to de­ter­mine whether du­ties and taxes are be­ing cor­rectly levied on im­ported items. It also in­structed the re­cip­i­ents of the sum­mons to keep it se­cret.

The DHS sum­mons was is­sued un­der a statute that does give the agency broad power to de­mand records, but only in the lim­ited cir­cum­stance of there be­ing a need to in­ves­ti­gate a cus­toms is­sue, said Chris Duncan, a for­mer lawyer at the Department of Homeland Security. These laws have ab­solutely noth­ing to do with a do­mes­tic sit­u­a­tion at a church, a so­cial me­dia post, even an im­mi­gra­tion mat­ter,” he said.

It’s out­ra­geous con­duct on so many lev­els. It’s hard to know where to be­gin,” said John Roth, who served as the in­spec­tor gen­eral for the Department of Homeland Security from 2014 to 2017. This is an im­proper use of the sub­poena un­der any cir­cum­stances. This is not a cus­toms case; it is not a cus­toms vi­o­la­tion. They are not in­ves­ti­gat­ing a cus­toms vi­o­la­tion.”

The episode in Minnesota was par­tic­u­larly alarm­ing be­cause it ap­peared to be an end run around a judge who was skep­ti­cal of the gov­ern­men­t’s need for the in­for­ma­tion.

There is no judge in the loop. You don’t have that in­de­pen­dent au­thor­ity to scru­ti­nize the de­mand and to say whether or not it’s le­git­i­mate,” said Caitlin Vogus, a se­nior ad­viser at the Freedom of the Press Foundation.

The DHS also sought and ob­tained six months of phone records for Fort from T-Mobile, which in­cluded records for more than 10,000 calls and text mes­sages. Fort was not no­ti­fied the gov­ern­ment was seek­ing the records un­til mid-July, when gov­ern­ment lawyers pro­duced them to her lawyers. Fort’s lawyers wrote in a fil­ing this week they were stunned” to see the gov­ern­ment had uni­lat­er­ally been able to ob­tain a log of her com­mu­ni­ca­tions af­ter a judge had warned them about ob­tain­ing records about a jour­nal­ist.

That’s very con­cern­ing be­cause the in­for­ma­tion de­manded can help the gov­ern­ment un­cover a jour­nal­ist’s con­fi­den­tial sources,” Vogus said.

In a state­ment, T-Mobile did not ad­dress why it turned over the in­for­ma­tion.

We take our re­spon­si­bil­ity to pro­tect cus­tomers’ pri­vacy and per­sonal in­for­ma­tion very se­ri­ously. Our team care­fully re­views gov­ern­ment de­mands for cus­tomer in­for­ma­tion and re­sponds in ac­cor­dance with the law. We don’t com­ment on spe­cific law en­force­ment de­mands,” the com­pany said.

The Department of Justice and the Department of Homeland Security both de­clined to com­ment on the use of the sum­mons.

In ad­di­tion to Fort and Lemon, the DHS also sought in­for­ma­tion on the YouTube ac­counts for the left-lean­ing out­let Democracy Now, con­ser­v­a­tive pod­caster Megyn Kelly, the Milwaukee Journal-Sentinel and an in­de­pen­dent jour­nal­ist named Brendan Gutenschwager. Some of the videos they cited in the sum­mons were livestreams of the protest, but not all of them. The video cited as part of the re­quest for in­for­ma­tion on Democracy Now in­volved a news re­port on the protest and an in­ter­view with Nekima Levy Armstrong, who led the protest. The video cited on the re­quest for Kelly’s show in­cluded an in­ter­view with Jonathan Parnell, the pas­tor at the church.

It’s un­clear why ex­actly the DHS wanted the YouTube ac­count in­for­ma­tion, which in­cludes things like a user’s IP ad­dress, and in­for­ma­tion about when a user was log­ging in.

It’s still con­cern­ing that the gov­ern­ment sought sub­scriber in­for­ma­tion for Lemon and Fort be­cause there’s no rea­son it would need this in­for­ma­tion for the crim­i­nal charges that it’s brought against them,” Vogus said. It’s not a crime to post a YouTube video, and it’s not at all clear why the gov­ern­ment is de­mand­ing this in­for­ma­tion about Lemon and Fort’s YouTube ac­counts.”

The episode was the most re­cent ex­am­ple of an alarm­ing pat­tern in re­cent months in which the DHS avoided ju­di­cial scrutiny and de­ployed a sum­mons re­lated to cus­toms en­force­ment to pres­sure com­pa­nies into turn­ing over in­for­ma­tion on Americans. The US con­sti­tu­tion’s fourth amend­ment pro­tects against un­rea­son­able searches and seizures and law en­force­ment gen­er­ally must show a judge or a grand jury they have prob­a­ble cause to be­lieve the ma­te­ri­als they want to search will pro­duce ev­i­dence of a crime.

But over the last few months, the Department of Homeland Security has un­der­taken a brazen ef­fort to get around that fun­da­men­tal safe­guard. In ad­di­tion to ef­forts to ob­tain records on Minnesota jour­nal­ists, the DHS has used 1509 sum­monses to pres­sure so­cial me­dia com­pa­nies to un­mask the iden­ti­ties of peo­ple who have crit­i­cized ICE of­fi­cers and to ob­tain fi­nan­cial in­for­ma­tion on a host of unions and left-lean­ing non-profit or­ga­ni­za­tions in Minneapolis.

In a sep­a­rate case in which 15 ac­tivists face crim­i­nal con­spir­acy charges, DHS suc­cess­fully ob­tained the fi­nan­cial records of the Sunrise Movement, the Service Employees International Union (SEIU) and the Communications Workers of America, as well as Venmo records for a non-profit or­ga­ni­za­tion called Voices for Racial Justice. None of the or­ga­ni­za­tions is charged with crimes and the DHS did not of­fer an ex­pla­na­tion for why it needed the records. PayPal, Venmo’s par­ent com­pany, de­clined to com­ment.

There’s a long his­tory of DHS abus­ing this sum­mons au­thor­ity in par­tic­u­lar, and us­ing it to seek both records that are clearly out­side of its scope in gen­eral, and more par­tic­u­larly to try to go af­ter peo­ple whose speech DHS is some­how irked by — but whose speech is pro­tected by the first amend­ment,” said Nathan Freed Wessler, a lawyer at the American Civil Liberties Union who spe­cial­izes in pri­vacy is­sues.

It is dif­fi­cult to de­ter­mine the fre­quency with which the DHS is serv­ing the 1509 sum­monses and how of­ten they are suc­cess­ful in ob­tain­ing in­for­ma­tion. The sum­monses of­ten re­main hid­den from pub­lic view un­less the com­pany be­ing served, or the user, chal­lenges them. Companies are not re­quired to no­tify users that they have been served with a 1509 sum­mons for in­for­ma­tion, though some do. The New York Times re­ported in February that the DHS had served hun­dreds of ad­min­is­tra­tive sub­poe­nas on so­cial me­dia com­pa­nies for in­for­ma­tion on users.

Without know­ing how many of these sub­poe­nas there are and what they’re be­ing used for, there’s no way for courts or law­mak­ers or the pub­lic to put checks on ex­ec­u­tive branch abuses,” said Wessler, the ACLU at­tor­ney.

In the Minneapolis church case in­volv­ing Lemon and Fort, the Trump ad­min­is­tra­tion has ar­gued it had the power to use the cus­toms-re­lated sum­mons to ob­tain in­for­ma­tion even though the crimes the de­fen­dants were charged with have noth­ing to do with cus­toms. The pro­test­ers en­tered the church be­cause a lo­cal ICE of­fi­cial was a pas­tor there, and could have po­ten­tially as­saulted him or in­ter­fered with his du­ties, jus­tice de­part­ment lawyers wrote in a fil­ing ear­lier this year. Even though the man does not ap­pear to have been there, and there were no DHS of­fi­cials at the church or in­volved in the protest, lawyers said the DHS was en­ti­tled to is­sue the sum­mons be­cause it was in­ves­ti­gat­ing a po­ten­tial as­sault on a law en­force­ment of­fi­cer.

In court fil­ings, the Trump ad­min­is­tra­tion has ar­gued the Department of Homeland Security has the power to de­mand such records with­out ju­di­cial over­sight.

Although § 1509 ref­er­ences duties, fees, and taxes,’ the plain lan­guage of the statute does not limit DHSs in­ves­tiga­tive au­thor­ity to those sub­jects; in­stead, DHS is au­tho­rized to in­ves­ti­gate po­ten­tial crimes to en­sure compliance with the laws of the United States ad­min­is­tered by the United States Customs Service,’” which has been folded into the Department of Homeland Security, a lawyer wrote in a December court fil­ing last year.

That is an over­broad mis­read­ing of the statute, one ex­pert said.

I don’t buy that,” said Duncan, the for­mer DHS lawyer. It’s not a free-for-all that was thrown in there. Congress does not op­er­ate that way. Given these pro­vi­sions were specif­i­cally in­cor­po­rated into ti­tle 19, the cus­toms statute, Congress ob­vi­ously in­tended to au­tho­rize only records, de­mands and in­ter­views in fur­ther­ance of in­ves­ti­ga­tions into cus­toms vi­o­la­tions, not wild goose chases into pos­si­ble vi­o­la­tions of any fed­eral law with­out any ju­di­cial over­sight.”

In Fort’s case, Google did not com­ply with the sum­mons for any of the ac­counts. The com­pany re­sponded to the DHS by say­ing it had not of­fered ev­i­dence of how it was re­lated to a cus­toms in­ves­ti­ga­tion.

A Google spokesper­son said the com­pany re­views each re­quest for data it gets to en­sure it is le­gal and pushes back when it is too broad or does­n’t fol­low the cor­rect process.

Many so­cial me­dia com­pa­nies say they no­tify users when law en­force­ment makes a re­quest for their in­for­ma­tion and give them a chance to con­test the sum­mons. It’s not al­ways clear what the com­pa­nies will do if the user does­n’t re­spond or won’t con­test the re­quest them­selves. But pri­vacy ex­perts ques­tion whether that no­tice is ad­e­quate, say­ing many users are con­fused when they are con­tacted and do not have the re­sources to get a lawyer to con­test the de­mand in court.

They want peo­ple to think that they are go­ing to stand up for peo­ple’s pri­vacy, but they re­ally shifted the bur­den com­pletely onto the user,” said Lauren Regan, ex­ec­u­tive di­rec­tor of the Civil Liberties Defense Center, which rep­re­sented a Reddit user who chal­lenged the gov­ern­men­t’s ef­forts to get Reddit to re­veal their iden­tity through a 1509 sum­mons.

Companies are not re­quired to re­spond to a 1509 sum­mons and can ig­nore the re­quest if they think it is un­law­ful, forc­ing the gov­ern­ment to go to court to try to en­force the sum­mons. The Guardian was un­able to iden­tify any cases where the gov­ern­ment at­tempted to get a court or­der to en­force a 1509 sum­mons out­side of the tra­di­tional cus­toms con­text. Companies can also file their own mo­tions to try to quash the sum­monses.

If a user ac­tu­ally hired a lawyer, it would cost tens of thou­sands of dol­lars to fight one of these,” said F Mario Trujillo, a lawyer at the Electronic Frontier Foundation, a pri­vacy watch­dog. They are not shoul­der­ing that bur­den; they’re push­ing that cost onto users and onto non-profit groups when they could eas­ily get their high-pow­ered lawyers who are be­ing paid $500 to $1,000 an hour to fight these.”

In 2017, Twitter filed a law­suit chal­leng­ing a Department of Homeland Security 1509 sum­mons seek­ing to un­mask an ac­count, @alt_uscis, that was crit­i­cal of the DHS. The de­part­ment ul­ti­mately with­drew the sum­mons.

In sev­eral cases, the DHS has with­drawn a 1509 sum­mons af­ter it was chal­lenged in court and be­fore a judge could rule on its le­gal­ity. That may be a de­lib­er­ate strat­egy to avoid hav­ing a judge rule on the le­gal­ity of the sum­mons.

In one in­stance last year, the DHS served a 1509 sum­mons on Meta to un­mask the user be­hind an Instagram and Facebook ac­count that mon­i­tored ICE agent ac­tiv­i­ties in the Philadelphia sub­urbs. The user chal­lenged the sum­mons in court, say­ing it was clearly not au­tho­rized un­der the law. Lawyers for the DHS de­fended the sum­mons, say­ing it fell within the scope of laws the DHS en­forced. Both sides pre­sented ar­gu­ments be­fore a judge on 15 January and DHS with­drew the sum­mons the next day.

They don’t want a judge to take away this scary tool be­cause they are get­ting stuff out of it,” Regan said. Once a court rul­ing says thou shalt not use this statute’, it does not ap­ply.”

In 2017, the DHS in­spec­tor gen­eral is­sued a re­port find­ing inconsistent — and, in some cases, im­proper” — use of the 1509 sum­monses af­ter the @alt_uscis case.

The of­fice of the in­spec­tor gen­eral re­view found that of­fi­cials in Customs and Border Protection’s of­fice of pro­fes­sional re­spon­si­bil­ity were reg­u­larly mis­us­ing the sub­poena and rec­om­mended a se­ries of re­forms to en­sure more over­sight over those that were used. The of­fice agreed to the re­forms.

Close race as Iceland votes on whether to restart talks on joining EU

www.bbc.com

1 day ago

Paul KirbyEurope dig­i­tal ed­i­tor

AFP via Getty Images

Icelanders are vot­ing in a ref­er­en­dum to de­cide whether to re­sume talks on join­ing the European Union, 13 years af­ter they were bro­ken off.

In an in­di­ca­tion of how tight the re­sult is ex­pected to be, the lat­est opin­ion poll put the No cam­paign in the lead with 51.6%. An ear­lier poll had put the Yes cam­paign ahead.

Prime Minister Kristrún Frostadóttir’s cen­tre-left gov­ern­ment had al­ready in­tended to hold a ref­er­en­dum, but tur­bu­lent in­ter­na­tional af­fairs prompted her to bring it for­ward.

But the de­bate was fought less over Nato mem­ber Iceland’s se­cu­rity con­cerns than over its vi­tal fish­ing in­dus­try and sov­er­eignty.

Voting is due to go on from 09:00 to 22:00 GMT on Saturday and the re­sult is ex­pected in the early hours of Sunday.

Iceland has a pop­u­la­tion of un­der 400,000. More than one in five vot­ers had al­ready cast their bal­lots in early vot­ing be­fore Saturday, ac­cord­ing to Iceland’s pub­lic broad­caster RUV.

What is the vote about?

Although Iceland is al­ready part of the EUs sin­gle mar­ket and Schengen bor­der-free zone as part of the European Economic Area, EU mem­ber­ship would bring it into the cus­toms union and even­tu­ally the euro.

Iceland’s ap­pli­ca­tion to join the EU was al­ready well ad­vanced when it put talks on hold in 2013, and European Commission of­fi­cials have in­di­cated that talks could be fi­nalised in one or two years. Of the 35 so-called chap­ters of talks rang­ing from fish­eries and eco­nomic pol­icy to free­dom of speech and free move­ment of goods, 27 had be­gun and 11 of them were pro­vi­sion­ally com­plete.

A Yes vote would not be a fi­nal de­ci­sion on join­ing the EU. It would mean back­ing a move to­wards an ac­ces­sion agree­ment. Any deal would then have to be ap­proved by a sec­ond ref­er­en­dum, as well by par­lia­ment, and the con­sti­tu­tion would have to be amended. The EUs 27 mem­ber states would also have to sign it off.

One Yes-campaign group, Yes to See”, says Icelanders should at least see what deal they can get, so they have all the in­for­ma­tion be­fore a fi­nal de­ci­sion.

Equally, a No vote would not rule out the chance of Iceland re­sum­ing talks in the fu­ture.

What are the key is­sues?

Sovereignty has been a cru­cial is­sue in the pre-ref­er­en­dum de­bate. Iceland fought hard to be­come fully in­de­pen­dent from Denmark in 1944, and its fish­ing and ma­rine in­dus­tries make up al­most 40% of ex­ports.

The No cam­paign fears los­ing con­trol over Iceland’s prized fish­ing grounds un­der the EUs Common Fisheries Policy and has vowed never to share the coun­try’s wa­ters with any­one. Brussels has in­di­cated Iceland could earn some kind of ex­emp­tion, but it is con­sid­ered po­ten­tially the biggest ob­sta­cle to any agree­ment.

Many Icelanders re­mem­ber the so-called Cod Wars with the UK that Iceland won in the 1970s. And fish­eries was al­ways the is­sue that stopped Iceland join­ing the EU be­fore.

However, in the wake of the 2008 fi­nan­cial cri­sis and the col­lapse of Iceland’s bank­ing sys­tem, Reykjavik moved to start ac­ces­sion talks in 2009, only to bring them to a halt in 2013.

Iceland is now one of Europe’s most af­flu­ent na­tions and Eirikur Bergmann, pro­fes­sor of pol­i­tics at Bifröst University, told the BBC that many peo­ple at­tribute this to Iceland’s in­de­pen­dence”.

One Icelandic trade union sur­vey sug­gested this year that the coun­try was the most ex­pen­sive in the world, far pricier than its Nordic neigh­bours.

Although it has the fifth high­est GDP (economic out­put) per capita in the world, in­ter­est rates are stub­bornly high at 8% and in­fla­tion has climbed to 5.6%.

Yes cam­paign­ers ar­gue that the eco­nomic ben­e­fits of the EU would help bring the rates down.

Reuters

What are Iceland’s se­cu­rity con­cerns?

Iceland may be a founder mem­ber of Nato but it has no mil­i­tary and re­lies on its al­lies for de­fence.

A bi­lat­eral US de­fence agree­ment has been in place since 1951 and the No cam­paign has said Iceland’s se­cu­rity rests on both Nato and the US, and that EU mem­ber­ship is not a sub­sti­tute for Nato.

Iceland has been a strong sup­porter of Ukraine dur­ing Russia’s full-scale in­va­sion and of­fi­cials have viewed Russia’s in­creased mar­itime ma­noeu­vres near the is­land with alarm.

However, there has also been con­cern at US President Donald Trump’s ex­pressed in­ter­est in tak­ing over Greenland - es­pe­cially the fact that he has con­fused it with Iceland.

This year the EU and Iceland signed a se­cu­rity and de­fence part­ner­ship, and EU of­fi­cials said the EU offers an an­chor in a com­mu­nity of val­ues, pros­per­ity and se­cu­rity”.

What do the Yes and No cam­paigns say?

Ahead of the ref­er­en­dum, the two sides held a tele­vised de­bate where the Yes cam­paign team was headed by Prime Minister Kristrún Frostadóttir and the No cam­paign was led by Guðrún Hafsteinsdóttir, chair of the op­po­si­tion Independence Party.

Kristrún told the au­di­ence that Iceland was al­ready well in­te­grated in the European Union, and be­com­ing a mem­ber would be one of the biggest risk-re­duc­ing steps we can take”.

She also made clear that a Yes vote did not nec­es­sar­ily mean that Iceland would join, and that if there was a No vote, the re­sult would be re­spected.

Guðrún, mean­while, stressed that the vote was not about whether Iceland should work well with Europe: We al­ready do, and we want that to con­tinue.”

Instead, she por­trayed the ref­er­en­dum as a vote on whether Icelanders wanted to hand decision-making pow­ers” to Brussels on fish­eries, agri­cul­ture and their nat­ural re­sources.

Although geopol­i­tics kick-started the gov­ern­men­t’s de­ci­sion to push for a re­turn to EU talks, there has been lit­tle dis­cus­sion of it dur­ing the cam­paign.

It’s lower on the agenda than many would think,” says Hallgrimur Oddsson, di­rec­tor of EU-Iceland think-tank European Currents.

The Move to Python 3 Begins!

www.eveonline.com

Capsuleers,

EVE con­tin­ues to evolve, as a part of the EVE Evolved ini­tia­tive, and it is time to cast the spot­light on the code it­self!

Underneath every gate jump, mar­ket or­der, and fleet fight in EVE Online, there is a very large amount of Python. It has run New Eden for more than two decades and now be­gins its tran­si­tion to Python 3. For you, that means bet­ter tools to fix bugs sooner, room for new fea­tures, and a faster EVE over time.

The de­f­i­n­i­tion of suc­cess for this mi­gra­tion is sim­ple: it should be com­pletely un­no­tice­able, aside from the oc­ca­sional mo­ment when some­thing runs more smoothly.

Many of you have al­ready tested our first steps on Singularity, and those changes were de­ployed to­day. This is only the be­gin­ning of a long road ahead.

A Codebase Older Than Some of You

EVE launched in 2003, built on Stackless Python, a ver­sion of Python whose light­weight tasklets” let a sin­gle server node jug­gle thou­sands of pi­lots at once. Fenris Creations did not just adopt Stackless; it be­came one of its most sig­nif­i­cant con­trib­u­tors.

Some of you may re­mem­ber up­grad­ing to Stackless Python 2.5 in 2007, then to Stackless Python 2.7 in 2010. That was the last time EVE changed its Python ver­sion. Python 2.7 reached of­fi­cial end of life back in 2020, the rest of the soft­ware world moved on, and a whole gen­er­a­tion of cap­suleers has been born, gone to school, and started fly­ing frigates while EVE stayed on the same lan­guage ver­sion. It was re­li­able enough that a large, po­ten­tially risky mi­gra­tion never jus­ti­fied it­self, un­til now.

Sixteen years on the same ver­sion says a lot about how well it worked. The Carbon en­gine helped mas­sively, but it, too, has moved for­ward now!

Why Python 3? Why Now?

The short ver­sion: stay­ing on Python 2 in­creas­ingly holds EVE back, and mov­ing to Python 3 means a health­ier, bet­ter-sup­ported game for you.

One rea­son is per­for­mance. Recent Python 3 re­leases have de­liv­ered some of the largest speedups in the his­tory of this lan­guage. Over time, that opens the door to a faster EVE, though it is too early to say ex­actly what that will mean.

Another rea­son is the ecosys­tem. Modern li­braries, de­bug­gers, and pro­fil­ers are all built for Python 3. Every year we re­main on Python 2, more of them slip out of reach, and the more we must main­tain our­selves in­stead of im­prov­ing the game. Better tools mean we can find and fix prob­lems faster.

Python 3 sim­pli­fies many of the lan­guage’s core build­ing blocks.

Text is han­dled through a sin­gle, con­sis­tent string type, mak­ing lo­cal­iza­tion more re­li­able. Integers no longer have ar­bi­trary size lim­its, grow­ing au­to­mat­i­cally when needed. Even Python’s class sys­tem has been uni­fied, re­mov­ing legacy be­hav­ior and mak­ing ob­ject-ori­ented code more con­sis­tent.

Every char­ac­ter, every skill point, every as­set in every hangar, every ISK in every wal­let was writ­ten in Python 2 code, and all of it must read back un­der Python 3 ex­actly as it was.

The path ahead is hard, we must up­date a mas­sive amount of code while EVE keeps run­ning for you, but we know the des­ti­na­tion is reach­able, be­cause EVE Frontier al­ready runs our Carbon en­gine on mod­ern Python 3, and it works.

The Frontier mi­gra­tion cov­ered twelve mi­nor ver­sions of Python in one go, six­teen years of lan­guage evo­lu­tion in a sin­gle pro­ject. Tranquility has twenty-three years of ac­cu­mu­lated code, and, more im­por­tantly, twenty-three years of real player data, the his­tory of cap­suleers. And it must keep breath­ing 23.75 hours out of every 24.

Careful… Careful…

The EVE code­base con­sists of 2.4 mil­lion lines of Python. A lot of it pre­dates even Python 2.7, writ­ten to stan­dards from the 2.3 and 2.5 era that Python 3 re­fuses to parse at all.

So how do you mi­grate 2.4 mil­lion lines of code?

Very care­fully, and in mul­ti­ple stages.

Some of these stages will use tools de­vel­oped by the Python com­mu­nity (e.g., Python Futurize), while oth­ers will fo­cus more on EVEs unique fea­tures.

When we hit key mile­stones, we will re­quest your help by get­ting in­volved in playtests on Singularity, as you did in July, where we can ob­serve how parts of the up­dated sys­tem be­have un­der con­di­tions closer to the Tranquility server.

The first stage, where we are now, makes the code Python 3-ready while it still runs on Python 2.7.

We use a tool called Python-Future, built on the same code-rewrit­ing ma­chin­ery (2to3) that Python it­self shipped to help ex­actly this kind of mi­gra­tion. It ap­plies au­to­mated fixers”, each of which rewrites one ob­so­lete pat­tern, into a mod­ern form that both Python 2.7 and Python 3 ac­cept.

Once all the code works un­der both ver­sions, the gen­uinely hard work be­gins: the code that runs on both, but be­haves dif­fer­ently.

Measuring the Mountain (and Watching it Shrink)

How do you even know how far you are from Python 3?

We mea­sure it. Every one of our ~20K Python files is com­piled un­der a real Python 2.7 in­ter­preter and a real Python 3 in­ter­preter, be­cause the com­piler is the ground truth for whether code parses.

The first scan was a pleas­ant sur­prise: 95.9% of files al­ready com­piled un­der both ver­sions. The block­ing lines, the ones us­ing syn­tax re­jected by Python 3, num­bered about 3,300 out of 2.4 mil­lion.

The moun­tain turned out to be a large and very mea­sur­able hill:

~ 1,500 old-style print state­ments,

~ 1,500 old-style print state­ments,

~ 800 long” num­ber lit­er­als like 123L,

~ 800 long” num­ber lit­er­als like 123L,

~ 600 ex­cep­tion clauses in a syn­tax dep­re­cated be­fore EVE ex­isted,

~ 600 ex­cep­tion clauses in a syn­tax dep­re­cated be­fore EVE ex­isted,

50 uses of <>, a way of writ­ing not equal” so old that many work­ing Python de­vel­op­ers have never seen it.

50 uses of <>, a way of writ­ing not equal” so old that many work­ing Python de­vel­op­ers have never seen it.

The Challenges Ahead

Parsing is the easy part.

The same scan counts roughly 20,000 lines of code that com­pile fine un­der both ver­sions but be­have dif­fer­ently in Python 3. The clas­sic ex­am­ple is di­vi­sion: in Python 2, 1 / 2 is 0; while in Python 3 it is 0.5.

In EVE where those num­bers might be dam­age, ISK, or co­or­di­nates, each of those lines needs a hu­man de­ci­sion rather than a me­chan­i­cal fix. That work is part of Stage 2, which is why Stage 1 comes first: clear the me­chan­i­cal de­bris so hu­man at­ten­tion goes only where hu­mans are needed.

What This Means for You

In the short term, noth­ing, and that is by de­sign. Stage 1 changes are meant to be in­vis­i­ble. In the long term, this is some of the most valu­able ground­work we can lay for EVEs fu­ture: a faster in­ter­preter to power fleet fights and mar­ket hubs, mod­ern tool­ing that helps us find and fix bugs sooner, and a code­base new de­vel­op­ers can work on more pro­duc­tively, which means fea­tures reach you faster. It is in­fra­struc­ture for the next twenty years of EVE Online.

Thank You for Helping Us Prove It

Noticing noth­ing at all is the goal, and you are the ones help­ing us reach it.

At the end of July, you tested the first set of changes on Singularity. Thank you to every­one who took part.

We are now de­ploy­ing these changes to Tranquility. This is where we rely on you: keep do­ing what you al­ways do, and if any­thing feels off, please let us know by fil­ing a bug re­port.

In ad­di­tion, we are prepar­ing the agent mis­sion back­end for Python 3, but you should not no­tice a thing.

This is just the first step of many. Clearing the me­chan­i­cal de­bris was the easy part. The real work, the code that must be read line by line, is still ahead of us, and that is where we will need you most.

Keep an eye on our chan­nels for fu­ture tests. If you have ever wanted to tell your corp­mates you helped move EVE to Python 3, this is your chance!

Fly safe, on what­ever ver­sion of Python you find your­self.

Good Culture is the Biggest Productivity Hack, Not AI

newsletter.eng-leadership.com

This newslet­ter is spon­sored by Unblocked.

[Webinar] How to stop babysit­ting your agents

Agents can gen­er­ate code. Getting it right for your sys­tem, team con­ven­tions, and past de­ci­sions is the hard part. You end up wast­ing time and to­kens in the cor­rec­tion loops.

More MCPs, rules, and big­ger con­text win­dows give agents ac­cess to in­for­ma­tion, but not un­der­stand­ing. The teams pulling ahead have a con­text layer to give agents ex­actly what they need for the task at hand.

Join live on Sep 2 (FREE) to see:

Where teams get stuck on the AI ma­tu­rity curve and why com­mon fixes fall short

Where teams get stuck on the AI ma­tu­rity curve and why com­mon fixes fall short

How a con­text layer solves for qual­ity, ef­fi­ciency, and cost

How a con­text layer solves for qual­ity, ef­fi­ciency, and cost

Live demo: the same cod­ing task with and with­out a con­text layer

Live demo: the same cod­ing task with and with­out a con­text layer

Register now

Thanks to Unblocked for spon­sor­ing this newslet­ter. Let’s get back to to­day’s thought!

This is some­thing that has been on my mind for quite a while now. It seems like every­thing these days re­volves around AI, AI tools”, AI pro­duc­tiv­ity”.

You need to use this AI tool”

You need to use this AI tool”

You need to be us­ing this AI work­flow”

You need to be us­ing this AI work­flow”

Your en­gi­neers should be 2x, 5x, or even 10x more pro­duc­tive with AI

Your en­gi­neers should be 2x, 5x, or even 10x more pro­duc­tive with AI

And I get it. AI is chang­ing how we build soft­ware, and I use AI tools my­self every day as well.

But we’re fo­cus­ing too much on AI tools alone and not enough on the en­vi­ron­ment in which the tools are be­ing used. Because there’s some­thing a LOT more im­por­tant than AI tools, and that’s a great cul­ture.

But we’re fo­cus­ing too much on AI tools alone and not enough on the en­vi­ron­ment in which the tools are be­ing used. Because there’s some­thing a LOT more im­por­tant than AI tools, and that’s a great cul­ture.

Throughout my 13+ year ca­reer in the en­gi­neer­ing in­dus­try, I’ve seen both the neg­a­tive ef­fects of bad cul­ture and the pos­i­tive ef­fects of a good one. I even felt it my­self as an en­gi­neer and an en­gi­neer­ing man­ager, when de­part­ments spent whole days blam­ing each other for prob­lems.

So, I am a big be­liever that every­thing starts with a good cul­ture, and I’ll tell you all about it in this ar­ti­cle.

Let’s start!

This is a sen­tence that breaks a good cul­ture and makes peo­ple be­lieve that their job is not im­por­tant. Especially if it comes from an ex­ec­u­tive, e.g., a CEO, CPO, or even worse, a CTO.

The prob­lem with it is that it to­tally de­creases psy­cho­log­i­cal safety, and every­one starts won­der­ing whether they’ll still be needed or not.

But here is an im­por­tant thing that many peo­ple for­get:

There is no bet­ter pro­duc­tiv­ity hack than a great cul­ture. No AI tools will pro­vide big­ger pro­duc­tiv­ity gains.

There is no bet­ter pro­duc­tiv­ity hack than a great cul­ture. No AI tools will pro­vide big­ger pro­duc­tiv­ity gains.

I’ve un­for­tu­nately seen and heard this sen­tence quite a few times, ei­ther di­rectly or from an en­gi­neer or en­gi­neer­ing leader who has re­ported that to me.

I think things have got­ten a bit bet­ter this year, but in 2025 and in early 2026, I heard this many times.

Let’s go more into why this is re­ally prob­lem­atic.

Many ex­ec­u­tives be­lieve that AI will just mag­i­cally in­crease the pro­duc­tiv­ity of every­one. But the rea­son that of­ten does­n’t work is Conway’s law. It states:

Organizations which de­sign sys­tems (in the broad sense used here) are con­strained to pro­duce de­signs which are copies of the com­mu­ni­ca­tion struc­tures of these or­ga­ni­za­tions.

Organizations which de­sign sys­tems (in the broad sense used here) are con­strained to pro­duce de­signs which are copies of the com­mu­ni­ca­tion struc­tures of these or­ga­ni­za­tions.

I men­tion this law quite a lot in dif­fer­ent ar­ti­cles, be­cause it’s just so im­por­tant. And the rea­son why it’s par­tic­u­larly rel­e­vant in this case is that the over­all pro­duc­tiv­ity and the end prod­uct” mimic the over­all cul­ture of the or­ga­ni­za­tion.

If the cul­ture is bad, the end prod­uct will be bad as well, be­cause peo­ple just don’t work to­gether well and they don’t com­mu­ni­cate prop­erly. But if the cul­ture is good, then of­ten the end prod­uct will be good as well.

So, you should al­ways think about good cul­ture as a pre­req­ui­site for every­thing else. And I like to make an anal­ogy to what health is to us, hu­mans. Without health, we can’t do any­thing else well.

And the same is true for or­ga­ni­za­tions with bad cul­ture, every­thing else won’t be good as well.

Now, here comes the prob­lem that many peo­ple fall into, es­pe­cially CEOs and other ex­ec­u­tives. They see ei­ther a com­peti­tor or some other com­pany re­port­ing 10x higher pro­duc­tiv­ity us­ing a cer­tain AI tool.

They start to panic, they start feel­ing FOMO (fear of miss­ing out), and they start blam­ing peo­ple around them: Why don’t we have that same amount of pro­duc­tiv­ity as well?”

A lot of the CEOs are un­aware of what kind of prob­lems this may bring. Especially to the cul­ture of the or­ga­ni­za­tion. When you start ac­tively blaming”, it shows to every­one that they are not do­ing their job well, and that you don’t trust them to make good de­ci­sions.

And this es­pe­cially falls hard on en­gi­neers and en­gi­neer­ing lead­ers, as they are of­ten viewed as peo­ple who should be ini­ti­at­ing AI adop­tion.

What many CEOs don’t re­al­ize is that a lot of the reporting” of AI in­creas­ing pro­duc­tiv­ity by 10x is more or less sell­ing a cer­tain AI prod­uct, or a cer­tain part­ner­ship where they are pro­mot­ing the other prod­uct.

So, many of the CEOs fall for the trick and make their com­pany cul­ture a lot worse.

My rec­om­men­da­tion: Always take a look at what the in­cen­tives are be­hind peo­ple say­ing some­thing, that says a lot about whether it’s true or not.

My rec­om­men­da­tion: Always take a look at what the in­cen­tives are be­hind peo­ple say­ing some­thing, that says a lot about whether it’s true or not.

Here is an­other re­ally im­por­tant point, and many peo­ple seem to for­get it. As we men­tioned, good cul­ture is a pre­req­ui­site for every­thing else. But when it comes to AI, it am­pli­fies every­thing you al­ready have.

So, both AI and good cul­ture go hand in hand re­ally well to­gether. AI makes bad com­mu­ni­ca­tion even worse, it also makes bad ar­chi­tec­ture even worse as well.

But if you have a good cul­ture and good ar­chi­tec­ture, peo­ple will be more pro­duc­tive be­cause they will help each other, and AI will also have a bet­ter blue­print of what good looks like be­cause of good ar­chi­tec­ture.

Always keep this in mind. Just start­ing to use AI for every­thing just makes things worse if you don’t have good processes, ar­chi­tec­ture, and peo­ple don’t work to­gether as a team.

Everyone just goes in the wrong di­rec­tion faster.

If you’re won­der­ing whether you have a great cul­ture in­side your team or or­ga­ni­za­tion, here are some use­ful ques­tions to an­swer:

Do peo­ple know what they are re­spon­si­ble for?

Do peo­ple know what they are re­spon­si­ble for?

Can they make de­ci­sions with­out un­nec­es­sary ap­provals?

Can they make de­ci­sions with­out un­nec­es­sary ap­provals?

Do they feel safe chal­leng­ing lead­er­ship?

Do they feel safe chal­leng­ing lead­er­ship?

Do teams trust each other?

Do teams trust each other?

Are pri­or­i­ties clear?

Are pri­or­i­ties clear?

Can peo­ple dis­agree con­struc­tively?

Can peo­ple dis­agree con­struc­tively?

Do we re­ward out­comes?

Do we re­ward out­comes?

Do peo­ple un­der­stand why they are build­ing some­thing?

Do peo­ple un­der­stand why they are build­ing some­thing?

Do we learn from fail­ures, or do we look for some­one to blame?

Do we learn from fail­ures, or do we look for some­one to blame?

If the an­swer to these is Yes”, then you are on a good track to have a good cul­ture. Additionally, here is my per­sonal check­list that I look at when do­ing an as­sess­ment of a cer­tain en­gi­neer­ing cul­ture:

You can find my full check­list for as­sess­ing whether a cer­tain en­gi­neer­ing or­ga­ni­za­tion is great or not.

You can use the same check­list in your case as well. This check­list pro­vides you with a guide on what you should fo­cus on in or­der to cre­ate a great en­gi­neer­ing or­ga­ni­za­tion where every­one can thrive.

It works for or­ga­ni­za­tions with mul­ti­ple teams or smaller or­ga­ni­za­tions. You can also use this for a spe­cific team that is part of the big­ger or­ga­ni­za­tion as well.

Paid sub­scribers, you can get it here: 🎁 Products for paid sub­scribers.

Additionally, take a look at how I do a full en­gi­neer­ing or­ga­ni­za­tion au­dit in this ar­ti­cle:

Now, let’s go to a very im­por­tant thing next. How to ac­tu­ally mes­sage AI adop­tion cor­rectly, so that you keep a great cul­ture and have every­one ex­cited about us­ing AI tools.

The best mes­sag­ing I saw (and has worked well) is the fol­low­ing:

What great en­gi­neers and en­gi­neer­ing lead­ers do is learn and uti­lize all dif­fer­ent tools that help them do the work bet­ter. This has­n’t re­ally changed.AI is like any other tool that has come out over the years. Use it in your fa­vor to help your team, or­ga­ni­za­tion, and the busi­ness. That’s what great en­gi­neers and en­gi­neer­ing lead­ers do. And it has­n’t changed with AI.

What great en­gi­neers and en­gi­neer­ing lead­ers do is learn and uti­lize all dif­fer­ent tools that help them do the work bet­ter. This has­n’t re­ally changed.

AI is like any other tool that has come out over the years. Use it in your fa­vor to help your team, or­ga­ni­za­tion, and the busi­ness. That’s what great en­gi­neers and en­gi­neer­ing lead­ers do. And it has­n’t changed with AI.

Don’t ever men­tion some­thing even close to replacing” or some­thing along the lines of You are not im­por­tant any­more, be­cause we have AI. Those are just go­ing to com­pletely di­min­ish morale and break the en­tire cul­ture.

When it comes to AI adop­tion, it only works bot­tom-up, it never works top-down, and the rea­son for that is that things are chang­ing so fast, new AI tools are com­ing out every day, and there needs to be con­stant ex­change of knowl­edge be­tween every­one.

Always keep this in mind. Trying to force” peo­ple will only re­sult in bad out­comes.

Many peo­ple be­lieve that AI adop­tion hap­pens just by in­tro­duc­ing a new tool, and peo­ple will just mag­i­cally be­come 2 – 5x more pro­duc­tive. Well, it does­n’t work like that.

AI adop­tion is not a tool­ing prob­lem, it’s a lead­er­ship prob­lem.

AI adop­tion is not a tool­ing prob­lem, it’s a lead­er­ship prob­lem.

And at the same time, if your goal is to just in­crease AI us­age amongst every­one, you’re ba­si­cally los­ing. The goal should al­ways be busi­ness suc­cess and over­all out­comes.

As we men­tioned, AI is like any other tool, and we need to treat it that way.

I wrote the ar­ti­cle called: Companies should hire more en­gi­neers in the age of AI, back in July, 2025. And it’s now more true than ever.

I fully be­lieve that the best com­pa­nies hire more en­gi­neers, not fewer, and the rea­son is that with more peo­ple, you ex­po­nen­tially in­crease your pro­duc­tiv­ity as well.

Of course, the pre­req­ui­site is that the com­pany cul­ture is on point. Without it, it won’t work.

Time to mar­ket (TTM) is a very im­por­tant met­ric in the age of AI, and I strongly be­lieve that the best com­pa­nies in a spe­cific in­dus­try are go­ing to be the ones that are go­ing to move the fastest, make ad­just­ments based on mar­ket needs, and pro­vide the best ex­pe­ri­ence for the users.

This was true be­fore the age of AI, and now it’s even more im­por­tant as things are pro­gress­ing faster than ever.

So, know­ing this, why would you ac­tu­ally re­strict your­self with less pro­duc­tiv­ity and less tal­ent?

So, know­ing this, why would you ac­tu­ally re­strict your­self with less pro­duc­tiv­ity and less tal­ent?

It’s a huge com­pet­i­tive ad­van­tage to be more pro­duc­tive. And I be­lieve be­ing less pro­duc­tive (that you can be) is ac­tu­ally a huge li­a­bil­ity, which would re­sult in an over­all de­crease in mar­ket share per­cent­age long-term, in my opin­ion.

GrapheneOS (@grapheneos.org)

bsky.app

This is a heav­ily in­ter­ac­tive web ap­pli­ca­tion, and JavaScript is re­quired. Simple HTML in­ter­faces are pos­si­ble, but that is not what this is.

Learn more about Bluesky at bsky.so­cial and at­proto.com. We have a par­tial port of GrapheneOS to the Pixel 11 se­ries af­ter a week of work on it. We’re un­able to com­plete the port due to lack of sup­port for ARM hard­ware mem­ory tag­ging in soft­ware, firmware and near cer­tainly hard­ware. It ap­pears Google cut an im­por­tant se­cu­rity fea­ture to save money.

Glacier mice

en.wikipedia.org

From Wikipedia, the free en­cy­clo­pe­dia

Glacier mice are colonies of mosses found on some glac­i­ers and ad­ja­cent ecosys­tems. They are com­posed of mul­ti­ple species of moss[1] and can also host other species, such as ne­ma­tode worms, spring­tails, and wa­ter bears.[2] Although what pre­con­di­tions are nec­es­sary for glac­ier mice to form has yet to be de­ter­mined, they have been ob­served in Alaska, Chile, Greenland, Iceland, Svalbard, Uganda and Venezuela, as well as sev­eral sub-Antarc­tic is­lands.[3][4][5] In at least some cases, glac­ier mice ap­par­ently re­pro­duce asex­u­ally due to the ef­fect of the harsh glac­ier en­vi­ron­ment on tra­di­tional moss re­pro­duc­tion strate­gies.[6]

Glacier mice are no­table for their move­ment across the ice, which ap­pears to be non-ran­dom, tak­ing the form of herd-like be­hav­ior. This move­ment is as yet un­ex­plained,[1] and does not ap­pear to be solely the prod­uct of wind or the di­rec­tion of a slope.

Gilbert and Bartholomaus’s ev­i­dence[1] shows a south­ern mi­gra­tion in Alaska which sug­gests a mech­a­nism: the dark coloured moss ab­sorbs sun en­ergy on the south side, and casts a shadow on the north side. This causes the ice to melt only on the sunny side, cre­at­ing a small de­pres­sion, the moss then rolls into the de­pres­sion and the process con­tin­ues cre­at­ing grad­ual south­ern mo­tion (N. Hemisphere) and north­ern mo­tion (S. Hemisphere).[citation needed]

On av­er­age, they move about 2.5 cm (0.98 in) per day.[7] The use of ac­celerom­e­ters has demon­strated that glac­ier mice do in fact ro­tate and roll, rather than sim­ply slid­ing across the ice, over time ex­pos­ing all of their sur­faces.[7] Measurements of glac­ier mice show that they re­tain heat and mois­ture, cre­at­ing a suit­able ecosys­tem for mi­croor­gan­isms that oth­er­wise could not live on a glac­ier.[8][9] Glacier mice are be­lieved to per­sist for six years or longer.[7]

Glacier mice were first de­scribed in 1950 by Icelandic me­te­o­rol­o­gist Jón Eyþórsson, who re­ferred to them as jökla-mýs, which is Icelandic for glacier mice.“[10]

1 2 3 Greenfieldboyce, Nell (2020 – 05-09). Herd Of Fuzzy Green Glacier Mice’ Baffles Scientists”. NPR. Retrieved 2020 – 05-25.

↑ Hausheer, Justine E. (January–February 2013). Curious Mice’ Thrive on Glaciers”. Audubon. Retrieved 2020 – 05-25.

↑ Dickson, James H.; Johnson, Robert E (2014). Mosses and the be­gin­ning of plant suc­ces­sion on the Walker Glacier, south­east­ern Alaska”. Lindbergia. 37 (2): 60 – 65. doi:10.25227/​linbg.01052. S2CID 133983103.

↑ Perez, Francisco L. (1991). Ecology and Morphology of Globular Mosses of Grimmia lon­girostris in the Paramo de Piedras Blancas, Venezuelan Andes”. Arctic and Alpine Research. 23 (2): 133 – 148. doi:10.2307/​1551378. JSTOR 1551378.

↑ Uetake, Jun; Tanaka, Sota; Hara, Kosuke; Tanabe, Yukiko; Samyn, Denis; Motoyama, Hideaki; Imura, Satoshi; Kohshima, Shiro (17 November 2014). Novel Biogenic Aggregation of Moss Gemmae on a Disappearing African Glacier”. PLOS ONE. 9 (11) e112510. Bibcode:2014PLoSO…9k2510U. doi:10.1371/​jour­nal.pone.0112510. PMC 4234412. PMID 25401789.

↑ Gao, Fei (2016 – 04-21). On Glaciers, Moss Become Asexual”. GlacierHub. Retrieved 2020 – 05-25.

1 2 3 Hotaling, Scott; Bartholomaus, Timothy C.; Gilbert, Sophie L. (2020). Rolling Stones Gather Moss: Movement and Longevity of Moss Balls on an Alaskan Glacier”. Polar Biology. 43 (6): 735 – 744. Bibcode:2020PoBio..43..735H. doi:10.1007/​s00300 – 020-02675 – 6. ISSN 0722 – 4060. S2CID 218653483.

↑ Kaplan, Matt (2012 – 08-27). On Glaciers, Balls of Dust and Moss Make a Cozy Home”. The New York Times. New York City, New York. Retrieved 25 May 2020.

↑ Coulson, S.J.; Midgley, N.G. (2012). The role of glac­ier mice in the in­ver­te­brate col­o­niza­tion of glacial sur­faces; the moss balls of the Falljökull, Iceland” (PDF). Polar Biology. 35 (11): 1651 – 1658. Bibcode:2012PoBio..35.1651C. doi:10.1007/​s00300 – 012-1205 – 4. S2CID 18751290.

Coulson, S.J.; Midgley, N.G. (2012). The role of glac­ier mice in the in­ver­te­brate col­o­niza­tion of glacial sur­faces; the moss balls of the Falljökull, Iceland” (PDF). Polar Biology. 35 (11): 1651 – 1658. Bibcode:2012PoBio..35.1651C. doi:10.1007/​s00300 – 012-1205 – 4. S2CID 18751290.

Belkina, Olga A.; Vilnet, Anna A. (2015). Some as­pects of the moss pop­u­la­tion de­vel­op­ment on the Svalbard glac­i­ers”. Czech Polar Reports. 5 (2): 160 – 175. Bibcode:2015CzPR….5..160B. doi:10.5817/​CPR2015 – 2-14.

Hotaling, Scott; Bartholomaus, Timothy C.; Gilbert, Sophie L. (2020). Rolling stones gather moss: move­ment and longevity of moss balls on an Alaskan glac­ier”. Polar Biology. 43 (6): 735 – 744. Bibcode:2020PoBio..43..735H. doi:10.1007/​s00300 – 020-02675 – 6. S2CID 218653483.

The Natural History Museum, London: The se­cret world of glac­ier mice on YouTube

Hot Chips 2026: Samsung’s Processing-in-Memory (PIM)

chipsandcheese.com

In-memory com­pute has been an at­trac­tive propo­si­tion for many years be­cause com­pute within a mem­ory chip can ex­ploit its higher in­ter­nal band­width. Additionally, in-mem­ory com­pute avoids the long la­tency path be­tween DRAM and tra­di­tional com­pute cores. At Hot Chips 2026, Samsung dis­cusses their con­tin­ued pur­suit of in-mem­ory com­pute with their PIM (Processing-in-Memory) push. They’re im­ple­ment­ing MAC units within LPDDR5X chips, while pre­serv­ing the chip’s abil­ity to in­ter­face with a stan­dard mem­ory con­troller.

DRAM chips are in­ter­nally di­vided into banks, each with their own read and write logic. During a nor­mal DRAM ac­cess, the mem­ory con­troller se­lects a bank, ac­ti­vates a row within it, and then ac­cesses data via col­umn ac­cess strobe (CAS) com­mands. Bandwidth is lim­ited by the chip’s ex­ter­nal DRAM in­ter­face. Even if the mem­ory con­troller could ac­ti­vate all of the banks si­mul­ta­ne­ously, it would­n’t be able to get its hands the full band­width avail­able across all the banks.

Samsung’s LPDDR5X-PIM is like a nor­mal LPDDR5X-9600 chip with 16 banks, but places a PIM (Processing-in-Memory) block at each bank. These PIM blocks ac­cess their at­tached DRAM bank with­out be­ing con­strained by the chip’s ex­ter­nal bus. Together, they can uti­lize the chip’s in­ter­nal band­width across all 16 banks, which comes out to 614 GB/s. For com­par­i­son, reg­u­lar DRAM ac­cesses can hit two banks in par­al­lel and max out at 76.8 GB/s.

PIM blocks in­ter­nally con­sist of a MAC tree with sur­round­ing reg­is­ter files and con­trol logic. A 1024-bit in­struc­tion reg­is­ter file holds up to 64 16-bit in­struc­tions. A 4 kbit source reg­is­ter file is meant for ac­ti­va­tion vec­tors, and sup­plies one source operand for the MAC ar­ray. Samsung ex­pects soft­ware to load model weights into DRAM, so the at­tached DRAM block sup­plies the sec­ond operand. Model weights can be scaled be­fore the MAC com­pu­ta­tion, with scale fac­tors com­ing from a 2 kbit scale reg­is­ter.

The PIM block’s MAC ar­ray sup­ports a va­ri­ety of low pre­ci­sion for­mats. Numbers from Samsung’s pre­sen­ta­tion sug­gest each PIM block’s MAC ar­ray can sus­tain four INT8 or FP8 MAC op­er­a­tions per data clock, or eight per cy­cle when not count­ing the dou­ble data rate. Throughput dou­bles for 4-bit in­put weights, bring­ing pack­age-wide com­pute through­put to 2.4 TOPS.

This is­n’t a very high fig­ure, but an im­ple­men­ta­tion with many LPDDR5X chips will have higher ag­gre­gate through­put. For ex­am­ple, eight LPDDR5X chips to­gether would have 9.6 INT8 TOPS, which just about matches the NPU in Intel’s Meteor Lake. That would also be an ex­pen­sive setup, be­cause eight 16 GB LPDDR5X chips would cor­re­spond to 128 GB of sys­tem mem­ory.

One high­light of LPDDR5X-PIM is that it stays within the stan­dard LPDDR5X pro­to­col while ex­pos­ing com­pute ca­pa­bil­i­ties that aren’t part of the mem­ory stan­dard. Samsung achieves this by set­ting aside spe­cial row ad­dresses, which act like MMIO ad­dresses of sorts. Each chan­nel has a pair of pre­de­fined rows for mode con­trol. Activating one of those rows sets the chip to sin­gle-bank mode, while the other sets the chip to multi-bank mode. Single-bank is the reg­u­lar mode, while multi-bank ap­plies com­mands across all 16 banks to ex­ploit the chip’s in­ter­nal band­width.

Special per-bank rows change how read and write com­mands be­have. Activating one of these spe­cial rows makes read and write com­mands ac­cess PIM reg­is­ters in­stead of reg­u­lar DRAM bank con­tents (PIM Registers Activated mode). Samsung en­vi­sions a ML use case where soft­ware loads model weights into DRAM while the chip is in nor­mal sin­gle-bank mode. Then, soft­ware switches into multi-bank mode and en­ters PIM Registers Activated mode. This lets code write ac­ti­va­tion val­ues into PIM source reg­is­ters, set scale fac­tors in PIM scale reg­is­ters, and spec­ify an op­er­a­tion that’s filled into PIM in­struc­tion reg­is­ters.

Because the chip is in multi-bank mode, each PIM reg­is­ter write gets broad­cast across all 16 banks. PIM com­pute there­fore works like a very con­strained SIMD proces­sor, where the op­er­a­tion, scale fac­tor, and one source operand are the same across all banks. Samsung does al­low writ­ing PIM reg­is­ters in sin­gle-bank mode, but that func­tion­al­ity is meant for de­bug­ging pur­poses. Each DRAM packet is 256 bits (BL=16) Filling each source reg­is­ter takes 16 write com­mands. Doing that one bank at a time across each of the 16 banks would mean 256 write com­mands, turn­ing host to PIM reg­is­ter write band­width into the lim­it­ing fac­tor.

After prim­ing PIM reg­is­ters, soft­ware switches back into multi-bank mode and is­sues read com­mands. Instead of read­ing DRAM con­tents, these read com­mands ini­ti­ate com­pu­ta­tions and get re­sults ac­cu­mu­lated into PIM vec­tor reg­is­ter files. Then, write com­mands tell PIM blocks to write VRF con­tents back into the DRAM banks.

PIM has to han­dle re­order­ing that a nor­mal mem­ory con­troller might carry out. When code sets up PIM by ac­ti­vat­ing the bank, PIM con­ven­tion­ally sets up its in­struc­tion reg­is­ter files so that in­struc­tions se­quen­tially ac­cess each source reg­is­ter el­e­ment. For in­stance, the first in­struc­tion would ref­er­ence the first source reg­is­ter el­e­ment, the sec­ond in­struc­tion would ref­er­ence the sec­ond source reg­is­ter el­e­ment, and so on. However, that falls apart if the mem­ory con­troller re­orders ac­cesses. Samsung gets around this with an Address Align Mode (AAM), which makes each in­struc­tion in­fer its source reg­is­ter in­dex from the col­umn ad­dress be­ing ac­cessed.

When the host fin­ishes us­ing in-mem­ory com­pute and wants to read re­sults, it switches the DRAM chip back into sin­gle-bank mode. Then, reg­u­lar DRAM reads and writes will start ac­cess­ing DRAM con­tents as nor­mal.

Samsung in­ter­nally achieved huge per­for­mance gains when tak­ing ad­van­tage of LPDDR5X-PIM, com­pared to us­ing stan­dard LPDDR5X. The chip’s abil­ity to op­er­ate with a stan­dard mem­ory con­troller is im­pres­sive, and Samsung has been very cre­ative in how they ap­proached the prob­lem.

Repurposing stan­dard DRAM com­mands should sim­plify hard­ware, but soft­ware chal­lenges look steep. Because PIM modes change the mean­ing of DRAM ac­cess com­mands, soft­ware can’t use PIM and carry out reg­u­lar mem­ory ac­cesses at the same time. That ap­plies even across threads, be­cause mem­ory con­trollers and DRAM chips are obliv­i­ous to what thread an ac­cess is for. If a non-PIM thread reads from mem­ory while an­other is us­ing PIM, the first thread could cause an un­in­tended com­pu­ta­tion and get in­cor­rect re­sults into the PIM VRFs. A write from the non-PIM thread could cause PIM blocks to write VRF data back to the wrong ad­dress.

Samsung deals with this by hav­ing the host iso­late a PIM re­gion in mem­ory. I can’t think of an easy way to do this in a typ­i­cal sys­tem with­out com­pro­mis­ing mem­ory band­width and PIM per­for­mance. Hardware nor­mally in­ter­leaves ad­dresses across chan­nels, which lets com­mon ac­cess pat­terns nat­u­rally uti­lize band­width across those chan­nels. PIM uses per-chan­nel rows to con­trol sin­gle/​multi-bank mode changes, so drop­ping in­ter­leav­ing and des­ig­nat­ing mem­ory chan­nels as PIM-only would be the only rea­son­able way to cre­ate a PIM re­gion. Then, non-PIM ap­pli­ca­tions would­n’t be able to take ad­van­tage of band­width from chan­nels re­served for PIM. PIM code would miss out on band­width and com­pute from non-PIM chan­nels. The lat­ter could be a sig­nif­i­cant is­sue be­cause per-chip com­pute through­put is­n’t that high.

Multitasking is­sues could per­sist even af­ter iso­lat­ing a PIM re­gion. If an ap­pli­ca­tion wants to use PIM and take ad­van­tage of mul­ti­thread­ing, it would have to guard PIM re­gion ac­cesses with locks to pre­vent cases where one thread tries to do PIM com­pute while an­other at­tempts reg­u­lar mem­ory ac­cesses. Things get even worse with a mod­ern mul­ti­task­ing op­er­at­ing sys­tem, where mul­ti­ple processes could try to use PIM with­out be­ing aware of each other. I’m not sure there’s a good way to han­dle that be­sides mak­ing the op­er­at­ing sys­tem run PIM com­pute code seg­ments with all other threads blocked and in­ter­rupts dis­abled. Handling in­ter­rupts or con­text switches with PIM feels like a night­mare for the OS in any case. Preempting a PIM thread would mean bring­ing the mem­ory chan­nel out of PIM mode and sav­ing PIM state. The OS would have to read out in­struc­tion, source, scale, and vec­tor reg­is­ter file across each bank and save it some­where. Only al­low­ing a sin­gle run­ning thread with no task switch­ing would leave mul­ti­threaded per­for­mance on the table, and could lead to sys­tem re­spon­sive­ness is­sues if code spends too long in PIM com­pute sec­tions.

PIM com­pute breaks a mem­ory sub­sys­tem’s ex­pec­ta­tions about DRAM be­hav­ior be­cause DRAM can gen­er­ate mem­ory val­ues that the cache hi­er­ar­chy never knows about. Caches can also break PIM be­hav­ior by ab­sorb­ing ac­cesses meant to trig­ger PIM op­er­a­tions. Samsung there­fore rec­om­mends map­ping PIM mem­ory as un­cacheable. That’s prob­lem­atic be­cause mod­ern CPUs and GPUs rely heav­ily on caching to mit­i­gate DRAM la­tency. Performance on un­cacheable mem­ory will be ex­tremely slow be­cause the CPU or GPU cores will spend far more time stalled wait­ing on mem­ory.

Skipping caches is­n’t the only prob­lem. PIM reads act like MMIO ac­cesses be­cause they cause com­pu­ta­tions that af­fect PIM VRF val­ues, rather than just re­triev­ing data. CPUs also mit­i­gate mem­ory la­tency by ini­ti­at­ing loads be­fore they know that load data will ac­tu­ally be needed. Branch pre­dic­tion lets CPUs is­sue in­struc­tions be­fore the core knows for cer­tain that those in­struc­tions will be ex­e­cuted. Prefetchers ob­serve mem­ory ac­cess pat­terns and at­tempt to load data into cache be­fore in­struc­tions re­quest that data. If the CPU loads data that turns out to un­needed later on, that’s fine be­cause loads nor­mally won’t cause in­cor­rect pro­gram be­hav­ior. Unfortunately that’s not true with PIM, where reads trig­ger com­pu­ta­tions that mod­ify PIM VRF con­tents.

Working with a PIM re­gion will likely mean mak­ing mem­ory ac­cesses non-spec­u­la­tive as well as non-cacheable. Running a CPU with­out caching, prefetch­ing, or out-of-or­der ex­e­cu­tion will crip­ple per­for­mance.

Setting aside PIM mode dif­fi­cul­ties, in-mem­ory com­pute poses high level chal­lenges for soft­ware. Each PIM block only has fast ac­cess to its lo­cally at­tached DRAM bank. All other in­put data has to be brought in through the DRAM chip’s com­par­a­tively con­strained ex­ter­nal in­ter­face. PIM blocks can’t di­rectly ex­change data with each other, so the host has to move data us­ing reg­u­lar DRAM reads and writes if one PIM block needs to use re­sults gen­er­ated by an­other.

Samsung’s LPDDR5X-PIM can the­o­ret­i­cally go into any server, desk­top, lap­top, or even mo­bile de­vice thanks to its abil­ity to work with stan­dard mem­ory con­trollers. However, that does­n’t mean it’ll be easy to use with typ­i­cal hard­ware and soft­ware par­a­digms. PIM mode switch­ing throws a wrench into the works for mul­ti­task­ing op­er­at­ing sys­tems. Modifying DRAM con­tents un­der the hood and at­tach­ing side ef­fects to read com­mands breaks CPU caching, prefetch­ing, and out-of-or­der ex­e­cu­tion.

I don’t think there’s an easy way to use in-mem­ory com­pute with­out changes through­out the mem­ory sub­sys­tem. For ex­am­ple, some­thing like should make soft­ware adop­tion eas­ier:

Expand the DRAM in­ter­face to add a set of com­pute com­mands, avoid­ing mode switch com­plex­ity

Expand the DRAM in­ter­face to add a set of com­pute com­mands, avoid­ing mode switch com­plex­ity

Have the mem­ory con­troller act like a peer CPU core from a cache co­herency per­spec­tive. Before us­ing in-mem­ory com­pute com­mands, the mem­ory con­troller is­sues read-for-own­er­ship (RFO) re­quests for all af­fected cache lines. That lets the mem­ory con­troller ob­tain any mod­i­fied data and write it back to DRAM be­fore start­ing in-mem­ory com­pute, en­sur­ing that in-mem­ory com­pute re­sults re­flect the lat­est CPU-side writes. Then, the mem­ory con­troller holds own­er­ship of af­fected cache lines un­til in-mem­ory com­pute op­er­a­tions com­plete, let­ting CPU cores ob­serve in-mem­ory com­pute re­sults with­out need­ing to in­val­i­date or by­pass caches

Have the mem­ory con­troller act like a peer CPU core from a cache co­herency per­spec­tive. Before us­ing in-mem­ory com­pute com­mands, the mem­ory con­troller is­sues read-for-own­er­ship (RFO) re­quests for all af­fected cache lines. That lets the mem­ory con­troller ob­tain any mod­i­fied data and write it back to DRAM be­fore start­ing in-mem­ory com­pute, en­sur­ing that in-mem­ory com­pute re­sults re­flect the lat­est CPU-side writes. Then, the mem­ory con­troller holds own­er­ship of af­fected cache lines un­til in-mem­ory com­pute op­er­a­tions com­plete, let­ting CPU cores ob­serve in-mem­ory com­pute re­sults with­out need­ing to in­val­i­date or by­pass caches

Add a new set of CPU in­struc­tions like rep macb” that per­form mul­ti­ply-ac­cu­mu­late op­er­a­tions over a block of mem­ory with fixed mul­ti­pli­cand/​scale fac­tors and un­de­fined nu­mer­i­cal char­ac­ter­is­tics. The CPU can choose whether to use in-mem­ory com­pute (if sup­ported by DRAM) or gen­er­ate a se­quence of in­ter­nal ops (if op­er­at­ing over a small set of data that’s al­ready in cache).

Add a new set of CPU in­struc­tions like rep macb” that per­form mul­ti­ply-ac­cu­mu­late op­er­a­tions over a block of mem­ory with fixed mul­ti­pli­cand/​scale fac­tors and un­de­fined nu­mer­i­cal char­ac­ter­is­tics. The CPU can choose whether to use in-mem­ory com­pute (if sup­ported by DRAM) or gen­er­ate a se­quence of in­ter­nal ops (if op­er­at­ing over a small set of data that’s al­ready in cache).

With those hard­ware changes, soft­ware would be able to use in-mem­ory com­pute from a mul­ti­task­ing op­er­at­ing sys­tem with­out re­serv­ing mem­ory or los­ing thread-level par­al­lelism to PIM-related locks and syn­chro­niza­tion. A trans­par­ent CPU in­struc­tion avoids the prob­lem of ship­ping hard­ware spe­cific bi­na­ries, and al­lows for­ward-com­pat­i­ble code that au­to­mat­i­cally takes ad­van­tage of new hard­ware ca­pa­bil­i­ties in­clud­ing dif­fer­ent in-mem­ory com­pute im­ple­men­ta­tions. It also lets hard­ware use im­ple­men­ta­tion-spe­cific knowl­edge and real-time data (like a no-fill-on-miss cache lookup) to make the best de­ci­sion about where to carry out com­pute. I don’t like the soft­ware al­ter­na­tive of re­serv­ing mem­ory re­gions, mark­ing them un­cacheable, and block­ing threads. There’s just too many trade­offs around per­for­mance, mem­ory ca­pac­ity, and re­spon­sive­ness.

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.