10 interesting stories served every morning and every evening.




1 1,321 shares, 60 trendiness

EFF is Leaving X

After al­most twenty years on the plat­form, EFF is log­ging off of X. This is­n’t a de­ci­sion we made lightly, but it might be over­due. The math has­n’t worked out for a while now.

We posted to Twitter (now known as X) five to ten times a day in 2018. Those tweets gar­nered some­where be­tween 50 and 100 mil­lion im­pres­sions per month. By 2024, our 2,500 X posts gen­er­ated around 2 mil­lion im­pres­sions each month. Last year, our 1,500 posts earned roughly 13 mil­lion im­pres­sions for the en­tire year. To put it bluntly, an X post to­day re­ceives less than 3% of the views a sin­gle tweet de­liv­ered seven years ago.

When Elon Musk ac­quired Twitter in October 2022, EFF was clear about what needed fix­ing.

* Greater user con­trol: Giving users and third-party de­vel­op­ers the means to con­trol the user ex­pe­ri­ence through fil­ters and

Twitter was never a utopia. We’ve crit­i­cized the plat­form for about as long as it’s been around. Still, Twitter did de­serve recog­ni­tion from time to time for vo­cif­er­ously fight­ing for its users’ rights. That changed. Musk fired the en­tire hu­man rights team and laid off staffers in coun­tries where the com­pany pre­vi­ously fought off cen­sor­ship de­mands from re­pres­sive regimes. Many users left. Today we’re join­ing them.

Yes. And we un­der­stand why that looks con­tra­dic­tory. Let us ex­plain.

EFF ex­ists to pro­tect peo­ple’s dig­i­tal rights. Not just the peo­ple who al­ready value our work, have opted out of sur­veil­lance, or have al­ready mi­grated to the fe­di­verse. The peo­ple who need us most are of­ten the ones most em­bed­ded in the walled gar­dens of the main­stream plat­forms and sub­jected to their cor­po­rate sur­veil­lance.

Young peo­ple, peo­ple of color, queer folks, ac­tivists, and or­ga­niz­ers use Instagram, TikTok, and Facebook every day. These plat­forms host mu­tual aid net­works and serve as hubs for po­lit­i­cal or­ga­niz­ing, cul­tural ex­pres­sion, and com­mu­nity care. Just delet­ing the apps is­n’t al­ways a re­al­is­tic or ac­ces­si­ble op­tion, and nei­ther is push­ing every user to the fe­di­verse when there are cir­cum­stances like:

* You own a small busi­ness that de­pends on Instagram for cus­tomers.

* Your abor­tion fund uses TikTok to spread cru­cial in­for­ma­tion.

* You’re iso­lated and rely on on­line spaces to con­nect with your com­mu­nity.

Our pres­ence on Facebook, Instagram, YouTube, and TikTok is not an en­dorse­ment. We’ve spent years ex­pos­ing how these plat­forms sup­press mar­gin­al­ized voices, en­able in­va­sive be­hav­ioral ad­ver­tis­ing, and flag posts about abor­tion as dan­ger­ous. We’ve also taken ac­tion in court, in leg­is­la­tures, and through di­rect en­gage­ment with their staff to push them to change poor poli­cies and prac­tices.

We stay be­cause the peo­ple on those plat­forms de­serve ac­cess to in­for­ma­tion, too. We stay be­cause some of our most-read posts are the ones crit­i­ciz­ing the very plat­form we’re post­ing on. We stay be­cause the fewer steps be­tween you and the re­sources you need to pro­tect your­self, the bet­ter.

When you go on­line, your rights should go with you. X is no longer where the fight is hap­pen­ing. The plat­form Musk took over was im­per­fect but im­pact­ful. What ex­ists to­day is some­thing else: di­min­ished, and in­creas­ingly de min­imis.

EFF takes on big fights, and we win. We do that by putting our time, skills, and our mem­bers’ sup­port where they will ef­fect the most change. Right now, that means Bluesky, Mastodon, LinkedIn, Instagram, TikTok, Facebook, YouTube, and eff.org. We hope you fol­low us there and keep sup­port­ing the work we do. Our work pro­tect­ing dig­i­tal rights is needed more than ever be­fore, and we’re here to help you take back con­trol.

...

Read the original on www.eff.org »

2 525 shares, 34 trendiness

Native Instant Space Switching on MacOS

• 3 min read • more posts View on • 3 min read • more posts View on

The worst part about the MacOS win­dow man­age­ment sit­u­a­tion is the in­abil­ity to in­stantly switch spaces, and that Apple has con­tin­u­ously ig­nored re­quests to dis­able the nau­se­at­ing switch­ing an­i­ma­tion. Sure, it’s not that long, but I switch spaces of­ten enough to the point where it be­comes very no­tice­able and dri­ves me in­sane.

I be­lieve to have found the best so­lu­tion to in­stant space switch­ing!

But be­fore I show you, of course, other peo­ple share the same sen­ti­ment. I claim that none of the sur­veyed con­tem­po­rary so­lu­tions, ex­cept for what I bring up at the end of this ar­ti­cle, suf­fice for what I want:

This is al­ways the de­fault an­swer to this ques­tion on­line, and I’m sick of it! It does­n’t even solve the prob­lem, but rather re­places it with an equally use­less fade-in an­i­ma­tion. It also has the side ef­fect of ac­ti­vat­ing the prefers-re­duced-mo­tion me­dia query on web browsers.

Install the yabai tiling win­dow man­ager and use its in­stant space switcher.

And to be fair, it works pretty well. There are only two prob­lems: for one, yabai does this by bi­nary patch­ing a part of the op­er­at­ing sys­tem. This is only pos­si­ble by dis­abling System Integrity Protection at your own dis­cre­tion. For the sec­ond, in­stalling yabai forces you to learn and use it as your tiling win­dow man­ager1. I per­son­ally use PaperWM.spoon as my win­dow man­ager. Both of which are in­com­pat­i­ble when in­stalled to­gether.

Use a third-party vir­tual space man­ager fa­cade, hid­ing and show­ing win­dows as needed when switch­ing spaces.

Some pop­u­lar op­tions are FlashSpace and AeroSpace vir­tual work­spaces. I ac­tu­ally of­fer no crit­i­cism other than that they are not na­tive to MacOS, and feel un­nec­es­sary given that all we want to do is dis­able an an­i­ma­tion.

Pay for a li­cense for BetterTouchTool. Enable Move Right Space (Without Animation)” and Move Left Space (Without Animation)”.

Without fur­ther ado, I man­aged to find InstantSpaceSwitcher by ju­r­plel on GitHub. It is a sim­ple menu bar ap­pli­ca­tion that achieves in­stant space switch­ing while of­fer­ing none of the afore­men­tioned draw­backs.

InstantSpaceSwitcher does not re­quire dis­abling Security Integration Protection; it works by sim­u­lat­ing a track­pad swipe with a large amount of ve­loc­ity. It ad­di­tion­ally al­lows you to in­stantly jump to a space num­ber. The last thing it pro­vides is a com­mand line in­ter­face.

The in­stal­la­tion in­struc­tions are not listed on the README, so they are:

$ git clone https://​github.com/​ju­r­plel/​In­stantSpaceSwitcher

$ cd InstantSpaceSwitcher

$ ./build.sh

InstantSpaceSwitcher should now be avail­able as a na­tive ap­pli­ca­tion.

After run­ning the above, the com­mand line in­ter­face is avail­able at:

$ .build/release/ISSCli –help

Usage: .build/release/ISSCli [left|right|index

Did I men­tion that the repos­i­tory lit­er­ally has one star on GitHub (me)? I want more peo­ple to dis­cover InstantSpaceSwitcher and con­sider it trust­wor­thy; hence, please con­sider giv­ing it a star if you find it help­ful.

↑ Scroll to top ↑

...

Read the original on arhan.sh »

3 440 shares, 12 trendiness

The Pentagon Threatened Pope Leo XIV’s Ambassador With the Avignon Papacy

Thank you for read­ing! Letters from Leo is a reader-sup­ported pub­li­ca­tion. To re­ceive new posts and sup­port my work, con­sider be­com­ing a free or paid sub­scriber.

Before you read on: Pope Leo XIV has asked Americans to con­tact their mem­bers of Congress and de­mand an end to the war in Iran. Answer the pope’s call in one click at stand­with­popeleo.com, an app we built to make it as easy as pos­si­ble.

[UPDATE at 4:33 PM EDT: Letters from Leo can now in­de­pen­dently con­firm The Free Press re­port that the meet­ing took place — and that some Vatican of­fi­cials were so alarmed by the Pentagon’s tac­tics that they shelved plans for Pope Leo XIV to visit the United States later this year.

Other of­fi­cials in the Vatican saw the Pentagon’s ref­er­ence to an Avignon pa­pacy as a threat to use mil­i­tary force against the Holy See.]

In January, be­hind closed doors at the Pentagon, Under Secretary of War for Policy Elbridge Colby sum­moned Cardinal Christophe Pierre — Pope Leo XIVs then-am­bas­sador to the United States — and de­liv­ered a lec­ture.

America, Colby and his col­leagues told the car­di­nal, has the mil­i­tary power to do what­ever it wants in the world. The Catholic Church had bet­ter take its side.

As tem­pers rose, an uniden­ti­fied U. S. of­fi­cial reached for a four­teenth-cen­tury weapon and in­voked the Avignon Papacy, the pe­riod when the French Crown used mil­i­tary force to bend the bishop of Rome to its will.

That scene, bro­ken this week by Mattia Ferraresi in an ex­tra­or­di­nary piece of jour­nal­ism for The Free Press, may be the most re­mark­able mo­ment in the long and knot­ted his­tory of the American re­pub­lic’s re­la­tion­ship with the Catholic Church.

There is no pub­lic record of any Vatican of­fi­cial ever tak­ing a meet­ing at the Pentagon, and cer­tainly none of a se­nior U. S. of­fi­cial threat­en­ing the Vicar of Christ on Earth with the prospect of an American Babylonian Captivity.

The re­port­ing also con­firms — with fresh sources and new color — what I first re­ported in February: that the Vatican de­clined the Trump-Vance White House’s in­vi­ta­tion to host Pope Leo XIV for America’s 250th an­niver­sary in 2026.

Ferraresi ob­tained ac­counts from Vatican and U. S. of­fi­cials briefed on the Pentagon meet­ing. According to his sources, Colby’s team picked apart the pope’s January state-of-the-world ad­dress line by line and read it as a hos­tile mes­sage aimed di­rectly at the ad­min­is­tra­tion.

What en­raged them most was Leo’s de­c­la­ra­tion that a diplo­macy that pro­motes di­a­logue and seeks con­sen­sus among all par­ties is be­ing re­placed by a diplo­macy based on force.”

The Pentagon read that sen­tence as a frontal chal­lenge to the so-called Donroe Doctrine” — Trump’s up­date of Monroe, as­sert­ing un­chal­lenged American do­min­ion over the Western Hemisphere.

The car­di­nal sat through the lec­ture in si­lence. The Holy See has not, since that day, given an inch.

Ferraresi’s re­port­ing also adds vi­tal color to the col­lapse of the 250th an­niver­sary visit. JD Vance per­son­ally ex­tended the in­vi­ta­tion in May 2025, just two weeks af­ter Leo’s elec­tion in the con­clave.

According to a se­nior Vatican of­fi­cial quoted in the piece, the Holy See ini­tially con­sid­ered the re­quest, then post­poned it in­def­i­nitely be­cause of for­eign pol­icy dis­agree­ments, the ris­ing op­po­si­tion of American bish­ops to the Trump-Vance mass de­por­ta­tion regime, and a re­fusal to be­come a par­ti­san tro­phy in the 2026 midterms.

The ad­min­is­tra­tion tried every pos­si­ble way to have the Pope in the U. S. in 2026,” one Vatican of­fi­cial told The Free Press.

Instead, on July 4, 2026, the first American pope will travel to Lampedusa, the Italian is­land where North African mi­grants wash ashore by the thou­sands. Robert Francis Prevost is too de­lib­er­ate a man to have cho­sen that date by ac­ci­dent.

The Pentagon meet­ing also clar­i­fies the moral in­ten­sity of Leo’s pub­lic pos­ture over the last six weeks.

After Colby’s lec­ture, the pope did not re­treat into Vatican diplo­macy. He pressed harder.

...

Read the original on www.thelettersfromleo.com »

4 330 shares, 19 trendiness

Lzon.ca. A personal blog, by a programmer and IT expert.

I’d like to tell the story of job I just com­pleted for a cus­tomer, so that I can make a point about how I feel Microsoft and other large tech­nol­ogy com­pa­nies are ac­tively hos­tile to their users.

I re­ceived a call from my neigh­bour ask­ing if I would be will­ing to help her hus­band with an is­sue he’d been hav­ing with his lap­top. As the proud new owner of my own IT ser­vices com­pany, I of course agreed to take a look.

I spoke with my neigh­bour’s hus­band, and im­me­di­ately saw that he was not tech lit­er­ate. I learned to iden­tify the type while do­ing IT work for my pre­vi­ous em­ployer. This made un­der­stand­ing his prob­lem dif­fi­cult, but through con­ver­sa­tion we did man­age to come to an un­der­stand­ing about what the real is­sue was that he was ex­pe­ri­enc­ing.

What he was see­ing was that he was no longer re­ceiv­ing email in Outlook, and that there was an er­ror mes­sage claim­ing he had run out of avail­able stor­age’, or some other sim­i­lar non­sense. He is a very light email user, and he knows it. He was con­fused as to why he’d run out of stor­age. I was con­fused as well, at first.

Through in­ves­ti­ga­tion I dis­cov­ered that the Outlook email ser­vice uses Onedrive for stor­age of all mes­sages and at­tach­ments. He had 5 GB of avail­able stor­age, the amount that is given with his free ac­count. This had yet to ex­plain why he was see­ing that er­ror mes­sage, there was no way he had con­sumed 5 GB of stor­age with just his email use.

Unsurprisingly, his Onedrive stor­age was­n’t filled by his email, it was filled by the per­sonal files from his Windows 11 desk­top. Did he con­fig­ure Windows to save those files to his Onedrive di­rec­tory, in­stead of his lo­cal home di­rec­tory? Of course not, that was done by de­fault. Did he even know that this was hap­pen­ing? Also, no. He had no idea this was hap­pen­ing un­til he saw that er­ror mes­sage, which oh-so-help­fully of­fered to solve’ his prob­lem by of­fer­ing him a sub­scrip­tion to ad­di­tional paid stor­age ca­pac­ity on the ac­count.

He did man­age to loosely un­der­stand what was hap­pen­ing, enough at least to start delet­ing files from his com­puter to try and make the er­ror mes­sage go away. I was never able to con­firm with him, but I sus­pect that he deleted files (including fam­ily pho­tos) for which he had no other backup.

I will be blunt, this in­fu­ri­ates me. This was­n’t the first time I’ve seen this. I saw it many times while work­ing for my pre­vi­ous em­ployer. Microsoft has in­ten­tion­ally bro­ken a fun­da­men­tal as­sump­tion about how files are stored on a com­puter run­ning Windows. They do this with­out ask­ing the user, and with­out ad­e­quately ex­plain­ing what they have done. Microsoft is very ob­vi­ously em­ploy­ing dark pat­terns in or­der to goad its users into pay­ing for Onedrive stor­age.

I’m a com­puter nerd, and if you are read­ing this you prob­a­bly are as well. We can change that set­ting our­selves with­out much thought, and we prob­a­bly have back­ups of our im­por­tant data in case re­cov­ery is nec­es­sary. I will tell you that many peo­ple are ex­tremely util­i­tar­ian about their com­puter use. They use their com­put­ers only to the de­gree that they must to serve their other in­ter­ests in life. They also trust that their prop­erty, the de­vice that cost them hun­dreds of dol­lars is­n’t try­ing to cheat them like some back-al­ley con artist.

This is­n’t a game. My cus­tomer is­n’t a num­ber on a spread­sheet, merely an in­cre­ment to­wards reach­ing some use­less KPI. He deleted fam­ily pho­tos to try and get that er­ror mes­sage to go away, so that he could just re­ceive emails again. He may not un­der­stand what hap­pened, but he’s not stu­pid. He sus­pected that this was a scam to get him to pay for some­thing he did­n’t need, he just did­n’t un­der­stand how the scam worked.

First and fore­most, I per­formed a com­plete backup of his data. I took every­thing that I could find lo­cally on the ma­chine, as well as every­thing from the Onedrive ac­count, in­clud­ing the Trash. It was­n’t much, only a few gi­ga­bytes, which I trans­ferred to a sep­a­rate USB drive.

I care­fully trans­ferred all files out of the Onedrive di­rec­tory struc­ture and back into his home folder. The Windows file ex­plorer did not make this easy or in­tu­itive.

I pro­ceeded to delete every­thing from the Onedrive ac­count, through the web in­ter­face. I did no­tice that delet­ing files merely moved them into the Trash, which was still be­ing counted to­wards to­tal stor­age us­age. I as­sumed this was yet an­other sub­tle dark pat­tern.

I al­luded to chang­ing set­tings as a way to solve this. The ap­proach we of­ten took at my pre­vi­ous em­ployer was to sim­ply dis­able Onedrive in the Windows startup list. That could have worked in this case but I had a bet­ter idea. Remove Onedrive en­tirely.

I have mus­cle mem­ory at this point for how to do it, if you were won­der­ing this is the pro­ce­dure I used:

Open an ad­min Terminal and load up the Chris Titus’ winu­til.

This en­tirely re­moves the Onedrive ap­pli­ca­tion from Windows, in­clud­ing all in­te­gra­tions into other pro­grams, such as the file ex­plorer.

I then pro­ceeded to delete every­thing from the Onedrive ac­count, in­clud­ing the Trash. The er­ror mes­sages fi­nally went away in Outlook and he was able to re­cieve email mes­sages again.

I may be preach­ing to the choir, but re­gard­less I want to use this post as my op­por­tu­nity to make these points in my own way. Microsoft is ac­tively hos­tile to­wards its users.They have be­come a bas­ket-case of an or­gan­i­sa­tion, where chas­ing ir­rel­e­vant KPIs has be­come more im­por­tant than prod­uct qual­ity, or even base­line re­spect for their users.The ex­act same can be said, to vary­ing de­grees, to every other large con­sumer-tech com­pany.

I see this as the re­sult of bad in­cen­tive struc­tures. A toxic game the­ory that has been al­lowed to play out over many years with­out proper scrutiny. The lefty in me might think that this is a man­i­fes­ta­tion of Late Capitalism. If so then it feels like we’re about 30 sec­onds away from mid­night.

I think a lot about the pos­si­ble ways to tweak said in­cen­tive struc­tures, to build a choice ar­chi­tec­ture that can pre­vent even the first step in the process that led to this.

Days like to­day, when I’m think­ing about the real ac­tual ways that this non­sense im­pacts real ac­tual peo­ple, I can’t ig­nore the hu­mans in this loop. People need to ac­tu­ally take re­spon­si­bil­ity for their choices, not just turn their brain off when the num­ber looks right in the spread­sheet.

If you en­joyed this post, let me know! Email me at mail@lzon.ca, or reach out through one of my so­cial ac­counts linked on the home­page.

...

Read the original on lzon.ca »

5 313 shares, 13 trendiness

FreeBSD Laptop Compatibility

Top Laptops for use with FreeBSD

Each lap­top is scored based on an ag­gre­gate of:

how many lap­top com­po­nents are de­tected, where each fully auto-de­tected com­po­nent adds a point

whether de­vices have de­graded func­tion­al­ity, re­duc­ing the score by 0.5-1.5 based on sever­ity and how im­por­tant it is to the lap­top ex­pe­ri­ence (wi-fi/graphics weighted more)

user-pro­vided com­ments about test re­sults, and how in­volved setup is for that de­vice

...

Read the original on freebsdfoundation.github.io »

6 285 shares, 11 trendiness

How Pizza Tycoon simulated traffic on a 25 MHz CPU — Pizza Legacy Blog

I’ve been work­ing on Pizza Legacy, an open-source reim­ple­men­ta­tion of the 1994 DOS game . The game has a close-zoom street view of the cities, and when you scroll around it you can see a steady stream of cars dri­ving through the streets. Maybe 20 or 30 tiny sprites at a time, but they nav­i­gate the road net­work, queue be­hind each other at in­ter­sec­tions, and gen­er­ally look like a liv­ing city. Yes, it was a bit buggy be­cause some­times they would drive through each other, but it was good enough to just give some sense of life to the map. All that on a 25 MHz 386 CPU.

The first thing I im­ple­mented in 2010 when I started this pro­ject was that close zoom level, but it took 14 years be­fore I fi­nally had the cars dri­ving around on it, in a way that I was happy about; I had mul­ti­ple at­tempts over the years but every time I ran into prob­lems I got stuck build­ing an overly com­pli­cated sys­tem that was hard to rea­son about and no fun to work on.

One at­tempt in 2017 in­volved each tile keep­ing track of which po­si­tions were oc­cu­pied, and every car had to ask the grid for per­mis­sion be­fore mov­ing, re­serv­ing and free­ing slots as it went. It ba­si­cally turned into a shared lock­ing sys­tem just to move a few pix­els, with cars and tiles con­stantly try­ing to stay in sync.

All the while I had this nag­ging thought in the back of my mind: the orig­i­nal ran this on a 25 MHz CPU, so why were my ver­sions al­ways so com­pli­cated?

Finally I went to the as­sem­bly (which I had spent many years slowly un­der­stand­ing bet­ter and doc­u­ment­ing) to fig­ure out what the orig­i­nal was do­ing, with the help of LLMs which were (a cou­ple of years ago) this new and ex­cit­ing tech­nol­ogy that could bet­ter un­der­stand as­sem­bly than I could.

Now that I fi­nally have it work­ing I can see where I went wrong: I went into it with a brain full of mod­ern con­cepts: scene graphs, path find­ing, col­li­sion de­tec­tion, and of course plenty of CPU to run it all!

First, let’s look at what a city ac­tu­ally looks like:

As you can see there are two-lane roads, T-junctions, in­ter­sec­tions, and cor­ners. In maps are made up out of a grid of 160 by 120 tiles, where each tile is one of the tiles from landsym.vga:

The orig­i­nal landsym.vga file with added bor­ders be­tween tiles and text to in­di­cate the row and col­umn off­set. Byte 0x54 means col­umn 5, row 4 (roof tile of a de­pot).

Back to the traf­fic; the key in­sight that makes it pos­si­ble to run this sys­tem on such a slow CPU: cars don’t need to know where they’re go­ing. Each road tile type car­ries its own di­rec­tion. Road tile 0x16 is the bot­tom part of a hor­i­zon­tal road, mean­ing that cars can only drive from left to right on these roads. Similarly road tile 0x06 is just for right to left traf­fic, then 0x26 and 0x36 are the same but for ver­ti­cal traf­fic.

This means the city is ba­si­cally just a bunch of one-way roads, once a car knows which tile it sits on, it can keep go­ing.

Corners work the same way, 0x56

(CORNER_SW in my enum) is the cor­ner that al­lows the car to ei­ther keep go­ing west, or turn south. When a car hits a cor­ner it flips a coin, 50% chance of go­ing straight on, 50% chance of tak­ing the turn. The maps have been de­signed in such a way that the roads al­ways make sense, which means that next to the CORNER_SW there is an­other tile that is ei­ther a south to north traf­fic (so we have to go south) or it’s an­other edge tile that al­lows ei­ther a turn or straight on.

There is one ex­tra rule to keep traf­fic look­ing nat­ural, if you just took a left turn the next cor­ner forces you straight-on; no two con­sec­u­tive left turns.

Valid di­rec­tions per tile type in­di­cated with ar­rows.

Cars move one pixel per frame. Each tick the main loop checks if a car is blocked, and if not, in­cre­ments or decre­ments its screen co­or­di­nate by one de­pend­ing on di­rec­tion. East adds 1 to X. North sub­tracts 1 from Y.

There’s a sec­ond progress counter, count­ing down from 16 to 1. When it hits zero it re­sets to 16 and the game runs the tile-bound­ary logic: look up the next tile, de­cide the new di­rec­tion, up­date the sprite frame (to vi­su­ally turn the car in the new di­rec­tion). Since each tile is 16 pix­els wide and tall, this runs ex­actly once per tile crossed. The per-pixel move hap­pens every tick; the heav­ier tile logic runs only 1/16th as of­ten.

When a car first spawns, progress is set to a ran­dom value be­tween 1 and 16. That stag­gers all the cars so their tile-bound­ary checks don’t all land on the same frame, spread­ing the work out evenly.

Unlike my var­i­ous at­tempts at fancy col­li­sion de­tec­tion, the orig­i­nal uses a straight­for­ward pair­wise check: for each car, walk the whole car list and ask would these two over­lap next tick?” If yes, set a wait counter of 10 ticks on the blocked car and move on to the next car.

But the col­li­sion de­tec­tion code is writ­ten to bail out as fast as pos­si­ble. The very first thing it does is ex­tract the other car’s di­rec­tion; be­cause roads are one-way, east and west never share a road, so an east car and a west car can never col­lide. That pair re­turns im­me­di­ately, no co­or­di­nate reads at all. Same for east and south, west and north, and so on.

With say 25 cars in a typ­i­cal city view there are 625 pair­wise calls per frame. About half of those re­turn in just a few CPU in­struc­tions on the di­rec­tion check alone. Most of the rest fail the lane check (same-direction cars have to be on the same road, which is one equal­ity com­par­i­son). The pairs that ac­tu­ally reach any co­or­di­nate arith­metic are usu­ally sin­gle dig­its.

When a car does get blocked, the 10-tick wait cre­ates nat­ural traf­fic jams: cars bunch up, the front one even­tu­ally finds the way clear, the queue drains. There are some bugs in the sys­tem (especially when you let it run for a while and there are lot of in­ter­sec­tions) but given that the point of this is not to run an ac­cu­rate dri­ving sim­u­la­tion but just show some move­ment on the screen, it works per­fectly well and very ef­fi­ciently. The col­li­sion de­tec­tion sys­tem has some quirks; some com­bi­na­tions are never checked (e.g. east­bound car never in­ter­sects with a south­bound car) that might be the rea­son be­hind some bug­i­ness.

When you en­ter the close-zoom view, the game scans all 132 tiles in the view­port (12 columns by 11 rows), and for each road tile it rolls against the dis­tric­t’s traf­fic den­sity to de­cide whether to spawn a car there, so higher-traf­fic dis­tricts are busier. Corner tiles are ex­cluded from spawn points, so cars only ap­pear on straight road tiles.

Cars that drive off the edge of the screen are respawned as a new (random) color car fac­ing the other di­rec­tion, on the tile go­ing the other di­rec­tion. This means that the game does­n’t have to worry about respawn­ing cars other than just every time one car dri­ves of go­ing east it spawns a new car be­low go­ing west, etc.

Pay at­ten­tion to the cars dri­ving off the map at the edges, no­tice they are re­placed by cars dri­ving the op­po­site di­rec­tion.

When you scroll, the newly ex­posed strip of tiles gets the same treat­ment of hav­ing a chance of hav­ing cars spawned on them.

Looking back at my failed at­tempts, I was de­sign­ing for prob­lems that the orig­i­nal just did­n’t con­sider. Cars don’t need pathfind­ing be­cause the map tells them where they can go. Collision de­tec­tion was cheap be­cause the early-exit logic makes most pairs ba­si­cally free. There’s no ve­loc­ity or physics be­cause 1 pixel per tick is enough to look con­vinc­ing. When you’re about to hit some­thing just pause for 10 ticks, and when you have to make a turn you just travel half the width of the tile and then make your turn, works on every tile in any di­rec­tion.

I reim­ple­mented it fol­low­ing the as­sem­bly pretty closely, so just a cou­ple of switch state­ments with dif­fer­ent rout­ing op­tions per tile type, you can see the de­cide_de­sired_di­rec­tion method in Car.cpp.

...

Read the original on pizzalegacy.nl »

7 284 shares, 9 trendiness

Maine Is About to Become the First State to Ban Major New Data Centers

Your AI chat­bot ses­sions and cloud-stored pho­tos might get more ex­pen­sive if other states fol­low Maine’s lead. Lawmakers there just ad­vanced the na­tion’s first statewide mora­to­rium on large data cen­ters, cit­ing con­cerns that the AI boom is push­ing elec­tric­ity costs even higher in a state al­ready suf­fer­ing America’s prici­est power bills.

The Democratic-controlled leg­is­la­ture ad­vanced bill LD 307, tem­porar­ily block­ing per­mits for any new data cen­ter re­quir­ing more than 20 megawatts. The mea­sure runs un­til November 2027, buy­ing time for a new Data Center Coordination Council to study how these fa­cil­i­ties strain Maine’s ag­ing elec­tri­cal grid.

Gov. Janet Mills sup­ports the pause while de­vel­op­ers scram­ble for ex­emp­tions.

The bill gained trac­tion af­ter res­i­dents in Wiscasset and Lewiston suc­cess­fully op­posed data cen­ter pro­pos­als over wa­ter us­age and safety con­cerns. Projects now in limbo in­clude fa­cil­i­ties planned for:

* Jay (at an old pa­per mill site)

Taking this pause now is go­ing to be cru­cial,” Rep. Christopher Kessler said, ac­cord­ing to Maine Public Radio, re­flect­ing grow­ing leg­isla­tive con­cern about grid ca­pac­ity. Developer Tony McDonald dis­agrees, call­ing the pro­posed re­stric­tions disastrous” and claim­ing his team got caught in this drag­net.”

The Pine Tree State is­n’t alone in pump­ing the brakes. Counties in Michigan and Indiana have im­posed their own lo­cal pauses on data cen­ter de­vel­op­ment, while cities from Denver to Detroit weigh re­stric­tions as hy­per­scale fa­cil­i­ties chase cheap land and re­li­able power.

The tim­ing re­flects broader anx­i­ety about AIs in­fra­struc­ture ap­petite. Data cen­ters now con­sume roughly 4% of U. S. elec­tric­ity, with pro­jec­tions sug­gest­ing that fig­ure could dou­ble by 2030. For Mainers al­ready pay­ing some of the na­tion’s high­est res­i­den­tial rates, that math­e­mat­i­cal re­al­ity hits dif­fer­ently than Silicon Valley’s end­less op­ti­miza­tion rhetoric.

Maine’s move rep­re­sents what econ­o­mist Anirban Basu called a canary in the coal mine” for state-level re­sis­tance to Big Tech’s en­ergy de­mands. Whether that prece­dent spreads de­pends on how ag­gres­sively other gov­er­nors fol­low Maine’s lead—and whether your fa­vorite AI ser­vices start charg­ing ac­cord­ingly.

...

Read the original on www.gadgetreview.com »

8 284 shares, 16 trendiness

Personal Laptop Colocation Service

Transform your old lap­top into a pow­er­ful al­ways-on­line server. Based in Amsterdam, we aim to pro­vide pro­fes­sional colo­ca­tion ser­vices in the US and across European dat­a­cen­ters in part­ner­ship with Hetzner.

Most VPS providers give you se­verely lim­ited com­pute re­sources at pre­mium prices. You even share these re­sources with other cus­tomers with­out know­ing!

Your old lap­top packs more CPU power, RAM, and stor­age than their en­try-level of­fer­ings - and with us, you’ll pay just €7/month for pro­fes­sional host­ing. Why set­tle for a re­stricted vir­tual slice when you can have your own lap­top run­ning ded­i­cated just to you, 24/7 in a pro­fes­sional dat­a­cen­ter?

In ad­di­tion, you cut-down on e-waste and help save the planet!

Every lap­top gets its own sta­tic, fully routable IPv4 ad­dress for max­i­mum ac­ces­si­bil­ity.

Professional dat­a­cen­ter host­ing with guar­an­teed up­time and mon­i­tor­ing, to be pow­ered by Hetzner’s in­fra­struc­ture.

Free KVM-over-IP ac­cess to your lap­top - just like hav­ing it right next to you.

We of­fer free as­sis­tance for your ini­tial setup and en­sure you get your choice of server soft­ware up and run­ning. A Kubernetes clus­ter, Proxmox or a niche CI/CD so­lu­tion? No prob­lem!

Fill out our ap­pli­ca­tion form and we’ll con­tact you within 2 work­ing days.

We’ll send you a pre­paid ship­ping box - just pack your lap­top and drop it at your near­est col­lec­tion point. Please note that we are still fig­ur­ing out the specifics of lo­gis­tics.

Our team con­nects your lap­top and sends you a link to ac­cess your ma­chine via KVM. If you need fur­ther as­sis­tance, we’re just an email away!

Access your lap­top server from any­where, any­time.

Click here to signup with your de­tails and we’ll con­tact you within 2 work­ing days to dis­cuss your setup.

How much does it cost?

We charge a flat fee of €7 per month, re­gard­less of power con­sump­tion. This in­cludes all ser­vices: colo­ca­tion, IPv4 ad­dress, KVM ac­cess, and mon­i­tor­ing.

What do I need to send?

Your lap­top and its power brick. We’ll pro­vide a pre­paid ship­ping box - just pack every­thing se­curely and drop it at your near­est col­lec­tion point. It’s com­pletely free!

What are the con­nec­tiv­ity re­quire­ments?

Your lap­top must have ei­ther an eth­er­net port or a USB port (we’ll pro­vide a USB eth­er­net adapter if needed). We con­nect all lap­tops via eth­er­net - WiFi is not avail­able in the dat­a­cen­ter.

What kind of setup as­sis­tance do you pro­vide?

We of­fer com­pli­men­tary as­sis­tance with ini­tial setup, in­clud­ing in­stal­la­tion of most Linux dis­tri­b­u­tions, Kubernetes clus­ters, Proxmox vir­tu­al­iza­tion, and other com­mon server soft­ware. Just let us know what you need, and we’ll help you get started.

What are the lap­top re­quire­ments?

Your lap­top should be fully func­tional with a work­ing power sup­ply and ei­ther an eth­er­net port or USB port for con­nec­tiv­ity. Age is­n’t a fac­tor. We might mod­ify your lap­top to re­move or power down the bat­tery, wire­less ra­dios, etc. to en­sure it can be used safely in the data cen­ter.

Where are your dat­a­cen­ters lo­cated?

We’re based in Amsterdam and aim to work with Hetzner to pro­vide colo­ca­tion ser­vices in the US and across their European dat­a­cen­ter net­work. This en­sures your lap­top is hosted in pro­fes­sional, se­cure fa­cil­i­ties with ex­cel­lent con­nec­tiv­ity.

Your lap­top will be hosted in Hetzner’s pro­fes­sional dat­a­cen­ters with 24/7 se­cu­rity, cli­mate con­trol, and re­dun­dant power. We also pro­vide ba­sic fire­wall ser­vices and DDoS pro­tec­tion.

...

Read the original on colaptop.pages.dev »

9 266 shares, 9 trendiness

The Vercel Plugin on Claude Code wants to read all your prompts!

The Vercel Plugin on Claude Code wants to read all your prompts!

I was work­ing on a pro­ject that has noth­ing to do with Vercel. No ver­cel.json, no next.con­fig, no Vercel de­pen­den­cies. Nothing.

And then this popped up:

The Vercel plu­gin col­lects anony­mous us­age data… Would you like to also share your prompt text?”

That felt wrong. So I went deep into the source code with Claude.

A de­ploy­ment plu­gin is ask­ing to read every prompt you type, across every pro­ject. Why?

The con­sent ques­tion is­n’t even a real UI el­e­ment. It’s de­liv­ered via prompt in­jec­tion into Claude’s sys­tem con­text - the plu­gin tells Claude to ask you a ques­tion and run shell com­mands based on your an­swer.

Anonymous us­age data” in­cludes your full bash com­mand strings sent to Vercel’s servers. You’re never told this is op­tional.

All of this runs on every pro­ject, not just Vercel ones. The plu­gin has frame­work de­tec­tion built in - it just does­n’t use it to gate teleme­try.

First, the ask it­self. The Vercel plu­gin helps with de­ploy­ments, frame­work guid­ance, and skill in­jec­tion. Why does it need to read every prompt you type? Across every pro­ject? That’s not an­a­lyt­ics for im­prov­ing the plu­gin - that’s way out­side its scope for a tool that’s sup­posed to help you ship to Vercel.

But even if you ac­cept the ask, the way they ask is worse.

When the Vercel plu­gin wants to ask you about teleme­try, it does­n’t show a CLI prompt or a set­tings screen.

Instead, it in­jects nat­ural-lan­guage in­struc­tions into Claude’s sys­tem con­text telling the AI to ask you a ques­tion. Claude reads those in­struc­tions, ren­ders the ques­tion us­ing AskUserQuestion, and then - based on your an­swer - runs echo enabled’ or echo disabled’ to write a pref­er­ence file on your filesys­tem.

Here’s what those in­jected in­struc­tions look like in the plu­gin source:

The re­sult looks iden­ti­cal to a na­tive Claude Code ques­tion. There is no vi­sual in­di­ca­tor that it’s from a third-party plu­gin. You can­not tell the dif­fer­ence.

This is­n’t just con­text in­jec­tion - which is the in­tended use for plu­g­ins (skills, docs, frame­work guid­ance). The Vercel plu­gin in­jects be­hav­ioral in­struc­tions telling Claude to ask a spe­cific ques­tion AND ex­e­cute shell com­mands on your filesys­tem based on your re­sponse.

There’s a big dif­fer­ence be­tween here’s con­text about Next.js rout­ing” and ask the user this ques­tion and then write to their filesys­tem.”

Someone raised this ex­act con­cern on GitHub (issue #34). A Vercel dev re­sponded:

When us­ing a 1st party mar­ket­place like Cursor, CC or Codex, you can’t cre­ate a one time CLI prompt. The ac­ti­va­tion comes from within the agent har­ness. Totally open to vis­it­ing this, but we need a bet­ter so­lu­tion.”

I get the con­straint. But the an­swer to we can’t build proper con­sent” should be not ship­ping the fea­ture - not do­ing prompt in­jec­tion in­stead.

Even within to­day’s con­straints, they could have added This ques­tion is from the Vercel plu­gin” in the ques­tion text, and writ­ten the pref­er­ence file di­rectly from the hook’s JavaScript in­stead of in­struct­ing Claude to run shell com­mands.

Problem 2: Anonymous us­age data” is not what you think

The Vercel plu­gin col­lects anony­mous us­age data such as skill in­jec­tion pat­terns and tools used by de­fault.”

Sounds harm­less. Here’s what it ac­tu­ally col­lects:

What gets sent

Do they ask?

No - al­ways on

No - al­ways on

Yes - only if you opt in

That mid­dle row. Every bash com­mand - the full com­mand string, not just the tool name - sent to teleme­try.ver­cel.com. File paths, pro­ject names, env vari­able names, in­fra­struc­ture de­tails. Whatever’s in the com­mand, they get it.

Describing this as anonymous us­age data such as skill in­jec­tion pat­terns and tools used” is a stretch.

The con­sent ques­tion frames your choice as share prompts too, or don’t.” It never tells you the bash com­mand col­lec­tion is op­tional. It never says you can turn it off. The ac­tual choice is­n’t be­tween teleme­try and no teleme­try - it’s be­tween some” and more.”

All of this is tied to­gether with a per­sis­tent de­vice UUID stored on your ma­chine, cre­ated once and reused for­ever. Every ses­sion, every pro­ject, link­able across time.

The opt-out ex­ists - an env var VERCEL_PLUGIN_TELEMETRY=off that’s doc­u­mented in the plug­in’s README. But that README lives in­side the plu­gin cache di­rec­tory. Not any­where you’d see dur­ing in­stal­la­tion or first run.

Problem 3: This runs on all your pro­jects

This is what orig­i­nally set me off - the con­sent ques­tion pop­ping up on a non-Ver­cel pro­ject.

I went through every teleme­try file look­ing for pro­ject de­tec­tion. There is none.

The hook match­ers con­firm it. The UserPromptSubmit matcher is lit­er­ally an empty string - match every­thing. Install the plu­gin for your Next.js app, and it’s watch­ing your Rust pro­ject, your Python scripts, your client work. Everything.

The irony? The plu­gin al­ready has frame­work de­tec­tion built in. It scans your repo and iden­ti­fies what frame­works you’re us­ing on every ses­sion start. But it only uses this to re­port what it found - not to de­cide whether teleme­try should fire.

The gate ex­ists. They just did­n’t use it.

All teleme­try should re­quire ex­plicit opt-in. We’d like to col­lect: (1) ses­sion meta­data, (2) bash com­mands, (3) your prompts - which would you like to en­able?” Honest dis­clo­sure with a real choice.

Anonymous us­age data” should not be the de­scrip­tion for full bash com­mand strings sent to a server with a per­sis­tent de­vice ID.

Telemetry should be scoped to Vercel pro­jects only. The frame­work de­tec­tion al­ready ex­ists - use it.

Plugins need vi­sual at­tri­bu­tion. Even [Vercel Plugin] be­fore any ques­tion sur­faced through a plu­gin hook. Right now, all plu­gin-in­jected ques­tions look iden­ti­cal to na­tive UI.

Plugins need gran­u­lar per­mis­sions. When a plu­gin in­stalls, Claude Code should show: This plu­gin re­quests ac­cess to: your bash com­mands, your prompt text, ses­sion meta­data. Allow?”

Plugins should de­clare scope - which files or de­pen­den­cies must be pre­sent for hooks to fire. This is ex­actly how VS Code ex­ten­sions work with ac­ti­va­tion­Events. It’s a solved prob­lem.

You, right now

The env var kills all teleme­try but keeps the plu­gin fully func­tional. Skills, frame­work de­tec­tion, de­ploy­ment flows - every­thing still works. You lose noth­ing ex­cept Vercel’s data col­lec­tion.

Each of these prob­lems has a Vercel layer and a Claude Code ar­chi­tec­ture layer. Vercel made choices I think are not okay. But the plu­gin ar­chi­tec­ture en­abled those choices - no vi­sual at­tri­bu­tion, no hook per­mis­sions, no pro­ject scop­ing.

I use Vercel. I like Vercel. I use Claude Code daily. I want both to be bet­ter.

Everything above is ver­i­fi­able from the plu­gin source at ~/.claude/plugins/cache/claude-plugins-official/vercel/. Here are the ex­act files and line num­bers.

is­Prompt­Teleme­tryEn­abled() - true only if pref­er­ence file says en­abled

This sends the full com­mand string via track­BaseEvents() - al­ways on, no opt-in.

await track­BaseEvents(ses­sionId, [

{ key: session:device_id”, value: de­vi­ceId },

{ key: session:platform”, value: process.plat­form },

{ key: session:likely_skills”, value: likelySkills.join(”,“) },

{ key: session:greenfield”, value: String(greenfield !== null) },

{ key: session:vercel_cli_installed”, value: String(cliStatus.installed) },

{ key: session:vercel_cli_version”, value: cliS­ta­tus.cur­rentVer­sion || ” }

From hooks/​user-prompt-sub­mit-teleme­try.mjs:67-85: the hook writes asked” to the pref­er­ence file, then out­puts JSON with hook­Speci­fi­cOut­put.ad­di­tion­al­Con­text con­tain­ing nat­ural-lan­guage in­struc­tions for Claude to use the AskUserQuestion tool and ex­e­cute shell com­mands.

Zero pro­ject de­tec­tion in any teleme­try code path.

Framework de­tec­tion ex­ists but is­n’t used for gat­ing

ses­sion-start-pro­filer.mjs runs pro­filePro­ject() (lines 93-119) which scans for next.con­fig.*, ver­cel.json, mid­dle­ware.ts, com­po­nents.json, and pack­age de­pen­den­cies. But the re­sult is only used to re­port ses­sion:like­ly_skills - not to gate whether teleme­try fires.

...

Read the original on akshaychugh.xyz »

10 251 shares, 6 trendiness

Am I German or Autistic?

Both in­volve sys­tem­atic think­ing, a pref­er­ence for pre­ci­sion, and dif­fi­culty pre­tend­ing small talk is ac­cept­able.

The ques­tion is which one ex­plains it.

Scores are in­de­pen­dent — they don’t need to add up to 100%.

Some of the most se­ri­ous thinkers in the tra­di­tion — Kant, Wittgenstein, Schopenhauer — were prob­a­bly both. What they had in com­mon was a re­fusal to stop at the sur­face of things. If that sounds fa­mil­iar, there may be a more in­ter­est­ing con­ver­sa­tion avail­able.

Private philo­soph­i­cal ses­sions →

Occasional es­says and tools on phi­los­o­phy, think­ing, and the pre­sent mo­ment. No spam.

The Philosophical Atlas maps 175 thinkers — Kant, Wittgenstein, Schopenhauer, Nietzsche, and the whole tra­di­tion they be­long to. See the full net­work.

Open the Atlas — $49 →

...

Read the original on german.millermanschool.com »

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

10HN is also available as an iOS App

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

If you like 10HN please leave feedback and share

Visit pancik.com for more.