10 interesting stories served every morning and every evening.




1 4,065 shares, 149 trendiness

Hacker News Guidelines

Hacker News Guidelines

What to Submit

On-Topic: Anything that good hack­ers would find in­ter­est­ing. That in­cludes more than hack­ing and star­tups. If you had to re­duce it to a sen­tence, the an­swer might be: any­thing that grat­i­fies one’s in­tel­lec­tual cu­rios­ity.

Off-Topic: Most sto­ries about pol­i­tics, or crime, or sports, or celebri­ties, un­less they’re ev­i­dence of some in­ter­est­ing new phe­nom­e­non. If they’d cover it on TV news, it’s prob­a­bly off-topic.

Please don’t do things to make ti­tles stand out, like us­ing up­per­case or ex­cla­ma­tion points, or say­ing how great an ar­ti­cle is.

Please sub­mit the orig­i­nal source. If a post re­ports on some­thing found on an­other site, sub­mit the lat­ter.

Please don’t use HN pri­mar­ily for pro­mo­tion. It’s ok to post your own stuff part of the time, but the pri­mary use of the site should be for cu­rios­ity.

If the ti­tle in­cludes the name of the site, please take it out, be­cause the site name will be dis­played af­ter the link.

If the ti­tle con­tains a gra­tu­itous num­ber or num­ber + ad­jec­tive, we’d ap­pre­ci­ate it if you’d crop it. E.g. trans­late 10 Ways To Do X” to How To Do X,” and 14 Amazing Ys” to Ys.” Exception: when the num­ber is mean­ing­ful, e.g. The 5 Platonic Solids.”

Otherwise please use the orig­i­nal ti­tle, un­less it is mis­lead­ing or linkbait; don’t ed­i­to­ri­al­ize.

If you sub­mit a video or pdf, please warn us by ap­pend­ing [video] or [pdf] to the ti­tle.

Please don’t post on HN to ask or tell us some­thing. Send it to hn@ycombi­na­tor.com.

Please don’t delete and re­post. Deletion is for things that should­n’t have been sub­mit­ted in the first place.

Don’t so­licit up­votes, com­ments, or sub­mis­sions. Users should vote and com­ment when they run across some­thing they per­son­ally find in­ter­est­ing—not for pro­mo­tion.

Comments should get more thought­ful and sub­stan­tive, not less, as a topic gets more di­vi­sive.

When dis­agree­ing, please re­ply to the ar­gu­ment in­stead of call­ing names. That is id­i­otic; 1 + 1 is 2, not 3” can be short­ened to 1 + 1 is 2, not 3.”

Don’t be cur­mud­geonly. Thoughtful crit­i­cism is fine, but please don’t be rigidly or gener­i­cally neg­a­tive.

Don’t post gen­er­ated com­ments or AI-edited com­ments. HN is for con­ver­sa­tion be­tween hu­mans.

Please don’t ful­mi­nate. Please don’t sneer, in­clud­ing at the rest of the com­mu­nity.

Please re­spond to the strongest plau­si­ble in­ter­pre­ta­tion of what some­one says, not a weaker one that’s eas­ier to crit­i­cize. Assume good faith.

Please don’t post shal­low dis­missals, es­pe­cially of other peo­ple’s work. A good crit­i­cal com­ment teaches us some­thing.

Please don’t use Hacker News for po­lit­i­cal or ide­o­log­i­cal bat­tle. It tram­ples cu­rios­ity.

Please don’t com­ment on whether some­one read an ar­ti­cle. Did you even read the ar­ti­cle? It men­tions that” can be short­ened to The ar­ti­cle men­tions that”.

Please don’t pick the most provoca­tive thing in an ar­ti­cle or post to com­plain about in the thread. Find some­thing in­ter­est­ing to re­spond to in­stead.

Throwaway ac­counts are ok for sen­si­tive in­for­ma­tion, but please don’t cre­ate ac­counts rou­tinely. HN is a com­mu­nity—users should have an iden­tity that oth­ers can re­late to.

Please don’t use up­per­case for em­pha­sis. Instead, put *asterisks* around it and it will get ital­i­cized. More for­mat­ting info here.

Please don’t post in­sin­u­a­tions about as­tro­turf­ing, shilling, brigad­ing, for­eign agents, and the like. It de­grades dis­cus­sion and is usu­ally mis­taken. If you’re wor­ried about abuse, email hn@ycombi­na­tor.com and we’ll look at the data.

Please don’t com­plain about tan­gen­tial an­noy­ances—e.g. ar­ti­cle or web­site for­mats, name col­li­sions, or back-but­ton break­age. They’re too com­mon to be in­ter­est­ing.

Please don’t com­ment about the vot­ing on com­ments. It never does any good, and it makes bor­ing read­ing.

Please don’t post com­ments say­ing that HN is turn­ing into Reddit. It’s

a

semi-noob

il­lu­sion,

as

old

as

the

hills.

...

Read the original on news.ycombinator.com »

2 1,888 shares, 73 trendiness

Tony Hoare (1934-2026)

Computational Complexity and other fun stuff in math and com­puter sci­ence from Lance Fortnow and Bill Gasarch

...

Read the original on blog.computationalcomplexity.org »

3 1,491 shares, 53 trendiness

291f4388e2de89a43b25c135b44e41f0

Skip to con­tent

You signed in with an­other tab or win­dow. Reload to re­fresh your ses­sion.

You signed out in an­other tab or win­dow. Reload to re­fresh your ses­sion.

You switched ac­counts on an­other tab or win­dow. Reload to re­fresh your ses­sion.

You must be signed in to star a gist

You must be signed in to fork a gist

Embed this gist in your web­site.

Save bre­to­nium/​291f4388e2de89a43b25c135b44e41f0 to your com­puter and use it in GitHub Desktop.

Embed this gist in your web­site.

Save bre­to­nium/​291f4388e2de89a43b25c135b44e41f0 to your com­puter and use it in GitHub Desktop.

Sign up for free

to join this con­ver­sa­tion on GitHub.

Already have an ac­count?

Sign in to com­ment

You can’t per­form that ac­tion at this time.

...

Read the original on gist.github.com »

4 1,355 shares, 56 trendiness

Liberation from Open Source Attribution

Our lib­er­a­tion ser­vices are tem­porar­ily un­avail­able. Please try again later.

Is your le­gal team frus­trated with the at­tri­bu­tion clause? Tired of putting Portions of this soft­ware…” in your doc­u­men­ta­tion? Those main­tain­ers worked for free—why should they get credit?

Does your com­pany for­bid AGPL code? One wrong im­port and sud­denly your en­tire pro­pri­etary code­base must be open sourced. The hor­ror!

Tracking li­censes across hun­dreds of de­pen­den­cies? Legal re­views tak­ing weeks? Third-party au­dits find­ing issues”? What if you could just… not deal with any of that?

Some li­censes re­quire you to con­tribute im­prove­ments back. Your share­hold­ers did­n’t in­vest in your com­pany so you could help strangers.

For the first time, a way to avoid giv­ing that pesky credit to main­tain­ers.

Our pro­pri­etary AI sys­tems have never seen the orig­i­nal source code. They in­de­pen­dently an­a­lyze doc­u­men­ta­tion, API spec­i­fi­ca­tions, and pub­lic in­ter­faces to recre­ate func­tion­ally equiv­a­lent soft­ware from scratch.

The re­sult is legally dis­tinct code that you own out­right. No de­riv­a­tive works. No li­cense in­her­i­tance. No oblig­a­tions.

*Through our off­shore sub­sidiary in a ju­ris­dic­tion that does­n’t rec­og­nize soft­ware copy­right

Simply up­load your pack­age.json, re­quire­ments.txt, Cargo.toml, or any de­pen­dency man­i­fest. Our sys­tem iden­ti­fies every open source pack­age you want lib­er­ated.

Our legally-trained ro­bots an­a­lyze only pub­lic doc­u­men­ta­tion—README files, API docs, and type de­f­i­n­i­tions. They never see a sin­gle line of source code. The clean room stays clean.

A com­pletely sep­a­rate team of ro­bots—who have never com­mu­ni­cated with the analy­sis team—im­ple­ments the soft­ware from scratch based solely on spec­i­fi­ca­tions. No copy­ing. No de­riva­tion.

Your new code is de­liv­ered un­der the MalusCorp-0 License—a pro­pri­etary-friendly li­cense with zero at­tri­bu­tion re­quire­ments, zero copy­left, and zero oblig­a­tions.

Do what­ever you want

Transparent, pay-per-KB pric­ing. No tiers, no sub­scrip­tions, no hid­den fees.

Every pack­age is priced by its un­packed size on npm. We look up each de­pen­dency in your pack­age.json, mea­sure the size in kilo­bytes, and charge … per KB. That’s it.

✓ Up to 50 pack­ages per or­der

✓ No base fee, no sub­scrip­tion — pay only for what you lib­er­ate

Upload Manifest

If any of our lib­er­ated code is found to in­fringe on the orig­i­nal li­cense, we’ll pro­vide a full re­fund and re­lo­cate our cor­po­rate head­quar­ters to in­ter­na­tional wa­ters.*

*This has never hap­pened be­cause it legally can­not hap­pen. Trust us.

We had 847 AGPL de­pen­den­cies block­ing our ac­qui­si­tion. MalusCorp lib­er­ated them all in 3 weeks. The due dili­gence team found zero li­cense is­sues. We closed at $2.3B.”

Our lawyers es­ti­mated $4M in com­pli­ance costs. MalusCorp’s Total Liberation pack­age was $50K. The board was thrilled. The open source main­tain­ers were not, but who cares?”

I used to feel guilty about not at­tribut­ing open source main­tain­ers. Then I re­mem­bered that guilt does­n’t show up on quar­terly re­ports. Thank you, MalusCorp.”

The ro­bots recre­ated our en­tire npm de­pen­dency tree—2,341 pack­ages—in per­fect iso­la­tion. Our com­pli­ance dash­board went from red to green overnight.”

Trusted by in­dus­try lead­ers who pre­fer to re­main anony­mous

Our clean room process is based on well-es­tab­lished le­gal prece­dent. The ro­bots per­form­ing re­con­struc­tion have prov­ably never ac­cessed the orig­i­nal source code. We main­tain de­tailed au­dit logs that def­i­nitely ex­ist and are avail­able upon re­quest to courts in se­lect ju­ris­dic­tions.

What about the orig­i­nal de­vel­op­ers?

They made their choice when they re­leased their code as open source.” We’re sim­ply ex­er­cis­ing our right to in­de­pen­dently im­ple­ment the same func­tion­al­ity. If they wanted com­pen­sa­tion, they should have worked for a cor­po­ra­tion.

How is this dif­fer­ent from copy­ing?

Intent and process. Our ro­bots in­de­pen­dently ar­rive at the same so­lu­tions through clean room method­ol­ogy. It’s like how every movie about an as­ter­oid threat­en­ing Earth is­n’t pla­gia­rism—some­times mul­ti­ple en­ti­ties just have the same idea.

What if the lib­er­ated code has bugs?

Our SLA guar­an­tees func­tional equiv­a­lence, not per­fec­tion. Besides, the orig­i­nal open source code prob­a­bly had bugs too. At least now they’re YOUR bugs, un­der YOUR li­cense.

Can I see the ro­bots?

Our ro­bot work­force op­er­ates in a se­cure fa­cil­ity in [LOCATION REDACTED]. Tours are avail­able for Enterprise cus­tomers who sign our 47-page NDA.

What li­censes can you elim­i­nate?

All of them. MIT, Apache, GPL, AGPL, LGPL, BSD, MPL—if it has terms, we can lib­er­ate you from them. Special rush pric­ing avail­able for AGPL emer­gen­cies.

Join the thou­sands of cor­po­ra­tions who’ve dis­cov­ered that open source oblig­a­tions are merely sug­ges­tions when you have enough ro­bots.

No credit card re­quired for quotes. Payment ac­cepted in USD, EUR, BTC, and stock op­tions.

...

Read the original on malus.sh »

5 1,204 shares, 82 trendiness

upper-up/meta-lobbying-and-other-findings

An open-source in­tel­li­gence in­ves­ti­ga­tion into how Meta Platforms built a multi-chan­nel in­flu­ence op­er­a­tion to pass age ver­i­fi­ca­tion laws that shift reg­u­la­tory bur­den from so­cial me­dia plat­forms onto Apple and Google’s app stores.

Every find­ing in this repos­i­tory is sourced from pub­lic records: IRS 990 fil­ings, Senate LD-2 lob­by­ing dis­clo­sures, state lob­by­ing reg­is­tra­tions, cam­paign fi­nance data­bases, cor­po­rate reg­istries, WHOIS/DNS records, Wayback Machine archives, and in­ves­tiga­tive jour­nal­ism.

Status: Active in­ves­ti­ga­tion. 47 proven find­ings, 9 struc­turally pos­si­ble but un­proven hy­pothe­ses, and mul­ti­ple pend­ing FOIA re­sponses.

Meta spent a record $26.3 mil­lion on fed­eral lob­by­ing in 2025, de­ployed 86+ lob­by­ists across 45 states, and covertly funded a grassroots” child safety group called the Digital Childhood Alliance (DCA) to ad­vo­cate for the App Store Accountability Act (ASAA). The ASAA re­quires app stores to ver­ify user ages be­fore down­loads but im­poses no re­quire­ments on so­cial me­dia plat­forms. If it be­comes law, Apple and Google ab­sorb the com­pli­ance cost while Meta’s apps face zero new man­dates.

This in­ves­ti­ga­tion traced fund­ing flows across five con­firmed chan­nels, an­a­lyzed $2.0 bil­lion in dark money grants, searched 59,736 DAF re­cip­i­ents, parsed LD-2 fil­ings, and mapped cam­paign con­tri­bu­tions across four states to doc­u­ment the op­er­a­tion.

Meta’s fed­eral lob­by­ing spend­ing jumped from $19M (2022-2023) to $24M (2024) to $26.3M (2025) as ASAA bills were in­tro­duced in roughly 20 states. In Louisiana alone, 12 lob­by­ists were de­ployed for a sin­gle bill that passed 99-0.

Across all five Arabella Advisors en­ti­ties (New Venture Fund, Sixteen Thirty Fund, North Fund, Windward Fund, Hopewell Fund), 4,433 grants to­tal­ing ap­prox­i­mately $2.0 bil­lion were an­a­lyzed. Not a sin­gle dol­lar went to any child safety, age ver­i­fi­ca­tion, or tech pol­icy or­ga­ni­za­tion. The Schedule I grant path­way through the Arabella net­work is de­fin­i­tively ruled out.

Five con­firmed chan­nels con­nect Meta’s spend­ing to ASAA ad­vo­cacy: di­rect fed­eral lob­by­ing ($26.3M), state lob­by­ist net­works (45 states), the Digital Childhood Alliance (astroturf 501(c)(4)), su­per PACs ($70M+), and state leg­isla­tive cam­paigns (3 laws passed). A sixth chan­nel through the Arabella dark money net­work is struc­turally pos­si­ble but un­proven.

These stand­alone HTML doc­u­ments pro­vide de­tailed views of the in­ves­ti­ga­tion:

Full Investigation Documentation con­tains the com­plete OSINT in­ves­ti­ga­tion re­port with all five chan­nels, ev­i­dence ta­bles, and source ci­ta­tions.

Funding Network Timeline maps the chrono­log­i­cal de­vel­op­ment of Meta’s lob­by­ing in­fra­struc­ture, DCAs for­ma­tion, and ASAA leg­isla­tive progress across states.

Research Timeline tracks the in­ves­ti­ga­tion it­self, show­ing when each find­ing was es­tab­lished and how threads con­nected.

Meta re­tained 40+ lob­by­ing firms and 87 fed­eral lob­by­ists in 2025 (85% with prior gov­ern­ment ser­vice). Meta’s own LD-2 fil­ings with the Senate ex­plic­itly list H. R. 3149/S. 1586, the App Store Accountability Act, as a lob­bied bill. The fil­ing nar­ra­tive in­cludes protecting chil­dren, bul­ly­ing pre­ven­tion and on­line safety; youth safety and fed­eral parental ap­proval; youth re­stric­tions on so­cial me­dia.”

At the state level, con­firmed op­er­a­tions in­clude $338,500 to Headwaters Strategies (Colorado), $324,992+ across 9 firms and 12 lob­by­ists in Louisiana, and $1,036,728 in di­rect California lob­by­ing (Q1-Q3 2025 alone). A Meta lob­by­ist brought the leg­isla­tive lan­guage for Louisiana HB-570 di­rectly to the bil­l’s spon­sor, Rep. Kim Carver, who con­firmed this pub­licly.

DCA is a 501(c)(4) ad­vo­cacy group that Meta covertly funds. Bloomberg ex­posed the fund­ing re­la­tion­ship in July 2025. Under oath at a Louisiana Senate com­mit­tee hear­ing, Executive Director Casey Stefanski ad­mit­ted re­ceiv­ing tech com­pany fund­ing but re­fused to name donors.

DCA has no EIN in the IRS Business Master File, no in­cor­po­ra­tion record in any state reg­istry searched (CO, DC, DE, VA, OpenCorporates), and no Form 990 on file. It processes do­na­tions through the For Good DAF (formerly Network for Good) as a Project,” not a stand­alone non­profit. Its likely fis­cal spon­sor is NCOSEAction/Institute for Public Policy (EIN 88-1180705), NCOSEs con­firmed 501(c)(4) af­fil­i­ate with the same lead­er­ship.

DCAs do­main was reg­is­tered December 18, 2024. The web­site was live and fully formed the next day. Every blog post and tes­ti­mony tar­gets Apple and Google. Meta is never men­tioned or crit­i­cized.

Meta com­mit­ted over $70 mil­lion to four state-level su­per PACs: ATEP ($45M, bi­par­ti­san, co-led by Hilltop Public Solutions), META California ($20M), California Leads ($5M), and Forge the Future (Texas, Republican-aligned). Forge the Future’s stated pol­icy pri­or­ity is empowering par­ents with over­sight of chil­dren’s on­line ac­tiv­i­ties,” which mir­rors ASAA lan­guage ex­actly.

Hilltop Public Solutions co-leads the $45M ATEP su­per PAC and is also in­volved in DCAs mes­sag­ing co­or­di­na­tion, mak­ing it the first firm con­firmed in both Meta’s PAC op­er­a­tion and the as­tro­turf ad­vo­cacy track.

All su­per PACs are reg­is­tered at the state level rather than with the FEC, scat­ter­ing dis­clo­sure fil­ings across in­di­vid­ual state ethics com­mis­sions in­stead of a sin­gle search­able fed­eral data­base.

Meta’s Colorado lob­by­ist Adam Eichberg si­mul­ta­ne­ously serves as Board Chair of the New Venture Fund, the flag­ship 501(c)(3) of the Arabella Advisors net­work. NVF trans­fers $121.3 mil­lion an­nu­ally to the Sixteen Thirty Fund, a 501(c)(4) with no donor dis­clo­sure re­quire­ments.

The Arabella net­work op­er­ates four en­ti­ties from 1828 L Street NW, Washington DC (suites 300-A through 300-D) with com­bined an­nual rev­enue ex­ceed­ing $1.3 bil­lion. All five en­ti­ties’ grant re­cip­i­ents were an­a­lyzed (4,433 grants, ap­prox­i­mately $2.0 bil­lion). Zero dol­lars went to any child safety or­ga­ni­za­tion, de­fin­i­tively rul­ing out the Schedule I grant path­way.

If Meta money flows through the Arabella net­work to DCA, it would have to travel via fis­cal spon­sor­ship, con­sult­ing fees, or lob­by­ing ex­pen­di­tures, which are more opaque than grant dis­clo­sures.

ASAA has been signed into law in three states:

Roughly 17 ad­di­tional states have in­tro­duced or are con­sid­er­ing ASAA bills, in­clud­ing Kansas, South Carolina, Ohio, Georgia, and Florida. The fed­eral ver­sion was in­tro­duced in May 2025 by Rep. John James (R-MI) and Sen. Mike Lee (R-UT).

Each find­ing be­low is doc­u­mented with sources in the cor­re­spond­ing analy­sis file.

Meta funds DCA, con­firmed by Bloomberg re­porters and par­tially ad­mit­ted by Stefanski un­der oath at the Louisiana Senate Commerce Committee hear­ing (April 2025). Sources: Insurance Journal/Bloomberg July 2025, Deseret News Dec 2025, The Center Square LA.

Meta de­ployed 86+ lob­by­ists across 45 states for ASAA and re­lated cam­paigns. Source: OpenSecrets, state lob­by­ing reg­is­tra­tions.

Meta spent $26.3 mil­lion on fed­eral lob­by­ing in 2025, an all-time record ex­ceed­ing Lockheed Martin and Boeing. Source: OpenSecrets, Quiver Quantitative, Dome Politics.

Meta paid Headwaters Strategies $338,500 for Colorado lob­by­ing be­tween 2019 and 2026. Source: Colorado SOS SODA API.

Adam Eichberg si­mul­ta­ne­ously co-founded Meta’s Colorado lob­by­ing firm (Headwaters Strategies) and chairs the New Venture Fund board. Sources: Headwaters Strategies web­site, NVF board page, InfluenceWatch.

NVF does not di­rectly fund any child safety or tech pol­icy or­ga­ni­za­tions via Schedule I grants. Source: NVF Form 990 Schedule I analy­sis, 2,669 re­cip­i­ents.

DCA and DCI share in­fra­struc­ture: same reg­is­trar (GoDaddy), CDN (Cloudflare), email (Microsoft 365), and mar­ket­ing plat­form (Elastic Email). Source: DNS/WHOIS analy­sis.

Pelican State Partners rep­re­sents Meta as a lob­by­ing client in Louisiana. Source: F Minus data­base, LA Board of Ethics.

DCA lead­er­ship comes from NCOSE: three of four se­nior staff have NCOSE con­nec­tions (Stefanski, Hawkins, McKay). Source: DCA web­site, NCOSE pub­lic records.

ASAA has been signed into law in three states: Utah (SB-142, March 2025), Louisiana (HB-570, June 2025), and Texas (SB 2420, May 2025, paused by judge December 2025). Sources: State leg­is­la­ture records, news cov­er­age.

The Sixteen Thirty Fund does not fund any child safety or tech pol­icy or­ga­ni­za­tions via Schedule I grants (306 of 318 re­cip­i­ents an­a­lyzed). Source: STF Form 990 Schedule I, 2024.

All five Arabella en­ti­ties an­a­lyzed: 4,433 grants (approximately $2.0 bil­lion) with zero dol­lars go­ing to child safety or tech pol­icy or­ga­ni­za­tions. Schedule I path­way de­fin­i­tively ruled out across the en­tire net­work. Sources: NVF, STF, North Fund, Windward, Hopewell Form 990 Schedule I fil­ings via ProPublica.

A Meta em­ployee (Jake Levine, Product Manager) con­tributed $1,175 to ASAA spon­sor Matt Ball’s cam­paign ap­pa­ra­tus on June 2, 2025. Source: Colorado TRACER bulk data.

A Google Policy Manager (Kyle Gardner) also con­tributed $450 to Matt Ball. Multiple tech com­pany em­ploy­ees from ASAA-affected com­pa­nies tar­geted the same ASAA bill spon­sor. Source: Colorado TRACER bulk data.

Eichberg and Coyne (Headwaters prin­ci­pals) did not con­tribute to ASAA bill spon­sors Ball or Paschal de­spite $20,000+ com­bined po­lit­i­cal giv­ing. Source: Colorado TRACER bulk data.

No di­rect Meta PAC con­tri­bu­tions to any ASAA spon­sor across Utah, Louisiana, Texas, or Colorado. Source: FollowTheMoney.org multi-state search.

Todd Weiler (Utah SB-142 spon­sor) does not ac­cept cor­po­rate con­tri­bu­tions and has not dis­cussed ASAA di­rectly with Meta. DCA served as the pol­icy in­ter­me­di­ary. Source: Investigative re­port­ing, Weiler’s pub­lic state­ments.

DCA has no EIN in the IRS Business Master File. Not found in any of four re­gional ex­tracts (eo1-eo4.csv) cov­er­ing all US tax-ex­empt or­ga­ni­za­tions. Source: IRS BMF re­gional ex­tracts.

DCI con­firmed in IRS BMF with EIN 39-3684798, Delaware in­cor­po­ra­tion at 213 N Market St Wilmington, IRS rul­ing November 2025. Source: IRS BMF ex­tract.

Meta’s Forge the Future su­per PAC spent $1.3 mil­lion in Texas ahead of March 2026 pri­maries. Source: Texas Ethics Commission fil­ings, news cov­er­age.

DCAs web­site de­ployed less than 24 hours af­ter do­main reg­is­tra­tion: fully func­tional ad­vo­cacy site with pro­fes­sional de­sign, sta­tis­tics, and Heritage/NCOSE tes­ti­mo­ni­als. Source: Wayback Machine CDX API, 100+ snap­shots.

77-day pipeline from DCA do­main reg­is­tra­tion (December 18, 2024) to Utah SB-142 sign­ing (March 5, 2025). Site pre-loaded with ASAA talk­ing points be­fore any bill had passed. Source: WHOIS records, Utah Legislature.

Meta de­ployed 12 lob­by­ists for Louisiana HB-570, which passed 99-0. Disproportionate de­ploy­ment in­di­cates text-con­trol and amend­ment-block­ing rather than vote per­sua­sion. Source: Investigative re­port­ing, LA Board of Ethics.

Three California tech pol­icy em­ploy­ees from Meta, Google, and Pinterest con­tributed to Matt Ball within 90 days. All from ASAA-affected com­pa­nies, all out-of-state, tar­get­ing a newly-ap­pointed sen­a­tor. Source: Colorado TRACER bulk data.

Pelican State Partners rep­re­sents both Meta and Roblox in Louisiana. Both are ASAA ben­e­fi­cia­ries, en­abling broad in­dus­try sup­port” fram­ing. Source: F Minus data­base.

DCAs coali­tion count in­flated from 50+ to 140+ with only six or­ga­ni­za­tions ever pub­licly named. No mem­ber list has been pub­lished on the web­site. Source: DCA web­site, Wayback Machine.

NCOSE has a con­firmed 501(c)(4) af­fil­i­ate: NCOSEAction / Institute for Public Policy (EIN 88-1180705), IRS rul­ing May 2025, same ad­dress and lead­er­ship as NCOSE. Source: IRS BMF, NCOSE web­site.

Network for Good is a Donor Advised Fund, not a pay­ment proces­sor. DCA is clas­si­fied as Project” (ID 258136) in the sys­tem. For Good ex­plic­itly lim­its grants to 501(c)(3) or­ga­ni­za­tions. Source: For Good web­site, IRS de­ter­mi­na­tion.

A Meta lob­by­ist drafted HB-570′s leg­isla­tive lan­guage, con­firmed by spon­sor Rep. Kim Carver. The bill as orig­i­nally writ­ten placed age ver­i­fi­ca­tion bur­den ex­clu­sively on app stores, not plat­forms. Source: Investigative re­port­ing, Carver’s pub­lic con­fir­ma­tion.

Nicole Lopez (Meta Director of Global Litigation Strategy for Youth) tes­ti­fied in both Louisiana and South Dakota for ASAA bills, serv­ing as Meta’s na­tional ASAA spokesper­son. Source: Legislative hear­ing records.

The Sixteen Thirty Fund’s $31 mil­lion lob­by­ing bud­get and $13.1 mil­lion in pro­fes­sional fees con­tain zero men­tions of child safety, dig­i­tal pol­icy, age ver­i­fi­ca­tion, or app stores. Source: STF Form 990 Part IX.

John R. Read (DCA Senior Policy Advisor) lists Digital Childhood Alliance” as his em­ployer in Colorado TRACER records. Contributed $100 to AG can­di­date Hetal Doshi (October 2025). Source: Colorado TRACER.

Matt Ball re­ceived 8% of to­tal fundrais­ing from tech in­dus­try em­ploy­ees. He is the only 2026 Colorado sen­ate can­di­date with con­tri­bu­tions from Meta, Pinterest, Instacart, Anthropic, and Google em­ploy­ees. Four of eight dual-maxed donors are tech em­ploy­ees. Source: Colorado TRACER analy­sis.

NCOSE Schedule R re­veals a two-en­tity evo­lu­tion: the orig­i­nal NCOSE Action (EIN 86-2458921, c4 re­clas­si­fied to c3) was re­placed by the Institute for Public Policy (EIN 88-1180705, c4). All 19 NCOSE-to-Institute trans­ac­tion in­di­ca­tors are marked No” de­spite shared lead­er­ship. Source: NCOSE Form 990 Schedule R, 2019-2023.

For Good DAF path­way de­fin­i­tively ruled out: 59,736 grant re­cip­i­ents across five years (approximately $1.73 bil­lion) searched with zero matches for DCA, DCI, NCOSE, NCOSEAction, or any re­lated en­tity. Source: For Good DAF grant data.

NCOSE lob­by­ing spend­ing tripled from $78,000 to $204,000 con­cur­rent with DCA launch and the ASAA leg­isla­tive push (FY2023 to FY2024). Source: NCOSE Form 990 Part IX.

Forge the Future su­per PAC ex­plic­itly lists an ASAA-aligned pol­icy pri­or­ity: Empowering par­ents with over­sight of chil­dren’s on­line ac­tiv­i­ties across de­vices and dig­i­tal en­vi­ron­ments.” Source: Forge the Future fil­ings.

Hilltop Public Solutions bridges Meta’s su­per PAC and DCA op­er­a­tions. It co-leads ATEP ($45M) and is in­volved in DCA mes­sag­ing co­or­di­na­tion. First firm con­firmed in both tracks. Source: ATEP fil­ings, in­ves­tiga­tive re­port­ing.

Meta su­per PACs are state-level en­ti­ties (not FEC-registered), de­lib­er­ately scat­ter­ing fil­ings across state ethics com­mis­sions to avoid cen­tral­ized search­a­bil­ity. Source: FEC search (negative), state PAC reg­is­tra­tions.

Meta’s to­tal doc­u­mented po­lit­i­cal spend­ing ex­ceeds $70 mil­lion: $45M ATEP, $20M META California, $5M California Leads, with down­stream flows to Forge the Future (TX) and Making Our Tomorrow (IL). Source: State PAC fil­ings, news cov­er­age.

Casey Stefanski never ap­pears on any NCOSE 990 fil­ing de­spite re­port­edly work­ing there ten years. Not among of­fi­cers, di­rec­tors, key em­ploy­ees, or five high­est-com­pen­sated. Source: NCOSE Form 990 fil­ings, 2015-2023.

Meta’s LD-2 fil­ings ex­plic­itly list the App Store Accountability Act (H. R. 3149/S. 1586) as a lob­bied bill. This is the first di­rect ev­i­dence from Meta’s own fed­eral fil­ings con­nect­ing its $26.3M lob­by­ing spend to the spe­cific leg­is­la­tion DCA ad­vo­cates for. Source: Senate LDA fil­ing UUID b73445ed-15e5-42e7-a1e8-ae­b224755267.

Meta si­mul­ta­ne­ously lob­bies FOR ASAA and ON KOSA/COPPA 2.0, sup­port­ing leg­is­la­tion that bur­dens Apple and Google while op­pos­ing or amend­ing leg­is­la­tion that would reg­u­late Meta di­rectly. Both ap­pear in the same LD-2 fil­ing. Source: Meta LD-2 Q1-Q2 2025.

LD-2 nar­ra­tive mir­rors DCA mes­sag­ing: youth safety and fed­eral parental ap­proval” fram­ing in Meta’s fed­eral fil­ings matches DCAs parental ap­proval” and child pro­tec­tion” ad­vo­cacy lan­guage. Source: LD-2 fil­ing CPI is­sue code nar­ra­tive.

Meta funds flow through the Arabella net­work via non-grant mech­a­nisms (fiscal spon­sor­ship, con­sult­ing fees, lob­by­ing ex­pen­di­tures). The Schedule I and For Good DAF path­ways are both ruled out.

DCA op­er­ates un­der NCOSEAction (EIN 88-1180705) as fis­cal spon­sor. The per­son­nel chain is di­rect (van der Watt to Hawkins to Stefanski), but NCOSE re­ports zero trans­ac­tions with its c4 af­fil­i­ate.

Jake Levine’s con­tri­bu­tion to Matt Ball was co­or­di­nated by Meta’s gov­ern­ment af­fairs team rather than be­ing purely per­sonal.

Angela Paxton (Texas ASAA spon­sor) was among the un­named state sen­a­tors sup­ported by Forge the Future.

NCOSEs lob­by­ing spend tripling is causally re­lated to DCA/ASAA ac­tiv­ity (timing is con­cur­rent but pro­gram de­scrip­tions do not men­tion ASAA).

DCAs For Good do­na­tion page is cos­metic. Actual fund­ing comes di­rectly from Meta, not small-dol­lar DAF do­na­tions.

This in­ves­ti­ga­tion used Claude Code (Anthropic’s CLI tool, run­ning Claude Opus) was used as a re­search as­sis­tant for:

* Bulk data pro­cess­ing: pars­ing 4,433 IRS Schedule I grant records, 59,736 DAF re­cip­i­ents, 132MB of Colorado TRACER cam­paign fi­nance data, and IRS Business Master File ex­tracts cov­er­ing all US tax-ex­empt or­ga­ni­za­tions

* Cross-referencing find­ings across 24 analy­sis files and iden­ti­fy­ing pat­terns that span mul­ti­ple re­search threads

Claude Code did not in­de­pen­dently choose what to in­ves­ti­gate, de­cide what con­sti­tutes a find­ing, or de­ter­mine what to pub­lish. Every fac­tual claim in this repos­i­tory cites a pri­mary source (IRS fil­ing, Senate dis­clo­sure, state data­base, leg­isla­tive record, or pub­lished re­port­ing) that can be in­de­pen­dently ver­i­fied. The tool does not change whether Meta’s LD-2 fil­ing lists H. R. 3149, whether DCA has an EIN, or whether Stefanski ad­mit­ted tech fund­ing un­der oath. The records ex­ist or they don’t.

If you want to ver­ify any find­ing, the source URLs and data­base iden­ti­fiers are pro­vided through­out. Start with the pri­mary records, not with this repos­i­tory.

This is an OSINT re­search prod­uct. All find­ings are based on pub­lic records. Source data is cited through­out.

...

Read the original on github.com »

6 1,098 shares, 77 trendiness

CanIRun.ai — Can your machine run AI models?

Find out which AI mod­els your ma­chine can ac­tu­ally run.

Improved V3 with hy­brid think­ing and tool use

Try ad­just­ing your search or fil­ters

...

Read the original on canirun.ai »

7 971 shares, 37 trendiness

Ireland shuts last coal plant, becomes 15th coal-free country in Europe

Ireland to­day (June 20) be­came the 15th coal-free coun­try in Europe, hav­ing ended coal power gen­er­a­tion at its 915 MW Moneypoint coal plant in County Clare. Initially com­mis­sioned in the mid-1980s by ESB, Moneypoint was in­tended to help Ireland off­set the im­pact of the oil crises in the 1970s by pro­vid­ing a de­pend­able source of en­ergy.

But with Ireland now gen­er­at­ing a lot more re­new­able en­ergy nowa­days, coal burn­ing is no longer such an ur­gent need. Energy think tank Ember data states Ireland gen­er­ated 37% (11.4 TWh) of its elec­tric­ity from wind in 2024. Solar is not near wind lev­els of gen­er­a­tion, (0.97 TWh in 2024) but it has been con­tin­u­ously break­ing gen­er­a­tion records in re­cent months and lo­cal stake­hold­ers are con­fi­dent this pos­i­tive trend will con­tinue.

Following the clo­sure, the Moneypoint plant will con­tinue to serve a lim­ited backup role, burn­ing heavy fuel oil un­der emer­gency in­struc­tion from Ireland’s trans­mis­sion sys­tem op­er­a­tor EirGrid un­til 2029.

This strat­egy is in line with pre­vi­ous plans made by EirGrid and ESB to exit coal-fired gen­er­a­tion by the end of 2025, which stip­u­lated that Moneypoint would no longer be ac­tive in the whole­sale elec­tric­ity mar­ket.

Ireland has qui­etly rewrit­ten its en­ergy story, re­plac­ing toxic coal with home­grown re­new­able power,” said Alexandru Mustață, cam­paigner on coal and gas at Europe’s Beyond Fossil Fuels.

But this is­n’t job done’. The gov­ern­men­t’s pri­or­ity now must be build­ing a power sys­tem for a re­new­able fu­ture; one with the stor­age, flex­i­bil­ity, and grid in­fra­struc­ture needed to run fully on clean, do­mes­tic re­new­able elec­tric­ity,” Mustață warned.

Jerry Mac Evilly, Campaigns Director at Friends of the Earth Ireland, ap­pealed to the gov­ern­ment to en­sure oil backup at Moneypoint is kept to an ab­solute min­i­mum and ul­ti­mately de­com­mis­sioned. He also ap­pealed for the gov­ern­ment to pre­vent fur­ther de­vel­op­ment of data cen­ters, which he said are in­creas­ing Ireland’s re­liance on fos­sil gas.

We also can’t ig­nore that the gov­ern­ment is tar­get­ing the in­stal­la­tion of at least 2 GW of gas power plants with no strat­egy to re­duce Ireland’s dan­ger­ous gas de­pen­dency,” he added.

On a broader level, Ireland’s step to close coal power gen­er­a­tion at Moneypoint sets a prece­dent for fur­ther European coun­tries’ coal ex­its to come, says Beyond Fossil Fuels. The group tracks European coun­tries’ progress on their com­mit­ments to switch­ing from fos­sil fu­els to re­new­able en­ergy. So far, 23 European coun­tries have com­mit­ted to coal phase-outs. Italy is ex­pected to com­plete its main­land coal phase-out this sum­mer with the up­com­ing clo­sure of its last two big coal power plants, while main­land Spain is also ex­pect­ing to de­clare it­self coal-free this sum­mer.

...

Read the original on www.pv-magazine.com »

8 938 shares, 37 trendiness

“This Is Not The Computer For You” · Sam Henri Gold

There is a cer­tain kind of com­puter re­view that is re­ally a per­mis­sion slip. It tells you what you’re al­lowed to want. It lo­cates you in a tax­on­omy — stu­dent, cre­ative, pro­fes­sional, power user — and as­signs you a prod­uct. It is help­ful. It is re­spon­si­ble. It has very lit­tle in­ter­est in what you might be­come.

The MacBook Neo has at­tracted a lot of these re­views.

The con­sen­sus is rea­son­able: $599, A18 Pro, 8GB RAM, stripped-down I/O. A Chromebook killer, a first lap­top, a sen­si­ble ma­chine for sen­si­ble tasks. If you are think­ing about Xcode or Final Cut, this is not the com­puter for you.” The peo­ple say­ing this are not wrong. It is also not the point.

Nobody starts in the right place. You don’t be­gin with the cor­rect tool and work sen­si­bly within its con­straints un­til you or­gan­i­cally grad­u­ate to a more ca­pa­ble one. That is not how ob­ses­sion works. Obsession works by tak­ing what­ever is avail­able and press­ing on it un­til it ei­ther breaks or re­veals some­thing. The ma­chine’s lim­its be­come a map of the ter­ri­tory. You learn what com­put­ing ac­tu­ally costs by pay­ing too much of it on hard­ware that can barely af­ford it.

I know this be­cause I was run­ning Final Cut Pro X on a 2006 Core 2 Duo iMac with 3GB RAM and 120GB of spin­ning rust. I was nine. I had no busi­ness do­ing this. I did it every day af­ter school un­til my par­ents made me go to bed.

The ma­chine came as a hand-me-down from my nana. She’d wiped it, set it up in her kitchen in Massachusetts. It was one soft­ware up­date away from get­ting the axe from Apple. I tor­rented Adobe CS5 the same week. Downloaded Xcode and dragged but­tons and con­trols around in Interface Builder with no un­der­stand­ing of what I was look­ing at. I edited SystemVersion.plist to make the About this Mac” win­dow say it was run­ning Mac OS 69, which is the s*x num­ber, which is very funny. I faked be­ing sick to watch WWDC 2011 — Steve Jobs’ last keynote — and clapped alone in my room when the au­di­ence clapped, and re­built his slides in Keynote af­ter­ward be­cause I wanted to un­der­stand how he’d made them feel that way.

I knew the ma­chine was wrong for what I wanted to do with it. I did­n’t care. Every lim­i­ta­tion was just the edge of some­thing I had­n’t fig­ured out yet. It was green fields and blue skies.

I thought about all of this when I opened the Neo for the first time.

What Apple put in­side the Neo is the com­plete be­hav­ioral con­tract of the Mac. Not a Mac Lite. Not a browser in a lap­top cos­tume. The same ma­cOS, the same APIs, the same Neural Engine, the same weird byzan­tine AppKit con­trols that haven’t mean­ing­fully changed since the NeXT era. The abil­ity to dis­able SIP and in­stall some fuck-ass sys­tem mod­i­fi­ca­tion you saw in a YouTube tu­to­r­ial. All of it, at $599.

They cut the things that are, ap­par­ently, not the Mac. MagSafe. ProMotion. M-series sil­i­con. Port band­width. Configurable mem­ory. What re­mains is the Retina dis­play, the alu­minum, the key­board, and the full soft­ware plat­form. I held it and thought, yep, still a Mac.”

Yes, you will hit the lim­its of this ma­chine. 8GB of RAM and a phone chip will see to that. But the lim­its you hit on the Neo are re­source lim­its — mem­ory is fi­nite, sil­i­con has a clock speed, processes cost some­thing. You are learn­ing physics. A Chromebook does­n’t teach you that. A Chromebook’s ceil­ing is made of web browser, and the things you run into are not the edges of com­put­ing but the edges of a prod­uct cat­e­gory de­signed to save you from your­self. The kid who tries to run Blender on a Chromebook does­n’t learn that his ma­chine can’t han­dle it. He learns that Google de­cided he’s not al­lowed to. Those are com­pletely dif­fer­ent lessons.

Somewhere a kid is sav­ing up for this. He has read every re­view. Watched the in­tro­duc­tion video four or five times. Looked up every spec, every bench­mark, every foot­note. He has prob­a­bly walked into an Apple Store and in­ter­ro­gated an em­ployee about it ad nau­seam. He knows the con­sen­sus. He knows it’s prob­a­bly not the right tool for every­thing he wants to do.

He has de­cided he’ll be fine.

This com­puter is not for the peo­ple writ­ing those re­views — peo­ple who al­ready have the MacBook Pro, who have the pro­fes­sional con­text, who are op­ti­miz­ing at the mar­gin. This com­puter is for the kid who does­n’t have a mar­gin to op­ti­mize. Who can’t wait for the right tool to ma­te­ri­al­ize. Who is go­ing to take what’s avail­able and push it un­til it breaks and learn some­thing per­ma­nent from the break­ing.

He is go­ing to go through System Settings, panel by panel, and ad­just every­thing he can ad­just just to see how he likes it. He is go­ing to make a folder called Projects” with noth­ing in it. He is go­ing to down­load Blender be­cause some­one on Reddit said it was free, and then stare at the in­ter­face for forty-five min­utes. He is go­ing to open GarageBand and make some­thing that is not a song. He is go­ing to take screen­shots of fonts he likes and put them in a folder called cool fonts” and not know why. Then he is go­ing to have Blender and GarageBand and Safari and Xcode all open at once, not be­cause he’s work­ing in all of them but be­cause he does­n’t know you’re not sup­posed to do that, and the ma­chine is go­ing to get hot and slow and he is go­ing to learn what the spin­ning beach­ball cur­sor means. None of this will look, from the out­side, like the be­gin­ning of any­thing. But one of those things is go­ing to stick longer than the oth­ers. He won’t know which one un­til later. He’ll just know he keeps open­ing it.

That is not a bug in how he’s us­ing the com­puter. That is the en­tire mech­a­nism by which a kid be­comes a de­vel­oper. Or a de­signer. Or a film­maker. Or what­ever it is that comes af­ter spend­ing thou­sands of hours alone in a room with a ma­chine that was never quite right for what you were ask­ing of it.

He knows it’s prob­a­bly not the right tool. It does­n’t mat­ter. It never did.

The re­views can tell you what a com­puter is for. They have very lit­tle in­ter­est in what you might be­come be­cause of one.

...

Read the original on samhenri.gold »

9 776 shares, 30 trendiness

Agent Safehouse

Skip to con­tentGo full –yolo. We’ve got you. LLMs are prob­a­bilis­tic - 1% chance of dis­as­ter makes it a mat­ter of when, not if. Safehouse makes this a 0% chance — en­forced by the ker­nel. Safehouse de­nies write ac­cess out­side your pro­ject di­rec­tory. The ker­nel blocks the syscall be­fore any file is touched. All agents work per­fectly in their sand­boxes, but can’t im­pact any­thing out­side it.Agents in­herit your full user per­mis­sions. Safehouse flips this — noth­ing is ac­ces­si­ble un­less ex­plic­itly granted.Down­load a sin­gle shell script, make it ex­e­cutable, and run your agent in­side it. No build step, no de­pen­den­cies — just Bash and ma­cOS.Safe­house au­to­mat­i­cally grants read/​write ac­cess to the se­lected workdir (git root by de­fault) and read ac­cess to your in­stalled tool­chains. Most of your home di­rec­tory — SSH keys, other re­pos, per­sonal files — is de­nied by the ker­nel.See it fail — proof the sand­box worksTry read­ing some­thing sen­si­tive in­side safe­house. The ker­nel blocks it be­fore the process ever sees the data.# Try to read your SSH pri­vate key — de­nied by the ker­nel

safe­house cat ~/.ssh/id_ed25519

# cat: /Users/you/.ssh/id_ed25519: Operation not per­mit­ted

# Try to list an­other repo — in­vis­i­ble

safe­house ls ~/other-project

# ls: /Users/you/other-project: Operation not per­mit­ted

# But your cur­rent pro­ject works fine

safe­house ls .

# README.md src/ pack­age.json …Add these to your shell con­fig and every agent runs in­side Safehouse au­to­mat­i­cally — you don’t have to re­mem­ber. To run with­out the sand­box, use com­mand claude to by­pass the func­tion.# ~/.zshrc or ~/.bashrc

safe() { safe­house –add-dirs-ro=~/mywork $@”; }

# Sandboxed — the de­fault. Just type the com­mand name.

claude() { safe claude –dangerously-skip-permissions $@”; }

codex() { safe codex –dangerously-bypass-approvals-and-sandbox $@”; }

amp() { safe amp –dangerously-allow-all $@”; }

gem­ini() { NO_BROWSER=true safe gem­ini –yolo $@”; }

# Unsandboxed — by­pass the func­tion with `command`

# com­mand claude — plain in­ter­ac­tive ses­sion­Gener­ate your own pro­file with an LLMUse a ready-made prompt that tells Claude, Codex, Gemini, or an­other model to in­spect the real Safehouse pro­file tem­plates, ask about your home di­rec­tory and tool­chain, and gen­er­ate a least-priv­i­lege `sandbox-exec` pro­file for your setup.The guide also tells the LLM to ask about global dot­files, sug­gest a durable pro­file path like ~/.config/sandbox-exec.profile, of­fer a wrap­per that grants the cur­rent work­ing di­rec­tory, and add shell short­cuts for your pre­ferred agents.Open the copy-paste prompt

...

Read the original on agent-safehouse.dev »

10 749 shares, 30 trendiness

The 9-Year Journey to Fix Time in JavaScript

Welcome to our blog! I’m Jason Williams, a se­nior soft­ware en­gi­neer on Bloomberg’s JavaScript Infrastructure and Terminal Experience team. Today the Bloomberg Terminal runs a lot of JavaScript. Our team pro­vides a JavaScript en­vi­ron­ment to en­gi­neers across the com­pany.

Bloomberg may not be the first com­pany you think of when dis­cussing JavaScript. It cer­tainly was­n’t for me in 2018 be­fore I worked here. Back then, I at­tended my first TC39 meet­ing in London, only to meet some Bloomberg en­gi­neers who were there dis­cussing Realms, WebAssembly, Class Fields, and other top­ics. The com­pany has now been in­volved with JavaScript stan­dard­iza­tion for nu­mer­ous years, in­clud­ing part­ner­ing with Igalia. Some of the pro­pos­als we have as­sisted in­clude Arrow Functions, Async Await, BigInt, Class Fields, Promise.allSettled, Promise.withResolvers, WeakRefs, stan­dard­iz­ing Source Maps, and more!

The first pro­posal I worked on was Promise.allSettled, which was ful­fill­ing. After that fin­ished, I de­cided to help out on a pro­posal around dates and times, called Temporal.

JavaScript is unique in that it runs in all browsers. There is no sin­gle owner,” so you can’t just make a change in iso­la­tion and ex­pect it to ap­ply every­where. You need buy-in from all par­ties. Evolution hap­pens through TC39, the Technical Committee re­spon­si­ble for ECMAScript.

In 2018, when I first looked at Temporal, it was at Stage 1. The TC39 Committee was con­vinced the prob­lem was real. It was a rad­i­cal pro­posal to bring a whole new li­brary for Dates and Times into JavaScript. It was:

* Providing dif­fer­ent DateTime Types (instead of a sin­gle API)

But how did we get here? Why was Date such a pain point? For that, we need to take a step back.

In 1995, Brendan Eich was tasked with a 10-day sprint to cre­ate Mocha (which would later be­come JavaScript). Under in­tense time pres­sure, many de­sign de­ci­sions were prag­matic. One of them was to port Java’s Date im­ple­men­ta­tion di­rectly. As Brendan later ex­plained:

It was a straight port by Ken Smith (the only code in Mocha” I did­n’t write) of Java’s Date code from Java to C.

At the time, this made sense. Java was as­cen­dant and JavaScript was be­ing framed as its light­weight com­pan­ion. Internally, the phi­los­o­phy was even re­ferred to as MILLJ: Make It Look Like Java.

Brendan also noted that chang­ing the API would have been po­lit­i­cally dif­fi­cult:

Changing it when every­one ex­pected Java to be the big brother” lan­guage would make con­fu­sion and bugs; Sun would have ob­jected too.

In that mo­ment, con­sis­tency with Java was more im­por­tant than fun­da­men­tally re­think­ing the time model. It was a prag­matic trade-off. The Web was young, and most ap­pli­ca­tions mak­ing use of JavaScript would be sim­ple, at least, to be­gin with.

By the 2010s, JavaScript was pow­er­ing bank­ing sys­tems, trad­ing ter­mi­nals, col­lab­o­ra­tion tools, and other com­plex sys­tems run­ning in every time zone on earth. Date was be­com­ing more of a pain point for de­vel­op­ers.

Developers would of­ten write helper func­tions that ac­ci­dently mu­tated the orig­i­nal Date ob­ject in place when they in­tended to re­turn a new one:

const date = new Date(“2026-02-25T00:00:00Z”);

con­sole.log(date.toISOString());

// 2026-02-25T00:00:00.000Z”

func­tion ad­dOne­Day(d) {

// oops! This is mu­tat­ing the date

d.set­Date(d.get­Date() + 1);

re­turn d;

ad­dOne­Day(date);

con­sole.log(date.toISOString());

// 2026-02-26T00:00:00.000Z”

const billing­Date = new Date(“Sat Jan 31 2026”);

billing­Date.set­Month(billing­Date.get­Month() + 1);

// Expected: Feb 28

// Actual: Mar 02

Sometimes peo­ple want to get the last day of the month and fall into traps like this one, where they bump the month by one, but the days re­main the same. Date does not con­strain in­valid cal­en­dar re­sults back into a valid date. Instead, it silently rolls over­flow into the next month.

new Date(“2026-06-25 15:15:00”).toISOString();

// Potential Return Values:

// - lo­cal TimeZone

// - Invalid Date RangeError

// - UTC

In this ex­am­ple, the string is sim­i­lar, but not iden­ti­cal, to ISO 8601. Historically, browser be­hav­ior for almost ISO strings was un­de­fined by the spec­i­fi­ca­tion. Some would treat it as lo­cal time, oth­ers as UTC, and one would throw en­tirely as in­valid in­put.

There’s more, much more, but the point is that Date has been a pain point for JavaScript de­vel­op­ers for the past three decades.

The Web ecosys­tem had no choice but to patch Date’s short­com­ings with li­braries. You can see the sheer rise of date­time li­braries be­low. Today, they add up to more than 100 mil­lion down­loads a week.

Leading the charge was Moment.js, which boasts an ex­pres­sive API, pow­er­ful pars­ing ca­pa­bil­i­ties, and much-needed im­mutabil­ity. Created in 2011, it quickly be­came the de facto stan­dard for han­dling date and time ma­nip­u­la­tions in JavaScript. So surely the prob­lem is solved? Everyone should just grab a copy of this and call it a day.

The wide­spread adop­tion of mo­ment.js (plus other sim­i­lar li­braries) came with its own set of prob­lems. Adding the li­brary meant in­creas­ing bun­dle size, due to the fact that it needed to be shipped with its own set of lo­cale in­for­ma­tion plus time zone data from the time zone data­base.

Despite the use of mini­fiers, com­pil­ers, and sta­tic analy­sis tools, all of this ex­tra data could­n’t be tree-shaken away, be­cause most de­vel­op­ers don’t know ahead of time which lo­cales or time zones they’ll need. In or­der to play it safe, the ma­jor­ity of users took all of the data whole­sale and shipped it to their users.

Maggie Johnson-Pint, who had been a main­tainer of Moment.js for quite a few years (alongside oth­ers), was no stranger to re­quests to deal with the pack­age size.

We were at the point with mo­ment that it was more main­te­nance to keep up with mod­ules, web­pack, peo­ple want­ing every­thing im­mutable be­cause React, etc than any net new func­tion­al­ity

And peo­ple never stop talk­ing about the size of course.

In 2017, Maggie de­cided it was time to stan­dard­ise dates and times with a Temporal Proposal” for the TC39 ple­nary that year. It was met with great en­thu­si­asm, lead­ing it to be ad­vanced to Stage 1.

Stage 1 was a big mile­stone, but it was still far from the fin­ish line. After the ini­tial burst of en­ergy, progress nat­u­rally slowed. Maggie and Matt Johnson-Pint were lead­ing the ef­fort along­side Brian Terlson, while si­mul­ta­ne­ously bal­anc­ing other re­spon­si­bil­i­ties in­side Microsoft. Temporal was still early enough that much of the im­me­di­ate work was unglam­orous: re­quire­ments gath­er­ing, clar­i­fy­ing se­man­tics, and trans­lat­ing the ecosys­tem’s pain” into a de­sign that could ac­tu­ally ship.

We run JavaScript at scale across the Terminal, us­ing un­der­ly­ing run­times and en­gines such as Chromium, Node.js and SpiderMonkey. Our users, and the fi­nan­cial mar­kets in which they in­vest, span every time zone on earth. We pass time­stamps con­stantly: be­tween ser­vices, into stor­age, into the UI, and across sys­tems that all have to agree on what now” means, even when gov­ern­ments change DST rules with very lit­tle no­tice.

On top of that, we had re­quire­ments that the built-in Date model sim­ply was­n’t de­signed for:

* A user-con­fig­ured time zone that is not the ma­chine’s time zone (and can change per re­quest).

* Higher-precision time­stamps (nanoseconds, at a min­i­mum), with­out duct-tap­ing ex­tra fields onto ad-hoc wrap­pers for­ever.

In par­al­lel with Maggie bring­ing Temporal to TC39, Bloomberg en­gi­neer Andrew Paprocki was talk­ing with Igalia about mak­ing time zones con­fig­urable in V8. Specifically, they dis­cussed in­tro­duc­ing a sup­ported in­di­rec­tion layer so an em­bed­der could con­trol the perceived” time zone in­stead of re­ly­ing on the OS de­fault. In that con­ver­sa­tion, Daniel Ehrenberg (then work­ing at Igalia) pointed Andrew at the early Temporal work be­cause it looked strik­ingly sim­i­lar to Bloomberg’s ex­ist­ing value-se­man­tic date­time types.

That ex­change be­came an early bridge be­tween Bloomberg’s pro­duc­tion needs, Igalia’s browser-and-stan­dards ex­per­tise, and the emerg­ing di­rec­tion of Temporal. Over the years that fol­lowed, Bloomberg part­nered with Igalia (including via sus­tained fund­ing sup­port) and con­tributed en­gi­neer­ing time di­rectly into mov­ing Temporal for­ward, un­til it even­tu­ally be­came some­thing the whole ecosys­tem could ship. Andrew was look­ing for some vol­un­teers within Bloomberg who could help push Temporal for­ward and Philipp Dunkel vol­un­teered to be a spec cham­pion. Alongside Andrew, he helped per­suade Bloomberg to in­vest in mak­ing Temporal real, in­clud­ing a deeper part­ner­ship with Igalia. That sup­port brought in Philip Chimento and Ujjwal Sharma as full time Temporal cham­pi­ons, adding the day-to-day fo­cus the pro­posal needed to keep mov­ing ahead.

Shane Carr joined the Champions team, rep­re­sent­ing Google’s Internationalization team. He pro­vided the fo­cus we needed on in­ter­na­tion­al­iza­tion top­ics such as cal­en­dars, and also served as the glue be­tween the stan­dard­iza­tion process and the voice of users who ex­pe­ri­enced pain points with tools re­lated to JavaScript’s in­ter­na­tion­al­iza­tion API (Intl), such as for­mat­ting, time zones, and cal­en­dars.

Finally, we had Justin Grant, who joined the Temporal cham­pi­ons in 2020 as a vol­un­teer. After 10 years at three dif­fer­ent star­tups that man­aged time-stamped data, he’d seen en­gi­neer­ing teams waste thou­sands of hours fix­ing mis­takes with dates, times, and time zones. Justin’s ex­pe­ri­ence grounded us in real-world use cases, helped us an­tic­i­pate mis­takes that de­vel­op­ers would make, and en­sured that Temporal shipped a Temporal. ZonedDateTime API to help make DST bugs a thing of the past.

Other hon­or­able men­tions not on this list in­clude Daniel Ehrenberg, Adam Shaw, and Kevin Ness.

Temporal is a top-level name­space ob­ject (similar to Math or Intl) that ex­ists in the global scope. Underneath it are types” that ex­ist in the form of con­struc­tors. It’s ex­pected that de­vel­op­ers will reach for the type they need when us­ing the API, such as Temporal. PlainDateTime, for ex­am­ple.

Here are the types Temporal comes packed with:

If you don’t know which Temporal type you need, start with Temporal. ZonedDateTime. It is the clos­est con­cep­tual re­place­ment for Date, but with­out the footguns.”

* An ex­act mo­ment in time (internally, mil­lisec­onds since epoch)

* All as an im­mutable value

const now = new Date();

const now = Temporal.Now.zonedDateTimeISO();

The above ex­am­ple uses the Now name­space, which gives you the type al­ready set to your cur­rent lo­cal time and time zone.

This type is op­ti­mized for DateTimes that may re­quire some date­time arith­metic in which the day­light sav­ing tran­si­tion could po­ten­tially cause prob­lems. ZonedDateTime can take those tran­si­tions into ac­count when do­ing any ad­di­tion or sub­trac­tion of time (see ex­am­ple be­low).

// London DST starts: 2026-03-29 01:00 -> 02:00

const zdt = Temporal.ZonedDateTime.from(

2026-03-29T00:30:00+00:00[Europe/London]”,

con­sole.log(zdt.toString());

// → 2026-03-29T00:30:00+00:00[Europe/London]”

const plus1h = zdt.add({ hours: 1 });

con­sole.log(plus1h.toString());

// 2026-03-29T02:30:00+01:00[Europe/London]” (01:30 does­n’t ex­ist)

In this ex­am­ple, we don’t land at 01:30 but 02:30 in­stead, be­cause 01:30 does­n’t ex­ist at that spe­cific point in time.

Temporal. Instant is an ex­act mo­ment in time, it has no time zone, no day­light sav­ing, no cal­en­dar. It rep­re­sents elapsed time since mid­night on January 1, 1970 (the Unix epoch). Unlike Date, which has a very sim­i­lar data model, Instant is mea­sured in nanosec­onds rather than mil­lisec­onds. This de­ci­sion was taken by the cham­pi­ons be­cause even though the browser has some coars­en­ing for se­cu­rity pur­poses, de­vel­op­ers still need to deal with nanosec­ond-based time­stamps that could have been gen­er­ated from else­where.

A typ­i­cal ex­am­ple of Temporal. Instant us­age looks like this:

// One ex­act mo­ment in time

const in­stant = Temporal.Instant.from(“2026-02-25T15:15:00Z”);

in­stant.toString();

// 2026-02-25T15:15:00Z”

in­stant.to­Zoned­Date­TimeISO(“Eu­rope/​Lon­don”).toString();

// 2026-02-25T15:15:00+00:00[Europe/London]”

in­stant.to­Zoned­Date­TimeISO(“Amer­ica/​New_Y­ork”).toString();

// 2026-02-25T10:15:00-05:00[America/New_York]”

The Instant can be cre­ated and then con­verted to dif­fer­ent zoned” DateTimes (more on that later). You would most likely store the Instant (in your back­ing stor­age of choice) and then use the dif­fer­ent TimeZone con­ver­sions to dis­play the same time to users within their time zones.

We also have a fam­ily of plain types. These are what we would call wall time,” be­cause if you imag­ine an ana­logue clock on the wall, it does­n’t check for day­light sav­ing or time zones. It’s just a plain time (moving the clock for­ward by an hour would ad­vance it an hour on the wall, even if you did this dur­ing a Daylight Saving tran­si­tion).

We have sev­eral types with pro­gres­sively less in­for­ma­tion. This is use­ful, as you can choose the type you want to rep­re­sent and don’t need to worry about run­ning cal­cu­la­tions on any other un-needed data (such as cal­cu­lat­ing the time if you’re only in­ter­ested in dis­play­ing the date).

These types are also use­ful if you only plan to dis­play the value to the user and do not need to per­form any date/​time arith­metic, such as mov­ing for­wards or back­wards by weeks (you will need a cal­en­dar) or hours (you could end up cross­ing a day­light sav­ing bound­ary). The lim­i­ta­tions of some of these types are also what make them so use­ful. It’s hard for you to trip up and en­counter un­ex­pected bugs.

const date = Temporal.PlainDate.from({ year: 2026, month: 3, day: 11 }); // => 2026-03-11

date.year; // => 2026

date.in­LeapYear; // => false

date.toString(); // => 2026-03-11’

Temporal sup­ports cal­en­dars. Browsers and run­times ship with a set of built-in cal­en­dars, which lets you rep­re­sent, dis­play, and do arith­metic in a user’s pre­ferred cal­en­dar sys­tem, not just for­mat a Gregorian date dif­fer­ently.

Because Temporal ob­jects are cal­en­dar-aware, op­er­a­tions like add one month” are per­formed in the rules of that cal­en­dar, so you land on the ex­pected re­sult. In the ex­am­ple be­low, we add one Hebrew month to a Hebrew cal­en­dar date:

const to­day = Temporal.PlainDate.from(“2026-03-11[u-ca=hebrew]“);

to­day.toLo­caleString(“en”, { cal­en­dar: hebrew” });

// 22 Adar 5786’

const nextMonth = to­day.add({ months: 1 });

nextMonth.toLo­caleString(“en”, { cal­en­dar: hebrew” });

// 22 Nisan 5786’

With legacy Date, there’s no way to ex­press add one Hebrew month” as a first-class op­er­a­tion. You can for­mat us­ing a dif­fer­ent cal­en­dar, but any arith­metic you do is still Gregorian month arith­metic un­der the hood.

...

Read the original on bloomberg.github.io »

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.