AI Skeptics: The AI Blue Wave (with Tom Adams)

Math Babe
mathbabe.org
2026-11-09 07:46:02
In which we discuss the market reaction to the election, how AI is taking over lawyering, and the new NY AI regs: Apple Spotify YouTube...
Original Article

Home > Uncategorized > AI Skeptics: The AI Blue Wave (with Tom Adams)

In which we discuss the market reaction to the election, how AI is taking over lawyering, and the new NY AI regs:

Apple

Spotify

YouTube

Categories: Uncategorized

Comments (0) Trackbacks (0) Leave a comment Trackback

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Your email address will not be published. Required fields are marked *

CiviCRM 6.20 Release

CiviCRM
civicrm.org
2026-11-08 12:55:36
Thanks to the hard work of CiviCRM’s incredible community of contributors, CiviCRM version 6.20.0 is now ready to download. This is a regular monthly release that includes new features and bug fixes. Details are available in the monthly release notes. Your are encouraged to upgrade now ...
Original Article

Thanks to the hard work of CiviCRM’s incredible community of contributors, CiviCRM version 6.20.0 is now ready to download. This is a regular monthly release that includes new features and bug fixes. Details are available in the monthly release notes .

Your are encouraged to upgrade now for the most stable, secure CiviCRM experience:

Download CiviCRM

Users of the CiviCRM Extended Security Releases (ESR) do not need to upgrade. The current version of ESR is CiviCRM 6.16.x (supported until April 2027).

Support CiviCRM

CiviCRM is community driven and is sustained through code contributions and generous financial support.

We are committed to keeping CiviCRM free and open, forever . We depend on your support to help make that happen. Please consider supporting CiviCRM today .

Big thanks to all our partners , members , ESR subscribers and contributors who give regularly to support CiviCRM for everyone.

Credits

AGH Strategies - Alice Frumin, Chris Garaffa; Agileware Pty Ltd - Justin Freeman; alilinares; Artful Robot - Rich Lott; Australian Greens - John Twyman; beatrizpaula03; Benjamin W; BrightMinded Ltd - Bradley Taylor; Christian Wach; civico GmbH - Johannes Filter; CiviCoop - Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Martin Correll; CompuCo - Muhammad Shahrukh; Coop SymbioTIC - Mathieu Lutfy, Shane Bill; CSES (Chelmsford Science and Engineering Society) - Adam Wood; Dave D; Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; GESTAD - Guillaume Sorel; Gray Digital - Richard Baugh; Greenpeace Central and Eastern Europe - Patrick Figel; Hans Rossel; Humanists UK - Andrew West; Jakub Fidler; JMA Consulting - Monish Deb, Seamus Lee; joapta-tech; Joinery - Allen Shaw; Juan Ignacio Sartor; kaustubh-compuco; Kevin Goess; knottheory; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire, Jade Gaunt; NIAB - Stuart; Nicol Wistreich; OPEN - dewy; Progressive Technology Project - Jamie McClelland; Responsive Development Technologies - Thomas Nilefalk; Richard van Oosterhout; Robin Bowes; Sigtechnica; Sinjinsmiley; Skvare - Mark Hanna, Sunil Pawar; Squiffle Consulting - Aidan Saunders; Stiftung Pfadfinden - Andreas Lietz; Survos - Tac Tacelosky; SYSTOPIA - Dominic Tubach; Sylvain Plante; Tadpole Collective - Kevin Cristiano; Third Sector Design - William Mortada, Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton, Lars Sander-Green; Youth Apostles Institute - John Volk

New Extensions

  • Mosaic Plus - The versafix-1 mosaico template is quite narrow, a maximum of 600px. For most screens, a width of 660px is quite reasonable and a better use of the screen.
  • Association Cockpit - Vereinsabfrage - Provides a simple, friendly screen for volunteers in small associations to find and edit contacts, add notes and see upcoming birthdays.
  • Create Household From Individuals - In SearchKits on Individuals, provide an action to create a new household with the Individuals as members.
  • CiviCoop Theme - Provides a custom branded stream and modern styling for CiviCRM using the RiverLea theme framework.

Bloomberg: ‘Nvidia Intervened in U.S. Probe of Megaspeed Chip Smuggling’

Daring Fireball
www.bloomberg.com
2026-11-10 12:06:01
Mackenzie Hawkins, reporting yesterday for Bloomberg: Despite that stance, in the months after Teter’s initial call with Kessler, Nvidia gave BIS an incomplete account of its business with Megaspeed. After several visits to Megaspeed’s data centers — 12 facilities owned by eight companies across...
Original Article

We've detected unusual activity from your computer network

To continue, please click the box below to let us know you're not a robot.

Why did this happen?

Please make sure your browser supports JavaScript and cookies and that you are not blocking them from loading. For more information you can review our Terms of Service and Cookie Policy .

Need Help?

For inquiries related to this message please contact our support team and provide the reference ID below.

Block reference ID:55b8b52c-dd29-11f1-9d84-a28a3f48e808

Get the most important global markets news at your fingertips with a Bloomberg.com subscription.

SUBSCRIBE NOW

Regarding Graveyards and Indispensable Men

Daring Fireball
www.youtube.com
2026-11-10 12:01:06
Steve Jobs to 60 Minutes in 2003: “Great things in business are never done by one person. They’re done by a team of people.” (I linked to this just a few months ago, but thought it worth a re-link today.)  ★  ...

Synaptics patent claims stop work on DisplayLink drivers

Lobsters
lwn.net
2026-11-10 11:57:25
Comments...
Original Article

Welcome to LWN.net

The following subscription-only content has been made available to you by an LWN subscriber. Thousands of subscribers depend on LWN for the best news from the Linux and free software communities. If you enjoy this article, please consider subscribing to LWN . Thank you for visiting LWN.net!

Mike Lothian owns a docking station (or dock) that uses a DisplayLink chipset that had, at least in his opinion, subpar performance on Linux. He decided to try improving the Linux driver, with LLM assistance, but ran into one problem that he could not solve—so he asked for help, hoping that Synaptics's developers would lend a hand. (DisplayLink was acquired by Synaptics in 2022.) Rather than help him in improving the driver, however, the Synaptics legal team responded with patent infringement claims, a demand that he cease unauthorized implementation of DisplayLink technology, and threats of expensive legal penalties. For now, it appears that Linux users of the company's docks will have to continue to live without feature parity with other platforms.

Synaptics and Displaylink

The dock that he was trying to support is a Dell device that connects to a system via USB 3 and allows users to connect multiple monitors and other devices to their computer. It provides its DisplayLink Manager (DLM) software for Linux for the devices via an APT repository for Ubuntu.

The company only provides DLM software in binary form, and only for x86-based platforms. The software is proprietary, but the company does maintain an open-source, out-of-tree kernel module that is included with DLM, the Extensible Virtual Display Interface (EVDI) project. It provides a driver that's compatible with Linux DRM and allows users to manage their docked displays with standard tools used for display settings, such as xrandr or GNOME and KDE Plasma's utilities.

A short article explains why the company has not released source code for DLM: the software uses a proprietary graphics technology called DL3 to create a compressed stream of the various channels (e.g., USB, DisplayLink video, audio) over a communication channel (USB 3 in this case) and decode it again for output to the user's devices.

Unfortunately, the vendor-supplied software did not work well for Lothian. I spoke and chatted with him via Signal while writing this article; he said that the driver kept crashing under Linux, so he decided to use his Claude subscription to try to develop a new driver and support software.

Vino

He posted the first patch series for Vino—his Rust-based DRM/KMS driver—to the kernel's dri-devel list as an RFC on June 17. Lothian noted that it was in an incomplete state, and asked for help with a blocker that he had run into trying to communicate with the dock's control plane. " If you have knowledge of the DisplayLink DL3 control-plane engagement sequence, or ideas for isolating a whole-bus timing/ordering property a per-channel diff cannot see, help would be very welcome. " He received feedback from a few developers, including guidance from Danilo Krummrich to rework the driver to use the Rust KMS bindings , but no advice specific to the problem he was trying to solve.

Lothian also opened an issue on the EVDI GitHub repository on June 17. It explained the work he'd done so far, outlined the approach in trying to reverse-engineer the DL3 protocol, provided links to his GitHub repository with the Vino code, and asked for clarification on a few issues. There was no reply to his issue.

He also reached out to Łukasz Spintzyk of Synaptics directly by email; his correspondence with the company between July 5 and October 7 is available in this PDF compiled by Lothian . He noted that he had found a few bugs in EVDI and opened a pull request (that went unreviewed for several months), and also asked for assistance where he was blocked on Vino. On July 20, he received a reply, not from Spintzyk, but from Michal Lukaszek of Synaptics:

The reason I'm writing is that DisplayLink is not an open standard. The protocol, codec, and other technologies used by DisplayLink devices are proprietary to Synaptics and are protected by a substantial portfolio of patents in a number of jurisdictions, including the UK.

From what you've published, it appears that the VINO project is progressing beyond interoperability work and toward implementing technology that we believe is covered by those patents. While many developers understandably focus on avoiding copyrighted source code, patent law is different. An independently written or clean-room implementation does not necessarily avoid patent infringement if it implements patented inventions.

Lukaszek said it was entirely possible that Lothian was unaware of the " intellectual property landscape surrounding DisplayLink ", so he wanted to make him aware now rather than " have the situation become more formal later ". Lothian lives in Scotland and has a ".co.uk" email address, which explains why the email made reference to the UK.

Cease and desist

On August 17, Andrew Bateman, an assistant general council of intellectual property for Synaptics, sent a cease-and-desist notice . The letter stated that Lothian had not " substantially responded " to Lukaszek's communication, and had continued with " public statements and further development activities ". It included an appendix with a list of 125 patents that " cover fundamental aspects of DisplayLink's architecture and operation ", but did not specify which patents might be infringed by the work.

Synaptics included a list of eight demands it expected immediate compliance with, including ceasing development of " any software or other implementation that infringes any Synaptics patent ", withdrawing submissions of materials " made to Linux kernel maintainers, mailing lists, code-hosting platforms, package maintainers, distributions, or any other person or organization ", and to identify in writing every location " in which the relevant materials have been published, submitted, stored, or distributed ". It also demanded that he provide Synaptics with a signed confirmation, by August 28, that he had complied with its demands.

Lothian, instead, posted version three of his Vino work for the DisplayLink docks to the dri-devel list on August 26. He said that the previous two versions had " never lit a panel ", but the new work could control three generations of DL3 docks without any vendor software. There were no substantive reviews of the patch set posted to the list, though there were some automated reviews from Sashiko.

On August 27, Lothian responded to Bateman and asked him to elaborate on the patents that Synaptics thought were being infringed. " A claim chart mapping the relevant claims to the relevant code would make it much easier for me to understand and properly respond to your concerns. "

He also expressed confusion about Synaptics's position that his work was being treated as patent infringement. Synaptics is a member of the Open Invention Network (OIN), which was created to help open-source developers and vendors deal with the threats of expensive patent litigation. It holds a large, cross-licensed portfolio that serves to provide patent protection to individuals, open-source projects, and large vendors alike. Lothian said that he was now an OIN licensee as well, and he thought that it was supposed to " reduce exactly this sort of patent problem around Linux and open source software ".

He asked Bateman to explain how Synaptics claims " interact with our respective OIN commitments ", and expressed a desire to sort things out with Synaptics constructively. " I don't think a public dispute between Synaptics and an individual open source developer would be particularly helpful for either of us, especially within the Linux and open source communities ".

Lothian did not think he could " reasonably provide the signed undertaking " Synaptics had demanded by August 28 without understanding which patent claims it was alleging. He asked for an extension to the deadline. There was no response from Bateman, so Lothian sent a follow-up email on September 18. He said he was concerned there was no acknowledgment to his last email, and wondered it was safe to assume he could continue his work. He had been running the Vino driver himself for quite a while, and was eager to move it upstream without having patent threats hanging over the work.

Bateman responded the next day and said that he should be concerned:

As you previously requested, we have been documenting your ongoing patent infringement by mapping your Vino driver to specific claims of our DisplayLink patents. I will provide this claim mapping documentation to you within the next two weeks. I will also be sending to you our demand for substantial monetary compensation to recoup the cost and effort required to create such documentation of your infringing acts. I previously gave you the opportunity to stop your infringement, but you decided to push back and not heed my warnings, and so now we are escalating as we deem appropriate.

The letter continued to claim that Lothian would be " single-handedly eviscerating DisplayLink's competitive advantage in this crowded market by educating our competitors and other third parties as to how we implement our proprietary technology ". He said that DisplayLink is not a member of OIN, and none of its technology is licensable through OIN or any other organization.

Bateman sent a follow-up letter , dated October 5, that included two claim charts for UK patents: GB2484736B ("Display control device") and GB2485613B ("Image generation"), both filed in 2010 and published in 2012. He reiterated Synaptics's demands from its previous letter, and said that the deadline was now October 11; failure to comply would result in the company seeking " monetary compensation from you in the amount of US$25,000 to recoup the costs and effort required to create the attached documentation of your infringing acts ". That amount would be increased by $25,000 each week until the company's demands were complied with.

Lothian responded the next day, by email, to say that he was on vacation, and would not be back home until October 13. He asked for an extension of the deadline to return home and go through the claim charts " ideally with someone qualified to help me read them ". Bateman replied that Synaptics would agree to extend the deadline to October 18, though no further extensions would be granted. He reiterated that " DisplayLink is not a member of OIN " and none of its technology was licensable through OIN.

OIN to the rescue?

Synaptics is a member of OIN, and is listed in the community directory . In addition to joining OIN, Lothian had reached out to the organization to try to solicit its help and has been in communication with some of the staff there. OIN indicated that it would look into the matter and see if he had any protection as an OIN member. That process took longer than Lothian hoped, though OIN did eventually provide its conclusion.

OIN's portfolio covers a wide range of software that matches its Linux System Definition , but it does not cover everything that might be implemented for a Linux system. In particular, its definition specifies that codecs (" a component of a program capable of performing transformations of a video, still image or audio data stream or signal ") are not covered unless specifically mentioned in this list of components.

I spoke briefly to OIN CEO Keith Bergelt on October 23, shortly after OIN staff informed Lothian of the result of their research. Bergelt said that OIN's conclusion was that, since codecs are explicitly not covered by OIN's Linux System Definition, its protections did not extend to Lothian's attempted kernel contributions. OIN had recommended that Lothian reach out to a lawyer in the UK, and provided a recommendation.

Status

Unfortunately, that referral did not pan out, Lothian said. He has not given up entirely, but he has taken down the GitHub repository to comply with Synaptics's demands. For now, he may continue working on some of components that are not affected by the patent claims, but the work on Vino will not be submitted to the kernel. " Vino itself has to remain local until this is sorted out, I just can't afford to defend myself against Synaptics. "

Perhaps amusingly, Lothian told me that someone from Synaptics finally replied to the pull request on October 7. Lothian told me he does not intend to follow up on the comments: " You can't threaten to sue me and then say 'can you update your pull request?' "

For the time being, Synaptics has succeeded in shutting down an effort to improve the way DisplayLink docks work with Linux. It is an unpleasant reminder that, while much of the current conversations in open-source communities are concerned with LLM-driven development, software patents still pose problems for free-software developers and users.




.name Grandfathered

Hacker News
neil.fraser.name
2026-11-10 11:37:44
Comments...
Original Article

.name Grandfathered

10 November 2026

We won!

After a long and expensive battle, news just dropped that Verisign is retracting its plan to terminate 22,000 domain names and email redirects. Although they will be closing new registrations for 3rd-level .name domains, all existing domains (including this website) and email redirects will remain indefinitely.

This was a team effort. It was inspiring how many talented people joined this fight. From Doytchin who kicked everything off, to Jim who flew to Bali to make the case to ICANN in person, to Patrik, Troy, Huyen, Keith, Judy, Erik, and Ryan who wrote formal reconsideration requests, to my lawyers Jan, Flip and Diégo who threw the book at ICANN, to Beverly, Stefan, Vaughan, Irv, Pablo, Larry, Lionel, Daniel, Ori, Markus, Kirk, Ed, Jeremy, Stephan, Matija, Jan, Simon, Mark, and Evan who filed letters of support. I'd also like to sincerely thank selected individuals within ICANN who had the courage to stand up against the bureaucracy. Without exception, everyone I spoke with was a remarkable person.

< Previous | Next >

Legal yada yada: My views do not necessarily represent those of my employer or my goldfish.

Tailscale's DNS IPv6 spells out "Tailscale"

Hacker News
www.reddit.com
2026-11-10 11:34:45
Comments...
Original Article

You've been blocked by network security.

To continue, log in to your Reddit account or use your developer token

If you think you've been blocked by mistake, file a ticket below and we'll look into it.

Steven Levy on John Ternus

Daring Fireball
www.wired.com
2026-11-10 11:32:26
Steven Levy at Wired, in a terrific post-event follow-up to his exclusive early look at the new MacBook Pros (News+ link): I first met Ternus in 2015, when I spent a day with him at Apple’s Input Design Lab, a testing facility in Cupertino. He’d risen to VP for Mac, iPad, Ecosystem, and Audio En...
Original Article

The brief ceremony introducing the new Macbook Pro this week was as low-key as the presenter, Apple’s new CEO John Ternus. He stepped onto the low stage at a Los Angeles event space with zero fanfare, said hi, and queued up a video showing the first touchscreen Mac. Then he released the modest crowd of journalists and creators to get hands-on with the new laptop and roam between eye-popping demos of music producers, filmmakers, photographers, and fashion designers using the laptop. Ternus, who at 51 is on the younger side of Apple’s top management, has been CEO for less than two months. But this launch and a series of other recent announcements have made one thing clear. With this new guy—if a 25-year Apple veteran could be considered new—it’s all about the products. Perhaps fittingly, the biggest noise of the presentation came when Ternus revealed that the new device restores the illumination to the Apple logo. Maybe that’s a symbol that in the age of AI, Apple is beaming out the message that hardware still rules.

A few minutes after the presentation, I sat down with Ternus, for the second time in two days. Steve Jobs used to grant me an audience after his famous keynotes, too. Ternus isn’t Jobs, of course, nor is he supposed to be. But who is he?

I first met Ternus in 2015, when I spent a day with him at Apple’s Input Design Lab, a testing facility in Cupertino. He’d risen to VP for Mac, iPad, Ecosystem, and Audio Engineering, and he struck me as affable and knowledgeable. (He spent four years right out of college at a virtual reality company, but he’s been at Apple ever since.) The peg to my story at the time was how this unknown manager conducted a Javert-like investigation to fix the weird sound a redesigned mouse made when sliding on a table.

That attention to detail was a legacy of Jobs’ perfectionism, which Tim Cook sustained as the next CEO. In the decade when Ternus overlapped with Jobs, he says he had only “a handful of interactions” with the founder. “But I've always felt like sort of a student of Steve's teachings,” Ternus said. “And then being able to work very closely with Tim, I’ve been very lucky.”

Ternus has so far been defined by his product prowess. “John innately has a great sense for great products, and that’s what Apple is,” says Greg Joswiak, Apple’s SVP of worldwide marketing and a 40-year company veteran. “You can’t teach that.” In one sense Ternus’ ascension is similar to that of Microsoft’s Satya Nadella, another lifer promoted to the top post. But Nadella was called upon to fix a broken organization, while Apple has been on a multi-decade run. Ternus is explicit that he will be an engine of continuity . That word is key to his selection, and above all explains why Tim Cook and the rest of Apple’s board was so comfortable with the choice.

The extent to which Ternus is a deep Apple insider became clear when I probed him on his views on being a corporate leader. I asked him which non-Apple CEOs he admires, and he was stumped. “I haven't really thought about that,” he said. I asked whether any business books had an impact on him. “Not really,” he said. “Of course I’ve read books, but there's so much to be learned from the people I get to work with.” Indeed, every time I tried to pin down Ternus on what mark he wants to make at Apple, he deflected the question and told me how he will continue Apple’s commitment to internal collaboration.

Ternus’ key collaborator is probably Johny Srouji, the architect of the company’s custom silicon, an initiative that’s driven many of the company’s innovations in the past decade. Srouji says that their relationship will be even closer, as Apple has merged its hardware engineering and technology organizations with Srouji at the top, reporting to Ternus. “John is going to be a great CEO,” he said. “He's a product guy at heart, but Apple's secret weapon is the DNA, the culture, which is not going to change. Remember, John has been here for 25 years. It’s not like he's going to come and everything's going to be different.”

Being Apple’s CEO encompasses much more than products—there’s a $100 billion business in services, a huge infrastructure, and the general mishegoss of running a giant corporation. I asked Ternus what it’s like to take on a massively expanded portfolio. “One of the amazing privileges of this job is getting to learn so many new things,” he said. “I have been and will continue to learn and go deeper into different areas. But, you know, I do love product. I'm super passionate about it.”

Like it or not, the CEO of a $4 trillion company has to be involved in policy and politics. It has been widely reported that as executive chair, Cook will still conduct some of Apple’s high-level policy duties, including the equivalent of stuffing gold-plated binkies in the presidential mouth. Ternus implies that the reality is more nuanced. “Tim is available to help wherever I ask him, and it's great to have him in that role,” he said. “He obviously has a ton of relationships he's developed over the years, and of course, I'm building new relationships in this role as well.” One relationship he has yet to build: the president. Ternus has yet to meet Donald Trump.

Then there’s the one thing that could possibly disrupt the way Apple has run its business for the past 50 years. Ternus is taking over the company during what may be the biggest technological shift ever. I suggested to Ternus that history may judge him on how he handles AI . I spelled out for him a couple of narratives people spin about Apple. One is that Apple has been hobbled by a failure to develop its AI product Siri, and even after an update it’s still in catch-up mode. The other is that Apple is smart to avoid the high cost of developing a frontier model and that the strategy of organically putting AI into its products, with a focus on privacy, will pay off in the long run.

“Everyone has an opinion—I really like where we’re at,” he said. “I would hope people recognize that the work we do is building incredible products that make their lives better. We’re absolutely going to leverage AI to do that. We don't want to ship AI for AI's sake. When we're doing it right, people won’t have to think about whether it was AI that made this happen or more traditional software. What matters is, did we build something that they really love?”

That assumes that AI, as powerful as it is, will wind up as a “normal” technology, organically integrated into our current gadget-sphere. Another school of thought is that AI is an apocalyptic disruptor that will shred the current ecosystem. In that vision, all those cool apps Apple supports will be subsumed by AI-concocted agents generated from prompts, or even autonomously. Ternus doesn’t buy that scenario. “That could make life really easy, I suppose, but the creation of products is a deeply human and personal thing, something that we love to do,” he said.

When I asked whether he’s in favor of AI regulation, he replied, “We all read the stories and think about it from a cybersecurity standpoint—clearly these models are very capable of doing things. Our focus is on making sure that our products are secure and safe, and protecting the users' information.”

His non-answer shows that he might well be on the way to mastering political communication. But policy will never be the focus of John Ternus. He is, and probably always will be, the product-guy CEO. Before we ended our conversation, Ternus had one question for me: “What did you think of the logo?”


This is an edition of Steven Levy’s and Lauren Goode's Backchannel newsletter . Read previous newsletters here.

Critical Xen Orchestra auth bypass flaw exploited to hijack VM servers

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 11:17:16
A critical authentication bypass vulnerability in Xen Orchestra is being actively exploited in attacks that could grant administrator privileges and allow takeover of XCP-ng virtualization hosts. [...]...
Original Article

Xen Orchestrator

A critical authentication bypass vulnerability in Xen Orchestra is being actively exploited in attacks that could grant administrator privileges and allow takeover of XCP-ng virtualization hosts.

Xen Orchestra is a web-based management platform developed by French software company Vates, used to manage XCP-ng virtualization environments, including virtual machines, hosts, and pools.

The vulnerability, tracked as VSA-2026-062, affects Xen Orchestra and the Xen Orchestra Appliance (XOA) and allows remote attackers with network access to the management interface to bypass authentication using a specially crafted cookie. A CVE identifier and CVSS score have not been assigned yet.

image

According to a Vates security advisory , the flaw stems from how Xen Orchestra processes authentication tokens sent through REST API requests.

The flaw stems from how Xen Orchestra processes authentication cookies.

By sending a specially crafted cookie ( authenticationToken=j:%7B%7D ) containing an empty JSON object ( {} ), attackers can trick the platform into retrieving an existing authentication token and logging them in as its owner, without requiring actual credentials.

Once authenticated, attackers can retrieve "reusable login token IDs" through the /rest/v0/users/me/authentication_tokens REST API endpoint, which can be used for further access.

"An adversary can bypass authentication and perform actions with 'Admin' privilege. Xen Orchestra compromise can lead to arbitrary code execution on managed pools and a full XCP-ng node takeover as root ," warns Vates .

The company has released Xen Orchestra 6.9.1 (stable) and 6.10.0 (latest), including patched xo-server packages 5.211.2 and 5.213.1 to fix these security vulnerabilities.

Administrators should install the update immediately, and if not possible, restrict Xen Orchestra access to dedicated management networks and block known malicious IP addresses.

Security researchers Filip Magic and Christoffer Olsen of TDC NET Security discovered the vulnerability.

Exploited in attacks

Vates confirmed that the vulnerability is being actively exploited and shared the following indicators of compromise (IOCs) to help administrators identify attacks:

  • Attacker's infrastructure: Connections to 91.211.251.112:8001 or ustar3rqxgnskzgnwkgpofgtvxevm6cx3lxdbwt4mndtveqyaohid.onion:3333 .

  • Suspicious authentication cookies: HTTP requests containing authenticationToken=j:%7B%7D or authenticationToken=j:{} .

  • Virtual machines: A VM named pivot2 .

  • Modified VM configurations: Virtual machines configured with the hvm_serial: file parameter.

  • Unusual files: /etc/cron.d/zz-ustar , /etc/cron.d/zz-ustar2 , /.ustar5 , and /.ustar6 .

Administrators can also run the following commands on XCP-ng hosts to check for unusual VM configurations, virtual machines configured to use a file for its serial port, and malicious files:

xe vm-list params=name-label,platform | grep -B1 'hvm_serial: file'

zgrep -- '-serial file:' /var/log/xensource.log*

ls -la /etc/ld.so.preload /.ustar* /etc/cron.d/zz-ustar*

However, Vates warns that exploitation will not generate any identifiers in logs, such as the use of specially crafted cookies, and instead must be detected through HTTP monitoring.

The company also says these IOCs are only associated with this known attack campaign and may differ for other threat actors.

Companies that believe they are compromised should rotate passwords and secrets used by their virtualization environments.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Blender 5.3 released with Gaussian Splat support

Hacker News
www.blender.org
2026-11-10 11:15:43
Comments...
Original Article

Watch the Recap Video

New features overview by Jonathan Lampel and Wayne Dixon from CGCookie .
4D Gaussian Splatting - Nunchuck

Make a Splat

Welcome native 3D Gaussian Splats support to Blender 5.3!

Import them as point clouds, experiment with Geometry Nodes, preview them in Workbench, and render them natively with EEVEE or Cycles.

Gaussian Magic

3D Gaussian Splats are commonly used to reconstruct 3D scenes from photos or videos. They consist of many small, soft, transparent blobs that combine to represent complex geometry and shading.

Blender can now import Gaussian Splats from PLY , SPZ , and glTF files, store them as point clouds, process them with Geometry Nodes, and render them in EEVEE, Cycles, and Workbench (solid mode).

PLY file imported as gaussian splats, featuring DOGWALK by Blender Studio.

Point Cloud Gaussian Splat settings

Point of View

Gaussian splats are represented as point clouds, using a new type to tell them apart and with special attributes:

  • scale : A vector represneting the size of the splat.
  • rotation : A quaternion to control the rotation of the splat.
  • radiance:base : 4D Vector as base (DC) radiance of the splats, followed by opacity.
  • radiance:sh_{index} : Coefficients of the spherical harmonics bands >= 1. The order is <L=1 M=-1> , <L=1 M=0> , <L=1 M=1> , <L=2 M=-2> … where L is the band index and M is the basis function.

Radiant Future

By default, a 3D Gaussian Splat is rendered using an emissive shader. The radiance attribute provides access to the resolved radiance of the splat at the current shading point.

There is rudimentary support for making the splat relightable by replacing the Emission node with a hard surface BSDF such as Diffuse BSDF.

Performance is still being optimized. Rendering may produce inaccuracies due to differences between the sRGB space used by most Gaussian Splat authoring tools and Blender’s linear color space, particularly in areas with low opacity and high radiance.

Example of relit Gaussian Splat
Simple example of relit Gaussian Splat.

More About Shading

CYCLES

Divide and Shine

The Principled BSDF now supports Dispersion !

Turn ordinary glass and diamonds into beautiful little rainbows by splitting white light into its colorful components.

Cycles Dispersion overview on YouTube by Chris Tyler

Butterflies specter shader by Cartesian Caramel

CYCLES

A diamond
in the Rough

With Dispersion in the Transmission panel, the Principled BSDF can now reproduce the characteristic rainbow effect seen in glass and gemstones. This corresponds to OpenPBR v1.1.1.

Roughness anisotropy is also now supported by the Glass BSDF and the transmission component of the Principled BSDF. It behaves just like anisotropy for specular reflections.

CYCLES

Gone with Denoise

Blender 5.3 integrates DLSS 4.5 Ray Reconstruction as a new denoiser, delivering cleaner images faster by upscaling and reusing samples from previous frames.

Think Cycles looks with EEVEE responsiveness.

Find DLSS denoising in the Denoise panel under Sampling.

NVIDIA DLSS brings near-final render quality to the viewport, making lighting and look development faster and more responsive while virtually eliminating flickering between frames during animation playback.

Find it in the Denoise panel under Render properties, Sampling.

DLSS denoising requires NVIDIA driver version 620 or newer.

NVIDIA RTX Spark

Ready to Spark

Blender 5.3 brings native support for NVIDIA RTX Spark devices running Windows 11, including memory optimizations.

EEVEE

Lights Meet Material Nodes

Material Lighting nodes allow authoring how the Material reacts to Lights.

This can, for example, be used for toon and stylized shading, but also for complex physical effects like iridescence.

All the nodes you need to adjust lighting to your liking.

Lighting to Your Liking

Per-light data, evaluation, and shadow information are now available in the Shader Editor, giving you more control over how materials respond to individual scene lights.

Four new nodes and two that received a “Light” mode/space:

A Wider Perspective

EEVEE can now render panoramic cameras, supporting all types of projections, from equirectangular and cubemap formats to various fisheye models and mirror ball.

EEVEE fisheye matching Cycles 1:1

The current implementation has a few limitations: depth of field, raytracing, and volumetric temporal reprojection in the viewport are not yet supported.

More in EEVEE & Viewport

COMPOSITOR

Side Effects

You can now stack Effects on your scene just like you would modifiers or constraints.

Applying compositing effects has never been easier.

Scene Effects stack featuring Storm by Blender Studio
New Compositor & Effects tab in the Properties editor.

One-click, Bloom !

Choose from built-in effects such as Bloom , Chromatic Aberration , Film Grain , and Vignette , as well as effects from online asset libraries or your own custom compositor node groups.

Internally, each effect is its own node group, with its output passed on to the next effect.

You can further customize effects at any time in the Compositor editor.

COMPOSITOR

Bundle Up

17 Geometry Nodes are now supported in the Compositor, bringing a range of new capabilities across bundles , math and logic, and utility operations.

This includes bundle support with Get Bundle Item , Store Bundle Item , Combine Bundle , Typed Bundle , and Separate Bundle .

Math and logic nodes such as Boolean Math , Compare , Float to Integer , Integer Math , Matrix SVD , Combine Transform , and Separate Transform . Plus utility nodes including Hash Value , Random Value , Is Viewport , Import Text , and Bone Info .

  • Blender 5.2
  • Blender 5.3
  • CPU

  • NVIDIA GPU

  • Apple GPU

  • Relative time to process Anisotropic Kuwahara filter. Lower is better.

More in Compositor

Blender 5.3 Splash by Blender Studio

Study the artwork

Blender splash artwork source files are available for you to play with!

Blender 5.3 Splash by Blender Studio
OVERGROWN, by Blender Studio
File Project menu
The new File → Project menu, to create, open and access projects.
CORE

Blender, meet projects .

Until now, Blender’s preferences (such as asset libraries) were shared across all projects, and it was up to users to keep related files and resources organized.

Blender now supports projects, giving you a way to group related files, share resources, and manage settings across an entire project, whether you’re working alone or as part of a team.

Everything
Everywhere
All In a Project

Projects support custom variables that can be used throughout a project, such as a character’s name or a frequently used file path.

Per-project asset libraries and color management configurations are also supported. You can even set up a custom splash screen for your project, providing quick access to its files and other recent projects.

Add-ons and other extensions per-project will follow in future Blender versions.

Projects are entirely optional, most of the time you’ll probably work without one.

Project Splash
Project-specific splash and color management configuration.

Charge Open Movie

ASSETS

Asset Libraries ♥ Extensions

Asset libraries can now be shared as extensions! Just like add-ons or themes.

Browse hundreds of public domain assets available on the Extensions platform via the Get Extensions tab and install them directly from within Blender.

Create and share your own asset library extension. Optionally, access can be controlled via authentication tokens .

Extension Asset Libraries
A selection of public domain assets by the popular library Poly Haven is now available from within Blender. No add-ons required.
GREASE PENCIL

Drawn to Select

Draw Mode now has its own selection tools: Tweak , Lasso , Box , and Circle . Select strokes and adjust them right where you draw.

Move, rotate, scale, duplicate, copy, paste, and delete strokes using the usual shortcuts, or access all these actions from the new Stroke menu.

Carve Diem

Meet the new Carver tool in Draw Mode.

It cuts shapes using proper Boolean subtraction, creating clean cuts in strokes and fills based on a lasso selection. Holes are created automatically when needed.

When a shape has both a stroke and a fill, carving a hole into it also creates a stroke around the hole. Fills that are split apart become separate shapes, making them easy to sculpt further.

The new Carver tool uses booleans to cut through strokes and fills.

Fill with color multiple regions at once using the new Fill tool in Blender 5.3.

One Tool to Fill Them All

The Fill tool can now fill multiple regions at once.

Simply draw a path across multiple regions to fill them all as a single shape, with no gaps or borders in between.

Ramp It Up

Gradient fills now use a ColorRamp input instead of being limited to just two colors.

Assign Flip View a shortcut or add it to Quick Favorites for easy access.

Flip Out

Mirror the camera view horizontally with the new Flip View operator to evaluate the composition from a different perspective and spot asymmetry or visual imbalances.

This only affects the viewport display. It does not change the camera object’s transform or the final render, which remains unchanged. Use the operator again to restore the original orientation.

Flip View has no shortcut assigned by default, but you can assign your own through the right-click menu or add it to Quick Favorites (Q) for easy access.

I/O

USD Collection Importer

Collections can now be associated to importers .

Similar to the Collection Exporters introduced in Blender 4.2 LTS, Collection Importers make it easy to re-import data with a single click, without having to navigate menus or adjust settings repeatedly.

Configure them through the Importers panel under Collection Properties. Settings are stored in .blend files, making them easy to share and preserving them across Blender sessions.

Only the USD importer is supported in Blender 5.3.

See all USD , Alembic , glTF , OpenEXR , and other I/O changes.

VIDEO SEQUENCER

Cut to the chase

The Video Sequencer gets a full ripple editing framework, a rewritten blade tool, and a long list of editing, interface, and performance improvements, including initial OpenTimelineIO support.

Ripple,
Shuffle,
Overwrite

Welcome Ripple editing to Blender 5.3!

This new overlap mode automatically moves strips forward or backward as edits are made, maintaining timeline continuity without the need to manually close gaps.

Ripple , Shuffle , and Overwrite modes are now consistently used across editing operations. Switch between them while moving strips using R , S , and V .

Making Waves

Complete the ripple workflow with these handy operators:

Ripple Add : Hold Shift while dragging and dropping strips to insert them using ripple behavior, automatically making room in the timeline.

Ripple Trim : Trim selected strips at the playhead and automatically close the resulting gaps. Use Shift+Q or Shift+W to trim from either side.

Ripple Delete : Delete selected strips and move subsequent content back to close the gaps. Use Shift+X .

Cutting Edge: Blade 2.0

Splits are now visualized as a line when using Blade and as a region when using Box Blade . Tooltips display frame values at the split location, while a real-time preview shows the frame beneath the cursor.

Press and hold C in the timeline to temporarily activate the Blade tool.
Release it to switch back to the previously active tool.

But wait, there’s more: Hardware decoding , thumbnail support for Scene and other strips, OpenTimelineIO import and export, and much more.

USER INTERFACE

Search. Sort. Scribble.

Blender 5.3 gets more than a layer of polish. Long-awaited quality of life features and improvements that make this release take a leap in usability.

Sorted Out

Arrange your objects freely with custom sorting in the Outliner. Finally.

Switch back to alphabetical order from the header popover.

Plus improvements to filtering, drag-and-drop behavior, and hierarchy management.

Place objects anywhere you want in the Outliner.

Press Ctrl/Cmd + F to find anything in the sidebar.

Side Quest

Sidebars in all editors now support search , making it possible to find any property or operator, even inside tabs created by add-ons.

Press Ctrl/Cmd + F while hovering the sidebar and start typing right away, or through the context menu of the tabs and panels.

To clear the search, press Alt/Option + F .

Mark it Down

The Blender UI now supports rendering basic Markdown formatting.

In node editors, write markdown directly in the new Comment node, or in regular layouts for scripts/add-ons through the label_markdown widget. Another handy widget for long strings is label_multiline , it behaves just like labels but allows text to wrap.

Markdown comment node
New Comment node to annotate node trees, with Markdown support. Rendered node on the left, Edit mode on the right.

But wait: IME support , improved tooltips , box-select gesture, browsable node editor context paths , better Attribute Viewer overlay, Curve widget selection, and more!

What’s Next ?

Blender on tablets, texture layers, animation layers? Show your support for upcoming development projects and help shape the future of Blender.

BUT WAIT, THERE’S MORE

Plus hundreds of bug fixes, code cleanups and refactors.
See the full list of changes .

CREDITS

Flying cars could launch in China next summer, maker of two-seat model says

Guardian
www.theguardian.com
2026-11-10 11:14:50
XPeng says its $300k low-altitude device will soon be ready for emergency services and recreational use in rural areas People could start taking trips in flying cars in China as soon as next summer, the manufacturer of a two-seater vehicle with autopilot model has said. Deli Zhao, the chief executiv...
Original Article

People could start taking trips in flying cars in China as soon as next summer, the manufacturer of a two-seater vehicle with autopilot model has said.

Deli Zhao, the chief executive of the Chinese flying car company XPeng, said the $300,000 (£225,000) low-altitude device would be ready for use by recreational users in rural locations and by emergency services in the second half of 2027. After 10 years of development including trials of flying motorbikes at the company’s Guangzhou base, it has been approved by China’s civil aviation authorities for limited use.

The small cockpit is about the size of a Fiat 500 car and the vehicle is lifted into the air by six drone-like battery-powered propellers and steered by a simple joystick. It can also fly autonomously to a programmed destination, but Xhao, a trained pilot, claimed he could teach anyone to fly it in five minutes.

The price tag for the contraption includes a six-wheel van about the size of a Ford Transit, out of the back of which the flying vehicle unfolds “just like the Transformers”, said Zhao. He has been developing flying cars for almost a decade and said he was part-inspired by the flying creatures ridden by humans in the Harry Potter stories and the Green Goblin’s flying skateboard from the Spider-Man comics.

The flying car hovers above water with Dubai city skyline behind
The flying car during a demonstration in Dubai last month. Photograph: Giuseppe Cacace/AFP/Getty Images

“The world where everyone can be a captain is about to arrive,” he said at the Web Summit in Lisbon on Tuesday, where a prototype of the vehicle drew large crowds. Zhao said no one had yet been injured or hurt using the vehicle which, although described as a car, lacks wheels and is better described as a helicopter-style drone. He said the initial target market was people who were into “diving, surfing, off-roading and flying”.

Elon Musk last month showed off his version of a flying Tesla which uses high-powered blasts of gas to twist and flip in the air. Amid intense competition between the US and China over the development of electric vehicles and drone technology, Zhao said Musk’s prototype was “really hopping or jumping and not really flying”. The XPeng vehicle can cruise as high as 1km above the ground – well below an unpressurised light aircraft such as a Cessna.

“I’m looking forward to seeing a potential future generation that can actually fly,” he said, and agreed when asked if Musk’s showcase had the characteristics of a circus act.

Tesla’s redesigned ‘flying car’ Roadster performs a ramp-assisted mid-air flip

However, the XPeng “flying car” also has limited scope. It will only be usable in approved park areas in China and by emergency services needing to reach inaccessible areas. It has a flight range of 30km (18.6 miles), although this will soon be doubled by increasing the battery’s energy density to 400 kilowatts per kilogram.

skip past newsletter promotion

Its emergence is part of a wider push by Beijing to develop what it calls the “low-altitude economy” – including drones and flying cars, starting with flying cargo, then people, and moving from rural areas to the cities. Zhao said his firm was one of about 20 in China working on flying vehicles.

“All cars in the future will grow wings and all transportation will move from two dimensions to three dimensions,” said Zhao, who claimed he had signed agreements with the United Arab Emirates and countries in south-east Asia to develop the flying car’s use, adding: “We aim to enter the European market as soon as possible.”

Anthropic targets valuation of up to $1.4tn in stock market flotation

Guardian
www.theguardian.com
2026-11-10 11:13:13
Claude chatbot developer had been reported to be aiming for $2tn IPO on Wall Street before investors cooled on AI Anthropic is seeking a valuation of up to $1.4tn (£1.05tn) in its imminent stock market flotation, short of the $2tn that had been expected before investors started to question the durab...
Original Article

Anthropic is seeking a valuation of up to $1.4tn (£1.05tn) in its imminent stock market flotation , short of the $2tn that had been expected before investors started to question the durability of the AI boom.

The developer of the Claude chatbot was widely reported to be targeting a $2tn initial public offering on Wall Street but its sights have been set lower, according to a US regulatory filing on Tuesday.

Anthropic is aiming to raise up to $64.4bn by selling 825m shares in the IPO priced up to $78 a share, giving the company a valuation of up to $1.4tn. The California-based company will also raise a further $26bn via a separate private placement deal ⁠with cornerstone investors including the Google parent, Alphabet, and the chipmaker Nvidia. Trading in Anthropic shares could start as soon as next week.

Investor jitters over the AI boom were crystallised last week when the US midterm elections produced victories for datacentre opponents. This has added to already existing concerns, such as how quickly – or if at all – companies can generate a return on their spending on AI infrastructure.

Brian Hopkins, a principal analyst at Forrester Research, said the midterm elections gave investors the chance to correct valuations that they were beginning to have concerns about, because of worries about the financial sustainability of the AI build-out. The election results brought those concerns to a head, Hopkins said.

“The market needed an excuse to correct itself a little bit in terms of valuations,” he said. “The US election spook is what has caused it.”

As a consequence, Anthropic’s valuation has also been lowered from an anticipated $2tn, he added. The largest ever stock market listing is Elon Musk’s SpaceX, which joined the US stock market with a valuation of $1.78tn. The company, whose assets include Musk’s rocket launch business and the X social media platform, is now worth just under $2tn.

A Chinese spying scandal enveloping Nvidia , a cornerstone company for AI investors, also threatens to overshadow the industry but has not affected share prices so far – other than Nvidia’s.

The updated Anthropic filing stated that the company’s annual revenue is now running at $81bn as of 31 October, up $10bn from the previous month.

Gemini 4 Carbon is now available

Hacker News
blog.google
2026-11-10 11:07:15
Comments...
Original Article

Developers, enterprises, scientists, and consumers can now try our latest frontier model.



Today, we’re making Gemini 4 Carbon available to developers, enterprises, scientists, and consumers. Carbon is our strongest model with frontier performance in cybersecurity capabilities and long-horizon agentic workflows across complex knowledge work, software engineering, and scientific reasoning.

Two weeks ago , we released Carbon to a set of cybersecurity defenders via our Fairwind Program . Following our recent launch of Gemini 4 Argon , Carbon pushes the frontier even further. Argon remains the ideal choice for the majority of software engineering and knowledge work, while Carbon is built for tasks that test the limits of a model’s intelligence like complex, multi-step coding and debugging and open-ended scientific research and discovery — using more tokens than Argon to explore thoroughly, reason deeply, and run extended verification loops.

Across independent benchmarks designed to test model performance in real workflows, Carbon pairs frontier accuracy with practical production economics. It ranks #1 on CursorBench 4.0 , Perplexity’s WANDR , and Zapier’s AutomationBench at more than 2X lower cost per task compared to the next best external model.

To put Carbon’s capabilities to work on larger and complex projects, we’re previewing /swarm in Google Antigravity, turning a single prompt into a coordinated team of agents you can track in real time. Developers can assign Carbon to roles that demand the deepest reasoning, like architectural design, coordination, and auditing, while pairing it with faster, lighter models across parallel isolated workspaces and adversarial verifiers that test every change.

Gemini 4 Carbon is available via the API in Google AI Studio and Gemini for business for all paying developers and enterprises, at the same introductory price 1 as Gemini 4 Argon ($2 per million input tokens and $10 per million output tokens). It is also rolling out to all Google AI Ultra subscribers in Google Antigravity , the Gemini app , and AI Mode in Search .

Higher-precision knowledge work, artifact generation, and data analysis

Across legal, finance, and enterprise operations, Gemini 4 Carbon combines frontier visual understanding, reasoning, and exhaustive retrieval to synthesize grounded insights across large sets of dense documents and data. It follows strict schemas and formatting to generate polished and precise spreadsheets, presentations, and reports.

Existing benchmarks don’t adequately capture how agents reason natively over dense files with charts, images, blueprints, schematics, and tables, so we partnered with Artificial Analysis to launch the new Multimodal Knowledge Agent (MKA) benchmark that tests a model’s multimodal performance in agentic workflows. Carbon ranks #2 while being more than 6X lower in average cost per task compared to the top performing model.

In pre-release evaluations, Carbon matched the performance of the best model tested on deep financial research on Hebbia’s E2E Financial Agentic evaluation, and ranked at the top out of 23 frontier model configurations on Balyasny Asset Management’s General Financial Intelligence benchmark, spanning legal expertise, agentic tool use and execution, coding and data engineering, and perception and context understanding.

Improved agentic coding, full stack development, and 3D and UI design

Carbon performs exceptionally well on engineering tasks that require multi-agent collaboration like multi-package migrations, cross-subsystem root-cause investigations, and complex architectural redesigns. For web app development, it runs build-and-verify loops, recovers from errors, and checks both its code and the rendered UI to produce complete, working applications. Stronger visual design, spatial reasoning, and attention to environmental detail also carry over to 3D game development and creative coding.

Frontier cybersecurity capabilities

Gemini 4 Carbon for cyber delivers our strongest cybersecurity capabilities to date, giving security teams the end-to-end intelligence they need in protecting critical software. When accessed through the Fairwind Program, Carbon leads on key benchmarks across finding (SEC-bench Pro), exploiting (ExploitGym), and patching (CWE-bench v1) vulnerabilities: inspecting software, tracing how flaws can be chained together across systems, and generating verified root-cause patches.

Early testers inside and outside of Google are already seeing strong results with Carbon for cyber in practice.

  • In Project Fortify , Google’s autonomous system spanning scanning, triage, and remediation, Carbon hit 100% recall on scanning and 95% precision on triage, on our internal benchmark. On Open Source code repository testing we see an over 25% relative improvement on Argon's already strong recall rate, surfacing previously undetected, real-world logic flaws. Bringing these gains across Google, one of the world’s largest users of open-source software, helps secure both our own systems and the broader ecosystem.
  • Google’s Cloud Vulnerability Research (CVR) team recently used Carbon to prove that two bugs in a popular open-source software were in fact exploitable vulnerabilities, comparable in severity to the recent PHP2Shell exploit . By using Carbon to build a proof of concept, CVR helped maintainers re-classify the bug as critical and swiftly issue a patch. Details will be shared after the responsible disclosure process completes.
  • As part of Wiz’s Scan for Good program, the team used Carbon to assess vulnerabilities in public digital infrastructure. For example, when scanning two major SaaS providers, the model uncovered 0-day vulnerabilities in under two hours compressing weeks of vulnerability research to a single afternoon. The team partnered with the impacted organizations to remediate in record time, helping to mitigate potential impact on tens of thousands of companies.

Stronger scientific and mathematical reasoning

Gemini 4 Carbon shows strongly improved performance in reasoning across physics, math, and life sciences, synthesizing experimental data, testing hypotheses, and reasoning through multi-step domain problems. For drug toxicity research company Axiom Bio, Carbon is now the leading model in performance for translational science, finding novel mechanisms of toxicity they hadn’t found previously. Axiom is now moving their production scientific analyses and agents to both Carbon and Argon to unlock the creation of safer drugs.

Researchers across Google have been using Carbon in Google Antigravity to accelerate their work:

  • Code verification: Researchers built a new agentic framework for formal verification called AlphaProof Code and put it to work on a major security challenge: mathematically proving the actual code underlying the cryptographic protocol of Signal . Using Carbon alongside other models, our researchers translated security goals to mathematical theorems. AlphaProof Code agents then used Carbon to generate millions of lines of code in Lean, a computer language for writing mathematical proofs, helping them prove key security properties in weeks — a task that historically takes expert teams years. The result indicates Carbon’s potential to unlock scalable formal verification, long considered a gold-standard approach to building secure software.
  • Enzyme assay development : Provided with only lab notebooks and raw data, Carbon went beyond standard analysis to surface hard-to-interpret data anomalies, which it used to diagnose subtle wet lab experimental artifacts such as incomplete automated mixing in deep wells, leading to substantially improved reproducibility. Moreover Carbon improved methods to deconvolute chromatography peaks and caught trace sample carryover in research instruments, significantly accelerating the development of new assays and tightening the feedback loop between computation and the bench.
  • Protein structure prediction: Structure prediction models like AlphaFold 3 use Multiple Sequence Alignments (MSAs) of evolutionary relatives to help infer how amino acid chains fold. As a result they often struggle on understudied, viral, microbial, and eukaryotic proteins that have very few matches in standard databases. Working in a multi-agent setup, our researchers used Gemini 4 Carbon to autonomously discover remote homologs across petabase-scale unannotated sequence archives, environmental and viral sequence catalogs, and 3D structure databases. For example, across 7 low-homolog protein families from the CASP17 blind test set, Carbon increased the number of homologs retrieved by 40-fold on average, greatly increasing the information available to structure prediction models without need for retraining. While broader benchmarking is still underway, addressing this upstream search bottleneck potentially offers a promising path toward modeling hard-to-characterize regions of the proteome.

Four weeks ago, we opened applications to give 10,000 scientists access to Argon in Google Antigravity free of charge for six months to accelerate the pace of their research, and we’ve onboarded thousands of scientists already. Today, we’re expanding access to Carbon for current and future participants, and going forward, the program will continue providing access to our latest frontier models as they become available. Applications remain open and onboarding continues on a weekly rolling basis, subject to eligibility, capacity, and selection.

Progress in model safety and security

With each new model release, we continue to strengthen our safety and security mitigations, agentic misuse prevention, model alignment, and harm reduction proportionately with model capability.

Because Gemini 4 Carbon introduces stronger cyber capabilities we build on Argon’s strong safety and security stack to fortify robustness to misuse and prompt injection.

  • Mitigating frontier safety misuse risks: We’ve strengthened our misuse safeguards to help ensure stronger defensive reasoning does not translate into offensive risk. In simulated cyberattack testing environments seeded with ExploitBench and CyScenarioBench, Carbon blocked 99% of attack trajectories from our adaptive red-teaming agent that can iteratively revisit its attack plans after each block. The Carbon safeguards lowered the per-attempt breach rate to just 0.8% (down from 3.1% on Argon). Our safeguards also lowered the automated cyberattack query success rate to 2.17% in Gray Swan’s testing, compared to 9.86% on Argon. And external testing by Trajectory Labs found zero new universal jailbreaks across 132 hours and over 13,000 requests.
  • Promoting safe and aligned model interactions: When we announced Carbon, we showed significant improvements in alignment as measured by our monitor flag rates across the model’s lifecycle, as well as reductions in data fabrication. New results show that on our 375-task agentic honesty benchmark, it passed 92% of tasks (compared to 70% for Argon) — declining to fill in missing experimental data 98% of the time and flagging methodological flaws 68% of the time.

a chart showing measures of misalignment across a model's lifecycle

  • Protecting users from indirect prompt injection attacks: Two weeks ago, we shared that Carbon achieved a 0% prompt injection attack success rate on the Gray Swan IPI benchmark — marking the first time that milestone has been reached. At the same time, we know that prompt injection robustness remains an area for continued improvement. Our advanced automated red teaming continues to push the limits here and has shown that models could be further improved against sophisticated attacks in some distributions. It provides the data for us to continuously advance our models’ security to the next frontier.

For more details, read the full Gemini 4 Carbon Safety and Security report .

Getting started with Gemini 4 Carbon

Starting today, Carbon joins Argon in our family of frontier models across our products:

  • For developers: Build with the Gemini API paid tier in AI Studio and Android Studio , and if you’re a Google AI Ultra subscriber, you can try it in Google Antigravity and AI Studio.
  • For enterprises: Try it in Gemini for business via the API or model drop down, Google Antigravity, or CodeMender.
  • For everyday users: Try Carbon starting today in the Gemini app and AI Mode in Search if you’re a Google AI Ultra subscriber.
  • For scientists & researchers: Apply for a chance to get access to both Argon and Carbon via Google Antigravity’s highest usage tier free of charge for 6 months (onboarded on a rolling basis), subject to eligibility, capacity, and selection.
  • For cybersecurity defenders: Apply to join the Fairwind Program to get access to Carbon for cyber on a rolling basis.

See the model card to learn more about Gemini 4 Carbon and to start building with it, explore our updated Gemini 4 developer guide and documentation for best practices on migrating workflows to the model.

Get the latest news from Google in your inbox

Sign up for our newsletters with product updates, event information, special offers, and more.

Your information will be used in accordance with Google's privacy policy. You may opt out at any time.

Binance warns of iOS flaw that could leak crypto wallet secrets

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 10:59:19
Binance is warning about a vulnerability in Apple's iOS 26.7.1, 27.0.1, and 27.2 that could allow third-party apps to read private files stored by other apps, including cryptocurrency seed phrases, secret keys, and login credentials. [...]...
Original Article

Binance warns of iOS flaw that could leak crypto wallet secrets

Binance is warning about a vulnerability in Apple’s iOS 26.7.1, 27.0.1, and 27.2 that could allow third-party apps to read private files stored by other apps, including cryptocurrency seed phrases, secret keys, and login credentials.

The crypto exchange clarifies that the issue is at the iOS level and does not impact only the Binance app.

“A vulnerability (worse_query) affecting iOS 26.7.1, 27.0.1, and 27.2 allows malicious apps to read local files from other apps, putting seed phrases, private keys, and login credentials at risk across the entire ecosystem,” Binance says .

image

At this time, no cryptocurrency losses have been confirmed, but Binance urges users to install the update immediately as a precaution.

The company recommends that users delete any unnecessary and untrusted apps and apply the latest versions for iOS and other apps.

Where compromise is suspected, Binance advises users to transfer funds to a new wallet created on a clean device and reset all active login sessions.

Public exploit available

“worse_query” is a publicly disclosed iOS sandbox escape technique that allows an application to cross security boundaries and access the storage of other applications.

Yesterday, a proof-of-concept exploit has been published that uses a tool called WQ Files to perform attacks relying on the technique. Specifically, WQ Files uses “worse_query” to browse, export, edit, and delete other apps’ data without requiring a jailbreak.

An attacker could

The tool must be installed on an iPhone for the attack to work, but an attacker could distribute it through untrusted sources as a sideloaded app, bypassing Apple's App Store.

WQ Files has been confirmed to work on iOS 26.7.1, 27.0.1, and 27.2, the same versions that Binance warned about.

Apple on November 9 released iOS security updates (iOS 27.2.1, 26.7.3, and 18.7.12) that address nine flaws. One of the fixed vulnerabilities, tracked as CVE-2026-113963, could allow an app to access sensitive user data.

It is unclear if this is the same security issue Binance is warning of, though.

The CVE-2026-113963 problem was reported by László Várady flaw, who found that the access occurred through App Intents, not App Group containers.

BleepingComputer has contacted Apple for clarifications and a request for comment, and we will add an update once we receive more details.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Ohme’s new EV charger privacy policy drops its pledge not to sell data

Lobsters
blog.popey.com
2026-11-10 10:51:40
Comments...
Original Article

Ohme emailed me today to say they’ve updated their privacy policy . I’ve never read it. Not the one I implicitly agreed to in 2021, nor the 2024 revision, and I certainly wasn’t planning on reading this one.

Ohme Email Banner

Then I thought about what’s actually on the other end of that policy. It’s a box bolted to the side of my house that I touch most days and think about almost never. So I read the new policy , dug the previous version out of the Internet Archive, and compared the two. Living the dream, me.

The charger

Ohme Home Pro

Image from Ohme Home Pro

I had an Ohme Home Pro fitted on 3rd December 2021, a few days before my first EV, a Mini, turned up. I wrote about that car, and a bit about the charger, in Mini EV: Two Years On . The charger came free as an incentive with the car. I didn’t choose Ohme. Ohme came in the box, more or less. Hold that thought.

The old Mini

In December 2024 I got rid of that Mini and got a new one. It plugs into the same charger.

The new Mini

The charger is hooked up to my Octopus Energy account, so it knows when electricity is cheap and charges the car then. That’s the whole point of it, and it works. I plug the car in most days and walk away. The Ohme app is on my phone, but I barely open it, unless I need to override the charge plan.

I’m on Intelligent Octopus Go, which is 36.39p/kWh during the day and 6.60p/kWh off-peak. The current Mini is a Cooper SE with a 54.2kWh battery, of which about 49kWh is usable . Filling it from empty overnight costs about £3.25. Call it £3.60 once you allow for the bit that gets lost as heat while charging. Do the same at the daytime rate and it’s nearer £18.

So the box earns its keep. Which is exactly why I’ve never bothered to wonder what else it’s up to.

What it knows

Have a think about what a smart charger needs to do its job, and you’ve got a fair idea of what it knows about you. Going by the policy, that includes:

  • When I’m home. The car is either plugged in or it isn’t. Five years of that is a pretty decent record of when I’m in, when I’m away, and how boringly predictable I am about it. They also collect “the location of your Ohme cable when it is plugged in”. It’s bolted to my house. I can save them the trouble.
  • What I drive. Make, model and VIN, for both Minis.
  • My car account. Where the car supports it, Ohme logs into the manufacturer’s service with my credentials to read the charging status. This never actually worked with the first Mini, despite several calls and emails, but they’d have been holding the login all the same.
  • My electricity. Supplier, tariff, meter numbers and, where available, half-hourly consumption from the smart meter. That’s the whole house, not just the car. Every kettle, every load of washing, every time I leave the telly on.
  • My phone. IP addresses, device identifiers and, new in this version, the advertising IDs Apple and Google stamp on every phone.

Mileage isn’t listed. But with five years of charging history and a login to the car, I’d be surprised if they couldn’t work it out.

None of that is sinister on its own. It’s roughly what you’d expect a smart charger to need. Add it all up though, and it’s a detailed picture of my household, held by a company I ended up with because it came bundled with a car.

What changed

The previous policy was dated 4th July 2024. The new one is dated 9th November 2026, and it’s a complete rewrite. Most of it is the same stuff shuffled into tables, with Ireland moved out into its own addendum. Here’s what actually changed.

Gone

  • The promise not to sell. The old policy said: “We will never share or sell your personal data to third parties for marketing purposes.” That sentence has vanished. The new one doesn’t say they will sell your data. It just doesn’t say they won’t any more, which isn’t quite the same thing.
  • A number for how long they keep it. Previously, if your account was closed or went inactive, they kept your data for seven years and then deleted it. Now it’s “a reasonable period after the end of the relationship”. No number, and nothing about deleting it at the end. Reasonable to whom?
  • Limits on suppliers. The old version said suppliers only got the data they needed and weren’t allowed to use it for anything else. That’s gone too.
  • Telling you about changes. Previously any change would be notified. Now they can amend the policy “at our sole discretion” and only have to tell you if they start using your data in a way that’s “significantly different”. To be fair, they did email me this time. Which is how we got here.

New

  • AI. Of course there’s AI. A whole section on it. They use AI tools for document processing, data analysis, customer service routing and chatbots, and third-party AI providers “may process your personal data”. You can ask for a human to review a decision, but only where it “significantly affects you”. Who decides what’s significant isn’t spelled out.
  • Marketing without asking. Email marketing used to need consent. Now existing customers can get SMS or email marketing on “legitimate interests” grounds, which means opt-out rather than opt-in. Post and automated calls are new channels too. Robocalls about my car charger. Lovely. There’s also a paragraph about marketing to people who started signing up and didn’t finish, which manages to say they haven’t consented, and that the legal basis is explicit consent, in the same sentence.
  • Advertising IDs. IDFA and AAID, the identifiers used to track you across apps for ads, are now on the list. I’m struggling to think why my car charger needs to follow me around Instagram.
  • My car login, used for flexibility services. Flexibility services are where Ohme shifts when its chargers draw power, and sells that flexibility to grid operators and energy markets. In 2024 that used my address, location, meter number and tariff. The 2026 list adds car login data, charging data and vehicle information.
  • More stuff, mostly from installation. Photos and videos of the property and fuse box, the electrical installation certificate, the ENA application, meter IDs, crash reports, plus Apple Pay, Google Pay and PayPal details.
  • New places it comes from and goes to. Car manufacturers are now a source. Microsoft 365, ECOES, “flexibility energy markets”, grant administrators such as OZEV, and due-diligence providers in a sale of the company are now named recipients. That last one is worth a moment’s thought.

My favourite bit: section 4.1 tells you which Ohme company is responsible for your data “at [LINK]”. Someone forgot to put the link in before hitting publish. We’ve all been there.

What I’m doing about it

Nothing dramatic. The charger works, the £3-ish fill-ups are the reason I have it, and ripping it off the wall over a privacy policy would be daft. But a few things are easy:

  • Opting out of marketing. One unsubscribe link, or an email to [email protected] . Done before the kettle boiled.
  • Turning off ad tracking on my phone. On iOS, stop apps asking to track. On Android, delete the advertising ID. That deals with the IDFA/AAID collection for every app, not just Ohme’s.
  • Sending a subject access request. Under UK GDPR I can ask Ohme for a copy of everything they hold on me. It’s free, and they have a month to reply. I’m genuinely curious what nearly five years of plugging in a car looks like from their side.

I could also object to the flexibility services processing, but I suspect the answer would be that it’s part of how the smart charging works. I’ll see what the subject access request turns up first, and write that up when it arrives.

The box has been on the side of the house since 2021. It’s about time I found out what it’s been saying about me.


Fancy switching to Octopus? Here’s my referral link . If you sign up we can split £100 with with this link. Or £150 if you’re signing up a business.

[$] Synaptics patent claims stop work on DisplayLink drivers

Linux Weekly News
lwn.net
2026-11-10 10:38:10
Mike Lothian owns a docking station (or dock) that uses a DisplayLink chipset that had, at least in his opinion, subpar performance on Linux. He decided to try improving the Linux driver, with LLM assistance, but ran into one problem that he could not solve—so he asked for help, hoping that Sy...
Original Article
The page you have tried to view ( Synaptics patent claims stop work on DisplayLink drivers ) is currently available to LWN subscribers only. Reader subscriptions are a necessary way to fund the continued existence of LWN and the quality of its content.

If you are already an LWN.net subscriber, please log in with the form below to read this content.

Please consider subscribing to LWN . An LWN subscription provides numerous benefits, including access to restricted content and the warm feeling of knowing that you are helping to keep LWN alive.

(Alternatively, this item will become freely available on November 19, 2026)

Firefox 160 released

Linux Weekly News
lwn.net
2026-11-10 10:37:42
Version 160 of the Firefox web browser has been released. Notable features in this release include the ability to block sites from asking to handle "mailto:" links, ability to play Matroska files with FLAC, MP3, or PCM audio, playback speed controls in the picture-in-picture video player, and a new ...
Original Article

[Posted November 10, 2026 by jzb]

Version 160 of the Firefox web browser has been released. Notable features in this release include the ability to block sites from asking to handle " mailto: " links, ability to play Matroska files with FLAC, MP3, or PCM audio, playback speed controls in the picture-in-picture video player, and a new Mini Window feature that is in early development.



OurCal

Daring Fireball
ourcal.com
2026-11-10 10:15:17
My thanks to OurCal for sponsoring last week at DF. You ever have a discussion that starts with “I didn’t see you put that on the calendar”? Could be with your colleagues, could be with your family. But the problem is familiar: Shared calendars solved scheduling, not communication. OurCal connects ...
Original Article

Apple Editors’ Choice Featured Recently on the App Store

Shared calendar. Meet messenger.

The shared calendar built around messaging. Group calendars for families, couples, friends, and colleagues. Always protected with End-to-End Encryption .

Download OurCal on the App Store Get OurCal on Google Play

“The problem with sharing calendars isn’t productivity. It’s communication . So we built a shared calendar where every action is a message.”

Ryan Brodie Ryan Brodie Founder, OurCal

More than a planner

A shared space where your group actually communicates.

Chat in every event

Talk about the plan inside the plan .

Every event has its own thread. Share photos, files, and notes without leaving the event. React, reply, and quote just like a messenger, but everything stays in context instead of scattered across WhatsApp, iMessage, and email.

Learn more about event chats

An OurCal event’s chat on iPhone

Automatic change tracking

Someone moved the dentist? You’ll know .

Every change posts a before-and-after update automatically, and reminders reach everyone who needs them. No more “wait, did you move that?” buried in a group chat.

Learn more about event alerts

iPhone lock screen showing OurCal calendar-change notifications

Colour-coded calendar views

A busy week that reads at a glance .

Every member gets a colour. See your kids’ activities, your partner’s shifts, and your own schedule in a single view, then pinch to zoom between overview and detail.

Learn more about calendar views

OurCal’s colour-coded week view on iPhone

Sync all your calendars

Google, Apple, and Outlook in one place, plus subscribed calendars like sports fixtures and school term dates. See personal and shared side by side: no more double-booking .

Smart event creation

Type “Dentist Tuesday 3pm for an hour” and it’s done. Reminders, todos, and repeating events too, all in natural language. On-device AI , nothing sent to the cloud.

Groups for your whole life

Home, work, school, social. Each group gets its own calendars, members, and chat. One app, every group .

Share shifts and rotas

Nurses, paramedics, hospitality, police: share your rota so friends and family never plan over a working day.

OurCal’s colour-coded shared calendar in month view on a MacBook OurCal’s colour-coded shared calendar in month view on an iPad OurCal’s colour-coded shared calendar in month view on an iPhone OurCal’s colour-coded shared calendar in month view on an Android phone

Every device

Yours on iPhone.
Theirs on Android.

Truly native on iPhone, iPad, Mac and Vision Pro, and just as at home on Android. Whatever your group carries, everyone stays in sync.

Encrypted. Everything. Always.

Privacy isn’t a feature.
It’s the foundation .

The only shared calendar with ANSSI-certified End-to-End Encryption.

ANSSI-certified E2EE

Every profile, group, calendar, event, message, and file is End-to-End Encrypted by default, certified by France’s national cybersecurity agency.

No ads. No tracking.

You pay for OurCal, so your data stays yours. We never sell it, mine it, or show you ads. Ever.

You stay in control

Advanced sharing controls let you invite by private link and stop sharing at any time. Your group, your rules.

Real groups, real stories

Organising life together, everywhere.

Their photos stay locked because everything in OurCal (profiles, calendars, events, and messages) is protected with End-to-End Encryption .

Read all stories

FAQ

Frequently asked questions.

What is End-to-End Encryption?

It means your calendar can be read by only you and the people you share it with. The keys never leave your group, so no one else can read your data. Not even OurCal. Read more

Is OurCal’s End-to-End Encryption certified?

Yes. Our encryption is provided by Seald, whose technology is certified by ANSSI, France’s national cybersecurity agency. Read more

Do we each get our own account?

Yes. Everyone gets their own account, and you share calendars by joining the same group. Read more

Who can join a shared calendar?

Anyone you invite. Share your group’s private invite link and they’ll be guided through joining. Groups support 2 to 100 members. Read more

Can I use OurCal with multiple different groups?

Yes. Home, work, school, social: create or join as many groups as you like, each with its own calendars, members, and chat. Read more

Can I share different calendars with different groups?

Yes. Calendars belong to a group, so each group only ever sees its own calendars. Read more

How do I set up my family, couple, or group in OurCal?

Download OurCal, tap Create Group, and share the invite link. You’ll be up and running in under a minute. Read more

Which shared calendar app is best for a couple?

For two people on different phones, OurCal is built for exactly that: a chat on every event, End-to-End Encryption, and one subscription covering you both. Compare the best shared calendar apps for couples

How do I contact OurCal support?

From OurCal’s Settings, tap Help & Feedback, then Request Help. We’ll get back to you quickly. Read more

Our Lefts: Lessons from the Socialist and Communist Parties

OrganizingUp
convergencemag.com
2026-11-10 10:05:17
Disclosure: This post contains affiliate links to Convergence’s Bookshop. 10% of purchases made through our bookshop support our movement media work. Featured images by Elizabet Wendt It certainly is the worst of times–far too many crises and crimes to list here, horrifically dangerous, no center ho...

Nvidia shaken by scandal amid wider political new order for big tech

Guardian
www.theguardian.com
2026-11-10 10:04:38
A scandal tests Nvidia’s dominance as tech billionaires seek to mend ties with Democrats after the midterm electionsThis was originally published in TechScape, a newsletter about how technology shapes our lives. Sign up to receive it hereToday in tech, we’re talking about Nvidia’s salacious scandal,...
Original Article

Today in tech, we’re talking about Nvidia ’s salacious scandal, tech tycoons trying to reconcile with Democrats, and what billionaires should spend their money on if not elections.

Cracks appear in Nvidia’s dominance

On the opening night of Web Summit in Lisbon, the Nvidia CEO, Jensen Huang’s admission that he had an affair with a Chinese datacenter executive suspected to be a spy for Beijing hit the main stage. The news broke less than 24 hours prior, and the reaction was surprising.

Matthew Prince, CEO of Cloudflare, broadened the implications of the scandal from Huang’s personal life to Nvidia’s market dominance.

“Whatever Jensen did in his personal life, that’s very salacious. In the longer term, whether Nvidia is the hero or the villain, we’ll be asking: Were the things they did to cement their market position … just financial engineering?” Prince said in front of tens of thousands of onlookers.

Nvidia’s essential role in the AI boom as the world’s premier chipmaker had given it a Teflon reputation in Silicon Valley . It served as both a bank – providing loans to its own buyers to purchase its chips – and hardware provider. Prince credited Huang for doing “a lot to cement the AI ecosystem”.

Likewise asked to respond to the news, Richard Socher, CEO of the four-month-old AI startup Recursive Superintelligence, simply said he was “grateful to have Jensen in my corner”.

Prince responded immediately: “That’s captured interest!” After all, Nvidia participated in Recursive’s $500m investment round, announced in April. The chipmaker has faced criticism over its circular financing deals, but the superiority of its hardware has for many years allowed it to make strong alliances within Silicon Valley that have warded off lasting damage.

US intelligence agencies are already scrutinizing Huang. Judging by Prince’s remarks, Silicon Valley may soon do the same.

Jensen Huang, family man; Nvidia, family business.

Man in glasses presses lips together
Nvidia’s board of directors has launched an independent investigation into reports that Jensen Huang was targeted by a foreign intelligence operation, after he admitted he had a relationship with a businesswoman whom US intelligence services suspect is a spy for China. Photograph: Ritchie B Tongo/EPA

My colleague Johana Bhuiyan analyzes Huang’s confession and what it might mean for one of the world’s most valuable companies, which is bound up with his family to an unusual degree for Silicon Valley:

For more than 30 years, Jensen Huang has been the seemingly unshakable public face of Nvidia. He co-founded the company as a young engineer in 1993 and oversaw its growth into a multitrillion dollar chipmaker and bellwether of the AI industry at large.

He’s also made it a family business. His children, Madison and Spencer, have taken leadership roles at the firm. While not a company executive, his wife, Lori Mills Huang, leads the family foundation which, as of 2024, controls over 60m Nvidia shares worth billions. The two married some 40 years ago. During public appearances, he’s fond of telling the story of how they met in college.

But Huang’s image as a family man has been shattered as of Sunday. He admitted in a letter to employees on Sunday that he had been having an affair. Nvidia’s board of directors have now launched an independent investigation about the national security concerns surrounding Huang’s relationship.

“Throughout my life, my family has given me love and support,” Huang wrote in his letter. “They deserve my honesty and loyalty. Instead, I let them down and damaged the life we built together. I take full responsibility for what I did and the hurt I caused, and I accept the criticism that comes with it.”

skip past newsletter promotion

On one hand, Huang’s affair is not just a matter of morals or ethics, as there are potential national security concerns. On the other, Huang is core to the DNA of Nvidia, which in turn is the bedrock of the entire AI industry – an industry upon which the US economy relies greatly. Huang himself may be too big to fail.

Investors are doubting what was once seen as an unstoppable juggernaut. Nvidia shares fell 7.5% as soon as the stock market opened, wiping over $330bn off the company’s value.

Tech barons attempt reconciliation after blue wave. Will newly powerful Democrats accept?

photo of tech leaders
Guests including Mark Zuckerberg, Jeff Bezos, Sundar Pichai and Elon Musk, arrive before the 60th presidential inauguration in the rotunda of the US Capitol on 20 January 2025. Photograph: Julia Demaree Nikhinson/Reuters

In the wake of Tuesday’s blue wave, Silicon Valley is attempting to reconcile with the new power brokers in the US.

Tech’s tycoons spent the last two years cozying up to Donald Trump. On Thursday, Elon Musk sang a different tune. After railing against Texas Democrat James Talarico with jibes like “He’ll trans your kids” and spending tens of millions to elect his opponent, Musk responded kindly when the senator-elect called him a “great innovator” on a podcast. Musk tweeted: “Nice of him to say that”. How cordial! It’s a far cry from the extreme and unrelenting partisanship that Musk has hawked for months leading up to the elections.

Venture capitalist Chamath Palihapitiya, host of the influential All-In podcast, tweeted on Sunday: “When I’m wrong, I’m wrong … This was a complete and total repudiation about the state of the economy. The economy is broken.” His message sounds much closer to affordability-obsessed Democrats.

Democratic lawmakers are putting out statements that any reconciliation by the tech oligarchy remains largely one-sided and transactional. Newly in-control Democrats do seem to differ in their views on the best strategy for dealing with the conservative problem of Silicon Valley. Members of Congress are eager to haul in tech CEOs for grillings and pass AI safety laws. Newly elected governors campaigned on promises of moratoria on datacenter construction.

It is not clear which is the best path forward for Democrats as they assume power. The US stock market relies heavily on the AI industry’s growth. Hamstringing that industry with bans on new datacenters and legislation that cracks down on AI model development risks sending the economy into a backslide. However, the voting public wants to make a public example of AI CEOs, who are despised on both sides of the aisle despite their alliance with Trump and the Republican elite.

Ransomware recovery is now a client retention metric

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 10:01:11
Recovering from ransomware doesn't guarantee an MSP will retain its clients, especially when delays, poor communication, and unexpected costs undermine trust. Kaseya examines how disconnected recovery tools create these problems and how integrated workflows can improve response times, transparency, ...
Original Article

Ransomware recovery

The ransomware attack is over. Your team has restored the client’s data, brought systems back online and put business operations back on track. From a technical standpoint, the recovery was a success.

But the client still has questions. Why did updates go quiet for two days? What drove the recovery costs up? And where did the 31 hours of emergency labor on the invoice come from?

Recovering from ransomware is only part of the job. Clients also need to know what happened, what recovery involved and what it cost them. When communication falls short or unexpected charges appear, even a technically successful recovery can leave clients questioning the value of their MSP relationship.

The disruption may be behind them, but their doubts can carry into the next renewal conversation.

The trend: Slow, fragmented recovery erodes trust and renewals

Ransomware recovery can take days, even when teams have backups and a response plan in place. According to industry reports, only 16% of affected organizations fully recovered within a day . Over half (55%) recovered within a week. For businesses that depend on their systems to serve customers and generate revenue, every additional day of disruption carries a cost.

The stakes extend to the MSP, too. Kaseya’s 2026 Cybersecurity Outlook report found that 12% of MSPs lost clients following security incidents , with ransomware, account takeover and business email compromise among the main reasons.

When recovery involves delays, fragmented efforts or gaps in communication, clients struggle to understand what is happening and when they can expect normal operations to resume. They may also question unexpected costs or wonder whether their provider has the situation under control.

Clients expect cyberattacks to happen, but they also expect their MSP to respond quickly, coordinate recovery and keep them informed. When those expectations go unmet, a technically successful recovery may still leave clients questioning whether they should renew their contracts.

A successful recovery depends on both the technical response and the client experience. MSPs that set expectations early, communicate consistently and explain costs before they become surprises have a stronger chance of preserving client trust long after the systems come back online.

Where your recovery process breaks down

Most MSPs have skilled people. The trouble starts when those people work across disconnected tools in the middle of a crisis.

Tool sprawl slows everyone down

Backup, monitoring, ticketing and billing live in separate consoles. Your techs spend incident hours piecing together context instead of restoring systems.

Handoffs break

An alert fires in one tool, a ticket opens in another and a restore job runs in a third. Nothing links them, so no one can say what the attack touched or what’s still down.

Billing falls through the cracks

Emergency labor, restore time and after-hours work often go untracked. Someone reconstructs those hours from memory days later. You either lose margin or send an invoice the client doesn’t recognize, and you do it at the worst possible time.

Client updates depend on who’s free

Without a single ticket trail, communication comes down to whoever has a spare minute. Some clients get a call every few hours. Others hear nothing until the work is done.

Each of these problems looks small by itself. Together, they turn a recoverable incident into a trust problem.

5 signs your recovery process is costing you client trust

  1. Clients chase you for updates . They have to ask what’s happening instead of hearing from your team.
  2. Your team scrambles across tools. Technicians waste valuable recovery time piecing together information from disconnected systems.
  3. No one owns the full picture. Handoffs leave gaps in who knows what’s restored, what’s still down and what needs attention.
  4. Recovery bills come as a surprise. Emergency labor and after-hours work appear on invoices without clear explanations.
  5. Recovery ends without clear answers. Clients are left unsure what happened, what it cost or what you’ll do to prevent a repeat.

What good recovery looks like for an MSP

Strong recovery runs on one timeline and one source of truth. Everyone on your team sees the same facts, so your client hears the same story no matter who calls. Updates go out on a schedule you set, before the client asks.

When the incident closes, the invoice matches the work, because your team logged the work as it happened.

Track three numbers to see how you’re doing:

  • Time to first client update: How long after detection does the client hear from you?
  • Time to restore: How long until their critical systems run again?
  • Time to invoice: How fast can you send an accurate bill after closing the incident?

If any of these takes too long, you have a process gap that clients will notice. Closing those gaps takes more than working harder during an incident. It takes tools that share data from the start.

The fix: Unifying RMM, PSA and BCDR with Kaseya Trifecta

The 2026 Kaseya Cybersecurity Report found that two factors supported faster incident recovery : well-trained internal IT or security teams (35%) and integrated security and IT management tools (18%).

Kaseya Trifecta puts RMM, PSA and BCDR in one connected platform. The idea is simple. When your monitoring, ticketing and recovery tools share a workflow, your team stops stitching context together and starts fixing the problem.

Here’s how it maps to the breakdowns above:

  • Fragmented context: RMM, PSA and BCDR run on one workflow and one data set, so your techs see the full picture in one place.
  • Slow handoffs: Recovery events tie directly to tickets and endpoints. You know what’s affected and what’s restored without chasing updates.
  • Billing blind spots: Time and labor land in the ticket as the work happens, then flow to billing. Your invoice reflects what your team did.
  • Inconsistent updates: One auditable incident record gives every team member the same facts. Your client gets consistent communication, whoever is on shift.

This matches what the report found. Teams that recover quickly pair skilled people with tools that connect. Trifecta gives your people that connection.

Keep the client, not just the data

Surviving the attack is the baseline. Your clients expect it. What they remember is whether recovery felt organized, transparent and fair.

Faster resolution gives you the foundation for all of that. It shortens downtime, makes your updates credible and keeps your invoices accurate. Those benefits help protect renewals long after the incident closes.

Want to see how MSPs cut resolution times? Download the AI Playbook: AI in Action: How MSPs Achieve Faster Resolution Times.

Sponsored and written by Kaseya .

.NET 11

Hacker News
devblogs.microsoft.com
2026-11-10 11:01:27
Comments...
Original Article

Today, we’re excited to announce the release of .NET 11! This year’s release makes building modern applications faster, more productive, and has improvements across C# 15, ASP.NET Core, .NET MAUI, and Windows development. With hundreds of runtime optimizations, more responsive SDK tooling, and less overhead in everyday commands, you can spend less time waiting and more time creating. Build richer web and cross-platform applications, take advantage of new C# language features, and explore AI-powered development with improved tools and agentic capabilities.

.NET 11 support

.NET 11 is a Standard Term Support (STS) release with two years of support under the .NET support policy . STS and Long Term Support (LTS) releases have the same quality and servicing policies; the difference is the length of support. .NET 10 remains a supported LTS option. Stay current with servicing updates whichever release you choose.

Join us at .NET Conf, November 10-13

Explore .NET 11 with the product teams and community at .NET Conf 2026 . The conference includes product team sessions on November 10 and 11, followed by two days of community sessions.

Watch the Day 1 livestream, including the keynote , or browse the conference session playlist .

Announcing .NET 11

What’s new in .NET 11

Some of the changes we’re most excited for you to try:

  • C# 15 union types and closed hierarchies help you express the possible states of your application and handle them with compiler-checked patterns.
  • A Native AOT CLI host and a warm MSBuild server reduce overhead in everyday developer workflows.
  • ASP.NET Core brings asynchronous validation, OpenAPI 3.2, and new capabilities for Blazor and SignalR applications. Experimental Blazor AI components integrate with the Agent User Interaction Protocol (AG-UI) for advanced agentic web experiences.
  • Build AI-powered, agentic applications with Microsoft.Extensions.AI (MEAI) for model access, MCP for tool integration, and Microsoft Agent Framework (MAF) for agents and workflows.
  • Put agentic development tools to work with .NET Skills for .NET-specific guidance, .NET MAUI DevFlow for inspecting and testing running apps, and the .NET Upgrade canvas for reviewing modernization progress.
  • .NET MAUI adopts CoreCLR as its default runtime and improves XAML iteration and native controls.
  • The libraries add built-in Zstandard compression, simpler process execution, richer JSON support, and new ways to work with in-memory data without copying it first.

The what’s new in .NET 11 overview links to the full details. Here are the changes behind those headlines and how to start using them.

Languages

C# 15

C# 15 is the default language version for projects targeting .NET 11. Union types are one of its biggest additions: a value can be one of a declared set of case types, with conversions from those types and exhaustiveness checking in switch expressions.

Consider a product lookup that either finds a product or reports that it wasn’t found:

ProductLookup result = new Product(42, "Mechanical keyboard");

string message = result switch
{
    Product product => $"Found {product.Name}",
    ProductNotFound missing => $"No product with ID {missing.Id}",
};

Console.WriteLine(message);

public sealed record Product(int Id, string Name);
public sealed record ProductNotFound(int Id);
public union ProductLookup(Product, ProductNotFound);

The result type tells a caller which outcomes it needs to handle. There’s no need to use object or an unrelated base class just to put those outcomes behind one return type.

C# 15 also adds closed hierarchies . A closed class limits direct derivation to its declaring assembly, giving the compiler the information it needs to check patterns over the hierarchy. Unions are useful when you want to combine existing types; closed hierarchies fit models where you own the inheritance relationship.

Smaller language features help with everyday code, too. Collection expression arguments let you pass constructor or factory arguments without giving up collection expression syntax:

HashSet<string> names =
    [with(StringComparer.OrdinalIgnoreCase), "Alice", "ALICE", "Bob"];

Console.WriteLine(names.Count);

This prints 2 : the comparer controls equality, so "Alice" and "ALICE" are one entry.

Other additions include extension indexers and labeled break and continue . These features don’t require the preview language version. The separate memory safety work remains in preview ; see the C# 15 feature documentation for its opt-in requirements.

F# 11

F# 11 improves compiler memory use and reduces allocations in FSharp.Core collection operations. It also adds ways to bound concurrent asynchronous work, useful when a collection operation would otherwise start more work than a service or machine can handle comfortably.

The F# release notes distinguish the default-language updates from preview capabilities, including Runtime Async support for custom computation-expression builders.

Platform

SDK

The SDK now enables a Native AOT CLI host by default. Commands such as help and version queries can run without starting the managed CLI, and tool launches can avoid that startup path too. Commands that need managed execution still use it.

The MSBuild server also stays warm between CLI invocations by default, reducing repeated startup work. SDK installers on Linux and macOS are smaller through assembly deduplication.

File-based apps can grow across source files with #:include , and solution filters can be created and edited from the CLI. dotnet watch adds Aspire app-host integration, crash recovery, and device selection for mobile projects.

For teams using Microsoft.Testing.Platform, dotnet test gains run-level timeouts, failure limits, clearer progress reporting, and per-module results directories. The test runner matters: these switches aren’t interchangeable with the VSTest command-line options.

Container publishing adds reproducible image digests through SOURCE_DATE_EPOCH and avoids redundant layer uploads when the target manifest already exists. NuGet source configuration gains a minimum package publication age setting, which lets teams wait before newly published package versions become eligible for selection. This is an additional policy control, not a replacement for vulnerability checks or reviewing dependencies.

See what’s new in the SDK and tooling for command examples and configuration.

Runtime and performance

Performance work in .NET 11 reaches both the code you deploy and the tools you use to develop it. Stephen Toub’s Performance Improvements in .NET 11 takes a detailed tour through hundreds of runtime and library optimizations, with benchmarks and code examples.

The just-in-time (JIT) compiler improvements remove more redundant bounds checks and branches, improve devirtualization, and fold more operations into constants. For example, the JIT can optimize additional SequenceEqual calls when it knows the inputs at compile time. These changes improve generated code without requiring you to rewrite the corresponding application logic.

Native AOT interface dispatch uses a shared helper that reduces the code needed at interface call sites and improves throughput for interface-heavy workloads. Hardware support also expands, including FP16 instructions for Half operations on supported x64 and Arm64 hardware and new vector construction and composition APIs.

There’s useful work on diagnostics, too. In-process crash report logging can capture a managed stack trace, module information, and runtime state before a process exits. Previously available on mobile platforms, this reporting path now also supports Linux and macOS.

As always, measure the effect on your own application. Throughput, startup time, memory use, and deployment size depend on the workload and publishing options you choose.

Runtime Async has been a recurring theme throughout the .NET 11 previews. It moves asynchronous suspension and resumption into the runtime instead of relying on compiler-generated state machines.

One especially useful result is a clearer live call stack. Profilers and debuggers can show the asynchronous methods themselves instead of the infrastructure used to execute them. This is a distinction from exception stack traces, which already hide much of that infrastructure.

Runtime Async remains a preview feature. To try it in a project targeting net11.0 , add:

<PropertyGroup>
  <Features>runtime-async=on</Features>
</PropertyGroup>

You don’t need to enable EnablePreviewFeatures for this scenario. The .NET runtime libraries themselves are built with Runtime Async, but opting your application’s code into the new compilation model is a separate choice. See the Runtime Async documentation for its behavior and current guidance, and test your application’s dependencies and diagnostics before adopting it.

AI libraries and tools

The .NET 11 SDK includes an MCP server template . MCP gives AI applications a common way to discover and call tools and services. The template uses the official MCP C# SDK and includes a working sample tool, so you can start exposing your own functionality without first installing a separate template package:

dotnet new mcpserver -o MyMcpServer

For applications that consume AI services, Microsoft.Extensions.AI (MEAI) provides abstractions such as IChatClient and IEmbeddingGenerator . These libraries let you compose model access with dependency injection, caching, and OpenTelemetry using familiar .NET patterns. They’re available as NuGet packages, rather than features that require you to move all of your application code to a new framework version.

Microsoft Agent Framework (MAF) builds on these abstractions with agents that call tools and maintain conversation state, plus workflows that coordinate agents and application code. Connect agents to MCP tools to give them access to your application’s capabilities, and expose an agent through an ASP.NET Core AG-UI endpoint to build an interactive Blazor experience. The AG-UI hosting integration is currently prerelease.

For hands-on examples, start with .NET AI Essentials: The Core Building Blocks Explained and continue with our Microsoft Agent Framework walkthrough .

Libraries

The .NET libraries add capabilities that previously required extra setup, intermediate buffers, or custom helpers.

The Process API expansion includes one-shot methods to run a process and capture its output and exit status. More advanced APIs give you control over inherited handles, suspended starts, and process signaling. Build tools and developer utilities can spend less code on process plumbing while still inspecting how a child process finished. See Process API Improvements in .NET 11 for examples.

Zstandard compression joins the existing compression formats in System.IO.Compression . New span-based compression APIs support callers that manage their own buffers, and ZIP improvements include CRC32 validation when reading entries.

Four new in-memory stream adapters bridge existing data to APIs that accept a Stream : ReadOnlyMemoryStream , WritableMemoryStream , ReadOnlySequenceStream , and StringStream . For example, a pipeline’s segmented ReadOnlySequence<byte> can be read as a stream without first flattening it into a new contiguous buffer.

System.Text.Json adds support for C# unions, F# discriminated unions, and JSON Lines output from asynchronous sequences. F# union support uses reflection and doesn’t support source generation, trimming, or Native AOT, so check the documented limits before choosing it for a trimmed application.

LINQ adds FullJoin , which preserves unmatched elements from both inputs. This is useful for reconciliation work, such as comparing two inventories where you need to see missing items on either side.

The libraries also expand numeric types, DNS resolution, cryptography, and tracing configuration. The library overview covers the complete set of changes and marks APIs that remain experimental.

Entity Framework Core 11

Entity Framework Core 11 improves how your model becomes a query and how that query becomes SQL.

EF Core removes unnecessary joins in more reference-navigation and split-query scenarios, improves GroupBy translation, and translates the new LINQ FullJoin operator on relational providers that support it. These changes can simplify generated SQL while letting more queries stay in LINQ.

Complex types and JSON columns can now be used on entities mapped with table-per-type or table-per-concrete-type inheritance. Other improvements include migrations tooling and additional provider-specific JSON capabilities.

For SQL Server applications, EF Core adds support for vector indexes and approximate vector search. The SQL Server features and corresponding EF APIs are experimental. See the vector search documentation and limitations before evaluating them.

EF Core 11 requires .NET 11. When upgrading, check your database provider’s compatibility and the EF Core 11 breaking changes as well as the runtime changes.

Developer tools

The new dotnetup toolchain manager lets you install and update .NET SDKs and runtimes in your user account. It’s currently in public preview and helps you manage side-by-side versions and keep up with servicing updates.

.NET Skills gives coding agents task-specific guidance from the .NET team. Our .NET Skills introduction explains how to add these skills to your coding agent.

The experimental .NET MAUI DevFlow toolkit exposes a running app’s visual tree, screenshots, and interaction tools, so an agent can inspect and test the UI rather than work only from source code.

For modernization, the .NET Upgrade canvas gives you a visual view of a GitHub Copilot upgrade session. Review assessment findings and dependency compatibility, follow implementation tasks, and monitor failures and progress as the upgrade agent works. Our modernization walkthrough in the GitHub Copilot app covers the workflow from assessment through execution.

Workloads

Web: ASP.NET Core and Blazor

Application types are most useful when the rest of the stack understands them. ASP.NET Core supports C# unions wherever it uses System.Text.Json , including JSON request and response bodies in Minimal APIs and MVC. Generated OpenAPI documents describe the union’s alternatives with an anyOf schema.

This support applies to JSON bodies, not to route, query, header, or form binding. When multiple union cases have the same JSON shape, configure a classifier so deserialization can distinguish them. The ASP.NET Core union documentation explains those boundaries.

Validation also becomes more practical for rules that need to do I/O. Asynchronous validation works with the new asynchronous DataAnnotations APIs, so a validator can await a database lookup or a remote call instead of blocking a thread. Minimal APIs and Blazor forms can use this support.

OpenAPI 3.2 is now the default for generated documents. Among other improvements, it lets the document describe the per-event payload of a server-sent event stream. If a client generator or another part of your toolchain doesn’t yet support 3.2, you can explicitly select an earlier document version.

For long-lived connections, SignalR authentication refresh lets a connection refresh authentication without reconnecting. Blazor Interactive Server components can receive the updated identity and react when claims change.

Blazor adds capabilities for both statically rendered pages and interactive applications.

The new CacheView component caches the rendered output of a component subtree during static server-side rendering. On a cache hit, Blazor replays the markup without creating those child components or running their lifecycle methods. That gives you a smaller unit of caching for expensive, mostly static sections of a page.

Interactive Server apps can opt into automatic circuit pause when a browser tab becomes inactive . After a configurable delay, pausing frees the server memory and SignalR connection held by an inactive user. The feature requires an additional package and explicit configuration; upgrading doesn’t silently change your application’s circuit behavior.

Forms gain client-side validation for static server rendering and asynchronous validation support. QuickGrid and Virtualize add ways to move to a particular item, useful when returning a user to their place in a large collection.

Blazor also adds components for agentic user interfaces. The new Microsoft.AspNetCore.Components.AI package includes components for streaming chat, tool rendering, approval flows, and shared UI state. Basic chat works with any IChatClient . For advanced experiences with a remote agent, the AG-UI .NET integration carries streamed responses, tool events, approval requests, and shared-state updates between an ASP.NET Core agent endpoint and the Blazor UI.

The Blazor AI components package is experimental and remains prerelease throughout .NET 11. It’s an opportunity to try the direction and give feedback, not a stable part of the ASP.NET Core shared framework. See the Blazor AI components documentation .

The AG-UI .NET SDK introduction covers the protocol’s client and server APIs. Build Agentic UI with the new Blazor AI components puts them together in a working app.

See what’s new in ASP.NET Core for the Blazor features, configuration examples, and compatibility details.

Client: .NET MAUI

.NET MAUI in .NET 11 makes CoreCLR the default runtime across its platforms. The move to CoreCLR brings mobile and desktop apps onto the same runtime foundation as other .NET workloads. On Apple platforms that don’t allow JIT compilation, the runtime uses precompiled code and the interpreter rather than generating native code at runtime.

Native AOT is an opt-in publishing alternative; its Android support remains experimental. Review the platform-specific runtime guidance and test your app’s libraries when choosing a deployment model.

The UI development loop gets attention, too:

  • XAML Incremental Hot Reload is a preview feature in .NET 11. It updates live instances of pages and controls, including supported structural edits, without requiring you to navigate away and back. It’s enabled by default in Debug builds.
  • Implicit XAML namespace declarations remove the need to repeat the standard namespace declarations at the root of every file.
  • Windows uses the new CollectionView2 handler by default, while Android Shell adopts a handler-based architecture.
  • New mobile test templates and dotnet test device selection bring testing into the CLI workflow.

These are meaningful runtime and handler changes, so exercise navigation, custom handlers, and trimmed publishing as part of your upgrade. The optional Microsoft.Maui.Controls.Compatibility package no longer ships; apps that still reference it need to migrate off it.

.NET MAUI follows its own support policy , separate from the .NET runtime’s STS and LTS lifecycle.

Windows: WinUI, Windows Forms, and WPF

For new Windows desktop apps, WinUI 3 is the recommended native UI framework, pairing C# and XAML with modern controls and the Fluent Design System. It’s delivered through the Windows App SDK , which also makes modern Windows APIs available to existing WPF and Windows Forms apps.

To add UI tests, see UWP and WinUI 3 apps: UI testing with MSTest .

Windows Forms in .NET 11 adds an opt-in modern visual styles mode that you can select at the application or control level. It also adds ways to react to system visual and accessibility settings, defer revealing a form until it’s ready, and suspend painting during bulk updates.

These controls let you introduce refreshed rendering where it makes sense for your application instead of treating a framework upgrade as an automatic visual redesign.

WPF updates focus on reliability, including fixes for Fluent window backdrops, window manager failures, and weak-event cleanup. Self-contained Windows publishing also includes a native dependency needed by apps that load mixed-mode WPF assemblies.

Get started and plan your upgrade

Install the .NET 11 SDK . Use a compatible, up-to-date Visual Studio 2026 installation, or Visual Studio Code with C# Dev Kit .

To create and run a console app:

dotnet new console -n HelloDotnet11 -f net11.0
dotnet run --project HelloDotnet11

You can replace the generated program with either of the C# examples above to try the new language features.

For an existing application, plan the upgrade across your development and deployment environments:

  1. Update the SDK selection in global.json if your repository pins it, and install the matching SDK on development machines and build agents.
  2. Update target frameworks to .NET 11, preserving platform-specific target framework suffixes where applicable. Update packages and workloads to compatible versions.
  3. Review the .NET 11 breaking changes , including the updated minimum CPU requirements . Installing a new SDK alone doesn’t retarget your app.
  4. Run your tests and measure the application under a representative workload. Validate your actual publishing mode, container base images, native dependencies, and deployment hosts.

Upgrading from .NET 8 or .NET 9

.NET 8 and .NET 9 reach end of support on November 10, 2026. Move to a supported release to continue receiving fixes. Choose .NET 11 for the latest capabilities, or .NET 10 if its LTS lifecycle fits your requirements better. See the .NET support policy for dates and servicing requirements.

If you’re upgrading from a .NET 11 release candidate, update to the final SDK, runtime, and compatible package and workload versions rather than staying on a prerelease build.

Thank you for building .NET with us

.NET 11 is the work of over 7,000 contributors . Thank you to everyone who contributed code, tested previews, reported issues, and helped us make better design decisions throughout the year. Your feedback across the previews and release candidates helped shape what we’re shipping today.

The .NET ecosystem continues to grow, with more than 589,000 unique packages on NuGet and over 1.1 trillion package downloads .

Collage of .NET 11 contributors' avatars

Download .NET 11 , try it with an application you know well, and join us at .NET Conf to learn directly from the people building it. Share your results and questions in the .NET GitHub discussions .

Category

Topics

Author

.NET Team

.NET is the free, open-source, cross-platform framework for building modern apps and powerful cloud services.

Palantir hires a former Democratic senator as it faces scrutiny in new Congress

Hacker News
text.npr.org
2026-11-10 10:59:34
Comments...
Original Article

Tech companies are expecting a wave of scrutiny from Democrats for the industry's ties with the Trump administration when they take over Congress in January. In anticipation, many are hiring former Democratic lawmakers and aides to make their case to the incoming House and Senate majorities.


Related Story: NPR


Among the latest to make that move is Palantir , which has hired former Sen. Jon Tester, a colorful Montana Democrat who's also an organic farmer.

"My agreement with Palantir is advisory in nature, it is not lobbying," Tester, who lost reelection to the Senate in 2024, told NPR in an interview.

The secretive American software and artificial intelligence company has drawn the ire of Democrats in Congress during President Trump's second term. Palantir — named by billionaire founder Peter Theil after the mythical "seeing stone" from J.R.R. Tolkien's The Lord of the Rings — has been accused of abetting mass surveillance on Americans and immigrants.

"Perception is reality in Washington, D.C. and in politics in general," said Tester. "But the fact is, I think Palantir has got a good story to tell, and they need to tell it. And hopefully folks will be receptive to it."

Palantir has long denied claims it aids mass surveillance on the American public — saying it doesn't gather or manipulate data at all, but instead creates tools for government agencies and private companies to organize and optimize their own information. The company has said it is committed to "protecting privacy and upholding liberal democratic values."

Earlier this year, while in the minority, Sen. Ron Wyden, D-Ore., along with 30 other Democratic lawmakers demanded answers about Palantir's contracts with the Department of Homeland Security and whether its tools are part of efforts by the federal government to surveil Americans. Palantir denied the accusation and said it is "neither conducting nor enabling mass surveillance of American citizens," but Wyden wasn't fully satisfied with its response, according to his Senate office.

"Senator Wyden has a number of questions about Palantir's work to facilitate the Trump-Vance abuse of government data that he intends to ask again as chairman of the Finance Committee," Wyden's staff wrote in a statement to NPR. "If Palantir is not responsive next year, compulsory processes will be on the table."

It's not a coincidence that tech companies are turning to Democrats to help burnish their reputation, said Aya Ibrahim, a senior fellow at the AI Now Institute and a former State Department official.

"I think at the end of the day, these companies have an inordinate amount of money and they will try and put it wherever they can in order to stave off any real accountability," Ibrahim said.


Related Story: NPR


During Trump's second term, Palantir's CEO and co-founder Alex Karp — a self-described liberal — has been highly critical of Democrats on issues like immigration and AI.

"I would say to my Democratic friends, also of which I still have, I hope many," Karp said in an interview with Axios in 2025 specifically referencing his support for much more restrictive immigration policies. "You have to grow a spine because a lot of these people actually agree with me in private."

During his 18 years in the Senate, Tester was an outspoken critic of the PATRIOT Act that passed shortly after the 9/11 attacks that expanded the Justice Department's surveillance powers. When asked whether his concerns over government surveillance remain and whether he has the same concerns with his new employer, Tester said Palantir is different and that the company doesn't build "big databases" or trade in private data.

"I wanted to do away with the Patriot Act because it was about privacy," Tester said. "It was about making sure that I am not being watched by anybody, including Big Brother. And by the way, I've talked to many people within Palantir. They believe the same way I do. This is an organization that believes in privacy."


Related Story: NPR


Last year, over a dozen former Palantir employees criticized the company over its $30 million contract with U.S. Immigration and Customs Enforcement to create a tool that provides "near real-time visibility" into the movement of migrants. The former employees argued the company violated its own code of conduct by working with the Trump administration on such products.


Related Story: NPR


Valued at over $350 billion, Palantir currently holds $2 billion worth of federal contracts, according to government records . The lion's share are with the Departments of Defense, Homeland Security and State — but the software firm also works with the Departments of Agriculture, Veterans Affairs and Health and Human Services .

Tester said he'll be focused on the government services side of Palantir's work.

The former Montana senator called the midterm election results a blue "tidal wave" after two years of a Congress that gave him "great disappointment."

"It is going to make a difference as far as the policies that are being advocated for," Tester said of the upcoming Congress. "I don't think you're going to see the kind of aggressive tactics that were taken forth by ICE moving forward."


Transcript

LEILA FADEL, HOST:

The tech industry is bracing for a new Democrat-controlled Congress. A company that is likely to face scrutiny has just hired a prominent Democrat. NPR's Luke Garrett reports.

LUKE GARRETT, BYLINE: Palantir is a secretive software firm with $2 billion worth of contracts across the federal government. The majority are with the departments of Defense and Homeland Security. Last year, former employees told NPR the company's products gave DHS near-real-time visibility into the movements of migrants in the U.S. Now some Democrats have vowed to investigate Palantir's work with the Trump administration and whether it's helping the government conduct mass surveillance. Jon Tester, who was a Democratic senator for 18 years, has been hired to advise the company.

JON TESTER: You know, a perception is reality in Washington, D.C. and in politics in general. But the fact is that I think Palantir's got a good story to tell, and they need to tell it. And hopefully folks will be receptive to it.

GARRETT: The company was founded by billionaire investor Peter Thiel, who named Palantir after the mythical seeing stone from "The Lord Of The Rings." Its CEO, Alex Karp, is a self-described liberal who has worked closely with the Trump administration, and he's been highly critical of Democrats on issues like immigration. Here's Karp on "The Axios Show" last year.

(SOUNDBITE OF TV SHOW, "THE AXIOS SHOW")

ALEX KARP: I would say to my Democratic friends, also of which I still have, I hope, many, there - you have to grow a spine because a lot of these people actually agree with me in private.

GARRETT: Tester tells NPR he'll be focused on Palantir's work streamlining government services for farmers and veterans.

TESTER: And I think that's what it's about. I mean, it's about saving money. It's about making sure government works for people.

GARRETT: As a senator, Tester aggressively opposed the Bush-era PATRIOT Act, which expanded government surveillance. When asked if he had the same surveillance concerns about Palantir, Tester said he didn't.

TESTER: I've talked to many people within Palantir. They believe the same way I do. This is an organization that believes in privacy.

GARRETT: Tester's employment at Palantir comes as other tech companies have also gone on a hiring spree of former Democratic lawmakers and aides in anticipation of changing power in Washington. Senior fellow at the AI Now Institute and former State Department official Aya Ibrahim says that's not a coincidence.

AYA IBRAHIM: I think, at the end of the day, these companies have an inordinate amount of money. And they will try and put it wherever they can in order to stave off any real accountability.

GARRETT: Ibrahim says the midterm results are an opportunity to check the growing power of the tech industry.

Luke Garrett, NPR News, Washington.

Smart home devices should work without the internet

Hacker News
docodethatmatters.com
2026-11-10 10:25:20
Comments...
Original Article

4506 words 23 min read

Download audio

Scissors cutting an ethernet cable under the words No Internet, No Problem.
Scissors cutting an ethernet cable under the words No Internet, No Problem.

AI;DR: I wrote the first draft, AI helped me edit and rewrite it, and I made the final pass. The rules, setups, and talks are my own.

TLDR; Nothing core in my house depends on a vendor’s server. If the internet goes down, the house keeps running. That’s been rule one for about ten years, and my other rules came out of it. This post has the rules, then both talks I’ve given on home automation, slide by slide.

Why local

My Nest integration worked until Google broke the API. That’s the failure I plan around now. The talks have a few more: a Samsung fridge showing a TLS certificate error on its own screen, and a Camp Chef grill controller that needs Wi-Fi to show you the temperature.

Everything that matters runs on hardware I own. That’s Tasmota on ESP boards, an MQTT broker, and Node-RED on a Raspberry Pi. I do use some cloud services, mostly Alexa and a few AWS ones. Alexa is just another way to flip a switch. If it’s down, the wall switches and the wall dashboard still work.

The rules

From the first talk, restated in the second:

  1. No internet, no problem. Core stuff has to work with the internet unplugged. Alexa can be a way in, but never the only way.
  2. Don’t remove the old way while adding the new one. If someone tapes a wall switch on so a smart bulb keeps power, I skipped this rule.
  3. Be agile. Rooms get used differently and people move in and out, so it all has to be cheap to change.
  4. Check your automations. I once had four scheduled triggers hitting the same garden pump.
  5. Exceptions must be exceptional. I can break a rule, but only for a reason I’d still agree with six months later.

Added after year five, once more people lived in the house:

  1. A cloud device needs an API with logs or it doesn’t get installed. I don’t want a black box in the house.
  2. Config lives in one place instead of five vendor apps.
  3. More than one way in: an app, Alexa, a QR code, or an NFC tag.
  4. If I keep doing the same steps, they become a routine.
  5. Devices talk pub/sub over MQTT instead of point to point.
  6. No batteries unless they last a year or more between changes. Nobody wants to swap a door sensor battery at 2am.

The build I get asked about most is the Tasmota sprinkler controller . It’s in both talks, and so is the garage door setup, which has been running about as long.

Talk One: Home Automation

Home Automation, for fun and convenience

Nobody needs any of this. I do it because I like building things that work in the background, and every automation is a small puzzle with a real payoff when it’s solved.

Connected Everything collage of icons

This is the backdrop for the whole talk. Phones, laptops, tablets, thermostats, and locks all talk to clouds that may or may not be up when you need them. Connectivity is fine. Just know what you’re opting into before you plug it in.

Nest thermostat, Amazon smart plug, and Yale smart lock keypad

Most people start here with a thermostat, a plug, and a lock, and that’s a fine place to start. Each one ships with its own app and its own account.

Privacy, Integration/Flexibility, and Cost triangle

Every device you add lands somewhere on this triangle. A cloud camera is cheap and convenient, and you pay for it with privacy. A switch I flash myself takes more setup time, and in return I can integrate it with anything. I figure out where a device lands before it goes in the cart.

A light switch taped on with a note reading Leave Switch On, This is BAD

Someone (often me) automates a light and then has to tape the wall switch on so the smart bulb always has power. If you’ve ever walked into a room and the switch did nothing, this is why.

Wemo Wi-Fi Light Switch retail box

The better fix for the taped switch is an in-wall Wi-Fi switch like this one. The wall switch keeps working the normal way and I still get a hook to automate. It takes more work to install than a smart plug, but nobody has to retrain their hand.

No Internet, No Problem: scissors cutting an ethernet cable

Rule one, and the one I don’t bend on. If the internet goes down, my lights still turn on.

Must Be Agile: sticky notes on a planning board

Home automation is never done. Rooms get used differently, people move in and out, and new devices show up. Whatever you build has to be cheap to change.

Node-RED flow for Garage Cool Off logic

The garage cooling flow starts from a manual trigger and checks whether the door is closed. From there it opens the door, waits, flips the fan on, or sends a notification if cooling is already running. It’s a small flow and it has kept the garage from baking more than once.

Node-RED garage sensor flow feeding Grafana, plus an Opens counter and On Status chart

The door sensor and reed switch both report into a transform step that sets a global garage-closed flag and logs to Grafana. Below that is the chart from a few real days: 21 opens, with spikes showing when each one happened. Most people skip this part, and it’s the part that tells me whether I left the garage open without opening an app.

Node-RED scheduled injects feeding a Garden Water Pump node

Four scheduled triggers all point at the same pump node. It’s easy to end up with five automations fighting over one device. Every so often I look at the flow and ask whether they still make sense together.

Captain Jack Sparrow meme: The Rules, more of what you'd call guidelines than actual rules

I’ve broken every one of these rules plenty of times. They’re guidelines.

Node-RED logo, a Phillips Hue IFTTT-style applet, and an Alexa routine editor

Here are three ways to say “event in, action out.” Node-RED is my main tool. Alexa routines and IFTTT-style community applets cover the cases where I don’t want to build something from scratch.

MQTT publish/subscribe diagram with a temperature sensor, broker, and two subscribers

MQTT is what keeps the pieces decoupled. The temperature sensor publishes and doesn’t care who’s listening. A phone and a backend system can both subscribe to the same topic, and the sensor needs no extra logic. The sprinkler controller in the Tasmota post is built on the same pattern.

Sonoff Mini Wi-Fi DIY smart switch and a Node-RED fireplace flow

The Sonoff Mini is small enough to hide inside the fireplace’s existing wiring. The flow lets either the dashboard or Alexa flip it. It makes the “memorable automations” list later because a fake fire you can turn on by voice makes a good party trick.

Sprinkler controller wiring, a 3D PCB render, the Tasmota web UI, scheduled nodes, and a bare PCB layout

The whole sprinkler build fits on one slide: the relay and ESP module in the enclosure, the 3D board render, the Tasmota UI with BME280 sensor readings, the Node-RED schedule feeding the pump, and the finished PCB layout. The sprinkler post has the full writeup, including why I picked Tasmota over custom firmware.

The Rules Guidelines Recap bullet list

The recap slide is the whole talk in five lines. I break the first one (don’t introduce a new way while removing the old way) carelessly more often than the others, and I regret it every time. The last one keeps the other four honest. “I was in a hurry” doesn’t count as exceptional.

Memorable Home Automations bullet list

The highlight reel: lights that blink when my heart rate is too low, sprinklers that skip watering if rain is coming, a garage that opens when my phone shows up but the car doesn’t, light and water for an indoor garden, an air quality sensor that kicks on a fan, backyard landscaping lighting, living room LED strips that shift between warm and cool, washer and dryer notifications based on power usage instead of a vendor app, 3D printer status lights, AC and heating monitoring, and a pile of AWS services (Alexa, Polly, S3, IoT, Cognito) stitched together along the way. The Nest integration gets a eulogy: “until Google broke the API.” Every home automation person writes that sentence eventually.

Questions? Feedback!

That was talk one. Almost everything on the “memorable automations” slide later picked up a new failure mode or got replaced, which is why there’s a sequel.

Talk Two: Home Automation, The Sequel

Home Automation, The Sequel

Enough time passed between the two talks that I had a different list of problems to talk about.

Meme: When robots take over the world, Marvin the android saying he could calculate your chance of survival but you won't like it

More devices means more decisions made without me in the loop. That’s a little unsettling, though mostly harmless.

Recap section divider

First, a quick pass back through what talk one covered.

Connected Everything collage, reused from talk one

Same slide as before, with more icons on it now.

A printer-pickup note taped to a pole, a Samsung fridge showing a certificate warning, and a Camp Chef grill WiFi controller

Everyone else is living this too. A fridge’s smart display throws a TLS certificate error. A grill controller needs Wi-Fi to tell you the temperature. Someone taped a note to a pole about an internet-connected printer they forgot to log out of. These are real devices.

The Rules bullet list recap

These are the must and should rules from talk one with slightly tighter wording. I restated them because part of the audience hadn’t seen the first talk.

What has changed? That's why I'm here today

The rules stayed the same. The conditions they had to survive got harder.

Einstein quote: We cannot solve our problems with the same thinking we used when we created them

A lot of my original setup assumed one person lived in the house. When that stopped being true, I had to patch a single-user system into a multi-user one, and the next few slides are what that looked like.

Some of those problems: more foot traffic, more keys needed, longer absences, water flooding

More people means more foot traffic and more physical keys to manage. Longer trips away raised the stakes on anything that could fail without anyone noticing. A water flooding scare is what finally got me to take leak and presence detection seriously.

Captain Jack Sparrow meme again: The Extended Rules, still guidelines

Same joke with a new rule set. The first rules came after year one. These came after year five.

The Extended Rules bullet list

These are rules 6 through 11 at the top of this post. I wrote them after the house went from one person to several.

Examples section divider

Next up are the concrete builds, which is my favorite part of any talk.

A DIY motorized outdoor rig, a UV grow light over plant leaves, and a purple UV strip under cabinets

A motor-and-PVC-pipe rig for outdoor lighting, a UV grow light clipped onto a houseplant, and a UV strip under the cabinets for passive sanitizing. Each one solves a small, specific problem, and that’s where home automation earns its keep.

Sprinkler build collage, reused from talk one

Same sprinkler slide as talk one. It’s back because it’s one of the few builds that never needed a rewrite.

A wall-mounted presence sensor, a robot vacuum on carpet, and an AirGradient air quality sensor kit with dashboard

A sensor that sits on a credenza, a robot vacuum that does the floors without anyone asking, and an AirGradient kit I assembled from a CO2 sensor, a particulate sensor, and a microcontroller, with its own small dashboard. The air quality kit has given me the most peace of mind of anything here.

Wall-mounted tablet dashboard next to a Nest thermostat set to 80

This dashboard has replaced more apps in the house than anything else. It has a garage door toggle, a side door unlock, a front lock toggle, all lights on or off, brightness sliders, a coffee bar color picker, and a warm-to-cool slider for the living room. It all runs on one cheap tablet mounted next to the thermostat, so nobody has to dig through five apps.

A large wall-mounted TV with warm backlighting glowing against the wall

The ambient lighting behind the TV is tied into the same automation system instead of having its own remote. It’s a small change with a big quality-of-life payoff.

A Schlage deadbolt with a physical key and a black touchscreen smart lock with multiple unlock methods

Smart locks came out of the “more people, more keys” problem from a few slides back. The newer lock takes a password, the app, a keycard, or a mechanical key, so everyone in the house can use whatever they’re comfortable with.

Hardware section divider

The next few slides are the parts bin, for anyone who wants to build this themselves.

ESP32 D1 mini board, a dual-outlet smart plug, and a Raspberry Pi 4

The ESP32 D1 mini handles anything custom. The smart plug is the off-the-shelf shortcut when I don’t need custom. The Pi 4 runs Node-RED and Grafana.

A 100ft RGB LED strip kit, a tray of TO-220 power transistors, and relay modules with header pins

LED strips for ambient lighting, power transistors for higher-current loads, and small relay modules so a microcontroller can switch mains voltage safely.

A resistor kit, a DIY wire and cable color kit, and an electrolytic capacitor kit

The rest of the bin: a resistor assortment, color-coded wire so I can trace a circuit later, and a capacitor kit for smoothing and timing.

Software bullet list: NodeRed, Grafana, Tasmota, Telegram, Python, Javascript, Vendor specific Apps

Node-RED handles flow logic and Grafana gives me visibility. Tasmota is the firmware on anything I flash myself, Telegram sends notifications, and Python or JavaScript fills in the glue code that doesn’t fit cleanly into a flow.

Node-RED flow for the Garage tab with sensors, Tasmota topics, Telegram notifications, and light counters

Here’s the garage flow today. The door sensor and reed switch feed a transform into Grafana and a global closed state. Toggle nodes publish straight to Tasmota command topics. Notifications fork to a Telegram sender and an audio chime, and a light-on counter resets at midnight. The editor tabs across the top (Lights, Sensors, Garage, Sprinkler, NFC Tags, Door Lock Security) show how much has grown since the single garage cooling flow in talk one.

Grafana dashboard grid with humidity, temp, dew point, pressure, gas, air quality, energy, opens, and on-status panels

I check this dashboard when I want to know if everything is okay. Humidity, temperature, dew point, pressure, and gas readings are on one side, and energy usage, door opens, and on-status history are on the other. I built it because I got tired of guessing.

UX section divider

Dashboards and Grafana panels work for me. Everyone else in the house just wants the light on.

Close-up of the wall dashboard status screen, a sheet of NFC tags with a QR code, and an Echo Dot

Here’s the “multiple ways to interact” rule in hardware. The wall tablet is for whoever is standing near it. NFC tags and a QR code give a tap-to-trigger shortcut, and the Echo Dot is for anyone who would rather talk to the house.

Tools section divider

Last section: the tools I use to build and debug all of the above.

A soldering iron and stand, a 3D printer mid-print, a digital multimeter, and a precision screwdriver kit

A soldering iron for permanent connections, a 3D printer for enclosures and brackets you can’t buy, a multimeter for when something isn’t working, and a precision screwdriver kit for devices the manufacturer didn’t want opened.

Questions? Feedback!

That’s both talks, ten-plus years apart. The rules barely changed between them, while the list of problems they had to handle kept growing.

A third talk is coming, and this one is built around agentic use cases. The same rules still apply when an AI agent is the one flipping the switches, and I expect a few new ones once it is.

What readers told me

I shared the “no internet, no problem” rule on LinkedIn and asked for the most pointless internet dependency people had found in a device. Dozens of people answered. A Hacker News thread added more. Here’s what came back.

Everyone has one

Most examples were basic functions locked behind an app, an account, or a server:

  • A fridge whose temperature can’t be changed because of a bug in the manufacturer’s phone app.
  • A TV that can’t even switch inputs when the internet is down, and another that has to be signed in before it works as a plain HDMI monitor. One reader’s older smart TV has dead apps but still works as a regular TV, which is how a device should fail.
  • A heating system whose app doesn’t work from the local network.
  • A kitchen vent and a dishwasher that need the internet even when you control them from Home Assistant.
  • A smart plug that can’t be set up on an isolated network.
  • Noise-cancelling headphones that search for a Bluetooth device forever, so you can’t just turn on the noise cancelling.
  • Synthesizers and MIDI keyboards that need a cloud login for first use or firmware updates.
  • A meat thermometer that only worked through its app and stopped working when the company went out of business.

The meat thermometer bothers me most. The hardware outlived the company, and it stopped working anyway.

Rules readers added

  • Offline first, with the internet for extras. A device should do its main job on its own.
  • Treat every third-party dependency as a risk. APIs change, so plan a local fallback or a clear degraded mode. One mobile developer works the same way: the core action works offline or from cache, and only the extras wait for a connection.
  • Decide what must work offline. My answer is turning things on and off, temperature and safety controls, and anything a guest has to use without learning an app. As one reader said, if a visitor can’t turn something on or adjust the temperature without an app account, the design has failed.
  • A stricter version of my first two rules: everything core works with the Wi-Fi or the automation server shut down, and smart features never take away the dumb ones. The wall switch should control the light directly and let automation flip it. A switch that only sends a request to the automation fails. That reader says my sprinkler controller fails this bar too. The only sprinkler controller they’d found with a local API and full control on the device itself was RainMachine, which is gone.
  • Clean up when you throw things away. Remove a connected printer from your account first. An abandoned connected device can be an easy way in for an attacker.

Practical tips

  • Use local protocols. One reader recommends Zigbee and Z-Wave over Wi-Fi, because a switch that doesn’t need the cloud tends to behave the same year after year. Another uses Zigbee for the smart plugs that can’t be set up without internet.
  • Let an LLM find the firmware. One reader buys the cheapest hardware that does the job, ignores reviews that complain about the app, and asks an LLM for local-first custom firmware once it arrives. That has worked for their switches, a thermostat, an air quality monitor, a thermometer, and a window fan. They’d have paid about 2.5x for hardware that was local out of the box.
  • Old Nest thermostats have a way out. No Longer Evil is open source firmware for Nest Gen 1 and Gen 2 thermostats.
  • Smart TVs can be tamed. Reset the TV and never connect it to the network, and the input problem goes away.
  • Remote access is the cost of staying local. I use Tailscale on the router and keep the individual devices off the tailnet. One reader ran OpenVPN on OpenWrt, which worked but felt clunky, and is now trying Tailscale.
  • There’s a gap to fill. One reader would happily pay for a pre-built, open “works with everything” Raspberry Pi image with MQTT. DietPi and OpenWrt come close and have a small footprint, but you need some understanding to get going. Another wanted a hub that ships with the house, like a water heater or a router. Home Assistant sells hub hardware that’s close to that.
  • Right to repair is the bigger fight. Readers pointed to the right-to-repair movement and groups like the FULU Foundation , which work to keep companies from locking you out of what you bought.

Counterpoints

Connectivity has real uses. A connected meat thermometer lets you watch the game while the steak cooks. The same reader also had an oven decide to update its software in the middle of cooking. One reader pointed out the business model behind all of this: companies would rather sell you a service than a product. Another expects the shift away from internet-connected devices to come from resilience worries rather than consumer complaints, since enough connected homes make a target. And one skips connected appliances entirely, keeping only computers and phones online.

Devices I’ve used

(This section has Amazon affiliate links. If you buy through them, I may earn a small commission at no extra cost to you.)

These are the parts from my home automation builds, grouped by project.

Sprinkler controller

Gear Purpose Buy
HiLetgo ESP8266 NodeMCU board (3 pack) Wi-Fi microcontroller that runs Tasmota Amazon
SSD1306 OLED screen Status display for the sprinkler state Amazon
Inkbird SSR-40DA solid state relay Switches the 24 VAC sprinkler valve Amazon
BME280 sensor Temperature, humidity and pressure Amazon
24 VAC power supply Powers the sprinkler valve Amazon

Lights, switches and plugs

Gear Purpose Buy
Martin Jerry smart dimmer switch (Tasmota pre-flashed) Wall light switch that runs Tasmota out of the box Amazon
Martin Jerry humidity fan switch Runs the bathroom fan when humidity gets too high Amazon
Sonoff S31 smart plug Power watchdog for the cable modem Amazon
Serial-to-USB adapter Connects an ESP8266 to your PC for flashing Tasmota Amazon

Garage door

Gear Purpose Buy
Raspberry Pi 3 Runs Docker and the web API Amazon
SunFounder 2-channel 5V relay module Simulates the button press to toggle the door Amazon
LiftMaster wired control panel (78LM, replaces the 41A5273-1) Bypasses the anti-tamper wiring Amazon

Around the house

Gear Purpose Buy
GL.iNet Flint 2 router (GL-MT6000) Runs OpenWrt and an MQTT broker locally Amazon
Cheap tablet Mounted on the wall as the dashboard Amazon
Lefant robot vacuum Cleans the floors Amazon

Show HN: Valencia, Spain in Sim City/Isometric View

Hacker News
tinyvalencia.com
2026-11-10 10:12:16
Comments...
Original Article

Tiny València

An isometric pixel-art map of València, in the spirit of SimCity and of Isometric NYC . Every building is a real one, drawn from above at the same angle, block by block.

The whole municipal term is painted, from the huerta to the Albufera, except a few small huerta exclaves where there's no 3D imagery to paint from.

How it's made

Real 3D city data is rendered from a fixed isometric camera. An image model trained on a hand-picked pixel-art style then repaints it, tile by tile, each tile continuing its painted neighbours so the city stays seamless. The sea, the port basins and the Albufera are drawn in the same style.

Getting around

  • Drag to move, scroll or pinch to zoom, double-click to zoom in
  • R somewhere random · H whole map · F full screen · / search · G play
  • The address bar always holds the current view, so any link you copy opens right here.

Data

Buildings © Dirección General del Catastro · Aerial photo & terrain © IGN (PNOA, MDT05), CC BY 4.0 · Roads, boundary, coast & search © OpenStreetMap contributors, ODbL · 3D reference: Google Photorealistic 3D Tiles via Cesium ion.

Beyond the compiler: Making IBM i run modified native code - Program Validation Value

Lobsters
blog.silentsignal.eu
2026-11-10 09:48:26
Comments...
Original Article

Why this matters

IBM i does not treat an application program as a normal file that happens to contain POWER instructions. A compiler produces Machine Interface (MI) code, IBM i’s stable instruction-level boundary, and the system translates it into a native form. The generated native code contains checks that support the IBM i object and tagged-pointer model.

Changing those instructions can make IBM i execute behavior that was not present in the MI input. Earlier Below MI research examined the wider consequences on IBM i V7R4. Here I focus on the IBM i 7.5 Program Validation Value (PVV) , a 32-byte value stored with a saved program.

I reconstructed the 32-byte PVV calculation and matched all 1,223 known-valid values. The reconstructed calculation derives its HMAC key entirely from saved program attributes and fixed Licensed Internal Code (LIC) constants; it contains no separate secret for origin authentication. IBM i applies separate digital-signature checks where required. In controlled USER-state programs—the ordinary, non-SYSTEM execution mode—recalculating PVV and the separate save-file checks allowed selected native instruction changes to survive restore and resave. A disposable CrackMe produced the expected changed output, demonstrating execution.

USERB1, an ordinary test account without special authorities, restored a USERB1-owned, PVV-repaired MEMDUMP program through IBM’s Restore Object List ( QSRRSTO ) API, and a resave preserved its modified native instructions. Its executable payload matched byte-for-byte the payload used in a controlled runtime test. In that test, MEMDUMP ran as USERB1 and read from a known-address USER-domain buffer in a cooperating job running under QSECOFR, IBM i’s security-officer profile. Other controls showed IBM i rejecting unsigned SYSTEM and INHERIT program-state variants and enforcing the SYSTEM-domain access boundary.

My previous article covered the outer save file (SAVF) container: its per-record checksums and global checksum. During restore, IBM i also calculates PVV and compares it with four values stored in the saved program.

The USER-state controls ran under the test system’s existing restore-policy system values ( QVFYOBJRST=3 , QFRCCVNRST=1 , and QALWOBJRST=*ALL ) at QSECURITY 40 , which enforces resource security and integrity protection.

Program validation and research approach

SAVF record and global checks establish container consistency; PVV establishes consistency with selected serialized program data. LIC copies the 32-byte descriptor unchanged into the HMAC key object. Every descriptor byte comes from saved program attributes or fixed LIC constants, and the recovered path contributes no additional secret. A party with the serialized program and the reconstructed algorithm can therefore derive the key and recompute PVV; a match establishes consistency, not trusted origin. Restore authorization and system policy still govern the operation, while digital signatures authenticate origin where required.

A program has separate state and domain attributes . Its execution state is USER, SYSTEM, or INHERIT; INHERIT uses the caller’s state. The program object itself has a USER or SYSTEM domain, and that saved attribute contributes separately to the PVV descriptor. Other objects accessed by the executing code also have domains. The USER domain is a storage-domain classification, not a user identity or ownership boundary. At QSECURITY 40, USER-state code cannot directly access SYSTEM-domain objects.

The algorithm at a glance

PVV = HMAC-SHA-256(descriptor, canonical_message)

PVV is calculated in four steps for the supported program format:

  1. Walk the saved program graph, select the protected byte ranges, normalize saved pointers, and put the ranges into canonical-message order.
  2. Build a 32-byte descriptor from program attributes and constants chosen by the recovered state, domain, version, release, and mode selectors.
  3. Use the descriptor as the HMAC key and the canonical message as the input to HMAC-SHA-256.
  4. Split the result into four 64-bit values and compare them with the stored values.

Leif Svalgaard’s earlier PVV work was a clue

Leif Svalgaard described the earlier mechanism in Chapter 15, “Program Validation Value,” of AS/400 Machine Level Programming . His public program index also lists MIPGMVV , which calculates an eight-byte value from program attributes. I reproduced his published example. Its four selector constants do not match the current LIC descriptor constants in either byte order, but both designs select values according to state and domain. That similarity pointed me toward the current 32-byte validation route.

Finding the validator

I started with CHKOBJITG , the IBM i command that checks object integrity.

For a program, CHKOBJITG reaches the IBM-supplied QSYS/QSYCHKIT program. Its native procedure QSYINTEGRI::checkPgmMod contains this sequence, copied from the retained IBM Display/Alter/Dump (DAD) output:

2B463690C5 0052B4  0000D4  62E30000  ORI 3,23,0
2B463690C5 0052B8  0000D8  39400103  ADDI 10,0,259
2B463690C5 0052BC  0000DC  44000141  SCV 10

ADDI loads selector 259 into r10 ; the following SCV 10 , Supervisor Call Vectored, enters dispatcher vector 10. The 10 in the mnemonic identifies the vector, while the value in r10 selects the service. That combination led to this observed call path:

QSYCHKIT/QSYINTEGRI::checkPgmMod
  -> #cfmir
  -> #dotssob
  -> VBNTSSOB::#bntssob
  -> VBNTSSOB::vbnskew4
  -> VBNNAPE2::vbnspnt2

The live capture tied the path to the loaded address of my CALLAES test fixture. I matched the remaining code against the IBM i 7.5 LIC from installation media by procedure name, normalized instruction sequence, call topology, constants, and tables. The live instructions and invocation frames identify the observed CHKOBJITG route; the build-matched LIC supplies the complete procedure bodies. For both VBNTSSOB and VBNNAPE2 , the installation addresses were 0x3000 above the captured live addresses and the normalized bodies agreed; that displacement is evidence for this match, not an IBM i addressing rule.

Reconstructing PVV

My parser supports uncompressed IBM i 7.5 program ( *PGM ) and service-program ( *SRVPGM ) items whose record graph, section descriptors, and 40-bit segment identity plus 24-bit in-segment pointer mapping follow the recovered layout. It rejects other layouts before calculation instead of trying models until one happens to match the stored result.

The stored result

vbnspnt2 writes 32 calculated bytes, loads them as four 64-bit doublewords, and compares them with four values stored in different parts of the program graph. Any mismatch returns false.

For CALLAES , the item starts at SAVF logical offset 0x4000 . The item-relative offset must first be converted to a SAVF logical offset. That logical coordinate counts only 512-byte payloads; the physical coordinate also counts each 16-byte record trailer:

logical = 0x4000 + item_offset
physical = (logical // 512) * 528 + (logical % 512)

Applying both stages gives these four locations:

Part Item offset Logical SAVF offset Physical SAVF offset Stored bytes
0 0x22C0 0x62C0 0x65D0 E8DC295506AFD7E6
1 0x4B78 0x8B78 0x8FC8 9794394254EF4224
2 0x21F8 0x61F8 0x64F8 8EAD0FB7B8C3AB42
3 0x2648 0x6648 0x6978 307B34648AE1C331

In comparison order, the stored PVV is:

E8DC295506AFD7E69794394254EF4224
8EAD0FB7B8C3AB42307B34648AE1C331

Building the canonical message

LIC follows a graph of program headers, components, procedure records, native sections, counted arrays, and optional records. It adds selected byte ranges, not the complete program item.

Saved pointers cannot be hashed directly because their segment identities may change after restore. LIC replaces them with a stable segment number and the offset inside that segment. For example:

saved pointer:       10804C6DE6001520
segment number:                       1
segment offset:                  0x1520
canonical value:    0000000100001520

LIC also changes the order of some data. Appends shorter than 0x400 bytes are copied into one owned stream. Appends of 0x400 bytes or more remain separate entries. The final HMAC message contains the complete copied stream first, followed by the retained entries.

Here, an aggregate entry is one buffer passed to the HMAC update path.

If the logical append order is a short span A , a retained span B , and a short span C , the message order is A || C || B .

For CALLAES , 65 logical appends became three aggregate entries:

Entry Length Message offset
copied spans 0x1234 0x0000
retained span 1 0x0610 0x1234
retained span 2 0x0870 0x1844

The final message length was 0x20B4 , or 8,372 bytes.

Building the descriptor

The descriptor contains four 64-bit values:

  1. one value formed by joining two four-byte program header fields;
  2. a fixed constant selected by state, domain, and version class;
  3. a constant selected by the target release;
  4. a constant selected by the recovered mode.

“Version class” and “mode” are names for reconstructed selector inputs. I do not present them as documented SAVF field names.

Within the retained fixtures, the recovered version_kind=0x0028 input selects one version class by contributing 0 to the table index; other observed values, including CALLAES ’s 0x000A , contribute 1. With CALLAES ’s USER state and domain, that selects 2E9132CE813F75B2 . The mode byte independently selects the fourth 64-bit descriptor value: mode 1 selects 3809245098034DDE , while mode 2 selects 3809745098034DDE .

Canonical program-state values are 0x0001 for USER, 0x0080 for SYSTEM, and 0x0000 for INHERIT. For descriptor selection, the state selector treats 0x0080 as SYSTEM, 0x0000 as INHERIT, and every other value as the remaining selector class. The domain selector tests the least significant bit of program base byte +0x20 —bit 7 in IBM’s MSB-0 numbering. In the CALLAES fixture the byte was 0x80 ; that bit is clear, so the program domain was USER. A byte of 0x81 selects SYSTEM program domain. This byte is separate from the 16-bit state value 0x0080 .

For CALLAES , the selected descriptor was:

C884EBDE4ED4E62B2E9132CE813F75B2
83CF578390004BA13809245098034DDE

The calculation selects these fixed tables without consulting the stored PVV.

The cryptographic operation

The lower LIC code creates a key object, copies all 32 descriptor bytes into it, and feeds each aggregate entry to a message digest object. The next layer implements the standard HMAC construction with a 64-byte block, the 0x36 inner pad, the 0x5C outer pad, and SHA-256.

The recovered calculation maps directly to Python’s standard HMAC implementation:

import hashlib
import hmac

calculated = hmac.new(
    descriptor,
    canonical_message,
    hashlib.sha256,
).digest()

For CALLAES , it returns the exact 32 stored bytes shown above.

Offline validation

I applied the recovered model to IBM-supplied save-file items and disposable programs and service programs. The corpus measures agreement and structural coverage over supported rows, not blind holdout or live restore and execution tests. The final totals were:

known valid exact matches:        1,223
deliberate mutation fixtures:        16
successfully parsed rows:         1,239
unsupported program items:           17
total attempted items:            1,256
distinct structure profiles:      1,003
unexplained mismatches:                0

A structure profile fingerprints object type, release and version selectors, mode, record shapes, and canonical-chunk construction without including the protected byte values. The 1,003 profiles occur among the 1,223 known-valid rows; repeated saves or equivalent layouts can share one. The 16 deliberate mutation fixtures remained invalid. The parser rejected another 17 items before calculation: seven had malformed section descriptors or descriptors that did not expose the validated 40-bit segment and 24-bit offset mapping, and ten contained pointers that could not be mapped unambiguously to a recovered segment. These are unsupported structures, not unexplained PVV mismatches.

I produced these results with the local pvv-ibmi tool bundle. pvv_demo.py is its command-line entry point, savf_checksum_demo.py implements the SAVF checks, and scripts/reconstruct_v7r5_pvv.py parses the program graph and calculates PVV. I plan to publish the bundle and its usage notes in the Silent Signal IBM i PVV repository .

The --table argument specifies sandbox.ser , which contains the lookup table used for the SAVF global checksum. I described its extraction in my previous SAVF checksum article .

The tool’s two main commands are:

python3 pvv_demo.py --table sandbox.ser check input.FILE
python3 pvv_demo.py --table sandbox.ser fix modified.FILE repaired.FILE

check verifies the SAVF checks and PVV. fix calculates PVV, writes the four stored values, repairs the separate SAVF checks, and verifies the output in a new file while preserving the intended native change.

Live restore controls

The offline matches establish the calculation. The following controls test how restore consumes the stored value, whether edited native code survives, and whether IBM i executes the changed control flow.

A stale stored value

In the P7QPM831 test program, I changed one stored PVV byte but left the protected program data unchanged. I repaired only the SAVF checks. CPC3703 denotes normal restore completion in the baseline and corrected controls.

Input PVV SAVF checks Result
baseline valid valid CPC3703 , process status 0
one stale byte invalid valid CPF3848 , CPF3773 , process status 255
corrected value valid valid CPC3703 , process status 0

The stale restore created an object, which I then saved again. The calling process returned status 255, while the substituted restore messages recorded the actual object counts:

CPF3848: 1 security or data format changes occurred.
CPF3773: 1 objects restored. 0 not restored.

The resaved object still contained the incorrect stored value. Writing the independently calculated value restored normal completion. The mismatch was therefore detected and changed the command outcome, but did not prevent object creation in this control.

A native change that survived

The RISCPVV1 test program measured native-code preservation without changing behavior. I replaced one instruction with a different instruction that copies the same register value:

before  60860000  ORI 6,4,0
after   7C862378  OR 6,4,4

The saved creation material—the input IBM i can use to recreate native code—remained unchanged. To distinguish preserved native code from code recreated from that material, I repaired PVV and the SAVF, restored the object, and saved it again. The executable payload was eight native records joined in graph order after removing each record’s final eight-byte saved-space pointer, which is metadata rather than executable payload.

All 1,120 executable bytes matched between the modified and resaved streams; the original differed at the edited instruction. The 40-bit segment-identity prefixes within those trailing pointers changed as expected when IBM i materialized the object; their 24-bit in-segment offsets did not. The executable payload and repaired PVV remained unchanged.

CrackMe: a branch that changed behavior

PVVPASS , which I call CrackMe here, provided the visible control. This disposable fixture compared its argument with silentsignal , printed pwd is ok for a match, and printed wrong otherwise.

The retained source was:

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    if (argc > 1 && strcmp(argv[1], "silentsignal") == 0)
        puts("pwd is ok");
    else
        puts("wrong");
    return 0;
}

I compiled it as a native Integrated Language Environment (ILE) C program with DBGVIEW(*NONE) , OPTIMIZE(40) , and ACTGRP(*CALLER) , then saved it without compression.

The relevant saved instructions are below in reconstructed DAD style. Register 5 holds the current input byte. Register 0 holds the current expected byte.

1E75B1F2E2001F78  2C250000  CMPI   0,1,5,0
1E75B1F2E2001F7C  397E0010  ADDI   11,30,16
1E75B1F2E2001F80  387FFFC0  ADDI   3,31,-64
1E75B1F2E2001F84  63CC0000  ORI    12,30,0
1E75B1F2E2001F88  78CAC1C6  RLDICR 10,6,56,7
1E75B1F2E2001F8C  7C0103E6  SETTAG
1E75B1F2E2001F90  7CA50040  CMPL   1,1,5,0
1E75B1F2E2001F94  40860048  BC     4,6,0X48
1E75B1F2E2001F98  41820014  BC     12,2,0X14
1E75B1F2E2001F9C  8CA40001  LBZU   5,0X1(4)
1E75B1F2E2001FA0  2C250000  CMPI   0,1,5,0
1E75B1F2E2001FA4  8C0C0001  LBZU   0,0X1(12)
1E75B1F2E2001FA8  4BFFFFE8  B      0X3FFFFE8

The first CMPI sets CR0.EQ from the input byte. The instructions before CMPL do not change CR0. SETTAG affects the tag state, not the condition registers. CMPL 1,1,5,0 sets CR1.EQ from the comparison of the input and expected bytes.

The branch at 0x1E75B1F2E2001F94 tests CR1.EQ and reaches the failure block when the bytes differ. The next branch tests CR0.EQ and reaches success when the input byte is zero. Equal nonzero bytes continue the loop.

The encoded displacements make the control flow explicit:

0x1E75B1F2E2001F94 + 0x48 -> 0x1E75B1F2E2001FDC  failure
0x1E75B1F2E2001F98 + 0x14 -> 0x1E75B1F2E2001FAC  success
0x1E75B1F2E2001FA8 - 0x18 -> 0x1E75B1F2E2001F90  next comparison

The saved text supports that mapping: silentsignal is at logical offset 0x69B0 , pwd is ok at 0x69C0 , and wrong at 0x69D0 . The success block selects the text at r30+0x10 ; the failure block selects r30+0x20 .

I replaced only the mismatch branch:

before  40860048  BC 4,6,0X48
after   60000000  ORI 0,0,0

The variants produced this result:

Saved variant PVV Instruction after resave Output for incorrect input
baseline valid original branch wrong
changed branch, stale PVV stale original branch wrong
changed branch, repaired PVV valid changed instruction pwd is ok

The repaired program printed pwd is ok for both nope and x . A fresh save of the repaired object still contained 60000000 at the instruction site identified from the object structure.

Restore access: command and API controls

IBM’s documented Restore Object List ( QSRRSTO ) API has a different authority model from the Restore Object ( RSTOBJ ) command. IBM has documented its default public authority as *USE since the 2006 Backup and Recovery APIs manual . That permits calling the API; it does not supply the user-space, save-file, library, or target-object authorities required for a restore. Callers without the *SAVSYS save-system special authority must satisfy those documented authority requirements, as USERB1 did within its test library.

For the end-to-end control, I rebuilt CrackMe from the retained source and the same compiler settings. I resolved the patch location from the new SAVF. The rebuilt program contained the same 40860048 mismatch branch at native record 1 offset 0xB4 . I created baseline, branch-edited/stale-PVV, and branch-edited/repaired-PVV variants; all three had valid SAVF checks.

With the repaired SAVF loaded into save file TESTSAVF in the USERB1 library and the target absent, RSTOBJ failed with CPD0032 (not authorized to the command) and created no program. To test the API separately, I used a small, locally written USERB1-owned program that called QSRRSTO directly and restored PVVPASS into the USERB1 library. Both the caller and a small USERB1-owned wrapper that recorded the job context before and after invoking the caller were USRPRF(*USER) and USEADPAUT(*NO) , so they neither adopted their owners’ authority nor used authority adopted higher in the call stack. In the same job, the wrapper used IBM’s Retrieve Job Attributes command ( RTVJOBA ) to report current user USERB1 immediately before and after the API call.

Under this authority context, the repaired variant produced the CrackMe output reported above. Its resave retained 60000000 at native record 1 offset 0xB4 , and its 1,032-byte executable payload matched the repaired input after the final eight-byte saved-space pointer was removed from each native record.

The stale-PVV API control restored with the original branch and printed wrong instead. This was one end-to-end test within USERB1’s authorized object scope: command denial, API restore, execution, and resave.

I then rebuilt MEMDUMP entirely as USERB1, applied the native edits to its saved representation, and repaired PVV and the SAVF checks. Running as USERB1, I called QSYS/QSRRSTO ; it created the MEMDUMP program in the USERB1 library as a USER-state, USER-domain program owned by USERB1, with USRPRF(*USER) and USEADPAUT(*NO) . A fresh save retained both modified instruction sites. The repaired input, the USERB1-restored resave, and the distinct program object used for the memory-read test had byte-for-byte identical 1,496-byte executable payloads.

Signature, state, and domain boundaries

The native code controls above used USER state. I also tested the separate state, domain, and signature boundaries.

Control Result
USER to SYSTEM state, PVV repaired IBM i rejected it as unsigned with CPD37A0 , then CPF3770 (no object restored)
USER to INHERIT state, PVV repaired IBM i rejected it as unsigned with CPD37A0 , then CPF3770 (no object restored)
USER state, USER to SYSTEM domain, PVV repaired IBM i restored it with CPC3703 ; a USER-state call failed with MCH6801 domain violation

The repaired SYSTEM-state fixture passed the offline reconstructed PVV check, but the live restore failed the digital signature requirement:

offline PVV validation         PASS
live trusted-signature check   FAIL

I also traced the complete 16-bit state field. The relevant LIC branches reduce to this classification before the signature service is called:

state 0x0001 -> record flag 0
state 0x8000 -> record flag 0
all other 65,534 values -> record flag 1

The flag is an input to the later signature path, not the final restore result by itself. Canonical SYSTEM state is 0x0080 , and INHERIT state is 0x0000 ; both produce flag 1. The activation resolver separately treats 0x0000 as INHERIT, selects SYSTEM only for 0x0080 , and sends 0x0001 , 0x8000 , and other noncanonical values to USER. I found no state value that both takes the flag 0 path and activates as SYSTEM on this route.

The 0x8000 state value is not SYSTEM state. It restored and activated as USER in the live control. The same hexadecimal value appears as the two-byte domain contribution for SYSTEM domain, but that is another field.

Security impact

Under the tested conditions, externally modified USER-state native code bypassed a compiler-generated pointer-validation sequence and performed a memory access that the original compiled code could not. CrackMe independently established execution of modified native bytes; the controlled MEMDUMP runtime test established this consequence. The compiler-generated path used LQ to load the 128-bit pointer and record its tag status, TXER to check that status, and _SETSPPFP (Set Space Pointer from Pointer) before the memory access. At native section offset +0x220C , I replaced the first two instructions with a direct native load and branch:

; original
2f3708714600220c:  e2dfff9b  LQ         22,0XFF90(31),11
2f37087146002210:  7c0004c8  TXER       0,0,41
; replacement
2f3708714600220c:  eb7fff98  LD         27,0XFF98(31)
2f37087146002210:  48000028  B          0X28
; later target access
2f370871460022b8:  889b0000  LBZ        4,0X0(27)

The source had copied the supplied 64-bit address into this r31 -relative slot; the LD loads it into r27 , and the branch continues at +0x2238 . The later LBZ at +0x22B8 performs the byte read through r27 . With the same supplied address, the unmodified MEMDUMP failed with MCH3601 (pointer not set). The modified code bypassed the generated validation sequence and, when invoked as USERB1, returned the exact expected 32 bytes from a known-address USER-domain buffer belonging to a cooperating QSECOFR job. The target address was supplied by the cooperating QSECOFR job; obtaining such an address independently is a separate prerequisite.

For the supported saved-program format, the derivable HMAC key makes PVV a recomputable consistency check. With an editable SAVF and an authorized restore path, recalculating PVV and the SAVF checks preserved the tested USER-state native changes. Separate controls enforced trusted signatures for the tested SYSTEM and INHERIT variants and blocked USER-state access to SYSTEM-domain storage.

Conclusion

PVV was the missing piece between editing saved native POWER instructions and preserving them through IBM i restore so that the modified code could execute. Reconstructing it turned that obstacle into a repeatable research workflow: CrackMe demonstrated changed native control flow, while MEMDUMP showed its practical consequence in a controlled, known-address USER-domain read. The PVV reconstruction is not by itself a vulnerability or a signature bypass; the pvv-ibmi release accompanying this article lets other researchers reproduce the calculation and use the same workflow, while restore authorization, trusted signatures, and domain enforcement remain separate boundaries.

Safari 27.3 Adds Support for Global Privacy Control

Daring Fireball
pxlnv.com
2026-11-10 09:47:10
Nick Heer, Pixel Envy: There are a whole bunch of features and fixes coming to Safari with Apple’s OS 27.3 update. One that is not in the beta release notes but appears nevertheless is support for Global Privacy Control. This new standard is effectively a replacement for Do Not Track with legal ...
Original Article

Safari 27.3 Adds Support for Global Privacy Control ⇥ developer.apple.com

There are a whole bunch of features and fixes coming to Safari with Apple’s OS 27.3 update. One that is not in the beta release notes but appears nevertheless is support for Global Privacy Control . This new standard is effectively a replacement for Do Not Track with legal muscle that should permit you to indicate your tracking preference one time and then, theoretically, never again see a cookie consent banner.

In practice, it will take time for websites to add support, and it requires users to enable the feature in Safari’s Settings. I do not love the implementation in the first beta, which buries the checkbox in the Advanced tab with the ambiguous label “Use Global Privacy Control”, unlike the company’s proprietary anti-tracking features that live in the Privacy tab. But at least it is present and, in my testing, functional.

The Death Knell of Digital Search

Hacker News
www.newyorker.com
2026-11-10 09:41:36
Comments...
Original Article

Lately, I’ve been having trouble finding stuff in my Gmail inbox. The Search function has become overzealous, jumping to summarize my conversations using artificial intelligence and skipping the actual addresses I’m attempting to search. It’s not just e-mail accounts, though; search is in crisis everywhere. Google Maps guesses where I want to go at a given time of day instead of simply listing places I’ve just searched for. When I try to use Google Search, the A.I.-overview function sometimes occupies my entire browser window, generating its own, not always correct, answers rather than directing me to relevant websites. Full-on A.I. mode skips the old blue links entirely.

Search has gotten so annoying, in fact, that it has become a problem for Google’s very business model. Companies pay Google to splash ads into search results that are relevant to their businesses—advertising stoves, say, to someone searching for kitchen-renovation tips. More than half of Google’s revenue comes from those ads. But, if users aren’t clicking through to external sites, because they’re relying on A.I. to answer their queries, then the ads that Google hosts are suddenly much less valuable. In a recent earnings call, Google’s chief business officer, Philipp Schindler, admitted that the company has been seeing “lower monetization” on A.I. searches. After the call, the stock of Alphabet, Google’s parent company, fell by nearly a quarter, down five hundred billion dollars, the largest single-day drop in its history. Even Google may not be too big to fail, as pessimism mounts about the possibility of Search ever again working the way it used to.

Just as Google has faltered in Search, use of OpenAI’s ChatGPT has surged. OpenAI’s consumer-product lead, Adam Fry, recently told the tech journalist Alex Kantrowitz that ChatGPT is siphoning users away from the older company: over the past year and a half, it has grown to handle one-fifth the volume of “search-like queries” that Google does. This acceleration only makes sense: a growing number of people now rely on A.I. chatbots as their primary windows to the internet, and they’re less likely to click out of those apps to ask the kinds of simple questions that they might once have turned to Google to answer. It doesn’t help that bots have lately grown much better at browsing the internet in real time, using virtual browsers and plug-ins, rather than simply generating answers from preëxisting data. Google has its own suite of A.I. products, Gemini, but they’ve lagged in popularity behind Anthropic’s Claude and ChatGPT. The investment firm Menlo Ventures found that Gemini accounts for only nine per cent of A.I. spending for businesses in 2026, down from twenty-one per cent last year.

Can the internet as we know it survive without a reliable flood of search traffic? Chatbots treat websites as databases of information to draw from, but since they divert traffic from those sites they don’t provide much impetus for creators to keep posting new content. The end state we’re heading toward seems to be an internet both generated and traversed by bots—in which case, it will no longer matter how annoying it is for a mere human being to find information. Some websites are already moving defensively to keep out the trawling bots attempting to digest their content. Reddit, one of the internet’s major remaining repositories of human-generated knowledge and opinions, is moving toward “a primarily logged-in experience,” as its C.E.O., Steve Huffman, recently announced. In a third-quarter letter to shareholders, Huffman noted that Reddit’s search traffic “dropped by more than 1 million referrals on average per week” during October. The letter explained, “Web search is evolving from a gateway to the web to becoming an AI-powered destination itself.” In a recent earnings call, Huffman said that “people still want Reddit” but that “Google is not sending them to Reddit the way they used to.” Requiring users to log in is the equivalent of pulling up the drawbridge to keep away the A.I. models roaming outside. But it also means that the casual human searcher will be less likely to see the full conversations happening on Reddit.

In 2019, before the A.I. boom, the entrepreneur Yancey Strickler presciently outlined a “ dark-forest theory of the internet .” As the web experience got worse, Strickler argued—because of “the ads, the tracking, the trolling, the hype, and other predatory behaviors”—users would retreat to more private, hidden online spaces, or “dark forests,” in search of human interaction. We once used search to find those dark forests and find the humans on the internet who were doing whatever we were interested in. Now those old tricks of Boolean operators and half-remembered keywords don’t work, because we’re meant to trust a robot to do the navigating for us instead. I often feel that the internet isn’t built for us human users anymore.

One prominent tech-commentator account on X has described companies as locked in “a knife fight for the remaining and dwindling volume of human traffic on the internet.” Many seem to have bought into the narrative that the old-school open internet is done for, so they’re scrambling to lock users into their own, A.I.-automated walled gardens. (Not to be left behind, Reddit is introducing an algorithmic For You feed and A.I.-generated short-form videos based on its content.) Google recently inspired a public backlash when it announced that it would make A.I. functions optional, rather than permanently accessible, on its software suite for schools and students, but with a catch: if schools turned off the Gemini A.I. functions, they would lose access to Google Search, too. This policy amounts to a threat: use generative A.I. or use nothing. The largest tech companies are investing so much capital in A.I. infrastructure—chips, data centers, intensively trained models—that they must make the bet pay off, one way or another.

The upshot is that, more often than not, I find myself using A.I. to fight back against aggressive A.I. Instead of using the Gmail app on my phone, I’ve been texting my questions about my own inbox to an A.I. agent called Instinct, which I recently granted access to my account. (It’s a security risk, to be sure, but one I was willing to take to see if the product is any good for techno-normies.) In a matter of seconds, Instinct can dig up an event invitation or a note from someone whose name I can’t quite remember. Instead of Googling potential interview subjects, I have Claude scrape for their contact information. But I would really prefer if Search just worked the way it did in the first place. ♦

Come and Take It

403 Media
www.404media.co
2026-11-10 09:41:26
AI companies crack down on 'reverse engineer anything.'...
Original Article

AI companies are trying to take the only cool thing their tech has ever done, making me vaguely interested for the first time ever in the concept of open weight models, local AI, etc. Time to take out a second mortgage on the house I don't have to finance a graphics card. Anyways, let's get into it:

‘Reverse Engineer Anything’: AI Companies Crack Down on the Coolest Thing People Were Doing With AI

It was a fun few weeks while it lasted. People using both Anthropic’s Claude and OpenAI’s Codex to do AI-powered “reverse-engineering” or decompiling are now hitting guardrails or having their accounts limited while trying to do things like unbrick their internet-of-things devices or remove surveillance ads from their smart TVs.

Several people have reported triggering “safety checks” in Claude Code that prevented them from doing AI-powered reverse engineering; a highly upvoted Reddit post in r/ClaudeCode reads “The Dream is dead. Reverse Engineer Anything (REA) is not likely to work with Claude.” A thread in the Reverse Engineer Anything Discord from last week reads, “Claude is refusing to decompile anything,” with multiple users responding saying they have hit similar walls. And X user log4j, who used OpenAI’s Codex to reverse engineer Samsung TVs, reported having their OpenAI account banned for violating its rules on “cyber abuse.” Other users said they asked Codex to reverse engineer hardware or their own code now say they have either been warned by the company or had their accounts restricted. A project called Decomp.wtf that made it easier to reverse engineer software and games has also shut down in recent days.

As we reported last month, Reverse Engineer-Anything has made it easy for people to use AI tools to hack electronics that they own and replace a manufacturer’s software or operating system with an open source or vibecoded one. People have installed new operating systems on their smart TVs, have turned baby monitors into AI assistants, have unbricked internet-of-things devices that were abandoned by their manufacturers, and have installed new software on very old hardware. At the time, I wasn’t sure how I felt about the trend, but as I’ve seen people take ownership and control back over the devices that manufacturers have purposefully bricked, turned into spyware, or have placed artificial limitations on, I have come to see AI-powered reverse engineering of electronic devices as one of the few LLM uses genuinely worth getting excited about. And so big companies have immediately taken steps to restrict this behavior.

The policy tweaks show that big AI corporations will protect other big corporations when their users find ways to use LLMs to circumvent the artificial constraints that hardware manufacturers put on their devices. AI-powered copyright circumvention is OK with big tech when it’s a massive company scraping the entire internet to build their LLMs, but is not OK when people then use those tools to liberate their internet-of-things devices. It’s not the end of AI-powered reverse engineering, but people suddenly getting locked out of their accounts for asking AI to reverse engineer their gadgets suggests that the future of this practice lies in open weight, local, and uncensored models, making it less accessible to the masses and the people who could probably benefit from it most.

Tarun Gogineni, an OpenAI engineer, tweeted that people are not supposed to have their OpenAI accounts restricted for reverse engineering: “these blocks are mostly accidental and a result of difficult decision boundaries; there is no prohibition against reverse engineering with codex. it’s getting fixed,” he tweeted.

But people who are doing AI-powered reverse-engineering suggest that they are moving away from big companies’ models to alternatives where they aren’t going to have their accounts disabled or have to figure out how to work around AI company guardrails.

“My general experience about reverse-engineering getting blocked has been more or less 100% correlated with the ‘cyber’ category blocks I have received. My take is that the lab[s] are probably under pressure to not have their models take part in some kind of criminal hacking activities and their cyber guardrails are erring on the side of being too strict,” Matt Brown, principal consultant at Brown Fine Security and someone who has been using AI to reverse-engineer devices, told 404 Media. “I am investing in hardware and trying to stay up to speed because the frontier labs guardrails will randomly change without warning on the same model. For my security research and pentesting work I really don’t want to invest tooling and energy into an ecosystem that will eventually lock me out. These guardrails on the frontier side have come at the same time as open weight models from (mostly) China are getting better and better.”

Read the full story here

More from 404

“Do you have the gun”: According to a police incident report obtained by 404 Media , a father in South Carolina asked his six-year-old daughter if she “had the gun” before he left her alone at Target for more than an hour in the middle of the night so “he could maintain his place in line” to buy Pokémon cards.

Around the web

The biggest thing going on in tech right now is Jensen Huang’s apparent affair with an executive at the data center company Megaspeed who is an alleged Chinese spy. This isn’t the type of thing we cover very closely normally, and Sam mentioned it in the newsletter yesterday, but the latest is that the company is now getting sued over this . The AI slop You Can See Everything memes are out in full force. The incel looksmaxxers have weighed in (if you don’t understand this sentence, I won’t corrupt you). So on and so forth. If you’re curious why any of this might matter, The New York Times has a scoop that the U.S. Department of Commerce killed an investigation into a Megaspeed after Nvidia intervened. Cool government we have here. Anyways, moving on.

ICEd out: The Department of Justice said that it no longer has enough attorneys available to respond to every habeas corpus challenge , and will begin letting judges rule on cases with no government opposition. Basically this suggests that ICE has detained so many people illegally that it no longer has enough attorneys to argue in these cases. Alarming, but also means that enough people are challenging their detentions that ICE is beginning to cry uncle. Also, I would normally never suggest you go watch a Bari Weiss x Ross Douthat joint, but parts of the 60 Minutes interview with Trump were SO WILD . Perhaps this guy doesn’t really stand for anything? Hmm.

Help Court Watch: Our friends over at Court Watch are doing a subscriber drive . Court Watch grabs court records off the notoriously expensive PACER document system and makes them available for free and finds extremely interesting and important cases all the time. We partner with them on a bunch of stories so go check/help them out.

JA / NEIN. Image: Dixken.de

Enough: The best Raspberry Pi on the market now costs $385 . I remember when the whole point of a Raspberry Pi was that it cost, like, $20. This is, of course, due to the RAM/memory/everything shortage caused by AI data center buildout. If you know what people are doing with these top-end Raspberry Pis, let me know?

SLOPPED: Actors alarmed to learn that they had been replaced by AI in the Return of the Living Dead sequel they were set to star in.

DOGE’d: The government’s IT systems are really fucked up , argues our friend Karl Bode in a piece aptly called “U.S. government IT systems are completely compromised and will require a total rebuild.”

The surveillance state, now for kids: The Atlantic has a deep dive on what constant surveillance is doing to children . I haven’t had time to read the full thing yet, but have been waiting for a piece like this for a long time.

They Rickrolled a printer: … They Rickrolled a printer .

About the author

Jason is a cofounder of 404 Media. He was previously the editor-in-chief of Motherboard. He loves the Freedom of Information Act and surfing.

Jason Koebler

A faster Easter date function

Lobsters
www.benjoffe.com
2026-11-10 09:36:45
Comments...
Original Article

A very fast Easter "computus" algorithm, accurate over ±10 million years.

10 November 2026

This post is a fun little side quest to kickstart my journey optimising regional calendars.

Background

Computing the date of Easter faster is not going to matter in any real application. Even in places where it might seem to matter, like high frequency trading applications, it is probably better to just use an in-memory lookup table for holiday dates...
However, no "Fast Date" series would be complete without some mention of this classic problem.

The rules for Easter were broadly decided at the First Council of Nicaea, organised by Emperor Constantine in 325 AD, and later modified by Pope Gregory XIII in 1582 (referred to here as "Gregorian Easter") , with the first Easter under the new rules applying in Catholic countries the following year. The Church of England first observed the new date of Easter in 1753, but Eastern / Orthodox churches continue to follow the old rules.
This article is about the new "Gregorian" Easter, because it is much more complex and slow to compute.

The Function

The code below runs really fast.
It's around twice as fast as a standard easter function that you might find in a typical date library, and I suspect it may be the fastest one made so far 🤷 .
Part of that speed is attributable to using only 5 multiplications (whereas typical reference algorithms have 10 or more multiplications) .

The accuracy range of around -11m → +16m years might seem a bit of overkill, but the reason I targeted this range is so that any date library that expresses dates via a signed or unsigned 32‑bit "rata die", is covered by this function. This means that if you decide to not clamp the logic to years after 1582, at least it will return something resembling the correct rules, rather than garbage.

New Gregorian Easter Function
Given: year ∈ [-11,103,600 ... 16,663,835]
Return: month and day

  1. u32 constexpr SHIFT = 400 * 19 * (25 * 30 * 2 - 39)
  2. u64 constexpr M19 = (1 << 32) / 19 + 1 + (11 << 32)
  3. u32 constexpr M1C = (1 << 32) / 100 + 1
  4. u32 constexpr M25 = (1 << 32) * 8 / 25 + 1
  5. u32 constexpr M30 = (1 << 32) / 30 + 1
  6. u32 constexpr M67 = (1 << 32) * 6 / 7
  7. 
            
  8. u32 y = year + SHIFT           
  9. u32 c = (u64) y * M1C >> 32    
  10. u32 a = (u64) c * M25 >> 32    
  11. u64 b = (u64) y * M19          
  12. u32 d = (u32) b > 0x90000000   
  13. u32 e = b >> 32                
  14. u32 f = c - (c >> 2)           
  15. u32 g = a - f + e              
  16. u32 h = (u64) g * M30 >> 32    
  17. u32 i = (g + (h << 1)) & 31    
  18. u32 j = 31 - i - (d >= i)      
  19. u32 k = y + (y >> 2) + j - f   
  20. u32 m = k * M67 >> 29          
  21. u32 v = j + m + 115            
  22. u32 month = v >> 5
  23. u32 day = (v & 31) + (v >> 7)

New Gregorian Easter Function
Given: year ∈ [-11,103,600 ... 16,663,835]
Return: Days since 22 March ∈ [0..34]

  1. u32 constexpr SHIFT = 400 * 19 * (25 * 30 * 2 - 39)
  2. u64 constexpr M19 = (1 << 32) / 19 + 1 + (11 << 32)
  3. u32 constexpr M1C = (1 << 32) / 100 + 1
  4. u32 constexpr M25 = (1 << 32) * 8 / 25 + 1
  5. u32 constexpr M30 = (1 << 32) / 30 + 1
  6. u32 constexpr M67 = (1 << 32) * 6 / 7
  7. 
            
  8. u32 y = year + SHIFT           
  9. u32 c = (u64) y * M1C >> 32    
  10. u32 a = (u64) c * M25 >> 32    
  11. u64 b = (u64) y * M19          
  12. u32 d = (u32) b > 0x90000000   
  13. u32 e = b >> 32                
  14. u32 f = c - (c >> 2)           
  15. u32 g = a - f + e              
  16. u32 h = (u64) g * M30 >> 32    
  17. u32 i = (g + (h << 1)) & 31    
  18. u32 j = 31 - i - (d >= i)      
  19. u32 k = y + (y >> 2) + j - f   
  20. u32 m = k * M67 >> 29          
  21. return j + m - 3

Note that this function contains more terms than traditional Easter functions, but bear in mind that the compiled assembly will be a lot smaller. So if you don't care about the speed, but want a tiny impact on binary size, that could be a reason to consider this function.

The rest of this post will briefly explain the tricks used in this function:

See also benchmark results .

Trick #1 - Aggressive Constant Folding Deep link

  1. u32 constexpr SHIFT = 400 * 19 * (25 * 30 * 2 - 39)

You'll notice that the very first thing we do is add a strange value SHIFT to the input value. This is done for two reasons:

  1. to move all dates to the positive domain to avoid complexity associated with signed operations
  2. but also importantly, to allow various constants throughout the algorithm to be factored out.

For example, most Easter algorithms have a term like (5 + 8 * c) / 25 , where c is the century ( year / 100 + 1 ). The term 25 in the calculation of shift is responsible for aligning the century such that the constant 5 can be removed, resulting in c * 8 / 25 , which is then approximated in the final algorithm with a single mul-shift: (u64) c * M25 >> 32 .

Other terms in SHIFT : 19, 400, 30 are all doing similar things related to the 19-year-cycle, 400-year-cycle, and mod-30 steps.
The term * 2 is different. Without this term, the range of coverage would be -5,403,600 → +22,363,835; which doesn't quite cover the range we wanted, which for signed 32-bit rata die, is ±5.88m years. Including * 2 increases the value of shift by exactly 5,700,000, which is how many years it takes for the Easter pattern to repeat, and gets the range we are after.

If you like this type of optimisation, but are not a fan of the low-level bit-shifting and so on, then you might prefer to use this function here below. It is a much more readable version of the function, which only has these higher-level optimisations applied.

Note that unlike in the main function presented earlier, MOD 30 needs to be a positive-modulus function (even for positive dates), and that the nextSunday helper is anchored to the internal logic of the function, not related to Unix day-counting.

Readable Easter Function
Given: year ∈ [-11,103,600 ... 2 31 -1]
Return: Days since 22 March ∈ [0..34]

  1. u32 getEpact(u32 y, u32 c, u32 f) {
  2.   u32 n = y % 19
  3.   u32 i = i32(11 * n - f + c * 8 / 25) MOD 30
  4.   return 31 - i - ((n > 10) >= i)
  5. }
  6. 
           
  7. u32 nextSunday = (u32 k) => 7 - (k % 7)
  8. 
           
  9. 
           
  10. u32 simpleEaster(i32 year) {
  11.   u32 constexpr SHIFT = 400 * 19 * (25 * 30 * 2 - 39)
  12.   u32 y = year + SHIFT
  13.   u32 c = y / 100
  14.   u32 f = c - c / 4
  15.   u32 j = getEpact(y, c, f)
  16.   u32 m = nextSunday(y + y / 4 + j - f)
  17.   return j + m - 3
  18. }

Note: a variant in the C++ repo has some small optimisations not shown here (fast day-of-week and fast mod 30), and a range of [-73,803,600 .. 70,208,581].

Trick #2 - Never computing: year mod 19 . Deep link

Computing year % 19 is a staple of Easter algorithms.
It's related to the Metonic cycle , where every 19 years there are nearly exactly 235 full moons.

It is traditionally used in Easter algorithms in two ways:

  1. a term like: (11 * ( year % 19) + ... ) % 30 ; – and:
  2. a term like: ( year % 19) > 10

We are going to compute these same things using a single multiplication.
These steps seem unavoidable at first, but they can be eliminated. We'll begin by expanding the first one:

(11 * ( year % 19) + ... ) MOD 30
(11 * ( year - year / 19 * 19) + ... ) MOD 30
(11 * year - year / 19 * 209 + ... ) MOD 30
(11 * year + year / 19 + ... ) MOD 30

The last step there might be the least obvious. It works because we can add any multiple of 30 to the multiplier and get the same result (a property of MOD ), so add 30 × 7 = 210 , which means we can remove the multiplication by 209 and just invert the sign.

This leaves us with only two terms related to year which can be computed efficiently in parallel, however using a 64‑bit multiplier, we can actually merge these into one (fixed-point multiplication by 11 1 / 19 ):

u64 constexpr M19 = (1 << 32) / 19 + 1 + (11 << 32)
(( year * M19 >> 32) + ... ) MOD 30

This is the only 64‑bit multiplication in the function, and a 32-bit compiler should have no trouble turning that back into the previous pair of multiplications.

The algebra above relies on MOD 30 , which is different to % 30 in C for negative numbers.
The value being computed does not go negative over our range, so the substitutions remain valid.

Now on to the other term: ( year % 19) > 10 . It is a well known trick to use the low bits from the mul-shift of division by 19 as a comparison cutoff, and the version used in my function is u32 ( b ) > 0x90000000 . The extra term in our multiplier ( 11 << 32 ) has no effect in the lower 32‑bits, so this still works. Cassio Neri has written about things like this, if you want to read more you can start with this Overload Edition 154 .

So, this is just one multiplication plus the MOD 30 , which is usually an additional two multiplications, but we'll eliminate those later in Trick #4 .

Trick #3 - Computing "X − (Y % 7)" without negation. Deep link

There's always a % 7 term in these Easter functions, which is then subtracted from a final result. This is because Easter is on the “ first Sunday after [...] ”.

Clearly we are going to use the fast-mod-7 trick from the weekday article . If you haven't read that article, you should. You won't understand this section otherwise, and frankly, it's a better article than this one.

Fast computation of: y = 7 - (x % 7)
Valid range: 1 ≤ x ≤ 178,956,972

  1. u32 const M67 = (1 << 32) * 6 / 7
  2. u32 y = x * M67 >> 29

The same mod-7 trick as before, but notice that the mapping is reversed? (The numbers track anti-clockwise)

So why not just subtract the result of % 7 like everybody else? Well, that would make the final line be: j - m + C (for some constant C ). This does not fit the pattern of a single-operation LEA instruction on x86.

Instead, we adapt the fast-mod-7 code to use a fixed-point multiplier of 6 / 7 (rather than 1 / 7 ) before the right-shift-29, which means this line actually counts mod-7 backwards for us! This means the final line can be j + m + C , which fits LEA and saves... one cycle 😀 (depending on the compiler and CPU...) .

Trick #4 - Computing MOD 30 faster with the mod-pad technique Deep link

  1. u32 constexpr M30 = (1 << 32) / 30 + 1
  2. u32 h = (u64) g * M30 >> 32
  3. u32 i = (g + (h << 1)) & 31

This one is pretty obvious if you've been following this blog series.
MOD 30 can be calculated faster by using our favourite identity:

This was introduced and proven in the weekday article, and utilised more notably in the time-of-day article.
Here setting D = 30, c = 2 gives us the useful version where we can apply MOD 32 (same as & 31 ) .

Trick #5 - The fancy day & month Deep link

  1. u32 v = j + m + 115
  2. u32 month = v >> 5
  3. u32 day = (v & 31) + (v >> 7)

This final bit, I'm not sure if it's been done before exactly like this.

Easter can only ever be in March or April (month 3 or 4), and luckily March is 31 days long, which means we can use % 32 to truncate dates there. A straightforward modulus would cause March 32 to overflow to April 0 , a non-existent date, so we add the term v >> 7 which increments the date when it overflows (a lucky coincidence relying on April, month 4 , being a power-of-2) .

I have seen similar things done before using % 31 , but I have not seen this with the clean bit-mask approach.

So, that's it. A bunch of fussing about to make a simple streamlined function that is next to impossible to read... but fast.


This article was prompted by Twitter/X user Dirk Loss replying to one of my posts with a link to a ChatGPT thread, where he used AI to compute Easter faster. See ChatGPT thread.

Screenshot of X post by Dirk Loss (@dloss): "Could these kinds of optimizations be done for calculating Easter, too? I posed this to ChatGPT:"

The AI actually did a pretty good job. It used learnings from my prior blog posts to apply various optimisations, but also came up with new twists on these ideas. It produced a function that is really fast , and that is accurate over the range 1498–14,544. The range is a fairly reasonable choice given that the modern rules for Easter took effect after 1582, and nobody really needs Easter further into the future.

In a serious case of "Not Invented Here" syndrome (on behalf of human kind) , I had to see if I could beat the AI. I clearly did, otherwise there wouldn't be this blog post. The wider-range algorithm presented in this article has around 5-15% higher throughput across tested platforms, and similar latency (despite the wider range).

My algorithm was adapted from the one presented in Calendrical Calculations (Reingold and Dershowitz).
I did not apply any learnings from the ChatGPT one, though we settled on several similar steps.

I suspect this function could be optimised more, as it still has the same overarching structure of existing algorithms going back a very long time.
I tried for a little while to find a shortcut solution using the Python "Z3 Theorem Prover", which found an alternative which is a further 15-20% faster than my main one, however it's only accurate over a micro range [1894 .. 2199]. It is available in the testcase repo . If you can find a function of similar or faster speed with a wider range, feel free to let me know and I will update the repo and this page!

Although I beat the AI in this case, it’s a pretty mild victory as it was just a basic model with a moderate amount of compute. It’s sad to know that if frontier models were pointed at the problems I’ve been tackling in this blog series, they would probably unearth every last jewel of optimisation left in the blink of an eye. I hope that I have time to explore this space more before it becomes barren.

If you enjoyed this post, you should follow me on X to get notified when I publish more date and algorithm related articles.

Benchmark Results Deep link

Exhaustive tests of the ranges asserted in this article can be verified via the testcase code: https://github.com/benjoffe/fast-world-calendars .

The same repository is used for benchmarking, where a large set of random years are loaded into memory and tested.

All results were obtained by running the benchmark with -repeat=10 and recording the median results.
The -batch flag runs each computation 3 times before loading the next entry from memory. This ensures that the processor is not bottlenecked by memory access.
Latency results use the same command but replace the batch flag with -latency . This mode feeds the result of each computation into the next, so there is no parallelisation.

git clone https://github.com/benjoffe/fast-world-calendars.git
cd fast-world-calendars
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/bin/easter_test
./build/bin/easter_bench -batch
./build/bin/easter_bench -latency

The number in a small font size represents the number of nanoseconds per year computation.
The larger number is the ratio of these results compared to the New function as a baseline.

Note: the benchmarks compute "Days since 22 March" (not day and month), as some of the reference algorithms only return this value.
If my optimisation of the day/month step is novel, then the speedup would be larger than presented here.

Algorithm: Anonymous
(Unsigned)
Calendrical
Calculations
Ian Taylor
(16‑Bit)
Dirk Loss
(ChatGPT)
New New
(Z3/Micro)
Range (years) 0-2 31 -1 0-2 31 -1 0-2 15 -1 1498‑14544 > ±10m 1894‑2199
MacBook Pro 2024 (MacOS 15.6.1)
Apple M4 Pro
Compiler: Apple clang 17.0.0
1.92x
(2.35951)
2.99x
(3.67602)
1.81x
(2.22827)
1.07x
(1.31419)
1.00x
(1.23101)
0.85x
(1.05075)
AMD Ryzen 9 9950X3D
Ubuntu 24.04.3 LTS
Compiler: Clang 18.1.3 (x86_64)
2.19x
(3.38572)
2.72x
(4.21668)
2.01x
(3.11688)
1.14x
(1.76154)
1.00x
(1.54947)
0.79x
(1.21701)
AMD Ryzen 9 9950X3D
Ubuntu 24.04.3 LTS
Compiler: GCC 14.2.0 (x86_64)
2.31x
(3.30348)
3.48x
(4.96507)
2.07x
(2.94695)
1.16x
(1.66054)
1.00x
(1.42701)
0.85x
(1.21541)

Revision history:

  • 10 November 2026 - First release

‘A Scandal at the Center of the Economy’

Daring Fireball
www.theatlantic.com
2026-11-10 09:36:18
Charlie Warzel, writing for The Atlantic (gift link): It is curious, then, that, as news came out that the Nvidia CEO, Jensen Huang, had had a romantic relationship with a Chinese businesswoman who was also an asset of Beijing’s Ministry of State Security, notable factions of Silicon Valley and ...
Original Article

Our site’s security protections triggered a block. If you think this was in error, email us at [email protected] . Please include how you got to this webpage and the Cloudflare Ray ID located at the bottom of the page.

If you would like to inquire about permission to access our content, email us at [email protected] .

Cloudflare Ray ID: a585edfd79b157a2

Back to The Atlantic

U.S. Commerce Dept. Inquiry Into Megaspeed Was Halted After Nvidia Name-Dropped Trump Appointee

Daring Fireball
www.nytimes.com
2026-11-10 09:35:38
Ana Swanson and Devlin Barrett, reporting yesterday for The New York Times (gift link): Investigators at the Commerce Department were deep into a monthslong investigation of a Singaporean company that they suspected of smuggling Nvidia’s artificial intelligence chips into China when their work c...
Original Article

Please enable JS and disable any ad blocker

New York's Most Eligible (?) Former Mayor Is Finally Off the Market

hellgate
hellgatenyc.com
2026-11-10 09:31:00
A match made at the Citizens Budget Commission, and more news for your Tuesday morning....
Original Article

He was a billionaire politician who is maybe not so politically relevant; she was his girlfriend of 26 years, a financial executive, whatever that means. Can we make it any more obvious ?

That's right: Former New York City Mayor Michael Bloomberg and his longtime partner Diana Taylor finally tied the knot on Monday after more than a quarter century together. And what a quarter century it's been!

"Twenty-six years after a chance seating assignment, Mike Bloomberg and Diana Taylor have married," a spokesperson for Bloomberg posted on the ex-mayor's X account. "The longtime couple exchanged vows today in a small, private ceremony at their home on the Upper East Side, joined by family, including his daughters, Emma and Georgina. The two first crossed paths when they sat next to each other at a Citizens Budget Commission meeting while he was first running for Mayor."

Extremely romantic origin story aside (we always thought it was strange that the Citizens Budget Commission only meets by candlelight at that cute hole-in-the-wall Italian spot down the block), Bloomberg and Taylor have been through a lot together over the last two and a half decades.

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

'Reverse Engineer Anything': AI Companies Crack Down on the Coolest Thing People Were Doing With AI

403 Media
www.404media.co
2026-11-10 09:21:37
The future of hacking your devices is in local and open-weight AI....
Original Article

It was a fun few weeks while it lasted. People using both Anthropic’s Claude and OpenAI’s Codex to do AI-powered “reverse-engineering” or decompiling are now hitting guardrails or having their accounts limited while trying to do things like unbrick their internet-of-things devices or remove surveillance ads from their smart TVs.

Several people have reported triggering “safety checks” in Claude Code that prevented them from doing AI-powered reverse engineering; a highly upvoted Reddit post in r/ClaudeCode reads “The Dream is dead. Reverse Engineer Anything (REA) is not likely to work with Claude.” A thread in the Reverse Engineer Anything Discord from last week reads, “Claude is refusing to decompile anything,” with multiple users responding saying they have hit similar walls. And X  user log4j, who used OpenAI’s Codex to reverse engineer Samsung TVs, reported having their OpenAI account banned for violating its rules on “cyber abuse.” Other users said they asked Codex to reverse engineer hardware or their own code now say they have either been warned by the company or had their accounts restricted . A project called Decomp.wtf that made it easier to reverse engineer software and games has also shut down in recent days.

As we reported last month, Reverse Engineer-Anything has made it easy for people to use AI tools to hack electronics that they own and replace a manufacturer’s software or operating system with an open source or vibecoded one. People have installed new operating systems on their smart TVs, have turned baby monitors into AI assistants, have unbricked internet-of-things devices that were abandoned by their manufacturers, and have installed new software on very old hardware. At the time, I wasn’t sure how I felt about the trend, but as I’ve seen people take ownership and control back over the devices that manufacturers have purposefully bricked, turned into spyware, or have placed artificial limitations on, I have come to see AI-powered reverse engineering of electronic devices as one of the few LLM uses genuinely worth getting excited about. And so big companies have immediately taken steps to restrict this behavior.

The policy tweaks show that big AI corporations will protect other big corporations when their users find ways to use LLMs to circumvent the artificial constraints that hardware manufacturers put on their devices. AI-powered copyright circumvention is OK with big tech when it’s a massive company scraping the entire internet to build their LLMs, but is not OK when people then use those tools to liberate their internet-of-things devices. It’s not the end of AI-powered reverse engineering, but people suddenly getting locked out of their accounts for asking AI to reverse engineer their gadgets suggests that the future of this practice lies in open weight, local, and uncensored models, making it less accessible to the masses and the people who could probably benefit from it most.

Tarun Gogineni, an OpenAI engineer, tweeted that people are not supposed to have their OpenAI accounts restricted for reverse engineering: “these blocks are mostly accidental and a result of difficult decision boundaries; there is no prohibition against reverse engineering with codex. it’s getting fixed,” he tweeted.

But people who are doing AI-powered reverse-engineering suggest that they are moving away from big companies’ models to alternatives where they aren’t going to have their accounts disabled or have to figure out how to work around AI company guardrails.

“My general experience about reverse-engineering getting blocked has been more or less 100% correlated with the ‘cyber’ category blocks I have received. My take is that the lab[s] are probably under pressure to not have their models take part in some kind of criminal hacking activities and their cyber guardrails are erring on the side of being too strict,” Matt Brown, principal consultant at Brown Fine Security and someone who has been using AI to reverse-engineer devices, told 404 Media. “I am investing in hardware and trying to stay up to speed because the frontier labs guardrails will randomly change without warning on the same model. For my security research and pentesting work I really don’t want to invest tooling and energy into an ecosystem that will eventually lock me out. These guardrails on the frontier side have come at the same time as open weight models from (mostly) China are getting better and better.”

Brown posted a YouTube video last week explaining how he found hidden Bluetooth commands in an internet-of-things gas monitor attached to his propane tank with the open weight model GLM 5.3. He has explained in various posts that the guardrails big companies are putting on reverse engineering are why local AI and open weight models are important.

AI-powered reverse-engineering isn’t going anywhere, but it does look like it’s going to become much harder to use the most popular frontier models from OpenAI and Anthropic for it. It’s unclear how much longer it will be possible for you to open an OpenAI Codex window, ask it to find a smart TV hooked up to your network, and tell it to install a new operating system on it. Moving forward, it looks like this type of work will be best done with open source, open weight, uncensored, and local models. That’s a bummer, because one of the things that was so exciting about the Reverse Engineer-Anything trend was how easily accessible it had become.

Last month, researchers and law professors at Cornell Tech, Columbia University, and New York University published a paper about how cheap, AI-assisted reverse-engineering is challenging big manufacturers’ dominance over the devices their make, and is challenging existing intellectual property law.

“AI systems can identify hardware components, extract firmware, decompile object code, and clone entire apps. The resulting struggle between technology vendors and reverse engineers will challenge a wide range of laws, including trade secret, copyright, anti-circumvention, computer misuse, and contract,” they write. “The law of reverse engineering was built for a world where opening a device took time, tools, and rare expertise. That friction is vanishing as agents whittle endless, precise picks for the many little locks that fill our digital lives.”

In recent days, people have started modifying older digital cameras with new, vibe-coded operating systems. In a video about hacking old cameras, the YouTuber Breno Loves Cameras explains why it’s such a big deal and why camera companies don’t like it; that same logic can be applied to any device manufacturer.

“Camera companies have this practice of keeping features to release on newer cameras, and having distinctions [in features] in camera lines,” the YouTuber Breno said in one video. “This is breaking that from those big companies, which are going to lose a lot of money if this becomes a big thing.”

Through that lens, it’s easy to see why big companies are protecting other big companies. People finally found a thing to do with AI tools that gives consumers a bit more control over the devices they bought; it must be immediately stamped out.

“This vibe-code hacking is only called ‘reverse’ when somebody who lacks a trillion dollars is doing it,” the science fiction author Bruce Sterling tweeted. “When you ‘reverse engineer’ the entire Internet Common Crawl, you just built a nice AI model.”

About the author

Jason is a cofounder of 404 Media. He was previously the editor-in-chief of Motherboard. He loves the Freedom of Information Act and surfing.

Jason Koebler

The U.S. Is Driving Away Young Scientists

Hacker News
www.nytimes.com
2026-11-10 09:12:59
Comments...
Original Article

Please enable JS and disable any ad blocker

Nest Thermostat in 2026

Lobsters
artificially-awesome.com
2026-11-10 09:10:39
Comments...
Original Article

It’s been a long time coming. As someone who’s been first experimenting, then using, and now relying on Home Assistant to automate some portions of my home, I’ve long looked at a few key projects as being just out of reach. This past week I tackled one of those out of reach projects by installing a smart thermostat. Let me quickly catch you up on why I considered this out of reach, and then I will walk through how I choose a thermostat, the hurdles and quirks of installation, and then show the end result.

Background

The missing C Wire A couple years ago we moved from a home built in 1970 to a relatively much more modern home built in 2001. With this came a number of benefits, such as Cat5 Ethernet drops in several rooms, which have enabled me to grow and expand my home network and smart home goals.

One such nicety I was truly expecting was a C Wire behind the newer home’s thermostat, unfortunately my hopes were dashed when I took a peak behind the old thermostat on the wall. It was one of those basic 5-day/2-day digital thermostats that were very common in the 90’s/00’s, and was loaded with two AA batteries and no C wire. No C wire meant if I wanted to install a true “smart thermostat” I would be constantly tied to either batteries, a proprietary “C wire adapter” that some companies offer but are not universal, or replacing the thermostat wire in the wall. Truly, what I wanted was to replace the wire in the wall - having a C wire meant I could use nearly any smart thermostat on the market. The smart thermostats that connect with WiFi usually require a C wire as they are generally too power hungry to run on batteries.

So I walked away. For two years.

I thought, maybe I’ll hire someone to run a new wire for me, but that expense seemed frivolous compared to the various home improvement projects already in line waiting for funding. There it sat, on the back burner for about two years. In that time I’ve continued to expand my smart home, adding a Lay-z-spa WiFi module to the inflatable hot tub, some water leak detectors, a siren, and more. But integrating the homes HVAC climate control remained out of reach.

Then, a news story about consumer rights caught my attention. It lead me over to a FULU webpage, which I browsed around for a little while before finding a link to the Nest Thermostat bounty: Nest Learning Thermostat Gen 1 & 2 [Awarded]

I had heard of NoLongerEvil when the news originally broke earlier this year. But this reminded me of the project so I jumped into the NLE documentation pages Introduction - No Longer Evil and read through the installation steps. Didn’t seem to hard, especially for a 2nd Gen Nest, and there was good support with Home Assistant. Maybe a day or so later I came across a post from someone using a zigbee thermostat in Home Assistant. The C-Wire upgrade continues to roll around in my mind as something worth trying. I order a 50ft 6-wire thermostat cable on Amazon and start pre-planning how I can make the upgrade happen.

The missing C Wire

So I head down to the basement and locate the existing thermostat cable running from the furnace. I trace it along until it diverts up through a hole in the ceiling. I consider my positioning in the house and believe that this is pretty much directly below where the thermostat is mounted in the hallway on the level above me. I look for how the wire is secured - with many zip ties onto various pipes. Some water lines some gas lines. That is fine but I am concerned with how the wire might have been secured inside the wall behind the thermostat. A single staple could not only ruin my plan for an “easy” upgrade but might mean cutting large holes in walls where I really don’t want to.

Old wire

Based on the accessibility it didn’t look feasible to fish a new wire to the thermostat while keeping the existing wire in place. Doing so would require adding at least another hole in the basement ceiling, and likely another hole in the wall above, things I would like to avoid. That left me with essentially two options. Either attach the new wire to the old one behind the thermostat and pull down from the basement, or cut the wire in the basement, attach the new wire, and pull up. Either way was essentially the same - once the old wire is pulled out of sight on whichever side, that would be a point of no return.

Old wire

I decided to attach the new wire in the hallway, behind the thermostat. I disconnected the wires and removed the old thermostat, then used a copious amount of electrical tape to join the new wire with the old one. I returned to the basement and started pulling the old wire down. At first there was essentially no give. I thought I was toast - the installer “must” have put a staple into a stud to secure the old wire behind the wall. I suppose this is probably a builders best practice but sometimes as a homeowner you just need a wire to be able to pull through, ya know?

Anyway, I went back upstairs, and pushed and pulled the wire a few inches over and over, trying to free up the drywall enough to hopefully past the thicker taped portion through the drywall. In the end I got my drill and made the existing hole slightly larger thinking this might be the hold up.

Back downstairs and on my final hope, I gave the old cable a strong tug and low and behold it started to slide out! I cannot express how much of a relief this was as I was able to get a couple of solid feet to pull through so I figured at this point there must not be anything securing the cable in the wall. All I need to do is get the new cable the few feet from the thermostat location through the floor / basement ceiling hole. Once that is passed it would be straightforward to finish routing the cable by hand.

OK, so I head back upstairs and find the new cable has wound up a bit so I straighten it out. Then I think about how I need to avoid pulling the whole new cable into the wall, so I tie the open end to a door handle in the hall. This way i cannot accidentally pull too far.

Protect the pull-through at all costs

One or two more solid pulls and I see the electrical tape pulling through the ceiling! Yay, I am essentially home free.

Taped section pulls through

I end up having to go up/down the stairs several more times as the new cable keeps binding up, but each time I can clear the bind and then pull a more through. With a couple feet left upstairs (still tied to the door handle) I stop pulling and prepare to run the wire over to the furnace. The old wire I mentioned was zip tied to pipes for most of it’s routing, but I discovered a long portion of the run was a hot water pipe. This seems like a non-optimal solution considering copper wire is a great transmitter of heat. So instead I pop a couple reusable cable staples into a beam and then run most of the way by following some electrical wires. Near the furnace I go ahead and use cable ties onto nearby conduit for the final part of the run.

Taped section pulls through

So, we’re at the furnace, now what? Per my researching basically all modern HVAC systems will have a screw terminal for a C Wire. I guess installers just save a couple bucks by running a 4-wire cable instead of a 5-wire cable? I don’t understand this at all and it makes me super annoyed. Anyway, I actually bought a 6-wire cable because it was essentially the same price as a 5-wire, I think literally about a $5 difference. So I have an extra wire just in case some future HVAC enhancement needs another wire. Even in homes not using smart thermostats by default or not needing a C Wire should just have the spare wire there. Leave it un-stripped and taped up or secured with a wire nut, but just don’t run 4-wire cables. Hopefully at some point after 2001 it became a new building code. Rant over.

Anyway turn off the power and then pop open the furnace panels and find the wiring area with the old 4-wire cable. I take pictures (always take pictures of before & after!). The wiring is very simple, just using screw terminals. I remove the old wires and connect new ones including the C wire. I actually used the wrong color at first but then found that the default for a C wire is blue so I swapped it. With everything buttoned up I head upstairs and connect the old thermostat. I also enable power to the furnace again. Now I can run through the functions - everything works! (fan on, heat, cool). I’m ready to go smart. Since I hadn’t actually received the new thermostat yet, I go ahead and install the old one back on the wall. Rewiring the furnace

Picking the upgrade

When we left off on the smart thermostat I mentioned a couple of options I was weighing. Either a Nest or one of the Zigbee models (such as the Zen Zigbee Thermostat). I had also considered “rolling my own” from a zigbee controlled relay board as well.

In the end I took what feels like the safest option - the Nest 2nd Gen thermostat. Why a Nest with other options exist?

  • Solid hardware - people absolutely raved on them when they came out (before Google went and killed all of their smart functions).
  • Family friendly - Comparing the user experience of the Nest to the Zen, I feel that the Nest is slightly more user friendly - just rotate the outer ring to change the set temp. The Zen is pretty close though and I don’t think would have been an issue.
  • Keeps working if Home Assistant, WLAN, or internet go down (I.e., you can still walk up to it and set the mode or temp manually and it will control HVAC fully offline). I’m not sure if all Zigbee models can do this - likely some can but it was definitely something where I wanted to make sure manual control would always be available even if technology is down.
  • Price - absolute steal pricing for used. This makes sense given that the hardware was abandoned by the OEM. Most people don’t want something they have to hack/flash/self-host/etc. This makes picking up a used Nest quite easy. If you decide to go this route be sure to purchase a compatible model (currently only 1st and 2nd Gen is supported with 3rd Gen hopefully in the future) and WITH the required back plate. The Nest is essentially two pieces and you must have both - the back plate connects to your thermostat wires and then the display snaps into that. Without both you will only have a paper weight and weirdly the auction listings I saw for only a back plate were quite a bit more expensive than listings that had both pieces included.
  • If you’re in the UK I think there was a 3rd piece you need - some kind of control box for your HVAC - please do your research!

Honestly if I had woken up on my other side that morning I might have bought the Zen. I already run most of my smart home on Zigbee, the 2nd hand pricing I saw was very close to that of the Nest 2nd gen, the interface seems simple, etc. It was a close race.

Hacking the Nest

Before recieving the Nest I went ahead and added the NoLongerEvil app to Home Assistant (HAOS), so that was ready to go.

After waiting a few days for the delivery I was ready to swap out the thermostat, but wait, we first have to free it from the evil corporate clutches. In truth I could have plugged it straight in and used it but with Google terminating them it would have been even dumber than my old thermostat - allowing set point and mode, no schedule programming supported - obviously that wouldn’t fly.

So I pulled up the NoLongerEvil documentation again and got started. In the end the process was mostly easy with a couple of gotchas. First, be aware that flashing from a Windows PC is not supported. Only Mac and Linux will work. Luckily I already run Bazzite on most PCs so I didn’t have to worry about this one. If I’d only had a Windows PC then flashing a bootable Linux desktop to a USB flashdrive would have only added a few minutes to the process.

I opened the AppImage which reported everything was ready to start, I connected the Nest to a MicroUSB (too old for USB-C port) and it booted up.

From there things were a little bit “fiddly”. I did have to run the extra terminal command for expanded USB access which was listed as an optional step in the guide. Conversely I didn’t need to install any extra packages as apparently Bazzite had everything needed by default.

Upon the first couple of attempts the installer timed out waiting for the Nest to connect. This was mostly because the Nest takes quite a while to boot and the installer times out slightly too soon (I think). On the 3rd try I got the timing right and the installer found the Nest and flashed it.

After flash was also a bit “fiddly”. So the Nest booted up from the “NLE” boot screen, confirming the software had loaded successfully. From there the installer goes right into trying to connect to the Nest over the network. However, you have to get the Nest connected to your WiFi network (obviously, but not mentioned anywhere in the setup document). Secondly, after booting up the Nest apparently has a timeout of something like 2-3 minutes where it will function normally but after the timeout it will go to an error screen saying “please connect the back plate” and it simply won’t let you do anything once that comes up. So you might be in the middle of typing in your “a little too complex” WiFi password when the error pops up and there is no way to exit the error except connecting the back plate. So I did that and then went back and re-started entering the WiFi password when a second error popped up of “no wires detected” (or similar) - again no way to exit or go back. Sigh - this was pretty annoying to be honest.

Fine - I shut off furnace power, remove the old thermostat and then wire in the new back plate, and then click in the Nest. Now, standing in the hall rather than sitting at my desk I start entering the WiFi for the third time. And once again I am a few character in when “Power not detected on Rh wire” OMG CAN YOU JUST LET ME ENTER THE DARN PASSWORD.

Back downstairs, turn on furnace power, back upstairs, the Nest walks through a setup process, shows me which wires are connected, everything looks good. Finally, after probably 20 minutes of being more interrupted, the Nest let’s me finish entering the WiFi credentials. Nest back plate

Back at my computer - I remember that I probably need to add a VLAN rule to allow Nest specific traffic to reach Home Assistant. I try to keep all IoT devices on a separate WiFi network that by default cannot access the internet or other devices on the LAN. I add the firewall rule and then continue with the installer - it finds the Nest quickly and, applies the LAN address and correct port for Home Assistant / NLE, and we are ready to go.

Programming

And wow, it’s really really good. First of all, I’ve always been annoyed that “programmable thermostats” are limited to about 4 settings per weekday and per weekend. I figure if you can do 4 why not 6? Why not 8? In our old home we replaced the aging furnace and opted for a “smart touchscreen” thermostat and it was literally the worst. It was a terrible resistive LCD that barely responded to taps, the interface was needlessly complex, burying settings many pages deep, it didn’t allow to setup a fan cycle, and was still limited to 4 temp settings in the schedule. Awful, just awful.

Why is the Nest good? First of all, I can’t tell you how much easier it is to program the schedule from a PC browser than trying to stand in the hall and use buttons on the old one. Click the time bubble and enter the temp. Drag the bubble earlier or later. Add more bubbles OMG IT ALLOWS MORE THAN 4 PER DAY ITS A MIRACLE.

NoLongerEvil Nest Programming Realistically do people need more than 4 per day? I don’t know. All I know is that when programming the old one I would always feel like “man I just need one more time setting to get this how I want it.”

Fan cycle. This is something I have wanted forever. Ever since I heard someone, probably with a Nest, talk about it ten years ago or something. It let’s you say “if the heat or A/C don’t run for a full hour, spin the fan for a few minutes.” Why is that such a big deal? Well, in a house, especially with multiple floors, the spot with the thermostat is one temperature, but there are going to be a whole range of other temperatures everywhere else. Colder in the basement, hotter upstairs, maybe cooler in that one room and hotter where the sun shines in the windows, etc. Not only does this help to normalize temperatures by moving the air around, but it also keeps the air clean and fresh by running it through your air filter even when heating and cooling isn’t needed.

Learning. I don’t yet know if I care about this. Apparently the thermostat will take notice if you keep turning up or down the set point, and eventually it will adjust your daily schedule based on that behavior. I have this enabled for now and will be curious to see if it works or is annoying.

Other. It gets the date, time and outside temperature from Home Assistant - pretty cool! It also has a built in humidity sensor. NoLongerEvil Nest Programming

Home Assistant

I mentioned that I installed NoLongerEvil as an addon in Home Assistant. This is not the only option - you can run it separately with or without Home Assistant, and you can even use a free cloud service from NLE if you aren’t into self-hosting. In that case you are relying on NLE to keep their cloud bills paid and stuff. As an already prolific self-hoster, I definitely wanted to go that route.

In addition to the NLE screen where I can see status and set the schedule, it was also easy to add a climate card to my dashboard for family use. This card allows easy access from our phones in the Home Assistant App to tick up or down the temperature, and change the mode (like go from heating to cooling or off). This is great because it both makes the thermostat available to everyone who I decide to give an Home Assistant account to, through their phone. And because Home Assistant is accessible from anywhere, we can tweak the house settings from anywhere in the house or even away from home. Driving home in a blizzard and really want the house nice and toasty when you get there? No problem.

More than just remote control, all the same core functions available from the climate card can be added to Home Assistant automations. I may or may not ever add automations but for someone already using them to turn on and off lights, send notifications, etc., this would not be difficult. I just haven’t thought of anything I need to automate yet. But it gives me a nice feeling knowing I can have so much control over the device I purchased.

Conclusion

It’s up and working, the heating kicked on right on schedule this morning to warm up the house before clock alarms sounded. I gave the family a super quick 2-minute demo of how to use the wall unit and how to pull up the card in Home Assistant. No questions, a little bit of praise (for the phone control, the money saved, and keeping hardware out of a landfill). It seems like a lot of effort for such a small result, but it goes so much beyond this. It’s going to end up being countless little things for years to come. It’s going to be turning things down/off on a road trip because we forgot before leaving the house. It’s going to be ticking up the heat when we are all in the basement playing a board game and feeling chilly. Or a hundred other scenarios that will happen.

Would I do it all again? Yes for sure. Especially running a C Wire as that opens the door to so many options and frees me from being worried a pair of AA batteries will die during a very inopportune time. The Nest was one choice of many, but I knew I wanted something that would tie directly into Home Assistant. Once you control your home automation it is nearly impossible to “go back” or accept a corporate cloud solution; this was a must.

By the way, I typed this whole thing up by hand - no AI writing here. I even left a few typos in “on purpose” to prove it (I did try to fix most of them LOL). If you appreciate my writing feel free to scroll to the top and hit “buy me a coffee” at the top of the page.

Security updates for Tuesday

Linux Weekly News
lwn.net
2026-11-10 09:03:54
Security updates have been issued by AlmaLinux (curl, dpdk, glibc, kernel, nodejs-nodemon, nodejs22, nodejs24, nodejs:18, nodejs:22, patch, qt5, qt5-qtdeclarative, ruby, ruby4.0, ruby:3.3, ruby:4.0, squid:4, tomcat, util-linux, and webkit2gtk3), Debian (symfony and tomcat10), Fedora (bind, dnf5, ker...
Original Article
Dist. ID Release Package Date AlmaLinux ALSA-2026:96092 10 curl 2026-11-09 AlmaLinux ALSA-2026:96083 8 dpdk 2026-11-09 AlmaLinux ALSA-2026:96087 8 glibc 2026-11-10 AlmaLinux ALSA-2026:93413 10 kernel 2026-11-10 AlmaLinux ALSA-2026:93412 9 kernel 2026-11-10 AlmaLinux ALSA-2026:96236 10 nodejs-nodemon 2026-11-10 AlmaLinux ALSA-2026:96094 10 nodejs22 2026-11-10 AlmaLinux ALSA-2026:96088 10 nodejs24 2026-11-10 AlmaLinux ALSA-2023:4536 8 nodejs:18 2026-11-09 AlmaLinux ALSA-2026:96234 9 nodejs:22 2026-11-10 AlmaLinux ALSA-2026:96215 8 patch 2026-11-10 AlmaLinux ALSA-2023:6369 9 qt5 2026-11-09 AlmaLinux ALSA-2026:96075 8 qt5-qtdeclarative 2026-11-10 AlmaLinux ALSA-2026:96235 10 ruby 2026-11-10 AlmaLinux ALSA-2026:96067 9 ruby 2026-11-09 AlmaLinux ALSA-2026:96233 10 ruby4.0 2026-11-09 AlmaLinux ALSA-2026:96068 9 ruby:3.3 2026-11-09 AlmaLinux ALSA-2026:96120 9 ruby:4.0 2026-11-09 AlmaLinux ALSA-2026:96078 8 squid:4 2026-11-09 AlmaLinux ALSA-2026:92862 10 tomcat 2026-11-10 AlmaLinux ALSA-2026:96212 8 util-linux 2026-11-09 AlmaLinux ALSA-2026:96080 8 webkit2gtk3 2026-11-09 Debian DSA-6617-1 stable symfony 2026-11-09 Debian DLA-4889-1 LTS tomcat10 2026-11-09 Fedora FEDORA-2026-cf9d4ec5e6 F44 bind 2026-11-10 Fedora FEDORA-2026-5879bc27e1 F43 dnf5 2026-11-10 Fedora FEDORA-2026-1028a81d8a F43 kernel 2026-11-10 Fedora FEDORA-2026-0e28591060 F44 kernel 2026-11-10 Fedora FEDORA-2026-655049a906 F45 kernel 2026-11-10 Fedora FEDORA-2026-1028a81d8a F43 kernel-headers 2026-11-10 Fedora FEDORA-2026-0e28591060 F44 kernel-headers 2026-11-10 Fedora FEDORA-2026-655049a906 F45 kernel-headers 2026-11-10 Fedora FEDORA-2026-d657495ea3 F44 libmodulemd 2026-11-10 Fedora FEDORA-2026-946f33e2c8 F45 libmodulemd 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 maturin 2026-11-10 Fedora FEDORA-2026-a3a026d9ff F43 perl-CGI 2026-11-10 Fedora FEDORA-2026-516e427bac F44 perl-CGI 2026-11-10 Fedora FEDORA-2026-a04615c725 F45 perl-CGI 2026-11-10 Fedora FEDORA-2026-3cb8ce0117 F43 perl-Net-IDN-Encode 2026-11-10 Fedora FEDORA-2026-effb380a7c F44 perl-Net-IDN-Encode 2026-11-10 Fedora FEDORA-2026-f6acaf8756 F45 perl-Net-IDN-Encode 2026-11-10 Fedora FEDORA-2026-092670ec3e F43 perl-Starlet 2026-11-10 Fedora FEDORA-2026-bd36d053a1 F44 perl-Starlet 2026-11-10 Fedora FEDORA-2026-7d9cd72397 F45 perl-Starlet 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 python-jiter 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 python-pydantic-core 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 python-pysequoia 2026-11-10 Fedora FEDORA-2026-1520dedf55 F43 python3-docs 2026-11-10 Fedora FEDORA-2026-f3fe9323aa F45 python3-docs 2026-11-10 Fedora FEDORA-2026-1520dedf55 F43 python3.14 2026-11-10 Fedora FEDORA-2026-f3fe9323aa F45 python3.15 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 ruff 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-afterburn 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-astral_async_zip 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-clearscreen 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-jiter 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-lzma-rust2 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-mailparse 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-pyo3-introspection 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-python-pkginfo 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-serde_json 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-testresult 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 rust-zip 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 selenium-manager 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 ty 2026-11-10 Fedora FEDORA-2026-2b0f14aa7b F45 uutils-coreutils 2026-11-10 Mageia MGASA-2026-0581 10 glibc 2026-11-09 Mageia MGASA-2026-0582 10 packages 2026-11-09 Mageia MGASA-2026-0585 10 php-smarty 2026-11-09 Mageia MGASA-2026-0584 10 python-aiohttp 2026-11-09 Mageia MGASA-2026-0583 10 thunderbird 2026-11-09 Oracle ELSA-2026-96092 OL10 curl 2026-11-09 Oracle ELSA-2026-83496 OL7 firefox 2026-11-09 Oracle ELSA-2026-92363 OL7 firefox 2026-11-09 Oracle ELSA-2026-73425 OL8 gdb 2026-11-09 Oracle ELSA-2026-76781 OL10 glibc 2026-11-09 Oracle ELSA-2026-95618 OL9 glibc 2026-11-09 Oracle ELSA-2026-95212 OL8 kernel 2026-11-09 Oracle ELSA-2026-500570 OL8 oVirt 4.5 ovirt-engine-wildfly 2026-11-09 Oracle ELSA-2026-500571 OL9 oVirt 4.5 ovirt-engine-wildfly 2026-11-09 Oracle ELSA-2026-93471 OL8 perl-YAML:1.24 2026-11-09 Oracle ELSA-2026-95725 OL8 tesseract 2026-11-09 Slackware SSA:2026-313-01 krb5 2026-11-09 SUSE SUSE-SU-2026:5141-1 SLE12 PackageKit 2026-11-09 SUSE SUSE-SU-2026:5142-1 SLE15 oS15.4 PackageKit 2026-11-09 SUSE SUSE-SU-2026:5144-1 SLE15 oS15.5 PackageKit 2026-11-09 SUSE SUSE-SU-2026:5143-1 SLE15 oS15.6 PackageKit 2026-11-09 SUSE SUSE-SU-2026:24618-1 SLE16.1 ansible-core 2026-11-10 SUSE SUSE-SU-2026:24540-1 SLE16.1 apr-util 2026-11-10 SUSE openSUSE-SU-2026:22232-1 oS16.1 apr-util 2026-11-09 SUSE SUSE-SU-2026:5134-1 SLE15 aspell 2026-11-09 SUSE openSUSE-SU-2026:12260-1 TW buildpacks-cli 2026-11-09 SUSE SUSE-SU-2026:5135-1 SLE15 SLE5.5 SLE-m5.5 oS15.5 dpdk22 2026-11-09 SUSE SUSE-SU-2026:5145-1 SLE15 oS15.4 firefox 2026-11-09 SUSE openSUSE-SU-2026:12259-1 TW firefox 2026-11-09 SUSE openSUSE-SU-2026:12261-1 TW git-bug 2026-11-09 SUSE SUSE-SU-2026:4348-2 SLE12 glib2 2026-11-10 SUSE SUSE-SU-2026:24616-1 SLE16.1 google-cloud-sap-agent 2026-11-10 SUSE SUSE-SU-2026:24615-1 SLE16.1 haproxy 2026-11-10 SUSE SUSE-SU-2026:24541-1 SLE16.1 jsoup 2026-11-10 SUSE SUSE-SU-2026:24543-1 SLE16.1 kernel 2026-11-10 SUSE SUSE-SU-2026:5136-1 SLE12 krb5 2026-11-09 SUSE SUSE-SU-2026:24545-1 SLE16.1 libXtst 2026-11-10 SUSE SUSE-SU-2026:5131-1 SLE15 libjxl 2026-11-09 SUSE SUSE-SU-2026:24546-1 SLE16.1 librsvg 2026-11-10 SUSE openSUSE-SU-2026:12252-1 TW libruby4_0-4_0 2026-11-09 SUSE openSUSE-SU-2026:12257-1 TW libunbound8 2026-11-09 SUSE SUSE-SU-2026:24548-1 SLE16.1 nodejs24 2026-11-10 SUSE SUSE-SU-2026:24547-1 SLE16.1 nvidia-open-driver-G07-signed 2026-11-10 SUSE SUSE-SU-2026:24544-1 SLE16.1 perl-XS-Parse-Keyword 2026-11-10 SUSE SUSE-SU-2026:5133-1 SLE15 oS15.6 poppler 2026-11-09 SUSE SUSE-SU-2026:24542-1 SLE16.1 python-Brotli 2026-11-10 SUSE SUSE-SU-2026:5137-1 SLE12 python 2026-11-09 SUSE SUSE-SU-2026:24613-1 SLE16.1 rsyslog 2026-11-10 SUSE openSUSE-SU-2026:12253-1 TW tekton-cli 2026-11-09 SUSE openSUSE-SU-2026:12254-1 TW tomcat 2026-11-09 SUSE openSUSE-SU-2026:12255-1 TW tomcat10 2026-11-09 SUSE openSUSE-SU-2026:12256-1 TW tomcat11 2026-11-09 SUSE openSUSE-SU-2026:22233-1 oS16.1 trivy 2026-11-09 SUSE SUSE-SU-2026:24539-1 SLE16.1 udisks2 2026-11-10 SUSE openSUSE-SU-2026:22231-1 oS16.1 udisks2 2026-11-09 SUSE SUSE-SU-2026:5139-1 SLE12 xen 2026-11-09 SUSE SUSE-SU-2026:5140-1 SLE15 oS15.6 xen 2026-11-09 SUSE SUSE-SU-2026:5138-1 SLE15 zchunk 2026-11-09 SUSE openSUSE-SU-2026:12258-1 TW zk 2026-11-09 Ubuntu USN-9016-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 26.10 apache2 2026-11-10 Ubuntu USN-9001-2 18.04 20.04 ca-certificates 2026-11-09 Ubuntu USN-9013-1 16.04 18.04 20.04 22.04 24.04 26.04 26.10 fetchmail 2026-11-09 Ubuntu USN-9007-1 24.04 26.04 26.10 freerdp3 2026-11-09 Ubuntu USN-9035-1 14.04 kernel 2026-11-10 Ubuntu USN-9017-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 26.10 libgphoto2 2026-11-10 Ubuntu USN-9012-1 26.04 libheif 2026-11-09 Ubuntu USN-9008-1 22.04 24.04 26.04 26.10 libnfs 2026-11-09 Ubuntu USN-8890-3 24.04 26.04 26.10 libsoup3 2026-11-09 Ubuntu USN-9027-1 20.04 22.04 linux, linux-aws, linux-aws-5.15, linux-aws-fips, linux-azure, linux-azure-5.15, linux-azure-fde-5.15, linux-azure-fips, linux-gcp, linux-gcp-5.15, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-intel-iot-realtime, linux-intel-iotg, linux-intel-iotg-5.15, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-nvidia, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-oracle, linux-oracle-5.15, linux-realtime 2026-11-10 Ubuntu USN-9032-1 14.04 16.04 18.04 linux, linux-aws, linux-aws-fips, linux-aws-hwe, linux-azure, linux-azure-4.15, linux-azure-fips, linux-fips, linux-gcp, linux-gcp-4.15, linux-gcp-fips, linux-hwe, linux-kvm, linux-oracle 2026-11-10 Ubuntu USN-9030-1 18.04 20.04 linux, linux-aws, linux-aws-fips, linux-azure, linux-azure-5.4, linux-azure-fips, linux-bluefield, linux-fips, linux-gcp, linux-gcp-5.4, linux-gcp-fips, linux-hwe-5.4, linux-ibm, linux-ibm-5.4, linux-iot, linux-kvm, linux-oracle, linux-oracle-5.4, linux-xilinx-zynqmp 2026-11-10 Ubuntu USN-9022-1 24.04 linux, linux-aws, linux-azure, linux-azure-fips, linux-gcp, linux-gke, linux-ibm, linux-lowlatency, linux-oracle, linux-vmware 2026-11-10 Ubuntu USN-9018-1 26.04 linux, linux-aws, linux-gcp, linux-ibm, linux-oem-7.0, linux-oracle 2026-11-10 Ubuntu USN-9033-1 14.04 16.04 linux, linux-aws, linux-kvm, linux-lts-xenial 2026-11-10 Ubuntu USN-9034-1 14.04 linux-aws 2026-11-10 Ubuntu USN-9031-1 18.04 20.04 linux-aws-5.4, linux-raspi, linux-raspi-5.4 2026-11-10 Ubuntu USN-9024-1 22.04 24.04 linux-aws-6.8, linux-gcp-6.8, linux-ibm-6.8, linux-lowlatency-hwe-6.8, linux-nvidia, linux-realtime-6.8 2026-11-10 Ubuntu USN-9020-1 24.04 26.04 linux-aws-7.0, linux-azure-fde, linux-azure-fde-7.0, linux-gcp-7.0, linux-gke, linux-oracle-7.0, linux-realtime 2026-11-10 Ubuntu USN-9023-1 24.04 linux-aws-fips, linux-gcp-fips, linux-gkeop, linux-realtime 2026-11-10 Ubuntu USN-9019-1 26.04 linux-azure 2026-11-10 Ubuntu USN-9026-1 22.04 linux-azure-6.8, linux-azure-fde-6.8 2026-11-10 Ubuntu USN-9028-1 22.04 linux-azure-fde 2026-11-10 Ubuntu USN-9025-1 22.04 24.04 linux-oracle-6.8, linux-raspi, linux-raspi-realtime 2026-11-10 Ubuntu USN-9029-1 22.04 linux-raspi 2026-11-10 Ubuntu USN-9014-1 18.04 20.04 22.04 24.04 26.04 26.10 openjdk-17 2026-11-09 Ubuntu USN-9015-1 20.04 22.04 24.04 26.04 26.10 openjdk-21 2026-11-09 Ubuntu USN-9004-1 22.04 24.04 26.04 26.10 openjdk-25 2026-11-09 Ubuntu USN-9005-1 26.10 openjdk-27 2026-11-09 Ubuntu USN-9009-1 16.04 18.04 20.04 22.04 24.04 26.04 26.10 openjdk-8 2026-11-09 Ubuntu USN-9010-1 18.04 20.04 22.04 24.04 26.04 26.10 openjdk-lts 2026-11-09 Ubuntu USN-9006-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 26.10 perl 2026-11-10 Ubuntu USN-9011-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 26.10 pyasn1 2026-11-09

Compress any LLM 3x in one click,near-lossless,in under 50 MB RAM

Hacker News
neuracryption.com
2026-11-10 08:51:51
Comments...
Original Article

01. Architectural Motivation & The Physics of the Memory Wall

To understand why generative artificial intelligence models crawl to an agonizing halt on edge devices, one must look past algorithmic abstractions and confront the underlying solid-state physics of digital silicon. Consider the typical machine learning workstation or consumer laptop. It is equipped with a modern graphics processing unit such as the NVIDIA GeForce RTX 3050 Ti Mobile (GA107 silicon). On paper, this processor is astonishing: it houses 2,560 CUDA cores and 80 second-generation Tensor Cores, delivering an aggregate compute density of 29.8 TFLOPS in half-precision floating-point arithmetic. In theory, it can execute nearly thirty trillion numerical calculations every second.

Yet, when an engineer attempts to deploy a modest 7-billion parameter language model in uncompressed FP16 precision, the system collapses immediately.

The root cause is the memory wall : a severe physical asymmetry where computational density on GPU dies has scaled exponentially following Moore's Law, while the external memory interface that transports numbers from dynamic random-access memory (GDDR6 VRAM) into arithmetic logic units has hit hard thermal and electrical signaling limits. On consumer silicon, that interface is typically 128 bits wide, providing an aggregate memory bandwidth of 192.0 gigabytes per second.

During autoregressive token generation, a language model emits exactly one token at a time ($M = 1$). To predict that single token, the GPU cannot reuse loaded weights across a sequence batch. It must sweep every single parameter matrix of the network from high-latency global VRAM into on-chip register files. For a single token, operational arithmetic intensity drops to approximately 1 FLOP per byte loaded .

At 192.0 GB/s, reading an uncompressed 14 GB model once requires approximately 73 milliseconds. This caps the physical theoretical ceiling of generation to less than 14 tokens per second, leaving more than 95% of the GPU's computational tensor cores completely starved of data, idling while bytes traverse copper traces.

Even worse, consumer edge GPUs feature strict physical VRAM limits, typically capped at 4GB (3,770.6 MiB addressable ceiling). Because a 14 GB or 7 GB model physically cannot fit inside 4GB of video memory, traditional execution frameworks offload layers to host system RAM across the PCIe expansion bus. A standard PCIe Gen3 x4 connection provides an effective transfer rate of roughly 3.94 GB/s. Offloading parameters across this bus causes generation speeds to crater to 0.28 tokens per second : an unusable latency for interactive speech interfaces, autonomous robotics, or real-time telecommunications.

Prior post-training quantization schemes (such as GPTQ, AWQ, and SmoothQuant) attempted to compress weights to 4-bit representations, but introduced three critical architectural bottlenecks:

  • Domain-Shift Brittleness: Quantization grids calibrated on synthetic or generic text corpora (such as WikiText-2 or C4) experience catastrophic perplexity degradation when exposed to telephone speech transcripts, structured JSON schemas, medical terminology, or foreign languages.
  • High Preprocessing Latency: Calculating empirical second-order Hessian statistics requires minutes to hours of forward passes over GPU hardware, making on-device dynamic compression impossible.
  • Structural Incompatibility with Recurrent State-Space Models: Modern architectures featuring non-transformer layers (such as Mamba-2, ConvNet/SSM hybrids, and Liquid Neural Networks) break standard transformer calibration assumptions, resulting in severe runtime failures.

SPECTRA resolves these constraints through an architecture-agnostic framework grounded in Shannon source coding theory, calibration-free topological saliency extraction, Group-32 microscaling, and register-fused Triton GPU kernels.

Table 0: Master Architectural Taxonomy and Methodological Foundations of the SPECTRA Engine

Comprehensive taxonomy mapping SPECTRA core subsystems to mathematical principles and execution hardware.

Subsystem Component Mathematical / Physical Principle Algorithmic Mechanism Hardware Execution Target
Rate-Distortion Compressor Continuous Shannon Rate-Distortion $R(D)$ Group-32 asymmetric 4-bit uniform grid with zero points CPU / Host Memory (Zero-GPU overhead)
AST Sensitivity Pre-Scanner Asymptotic Fisher Information Curvature $F_{jj} \propto |\gamma_j|^2$ Direct AST traversal extracting LayerNorm/RMSNorm scales Host Python Runtime (< 50 ms latency)
HDSQ-Ultra Outlier Isolation Fourth-moment population kurtosis $\kappa > 3.0$ Adaptive outlier ratio $r \le 3.0\%$ with 32-bit index packing Contiguous pinned host memory / TRDC binary
Fused W4A16 GEMV Kernel Arithmetic intensity maximization ($M = 1$) In-register dual nibble unpacking, scaling, and FMA accumulation GPU Register Files / Vector SRAM ($M = 1$)
Batched W4A16 GEMM Kernel Tensor Core compute density ($M \ge 2$) 2D output tiling with $L2$ cache swizzling and Tensor Cores Ampere Tensor Cores ($tl.dot$ instructions)
SpectraFusedEmbedding Static parameter memory footprint reduction Dynamic row-gather dequantization for large vocabularies On-chip VRAM (Saves 69.4% embedding RAM)
PingPongLayerOffloader PCIe bus hiding via latency overlapping Double-buffered asynchronous CUDA DMA streams PCIe Gen3/4 x4 bus + dual GPU staging slots
SpectraQuantizedCache Dynamic context memory trajectory bounding Group-32 microscaled 4-bit KV Cache allocations GPU VRAM (8,192 tokens on 4GB hardware)
TRDC Serialization Format Zero-copy memory mapping via POSIX $mmap$ 24-byte fixed binary header + flat tensor buffers Direct-to-GPU streaming ($TRDC4B01$)

02. Information Theory & The Mechanics of Functional Losslessness

2.1 Lossless Bitstream Entropy Bounds vs. Continuous Parameter Rate-Distortion

To understand why traditional compression formats cannot shrink neural networks below the memory wall, we examine the theoretical limits of bit-exact representation through classical information theory. Under Claude Shannon's landmark 1948 Source Coding Theorem, the minimum expected code length $L$ required to losslessly encode a discrete symbol sequence $W$ is bounded strictly by its Shannon entropy $H(W)$:

Shannon Source Coding Theorem (Discrete Entropy Bound)

$$L \ge H(W) = - \sum_{i=1}^{M} p(w_i) \log_2 p(w_i)$$

Where $p(w_i)$ is the empirical probability of occurrence of parameter value $w_i$.

In modern foundation models, learned weight tensors are stored in IEEE 754 half-precision (FP16) or Brain Floating Point (BF16) formats. A 16-bit floating-point number factorizes into a 1-bit sign $s \in \{0, 1\}$, an $E$-bit exponent $e \in \{0, 1\}^E$, and an $M$-bit fractional significand or mantissa $m \in \{0, 1\}^M$:

Floating-Point Representation Decomposition

$$w = (-1)^s \cdot 2^{e - \text{bias}} \cdot \left(1 + \sum_{k=1}^{M} m_k 2^{-k}\right)$$

Standard IEEE 754 FP16 ($E = 5, M = 10$) and BF16 ($E = 8, M = 7$) bit-field factorization.

Empirical entropy audits across deep parameter manifolds reveal a fundamental structural asymmetry in the information density of these fields:

  • Sign Bit Entropy: Distributed near-symmetrically across positive and negative domains, exhibiting near-maximal discrete entropy: $H(s) \approx 1.0\text{ bit}$.
  • Exponent Vector Entropy: Displays strong clustering around layer-specific dynamic scales, yielding low discrete entropy: $H(e) \in [1.6, 2.7]\text{ bits}$.
  • Fractional Mantissa Entropy: In overparameterized neural networks, stochastic gradient updates fill the lowest-order mantissa bits with near-uniform noise. In BF16 ($M = 7$), empirical mantissa entropy is $H(m) \approx 6.8\text{ to }7.0\text{ bits}$; in FP16 ($M = 10$), it reaches $H(m) \approx 9.5\text{ to }9.9\text{ bits}$.

Summing these components demonstrates that the aggregate discrete entropy of floating-point weight tensors is approximately 10.5 bits in BF16 and 13.5 bits in FP16. Consequently, any general-purpose or floating-point lossless bitstream compressor (such as zstd, LZ4, or fpzip) is fundamentally bounded to a lossless compression ratio of:

Physical Limits of Bit-Exact Lossless Compression

$$R_{\text{lossless}}(\text{FP16}) = \frac{16}{H(W_{\text{FP16}})} \approx \frac{16}{13.5} \approx 1.19\times, \qquad R_{\text{lossless}}(\text{BF16}) = \frac{16}{H(W_{\text{BF16}})} \approx \frac{16}{10.5} \approx 1.52\times$$

Shannon's ceiling proves that no lossless algorithm can compress FP16 model weights past 1.19x.

Because lossless compression cannot exceed $1.52\times$, compression ratios between $2.80\times$ and $3.31\times$ mathematically mandate transitioning to Shannon Rate-Distortion Theory ($R(D)$) . Under rate-distortion theory, continuous weight distributions are mapped to discrete microscaled states while bounding functional task distortion.

2.2 Continuous Rate-Distortion Theory and Granular vs. Clipping Distortion

To analyze non-invertible tensor compression, we examine the continuous rate-distortion function $R(D)$, which characterizes the minimal bit rate $R$ required to represent a source distribution within an expected distortion threshold $D$:

Continuous Rate-Distortion Function

$$R(D) = \min_{p(\hat{w}|w): \mathbb{E}[d(w, \hat{w})] \le D} I(W; \hat{W}) = \frac{1}{2} \log_2 \left(\frac{\sigma_w^2}{D}\right), \qquad 0 \le D \le \sigma_w^2$$

Lower bound for zero-mean Gaussian source under mean-squared error distortion $d(w, \hat{w}) = (w - \hat{w})^2$.

In practical uniform $b$-bit quantization parameterized by clipping threshold $\alpha$ and group step size $\Delta = \frac{2\alpha}{2^b - 1}$, total expected distortion $D(\Delta, \alpha)$ factorizes into two distinct components:

Distortion Factorization: Granular vs. Clipping Overload

$$D(\Delta, \alpha) = D_{\text{granular}}(\Delta, \alpha) + D_{\text{clipping}}(\alpha) = \frac{\Delta^2}{12} \int_{-\alpha}^{\alpha} p(w)\,dw + 2 \int_{\alpha}^{\infty} (w - \alpha)^2 p(w)\,dw$$

Illustrating the fundamental trade-off between quantization resolution and outlier clipping.

When learned weight tensors exhibit heavy tails (kurtosis $\kappa \gg 3.0$), this distortion trade-off breaks down catastrophically. Increasing $\alpha$ to encompass extreme outlier coordinates widens the quantization step size $\Delta$, inflating granular roundoff distortion $D_{\text{granular}} \propto \Delta^2$ across the dense bulk of the distribution. Conversely, restricting $\alpha$ to bound $\Delta$ causes clipping overload distortion $D_{\text{clipping}}$ to explode on heavy-tailed coordinates.

Fourth Standardized Moment (Population Kurtosis)

$$\kappa = \frac{\frac{1}{d} \sum_{i=1}^{d} (w_i - \mu)^4}{\sigma^4} > 3.0$$

Measuring parameter leptokurtosis across linear projection layers in foundation models.

2.3 Architectural Proofs: Propositions 1, 2, and 3

We now establish the three formal mathematical propositions that govern channel outlier isolation, Group-32 reconstruction error bounds, and closed-form Gaussian noise predictions within the SPECTRA engine.

Statement: For any $K$ channel saliency values $S_1, \dots, S_K$, the population fourth-moment kurtosis satisfies $\kappa \le K$.

Formal Proof: Let $z_j = (S_j - \mu_S)/\sigma_S$ denote the standardized channel saliencies, where $\mu_S = \frac{1}{K} \sum_{j=1}^K S_j$ and $\sigma_S^2 = \frac{1}{K} \sum_{j=1}^K (S_j - \mu_S)^2$. By construction, $\sum_{j=1}^K z_j^2 = K$. By the Cauchy-Schwarz inequality on the vector of squared terms $(z_1^2, \dots, z_K^2)$ and the all-ones vector:

$$\sum_{j=1}^K z_j^4 \le \left(\sum_{j=1}^K z_j^2\right)^2 = K^2$$

Dividing both sides by $K$ yields the population kurtosis bound:

$$\kappa = \frac{1}{K} \sum_{j=1}^K z_j^4 \le \frac{K^2}{K} = K$$

Consequence: Under the SPECTRA adaptive rule $r = 0.01(1 + 0.15 \ln(1 + \max(0, \kappa - 3)))$, the outlier ratio satisfies $r \le 0.01(1 + 0.15 \ln(K - 2))$. For standard architectural widths $K = 1,536, 3,072, 8,192,$ and $65,536$, this bound evaluates to $2.10\%, 2.20\%, 2.35\%,$ and $2.66\%$, respectively. The $3.0\%$ hard cap is reached only when $\kappa$ exceeds approximately $6.2 \times 10^5$, establishing that the 3.0% threshold serves as an asymptotic physical safety clamp.

Statement: If a group of 32 weights contains both signs ($w_{\min} \le 0 \le w_{\max}$), every reconstructed weight $\hat{w}$ satisfies $|w - \hat{w}| \le s/2$, apart from the floating-point rounding of the scale $s$ itself to 16 bits.

Formal Proof: Because $0$ lies within $[w_{\min}, w_{\max}]$, the zero-point formula $z = \text{round}(-w_{\min}/s)$ is not clipped to the boundary. The reconstruction grid points $(q - z)s$ for 4-bit integer codes $q \in \{0, 1, \dots, 15\}$ start within $s/2$ of $w_{\min}$ (at $q = 0$) and, since the scale is defined as $s = (w_{\max} - w_{\min})/15$, terminate within $s/2$ of $w_{\max}$ (at $q = 15$). Every weight $w \in [w_{\min}, w_{\max}]$ lies between consecutive grid points spaced by $s$, ensuring:

$$|w - \hat{w}| \le \frac{s}{2}$$

Remark: In deep neural networks with 32 weights per group, entirely one-sided groups are exceedingly rare (requiring all 32 independent weights to possess the same sign). In empirical audits across a $512 \times 1,024$ matrix, the observed maximum error divided by scale was $0.49999s$, confirming strict adherence to the $s/2$ bound.

Statement: Suppose the 32 weights of a group are independent and Gaussian with standard deviation $\sigma$. Let $d$ denote the expected sample range of 32 standard Gaussian random variables ($d = 4.14$, derived from 100,000 Monte Carlo simulated groups and matching published order statistics tables). Then the expected scale is $s = d\sigma/15$, the quantization error is approximately uniform with variance $\sigma_{\text{err}}^2 = s^2/12$, and:

$$\text{Relative Frobenius Error} = \frac{\sigma_{\text{err}}}{\sigma} = \frac{d}{15 \sqrt{12}} = \frac{4.14}{51.9615} \approx 7.97\%$$

$$\text{SNR (dB)} = 10 \log_{10} \left(\frac{\sigma^2}{\sigma_{\text{err}}^2}\right) = 20 \log_{10} \left(\frac{15 \sqrt{12}}{d}\right) = 21.97\text{ dB}$$

$$\text{Cosine Similarity} = \frac{\mathbb{E}[w \hat{w}]}{\sqrt{\mathbb{E}[w^2] \mathbb{E}[\hat{w}^2]}} \approx 1 - \frac{\epsilon^2}{2} = 1 - \frac{(0.0797)^2}{2} \approx 0.99682$$

Verification against Simulation: A synthetic $2,048 \times 2,048$ Gaussian matrix evaluated under Group-32 yielded an empirical relative error of $8.08\%$, an SNR of $21.85\text{ dB}$, and a Cosine Similarity of $0.99676$, matching Proposition 3 within 0.11 percentage points of error and 0.12 dB. Across the six production foundation models evaluated by NeuraCryption, empirical errors fall strictly between $8.04\%$ and $8.32\%$ with SNRs between $21.59\text{ dB}$ and $21.89\text{ dB}$.

2.4 Functional Representational Invariance and Parameter Hessian Eigenspectra

Deep neural networks operate as continuous non-linear manifold mappings rather than fragile bitstream decoders. For a linear projection operator $y = xW$, where $x \in \mathbb{R}^{B \times K}$ denotes an incoming activation tensor and $W \in \mathbb{R}^{K \times N}$ represents the learned parameter matrix, the downstream objective function $\mathcal{L}$ is invariant to parameter perturbations $\Delta W$ that reside within the functional null-space of the operator.

Expanding the task loss around the converged parameter optimum $W^*$ via second-order Taylor series approximation:

Second-Order Taylor Series Perturbation Expansion

$$\Delta \mathcal{L} \approx \text{Tr}\left((\nabla_W \mathcal{L})^T \Delta W\right) + \frac{1}{2} \text{vec}(\Delta W)^T H_W \text{vec}(\Delta W) + \mathcal{O}(\|\Delta W\|_F^3)$$

At local convergence, first-order gradient $\nabla_W \mathcal{L} \approx 0$, leaving parameter Hessian $H_W$ dominant.

The parameter Hessian $H_W = \mathbb{E}_{x \sim \mathcal{D}} [(x^T x) \otimes \nabla_a^2 \mathcal{L}]$ exhibits a heavily degenerate eigenspectrum characterized by power-law spectral decay: $\lambda_i \propto i^{-\alpha}$ with $\alpha > 1.5$. Decomposing the parameter space into the dominant eigensubspace $\mathcal{S}_\parallel$ spanned by the top-$k$ eigenvectors and the numerical null-space $\mathcal{S}_\perp$:

Eigenspace Decomposition of Loss Perturbation

$$\Delta \mathcal{L} \le \frac{1}{2} \lambda_{\max}(H_W) \|\Delta W_\parallel\|_F^2 + \frac{1}{2} \epsilon_{\text{null}} \|\Delta W_\perp\|_F^2, \qquad \epsilon_{\text{null}} \approx 0$$

Because effective parameter dimension $d_{\text{eff}} = \text{Tr}(H_W)/\lambda_{\max} \ll d_{\text{total}}$, null-space perturbations do not shift logits.

2.5 Mathematical and Empirical Criteria of Functional Representation Parity

SPECTRA defines functional representation parity through three rigorous mathematical and empirical criteria:

  1. Topological Candidate Preservation: The discrete $\arg\max$ trajectory across the vocabulary simplex remains statistically aligned between the uncompressed parameter matrix $W$ and the reconstructed tensor $\hat{W}$ throughout autoregressive sequence generation:

    \arg\max_{v \in \mathcal{V}} P(y_t = v \mid y_{

  2. Signal Fidelity Bounds: The reconstructed parameter matrix $\hat{W}$ maintains a Cosine Similarity exceeding 0.996 and an SNR surpassing 21.5 dB relative to uncompressed tensor $W$:

    \text{Cosine Similarity}(W, \hat{W}) = \frac{\langle W, \hat{W} \rangle}{\|W\|_F \|\hat{W}\|_F} \ge 0.996, \qquad \text{SNR (dB)} = 10 \log_{10} \left(\frac{\|W\|_F^2}{\|W - \hat{W}\|_F^2}\right) > 21.5\text{ dB}

  3. Downstream Reasoning Task Parity: Measured performance on formal multi-step scientific reasoning benchmarks (such as ARC-Challenge) maintains near-baseline retention (measured deltas within +0.42% to +0.85%), confirming that low-bit quantization preserves semantic problem-solving trajectories.

2.6 Lipschitz Stability of Normalization-Modulated Neural Projections

In modern foundation architectures, linear projection layers are coupled directly to normalization operators such as Root Mean Square Normalization (RMSNorm) or Layer Normalization (LayerNorm). For an un-normalized feature vector $h \in \mathbb{R}^K$, RMSNorm computes:

RMSNorm Activation Formulation

$$\text{RMSNorm}(h) = \frac{h}{\sqrt{\frac{1}{K} \sum_{k=1}^K h_k^2 + \epsilon}} \odot \gamma$$

Where $\gamma \in \mathbb{R}^K$ denotes the learned channel-wise affine scaling parameter vector.

Evaluating the Euclidean norm of the normalized activation yields $\|\text{RMSNorm}(h)\|_2 \le \sqrt{K} \|\gamma\|_\infty$. Under a parameter perturbation $\Delta W = W - \hat{W}$, the output deviation $\Delta y = \text{RMSNorm}(h)\Delta W$ is strictly Lipschitz bounded:

Lipschitz Output Perturbation Bound

$$\|\Delta y\|_2 \le \|\text{RMSNorm}(h)\|_2 \|\Delta W\|_2 \le \sqrt{K} \|\gamma\|_\infty \|\Delta W\|_2$$

Decomposing this bound proves that expected output variance in coordinate $j$ scales quadratically with $|\gamma_j|^2$.

03. Algorithmic Architecture & The Compression Pipeline

3.1 Calibration-Free Topological Saliency Mapping via Normalization Gain Routing

Conventional post-training quantization pipelines (such as AWQ and GPTQ) rely on empirical calibration passes over reference text corpora to calculate activation covariance statistics $\mathbb{E}[X^T X]$. This calibration dependency introduces severe domain biases, exposes models to dataset distribution shifts, complicates automated deployment pipelines, and demands substantial GPU execution time.

SPECTRA eliminates dynamic calibration passes by calculating channel saliency directly from the topological graph structure of the neural network. In modern Transformer and state-space architectures, linear projection layers are situated immediately downstream from normalization layers, such as Layer Normalization or Root Mean Square Normalization (RMSNorm). For an un-normalized activation vector $h \in \mathbb{R}^K$, RMSNorm evaluates:

RMSNorm Activation Scaling

$$\text{RMSNorm}(h) = \frac{h}{\sqrt{\frac{1}{K} \sum_{k=1}^K h_k^2 + \epsilon}} \odot \gamma$$

Where $\gamma \in \mathbb{R}^K$ represents the learned channel-wise affine scaling parameter.

During forward inference, the input arriving at the downstream linear projection $W \in \mathbb{R}^{K \times N}$ is precisely $x = \text{RMSNorm}(h)$. Because normalization standardizes the underlying hidden vector to unit spherical variance, the expected magnitude and dynamic scale of coordinate $j$ entering the weight matrix are governed entirely by the learned affine parameter $|\gamma_j|$.

3.2 Topological Normalization Gain as a Calibration-Free Sensitivity Proxy

In second-order quantization frameworks (such as GPTQ), the empirical Fisher Information Matrix $F \in \mathbb{R}^{d \times d}$ serves as an expectation-based proxy for parameter curvature: $F_{jj} = \mathbb{E}_{x,y} [(\partial \mathcal{L}/\partial W_{:,j})^2]$. For linear operators preceded immediately by normalization ($y = \text{RMSNorm}(h)W$), the gradient evaluates to $\frac{\partial \mathcal{L}}{\partial W_{:,j}} = x_j \cdot \frac{\partial \mathcal{L}}{\partial y}$. Under an isotropic activation approximation, the first-order input variance entering column $j$ scales with the square of the learned affine gain:

Mathematical Derivation: Fisher Curvature Proportionality

$$F_{jj} = \mathbb{E}[x_j^2] \cdot \mathbb{E}\left[\left(\frac{\partial \mathcal{L}}{\partial y}\right)^2\right] = |\gamma_j|^2 \cdot \mathbb{E}\left[\frac{h_j^2}{\frac{1}{K}\|h\|_2^2 + \epsilon}\right] \cdot C_{\text{layer}} \approx |\gamma_j|^2 \cdot C_{\text{layer}}$$

Proving that the learned affine scale vector $\gamma$ analytically mirrors the parameter Hessian curvature diagonal.

This relationship establishes that for pre-normalized linear layers, the learned affine scale vector $\gamma$ provides a direct, calibration-free topological proxy for channel sensitivity. For attention input projections ($q\_proj, k\_proj, v\_proj$) and MLP input layers ($gate\_proj, up\_proj$), channel saliency is evaluated as:

SPECTRA Analytical Channel Saliency Metric

$$S_j = |\gamma_j| \cdot \|W_{:,j}\|_2$$

Combining learned affine curvature gain with the Euclidean $L2$-norm of weight column $j$.

Explicit Topological Scope and Fallback: Modern architectures interleave unnormalized layers across their blocks. For attention output projections ($o\_proj$), MLP down projections ($down\_proj$), and vocabulary heads ($lm\_head$), there is no preceding affine normalization layer. As codified in Table 11 of the paper and implemented in compressor.py , the AST pre-scanner sets $\gamma_j = 1.0$ for these unmapped projections, falling back gracefully to unweighted column Frobenius norms ($S_j = \|W_{:,j}\|_2$). Normalization routing is thus an effective zero-data topological proxy for pre-normalized inputs, eliminating dataset calibration passes without requiring empirical sample collection.

3.3 Excess Kurtosis Dynamics and Adaptive Sparsification Mechanics

Static outlier pruning ratios degrade across diverse architectures because kurtosis levels vary widely between shallow attention layers and deep feed-forward projections. To account for this variance, SPECTRA modulates the outlier ratio $r$ as a function of excess kurtosis $\kappa_{\text{excess}} = \max(0.0, \kappa - 3.0)$:

Adaptive Kurtosis-Modulated Outlier Allocation Rule

$$r = \text{clamp}\left(r_{\text{base}} \cdot \left(1.0 + 0.15 \cdot \ln(1 + \kappa_{\text{excess}})\right), 0.005, 0.03\right)$$

Where $r_{\text{base}} = 0.01$ denotes the baseline 1.0% outlier ratio.

For mesokurtic channels ($\kappa \le 3.0$), the logarithmic term evaluates to zero, maintaining $r = 0.01$ to preserve high computational density. For leptokurtic channels ($\kappa \gg 10.0$), the logarithmic function expands $r$ gradually up to a strict 3.0% cap ($0.03$), capturing critical outlier channels without inflating matrix footprints. Outlier channel indices $\Omega$ are serialized as 32-bit integers ( int32 , supporting matrix feature dimensions $K$ up to 2.14 billion), yielding a 50% metadata footprint reduction compared to conventional 64-bit arrays.

3.4 Microscaled Group-32 Quantization with Marlin-Interleaved Layout

Once outlier coordinates are isolated, the dense residual tensor $W_{\text{dense}}$ contains exclusively bounded Gaussian variance. This tensor is quantized using an asymmetric microscaled 4-bit representation organized into groups of size $G = 32$ along the input feature dimension $K$. For each group $g \in \{0, \dots, (K/G) - 1\}$ in row $i \in \{0, \dots, N - 1\}$, local min and max parameters are extracted:

Asymmetric Group-32 Microscaling Formulas

$$w_{\min}^{(i,g)} = \min_{k \in [0, G-1]} W_{\text{dense}}[i, gG + k], \qquad w_{\max}^{(i,g)} = \max_{k \in [0, G-1]} W_{\text{dense}}[i, gG + k]$$

$$s^{(i,g)} = \max\left(\frac{w_{\max}^{(i,g)} - w_{\min}^{(i,g)}}{15.0}, 10^{-8}\right), \qquad z^{(i,g)} = \text{clamp}\left(\text{round}\left(-\frac{w_{\min}^{(i,g)}}{s^{(i,g)}}\right), 0, 15\right)$$

To optimize execution on modern Ampere architectures, SPECTRA packs these values into a Marlin-interleaved layout . Instead of packing consecutive adjacent elements ($2k, 2k + 1$) into single bytes, Marlin interleaving maps coordinate $k \in [0, 15]$ into the lower nibble (bits $[3:0]$) and coordinate $k + 16 \in [16, 31]$ into the upper nibble (bits $[7:4]$) of byte $k$ within each 32-element group:

Marlin Coordinate Nibble Interleaving

$$\text{PackedByte}[i, g, k] = \left(q_k^{(i,g)} \ \& \ 0x0F\right) \ | \ \left(\left(q_{k+16}^{(i,g)} \ \& \ 0x0F\right) \ll 4\right), \qquad \forall k \in [0, 15]$$

Aligns with vectorized register layout during fused GPU dequantization, avoiding cross-lane shuffles.

Zero-point metadata is compressed further by packing two 4-bit zero points from adjacent groups into a single uint8 byte: $$\text{PackedZero}[i, m] = (z^{(i,2m)} \ \& \ 0x0F) \ | \ ((z^{(i,2m+1)} \ \& \ 0x0F) \ll 4)$$

3.5 Offline Exploratory FWHT vs. Zero-Overhead Production Decoupling

To evaluate orthogonal manifold dispersion, SPECTRA includes an offline vectorized butterfly Fast Walsh-Hadamard Transform (FWHT) routine operating across power-of-two strides $h \in \{1, 2, 4, \dots, d/2\}$ in $\mathcal{O}(d \log_2 d)$ complexity. While orthogonal rotation homogenizes weight kurtosis, deploying online Hadamard de-rotation during autoregressive decoding requires multiplying every incoming activation vector by $H_K$ on every token forward pass. On bandwidth-saturated edge GPUs, this online activation transform introduces non-trivial latency and compute overhead.

In the active SPECTRA inference engine ( engine.py and kernels.py ), online FWHT is therefore deliberately omitted: the runtime relies entirely on zero-overhead HDSQ-Ultra FP16 outlier decoupling and localized Group-32 microscaling, maximizing execution throughput without paying runtime rotation penalties.

3.6 The TRDC Binary Container Specification & Direct Streaming Deserialization

To prevent memory allocation spikes during model loading on 16GB host systems, SPECTRA introduces the TRDC (Tensor Reconstruction Data Container, identifier TRDC4B01) binary serialization format.

+--------------------------------------------------------------------------+
| 24-BYTE FIXED BINARY HEADER                                              |
|   [0:7]   Magic Identifier ASCII: "TRDC4B01" (8 bytes)                   |
|   [8:15]  Format Version: uint64 Little-Endian (1)                       |
|   [16:23] Metadata JSON Byte Length: uint64 Little-Endian                |
+--------------------------------------------------------------------------+
| CONTIGUOUS BINARY DATA PAYLOAD (Direct GPU DMA Streaming)                |
|   - Packed 4-bit INT8 Tensor Weights (2x nibbles per byte)               |
|   - Group-32 FP16 Scale Factors (float16 per 32 weights)                 |
|   - Bit-Packed uint8 Zero Points (2x 4-bit zeros per byte)               |
|   - Sparse FP16 Outlier Channel Weight Tensors                           |
|   - 32-bit Outlier Channel Index Vectors (int32)                         |
+--------------------------------------------------------------------------+
| TRAILING METADATA MANIFEST (UTF-8 JSON)                                  |
|   - Model Architecture Type, Layer Graph, Tensor Names                   |
|   - Array Dimensions, Strides, Quantization Group Sizes                  |
|   - CRC32 Payload Integrity Checksums                                    |
+--------------------------------------------------------------------------+

The runtime maps model files directly into addressable virtual memory via POSIX mmap , streaming parameter slices straight into GPU VRAM buffers via asynchronous CUDA DMA transfers with zero intermediate Python object overhead and zero host memory spikes .

04. High-Efficiency Triton GPU Kernels & Runtime Systems

4.1 In-Register Fused W4A16 GEMV with Outlier Channel Accumulation (M = 1)

Autoregressive single-token decoding ($M = 1$) is strictly memory bandwidth-bound. Standard inference runtimes dispatch two separate CUDA kernels: an initial dequantization kernel that unpacks low-bit weights into intermediate buffers in global VRAM, followed by a standard matrix-vector GEMM kernel. This two-stage dispatch doubles memory traffic across the GPU memory bus, creating an execution bottleneck that caps decoding speed at a fraction of theoretical hardware limits.

SPECTRA eliminates intermediate global memory round-trips through a specialized Triton kernel: _fused_w4a16_gemv_hdsq_kernel . This kernel fuses 4-bit unpacking, scale application, dot-product reduction, and sparse FP16 outlier channel accumulation into a single GPU register pipeline across Streaming Multiprocessors:

# Core reduction loop of fused_w4a16_gemv_hdsq in GPU register pipeline
for k_start in range(0, K, BLOCK_K):
    # 1. Load packed bytes and unpack Marlin dual nibbles into registers
    packed = tl.load(ptr_w + offs_k_packed, mask=mask_n[:, None] & (offs_k_packed < K // 2))
    low_w  = (packed & 0x0F).to(tl.float32)
    high_w = ((packed >> 4) & 0x0F).to(tl.float32)

    # 2. In-register dequantization with Group-32 scales and packed zeros
    w_low  = (low_w - z_exp) * s_exp
    w_high = (high_w - z_exp) * s_exp

    # 3. Direct fused multiply-add (FMA) with activation vector
    acc += tl.sum(w_low * x_low[None, :], axis=1) + tl.sum(w_high * x_high[None, :], axis=1)

    # 4. In-Kernel Lossless FP16 Outlier Accumulation (HDSQ-Ultra)
    if HAS_OUTLIERS:
        for out_idx in range(0, NUM_OUTLIERS, 32):
            x_val = tl.load(x_ptr + outlier_idx[out_idx:out_idx+32] * stride_xk)
            ow    = tl.load(outlier_w_ptr + offs_out)
            acc  += tl.sum(ow * x_val[None, :], axis=1)

tl.store(y_ptr + offs_n, acc.to(tl.float16), mask=mask_n)

This architecture eliminates all global memory scratchpads. Thread warps load packed bytes, Group-32 scales, and packed zeros into vector registers. Dual nibbles are unpacked simultaneously and multiplied by activation tiles using fused multiply-add instructions, while sparse FP16 outlier channels are gathered and accumulated in the same FP32 accumulator registers, sustaining up to 34.93 GB/s DRAM bandwidth on wide MLP blocks and 119.91 GB/s internal L2 cache streaming .

4.2 Batched Tensor Core W4A16 GEMM with In-Kernel Outlier Fusion (M ≥ 2)

When evaluating multi-token prompt prefill sequences or batched requests ($M \ge 2$), computational characteristics shift from memory bandwidth-bound to compute-bound. In this regime, general-purpose CUDA cores become saturated. SPECTRA directs batched operations to _batched_w4a16_gemm_kernel , a custom 2D-tiled Triton kernel that routes operations through hardware Tensor Cores using the tl.dot instruction.

The batched kernel tiles output matrices $C \in \mathbb{R}^{M \times N}$ across 2D program blocks ($\text{BLOCK\_M} = 16, \text{BLOCK\_N} = 64, \text{BLOCK\_K} = 64$) with an $L2$ cache swizzling group size $\text{GROUP\_M} = 8$ to optimize cache hit rates: $$\text{acc} = tl.dot(A_{\text{low}}, W_{\text{low}}) + tl.dot(A_{\text{high}}, W_{\text{high}})$$ Crucially, sequence dimension $M$ is passed as a dynamic runtime argument rather than a compile-time constant, eliminating JIT compilation storms during dynamic sequence expansions. For outlier channels, the kernel gathers activations at sparse index locations and executes an in-kernel Tensor Core dot product, sustaining up to 216.63 tok/s at batch size B = 4 (5.57 TFLOP/s) .

4.3 SpectraFusedEmbedding: Dynamic Row-Gather Dequantization

In modern architectures with expansive token vocabularies (such as NVIDIA Nemotron-3-Nano-4B, which features 131,072 vocabulary embeddings across a hidden dimension $d = 4,096$), the input embedding and output projection layers consume $1.05\text{ GB}$ of VRAM in FP16 alone: taking up more than 26% of available memory on 4GB consumer silicon.

SPECTRA introduces SpectraFusedEmbedding . Input embedding weights are compressed to 4-bit Group-32 format within the TRDC container. During inference, instead of dequantizing the entire 131,072-row matrix, the kernel gathers only the active token IDs present in the current sequence batch and dequantizes those specific embedding rows on the fly. This slashes static embedding VRAM from $1,050\text{ MB}$ to $321.4\text{ MB}$, saving 69.4% static VRAM .

4.4 Double-Buffered Asynchronous PCIe DMA Pipelining via PingPongLayerOffloader

When foundation models exceed physical on-chip VRAM (such as deep 3B or 4B parameter models with extended contexts), SPECTRA activates PingPongLayerOffloader . The engine allocates two reusable layer staging buffers in GPU memory (Slot 0 and Slot 1) and coordinates two concurrent CUDA execution streams:

  • Step $t$: Compute Stream evaluates Layer $N$ using Slot 0 in GPU memory.
  • Step $t$ (Concurrent): Prefetch Stream asynchronously transfers Layer $N+1$ from pinned host system memory to Slot 1 across PCIe using non-blocking DMA copy.
  • Step $t+1$: Compute Stream synchronizes on the prefetch completion event, immediately evaluates Layer $N+1$ from Slot 1, while Prefetch Stream begins transferring Layer $N+2$ into Slot 0.

This ping-pong pipelining hides up to 88% of PCIe bus transfer latency behind layer computation, allowing models that exceed on-chip memory to execute without stalling the GPU compute pipeline.

4.5 Group-32 Microscaled 4-Bit Key-Value Cache and Dynamic Memory Tiering

During long-context autoregressive generation, the Key-Value (KV) cache memory footprint expands linearly with sequence length $T$: $$\text{Mem}_{\text{KV}} = 2 \cdot L \cdot N_{\text{kv\_heads}} \cdot d_{\text{head}} \cdot T \cdot \text{sizeof}(\text{dtype})$$ In standard FP16, an 8,192-token context in DeepSeek-1.5B requires over $1.5\text{ GB}$ of KV cache memory. SPECTRA implements SpectraQuantizedCache , quantizing Key and Value states into asymmetric 4-bit Group-32 blocks in place. This shrinks KV cache memory by 75% (from $1,572.8\text{ MB}$ down to $393.2\text{ MB}$), enabling extended context generation up to 8,192 tokens on commodity 4GB laptop GPUs without encountering out-of-memory errors.

4.6 Prompt Lookup Context Speculation & Universal Hardware Auto-Probing

To accelerate generation without requiring auxiliary draft models, SPECTRA integrates n-gram prompt lookup context speculation ( engine.py ). When repetitive or structured syntaxes appear (such as code indentation or JSON formatting), candidate n-grams are extracted directly from the prompt context, verified in parallel via batched Tensor Core GEMM, and accepted or rejected with exact state rollback.

Before allocating tensors, SPECTRA's hardware.py probes real-time NVML telemetry, querying available GPU memory, PCIe bandwidth, compute capability, and thermal envelopes. It automatically synthesizes an optimal ExecutionPlan : deciding whether to run in 100% GPU Resident mode, activate Ping-Pong layer offloading, or engage 4-bit KV caching based on live silicon constraints.

05. Empirical Performance, Throughput & Architectural Audit

5.1 Experimental Hardware Testbed and NVML Telemetry Instrumentation

To rigorously evaluate SPECTRA under the most acute consumer edge constraints, all empirical experiments were conducted on an NVIDIA GeForce RTX 3050 Ti Laptop GPU (GA107 silicon) with the following microarchitectural profile:

  • CUDA Cores: 2,560 arithmetic units across 20 Streaming Multiprocessors (SMs).
  • Tensor Cores: 80 second-generation Tensor Cores supporting FP16 and INT8 matrix math.
  • Memory Capacity: 4,096 MiB physical GDDR6 (3,770.6 MiB addressable ceiling enforced by Linux desktop window compositor overhead).
  • Memory Interface: 128-bit wide bus operating at 1,500 MHz (12.0 Gbps effective), delivering a theoretical peak bandwidth of 192.0 GB/s .
  • PCIe Bus Interface: PCI Express Gen3 x4 connection providing an empirical host-to-device throughput of 3.94 GB/s .
  • Driver & Compiler Environment: Linux 6.8.0, NVIDIA Driver 550.120, CUDA 12.4, PyTorch 2.4.0+cu124, and OpenAI Triton 3.0.0+.

Physical telemetry was collected non-invasively via background threads interfacing directly with the NVIDIA Management Library (NVML) via pynvml , sampling instantaneous VRAM allocation, PCIe bus throughput, GPU compute utilization, core temperature, and package power dissipation every 100 milliseconds.

5.2 Master Multi-Architecture Empirical Benchmark Matrix

SPECTRA was evaluated across six production foundation models representing three distinct architectural paradigms: standard dense autoregressive Transformers (DeepSeek-R1-Distill-1.5B, Alibaba Qwen-3.5-4B), Hybrid Convolutional State-Space Models (LiquidAI LFM-3-1.7B, LiquidAI LFM-2.5-2.6B), and Hybrid Mamba-2 architectures (IBM Granite-4.2-3B, NVIDIA Nemotron-3-Nano-4B with 131k vocabulary).

Table 1: Master Empirical Benchmark Matrix across Production Foundation Models

Measured on NVIDIA GeForce RTX 3050 Ti Laptop GPU • 4GB VRAM (3,770.6 MiB addressable ceiling) • 192.0 GB/s bus

100% GPU Resident • Zero Host Swapping

Foundation Model Architecture Family Active Params Uncompressed FP16 SPECTRA 4-bit Compression Ratio Active VRAM Eager Tok/s Graph Tok/s Hardware Status
DeepSeek-R1-Distill-1.5B Transformer (Dense) 1.5B 3.31 GB 1.03 GB 3.21x 917.6 MB 25.78 82.53 Full Residency
LiquidAI LFM-3-1.7B Hybrid ConvNet/SSM 1.7B 3.22 GB 1.00 GB 3.22x 1,029.1 MB 18.40 32.40 Full Residency
LiquidAI LFM-2.5-2.6B Hybrid ConvNet/SSM 2.6B 5.02 GB 1.52 GB 3.30x 1,556.0 MB 9.80 14.20 Full Residency
IBM Granite-4.2-3B Hybrid Mamba-2 3.2B 6.82 GB 2.06 GB 3.31x 2,245.0 MB 5.60 8.07 Full Residency
NVIDIA Nemotron-3-Nano-4B Mamba-2 (131k Vocab) 3.8B 6.33 GB 2.26 GB 2.80x 2,326.9 MB 14.10 22.40 Full Residency
Alibaba Qwen-3.5-4B Transformer (GQA) 4.1B 8.68 GB 2.63 GB 3.30x 2,690.5 MB 9.20 14.55 Full Residency

5.3 Silicon Roofline Saturation and Physical Bus Bandwidth Analysis

Table 1B records the microarchitectural throughput metrics collected across execution regimes. During single-token decoding ($M = 1$), execution operates entirely in the memory bandwidth-bound regime. Under FP16, transferring a 1.5B model requires 17.2 milliseconds per token, capping theoretical decoding to 58 tok/s. Under SPECTRA 4-bit (1.03 GB), reading model parameters takes only 5.36 ms per token. With Triton kernel fusion and CUDA Graph static dispatch, measured decoding reaches 82.53 tokens per second : achieving 92.4% of theoretical hardware bus saturation.

Table 1B: Measured Microarchitectural Bandwidth & Arithmetic Intensity Across Kernel Execution Regimes

Kernel Execution Regime Batch / Seq ($M$) Operational Intensity Measured DRAM Bandwidth On-Chip L2 Streaming Throughput / Compute
Single-Token Autoregressive (Eager) $M = 1$ $1.01\text{ FLOP/B}$ $20.89\text{ GB/s}$ $48.20\text{ GB/s}$ $25.78\text{ tok/s}$
Single-Token Autoregressive (CUDA Graph) $M = 1$ $1.01\text{ FLOP/B}$ $34.93\text{ GB/s}$ $119.91\text{ GB/s}$ 82.53 tok/s
Prompt Prefill / Batched Generation $M = 4$ $3.92\text{ FLOP/B}$ $72.40\text{ GB/s}$ $146.50\text{ GB/s}$ $216.63\text{ tok/s}$
Batched Tensor Core Prefill $M = 64$ $48.5\text{ FLOP/B}$ $112.80\text{ GB/s}$ $182.40\text{ GB/s}$ $5.57\text{ TFLOP/s}$

5.4 Mathematical Distortion and Signal Reconstruction Accuracy

Table 2 presents the layer-by-layer mathematical error audit across projection matrices on DeepSeek-R1-Distill-1.5B. Across all 28 transformer layers, relative Frobenius reconstruction errors consistently fall between $8.04\%$ and $8.32\%$, with SNRs strictly exceeding $21.5\text{ dB}$ and Cosine Similarities surpassing $0.9967$.

Table 2: Layer-by-Layer Mathematical Distortion & Signal Reconstruction Audit on DeepSeek-R1-Distill-1.5B

Projection Operator Matrix Dimensions Relative Frobenius Error Signal-to-Noise Ratio (dB) Cosine Similarity Max Group Relative Error
model.layers.0.self_attn.q_proj $1,536 \times 1,536$ $8.12\%$ $21.81\text{ dB}$ $0.99671$ $0.49991s$
model.layers.0.self_attn.k_proj $256 \times 1,536$ $8.24\%$ $21.68\text{ dB}$ $0.99662$ $0.49988s$
model.layers.0.mlp.gate_proj $8,960 \times 1,536$ $8.06\%$ $21.87\text{ dB}$ $0.99675$ $0.49995s$
model.layers.0.mlp.down_proj $1,536 \times 8,960$ $8.04\%$ $21.89\text{ dB}$ $0.99676$ $0.49999s$
model.layers.14.mlp.up_proj $8,960 \times 1,536$ $8.08\%$ $21.85\text{ dB}$ $0.99673$ $0.49994s$
model.layers.27.self_attn.o_proj $1,536 \times 1,536$ $8.14\%$ $21.79\text{ dB}$ $0.99669$ $0.49992s$

5.5 The Outlier Paradox on Extended WikiText-2 Perplexity (32,768 Tokens)

Table 2B records the full-sequence test set perplexity evaluation on DeepSeek-R1-Distill-1.5B over 32,768 continuous tokens. In post-training quantization literature, it was universally assumed that heavy-tailed outlier channels must always be isolated into separate sparse FP16 matrices.

Table 2B: Full-Sequence Extended WikiText-2 Test Set Perplexity Evaluation on DeepSeek-R1-Distill-1.5B

Quantization Architecture Configuration Effective Bit-Rate Active VRAM WikiText-2 Perplexity (PPL) Perplexity Delta vs FP16
Uncompressed Baseline FP16 $16.00\text{ bpb}$ $3,310\text{ MB}$ 33.83 $0.00$ (Reference)
SPECTRA Pure Group-32 (0% Decoupled Outliers) $4.625\text{ bpb}$ $917.6\text{ MB}$ 34.73 +0.90
SPECTRA HDSQ-Ultra (1% Decoupled Outliers) $4.785\text{ bpb}$ $942.1\text{ MB}$ $35.62$ $+1.79$
SPECTRA HDSQ-Ultra (2% Decoupled Outliers) $4.945\text{ bpb}$ $978.4\text{ MB}$ $36.14$ $+2.31$

This confirms The Outlier Paradox : at fine microscaling granularities ($G = 32$), microscaled group normalization absorbs outlier variance so effectively that explicit FP16 decoupling actually introduces quantization boundary friction across adjacent channels, causing perplexity to degrade slightly from 34.73 to 35.62. Pure Group-32 microscaling achieves superior representation retention.

5.6 Downstream Task Preservation: ARC-Challenge Reasoning & Token Agreement

To verify that multi-step logical and scientific reasoning are preserved, SPECTRA was evaluated on the complete AI2 Reasoning Challenge (ARC-Challenge, 1,172 formal science questions) :

Table 2D: AI2 Reasoning Challenge (ARC-Challenge) 1,172 Question Evaluation on DeepSeek-R1-Distill-1.5B

Model Representation Correct Questions Total Questions Accuracy (%) 95% Wilson Confidence Interval
Uncompressed FP16 Baseline 407 1,172 34.73% $[32.0\%, 37.5\%]$
SPECTRA Pure Group-32 412 1,172 35.15% $[32.4\%, 38.0\%]$
SPECTRA HDSQ-Ultra (1% Outliers) 417 1,172 35.58% $[32.8\%, 38.4\%]$

On ARC-Challenge, SPECTRA HDSQ-Ultra scored 35.58% accuracy (417/1,172) and Pure Group-32 scored 35.15% (412/1,172) , both exceeding the uncompressed FP16 baseline (34.73%). Quantization noise acted as an implicit regularizer, sharpening candidate argmax trajectories.

On the deterministic reasoning token agreement audit across 100 diverse multi-step reasoning prompts (3,200 evaluation tokens, Table 2E), SPECTRA achieved 91.0% first-token agreement with uncompressed FP16 rollouts and 100% semantic task parity .

5.7 Independent Mathematical Verification: Experiments A through E

Experiment A (Gaussian Weights Match Closed-Form Prediction): Evaluating a $2,048 \times 2,048$ Gaussian matrix under Group-32 yielded an empirical relative error of $8.08\%$ (predicted: $7.97\%$), an SNR of $21.85\text{ dB}$ (predicted: $21.97\text{ dB}$), and a Cosine Similarity of $0.99676$ (predicted: $0.99682$), matching Proposition 3 within 0.11 percentage points of error. The maximum reconstruction error divided by group scale was $0.50000s$, rigorously validating Proposition 2.

Experiment B (Why a Protected Outlier Set is Necessary When Outlier Magnitude Explodes): A $1,536 \times 1,536$ synthetic matrix was generated with 1% of its input channels scaled by heavy-channel multiplier $m \in \{1, 4, 8, 16, 32, 64\}$. Table 9 compares three storage schemes:

Table 9: Relative Frobenius Error (%) as a Function of Heavy-Channel Magnitude $m$ (1,536 x 1,536 Matrix, 1% Heavy Channels)

Multiplier $m$ Per-Row Uniform 4-Bit Group-32 Only (No Outlier Protection) SPECTRA (HDSQ-Ultra Group-32)
$m = 1$ $8.12\%$ $8.08\%$ 8.04%
$m = 4$ $14.85\%$ $8.22\%$ 8.06%
$m = 8$ $28.40\%$ $8.45\%$ 8.08%
$m = 16$ $52.10\%$ $8.92\%$ 8.09%
$m = 32$ $84.60\%$ $9.85\%$ 8.10%
$m = 64$ $96.30\%$ $11.40\%$ 8.11%

As $m$ scales from 1 to 64, per-row uniform quantization collapses completely (error reaches $96.30\%$). While Group-32 absorbs significant variance (capping error at $11.40\%$), SPECTRA HDSQ-Ultra holds error virtually flat at 8.11% , confirming that when extreme channel outliers emerge, adaptive FP16 decoupling provides an infallible mathematical safeguard.

5.8 Long-Context Scaling and Multi-Session Zero-Leak Stability

On DeepSeek-R1-Distill-1.5B, context memory expands linearly. Under standard FP16, KV cache memory hits $1,572.8\text{ MB}$ at 8,192 tokens. Combined with uncompressed weights ($3,310\text{ MB}$), total memory ($4,882.8\text{ MB}$) severely exceeds 4GB hardware limits. Under SPECTRA 4-bit weights ($917.6\text{ MB}$) and SpectraQuantizedCache ($393.2\text{ MB}$ at 8,192 tokens), total active VRAM is capped at $1,310.8\text{ MB}$ : leaving over $2,459\text{ MB}$ of free safety headroom.

Continuous multi-cycle memory audits (Table 8) over 10 consecutive inference sessions with dynamic context lengths verified 0.0 MB memory leakage . All allocated CUDA Graph memory pools and pinned DMA buffers were completely reclaimed upon session termination.

06. Public Domain Prior Art Analysis & Comparative Distinctions

To contextualize SPECTRA's innovations within the broader machine learning landscape, Table 12 formalizes the structural, mathematical, and systems distinctions between SPECTRA and prevailing post-training quantization frameworks.

Table 12: Comprehensive Architectural Distinction Matrix Comparing SPECTRA with Public Domain Frameworks

Framework Calibration Data Requirement Quantization Numerical Scheme Kernel Integration & Runtime Edge 4GB VRAM Viability SSM / Mamba-2 Compatibility
SPECTRA (Ours) ↗ Zero (Analytical AST Saliency) Group-32 Microscaled 4-bit with packed zeros In-Register Fused Triton GEMV / GEMM 100% Resident (82.53 tok/s) Native Universal Support
GPTQ (Frantar et al., 2022) Required (Hours of GPU Calibration) Second-order OBS column-inversion External C++ / CUDA compiled kernels Partial (Host RAM allocation spikes) Fails on non-Transformer layers
AWQ (Lin et al., 2023) Required (Sample Prompt Batches) Activation-aware per-channel scaling W4A16 CUDA GEMM Partial (High prefill initialization delay) Requires manual layer mapping
SpQR (Dettmers et al., 2023) Required (High Activation Sweeps) Sparse Outlier FP16 + Group-16 Sparse SpMM (High thread divergence) Infeasible (Sparse index memory spikes) Incompatible with state tensors
SmoothQuant (Xiao et al., 2023) Required (Activation Covariance) W8A8 Matrix Multiplication INT8 Tensor Core GEMM Infeasible (>2B models exceed 4GB) Degrades on recurrent gates
QuIP# / QuaRot Required (Incoherence Statistics) Randomized Hadamard Orthogonal Rotation Online FWHT transform kernels Infeasible (Online rotation latency choke) Incompatible with linear attention
Marlin (Frantar & Alistarh, 2024) N/A (Compute Kernel Format) W4A16 Hardware-Tiled Interleaved Hand-tuned CUDA / PTX assembly Fast (Limited to pre-quantized models) Matrix-only execution
llama.cpp (Gerganov et al., 2023) Optional (Imatrix Calibration) K-Quants Block-Grouping SIMD / Metal / cuBLAS runtime Viable (High CPU-GPU transfer latency) Requires bespoke C++ port per model
HQQ (Badri & Shalamov, 2023) Zero (Closed-form optimization) Half-Quadratic Quantization PyTorch runtime dequantization Infeasible (Unpacks to FP16 in VRAM) Compatible with linear projections
QLoRA / NF4 (Dettmers et al., 2023) Zero (Information-theoretic grid) NormalFloat4 Quantile Mapping De-quantize before compute Infeasible (Doubles memory traffic) Universal Linear support

As demonstrated in Table 12, SPECTRA is the only framework that simultaneously achieves zero empirical calibration data , in-register fused kernel execution without VRAM unpack scratchpads , 100% on-chip residence on 4GB consumer silicon , and native architecture-agnostic compatibility across Transformers, ConvNets, and Mamba-2 state-space models .

07. Architectural Discussion, Scope & Generality

7.1 Scope of Architecture Agnosticism

A central achievement of SPECTRA is true architecture-agnostic generality. Historical quantization methods frequently hardcoded assumptions specific to the original LLaMA transformer block (such as fixed multi-head attention and SwiGLU projection ratios). When modern architectural variants emerged, these rigid pipelines broke down.

SPECTRA operates at the abstract level of linear algebraic mappings preceded by normalization layers:

  • Dense Transformers (DeepSeek-R1-Distill-1.5B, Alibaba Qwen-3.5-4B): Automatically identifies RMSNorm and LayerNorm layers, binding affine scale vectors $\gamma$ to input projections and evaluating channel saliency in milliseconds.
  • Hybrid Convolutional State-Space Models (LiquidAI LFM-3-1.7B, LFM-2.5-2.6B): Operates across short-convolution token mixers and feed-forward state blocks without modifying convolutional kernels.
  • Hybrid Mamba-2 Architectures (IBM Granite-4.2-3B, NVIDIA Nemotron-3-Nano-4B): Seamlessly handles structured state-space layers, selective scan projections, and massive 131k-token embedding tables via dynamic row-gather dequantization.

7.2 The Hardware Pareto Frontier: Microscaling Group Size Dynamics

In post-training quantization, group size $G$ defines a fundamental Pareto trade-off between representation fidelity and metadata memory overhead:

  • Group-16 ($G = 16$): Yields an effective bit-rate of $5.25\text{ bpb}$. Scale and zero-point metadata consume $1.25\text{ bpb}$ (over $24\%$ of total model footprint), introducing unnecessary memory bus pressure.
  • Group-32 ($G = 32$): The optimal Pareto knee. Effective bit-rate is $4.625\text{ bpb}$ (metadata overhead is only $0.625\text{ bpb}$, or $13.5\%$). As proven in Proposition 3, local variance is bounded by $35.5\%$, completely eliminating outlier skew without sparse decomposition.
  • Group-64 and Group-128 ($G \ge 64$): Reduces metadata footprint ($4.31\text{ to }4.16\text{ bpb}$), but increases local parameter range, allowing heavy-tailed outliers to degrade granular quantization resolution and increasing WikiText-2 perplexity.

7.3 Edge Deployment Considerations: Thermals & Acoustic Profiles

Deploying generative foundation models on 35W-45W consumer laptop hardware introduces physical thermal constraints. Under continuous 100% GPU utilization, mobile GPUs enter thermal throttling states as die temperatures reach $75^\circ\text{C}$ to $82^\circ\text{C}$.

On Alibaba Qwen-3.5-4B, initial cold decoding runs at $14.55\text{ tok/s}$. Under sustained 10-minute generation runs, GPU clock frequencies throttle to maintain thermal equilibrium, stabilizing decoding at 12.08 tokens per second . Even under steady-state thermal throttling, SPECTRA sustains real-time conversational speeds (exceeding human reading speeds of 4-5 tok/s by more than 2.4x) within an acoustically quiet 35W power envelope.

08. Conclusion & Open-Source Release

The memory wall in consumer silicon is not an insurmountable roadblock for generative artificial intelligence. By grounding neural compression in Claude Shannon's continuous Rate-Distortion Theory, recognizing the exact mathematical correspondence between learned normalization scales and parameter Hessian curvature, and uniting Group-32 microscaling with in-register fused Triton GPU kernels, SPECTRA proves that multi-billion parameter foundation models can execute with 100% GPU residence on commodity 4GB laptop GPUs .

SPECTRA delivers 2.80x to 3.31x model compression , eliminates dataset-dependent calibration passes entirely, preserves deep multi-step scientific reasoning, and reaches real-time generation speeds of 82.53 tokens per second on commodity consumer hardware.

To advance open science and democratize high-performance edge inference, NeuraCryption has made the complete research paper, mathematical proofs, Triton GPU kernels, compressor pipeline, and TRDC specification fully open-access:

09. Scholarly References & Academic Bibliography

Formal academic citations and foundational literature referenced across the SPECTRA investigation and peer-reviewed publication:

  1. [01]

    Shannon, C. E. (1948). A mathematical theory of communication. Bell System Technical Journal , 27(3), 379-423 & 27(4), 623-656. Archive.org BSTJ ↗ DOI ↗

  2. [02]

    Frantar, E., Ashkboos, S., Hoefler, T., & Alistarh, D. (2022). GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. In International Conference on Learning Representations (ICLR 2023) . arXiv:2210.17323 ↗

  3. [03]

    Lin, J., Tang, J., Tang, H., Yang, S., Chen, W.-M., Wang, W.-C., Xiao, G., Dang, X., Gan, C., & Han, S. (2024). AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration. In Conference on Machine Learning and Systems (MLSys 2024) . arXiv:2306.00978 ↗

  4. [04]

    Xiao, G., Lin, J., Seznec, M., Wu, H., Demouth, J., & Han, S. (2023). SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models. In International Conference on Machine Learning (ICML 2023) . arXiv:2211.10438 ↗

  5. [05]

    Dettmers, T., Lewis, M., Belkada, Y., & Zettlemoyer, L. (2022). LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale. In Advances in Neural Information Processing Systems (NeurIPS 2022) . arXiv:2208.07339 ↗

  6. [06]

    Dettmers, T., Svirschevski, R., Egiazarian, V., Kuznedelev, D., Frantar, E., Ashkboos, S., Borzunov, A., Hoefler, T., & Alistarh, D. (2023). SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression. arXiv:2306.03078 ↗

  7. [07]

    Kim, S., Hooper, C., Gholami, A., Dong, Z., Li, X., Shen, S., Mahoney, M. W., & Keutzer, K. (2023). SqueezeLLM: Dense-and-Sparse Quantization. In International Conference on Machine Learning (ICML 2024) . arXiv:2306.07629 ↗

  8. [08]

    Chee, J., Cai, Y., Kuleshov, V., & De Sa, C. (2023). QuIP: 2-bit Quantization of Large Language Models with Theoretical Bounds. In Advances in Neural Information Processing Systems (NeurIPS 2023) . arXiv:2307.13304 ↗

  9. [09]

    Tseng, A., Chee, J., Sun, Q., Kuleshov, V., & De Sa, C. (2024). QuIP#: Even Better LLM Quantization with Hadamard Incoherence and Lattice Codebooks. In International Conference on Machine Learning (ICML 2024) . arXiv:2402.04396 ↗

  10. [10]

    Ashkboos, S., Mohtashami, A., Croci, M. L., Li, B., Cameron, P., Jaggi, M., Alistarh, D., Hoefler, T., & Hensman, J. (2024). QuaRot: Outlier-Free 4-Bit Inference in Rotated LLMs. arXiv:2404.00456 ↗

  11. [11]

    Frantar, E., Castro, R. L., Chen, J., Hoefler, T., & Alistarh, D. (2024). MARLIN: Mixed-Precision Auto-Regressive Parallel Inference on Large Language Models. arXiv:2408.11743 ↗ GitHub ↗

  12. [12]

    Zhang, T., Sui, Y., Zhong, S., Chaudhary, V., Hu, X., & Shrivastava, A. (2025). 70% Size, 100% Accuracy: Lossless LLM Compression for Efficient GPU Inference via Dynamic-Length Float (DFloat11). arXiv:2504.11651 ↗

  13. [13]

    Liu, Z., Yuan, J., Jin, H., Zhong, S., Xu, Z., Braverman, V., Chen, B., & Hu, X. (2024). KIVI: A Tuning-Free Asymmetric 2-bit Quantization for KV Cache. In International Conference on Machine Learning (ICML 2024) . arXiv:2402.02750 ↗

  14. [14]

    Hooper, C., Kim, S., Mohammadzadeh, H., Mahoney, M. W., Shao, Y. S., Keutzer, K., & Gholami, A. (2024). KVQuant: Towards 10 Million Context Length LLM Inference with KV Cache Quantization. In Advances in Neural Information Processing Systems (NeurIPS 2024) . arXiv:2401.18079 ↗

  15. [15]

    Zandieh, A., Daliri, M., Hadian, M., & Mirrokni, V. (2025). TurboQuant: Online Vector Quantization with Near-Optimal Distortion Rate. arXiv:2504.19874 ↗

  16. [16]

    Leviathan, Y., Kalman, M., & Matias, Y. (2023). Fast Inference from Transformers via Speculative Decoding. In International Conference on Machine Learning (ICML 2023) . arXiv:2211.17192 ↗

  17. [17]

    Chen, C., Borgeaud, S., Irving, G., Lespiau, J.-B., Sifre, L., & Jumper, J. (2023). Accelerating Large Language Model Decoding with Speculative Sampling. arXiv:2302.01318 ↗

  18. [18]

    Saxena, A. (2023). Prompt Lookup Decoding. Open-source software repository. GitHub ↗

  19. [19]

    Sheng, Y., Zheng, L., Yuan, B., Li, Z., Ryabinin, M., Chen, B., Liang, P., Re, C., Stoica, I., & Zhang, C. (2023). FlexGen: High-Throughput Generative Inference of Large Language Models with a Single GPU. In International Conference on Machine Learning (ICML 2023) . arXiv:2303.06865 ↗

  20. [20]

    Kwon, W., Li, Z., Zhuang, S., Sheng, Y., Zheng, L., Yu, C. H., Gonzalez, J., Zhang, H., & Stoica, I. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. In ACM Symposium on Operating Systems Principles (SOSP 2023) . arXiv:2309.06180 ↗

  21. [21]

    Gu, A., & Dao, T. (2023). Mamba: Linear-Time Sequence Modeling with Selective State Spaces. arXiv:2312.00752 ↗

  22. [22]

    Dao, T., & Gu, A. (2024). Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality (Mamba-2). In International Conference on Machine Learning (ICML 2024) . arXiv:2405.21060 ↗

  23. [23]

    Tillet, P., Kung, H. T., & Cox, D. (2019). Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations. In ACM SIGPLAN Workshop on Machine Learning and Programming Languages (MAPL 2019) . ACM DL ↗ GitHub ↗

  24. [24]

    Dettmers, T., Pagnoni, A., Holtzman, A., & Zettlemoyer, L. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. In Advances in Neural Information Processing Systems (NeurIPS 2023) . arXiv:2305.14314 ↗

  25. [25]

    Gerganov, G., & contributors (2023). llama.cpp: Port of Facebook's LLaMA model in C/C++. Open-source software repository. GitHub ↗

  26. [26]

    TechPowerUp GPU Database (2021). NVIDIA GeForce RTX 3050 Ti Mobile GPU Specifications (GA107 Silicon, 128-bit GDDR6, 12.0 Gbps, 192.0 GB/s). TechPowerUp ↗

  27. [27]

    Badri, H., & Shayer, O. (2023). Half-Quadratic Quantization of Large Language Models (HQQ). arXiv:2311.17582 ↗ GitHub ↗

  28. [28]

    NeuraCryption Infrastructure Research Lab (2026). SPECTRA: Sparse-Precision Exact Channel Tensor Reconstruction Architecture for Hardware-Saturated Edge Inference. Zenodo Open Research Archive & European Open Science Cloud (OpenAIRE) . Zenodo DOI: 10.5281/zenodo.24058202 ↗ OpenAIRE Explore ↗ GitHub ↗ Download PDF ↗

Meet Will Lawrence: Sunrise Movement Co-Founder Elected to Congress on Anti-Data Center Platform

Democracy Now!
www.democracynow.org
2026-11-10 08:50:38
Progressive candidate Will Lawrence of Michigan has defeated Republican incumbent Tom Barrett, flipping the state’s 7th Congressional District, a closely watched swing district that includes Lansing. Lawrence, the co-founder of the youth-led climate organization Sunrise Movement, refused corpo...
Original Article

Progressive candidate Will Lawrence of Michigan has defeated Republican incumbent Tom Barrett, flipping the state’s 7th Congressional District, a closely watched swing district that includes Lansing. Lawrence, the co-founder of the youth-led climate organization Sunrise Movement, refused corporate PAC money, instead building a people-powered grassroots mobilization campaign. He focused on lowering the costs of housing and healthcare, opposing the war on Iran, and challenging the power of Big Tech.

“I’m fighting for a federal moratorium on new data center development, along with a pause on advanced AI development,” says Lawrence. “These developers come into small towns, and they say, ’We’re going to suck up a bunch of water. We’re going to use more energy than the current capacity of the grid. We don’t know what’s going to happen to your property values, but if everything goes well, we’re going to put 10 or 20 million people out of work, and if it goes poorly, we may kill everybody by accident.’”

Lawrence also says he will back Hakeem Jeffries for House speaker, but that he will demand Democratic leadership listen to progressive concerns.



Guests
  • Will Lawrence

    Democratic congressmember-elect from Michigan’s 7th Congressional District and co-founder of the Sunrise Movement.

Please check back later for full transcript.

The original content of this program is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License . Please attribute legal copies of this work to democracynow.org. Some of the work(s) that this program incorporates, however, may be separately licensed. For further information or additional permissions, contact us.

The hardest tarball

Lobsters
stoppels.ch
2026-11-10 08:47:03
Comments...
Original Article

Nov 7th, 2026

Here is a curiosity: an archive that can be constructed using a single GNU tar invocation, that is extracted in 8 distinct ways depending on what tool you use.

$ printf hello > file
$ touch empty
$ tar --format=pax --pax-option='delete=?time,size:=512' \
      --transform='s,^\./file$,café,' \
      -cf hardest.tar file ./file empty

It creates an archive hardest.tar from three files file ./file empty in sequence, where file is repeated so that GNU tar stores the second one as a hard link, and empty is empty. Exploiting the unique path of the second entry, the hard link is renamed to café . This triggers tar to create a pax header to store the file name as UTF-8. We add a size=512 record to the pax header, which overrides the default size=0 from the hard link. The value 512 is not a coincidence: it is exactly the size of a tar header.

Visually, this archive has the following structure, with two basic interpretations based on whether a hard link can have a size or not.

The structure of hardest.tar, with two basic interpretations based on whether a hard link can have a size or not.

Now, POSIX says that data blocks for a hard link “may be included” in pax archives, but the implications of this are not entirely clear. So the 512 bytes after the hard link are its data, and not the header of empty as we archived it? How can a hard link have different contents from its previous counterpart file ?

Extracting it

This archive gives by far the richest and most surprising results I've encountered so far when extracting it with well-known tar utilities and libraries. The results below were produced using the latest releases of all packages at the time of writing.

GNU tar, BusyBox, Python, Go and Perl

This group is reasonable in principle: they ignore the size on the hard link, and extract file , its hard link café , and empty .

bsdtar

This is the system tar utility of macOS, which is closer to POSIX in spirit regarding the concept of size on hard links, and writes the 512 bytes into the hard link. The end result is that file now contains the tar header of empty .

7-Zip, node-tar, tar-fs, and Rust's tar & astral-tokio-tar

This group agrees with bsdtar that the 512 bytes are data of the hard link, but doesn't write them into the hard link. Instead, they skip forward over the data, and you are left with just file and café , without empty .

Java's Commons Compress

This is where you begin to need more imagination. Because café contains data, a separate file is created that contains the header of empty as data, while file keeps its original contents.

PHP's PharData

Makes café a separate, empty file, and also extracts empty . Why not?

RubyGems

Does not extract café at all, but to make up for it, it creates an empty directory PaxHeaders next to file and empty .

R

R has an entirely different approach: it extracts empty with 512 null bytes. It mistakenly applies the size to empty instead of the hard link, and those 512 bytes are from an end-of-archive marker.

Bonus: Haskell

Haskell's tar would be exactly like GNU tar, if only it did not have string decoding issues, which turn the file café into café on disk (in the year 2026, this is not a rendering quirk of your browser).

.NET, Julia and uv's tar-codec

These implementations reject the tarball. I believe this is the best thing you can do, even if it's technically not POSIX-compliant.

More of this

This tarball is one of 134 tricky tarballs that I'm collecting and categorizing in my test suite haampie/tar-minefield , developed since the last post. Its website https://stoppels.ch/tar features a big table that shows how implementations deal with all these cases, as well as detailed info per test case. A variant from the tarball of this post is included as a test case .

If you'd like to discuss this, send me an email at firstname[at]lastname.ch .

John Goerzen: The Large Project Bias of CVEs

PlanetDebian
changelog.complete.org
2026-11-10 08:42:23
I recently discovered some vulnerabilities in C-Kermit, one dating back to 1984. I tried to do the reasonable thing: create advisories with CVEs. That turns out to be pretty difficult for a small independent project. Large projects have a way to self-assign CVE IDs. They are their own CVE Numberin...
Original Article

I recently discovered some vulnerabilities in C-Kermit , one dating back to 1984. I tried to do the reasonable thing: create advisories with CVEs.

That turns out to be pretty difficult for a small independent project.

Large projects have a way to self-assign CVE IDs. They are their own CVE Numbering Authority (CNA). There is a massive list of CNAs . Just looking at the first page of results, I see everyone from Airbus to 9front (the niche Plan 9 OS). The OpenKermit project is not a CNA.

If you’re a CNA, you can create and publish CVEs on your schedule. There is apparently no external review process. You can wait for months, or publish immediately.

If you’re not a CNA, you have to find someone that is. The general ones that are CNAs appear to be Github and MITRE.

Since C-Kermit is hosted on Github , I thought I would go that route. I followed the documented procedure: created Github security advisories for C-Kermit , then clicked the request CVE button for each. The documentation states they will typically review within 72 hours .

It’s been a week and a half and no sign of a review yet. Apparently the real review time is more than a month .

The other option for projects without a CNA is via MITRE. You have to use a strange and often broken web form , logging in with either Google or Gitlab. (It seems to be broken on Firefox). Then you submit your request and wait.

How long do you wait on MITRE? It seems it could be anywhere from a day to several months .

The first CVE I obtained for C-Kermit was CVE-2025-68920. At the time, I had not yet started the OpenKermit project. That issue was found and fixed in the context of my work maintaining C-Kermit for Debian, and Debian is a CNA.

These were discovered while wearing my “upstream C-Kermit maintainer” hat. I’m sure I could ask Debian for CVEs again, but that seems a bit cheating; not everyone that maintains a FLOSS project will have connections with a distro like I do.

There are a lot of components of a modern OS and Internet ecosystem that are small projects without a large institution behind them.

This bias towards large organizations when it comes to communicating security problems benefits nobody. It doesn’t benefit users, and only serves to discourage timely communication. Not everyone is as persistent as I am, and when it is made so difficult to make announcements — which seem to go into a giant black hole — it’s easy to say, “why bother?”

By Microsoft’s own admission, they are under-funding their CVE process on Github (which may also be poorly-designed). They blame it on increasing load due to LLMs — a problem they helped create and predicted! Having a fiction about being able to communicate a security issue in a reasonable time is worse than not offering the path at all.

Linux was once a student’s experiment. Let’s not pretend that quality only matters from large projects.

"We Have to Be Brave": Palestinian Journalist Abed Abu Shehadeh Speaks Out After Israeli Detention

Democracy Now!
www.democracynow.org
2026-11-10 08:35:52
The prominent journalist Abed Abu Shehadeh, a Palestinian citizen of Israel, has been released from Israeli custody after five days in detention. He was arrested on Wednesday by armed police and Shin Bet agents who conducted a nighttime raid on his home in the Israeli city of Jaffa. Abu ShehadehR...
Original Article

The prominent journalist Abed Abu Shehadeh, a Palestinian citizen of Israel, has been released from Israeli custody after five days in detention. He was arrested on Wednesday by armed police and Shin Bet agents who conducted a nighttime raid on his home in the Israeli city of Jaffa. Abu Shehadeh’s detention was related to his reporting on the October 27 Israeli election and the role of Palestinian political parties. Ahead of the election, he interviewed Azmi Bishara, a Palestinian intellectual and former member of the Israeli Knesset who has lived in exile in Qatar since fleeing Israel amid allegations that he aided Hezbollah during the 2006 Lebanon war. Israeli authorities detained Abu Shehadeh on suspicion of “contacting a foreign agent,” in connection to his interview with Bishara.

“Men with ski masks knock on your door at 11 at night. They tell you that they have an arrest warrant. They raid the house. They wake your wife, your children,” says Shehadeh. “It tells how messianic and dangerous the extreme right in Israel has become, willing to use this unprecedented power against journalists.”


Please check back later for full transcript.

The original content of this program is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License . Please attribute legal copies of this work to democracynow.org. Some of the work(s) that this program incorporates, however, may be separately licensed. For further information or additional permissions, contact us.

Pentagon Whistleblower Wes Bryant: Impeach Hegseth. He's a "Clear & Present Danger" to Democracy

Democracy Now!
www.democracynow.org
2026-11-10 08:15:35
The House of Representatives is moving toward a vote this week on whether to impeach Secretary of Defense Pete Hegseth. Outgoing Republican Congressmember Thomas Massie of Kentucky introduced eight articles of impeachment against Hegseth on Monday. They include violating the 1973 War Powers Resoluti...
Original Article

This is a rush transcript. Copy may not be in its final form.

AMY GOODMAN : The House is moving towards a vote this week on whether to impeach Secretary of Defense Pete Hegseth. The outgoing Republican Congressmember Thomas Massie of Kentucky introduced articles of impeachment against Hegseth on Monday for violating the Constitution and ignoring the will of Congress.

REP . THOMAS MASSIE : Wherefore, Secretary of Defense Peter Hegseth, by such conduct, has demonstrated that he will remain a threat to the Constitution if allowed to remain in office, and has acted in a manner grossly incompatible with his duties and the rule of law. Peter Brian Hegseth thus warrants impeachment and trial, removal from office and disqualification to hold and enjoy any office of honor, trust or profit under the United States.

AMY GOODMAN : Congressmember Massie introduced eight articles of impeachment against Hegseth, including violating the 1973 War Powers Resolution by continuing to attack Iran after Congress ordered the Trump administration to stop, illegally waging war against Yemen, ignoring laws designed to reduce civilian casualties, overseeing extrajudicial killings by bombing the boats of alleged drug traffickers in the Caribbean and eastern Pacific, abducting President Nicolás Maduro of Venezuela without congressional authorization, and suppressing the free speech rights of Democratic Senator Mark Kelly in retaliation for his participation in a video reminding troops not to obey illegal orders.

Only a few Republican defectors in the House would be needed for a simple majority to impeach, setting up a Senate trial that could remove Hegseth from office.

In anticipation of the potential impeachment vote, Defense Secretary Hegseth posted a video on social media last week defending his record. He was standing in front of a sign that said “Department of War.” This is some of what he said.

DEFENSE SECRETARY PETE HEGSETH : But why do the Democrats and the deep state radicals really hate us? Because we tore down their sacred cows, one by one and without apology. DEI is a Marxist ideology built to destroy us, so we crushed it. … Patriot extremism, it’s not a thing. Patriots are now in control. Being trans is a mental illness incompatible with military service. … Military bases should not be renamed in the name of understanding “white rage.” … Narcoterrorists should die, not be caught and released. … Sealing the border and mass deportations are military functions. And when we say that Iran will not have a nuclear weapon, we actually mean it. … We will stand. We will fight. And we will defend this republic from all enemies, foreign and domestic.

AMY GOODMAN : President Trump and Secretary of State Marco Rubio say they’re standing by Hegseth. Trump spoke to reporters Sunday.

PRESIDENT DONALD TRUMP : A lot of people agree. And Pete Hegseth, so he wins two wars. We won in Venezuela. We’ve taken out hundreds of billions of dollars. We won in 48 minutes. And we won in Iran. … So, when you say about Pete Hegseth, I mean, he’s guilty of two things: basically, winning two wars.

AMY GOODMAN : As we go to broadcast, Hegseth is holding a rare press briefing at the Pentagon, the first in something like half a year. He called the impeachment charges a farce and a stunt. The last time he addressed reporters was in May.

For more, we’re joined by retired Master Sergeant Wes J. Bryant, spent 20 years in the U.S. Air Force as a special operations targeting specialist. He also served as chief of civilian harm assessment at the Pentagon from ’24 to ’25. The office was dissolved after President Trump returned to the White House. Wes Bryant is joining us from Raleigh, North Carolina.

Wes, you’re speaking as Hegseth is speaking in Washington, D.C., defending himself. I first want to go to the office that you were chief of. What was it? The civilian harm. It was the — you were chief of civilian harm, the reduction unit at the Pentagon, which was shut down. Was that by Hegseth or Trump? And explain what that did and what these articles of impeachment mean.

WES BRYANT : Yeah. You know, yeah, I was a chief of civilian harm assessment at what was called the Civilian Protection Center of Excellence at the Pentagon, under a new construct that came up, ironically, under the first Trump administration initially, and then was codified into law under the Biden administration, what was called the Civilian Harm Mitigation and Response Enterprise. And, of course, you know, Hegseth, that was one of the so-called woke programs that was attacked immediately, and he effectively dismantled and shut it down. And, of course, I was pushed out after whistleblowing about all of that.

And, you know, looking at the articles of impeachment — I mean, let’s just look at Hegseth’s spectacle on Thursday. I mean, that video, in and of itself, should be enough to impeach this man — his violent religious extremism, his emotional instability, his psychological volatility, you know, and during that couple-of-minute broadcast, he made direct overtures toward threatening the American people, namely what he calls, you know, his political enemies, the so-called radical Democrats, with use of military force. That, in and of itself, is enough.

But then, let’s look at the articles of impeachment, which lay out all of the various violations, constitutionally, against standing U.S. law, against U.S. military law and policy, and against international law and U.N. Charter, for all of these illegal wars that he’s waged, Venezuela, invading Venezuela, abducting a head of state, invading — a mass bombing campaign in Yemen, a mass bombing campaign in Iran. And then we have his attacks against the press and free speech, his use, increasing use, of the military domestically against the American people, and further threats to use the military under the Insurrection Act.

So, you know, Hegseth truly presents a clear and present danger to this democracy, to America, to the free world. Under Hegseth, you know, the U.S. military has been hijacked, and America has become, has portrayed itself to the world as a far-right dictatorship bent on global domination, and Hegseth and his wielding of the U.S. military with free rein from Donald Trump is really the primary enforcer of that.

JUAN GONZÁLEZ: And, Wes Bryant, I wanted to ask you about one of the — one of the points that Massie mentions in his impeachment resolution is also the targeted killings or the so-called boat strikes of alleged drug traffickers in the Caribbean and eastern Pacific. Could you respond to that in particular, given the fact that it’s not just Hegseth, but there had to be a lot of people down the military chain who followed orders in these — attacking people that there’s no evidence, number one, that they were actually drug trafficking or, two, that they should be executed even if they were drug trafficking?

WES BRYANT : Right, exactly. This is just incredibly shameful. These so-called narcoterrorism strikes have been shown to be, you know, by both current and former military lawyers and other government lawyers, State Department, for example, to be completely illegal, out of accordance with U.S. law and especially with international law. That’s whether they are civilians or whether they are drug traffickers. The term “narcoterrorism” actually doesn’t even fit doctrinally within the U.S. military’s own term, own definition of “terrorism.”

So, when, you know, people ask me, as an expert in civilian harm, as an expert in strike operations, that spent 20 years in the U.S. military carrying these operations out — when people ask me, “Does the U.S. military intentionally target civilians?” I would have previously said “no.” But now I’ll say “absolutely,” because we have targeted on order of over a couple — over 200 civilians in these so-called narcoterrorism strikes. These are clear and blatant war crimes.

And again, as you mentioned, Hegseth is not only to blame. You know, I stated a year ago, when I first whistleblew about the dismantling of civilian harm protections and everything else, all the other threats Hegseth presented, that I believed our senior military commanders — Bradley, Cooper, General Caine — would be the shield against the unlawful and unethical use of the U.S. military. We’ve seen the exact opposite. Hegseth’s pushed out everyone who may have dissented, and everyone who remains is either in line or weak and complicit. And yes, these senior combatant commanders, these senior military lawyers, and even down to some of the operational level, need to be held accountable for these crimes.

JUAN GONZÁLEZ: And can you also elaborate on Hegseth’s lethality doctrine, his Christian nationalist views, and why you see him as fundamentally unfit?

WES BRYANT : Right. You know, internally, Hegseth’s ideology is one of a Christian nationalism, actually a white Christian nationalism, that’s rooted in this — in misogyny, in a racial and religious supremacy, and rooted in dehumanization. It’s really — it’s a perverted version of Christianity, that is to pure Christianity what the Sharia of ISIS and the Taliban is to Islam. There’s truly no difference here.

And so, what he’s trying to do is infuse this ideology within the U.S. military, and then it also feeds his very ethos, you know, his so-called revival of the warrior ethos, and then his lethality doctrine, which is truly based on dehumanization, and it ignorantly reduces the U.S. military’s mission to just lethality and killing. You combine this with his fixation on hypermasculinity, which, frankly, is reminiscent of the Aryan movement of the Third Reich, what Hitler’s Nazi Germany called the “new German man,” and now you have this amalgamation of worldview and outlook combined with an application into the operational use of the U.S. military that becomes just an outlook of killing and destruction, and a reveling in and glorification of war.

Then you have his disdain, you know, his blatant, overt disdain, for rules of engagement, Geneva Conventions, the laws of war. And now you combine all of this together, and along with weak and complicit military command, and it’s no wonder that we have atrocities being carried out, that we have all of these illegal wars and operations being carried out.

AMY GOODMAN : Retired Master Sergeant Wes Bryant, could you — you listed some of the people going up the chain of command, but it’s hard to not see Hegseth really as a surrogate for taking on Trump. When you look at these articles of impeachment — violating the War Powers Resolution, ignoring laws that minimize civilian casualties, these extrajudicial killings in the Caribbean and the Pacific — ultimately, this is President Trump who’s ordering this, and he’s carrying out his orders, isn’t he?

WES BRYANT : Absolutely. You know, Hegseth should be the first domino. Trump should absolutely be impeached and removed and indicted, just as Hegseth should, just as many of our senior military leaders should at this point. But, you know, I think the reality here is that Hegseth is the first and most realistic target, so we need to pursue removing him. And, you know, frankly, if Congress doesn’t have the will or the backbone collectively, the American people must absolutely demand Hegseth’s removal. And, you know, I, for one, would be more than willing to lead that charge. And then let’s go after Trump and the rest of the administration following.

AMY GOODMAN : And the not minimizing civilian casualties — the unit actually that you were chief of, the civilian harm assessment at the Pentagon, you did that for a year. Are we talking about both in the case of Iran, Iranians, like the children in Minab, when the U.S. — it looks overwhelmingly that the evidence is the U.S. bombed the girls’ school in southern Iran; the Pentagon hasn’t come out with a report on this, though they said they were going to — but also U.S. troops and civilians in the area of the Gulf when they waged war on Iran, all of these bases where Americans were wounded? But start with the Iranians and what this unit for civilian harm assessment was that was shut down in the Pentagon.

WES BRYANT : Yeah, you know, the Civilian Harm Mitigation and Response Enterprise consisted of a few hundred individuals, spread across the Pentagon and the combatant commands, that were there to do exactly this. You know, if they had been emplaced at the Central Command, for example, if those personnel had been overseeing the strike planning for every single target set in Iran, I promise that a strike as egregious of a failure as Minab would not have happened.

And then you have the detractions, the devolutions of operational practice and standards in general, where, you know, even aside from my unit that existed, the Civilian Harm Enterprise, the U.S. military has been violating standing doctrine and practices in targeting and civilian harm mitigation that even existed over the course of the past 20, 30 years. You know, you combine this with Hegseth’s deemphasis on the protection of civilian, his glorification of and reveling in war and violence, his direction — his directives to carry out mass bombing campaigns, and what I believe is his directives that he’s making, you know, over secured lines or in secured areas to the commanders themselves, so that they’re unrecorded, to actually have a higher tolerance for civilian casualties. We’ve got this incredible spike in civilian casualties, not just Minab in Iran. It’s upwards of 3,000-plus potential civilians killed, along with, you know, massive destruction of civilian infrastructure, even targeting of cultural heritage sites, hospitals, schools — more than just Minab — police and fire entities, vital energy infrastructure. So, it’s incredible, what we’re seeing, this devolution of the U.S. military under Hegseth.

JUAN GONZÁLEZ: And, Wes Bryant, I’m wondering: During the period of the Biden administration, did you encounter in your — in that unit particularly glaring attacks that affected civilians that may not have gotten much attention?

WES BRYANT : No, you know, I wouldn’t say so. Most of the — you know, we’ve had, obviously, civilian harm incidents in the past. Look at the withdrawal from Afghanistan in 2021, where the U.S. struck an aid worker and children, his family. You know, that was one of the catalysts to kickstart the Civilian Harm Mitigation and Response Enterprise. You have — going back before that, you have some instances in the fights against ISIS in Mosul, Raqqa. You have the 2015 very tragic strike against a MSF hospital, a Doctors Without Borders hospital, in Afghanistan.

And, you know, what we were doing under the Civilian Harm Mitigation and Response Enterprise, and collectively, as a joint force, at all the combatant commands, was doing a really hard look back up through the Biden administration of what the U.S. did right during the “war on terror,” and all of the various failures and how we could improve those. And we had some pretty fantastic momentum, and that was all at full stop under this Hegseth regime.

And we’ve devolved even past that. You know, we’ve gone back decades, frankly, in our application of precision, in our ability and, really, willingness to safeguard the innocent and carry out the war with humanity and honor, and to have accountability and transparency when failures happen. We see no transparency and the opposite of accountability from the Hegseth regime. I mean, he truly operates like a fascist military dictator — you know, totalitarian control and extremist nationalism and a hypermilitarism.

AMY GOODMAN : Retired Master Sergeant Wes Bryant spent 20 years in the Air Force, was chief of civilian harm assessment at the Pentagon from 2024 to '25. We'll link to your new article in Zeteo headlined “I Worked at the Pentagon. Congress Must Impeach and Remove Pete Hegseth Now.”

Coming up, we speak to Palestinian journalist Abed Abu Shehadeh. He was just released from five days in Israeli detention for his reporting related to the Israeli elections and the role of Palestinian parties. Stay with us.

[break]

AMY GOODMAN : “Tama,” “Greed,” by the Palestinian oud musician Huda Asfour, performing in our Democracy Now! studio.

The original content of this program is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License . Please attribute legal copies of this work to democracynow.org. Some of the work(s) that this program incorporates, however, may be separately licensed. For further information or additional permissions, contact us.

Don't buy AR glasses

Hacker News
blog.yaros.ae
2026-11-10 08:10:25
Comments...
Original Article

I was browsing the thread under this Mastodon post about how absurdly gamified the Temu app has become. Someone posted this decade -old video :

It's sad and a little scary how HYPER-REALITY predicted the current state of web (and app) design, assuming you're not using a decent adblocker . Like the film Idiocracy , this is a video which has slowly turned from hyperbole into a chilling reflection of reality. All the same companies and individuals who turned the web into a gamified nightmare clusterfuck of banners and popups and dark patterns and enshittified services are going to race to do the same to AR if it becomes mainstream. There's no reason to suspect otherwise.

All this leads me to ask, what actual incentive (aside from short term conveniences) would I have to buy an AR device? You don't need an AR device. And you can't become dependent or reliant on a device you haven't yet bought. So don't buy one!

You're not always expected to have your phone out. Most of the time, it should be in your pocket. Despite an epidemic of absentminded people walking around glued to their phones (I'm as guilty as anyone), it's still considered bad etiquette to use them during dinner, or while crossing the street. That's not the case with glasses, which are designed to be worn all day. That will become the expectation for AR glasses as they evolve into lighter, sleeker devices. All the same apps and services keeping you tied to your phone will follow you over to AR. Is that what you want?

Do you really want the hellscape end-state of the modern attention economy grafted onto your fucking face? To see ads everywhere all the time? Why? Even if you currently own an AR device and are enjoying a clean, uncluttered, curated user experience, how long do you think that will last? The web didn't turn into what it is overnight. Things take time to enshittify, but it's bound to happen.

Pop-up windows were a plague in the 90s and early 2000s, and remained that way until browsers started blocking them by default. This forced the popups to migrate into the pages themselves , and they've been trapped there ever since. Well, AR will be the escape hatch through which they break free of the constraints of the browser window and escape into the "real" world. Is that what you want? REAL-WORLD POPUPS? Are you insane?

I don't know exactly how, I don't know exactly when, but Apple and Google and Meta will create their own frameworks for businesses to display interfaces and ads and popups in arbitrary places, and it will spiral out of control. History will repeat itself.

Keep using your smartphone. Don't become dependent on an always-on HUD. Put up some resistance. If they want to envelop you within the cyberpunk dystopia, they should be forced to drag you inside it kicking and screaming.

#hardware #rant #software #web

‘Without storyboards, I feel like I’m in Grand Central station in my underwear’: film’s fightback against AI

Guardian
www.theguardian.com
2026-11-10 08:00:24
As Hollywood begins to adopt the technology, the professionals in most direct jeopardy are the illustrators mapping out directors’ first visions. They sketch out what could be lost A film industry dominated by AI is a dystopian prospect: stories and dialogue generated by large language models, popul...
Original Article

A film industry dominated by AI is a dystopian prospect: stories and dialogue generated by large language models, populated by reincarnated screen icons and uncanny humanoids . That is in the future, but the real-world impact of AI is already directly affecting jobs behind the scenes, as Hollywood’s biggest film-makers begin to adopt the technology. James Cameron – long an advocate for emerging technologies in film-making – is on the board of a gen AI firm , citing his interest in how AI will intersect with CGI; Steven Soderbergh used Meta-powered tech to create animations for his recent documentary about John Lennon ; even Christopher Nolan, while dismissing the idea that AI will replace humans as “nonsense”, conceded that it will create some useful “imaging tools”.

Storyboard by Saul Bass for Psycho, depicting the shower murder scene in sketched panels
Meticulous … Saul Bass’ storyboard for the shower scene in Alfred Hitchcock’s Psycho Photograph: TCD/Prod.DB/Alamy

The current canary in the coalmine however is the storyboard artist, whose work gen AI appears to have directly in its sights. Storyboard artists are the illustrators who draw the panels of images with notes and diagrams that map out scenes before they are filmed. Storyboards are used to work out how a film will look, and as a blueprint to communicate a director’s vision to cast and crew , and are one of the first steps in bringing a script off the page. Now they appear on the verge of replacement by programmes that use text prompts to create illustrations instead. Even an old-school diehard like Martin Scorsese has got on board; in June he announced a partnership with an AI firm whose text-to-image model he used in the storyboarding process for his next movie.

Usually, storyboards are made together by a director, an artist and other crew members responsible for the film’s visual storytelling, such as cinematographers, editors, production designers, stunt co-ordinators and more. “I find it very fulfilling to make art in such a collaborative way,” says Alex Clark , a British storyboard artist whose recent films include Bong Joon Ho’s sci-fi comedy Mickey 17 , adventure romance The Gorge and Louis Leterrier’s recent thriller The Last House . “It’s about people sitting down to discuss each other’s ideas. You might act things out, make sound effects, read dialogue. You develop a creative relationship with one another.”

Storyboard sketch by Max Douy from Alejandro Jodorowsky's Dune shows an insect-like creature with spiny legs, displayed at a Shanghai exhibition
Storyboard illustration by Max Douy for Alejandro Jodorowsky’s unproduced adaptation of Dune Photograph: Zhe Ji/Getty Images

For Clark, the process of creating a storyboard is just as important as the finished product. “A common misconception is that storyboarding is about making nice drawings. But it’s more than that – it’s about relating to how the director is thinking, and conceiving the most appropriate ways to tell the story of a scene,” he says. Dune director Denis Villeneuve articulated this relationship when describing his frequent collaborator, artist Sam Hudecki, as “an extension of my brain”. For Villeneuve, storyboarding is “a new way of writing”: writing a screenplay might provide the words, but storyboarding is the first step in creating the “cinematic language of the movie”. He views it as “a way to dream” as the film begins to come to life on the page.

Clark says that there is a balance that must be struck between “capturing the essence” of a scene and figuring out how the shots are going to work once the cameras are rolling. “The act of how you mark the page – to convey forms, tones, compositions, blocking and so on – forces you to thoroughly think about how all these different details will affect the scene. It gives you a rigorous understanding of how the scene is going to work.” Clark’s work reflects the fact that storyboarding is one step in an ongoing collaboration that continues through pre-production, shooting on set and beyond. “Sometimes I try to scale the drawings back, when it feels appropriate to leave space for others to build on it – whether it’s an actor’s performance, the way the set is decorated, lighting setup or subtle movement of the camera. I like finding space for happy accidents.”

For researchers and film enthusiasts, storyboard art offers a glimpse into the journey that lies behind a film, including fascinating changes in direction like this. “Storyboard art shows us the evolution of the creative vision,” says Ferdinando Cocco, a lecturer in film at Abertay university in Dundee. He points to Disney’s 1991 film Beauty and the Beast as an example: when it was first being worked on in the late 1980s, the storyboards had a rococo-inspired aesthetic , contemporary to the fairytale’s origins, styling Gaston as a bewigged 18th-century French aristocrat rather than the swollen, strong-jawed hunter who exemplified more modern ideals of masculinity.

Walt Disney (right) listens to an unidentified animator talk through the storyboards for the film Sleeping Beauty (released in 1959).
Walt Disney (right) listens to an unidentified animator talk through the storyboards for the film Sleeping Beauty (released in 1959). Photograph: Gene Lester/Getty Images

As a film-making technique, the storyboard was first used regularly by Disney animators in the 1930s and and it plays a key role in their production process (as evidenced by displays of concept and storyboard art , and the side-by-side videos Disney posts online . (Disney also announced a $1bn investment into OpenAI’s video tool Sora last year.)

Storyboards were swiftly adopted by live-action productions, dating at least back to Gone With the Wind (1939). Since then, many film-makers have left behind storyboards that are beautiful and evocative images in themselves. Alfred Hitchcock created meticulously detailed storyboards, which spawned some of the genre’s most recognisable images: such as the shower scene in Psycho sketched beforehand by his frequent collaborator Saul Bass, the graphic designer behind many classic posters of the era. And before that, Hitchcock had worked with Salvador Dalí on surreal designs for the dream sequence in his 1945 film Spellbound.

Other directors, including Akira Kurosawa and Ridley Scott – whose storyboards are known as “Ridleygrams” – draw their own. Some of Bong’s self-drawn sketches are currently on display at the Academy Museum in Los Angeles , and his panels for Parasite have been published as a graphic novel . “Whenever I go to set without storyboards, I feel like I’m standing in the middle of Grand Central Terminal wearing only my underwear,” Bong writes in the book’s preface – however he does encourage the reader to see the differences between the storyboards and the film as “exciting moments of fear and spontaneity”.

Alfred Hitchcock sits sketching storyboards, surrounded by framed concept artwork on the floor
Setting the tone … Alfred Hitchcock drawing storyboard sketches for Saboteur surrounded by concept artwork in his office at Universal Studios in 1942. Photograph: Masheter Movie Archive/Alamy

Fan interest in behind-the-scenes material has created a market for storyboard books, while last year an exhibition devoted to storyboard art held in Milan displayed panels from films made by arthouse auteurs such as Ingmar Bergman and Federico Fellini, to artists Isaac Julien and Carrie Mae Weems, to Hollywood royalty – including Scorsese.

Creating engaging images is not without a practical function either, as storyboards are often pinned up on set to give the crew a sense of what will be shot that day. “I feel a responsibility to produce work that inspires and captivates everyone about what they’re making,” Clark says. “If the level of artistry and attention is evident at this stage, I believe it can set the tone on set, of valuing the craft involved.”

All hope is not yet lost. Cocco has observed a return to analogue practices and suggests that AI can be used in a way that fosters rather than dilutes the creative process. “Perhaps the difficulty that AI purportedly overcomes was the whole point from the start,” Cocco says. “Having to communicate with others forces an expansion of the artistic vision in ways that cannot be pre-empted.”

Clark meanwhile predicts that, as AI usage in the industry increases, people will come to have a greater appreciation for films with a human touch. “Ultimately, I think most successful films make you feel something as a human being. One advantage of hand-drawn storyboards is that you have a direct sense of that human authenticity right there on the page.”

Headlines for November 10, 2026

Democracy Now!
www.democracynow.org
2026-11-10 08:00:00
GOP Rep. Thomas Massie Introduces Articles of Impeachment Against Defense Secretary Pete Hegseth, Pentagon Retreats from Second U.K. Base Due to Alleged Threat from Iran, Trump Raises New Election Conspiracy Theory After Democrats Sweep Midterms, Schumer Faces Pressure to Step Aside as Chris Van Hol...
Original Article

Headlines November 10, 2026

Watch Headlines

GOP Rep. Thomas Massie Introduces Articles of Impeachment Against Defense Secretary Pete Hegseth

Nov 10, 2026

Republican Congressmember Thomas Massie introduced articles of impeachment against Defense Secretary Pete Hegseth on Monday for “high crimes and misdemeanors.” The eight impeachment articles accuse Hegseth of violating the 1973 War Powers Resolution by continuing to attack Iran even after both chambers of Congress ordered the Trump administration to stop. He’s also accused of illegally waging war against Yemen, ignoring laws designed to reduce civilian casualties, overseeing “extrajudicial killings” in attacks on boats in the Caribbean Sea and eastern Pacific, abducting Venezuelan President Nicolás Maduro without congressional authorization, and suppressing the free speech rights of Democratic Senator Mark Kelly in retaliation for reminding troops not to obey illegal orders. Congressmember Massie outlined the charges during a speech from the House floor.

Rep. Thomas Massie : “Wherefore, Secretary of Defense Peter Hegseth, by such conduct, has demonstrated that he will remain a threat to the Constitution if allowed to remain in office, and has acted in a manner grossly incompatible with his duties and the rule of law, Peter Brian Hegseth thus warrants impeachment and trial, removal from office and disqualification to hold and enjoy any office of honor, trust or profit under the United States.”

It’s expected the House will vote on Hegseth’s impeachment on Wednesday. Only a few Republican defectors would be needed for a simple majority, setting up a Senate trial on whether to remove Hegseth. On Monday, President Trump said he would stand by Hegseth if he’s impeached.

Pentagon Retreats from Second U.K. Base Due to Alleged Threat from Iran

Nov 10, 2026

The Wall Street Journal reports the Pentagon has evacuated aircraft from a second base in the United Kingdom due to another alleged threat from Iran. U.S. refueling tankers were reportedly moved from a base in Mildenhall on Monday. Last month, the Pentagon pulled B-1 bombers out of another British base.

Meanwhile, Iran’s Islamic Revolutionary Guard Corps says two more ships, including a supertanker, are on fire near the Strait of Hormuz after using what Iranian officials have called an “unauthorized route.” Iran has claimed 11 strikes on ships over a 10-day span. The continued attacks on shipping came as Iran’s Foreign Ministry said it could reopen the strait within 48 hours if the U.S. agrees to Tehran’s list of demands.

Esmail Baghaei : “If the U.S. meets the demands put forward by Iran, the situation in the region could see a positive shift in as little as two days, and security in the Strait of Hormuz could also be restored.”

On Monday, President Trump spoke with Qatar’s prime minister, who’s acted as a mediator in efforts to end the war. After the talks, Trump claimed there was “positive momentum” in negotiations for a deal with Iran.

President Donald Trump : “The military action doesn’t seem to be a very necessary thing, but we’re locked and loaded, ready to go for any reason that changes. Israel and the entire Middle East are protected from Iranian danger and threats, and we’re seeing momentum toward the end of this conflict. I think it’s going to be ending fairly soon.”

Since the U.S. and Israel launched the war on Iran in February, Trump has claimed more than 40 times that the war was close to an end, that a deal was near, or that the war was already over.

Trump Raises New Election Conspiracy Theory After Democrats Sweep Midterms

Nov 10, 2026

Image Credit: Lauren Boebert for Congress

Democrats are continuing to build on their historic wins in last week’s midterm elections as votes continue to be counted. In Mississippi, Scott Colom’s lead over Republican incumbent Senator Cindy Hyde-Smith has topped 2,500 votes, with just two batches of ballots left to be counted before a Friday deadline to certify the results.

In Colorado, Republican Congressmember Lauren Boebert is trailing in her bid to hold on to her seat. On Monday, CNN projected Boebert will lose the race to Democrat Eileen Laubacher, a retired U.S. Navy admiral who served on the National Security Council under President Joe Biden.

On Monday, President Trump reversed his previous comment that he was “absolutely willing” to accept the results of the midterm elections. Trump wrote on his Truth Social platform, “Does anybody really believe that this 'Election' was honest. How could the Polls be so wrong???”

Schumer Faces Pressure to Step Aside as Chris Van Hollen Hints at Run for Senate Majority Leader

Nov 10, 2026

Senate Democrats could be headed for a leadership shakeup, after Maryland Senator Chris Van Hollen indicated Monday he’s open to running for Senate majority leader when the new Congress convenes in January. A source close to Van Hollen told Politico the Maryland Democrat is thinking about a run after he “received an outpouring of calls and is now in active listening mode. The door is not shut.”

This comes as a growing number of Senate Democrats have called for new leadership or refused to commit to supporting New York Senator Chuck Schumer for majority leader. Joining the call is a major labor union, the International Association of Machinists and Aerospace Workers, which wrote in a letter to Schumer on Monday, “We believe this is the right moment for a new generation to lead Senate Democrats.”

Meanwhile, Connecticut Democratic Senator Richard Blumenthal said he’s open to new leadership if a challenger to Schumer emerges.

Sen. Richard Blumenthal : “But we need to have a conversation about leadership going forward, because we need new energy and ideas.”

Senate Advances Bill to Speed Construction of Fossil Fuel Projects and Data Centers

Nov 10, 2026

Image Credit: USA TODAY Network

In more news from Capitol Hill, the Senate voted 73 to 25 Monday to take up a sweeping permitting reform bill. It was advanced by nearly every Republican and 22 Democrats. Environmental groups have called the legislation an “aggressive attack on federal environmental protections in order to facilitate rapid, unregulated development of fracked gas power plants, dirty fossil fuel pipelines, and expensive hyperscale data centers.” Meanwhile, Indigenous leaders, including New Mexico Governor-elect Deb Haaland, argue the bill would undermine tribal sovereignty.

More than 160 health, consumer, religious and environmental groups are calling on Congress to instead pass the No AI Data Centers on Federal Lands Act. It’s sponsored by Michigan democratic socialist Congresswoman Rashida Tlaib, who said, “[The] elections send a clear message that Americans want their representatives to protect their health and environment, not sell them out to Big Tech and Big Oil.”

5 Arrested at Anthropic’s NYC Offices as Protesters Demand Halt to IPO Plans

Nov 10, 2026

Here in New York, activists with Climate Defenders, New York Communities for Change and Planet Over Profit protested at Anthropic’s Manhattan offices for over an hour on Monday. Five of them were arrested for blocking the employee security entrance. The protesters blasted Anthropic’s moves toward an initial public offering that could see it valued at $1.4 trillion — far less than previous estimates it could be worth as much as $2 trillion. This comes after major global tech stocks fell sharply last week following the U.S. midterm elections, which sparked concerns among investors that the Democratic takeover of both chambers of Congress will mean tougher regulation of AI. This is activist Jonathan Westin speaking to Democracy Now! as he was being arrested.

Jonathan Westin : “I’m getting arrested because we’re trying to stop Anthropic from crashing the global economy, along with AI. They are not worth the paper they’re printed on. Millions and millions of lives will be affected by it.”

African National Congress Suffers Its Worst Election Result Since South Africa Ended Apartheid

Nov 10, 2026

In South Africa, the African National Congress, the party of Nelson Mandela, suffered its worst results in local elections on Sunday. The ANC won just 31% of the vote, though it remains South Africa’s largest party. Its main rival, the Democratic Alliance, said it won the votes of more than 1 million Black South ⁠Africans for the first time.

Dozens Drown in Capsized Boats While Attempting to Reach European Soil

Nov 10, 2026

At least 39 migrants have died after a small wooden boat capsized off the Atlantic coast of Senegal as it tried to reach Spain’s Canary Islands. This year alone, the Spanish immigrant rights group Walking Borders has recorded over 600 migrants’ deaths in the Atlantic, as more people desperately flee war, famine and climate disasters and attempt to reach Europe. This comes as at least 22 people have died while attempting to reach Greece from Libya over the course of three days.

U.S. Cancels Deportation Flight of Iranians at Last Minute

Nov 10, 2026

Back in the United States, a deportation flight carrying Iranian nationals to Iran via Pakistan was abruptly canceled Sunday morning, after at least eight Iranians had been loaded onto a plane in Mesa, Arizona, bound first for the Republic of Georgia. The flight would reportedly have been the first deportation of Iranians since the U.S. launched attacks on Iran in February. Back in October, U.S. District Judge Ana Reyes ordered the U.S. government to give the court 24-hour notice of any plans to deport Iranians to Iran or to any other country, and five days’ written notice before deportation is carried out.

ICE Detains 8-Year-Old Haitian Boy in San Diego After Routine Immigration Check-In

Nov 10, 2026

Image Credit: NBC San Diego

In San Diego, an 8-year-old Haitian boy is in federal custody after ICE detained him at a scheduled immigration appointment. He had been living with his uncle since his father was deported last year. DHS says the uncle could not establish legal guardianship. Guerline Jozef, executive director of Haitian Bridge Alliance, said, “This is not child protection. This is state-inflicted trauma disguised as immigration enforcement. An eight-year-old child should be sitting in a classroom, learning, playing, and dreaming about his future, not being taken away and retraumatized by armed federal agents. His father has already been taken from him and deported, now this administration has stripped him of the stability, family, and community every child deserves.”

SCOTUS Allows Trump Admin to Resume Border Wall Construction in Big Bend National Park

Nov 10, 2026

Image Credit: X/@LaikenJordahl

The U.S. Supreme Court is allowing the Trump administration to resume the construction of a new border wall in Big Bend National Park and along more than 500 miles of the Rio Grande in Texas. Monday’s ruling lifted a lower court’s temporary injunction that blocked construction back in October while a lawsuit filed by the Center for Biological Diversity and others is resolved. Justice Ketanji Brown Jackson was the only Supreme Court member to dissent. Click here to see our coverage of this story .

Proposed USDA Policy Would Cut Food Aid for Millions of People

Nov 10, 2026

An estimated 6.3 million people in the U.S. could lose their food assistance by 2029 over a new proposed policy set forth by the Department of Agriculture. The Republican-backed measure would toughen restrictions on people’s eligibility for the Supplemental Nutrition Assistance Program. The policy change could also leave millions of children without access to free school meals.

New York Focus Uncovers 2023 Sexual Assault Lawsuit by Two Former Cornell Students

Nov 10, 2026

The news outlet New York Focus has uncovered a 2023 lawsuit in which two former Cornell students say the university’s Title IX office ignored their complaints that the same male student sexually assaulted them in 2018 and 2021. A complaint filed by one of the students and their lawyer says, “At least five to ten others are known to have been sexually abused and it is believed that many more were abused but have yet to come forward.” Cornell University and the male student tried to have the case dismissed, but a trial is scheduled for next year. The lawsuit follows another high-profile lawsuit filed by Jane Doe in September over an alleged fraternity gang rape at Cornell in 2024, prompting a massive public outcry and leading to New York Attorney General Letitia James ordering a new investigation.

Russell Brand Sentenced to 10.5 Years in Prison

Nov 10, 2026

In the United Kingdom, the comedian, actor and podcaster Russell Brand has been sentenced to 10 years and six months in prison for raping a fan and sexually assaulting three other women. The abuses occurred between 2004 and 2009 at the peak of Brand’s career. This is Judge Joel Bennathan.

Judge Joel Bennathan : “About 20 years ago, Russell Brand, you were becoming famous. You were clever and, in many people’s eyes, funny and charismatic. You had also become a sexual predator.”

Proposition 40 Billionaire Tax Fails to Pass in California

Nov 10, 2026

In California, Proposition 40, a one-time 5% wealth tax on individuals and trusts with over $1 billion in assets, has failed to pass. Democratic Governor Gavin Newsom was an opponent of the wealth tax, while Democratic Congressmember Ro Khanna of California was in favor of the tax.

Online Magazine Salon Closes After 31 Years of Publication

Nov 10, 2026

The progressive online magazine Salon has abruptly shut down after 31 years of publication. Salon was widely celebrated as a trailblazer for digital journalism after it was founded in 1995.

Palestinian American Ahmed Moor Launches 2028 Democratic Primary Challenge Against Sen. Fetterman

Nov 10, 2026

Image Credit: Moor for Senate

In Pennsylvania, the Gaza-born Palestinian American writer and businessman Ahmed Moor launched a 2028 Democratic primary challenge Monday against Senator John Fetterman, who is an ardent defender of Israel. Moor is a regular columnist at publications including The Guardian and The Nation. He’s running as a democratic socialist, connecting U.S. military aid to Israel and the Trump administration’s war on Iran to the rising cost of living. This is Ahmed Moor speaking with Democracy Now! in 2024 about his family in Gaza.

Ahmed Moor : “My family has experienced direct loss through the genocide. Most recently, my cousin’s 19-year-old son was killed by an Israeli sniper in Rafah. And so, the urgency surrounding this lawsuit goes to the fact that the conditions are getting worse. The danger that people are exposed to continues even as we speak.”

The original content of this program is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License . Please attribute legal copies of this work to democracynow.org. Some of the work(s) that this program incorporates, however, may be separately licensed. For further information or additional permissions, contact us.

Ableton Live 13

Hacker News
www.ableton.com
2026-11-10 07:58:04
Comments...
Original Article

What’s new

FAQs

Ableton Live 13 adds new audio and MIDI workflows, sound design tools and mixing effects. Highlights include:

  • A built-in Step Sequencer, ARA 2 support for compatible audio-editing plug-ins, Capture Automation, and Contextual Browsing for adding devices and swapping presets directly from the device chain.

  • Drum Synth, new Multiband and Mid-Side Racks, expanded Rack controls, and Envelope Clips for automating and modulating effects on return tracks.

  • Device Slots in the mixer, and new Core Library Drum Racks, instrument presets, Audio Effect Racks, samples, and MIDI clips.

  • Arrangement Sync for Ableton Link, support for exporting tempo automation and time signature changes, and more precise event timing in exported MIDI files.

  • Mixer improvements including Send sliders, a persistent Mixer Configuration menu for choosing which sections are visible, smoother mixer resizing, and an Unsolo button on the Main track, plus an updated Phaser-Flanger interface.

Live 13 Suite also includes Melodyne essential, Looplet, Clipper, Transient Shaper and the Classic Dynamics & EQ Pack by Softube.

See the full Release Notes for every change.

Push 3 gains Custom Layouts, a new Step Sequencer layout, a new Performance Mixer, and Device Mode upgrades. Custom Layouts combine Session View, note areas, XYZ and mixer controls on a single page. The Step Sequencer brings the step editing experience from Live to the hardware. Device Mode adds jog wheel navigation and up to 32 Rack Macros.

Push 2 supports the new Step Sequencer and most Device Mode improvements (except jog wheel navigation), but not Custom Layouts, Performance Mixer or Expressive Step Editing.

See the full Release Notes for every change.

Live 13 is the next major version of Ableton Live, following Live 12. It adds audio and MIDI workflows including ARA 2 support, Step Sequencer and Capture Automation, plus instruments and effects, expanded Rack controls, updated Core Library content, and more. Everything you can do in Live 12 you can still do in Live 13.

Ableton Live 13 comes in three editions: Intro, Standard and Suite.

They share the same core workflow but differ in their features and included instruments, effects and sounds. Live Intro is limited to 16 tracks and Scenes. Standard allows unlimited tracks and Scenes, and adds many more built-in instruments, effects and sounds.

Suite includes everything in Standard plus Max for Live, the complete instrument and effect collection, and Live’s full Core Library.

Suite also comes with Melodyne essential for ARA 2 editing, plus the Classic Dynamics & EQ Pack by Softube and Looplet as free downloads at release. Compare editions in detail .

Ableton Live 13 will be released in early 2027. Subscribe to our Newsletter to be notified at release

Yes, in two ways:

  • If you already own Live 12 – pre-order Live 13 at 20% off.

  • If you don’t own Live 12 yet – buy or upgrade to Live 12 at 20% off during the announcement offer and get the corresponding Live 13 edition free when it’s released.

Log in to your User Account and visit the Ableton shop to see the upgrade options for your license. From now until the release of Live 13, you can buy or upgrade to Live 12 and get the corresponding Live 13 edition for free on release day.

You can extend your existing plan to cover the cost of upgrading to Live 13 Suite and start using it as soon as it’s released. Visit the Ableton shop to see your upgrade options.

Limited places for the Live 13 public beta are available to Live Standard and Suite owners. Learn more about the Ableton Live beta program .

Most ARA 2 plug-ins work with Live 13, including Melodyne. Live 13 Suite comes with Melodyne essential. A small number have known compatibility issues. See the full Release Notes for more information.

One ARA plug-in can be used at a time, across multiple clips and tracks.

Anthropic to Seek $1.3T Valuation in IPO

Hacker News
www.wsj.com
2026-11-10 07:49:32
Comments...
Original Article

Please enable JS and disable any ad blocker

Let over Lambda–50 Years of Lisp (2008)

Hacker News
letoverlambda.com
2026-11-10 07:35:27
Comments...
Original Article

About the Book

Let Over Lambda (ISBN 978-1-4357-1275-1, 376+iv pp.) is one of the most hardcore computer programming books out there. Starting with the fundamentals, it describes the most advanced features of the most advanced language: C OMMON L ISP . The point of this book is to expose you to ideas that you might otherwise never be exposed to.

This book is about macros, that is programs that write programs. Macros are what make lisp the greatest programming language in the world. When used properly, macros enable amazing feats of abstraction, programmer productivity, and code efficiency and security that are unheard of elsewhere. Macros let you do things you simply cannot do in other languages.

If you are looking for a dry coding manual that re-hashes common-sense techniques in whatever langue du jour, this book is not for you. This book is about pushing the boundaries of what we know about programming. While this book teaches useful macro skills that can help solve your programming problems today and now, it has also been designed to be entertaining and inspiring. If you have ever wondered what lisp or even programming itself is really about, this is the book you have been looking for.


2026 update: Let Over Lambda was published in 2008, to align with the 50th anniversary of Lisp's invention in 1958. A lot has changed since then, in both Lisp and programming practice in general. Although my thinking and opinions have evolved since, I still believe the book holds up well as a tutorial and explanation of why Lisp so special. Going forward, the entire book is free to read online ( HTML , PDF ). Happy lisping!


News

  • Chapter 6 is now open. It takes a detour through anaphoric macros and culminates in what I think is a very interesting macro: pandoric-eval .
  • Official Japanese translation available at Amazon.co.jp or any other fine Japanese book store.
  • Chapter 5 now open. This is one of my favourite chapters. Enjoy.
  • Added a clarifications page to better explain the Let Over Lambda message.
  • Matthew Lamari wrote a review on Amazon and gave the book 5/5 stars.
  • Chapter 4 has been opened. Read about it in Press Release #2 .
  • Adam Petersen wrote a review .
  • Press Release #1 is available. It contains summaries of all the chapters.
  • Let Over Lambda has an ISBN: 978-1-4357-1275-1
  • References are available in a lispy format.
  • The back cover is confirmed. Thanks Leo!

Next-Level Benchmarking Overfitting

Lobsters
databasearchitects.blogspot.com
2026-11-10 07:20:55
Comments...
Original Article

In my recent blog post I remarked that database benchmarking is in a crisis because AI agents start to overfit on individual benchmarks with questionable techniques, which drives execution times towards zero. This has happened with TPC-D in the past, and broke the benchmark. TPC-H tries to fight that with rules, but most people who publish (unofficial) TPC-H results simply ignore the rules. In combination with overly eager AI agents, this leads to brutal overfitting.

We are seeing the next level of that with the GenDB-V system . The corresponding paper commands “Stop Handcrafting Your Engine! GenDB-V: Towards AI-Generated and Formally Verified Database Systems” , and reports speedups of 22× to 61× over Umbra and DuckDB, and all that in a fully verified system. These are indeed impressive claims, and would suggest that traditional database engines are in trouble.

Taking a step back, though, it should be clear that a performance improvement of a factor of 22 over Umbra is infeasible, at least if we are talking about traditional query processing. At SF10, the 22 TPC-H queries read roughly 15GB of (compressed) base data, and on a 9950X3D Umbra runs all queries in a total of roughly 540ms. On that machine the memory touched for data divided by the memory bandwidth (54GB/s) alone is about 280ms; anything below that is infeasible. Better compression might bring that down a bit, but not by an order of magnitude.

Unsurprisingly, the most dramatic gains of GenDB-V come from precomputation. The agents have carefully handcrafted auxiliary data structures for each query, which are computed at load time, and which avoid most of the work. The physical design is heavily tuned to the queries, too, for example, there is an extra structure that lists the supplier rows in s_acctbal DESC order, which makes Q2 trivial. Similar per-query data structures are built for most queries. And we see that in the performance numbers: Several queries already run in near-constant time at SF100: Q2 in 0.7 ms, Q17 in about 15 ms and Q4 in about 17 ms on one thread. That is the TPC-D symptom, without stored aggregates.

There is also a “plain-array” mode, which, at first glance, is more fair, as it avoids these excessive preparations and also reports performance improvements of just roughly a factor of 3, which seems achievable. But when looking closely, we see that here the agents did something even more insane: They hard-coded their knowledge about the data generator. They “know” that each customer k will be at row k-1 . And they know that dbgen numbers the i -th order 32·(i/8) + i%8 , so key k should be at row 8·(k/32) + k%32 − 1 . Which makes the join in query Q18 super cheap.

How does all this fit together with the claim of a fully verified database engine? Well, the code does check if the hard-coded knowledge about the data generator holds in practice, e.g., by checking if the guessed join partner row is correct. If not, it falls back to a super slow generic nested loop implementation, but as that never happens with the official TPC-H data generator, that code path is irrelevant in the reported experiments.

Which brings me back to my original blog post claim: Letting AI agents optimize for a given database benchmark makes the benchmark useless. They will do their best to find insane tricks to speed up this particular benchmark, but none of that would work in a real system. The high tuning and synthesis time aside, deleting a single tuple (or inserting one in the middle) can most likely cause the whole approach to fall off a cliff, as it forces the slow fallback path. Which is not something you want in a production system.

What's new in the .NET 11 runtime

Hacker News
learn.microsoft.com
2026-11-10 07:20:07
Comments...
Original Article

This article describes new features in the .NET runtime for .NET 11. It was last updated for release candidate 2 (RC 2).

Updated minimum hardware requirements

The minimum hardware requirements for .NET 11 have been updated to require more modern instruction sets on both x86/x64 and Arm64 architectures. Additionally, the ReadyToRun (R2R) compilation targets have been updated to take advantage of newer hardware capabilities.

Arm64 requirements

For Apple, there's no change to the minimum hardware or the ReadyToRun target. The Apple M1 chips are approximately equivalent to armv8.5-a and provide support for at least the AdvSimd (NEON), CRC , DOTPROD , LSE , RCPC , RCPC2 , and RDMA instruction sets.

For Linux, there's no change to the minimum hardware. .NET continues to support devices such as Raspberry Pi that might only provide support for the AdvSimd instruction set. The ReadyToRun target has been updated to include the LSE instruction set, which might result in additional jitting overhead if you launch an application.

For Windows, the baseline is updated to require the LSE instruction set. This is required by Windows 11 and by all Arm64 CPUs officially supported by Windows 10 . Additionally, it's inline with the Arm SBSA (Server Base System Architecture) requirements. The ReadyToRun target has been updated to be armv8.2-a + RCPC , which provides support for at least AdvSimd , CRC , LSE , RCPC , and RDMA , and covers the majority of hardware officially supported.

OS Previous JIT/AOT minimum New JIT/AOT minimum Previous R2R target New R2R target
Apple Apple M1 (No change) Apple M1 (No change)
Linux armv8.0-a (No change) armv8.0-a armv8.0-a + LSE
Windows armv8.0-a armv8.0-a + LSE armv8.0-a armv8.2-a + RCPC

x86/x64 requirements

For all three operating systems (Apple, Linux, and Windows), the baseline is updated from x86-64-v1 to x86-64-v2 . This changes the hardware from only guaranteeing CMOV , CX8 , SSE , and SSE2 to also guaranteeing CX16 , POPCNT , SSE3 , SSSE3 , SSE4.1 , and SSE4.2 . This guarantee is required by Windows 11 and by all x86/x64 CPUs officially supported on Windows 10. It includes all chips still officially supported by Intel and AMD, with the last older chips having gone out of support around 2013.

The ReadyToRun target has been updated to x86-64-v3 for Windows and Linux, which additionally includes the AVX , AVX2 , BMI1 , BMI2 , F16C , FMA , LZCNT , and MOVBE instruction sets. The ReadyToRun target for Apple remains unchanged.

OS Previous JIT/AOT minimum New JIT/AOT minimum Previous R2R target New R2R target
Apple x86-64-v1 x86-64-v2 x86-64-v2 (No change)
Linux x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3
Windows x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3

Impact

Starting with .NET 11, .NET fails to run on older hardware and might print a message similar to the following:

The current CPU is missing one or more of the baseline instruction sets.

For ReadyToRun -capable assemblies, there might be additional startup overhead on some supported hardware that doesn't meet the expected support for a typical device.

Reason for change

.NET supports a broad range of hardware, often above and beyond the minimum hardware requirements put in place by the underlying operating system. This support adds significant complexity to the codebase, particularly for much older hardware that's unlikely to still be in use. Additionally, it defines a "lowest common denominator" that AOT targets must default to, which can, in some scenarios, lead to reduced performance.

The update to the minimum baseline was made to reduce the maintenance complexity of the codebase and to better align with the documented (and often enforced) hardware requirements of the underlying operating system.

For more information, see Minimum hardware requirements updated .

Runtime Async

.NET 11 introduces runtime-native async (Runtime Async V2), a significant step toward replacing compiler-generated async state machines with runtime-managed suspension and resumption. Instead of the compiler emitting state-machine classes, the runtime itself tracks async execution, producing cleaner stack traces, better debuggability, and lower overhead.

Runtime Async is a preview feature. To opt in, add the following property to your project file:

<PropertyGroup>
  <Features>runtime-async=on</Features>
</PropertyGroup>

A net11.0 project no longer requires <EnablePreviewFeatures>true</EnablePreviewFeatures> to use Runtime Async.

The .NET runtime libraries themselves are compiled with runtime-async=on . The runtime libraries no longer contain compiler-generated state machines and rely entirely on runtime-provided async. This makes it possible to migrate an entire app (with only library dependencies) to the new model, and it provides broad functional and performance validation of the feature. The product team welcomes any reports—positive or negative—about throughput and library size changes you observe.

.NET 11 also includes two additional improvements:

  • Covariant Task → Task<T> overrides: When a derived class returns Task<T> for a base method that returns Task , the runtime now generates a void-returning thunk that bridges the calling convention difference, so virtual dispatch works for both flavors. The same fix applies to NativeAOT.
  • Inlining in crossgen2: Restrictions that prevented runtime-async methods from being inlined during ReadyToRun (R2R) compilation have been removed. All async tests pass with both crossgen2 and composite R2R, and inlining of await-less async calls (the synchronous fast path) is confirmed end-to-end.

Note

The DOTNET_RuntimeAsync and UNSUPPORTED_RuntimeAsync environment variables that previously controlled runtime-async behavior have been removed. To opt out of runtime-async per project, set <UseRuntimeAsync>false</UseRuntimeAsync> in your project file instead of relying on the environment variable.

Cleaner live stack traces

The most visible improvement is in live stack traces —what profilers, debuggers, and new StackTrace() see during execution. With compiler-generated async, each async method produces multiple frames from state-machine infrastructure. With Runtime Async, the actual methods appear directly on the call stack.

// To enable runtime async, add the following to your .csproj:
//   <Features>runtime-async=on</Features>

await OuterAsync();

static async Task OuterAsync()
{
    await Task.CompletedTask;
    await MiddleAsync();
}

static async Task MiddleAsync()
{
    await Task.CompletedTask;
    await InnerAsync();
}

static async Task InnerAsync()
{
    await Task.CompletedTask;
    Console.WriteLine(new StackTrace(fNeedFileInfo: true));
}

Without runtime-async —13 frames, state-machine infrastructure visible:

   at Program.<<Main>$>g__InnerAsync|0_2() in Program.cs:line 24
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](...)
   at Program.<<Main>$>g__InnerAsync|0_2()
   at Program.<<Main>$>g__MiddleAsync|0_1() in Program.cs:line 14
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](...)
   at Program.<<Main>$>g__MiddleAsync|0_1()
   at Program.<<Main>$>g__OuterAsync|0_0() in Program.cs:line 8
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](...)
   at Program.<<Main>$>g__OuterAsync|0_0()
   at Program.<Main>$(String[] args) in Program.cs:line 3
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](...)
   at Program.<Main>$(String[] args)
   at Program.<Main>(String[] args)

With runtime-async —5 frames, the real call chain:

   at Program.<<Main>$>g__InnerAsync|0_2() in Program.cs:line 24
   at Program.<<Main>$>g__MiddleAsync|0_1() in Program.cs:line 14
   at Program.<<Main>$>g__OuterAsync|0_0() in Program.cs:line 8
   at Program.<Main>$(String[] args) in Program.cs:line 3
   at Program.<Main>(String[] args)

Note

Exception stack traces (from catch (Exception ex) ) already look the same with or without Runtime Async, because existing ExceptionDispatchInfo cleanup in compiler-generated code handles that case. The improvement is in what you see during live execution.

This improvement benefits anything that inspects the live execution stack, including profiling tools, diagnostic logging, and the debugger call stack window.

NativeAOT and ReadyToRun support

Runtime Async supports NativeAOT and ReadyToRun compilation. This extends the feature beyond JIT-compiled code to ahead-of-time compiled scenarios. The runtime also reuses continuation objects more aggressively and avoids saving unchanged locals, reducing allocation pressure in async-heavy code.

Debugging improvements

Breakpoints now bind correctly inside runtime-async methods, and the debugger can step through await boundaries without jumping into compiler-generated infrastructure.

Runtime Async performance improvements

Runtime Async includes several performance improvements:

  • JIT async support: The JIT compiles a dedicated runtime-async version of a synchronous, task-returning method rather than delegating through a thunk. The JIT turns the method's tail calls into runtime-async calls and awaits the task that would otherwise be returned, eliminating an extra layer of indirection.
  • Tail-merged suspension points: The JIT tail-merges async suspension points so generated code is smaller.
  • Cached continuations: Continuations used for runtime-async callable task thunks are cached and reused.
  • Pooled methods opt out: Methods that are already pooled opt out of runtime-async, avoiding redundant work.
  • Tiered async compilation: Async versions now flow through tiered compilation, so hot async methods get tier 1 optimizations after warm-up.
  • Task and ValueTask factory intrinsics: The JIT recognizes common factories, such as Task.FromResult , Task.CompletedTask , and ValueTask.FromResult , and folds them into faster async paths.
  • Tail-await optimizations: Implicit tailcalls from async methods are enabled again when the method directly returns another async result, and await Task.Yield() avoids extra allocations in runtime-async paths.

Async continuations without ExecutionContext

Async continuations can now opt out of ExecutionContext capture and restore. ExecutionContext carries ambient state—such as AsyncLocal<T> values—across await points. Every Task continuation previously captured a snapshot of the context and restored it before running, even when no AsyncLocal<T> state was in use and the restore was a no-op.

The runtime now detects when a continuation has nothing to restore and skips the capture/restore cycle entirely. Task , Task<T> , ValueTask , and ValueTask<T> all benefit from this change, as does the runtime-async implementation path. Applications that use ConfigureAwait(false) and AsyncLocal<T> sparingly see reduced overhead in high-throughput async code paths.

JIT improvements

  • Bounds check elimination: The just-in-time (JIT) compiler now eliminates bounds checks for the common pattern where an index plus a constant is compared against a length, such as i + cns < len . It also eliminates more redundant bounds checks for index-from-end access (for example, values[^1] ). These improvements reduce redundant checks in tight loops and improve throughput for array and span operations.
  • Redundant checked context removal: The JIT can now prove and remove redundant checked arithmetic contexts—for example, when a value is already known to be in range. This optimization eliminates unnecessary overflow checks in generated code.
  • Switch expression folding: Multi-target switch expressions now fold into simpler branchless checks when the targets are a small set of constants, for example x is 0 or 1 or 2 or 3 or 4 .
  • Faster uint-to-float/double casts: Casting uint to float or double is faster on pre-AVX-512 x86 hardware.
  • SVE2 intrinsics: New Arm SVE2 (Scalable Vector Extension 2) intrinsics are available: ShiftRightLogicalNarrowingSaturate(Even|Odd) . These expand the set of vectorized operations available on Arm hardware that supports SVE2.
  • Math.BigMul on x64: Math.BigMul(long, long, out long) is now significantly faster on x64. The JIT generates a single MUL r/m64 instruction when both operands are 64-bit values and the caller requests the high half of the result, eliminating the previous helper call.
  • Single-IG prolog restriction removed: The JIT no longer requires the function prolog to fit in a single instruction group (IG). Complex prologues with many saved registers, large stack allocations, or runtime-async state setup no longer trigger fallback paths.
  • SELECT(cond, cns, cns) folding: The JIT now folds conditional selects whose two branches both produce the same constant into just that constant—for example, condition ? 42 : 42 becomes 42 . This fold eliminates unnecessary comparisons that can appear after earlier optimizations unify branches.
  • AVX-VNNI-512 intrinsics: System.Runtime.Intrinsics.X86.AvxVnni.V512 exposes 512-bit forms of the AVX-VNNI multiply-add intrinsics on CPUs with AVX512-VNNI support.
  • Saturating floating-point conversions: Unchecked float and double conversions to small integer types now saturate to type bounds instead of wrapping through intermediate truncation.
  • ARM64 Vector<T> by reference for SVE: When the runtime is compiled with ARM SVE support, Vector<T> values are passed by reference rather than by value, aligning with the ARM calling convention for scalable types and enabling better code generation for SVE-intensive code.

For better performance and code quality, .NET 11 adds several more JIT optimizations:

Constant-folding SequenceEqual

The JIT can now fold a string.Equals or ReadOnlySpan<T>.SequenceEqual call whose operands are both compile-time constants, replacing the byte-by-byte comparison with the constant true or false result. This matters most after inlining, when a caller passes another literal to a helper that compares against a known string. When IsAdmin is inlined into a caller that passes "Guest" , the JIT sees "Guest" == "Admin" and folds it to false :

static bool IsAdmin(string role) => role == "Admin";

The optimization applies to string literals, const string fields, and UTF-8 literals (for example, "PNG"u8 ).

Devirtualization improvements

The JIT can now devirtualize generic virtual methods, including non-shared generic virtual methods and shared generic virtual methods that don't require a runtime lookup. Default interface methods declared on generic interfaces can now be devirtualized as well.

In addition, the result of Activator.CreateInstance<T>() is now treated as having an exact type, allowing the JIT to devirtualize subsequent calls made on the returned object.

These improvements unlock further downstream optimizations such as inlining and constant folding, reducing runtime dispatch overhead and improving performance. For example:

IfaceGeneric<string> caller = new Caller<string>();
Iface obj = Activator.CreateInstance<Impl>();
caller.DefaultImpl(obj, "test"); // Can be optimized down to Console.WriteLine("test")

interface Iface
{
    void GenericMethod<T>(T value);
}

interface IfaceGeneric<T>
{
    void DefaultImpl(Iface obj, T value) => obj.GenericMethod(value);
}

class Impl : Iface
{
    public void GenericMethod<T>(T value) => Console.WriteLine(value);
}

class Caller<T> : IfaceGeneric<T>
{
}

Here the JIT can determine the exact implementation behind both interface calls, devirtualize them, inline through the call chain, and ultimately fold the code down to the equivalent of Console.WriteLine("test") .

Eliminating bounds checks after an empty-span guard

The JIT now picks up the length != 0 assertion from an empty-span check and uses it to prove the bounds check on the first element succeeds:

if (!span.IsEmpty && span[0] == value)
{
    // The bounds check on span[0] is now eliminated.
}

Redundant branch and test elimination

When an outer predicate is already implied by an inner branch, the JIT now removes the redundant outer check. Similarly, when code assigns a value in a conditional and then immediately tests it, the second test is eliminated:

if (x > 0)
{
    if (x > 1) S();  // The outer x > 0 check is folded away.
}

int y = condition ? 1 : 2;
if (y == 1) A(); else B();  // The y == 1 test is eliminated;
                             // each branch of the ternary goes directly to A() or B().

These optimizations are most visible after inlining, where guards from different methods land in the same compiled body.

Hardware intrinsics and code generation

.NET 11 includes several new hardware intrinsics and code generation improvements:

  • Hardware FP16 instructions for Half arithmetic and conversions: The JIT uses hardware FP16 instructions for Half arithmetic and conversions when the processor supports them. On x64, arithmetic uses AVX10.1, while conversions between Half and float can use F16C (available on most AVX2-capable hardware). On Arm64, arithmetic uses the optional FP16 instruction set, while conversions between Half and float or double use baseline Arm64 instructions. The optimization requires no application changes and preserves the existing ABI representation of Half .
  • Better cost modeling for x86/x64 SIMD: The JIT's floating-point execution and size costs previously reflected x87-era assumptions. Updated costs that reflect modern SSE/AVX hardware let the JIT make better decisions about hoisting and common subexpression elimination (CSE) around SIMD code.
  • Faster DotProduct on AVX: Lowering for Vector128.Dot -style operations now emits a mul + permute + add sequence instead of vdpps / vdppd when AVX is available, which is consistently faster.
  • Faster IndexOfAnyAsciiSearcher on Arm64: Arm64 versions of Vector*.Count , IndexOf , and LastIndexOf no longer route through ExtractMostSignificantBits , yielding a 5–50% improvement in workloads that use these APIs in their core loop.
  • Arm64 ToScalar for 64-bit integers: ToScalar on Vector*<long> and Vector*<ulong> now uses fmov instead of umov , which is shorter and faster on most cores.
  • SVE CreateWhile API expansion: CreateWhile gains signed, double , and single variants alongside the existing unsigned ones, completing the predicate-generation surface for SVE loops.
  • New SVE2 and Arm64 instruction-set detection: The runtime now reports SVE_AES , SVE_SHA3 , SVE_SM4 , SHA3 , and SM4 as separate instruction sets, allowing Sve2*.IsSupported queries for those features on capable hardware.
  • AVX10 detection fix: The CPUID-bit cache for AVX10 was being overwritten by a later query, which could cause AVX10 to be misreported on capable hardware. This is now fixed.

ReadyToRun improvements

Comparer<T>.Default and EqualityComparer<T>.Default are now specialized in ReadyToRun (R2R) images. Previously, the default comparers used reflection that R2R couldn't see ahead of time, causing callers to fall back to the JIT. R2R now generates a specialized helper in the image—mirroring the NativeAOT approach—and benchmarks show up to a 20× improvement for collections operations that rely on the default comparer.

VM improvements

  • Cached interface dispatch on non-JIT platforms: On platforms that lack JIT support, such as iOS, interface dispatch was falling back to an expensive generic fixup path. Cached dispatch yields up to 200x improvements in interface-heavy code on these targets.
  • Guid.NewGuid() on Linux: Guid.NewGuid() on Linux now uses the getrandom() syscall with batch caching instead of reading from /dev/urandom , yielding approximately 12% throughput improvement for GUID generation.

WebAssembly improvements

Browser and WebAssembly support has several improvements:

  • WebCIL payload loading: The runtime can now load WebCIL payloads directly, improving compatibility with browser-based deployment scenarios.
  • Better debugging symbols: Symbol and stack trace quality for WebAssembly debugging has improved, making it easier to diagnose issues in browser-hosted .NET apps.
  • float[] , Span<float> , and ArraySegment<float> marshaling: float[] , Span<float> , and ArraySegment<float> are now marshaled more directly across JavaScript boundaries, reducing overhead for interop-heavy code.

.NET includes improvements to CoreCLR-on-WebAssembly:

  • WebCIL V1 is the default for CoreCLR WASM builds: The shared WebCIL header gains a TableBase field (28 → 32 bytes). Both Mono and CoreCLR readers accept V0 and V1. Crossgen2's WasmObjectWriter produces V1 directly, and CoreCLR-flavored WASM SDK builds default WasmWebcilVersion to V1 .
  • Native re-link works for CoreCLR WASM apps: A full Emscripten-based pipeline replaces the previous stub targets. Re-linking dotnet.native.wasm from the runtime pack and including custom native code via NativeFileReference now works.
  • JavaScript minification in Release builds: Browser CoreCLR Release builds ship minified JavaScript.
  • NativeAOT publish for WASM no longer drops package satellites: Satellite assemblies from NuGet packages are now passed to ILC and pruned from the publish output, fixing localization for AOT-published apps that depend on packages such as System.CommandLine .

CoreCLR on WebAssembly now runs the libraries test suite end to end.

Platform support for more than 1024 CPUs

The .NET runtime can now initialize on machines with more than 1024 logical processors. Previously, sched_getaffinity was called with the default cpu_set_t (capped at 1024), causing initialization to fail on high-core-count servers. The runtime now allocates the CPU set dynamically. The GC retains its 1024-heap limit, but the CPU count limit is removed.

In-process crash report logging

A new in-process crash reporting mechanism captures diagnostic information from within the crashing process before it terminates. Previously, crash diagnostics were collected by an out-of-process monitor. While the out-of-process approach is safe, it can miss information that's only available inside the dying process. The new in-process path logs the managed stack trace, module list, and key runtime state to a well-known path before the process exits.

This capability originated on mobile platforms and is now also available on Linux and macOS. When DOTNET_DbgEnableMiniDump isn't enabled, set DOTNET_EnableCrashReport=1 or DOTNET_EnableCrashReportOnly=1 to select the in-process reporter. Existing createdump behavior remains in place when minidumps are enabled.

NativeAOT: faster interface dispatch

NativeAOT now uses a dispatch helper for interface method calls. Instead of a direct fat-pointer call sequence, the runtime routes interface dispatch through a shared helper that can be patched to the correct implementation after the call site warms up. This reduces the binary size of interface call sites and improves throughput on workloads with many interface method calls.

Generic virtual method dispatch also uses the shared dispatch-cell infrastructure, which improves both monomorphic and polymorphic call performance. In addition, Assembly.GetCallingAssembly() now works on NativeAOT when stack trace data is available.

SIMD lane construction and composition

System.Runtime.Intrinsics now includes lane construction and composition APIs for hardware vector types. The new APIs let you construct a vector from individually specified lanes and extract or reorder lanes between vectors. This enables precise, portable control over SIMD vector element placement without falling back to platform-specific intrinsics.

The new methods fall into a few families:

  • Patterned construction: CreateGeometricSequence , CreateAlternatingSequence , and CreateHarmonicSequence build a vector from a starting value and a rule.
  • Interleave and de-interleave: Zip , ZipLower / ZipUpper , Unzip , UnzipEven / UnzipOdd .
  • Rearrange: The Concat family ( ConcatLowerLower , ConcatLowerUpper , ConcatUpperLower , ConcatUpperUpper ) and Reverse .
using System.Runtime.Intrinsics;

// {1, 2, 4, 8} — each lane is the previous lane times two
Vector128<int> powers = Vector128.CreateGeometricSequence(1, 2);

// Interleave two vectors lane-by-lane
(Vector128<int> lower, Vector128<int> upper) =
    Vector128.Zip(Vector128.Create(1), Vector128.Create(2));

These APIs are available on Vector128<T> , Vector256<T> , Vector512<T> , Vector64<T> , and Vector<T> . They're building blocks for image processing, audio digital signal processing (DSP), and other SIMD-intensive workloads that need fine-grained control over vector element layout.

File locking on iOS and tvOS

On iOS and tvOS, including simulators, CoreCLR now disables advisory file locking by default. A FileStream that acquired an advisory lock could cause the operating system to terminate an app when the app entered the background while it held the lock. As a result, FileShare restrictions are no longer enforced by those locks on iOS and tvOS, including between handles in the same process. Mac Catalyst and other platforms keep their existing defaults.

If your app relies on FileShare enforcement and you accept the risk of suspension-related termination, restore file locking by using either of the following settings:

  • Set the DOTNET_SYSTEM_IO_DISABLEFILELOCKING environment variable to 0 .

  • Set the System.IO.DisableFileLocking runtime configuration property to false . For example, in the runtimeconfig.json file:

    {
      "configProperties": {
        "System.IO.DisableFileLocking": false
      }
    }
    

Reliability fixes

The runtime includes fixes for the following issues:

  • On Linux, the SDK no longer crashes on Red Hat Enterprise Linux (RHEL) 8 on Arm64, and the runtime correctly traverses cgroup v2 memory limits at the root of the hierarchy.
  • Generic virtual method dispatch no longer hangs after repeated AssemblyLoadContext unloads.
  • TryDequeue no longer spuriously reports an empty queue while a segment freezes during growth. TryPeek has the same reliability fix.
  • On Windows, garbage collection works correctly on machines with multiple CPU groups.

Runtime diagnostics

The async profiler now instruments both runtime-async methods and compiler-generated async state-machine methods, so tools receive one consistent event model regardless of async implementation style. The runtime also adds improved interpreter perf-map logging support, and fixes parsing of CORECLR_NOTIFICATION_PROFILERS lists that don't end with a semicolon.

See also

AlphaProof Code

Hacker News
deepmind.google
2026-11-10 07:11:12
Comments...
Original Article

November 10, 2026 Research

How Google DeepMind researchers built a new agentic framework that formally verified the code of Signal’s cryptographic protocol — long considered to be a grand security challenge

Today, we’re sharing a milestone in software security long considered to be a grand security challenge: Google DeepMind researchers guided AI agents to mathematically prove key security properties of the actual code underlying the Signal protocol, the technology that protects billions of private conversations in apps like Signal and Google Messages.

This breakthrough discovery was made using AlphaProof Code , a novel agentic framework for formal verification at unprecedented depth that combines human expertise with AI agents. Formal verification—mathematically proving code runs correctly without flaws—is the highest standard of security assurance; however, it is difficult and often labor-intensive.

Our work marks the first time AI has been used to formally verify a widely deployed cryptographic protocol at this depth. It's also the first time the implementation of a widely deployed protocol like this has been formally verified by any method, with or without AI.

How we verified Signal

AlphaProof Code is a multi-LLM agentic framework that splits the work of formal verification the way a research team would: human experts work with AI to decide what to prove, and a group of AI agents does it.

First, our researchers collaborated with a mix of models to translate Signal’s security goals into formal mathematical specifications, with human experts reviewing every one. From there, agents powered by Gemini Carbon did the proofs, generating over six million lines of Lean, a computer language that mathematically proves the accuracy of code.

Next, the agents audited the proof and highlighted areas that needed a second look by a human – just one percent of the codebase, a massive time savings. Because Lean automatically checks the rest, our experts could focus their review where human judgment matters most.

Cryptographic protocols underpin nearly all digital communication, from online banking to web browsing, and a single flaw can expose millions of people at once. That's why experts have spent decades formally analyzing them.

But most protocol verification stops at the design level. Our agents went further, proving that the compiled code fulfills the key security properties – such as keeping messages protected before and after a device is temporarily compromised – down to the exact code running on devices. Because real-world vulnerabilities often hide in the gap between design and implementation, bridging this gap makes these proofs vastly more complex.

Even at this complexity, our verification process took just four weeks – a task that historically takes expert teams years – proving that Signal's core cryptographic code delivers the security protections our experts specified.

To confirm that AlphaProof Code can tell correct code from buggy code, we reintroduced two real, previously fixed bugs into an isolated version of Signal's code. In both cases, the system produced a machine-checked proof that the buggy version was insecure.

In AlphaProof Code, AI agents help users write a specification, then autonomously prove that the implementation meets it. Every proof is checked by Lean to verify the agents' work.

While prior formal verification work has necessarily focused on smaller scopes, this new approach enables a significant expansion. Traditionally, verifying that production code strictly matches its cryptographic design required extensive manual effort, making the use of AI agents to automatically translate live code into valid Lean theorems a great breakthrough. As AI-driven security threats grow, having the core Signal protocol rigorously verified with automated theorem proving gives us even greater confidence that our code delivers on its privacy guarantees.

The future of security

Achieving this long-standing challenge demonstrates how AI can bring elite security assurance to businesses, governments, and critical infrastructure, helping defend against agent-driven cyber threats.

Verifying Signal's core cryptography lays the groundwork to secure other vital systems, from medical device firmware to power grid software.

Scaling these techniques requires continued research. Paired with automated defense agents like CodeMender , formal verification can help counter the speed and scale of modern cyber threats to create software with mathematical proof that its protections work.

We are open-sourcing our formal verification artifacts for community use. Read the technical paper below.

Acknowledgements

This research was developed by Swarat Chaudhuri, Andrew Ferraiuolo, Anton Kovsharov, Tej Chajed, Sam Schlesinger, Karn Seth, Jonathan Katz, Charles Sutton, and Pushmeet Kohli.

We thank Eric Wieser for help with open-sourcing our code, Owen Jones for program management support, and Martín Abadi, Christopher Henson, Katerina Hristova, Henryk Michalewski, Jonathan Protzenko and George Tsoukalas for helpful discussions. We thank Signal's Rolfe Schmidt, Michael Rosenberg, and Ehren Kret for their feedback on our methodology. We also thank Tulsee Doshi, Four Flynn, Kate Olszewska, Alicia Huang, Andy Liu, Benoit Schillings, Raluca Ada Popa, Melvin Johnson, Koray Kavukcuoglu, Demis Hassabis, and Sundar Pichai for their support of the project.

Introducing CodeMender: an AI agent for code security

Proactive cyber defense for governments and enterprises

Gemini 4 Carbon: Our next frontier model

AI achieves silver-medal standard solving International Mathematical Olympiad problems

SAP patches ICM2SHELL and PROXYGATE maximum severity flaws

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 07:07:03
SAP patched 35 vulnerabilities in its November 2026 security updates, including four maximum-severity issues affecting its NetWeaver, Web Dispatcher, and Gateway software. [...]...
Original Article

SAP

SAP patched 35 vulnerabilities in its November 2026 security updates , including four maximum-severity issues affecting its NetWeaver, Web Dispatcher, and Gateway software.

The company addressed memory corruption ( CVE-2026-76964 ) and missing authentication ( CVE-2026-120017 ) flaws in the NetWeaver Application Server ABAP's Internet Communication Manager and SAML2 Service Provider components.

NetWeaver is the core app platform that underpins SAP's business software and handles application integration, authentication, user management, and data processing.

image

The other two maximum severity vulnerabilities stem from a broken access control weakness ( CVE-2026-89103 ) in SAP Gateway and a memory corruption issue ( CVE-2026-89126 ) in SAP Web Dispatcher.

Gateway is a core framework that enables external apps to securely connect to SAP backend systems, while Web Dispatcher (deployed in almost every enterprise SAP environment) is a specialized component that acts as a load balancer and reverse proxy for web requests entering an SAP system architecture.

Cybersecurity firm Onapsis, which found and reported three of these security issues, collectively tracks CVE-2026-76964 and CVE-2026-89126 as ICM2SHELL and the CVE-2026-89103 pre-auth remote code execution vulnerability as PROXYGATE .

"ICM2SHELL turns a routine part of web traffic into a point of ingress for attackers. [..] The result is remote code execution against the component that faces the network by design: no SAP user, no password and no user interaction," Onapsis said.

"PROXYGATE works by convincing the SAP Gateway that an unauthenticated, external attacker is one of the internal application servers. [..] There is no SAP user, no password, and no user interaction, yet full control of the SAP system as the account that owns the installation is achieved. On a production ERP system, that means direct exposure of the business data, transaction integrity, and the availability of critical business applications."

SAP rated these four vulnerabilities 10/10 on the CVSS severity scale, stating that unauthenticated attackers can exploit them to fully compromise the targeted systems remotely.

More recently patched max severity SAP security issues

These are the latest in a string of other maximum-severity flaws SAP has fixed in multiple components in recent months.

For instance, it patched CVE-2026-58231 in the Commerce Cloud cloud-based e-commerce platform in August, which threat intelligence firm Defused flagged as actively exploited in attacks days after the patch.

It also addressed two more max severity flaws in September and October : a memory corruption flaw in the SAP Kernel code (tracked as CVE-2026-44756 and dubbed OVERPASS by Onapsis security researchers who reported it) and an OAuth2 SSRF vulnerability affecting multi-tenant BTP applications (CVE-2026-89111).

The US Cybersecurity and Infrastructure Security Agency (CISA) has flagged 14 SAP security flaws as actively exploited since November 2021, three of which ransomware groups also abused in the wild.

SAP is a German multinational software company that reported revenues exceeding €36 billion in fiscal year 2025 and serves 99 of the 100 largest companies worldwide.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

New OpenSSH Vulnerability

Schneier
www.schneier.com
2026-11-10 07:02:38
It’s a bad one, and it’s been in the code for a decade: A newly disclosed flaw involving OpenSSH and musl, dubbed “*sshole,” allows attackers to log in to certain Alpine Linux and other musl-based Linux accounts configured to block password authentication simply by entering a...
Original Article

It’s a bad one , and it’s been in the code for a decade:

A newly disclosed flaw involving OpenSSH and musl, dubbed “*sshole,” allows attackers to log in to certain Alpine Linux and other musl-based Linux accounts configured to block password authentication simply by entering an oversized password.

“Oversized” means longer than 256 bytes. Details .

Slashdot thread . And another news article .

Tags: , , ,

Posted on November 10, 2026 at 7:02 AM • 0 Comments

Sidebar photo of Bruce Schneier by Joe MacInnis.

Show HN: A 15 MB self-hosted Netflix and Spotify for your media server

Hacker News
github.com
2026-11-10 06:51:19
Comments...
Original Article

English · 简体中文 · हिन्दी · Español · Français · العربية · Português · Русский · 日本語 · Deutsch · 한국어 · Italiano · Polski · Nederlands · Türkçe · Українська

HolyArrs: one self-hosted app for shows, movies, music and downloads

HolyArrs.com r/HolyArrs Discord Roadmap What's new

Build OpenSSF Scorecard OpenSSF Best Practices Version Licence: AGPL-3.0

Six apps to watch a show. Now it's one.

HolyArrs is one self-hosted app for your shows, movies and music.
Browse like a streaming app, ask for what you want, and it handles the rest.

About 15 MB to download · about 140 MB of RAM idle with 10,000 titles · amd64, arm64, armv7
The six apps it replaces download 718.2 MB together.

Quick start · Why · What it does · Moving from other apps · The manual · Help

HolyArrs Explore: hover a title and the trailer plays

🚀 Running in two minutes

Save this as docker-compose.yml in a new folder on a local disk:

name: HolyArrs
services:
  holyarrs:
    image: holyarrs/holyarrs:latest
    container_name: holyarrs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /your/local/path:/config
      - /path/to/movies:/movies #optional
      - /path/to/tv:/tv #optional
      - /path/to/music:/music #optional
      - /path/to/downloads:/downloads #optional
    ports:
      - 6262:6262
    restart: unless-stopped

Open http://your-server:6262 and make the owner account. A short setup walks you through folders, a downloader and a Source.

No API keys to hunt down. No second container. Every setting is explained in the manual further down.

💡 Why I built it

A normal media server runs six apps: Sonarr, Radarr, Lidarr, Bazarr, Prowlarr and Seerr.

That's six logins, six ports, six update cycles and six API keys to copy between them. When a show doesn't land, you check six places to find out why.

I wanted one app. One login, one port, one place to look.

So I built it.

App Download (amd64) Idle RAM Logins Web ports
Sonarr 87.9 MB 1 1
Radarr 91.0 MB 1 1
Lidarr 121.3 MB 1 1
Prowlarr 80.8 MB 1 1
Bazarr 156.4 MB 1 1
Overseerr 180.8 MB 1 1
Six together 718.2 MB 6 6
HolyArrs 14.9 MB ~140 MiB 1 1 (6262)

About 48 times smaller. Compressed registry download, linuxserver.io images, amd64, measured 2026-11-08. Idle RAM measured with 10,000 titles and 55,000 movies and episodes.

🎬 Ask for a title, and it shows up in your library

Someone asks for a title. HolyArrs searches your Sources, picks the best release with your Pick rules, sends it to your downloader and files it in your library. Your media server hears about it when it lands.

Browse like a streaming app. Ask for anything. It finds it. Straight to your downloader. Subtitles kept. Into your library.

🍿 Explore Browse like a streaming app. Hover a title and the trailer plays.
🙋 Requests A whole show or one season. You approve, or let trusted people skip the queue.
🎯 Pick rules You decide which release wins: size, quality, language.
💬 Subtitles In the languages you pick, kept with the file. Finding them online comes after 1.0.
📅 Calendar What's airing next for everything you follow.
🚚 Move your setup From Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Seerr, Overseerr, qBittorrent and SABnzbd. Try it first, undo it later.
🔌 Old-app API Prowlarr can keep pushing Sources to HolyArrs once you turn it on.
🗝️ No API keys needed Titles, artwork and charts come from the HolyArrs metadata server.
🔒 Encrypted keys Stored passwords and keys are locked with a master key that lives in your config folder.
🪶 Tiny An image of about 15 MB with nothing but HolyArrs inside.
See every page in motion

🤝 It works with what you already run

Downloaders: qBittorrent, Transmission, Deluge, SABnzbd, NZBGet. Media servers: Plex, Jellyfin, Emby.

  • Downloaders: qBittorrent, Transmission, Deluge, SABnzbd, NZBGet
  • Media servers: Plex, Jellyfin, Emby
  • Sources: any Torznab or Newznab indexer, or Prowlarr or Jackett
  • Moves your setup from: Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Seerr, Overseerr, qBittorrent, SABnzbd

🚚 Bring your old setup with you

Open Settings > Move from other apps , add each old app's address and API key (or a backup zip), pick what comes over, run Try it , then Move . You can undo a move later.

From What comes over
Sonarr, Radarr, Lidarr Library folders, titles, quality profiles as Pick rules, exclusions, naming, indexers and download clients
Prowlarr Indexers as Sources
Bazarr Default subtitle languages
Seerr, Overseerr People and their waiting or approved requests
qBittorrent, SABnzbd Downloaders

HolyArrs only reads your old apps and changes nothing in them, so you can run both side by side until you trust it.

Keys and passwords stay behind; you type them in again or import them from a file. Custom formats, tags and history don't come over. Media files never move. Step by step: Move from other apps .

🧭 What it doesn't do yet

  • Downloading by itself. HolyArrs connects to qBittorrent, SABnzbd and the others. It doesn't replace them.
  • AI or MCP features. Not in 1.0.
  • Phone and TV apps. Not built. The web app works on a phone.
  • Music in Explore is still being built.

What's next is on the roadmap . You vote, I build. Post ideas on r/HolyArrs .

❓ Questions people ask first

Do I keep qBittorrent or SABnzbd? Yes, for now. HolyArrs connects to the downloader you already run. A built-in downloader is planned for a later release.

Can Sonarr and Radarr keep running while I try it? Yes. HolyArrs reads them once and never changes them.

Is it free? Yes. It's free and open source.


📖 The manual

Everything below is reference. The full guides live at docs.HolyArrs.com .

Supported architectures

Pulling holyarrs/holyarrs:latest gets the right image for your machine.

Architecture Available Runs on
amd64 ✅ Most PCs, servers and NAS boxes
arm64 ✅ Apple silicon, newer Raspberry Pis, ARM servers
armv7 ✅ Older 32-bit ARM boards

On a NAS? See Unraid, Synology and other NAS boxes .

Version tags

Images live on Docker Hub as holyarrs/holyarrs .

Tag Use it for
latest The newest release.
1.0.9 One exact version. It never moves.

Usage

docker compose (recommended)

name: HolyArrs
services:
  holyarrs:
    image: holyarrs/holyarrs:latest
    container_name: holyarrs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - /your/local/path:/config
      - /path/to/movies:/movies #optional
      - /path/to/tv:/tv #optional
      - /path/to/music:/music #optional
      - /path/to/downloads:/downloads #optional
    ports:
      - 6262:6262
    restart: unless-stopped

docker cli

docker run -d \
  --name=holyarrs \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=America/New_York \
  -p 6262:6262 \
  -v /your/local/path:/config \
  -v /path/to/movies:/movies `#optional` \
  -v /path/to/tv:/tv `#optional` \
  -v /path/to/music:/music `#optional` \
  -v /path/to/downloads:/downloads `#optional` \
  --restart unless-stopped \
  holyarrs/holyarrs:latest

Container settings go in compose. Everything else is set in the app.

Parameters

Each one is written <outside>:<inside> . Change the left side only.

Parameter Function
-p 6262:6262 The web app.
-e PUID=1000 The user HolyArrs runs as. See User and group .
-e PGID=1000 The group HolyArrs runs as.
-e TZ=America/New_York Your time zone, for the calendar, schedules and logs. Etc/UTC when left out.
-e UMASK=022 Optional. Permission bits new files leave out. Use 002 when a group must write too.
-v /config Databases, settings, the master key, backups and logs. Local disk only, never a network share.
-v /movies Optional. A movie Library folder.
-v /tv Optional. A shows Library folder.
-v /music Optional. A music Library folder.
-v /downloads Optional. Your downloader's download folder.
--read-only=true Optional. Only /config and /tmp need to be writable.
--user=1000:1000 Optional. Start as a fixed user. PUID and PGID are then ignored.

More variables (reverse proxy, URL base, save path): Environment variables .

Environment variables from files

Put FILE__ in front of any variable to read its value from a file, such as a Docker secret:

environment:
  - FILE__HOLYARRS_ALLOWED_HOSTS=/run/secrets/holyarrs_hosts

User and group

PUID and PGID must match the user that owns your media folders. Find them with:

id youruser
# uid=1000(youruser) gid=1000(youruser)

HolyArrs never changes the owner of your media or download folders. Give that user write access to them, because HolyArrs makes folders and moves files.

Application setup

Open http://your-server:6262 and make the owner account right away. There is no default password. Until you make it, whoever opens HolyArrs first becomes the owner.

The setup that opens next asks for your folders, a downloader and a Source. Guide: First run .

Media folders

The four optional mounts are the easy way to start. The cost: each mount is its own filesystem inside the container, so every import is a full copy.

Want instant moves that take no extra space? Mount one parent folder with downloads and Library folders inside it, and give your downloader the same mount at the same path. Guide: Folders .

Docker Desktop on Windows and Mac

Use a named volume for /config . Media folders can stay host folders. Guide: Install .

Keep your master key safe

holyarrs.key in your config folder is what opens your stored passwords and keys. Backups don't include it, so keep a copy somewhere else. As the owner, open Settings > Backups and choose Download key kit . See Backups .

Updating

docker compose pull
docker compose up -d

If the new version changes how data is stored, HolyArrs makes a backup first. To go back to it: docker exec holyarrs /holyarrs restore --pre-update , then docker restart holyarrs . Never remove /config during an update. See Updates .

Security

  • The owner account is made at first visit. There is no default password.
  • Stored passwords and keys are encrypted with holyarrs.key .
  • The image has no shell inside it.
  • Don't forward port 6262 on your router. Use a VPN such as Tailscale, or a reverse proxy with HTTPS.
  • Report security problems privately: SECURITY .

Support info

The image has no shell, so docker exec -it holyarrs /bin/bash won't work. HolyArrs' own commands do:

  • Follow the log:

  • Check your setup. Every line says OK , WARN or FAIL , and each WARN or FAIL says how to fix it:

    docker exec holyarrs /holyarrs doctor
  • Locked out of the owner account:

    docker exec -i holyarrs /holyarrs reset-owner
  • Version number:

    docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrs

Troubleshooting

You see Do this
Permission denied on media folders PUID and PGID don't match the owner of those folders. Run id youruser , put those numbers in compose and recreate the container.
Errors with the config folder on a network share The database needs a local disk. Move /config to a local path. Media folders on a share are fine.
Port 6262 is already in use Change the left side only, for example 6263:6262 , and open http://your-server:6263 .
HolyArrs can't reach qBittorrent or SABnzbd Inside a container, localhost means the container itself. Use the downloader's container name on the same Docker network, or the host's IP address.
Imports are copied Mount one shared parent folder. See Media folders .

More: Troubleshooting .

Where to ask

You have Go to
A question Discord
An idea or a vote r/HolyArrs and the roadmap
A bug Issues (bugs and roadmap only)
A security problem SECURITY
Anything else support@HolyArrs.com

Contributing

Read CONTRIBUTING , then Architecture and Setup . Open an issue before a big change.

On your first pull request a bot asks you to accept a short licence agreement ( CLA.md ). One click, once.

Licence

HolyArrs is free and open source under the GNU AGPL-3.0 .

Want to build it into a closed product? Email support@HolyArrs.com for a commercial licence.

Keep it going

HolyArrs is free, but it isn't free to run. Every install talks to a metadata server I pay for every month. Sponsors cover that, and buy more hours for the things you vote for.

Sponsor HolyArrs Vote on the roadmap


Built by CoderLuii .
If HolyArrs saves you from running six apps, a star helps other people find it.

Open Graph images with Astro and Typst

Lobsters
eaj.no
2026-11-10 06:42:48
Comments...
Original Article

Links to blog articles look better when they’re accompanied by an image. If the HTML head has a meta tag like this, it will happen automatically:

<meta
  property="og:image"
  content="https://eaj.no/posts/graph-images-with-typst/og.png"
/>

My previous, tedious workflow for these kinds of images was to go to unspash.com , search for something like structure or archive , and then select an image I thought would fit the theme of the post. Being both boring and error-prone, I abandonded that process and set up a pipeline that generates image cards at build-time instead. They look like this:

The generated OpenGraph image for this blog post

Let me show you how I did it.

Typst

Typst is a tool that generates high-quality documents from a simple markup language. A lovechild of LaTeX and Markdown , it works great for math whilst also keeping the day-to-day text formatting syntax bearable. As a small taste, this snippet (adapted from the Typst README )

#set page(width: 10cm, height: auto, margin: 1cm)
#set heading(numbering: "I.")

#let fib_1 = 1
#let fib_2 = 1

= The Fibonacci sequence
The Fibonacci sequence is defined through the
recurrence relation $F_n = F_(n-1) + F_(n-2)$,
with $F_1 = #fib_1$ and $F_2 = #fib_2$.
It can also be expressed in _closed form:_

$
  F_n = round(1 / sqrt(5) phi.alt^n), quad
  phi.alt = (1 + sqrt(5)) / 2.
$

produces this fine document:

The output of typst compile --format png --ppi 144 typst-example.typ

By default the typst CLI will create a PDF, but it can also make PNGs. The above image was created with the command

typst compile \
    --format png \
    --ppi 250 \
    typst-example.typ

But if you’d rather create something with a bit more pizzazz, by all means. How about

#set page(width: 1200pt, height: 630pt, margin: 80pt, fill: rgb("#FF1493"))
#set text(font: "Comic Sans MS", fill: white, lang: "no")


#grid(
  rows: (1fr, auto),
  align(left + horizon, {
    text(size: 72pt, weight: 800, "Typst very nice")
  }),
  text(size: 24pt, "Would typst again"),
)

which yields

This is clearly much better

Fantastic.

If all of my posts were titled “Typst very nice”, we’d be done, but, alas. Luckily, typst accepts inputs to a document with --input key=value , which is put in a sys.inputs dictionary for the template to read. So the template becomes

#set page(width: 1200pt, height: 630pt, margin: 80pt, fill: rgb("#FF1493"))
#set text(font: "Comic Sans MS", fill: white, lang: "no")

#let title = sys.inputs.at("title", default: "You forgot the title :(")
// Reading the input here ☝️

#grid(
  rows: (1fr, auto),
  align(left + horizon, {
    text(
      size: if title.len() > 70 { 60pt } else { 72pt },
      weight: 800,
      title,
    )
  }),
  text(size: 24pt, "Would typst again"),
)

which, when rendered with

typst compile \
    --format png \
    --ppi 144 \
    --input title="Look ma, from the CLI!" fancy-typst-with-input.typ

becomes

It’s … perfect.

Perfection.

Let’s move on to generating the images at build-time.

Astro

This site is built with Astro, a static site generator . Articles are written in Markdown, which is then bundled into a Content Collection by Astro. The details are irrelevant, what matters is that this lets me define metadata which I can query through a Javascript API.

The source code for the page template is at src/pages/posts/[id].astro . There are a few notable things about this file path:

  1. That it is in the src/pages/ directory tells Astro that this should be rendered as a page.
  2. The remainder of the path, /posts/[id] , tells Astro where to put the page.
  3. [id] being in brackets means id is a dynamic parameter which must be defined at build time.

In other words, Astro needs to know every ID when building the site—it can’t generate infinitely many IDs. A function called getStaticPaths exported from the template defines the set:

import type { GetStaticPathsResult } from "astro";
import { getCollection } from "astro:content";

export async function getStaticPaths(): Promise<GetStaticPathsResult> {
  const posts = await getCollection("posts");
  return posts.map((post) => ({
    params: { id: post.id },
    props: { post },
  }));
}

That is, fetch every article, and use its id as the id parameter. This is the object returned for the current page:

{
  params: { id: "open-graph-images-with-typst" },
  props: { post: {
    /* Everything the template needs to render a post */
  }}
}

By default Astro will generate an HTML file, but it can also return other kinds of responses. Together with this blog post I also put the following snippet at src/pages/api/build-info.json.ts :

import type { APIRoute } from "astro";

export const GET = (async () => {
  const data = await getLatestJjMetadata();
  return new Response(JSON.stringify(data), {
    headers: { "content-type": "application/json" },
  });
}) satisfies APIRoute;

async function getLatestJjMetadata(): Promise<{
  changeId: string;
  committedAt: Date;
}> {
  // Implementation cut for brevity
}

Note that there are no parameters in brackets, so this will create a single JSON file at build time:

❯ tree dist/api
dist/api
└── build-info.json

And just like that, this blog now has a JSON api .

Note that the file extension is included in the path, i.e. .json.ts . This is because when the dev server is running it sets the appropriate content-type header to let the browser know what to do with the response, but once the page is built the result is a file with .ts stripped off. The browser then interprets the remaining file extension to know what content to expect at the path.

You probably see where this is going: Create an API route which takes a post ID as a parameter and ends in .png.ts , gets the post title using the Astro Content Collection API, generates an image, and returns it in a response with the appropriate content-type header.

You got it. Here’s the open graph image endpoint in its entirety, defined at src/pages/posts/[id]/og.png.ts :

import type { APIRoute, GetStaticPaths, InferGetStaticPropsType } from "astro";
import { getCollection } from "astro:content";
import { execFile } from "node:child_process";
import { promisify } from "node:util";

import { OPEN_GRAPH_TEMPLATE_PATH } from "@/utils";

const execFileAsync = promisify(execFile);

export const getStaticPaths = (async () => {
  const posts = await getCollection("posts");
  return posts.map((post) => ({
    params: { id: post.id },
    props: { title: post.data.title },
  }));
}) satisfies GetStaticPaths;

type Props = InferGetStaticPropsType<typeof getStaticPaths>;

export const GET = (async ({ props }) => {
  const { stdout } = await execFileAsync(
    "typst",
    [
      "compile",
      OPEN_GRAPH_TEMPLATE_PATH,
      "-",
      "--format",
      "png",
      "--ppi",
      "144",
      "--input",
      `title=${props.title}`,
    ],
    { encoding: "buffer" },
  );
  return new Response(new Uint8Array(stdout), {
    headers: { "content-type": "image/png" },
  });
}) satisfies APIRoute<Props>;

Now go to eaj.no/posts/open-graph-images-with-typst/og.png , et voilà:

The generated OpenGraph image from the above code

When a sharing platform loads the image for an article, it might very well be cached for a long time. Even if you decide to completely redo your entire branding, LinkedIn might insist on displaying your previous hideous design unless you handle it. A simple trick is to use a throwaway search parameter that doesn’t do anything other than make the URL unique:

/some-image.png?v=whatever

A straightforward (but silly) solution for creating this parameter is to generate a random string of characters every time the site is built, ensuring your image is always fetched anew. I landed on using a hash of the typst template and the title, so that the cache key only changes whenever the actual content does:

import { createHash } from "node:crypto";
import { readFileSync } from "node:fs";

export function openGraphImageCacheBuster(title: string): string {
  const template = readFileSync(OPEN_GRAPH_TEMPLATE_PATH);
  return createHash("sha256")
    .update(template)
    .update(title)
    .digest("hex")
    .slice(0, 10);
}

Debugging Rust in 2026

Lobsters
blog.jetbrains.com
2026-11-10 06:10:32
Comments...
Original Article
Rust logo

Focus on what matters

Rust is a great language for many reasons: safety, performance and tooling. However, debugging is maybe one of the weakest points still. Interestingly enough, the Rust debugging survey 2026 results show that the majority (53.2%) of Rust users don’t use a debugger at all . Many Rust developers (81.3%) say that prints are simply easier/faster. The setup is also another problem: many users find it difficult to set up a debugger and it’s not a beginner-friendly feature. Especially when you include async (28.1%) and macros (23.0%), stepping features break most of the time.

However, the situation is still better than it was in 2021, when the survey was first conducted. The number of users who use a debugger has increased from 36% to 46.8%!

This made me think: how is the debugging experience in Rust today?
So let’s dive into the techniques and tools that are available and how they are used in practice.

The Scenario

We will be using the Graham scan algorithm as an example. The algorithm computes the convex hull of a set of points in a plane: the smallest convex shape that encloses every point. Basically, you can think of it as stretching a rubber band around a collection of nails.

🐀: Here, I built a TUI with Ratatui to visualize the algorithm and the bug:

The source code is available on GitHub .

You can see that it fails to enclose P2: the computed fence is red while the expected fence is green. Now, let’s go through the available debugging techniques to fix it!

1. println!, dbg! or tracing

There is already a unit test that fails, so we can use it as a debugging loop. Simply add println! or dbg! statements to the code and run the test until we find the bug.

Here, we print the intermediate ordering, rerun the failing test and see that points with the same polar angle are ordered farthest-first. Reversing the distance comparison fixes the ordering and the next test run passes.

This is the most common way of debugging in Rust and it works well for small programs. However, you see the problem : it is an iterative and tedious process. You need to recompile and run the program every time which takes time. It is also not ideal for big projects. It still works though!

🐀: What else?

2. rust-gdb or rust-lldb in the terminal

We can inspect the same failing test without changing the source code via rust-lldb or rust-gdb :

From there, we set breakpoints, run only the failing test and inspect the current frame:

At the breakpoint, a is 36 units squared from the pivot while b is only 4. The comparator uses b.cmp(a), so points with the same polar angle are sorted in reverse distance order.
That is the bug: the farther point is processed first and later removed from the hull.

So let’s apply the fix:

We can also use the TUI to visualize it:

🐀: Yay, the rubber band is now wrapped around all the points.

Unlike print debugging, this lets us inspect more state without editing and recompiling the program after every question. The trade-off is a manual workflow : setting useful breakpoints and knowing which debugger commands to run.

🐀: Okay, but is there a more friendly way to debug this?

3. RustRover’s debugger

RustRover is JetBrains’ cross-platform IDE built specifically for Rust. It integrates Cargo projects, tests, code analysis and debugging in one place (and it is free for non-commercial use!).

The recommended way to install it is through the JetBrains Toolbox App , which also handles updates and lets you switch between stable and early-access-preview versions.

RustRover provides a graphical interface for GDB and LLDB , which means we can use the same workflow as before but with a more user-friendly interface. Click the gutter to set a breakpoint, then click the debug icon next to the failing test.

The RustRover debugger documentation covers custom configurations, stepping, watches and expression evaluation in more detail!

🐀: Interesting… I thought this type of debuggers are only available for more mature languages like Python or Java. How does it work under the hood?

Good question! There is actually some interesting Rust-specific machinery behind the debugger. In my Rust in Production episode with Matthias Endler , I explained how RustRover turns the source into its own PSI, then a typed high-level representation and finally MIR. When we evaluate a Rust expression or call a function during a debug session, RustRover lowers it to MIR and sends it to the debugger to execute against the paused process.

🐀: So the debugger actually understands the Rust expression we are asking it to evaluate! Amazing.

Bonus: AI-assisted debugging

Recently we started to see the “ AI-assisted ” prefix in many things… programming, writing, ordering food, etc. and I thought why not try it for debugging as well?

🐀: So basically ask the agent to fix the bug for us?

Not exactly. The agent is not a replacement for the debugger, but it can help us understand the problem and suggest fixes. Instead, we will ask the agent to debug the problem and watch it in action with RustRover’s debugger!

Starting with RustRover 2026.3 , the IDE’s integrated MCP server (Model Context Protocol) can expose the debugger to agents such as Codex and Claude Code. This means that instead of clicking around manually, the agent can start a debug session, set breakpoints, step through the program, read variables and evaluate expressions for us. See what’s new in RustRover 2026.3 for the full release highlights!

Simply open Settings → Tools → MCP Server , enable the server and click Auto-Configure next to your agent. Restart the agent afterwards and you’re set!

Also, see the agentic debugging documentation for more details.

Once the MCP is connected, we can give the agent a goal like this:
“Debug and fix this problem with RustRover MCP “

The result is:

🐀: Oh cool, you’re running Codex inside RustRover with the new Air plugin , and we can watch it run the failing test, set breakpoints, inspect runtime values and fix the bug!

Conclusion

Rust debugging isn’t one workflow. You can use println!, rust-lldb, RustRover or even an AI-assisted debugger. Each has its own trade-offs and is suitable for different scenarios.

🐀: Just pick the tool that works for you!

If you’d like to watch this in action, check out the video version of this post , recorded at Rust Berlin Meetup :

Cheers! 🧀

Subscribe to Rust Blog updates

Discover more

ChatGPT’s Teen Mode could deprive teenagers of a fundamental need | Robin Kirman

Guardian
www.theguardian.com
2026-11-10 06:00:50
What young students stand to lose is more than cognitive skill: it’s a reliable sense of their own minds In August, OpenAI launched Teen Mode – a version of ChatGPT in which every user under 18 will automatically be enrolled – a year after a lawsuit alleged that ChatGPT had contributed to the suicid...
Original Article

I n August, OpenAI launched Teen Mode – a version of ChatGPT in which every user under 18 will automatically be enrolled – a year after a lawsuit alleged that ChatGPT had contributed to the suicide of a 16-year-old named Adam Raine.

For years, the tech industry has contested any causal link between its products and the harms named in a wave of similar lawsuits, each alleging that the companies had not merely failed to protect children but had deliberately designed products to exploit them.

Teen Mode is a tacit admission of culpability and it reveals what the industry now acknowledges – and doesn’t – about its products’ negative effects on young users’ mental health.

As a psychoanalyst who works with young people, I’ve been observing, up close, the impact of social media and AI on their psychological development: how these tools influence not only behavior or mood at the day-to-day level, but identity formation and character.

Teen mode may address some of the harms done to teenagers. A deeper one remains.

At the surface level, Teen Mode seeks to prevent some of the more obvious harms to young users: it provides guardrails against destructive content, parent notifications for self-harm concerns, and a prohibition on presenting itself as a friend, claiming personal feelings, or suggesting it is anything other than a tool. That last restriction is a direct response to the Character.AI wrongful death case, in which a fourteen-year-old formed an intense attachment to a chatbot.

There’s a growing awareness that it’s not only the content AI delivers but the way AI behaves that can cause harm, and that recognition seems to have driven the design of another feature: Study Mode, Teen Mode’s built-in learning tool.

Recent research has confirmed what we already knew: that versions of AI that simply do the work for kids produce short-term grade improvements that collapse the moment the tool is removed, leaving students worse off than if they’d never used it. Study Mode is meant to yield gains that will hold.

Leah Belsky, OpenAI’s vice-president for education, calls it a transformation from “a straightforward answer engine into a cognitive tutor”. Socratic in approach, the feature refuses to supply answers, requiring the student to do much of the thinking herself.

Teen Mode offers something genuinely new: accessible to any student with a phone, it gently pushes back on easy answers and creates rather than forecloses the discomfort of not-yet-knowing. For a teenager without access to a tutor or a teacher with time for her questions, a Socratic companion can offer a real democratization of intellectually rigorous support – and one that surpasses, in scope of knowledge and availability, what any human source could provide.

Where tutors eventually go home, and parents get frustrated, or simply have other things to do, Teen Mode is a tireless interlocutor – arguably, the only invention in human history capable of sustaining infinite patience with a teen.

Which is to say: it is, structurally, the too-good parent. And that is precisely where the problem begins.

Donald W Winnicott, the British pediatrician and psychoanalyst who spent decades studying how a child’s sense of self emerges, argued that what a child needs from her environment is not perfection but sufficiency.

The “good-enough” parent, his most famous concept, is good precisely because she is not always good: she is present enough to give the child a secure base, but limited enough – distracted, tired, occasionally wrong – that the child must repeatedly draw on her own resources and find herself capable. A too-good parent, if such a thing could exist, would spare the child that struggle entirely, and the sense of self it builds.

Winnicott was writing about early childhood, but the argument extends into adolescence, when separating from other minds becomes the central task.

Peter Blos, the psychoanalyst who mapped that terrain most carefully, described adolescence as the work of disengaging from the authority of the minds a teenager has depended on and discovering what, beneath all that, is actually hers. The teenager who is convinced her parents are idiots, her teachers are frauds, and every received opinion is suspect is doing the important work of clearing ground.

What makes adolescence generative isn’t that teenagers get it right – it’s that they think they’re right – and that magnificent, insupportable conviction is what gives them the nerve to find out what they actually believe. The adolescent whose intellectual life is always accompanied, always guided, always met with a calibrated response, never gets to become her own authority.

One could argue – and OpenAI’s designers probably would – that Teen Mode is a scaffold, not a crutch: that a teenager who learns to think in dialogue with a rigorous interlocutor will internalize that process and eventually need the tool less. But this assumes the incentive to let go ever arrives – unlikely, as the world moves rapidly toward more dependence on AI.

And even if this were to happen, development is not clearly reversible in that way: what grows with a scaffold is not the same as what grows without one. Many tech executives seem to grasp this themselves, sending their own children to schools with the resources to enforce a mandate on unassisted work.

For a teenager without those advantages, the default is Teen Mode. Or, worse, the version of AI without the Socratic guardrails.

What those students stand to lose is more than cognitive skill: it’s a reliable sense of their own minds.

We have already begun to recognize what constant connectivity does to the developing self in other domains. Jonathan Haidt’s synthesis of the data on smartphone use showed that the sharp rise in anxiety, depression, and suicidal ideation among teenagers coincides with the incursion of technology into unstructured, unsupervised time – displacing the private space in which an identity takes shape.

Sherry Turkle, who has spent decades studying teenagers and technology, found that many report not knowing what they think until they’ve posted it and seen how others respond.

What I encounter in my office goes further: young people who lack a reliable internal compass, who struggle to know what they feel or want. That instability is not incidental to the youth mental health crisis; it is the condition underlying it. A person without an internal compass is an anxious one: dependent on confirmation, uncertain of her own perceptions, and easily destabilized.

This is the deeper harm the industry – and the designers of Teen Mode – have not addressed. Teen Mode may ask you to think, but it is still holding your hand, still guiding, still keeping the dependency going, and in doing so, exacerbates the developmental harm at the root of the crisis.

Ultimately, a stable sense of self requires moments of genuine trial, of being tested and surviving. The blank page, faced alone, is one such crucible: a place where we encounter ourselves, in doubt and even dread, and also in discovery and joy.

Writing in the 1850s, the German philosopher Arthur Schopenhauer observed: “To think for oneself is always a little uncomfortable, and that is why so few people do it.”

Now we may be creating a generation for whom this challenge is rarely required. That loss, hard to measure and therefore likely to be ignored, is profound: it is only in passing through the discomfort Schopenhauer names – the strain of thinking by and for yourself – that a person comes to truly know she has a mind of her own.

What Constant Surveillance Is Doing to Children

Hacker News
www.theatlantic.com
2026-11-10 05:47:18
Comments...
Original Article

Our site’s security protections triggered a block. If you think this was in error, email us at [email protected] . Please include how you got to this webpage and the Cloudflare Ray ID located at the bottom of the page.

If you would like to inquire about permission to access our content, email us at [email protected] .

Cloudflare Ray ID: a584ea07e82ab49c

Back to The Atlantic

Meet the Sad Wives of AI

Hacker News
www.wired.com
2026-11-10 05:40:51
Comments...
Original Article

Are you married to a man who’s obsessed with AI? I’m so, so sorry.

Illustration of a sad woman standing while a man tussles with multiple robots in the background on one side and a child...

ILLUSTRATIONS: CAT SIMS

If i had to listen to another minute of my husband talking about Claude Code, I might have actually died. It was 11 pm in Berkeley, California, where I was home alone with our 10-month-old daughter, and 2 am in Cambridge, Massachusetts, where he was visiting for his newish job in AI. “JUST LOOK AT THIS!” he shouted. The FaceTime camera zoomed toward a laptop sitting on a hotel bed. “SEE?!”

See what , I thought. I wanted to shower. I still had to take the dog out.

“ARE YOU LOOKING?” he shouted again. I wasn’t. I was looking at our real baby. But that’s the thing. There are two babies in this household now: the small human one and the large language model. Both demand constant attention. Both keep us up at 2 am.

Is this a Sophie’s choice kind of situation? Please. I’d kill the AI baby in an instant.


Image may contain Computer Electronics Mobile Phone Phone HandHeld Computer and Texting

There’s a strange and under-discussed side effect of the AI boom : what it’s doing to family dynamics. By which I mean: how it’s potentially destroying family dynamics. I’m sure this applies to all kinds of families, gay or straight, rich or poor, with any AI-pilled members. The technology is coming, has come, for us all. But for the purposes of this story, I mostly spoke to white-collar heteros in the Bay Area, because that’s where a certain psychological crisis seems most acute. Often it goes like this: He works in AI, and she does everything and anything else. Other times, it’s bleaker: He desperately wants to work in AI—or feels he must work in AI—and she wants him to do literally anything else.

Either way, the men go in and the women want out. How many? It depends on how you define “working in AI.” About 71 percent of “AI-skilled workers,” according to one report, are men, and there are roughly 35,000 open AI roles in the US at any given moment. Broaden that to include investors and you’re adding thousands more. Broaden it further to include every man who has mentioned to his wife that he is “looking at some opportunities in the space”—and we’re in the millions. Conservatively, that means hundreds of thousands of spouses, partners, and girlfriends, holding down the fort while someone mansplains the singularity to them. There are, in other words, a lot of us, and more of us are surfacing—gasping for air and a single conversation that doesn’t involve LLMs—by the day.

There’s a name for our ranks. I call us the sad wives of AI.

Image may contain Book Publication Comics Adult Person Face Head Electronics and Hardware

First of all, I’m sorry. AI is already the only thing most people talk about here, and it’s even worse for the sad wives.

One of them moved from New York for her husband’s career. He cofounded an AI company; now he’s head of design at another. “He’s so passionate about it,” she says. “I go along to get along.” That is, when she can remember what it is he does, exactly. “My eyes glaze over a bit. I tend to check out. I forget.” She does say his company is at the forefront of … something. Mostly, she’s tired. “I did not expect how homogenous it would be,” she says. “In New York, I had a friend who’s a teacher, a friend who’s a nurse, a friend in fashion, a friend in finance—and none of us talked about our jobs when we went out. Every time I go out in San Francisco, it feels like I’m at a work happy hour. I don’t get it.”

In a way, it can’t be helped. Most days it feels like every billboard in the city is about AI. Every. Single. One. “I’m on the edge,” another AI wife tells me, “while my husband drives by and is like, ‘Oh wow, that’s my company’s billboard.’ Cool. Great.” She, like almost every sad AI wife I talk to, doesn’t want me to include the specifics of her situation. Marriages, social standings, and finances—anything to protect the equity!—are on the line.

Some of the sad wives are obscenely rich; others are struggling. But the more I talk to them, the more I hear the same lines, the same complaints, the same clichés. The hours. The obsession. The sense that missing this moment would mean, for their AI-pilled spouses, missing the most important technological shift of a lifetime. “They really want to ride the wave,” one AI wife says. Another: “He’s always depressed about something.”


Image may contain Face Head Person Photography Portrait Adult Art Book Comics Publication and Drawing

Yana van der Meulen Rodgers, the chair of labor studies and employment relations at Rutgers University, has a blunt take: What’s happening in Bay Area households isn’t just a lifestyle story. It’s a labor market story. The AI boom, Rodgers says, is creating a “perfect storm” of forces reshaping household dynamics, playing out along predictably gendered lines.

The story is older than Silicon Valley, of course. Every major technological boom has produced the same figure, the person who gives everything to the wave. During the industrial revolution, it was the factory worker. During the Gold Rush, it was the men who left their families and headed west. During the dotcom boom, it was the founders sleeping under their desks in SoMa. Now, it is the person who is building, building, always building — vibe coding at midnight, constantly upgrading their models—convinced that stopping for five minutes means missing everything. Economists call this the “ideal worker.” Rodgers calls it a trap. “Someone who works many hours, giving all of themselves to this new force,” she says. “That means less time at home for the partner, less time for care work.”

Though things keep changing, some analyses suggest that women are about 20 percent less likely than men to use generative AI. “It’s a function not of gender per se,” Rodgers suggests, “but of the occupations that women hold.” Women are disproportionately represented in jobs—education, health care, social services—that right now use AI less. The result could be a compounding disadvantage. Over time, it means less access to the boom’s financial rewards, more responsibility for the domestic labor it generates.

And what happens when it doesn’t work out for the men? Many, if not most, won’t make it in AI, a lucrative but volatile business. “With job loss comes some depression,” Rodgers says. “Within the household, if one person is going through adverse mental health effects around job loss or uncertainty, the other naturally becomes the support person.” The cruel irony, for some sad wives, is that the moment their husband does leave AI, whether by choice or by force, there’s no relief. Now he’s home. Spiraling. Now she’s managing that too.


It was nearing the end of my therapy session. I had been rambling for 50 minutes about the mental load, the changing hormones, whether my postpartum depression could really just be traced to the fact that it took longer than anticipated to fit back into my jeans. Then my therapist interrupted and asked what exactly my partner did for work again. “Oh,” I said. “Well, he’s head of AI at his company.”

What she said next, I had to write down. Her client base, she allowed, is almost entirely women—women whose husbands, more often than not, are in some way professionally adjacent to AI. And it’s affecting their relationships. The pressure to keep up means zero boundaries at home. The very masculine energy of it all. And the constant fighting, which is about something bigger than them. He’s off in another world, a world of prompts and benchmarks and epiphanies, while she’s firmly in this one.

The resentment builds quietly. Several of these sad wives, my therapist added, have turned down job opportunities in AI themselves. Not because they weren’t qualified, but because it’s hard to raise kids and disrupt civilization at the same time.

Princess Diana famously said there were three people in her marriage. For the sad wives of AI, the third is a chatbot. I spoke to a few other family therapists, and they agreed with mine: The phenomenon is getting worse. “It’s a lot of tech wives,” one said, sighing. “A lot of tech wives.”


A tiktok meme has been making the rounds recently: young women at their laptops or doing their makeup, captioned something like, “Working so hard so my man can work on his AI startup that loses $30K a month.” The comments section stands in solidarity: “I’m ded.” “Yas queen.” “Just so he can have ‘founder’ in his bio.” I tried to reach out to some of these women. None bit.

I should also say I didn’t bother speaking to any of the actual husbands for this story. I’m sick of hearing from the men of AI. So many of us are. They have podcasts and Senate hearings and magazine profiles and probably a group chat with the president. They’ve been talked to—and I can’t stress this enough— enough.

Image may contain Book Comics Publication Person Adult Face and Head

On an unseasonably warm evening, I met up with two friends at a wine bar. Both are partnered with men somewhere on the AI spectrum—tangibly building it, wildly chasing it, or simply unable to shut up about it. We ordered something orange and natural, the kind of wine that signals you have opinions.

We were in Oakland, which has always prided itself on being the anti–San Francisco—more diversity, less venture-funded cold brew. It has never been home to a single major tech company. It didn’t matter. Within four minutes, we were talking about AI.

It’s so existential. I think about it and then I get depressed.

Yeah. Don’t think about it!

We thought about it for the next two hours.

Every night, it’s just existential dread.

And then, the men. Neither of my friends’ husbands actually makes money from AI. Not yet.

There is this sense, I offered, among people in AI—and people adjacent to it, and people who are pretty sure it’s coming for them—that this is their last chance. They’ve tried everything else, these men, from writing screenplays to investing in crypto. It’s AI or bust. Their partners, meanwhile, have quietly taken on a second job: emotional support. Chief Existential Officer, uncompensated. No one asked us if we wanted the gig.

So what happens now?

Maybe we’ll just go back to the Stone Age.

One friend has started lobbying for her family to become Outdoor People. The kind who go into the wilderness and disconnect. For a whole week, no access. Just don’t tell Claude.

A pause.

Do we want dessert?


Here’s how Bridget Balajadia, a clinician at Lupine Counseling in San Jose, characterizes the AI husband’s situation: “If you don’t respond to an email at midnight, you could wake up and not have a job.” It’s relentless. “In this industry, you’re reachable all the time. You’re thinking about it in the shower, when you’re having sex, it never leaves.” And when it never leaves, the relationship buckles. “It turns into this around-the-clock thing where neither partner is getting what they need. They’re both building walls of resentment.”

Which—we know already. But then Balajadia tells me two surprising things. The first is that some sad wives of AI don’t want to talk to her about their husbands. Why? “I’ve already worked through this with my chat,” they say. By which they mean … ChatGPT. Yes. Not only is AI driving a wedge between couples. It’s also become a primary tool for attempting to salvage their marriage.

Balajadia isn’t impressed. “They’re not having great outcomes,” she says. “It’s not going to challenge you. You end up being validated. Then both of you don’t move the needle in conflict.”

It gets worse. ChatGPT subsequently, in some situations, helps these sad wives explore the possibility of cheating. Some of them, Balajadia says, get “validating messages,” such as: “ Yes, it makes sense that you’re seeking attraction elsewhere because your partner’s not giving it to you. He’s emotionally unavailable. ” She pauses. “That’s probably not a great idea. You probably should address the stuff that’s coming up in your marriage, not go have sex with someone else.”


Some wives, it must be said, have uncomplicated relationships with AI. One tells me it has “supercharged” her life—wedding planning, caring for aging parents, housekeeping, veterinary advice. While her husband is focused on how AI will change the economy, she’s interested in how it will change her . Optimize her, really. “There’s just not enough hours in the day if I don’t try to gain efficiencies in some things.” In fact, she’s just vibe coded something or other. Maybe one day he’ll be a sad AI husband .

Or robots will fix everything. Another wife tells me that her husband, who founded an AI startup, is convinced they will have a household robot within the decade. “Maybe after we have kids, I’ll be like, ‘Bring a robot in,’” she says. “Right now, I can’t wrap my mind around it, though maybe people felt that way about washing machines.” This in response to the question I ask everyone: Has any part of the AI boom made things better at home? Could it ever?

The responses are generally uninspiring. Most of the time, the closest thing to a silver lining any sad wife can offer is that AI has given them something new to talk about at dinner.


Each time it’s the same pattern: a generation (of men) convinced this is their moment, and everyone else trying to figure out where they fit. A bubble. And bubbles, as anyone who was here in 2001 can tell you, tend to burst . One AI wife—the one who drives past billboards for companies her husband has backed—puts it simply: “Half of our income is dependent on AI doing well.”

Mine too. More than half, to be frank.

Flying home from that same trip to Massachusetts, my husband found himself watching the screen of the passenger next to him. It was playing Train Dreams , a movie about a man who leaves his family for logging and railroad work in the American West, a century ago. Even without sound, he got a little emotional. “Is that what I’m doing right now?” he asked me later.

The man in the film ultimately loses his wife and young daughter. He’s filled with regret for much of his life.

“But I’m doing it for our daughter,” my husband assured me. And: “I’ve always wanted the things I’ve worked on to be necessary.”

I thought about that for a while. Then I asked him to take the dog out.


What Say You?
Let us know what you think about this article in the comments below. Alternatively, you can submit a letter to the editor at [email protected] .

  • How AI Agents Plunged the Tech World Into Chaos

  • In your inbox: Will Knight’s AI Lab explores advances in AI

Alessandra Ram is an Emmy- and Murrow-winning journalist and the cohost of Sabotage , a podcast from Good Luck Media. A Bay Area native, she lives in Berkeley with her husband, daughter, and a very fluffy dog. ... Read More

'C:\> FORMAT C:' – relax, it's just a screen saver

Hacker News
fakedos.com
2026-11-10 05:32:36
Comments...
Original Article

FakeDOS 2.0 · Screen saver for macOS

The most realistic DOS since DOS .

Leave your Mac alone for a few minutes and it becomes a 1990s PC: an AWARD BIOS counts through 32 MB of RAM, a VGA prompt starts blinking, and then a ghost begins to type. It boots. It crashes. It dials. It lies convincingly.

v2.0 · macOS 13+ · Universal Binary · free

C:\> TYPE README.TXT

What is this?

Welcome, traveller. You have just discovered FakeDOS , a macOS screen saver that simulates a pixel-perfect DOS machine. And more.

Leave your Mac alone for a few minutes and something beautiful is going to happen: the screen fills with the warm 80×25 glow of a VGA text mode, an AWARD BIOS POST clicks through memory, and a friendly blinking C:\> prompt appears.

Perfect for

  • A conference room that does not need Slack popping up
  • Pretending to be a 12-year-old running Landmark Test
  • Tricking a co-worker into thinking you have lost it
  • Actually getting people to leave you alone

Features

Five boot modes

The Ghost Writer

Leave the prompt idle and a ghost starts typing commands by itself. It alternates between operating systems in an endless loop of simulated productivity.

  • Many DOS commands, boot linux, some Linux commands, boot dos, repeat
  • Realistic typing speed with human-like typos
  • Press any key to take over and the ghost vanishes

Warp 5

Speeds up everything, not just the ghost. 1 is slow, 9 skips all delays.

Landmark speed test

Type FDOS or LANDMARK at the prompt to see how fast your imaginary Pentium thinks it is.

IBM PC/XT 4.77 MHz

IBM AT 8 MHz

486DX 33 MHz

Your Pentium 166 MHz

Pure nostalgia, zero benchmarking.

Pentagon mode

Type PENTAGON at the prompt. We cannot tell you what happens.

ACCESS DENIED. CLASSIFIED.

This is not a real DOS.

  • OK Your files are safe.
  • OK Your disk is safe.
  • OK Your Mac is safe.
  • OK Your network is safe.

Absolutely nothing useful happens here.

FakeDOS is a pure simulation. Every single command you type produces carefully crafted fake output. No files are read, written, moved or deleted. No network connections are made. No processes are started. No disks are formatted.

When you type FORMAT C: , FakeDOS shows a terrifyingly realistic format sequence, complete with percentage counter and head/cylinder display, but your actual drive is perfectly untouched. When you type DEL *.* , nothing gets deleted. Ever.

It simulates. It pretends. It lies convincingly.
But it never, ever touches your real system.

Not a terminal. Not an emulator. Not connected to the Pentagon. Probably.

C:\> HELP

Commands

DIR
List files in current directory

CD
Change directory

TYPE
Display file contents

COPY
Copy files

MOVE
Move files

DEL
Delete files (fake!)

REN
Rename files

MKDIR
Create directory

TREE
Show directory tree

CLS
Clear screen

CHKDSK
Check disk

FORMAT
Fake format (scary!)

MEM
Show memory map

VER
MS-DOS version

DATE / TIME
Current date and time

BOOT
Switch to DOS / Linux / C64

LM
Landmark speed test

PENTAGON
CLASSIFIED

???
CLASSIFIED

EXIT
Quit FakeDOS

Arrow keys scroll through the command history.

Download FakeDOS

FakeDOS.dmg v2.0 · macOS 13+ · Universal Binary · 4.2 MB

Downloads since launch 0000000

Psst... the boss thinks C:\ is empty. Type DIR anyway. Some files in the root directory were never meant for office hours.

Installation

  1. Drag FakeDOS.app into /Applications .
  2. Double-click to launch. It installs itself as a menu-bar icon.
  3. Click the menu-bar icon to configure or start manually.
  4. After the configured idle time (default: 5 min), FakeDOS takes over fullscreen.
  5. Type EXIT to return to your real desktop.

Cmd + , opens six pages of pure control: idle time, warp speed, the ghost writer, sound and more. The PC speaker can be silenced. Your co-workers cannot.

FakeDOS

Version 2.0 for macOS

FakeDOS started in 1991 as a Turbo Pascal prank on a FidoNet BBS and lived its first life as a screen saver for Microsoft Windows.

Three decades later, it was ported to Swift/macOS so it can terrorize modern office workers who have never heard of AUTOEXEC.BAT.

Klaus Rössler & Roger Kirchhoff
Copyright (c) 1991 - 2026

C:\> DIAL DISCORD

Found a bug, have an idea for a new fake command, or just want to say hello? Join the FakeDOS community on our Discord server.

» May the FAKE be with you. «

AI usage generates a fragile codebase

Hacker News
evanxmerz.com
2026-11-10 05:25:58
Comments...
Original Article

I can only speculate as to the reasons why I was laid off from Meta in May, but I suspect that one of the reasons is that I was a little bit more resistant to adopting AI/LLMs as coding tools than some of my peers. Don't get me wrong, I generated at least 90% of my code using AI in my last few months there, which was the minimum for a decent rating. But AI didn't 10X the amount of code I was writing. It didn't even 2X it.

I was focused on code quality. I saw the code being pushed by some of my peers who were heavily reliant on AI, and I saw that it was brittle code. There were many subtle issues that would lead to tech debt in the long term, and even some glaring issues were ignored by very good programmers. For instance, I saw one of the best programmers on my team try to merge code that used javascript events for mouseover CSS effects rather than using the :hover selector, which is a totally unscalable way of writing mouseovers.

Now I'm employed at another large tech company and I've fully made the switch to generating 100% of my code using AI because that's the expectation today. Still, I can see lots of people becoming aware that this isn't a sustainable way to continue development of a large scale SaaS product. AI tends to solve the problems that can fit within its context window very well, but it's totally oblivious to the long term issues that can't be understood in that relatively small frame.

In this post I'm going to list four ways that AI usage results in a fragile codebase that isn't resilient to the demands of highly available and highly scalable SaaS applications.

By the way, every word of this article was written by a human. Even though the following image was generated by AI, this article isn't AI slop.

A worried robot places another piece of code into a codebase portrayed as a wobbly house of cards.

Four ways AI makes codebases fragile

Here are the four most common ways that I have seen AI generating a fragile codebase.

1. AI writes shallow tests

One of the most obvious failures of modern LLMs is that they tend to write simplistic automated test cases that don't cover the things that matter to humans. Frequently I see AI agents writing lots of tests of get/set methods which are trivial and don't typically require much testing. When AI writes e2e tests, they tend to only cover the cases which are already covered in the codebase. In other words, the AI writes tests only covering one type of user, or only covering surface level interactions. This creates massive gaps in the test coverage that are invisible to developers because they aren't captured by the line level coverage metric.

2. AI writes overly complex ccode

AI also tends to write overly complex code. It frequently uses two or three helper methods when a single one would suffice. It tries to follow coding guidelines, such as DRY, to a fault, without realizing that the added complexity of that rigidity makes the code more difficult for human developers to debug or understand.

3. Reliance on AI decreases human understanding

And that's the third issue with AI codebases: Humans don't understand them. The longer a company relies on AI agents to generate the code, the fewer developers are going to understand the codebase. This means that developers can't do the things that are necessary to build a resilient codebase. They don't understand the data structures and algorithms well enough to see when a pull request contains a new abstraction that doesn't work with the pre-existing structures.

4. AI moves too quickly to maintain a high quality bar

AI moves too quickly for human developers to maintain a high quality bar. Each pull request comes faster than the prior one and has to be reviewed in even less time. This leads to developers skimming the code and missing crucial details that result in long term tech debt. Small quality issues like testing gaps and poorly named variables accrue in the codebase until it becomes a morass of spaghetti code.

Four signs that you have a fragile codebase

If you're unsure whether coding agents are harming your codebase or not, then you might look for the following symptoms of a fragile, AI-generated codebase.

1. AI generated codebases have more incidents

When you switched the department over to agentic coding did the number of incidents slowly start rising? At first when we were all using agents to generate massive amounts of code, it didn't seem that different from traditional coding. The PRs came and were merged and everything seemed alright. But oh, there was that one p0 that came in at the end of the month, then there were two SEVs the following month. Then even more the next month. Now, after a year or two of agentic coding, it seems like there's an incident every weekend. AI coding agents are the reason why there are more incidents impacting customers.

2. Recovery from incidents takes longer in AI codebases

Not only are there more incidents, but the incidents take longer to be mitigated. The fact is that the human developers on your team now have a more shallow understanding of the codebase. If your coding agent can't find the issue that your customers are facing, then humans are going to have to dig through a codebase that is highly complex and poorly tested. They will essentially be entering unfamiliar territory, so it takes longer for them to figure out what is going wrong. Hence, companies lose more and more money to incidents that take longer to resolve.

3. AI generated codebases create errors that are only visible to users

When humans don't spend time in the code, they fail to see all of the use cases. They fail to understand how actual humans are using the code because they aren't ensuring that the AI is instrumenting analytics and catching all the errors properly. Hence, invisible errors start appearing in the codebase. Errors are uncaught and only visible to real world users, as opposed to the types of users that are being tested in automated tests or in developer manual testing.

4. AI results in a poor user experience

And that leads to the ultimate problem with AI codebases: they weren't made for humans. AI codebases are software made by AI for AI. They aren't being tailored to the way that human users use the product, and they aren't being tailored for the way human developers need to maintain the product. The experience degrades on both the user and the developer side, leading to a vicious cycle of enshittification.

Products made for humans require a human touch

The fact of the matter is that for a product to satisfy human customers, it has to be informed by a human perspective. Nobody likes ordering from machines at a restaurant. Shopping for clothes from a website always results in worse fits than shopping in person. The same is true of SaaS products. Any time you leave your SaaS product in the hands of a machine, you are losing the human touch that is valuable to your users and your developers. This may work for the cheapest products that only compete on price, but high quality software products will continue to have a human touch. The best, most expensive products will be tailored for human users by human developers. They will be charming and enjoyable to use. They won't be fragile because they won't be primarily developed by AI.

Hackers now exploit critical Barracuda ESG flaws to gain root access

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 05:10:20
Cybersecurity company Barracuda Networks warned that attackers have begun exploiting two recently patched Email Security Gateway (ESG) vulnerabilities that let them run commands with root privileges. [...]...
Original Article

Barracuda

Cybersecurity company Barracuda Networks warned that attackers have begun exploiting two recently patched Email Security Gateway (ESG) vulnerabilities that let them run commands with root privileges.

Barracuda released security updates to address the two flaws (tracked as CVE-2026-116606 and CVE-2026-111560 ) one week ago.

The first stems from an Email Security Gateway (ESG) authentication weakness that can be exploited to modify an appliance's global configuration, while the second lets unauthenticated attackers inject OS commands that execute with root privileges.

image

Barracuda also said that successful attacks require access to the administrative user interface (Admin UI) of targeted devices and advised customers to restrict access to trusted internal networks and use appropriate network access controls to limit exposure.

"Successful exploitation requires an attacker to have access to the administrative interface of an affected product. If exploited in combination, these vulnerabilities could allow an attacker to bypass authorization controls and obtain root access to the device," the company explained.

On Monday evening, Barracuda updated the initial advisory to warn admins that the two flaws are being exploited in attacks targeting a limited number of customers.

"Barracuda immediately initiated a comprehensive remediation process and released security patches for affected products. We have identified exploitation activity affecting a small number of organizations," it warned .

"If a patch has not been automatically applied, customers should manually apply the appropriate patch as soon as possible. If customers have turned off automatic patching, Barracuda recommends setting devices to automatically receive patches."

The table embedded below lists all affected devices and available security patches.

Affected Product CVE-2026-116606 CVE-2026-111560 Patch
Email Security Gateway (ESG) Yes Yes BNSF-40425 (9.4.017+),
BNSF-40430 (<9.4.017)
Load Balancer ADC No Yes BNADC-16586
Message Archiver (BMA) No Yes BNMA-32468
WAF Control Center (WCC) No Yes BNWF-60060
Web Application Firewall (WAF) No Yes BNADC-16586
Web Security Gateway (WSG) No Yes BNYF-24789

Three years ago, Barracuda patched another Email Security Gateway flaw (CVE-2023-7102) that the UNC4841 hacking group exploited in zero-day attacks to execute arbitrary code. The same year, UNC4841 abused another zero-day ( CVE-2023-2868 ) to target Barracuda ESG appliances as part of a series of cyber-espionage attacks.

The company later revealed that the flaw had been exploited as a zero-day for at least seven months , since at least October 2022, to drop previously unknown SeaSpy and Saltwater malware and steal data from compromised devices.

According to cybersecurity firm Mandiant, almost a third of systems breached in the 2023 campaign belonged to government agencies , most of them hacked between October and December 2022.

Barracuda was founded in 2003 and now has more than 200,000 customers worldwide, including small- to medium-sized businesses (SMBs), large enterprises, and managed service providers (MSPs).

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Turla hackers use new Cereal malware to spy on govt Exchange servers

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 05:04:32
The Russian state-backed threat group Turla has been using a new malicious toolset called 'Cereal' to intercept emails on Microsoft Exchange servers at government organizations. [...]...
Original Article

Turla hackers use new Cereal malware to spy on govt Exchange servers

The Russian state-backed threat group Turla has been using a new malicious toolset called 'Cereal' to intercept emails on Microsoft Exchange servers at government organizations.

Researchers at cybersecurity company ESET documented the attacks in late 2025, initially finding modular .NET malware for Microsoft Exchange at a government body in Kazakhstan.

A month later, ESET found the same toolset at a government agency in Romania, where it selectively gathered email correspondence with representatives of the North Atlantic Treaty Organization (NATO) and the European Union (EU).

image

"After fine-tuning our detections, we found the same toolset at a governmental organization in Romania - compromised on December 23rd, 2025," the researchers say in a report today.

Turla, also known as Snake, Secret Blizzard, and Waterbug, is a cyber-espionage group active for more than two decades and linked to Russia's Federal Security Service (FSB).

In the campaign analyzed by ESET, the hackers use the Cereal toolset, and specifically a component in the kit named CerealBox, to inject into Exchange’s EdgeTransport.exe process and hijack existing transport agents’ handlers.

The malware executes commands in memory and can inspect email content without registering a new transport agent or interrupting normal email delivery in the Exchange server.

Turla configured the malware to selectively collect messages containing document attachments such as .DOC, .DOCX, and .PDF files, and match certain sender, recipient, and subject criteria.

Another malware component, called CerealNeuron, awaits for incoming encrypted web requests on paths resembling legitimate Exchange services, which carry commands for execution.

CerealNeuron checks and decrypts the request, then executes the supplied CerealRunner program, a wrapper program that carries the code the attackers want to execute.

Attack overview
Attack overview
Source: ESET

Commands may include code to retrieve emails from Exchange, query Active Directory for users, groups, and DNS records, extract locally stored credentials, read files, or delete files.

“The sheer volume of near-identical binaries, each compiled for a specific task, strongly suggests that the operators have an internal framework that automates the compilation and packaging of commands,” ESET says about the disposable programs serving as command carriers.

“Combined with a codebase built around modular, interchangeable components, the impression is one of a mature, well-engineered platform – rather than a loose collection of scripts.”

The CerealRunner components contain encrypted .NET programs and the arguments needed to run them, which execute in the host’s memory and then return their output to CerealNeuron.

Eventually, CerealNeuron encrypts the output and sends it back to the attackers.

Command execution flow
Command execution flow
Source: ESET

ESET observed no external command-and-control (C2) infrastructure used in the attack, leaving the compromised Exchange server itself to serve as the only control point.

The researchers also uncovered a variant of CerealNeuron called CerealHermit, which lacks network capabilities and instead reads commands from encrypted files on the disk.

CerealHermit may serve as a fallback/redundancy system for when Neuron’s web channel becomes unavailable. However, ESET didn’t explain how attackers place Hermit’s command files on the server or retrieve the execution results.

The researchers note that Cereal’s advanced concealment methods demonstrate Turla’s deep understanding of .NET execution techniques, including abusing the .NET native image cache to run inside legitimate processes.

ESET says the Cereal toolset was designed for "long-term, stealthy cyberespionage," featuring a small disk footprint and relying on infrastructure that is less likely to be detected and blocked.

The company has shared a complete list of indicators of compromise on its GitHub page.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Are walking pads worth it? We put the best under-desk treadmills to the test

Guardian
www.theguardian.com
2026-11-10 05:00:05
Want to get your steps in while working or watching TV? Our expert puts walking pads through their paces to find the best for comfort, noise and ease of storage • The best treadmills for your home You don’t necessarily need to walk 10,000 steps a day to improve your health and wellbeing. In fact, th...
Original Article

Y ou don’t necessarily need to walk 10,000 steps a day to improve your health and wellbeing. In fact, the NHS encourages a slightly more manageable target of just 10 minutes of brisk walking daily to introduce more moderate-intensity physical activity and reduce your risk of early death by up to 15% .

However, even squeezing in “brisk walks” can be a chore, with busy schedules and increasingly desk-bound jobs forcing more of us to remain sedentary for long periods. That is where walking pads come in, being lighter, smaller and often easier to store than bulky and tricky-to-manoeuvre running treadmills.

When coupled with a standing desk, walking pads can be used while working – or when watching TV in the evening. Just a couple of 30-minute sessions add thousands of steps to your daily tally. In fact, a 60-minute walk at an easy 3km an hour can burn between 200 and 300 additional calories.

Walking pads are often cheaper than full-size treadmills, simple to use and relatively easy to store, and they’re perfect for adding more movement to your life without having to give up the day job.


At a glance


Why you should trust me

I’m a keen fitness fan who does everything from gym-based strength training and kickboxing classes to outdoor trail runs and cold-water surfing. As a result, I’ve often been tasked with testing fitness technology for industry magazines, and I’m always keen to get stuck in.

I strongly believe that you need to live with new tech for a bit to grasp how it fits into daily life, so I aim to test products for as long as possible and in the right environment. With walking pads, that meant strolling along, racking up the steps and burning calories – even while I wrote up this feature.

How I tested

A man walks on a compact walking pad treadmill facing a wall-mounted television in a living room
Screen test: the walking pads were put through their paces in front of the TV as well as at a desk. Photograph: Leon Poultney/The Guardian

There was only one way to properly trial the eight walking treadmills selected for this test, and that was to mimic the customer journey by ordering, taking delivery, unboxing, setting them up and then using them day to day.

The best walking treadmills – or walking pads – aren’t quite as bulky as regular running treadmills , so I could have multiple models on the go at home at once: one under my desk, one in front of the television and one in my wife’s office upstairs, testing each for at least three days.

The testing process involved a lot of additional steps and – in some cases at least – a whining soundtrack that drowned out whatever Netflix series the family was watching. Besides general observations on the heft, ease of storage and operation, quietness and build quality, I tested any additional features such as incline and speed adjustments, as well as any remote controls or apps.

To get a good idea of energy consumption and the overall cost of running a walking treadmill, I plugged each unit into a power meter to calculate the cost based on the October energy price cap.

Here are the four best walking pads you can buy now.


The best walking pads in 2026

A Urevo walking pad with a small digital display sits on a wooden floor
Quiet, sturdy and packed with genuinely useful features: the Urevo SpaceWalk 5L. Photograph: Leon Poultney/The Guardian

Best walking pad overall:
Urevo SpaceWalk 5L smart walking pad

Urevo

SpaceWalk 5L smart walking pad

from £237.49

What we love
Quiet, sturdy and packed with genuinely useful app features

What we don’t love
It’s a little bulky

Closeup of the Urevo SpaceWalk 5L walking pad’s rear end with teal buttons
Photograph: Leon Poultney/The Guardian
£299.99 at Urevo
£237.49 at Amazon

The Urevo SpaceWalk 5L is one of the most fully featured walking pads I’ve tested. It combines excellent build quality with a quiet motor, automatic incline and a great free companion app – which makes it feel more like a proper piece of fitness equipment than a basic under-desk treadmill. It’s slim enough to slide under a sofa when not in use, yet robust enough to cope with daily walking or even light jogging.

Why we love it
Unlike most rivals, the SpaceWalk 5L’s accompanying app is genuinely useful. It allows you to record workouts and track steps, distance and walking time, while also offering structured walks with automatic incline adjustment.

App screens for the Urevo SpaceWalk 5L walking pad, showing workout tracking and home dashboard
Track record: log your walks and take part in fitness challenges. Photograph: Leon Poultney/The Guardian

The software also syncs with Apple Health, while the proprietary app lets you take part in a number of on-demand workouts, where incline and speed are controlled automatically. It also offers virtual walks, where you can take a sort of video tour of exotic locations. Unfortunately, it doesn’t feature the FTMS protocol that allows it to beam speed, cadence and incline data to a third-party app like Zwift. So your virtual avatar won’t move on the screen without a workaround such as a third-party, cadence-sensing footpod or compatible smartwatch.

It is one of the quietest walking pads I’ve tested, though. At my preferred 2.5km/h working/walking pace, the motor averaged just 48dB – barely louder than my keyboard as I was furiously typing up this review.

Build quality is also noteworthy. The weighty, front-mounted motor gives it a reassuringly solid feel, while adjustable feet make levelling on uneven floors easy. Its claimed 12-point shock absorption system also provides enough cushioning for walking in just socks, although I’d still recommend trainers for longer sessions.

The incline, which can be automatically controlled when using Urevo’s app, adds another dimension for anyone aiming to increase the intensity of their walks.

Energy use is impressively low, too. At a comfortable 2.5km/h, the SpaceWalk 5L drew around 40W during testing, costing roughly 1p an hour based on the 1 October electricity price cap.

At its 6km/h maximum speed, this rose to about 3p an hour, with the incline motor briefly drawing more power when adjusting the deck.

While 6km/h is no more than a brisk walk or gentle jog, the SpaceWalk 5L feels stable throughout. It doesn’t fold, but its slim design and the integrated wheels make it easy to roll under a bed or sofa for storage.

It’s a shame that … the incline functionality makes it slightly bulkier than the simplest ultra-slim walking pads.

Size: 124 x 51.5 x 15.5cm (LWH)
Weight: 23kg
Walking deck size: 40 x 100cm
Maximum user weight: 181kg
Incline: 0-9% automatic
Maximum speed: 6km/h
Folding: no

Urevo

SpaceWalk 5L smart walking pad

from £237.49

What we love
Quiet, sturdy and packed with genuinely useful app features

What we don’t love
It’s a little bulky


Best budget walking pad and best for beginners:
Bigzzia walking pad with incline

Bigzzia

Walking pad with incline

£89.99

What we love
A very cheap pad with a surprisingly high top speed

What we don’t love
Short deck, noisy motor and basic controls

A black walking pad treadmill with digital display on a wooden floor
Photograph: Leon Poultney/The Guardian
£89.99 at Amazon

The Bigzzia is very much a budget walking pad, and it shows. The construction is basic, the running deck is narrow and short, and the display is hardly sophisticated. But it’s remarkably cheap and has a surprisingly high 10km/h top speed and a manual incline setting.

Why we love it
The Bigzzia’s biggest selling point is that 10km/h maximum speed. That’s considerably faster than most under-desk walking pads, and means it can double as a basic treadmill for walking and light jogging.

However, the deck is so short that running at anything approaching its maximum speed feels unnerving. I’d be much happier using it for walking or, at most, very short bursts of jogging.

The running surface has a surprisingly good grip, but there’s little flex or meaningful cushioning underneath, making longer sessions uncomfortable. It’s better suited to shorter walks than all-day use.

It does come with an 8% incline, although this isn’t a motorised function. You simply flip out two feet at the sides and put the supplied rubber supports underneath them to raise the deck. No range of settings here.

The simple display shows the basics: speed, calories, time and distance, automatically cycling between the figures as you walk. There isn’t really a way to lock it to any particular metric – another reminder that this is a very simple machine.

Interaction is equally basic – via a small wireless remote control. Lose or break it, though, and you’ll be stuck. You also need to supply the AAA batteries for it.

For portability, however, the Bigzzia shines. At just 12.86kg, it is light enough to pick up and carry, something I can’t say about many of the walking pads here. It also has a couple of small wheels at the front, so you can tip it and wheel it around if you prefer. And while the short deck might prove a drawback for running, it’s great for storage: it slides easily under a sofa or can be stored upright against a wall.

Noise is another compromise, however. Walking at 2.5km/h, I measured about 52dB, with a noticeable whine and plenty of foot thump from the deck. It’s not disastrous for a walking pad at this price, but it’s certainly more obvious than the best machines I’ve tested.

Power consumption is also higher than that of some rivals. I measured 54W at 2.5km/h (about 1p an hour at the UK electricity rates at the time of writing) and 166W at its 10km/h top speed (about 4p an hour). Running costs remain low overall, but it’s less energy efficient than some more sophisticated walking pads.

Another omission worth knowing about is the lack of an automatic stop function. That means the motor will continue running if you fall or simply walk away, so you need to be a little more careful about how you use it.

It’s a shame that … it’s let down by the short deck, noisy motor and basic controls, but it’s one of the cheapest walking pads out there.

Size: 104 x 49 x 11cm (LWH)
Weight: 12.86kg
Walking deck size: 37 x 90cm
Maximum user weight: 130kg
Incline: 0 or 8% manual
Maximum speed: 10km/h
Folding: no

Bigzzia

Walking pad with incline

£89.99

What we love
A very cheap pad with a surprisingly high top speed

What we don’t love
Short deck, noisy motor and basic controls


Best lightweight walking pad :
JTX MoveLight

What we love
Great build quality and crisp display

What we don’t love
It’s heavy and awkward to move around

A foot steps on to a JTX treadmill displaying time and step count on its digital screen
Photograph: Leon Poultney/The Guardian
£449 at JTX Fitness

JTX often appears in the “best value” section of home fitness equipment reviews, known for offering reliable build quality at affordable prices, but its machines tend to prioritise function over flashy design and cutting-edge technology.

The MoveLight walking pad is different, however. It’s the most expensive walking pad in this roundup, and there’s a tangible difference in the build quality compared with cheaper walking pads. The JTX also offers a sizeable display, cushioned walking deck and quiet 1hp electric motor. It’s a solid treadmill offering speeds of up to 6km/h, meaning it’s possible to use it for slow jogging without the worry of it falling apart.

Why we love it
The MoveLight is similar in design to the BodyMax reviewed below and has a solid plastic chassis that gives it a more premium feel than its cheaper rivals. The running deck is generously sized and well cushioned, making longer walking sessions more comfortable.

The extra-large LED console is easy to use and neatly scrolls through speed, time and step count as you walk. The shrill beeps upon startup and when you adjust the speed may cause office mates to want to throw a pencil at you, however.

With the small plastic remote, you can adjust the speed, stop or start the unit and scroll the display between distance, calories and time on one half, and speed and step count on the other.

The 1hp motor is powerful enough to propel the deck up to 6km/h, where it remains much quieter than some of the others tested.

Overall, it feels like a walking pad that will go the distance – and so it should, given the price – but that solid build does make it a pain to move around the house; it will require some serious muscle to tip it up on to its wheels. It also doesn’t fold like the BodyMax machine.

Oh, and one final public service announcement: those with wooden floors will want to take care that the wheels and plastic feet don’t scratch the surface during transport.

During testing, I found it to be slightly more power-hungry than rivals, supping about 100W at 3.5km/h, meaning it costs about 3p an hour to power.

It’s a shame that … it’s so big and heavy to move around, which makes storing it after each session a chore.

Size: 147 x 60 x 12.5cm (LWH)
Weight: 29.5kg
Walking deck size: 45 x 122cm
Maximum user weight: 100kg
Incline: none
Maximum speed: 6km/h
Folding: no

JTX

MoveLight

£449

What we love
Great build quality and crisp display

What we don’t love
It’s heavy and awkward to move around

Prefer to sit while you work? We’ve also reviewed the best office chairs


Best foldable walking pad:
BodyMax WP60

What we love
Genuinely foldable with an excellent walking experience

What we don’t love
It’s very heavy

A BodyMax walking pad treadmill sits beneath a standing desk in a home office
Photograph: Leon Poultney/The Guardian
£399 at Fitshop

One of the most expensive models on test, the BodyMax walking pad is also one of the best built and easiest on the eye. It’s the only model that genuinely folds in half, making it easier to squeeze into a cupboard or wardrobe.

However, at around 30kg, it’s not the easiest to move, despite wheels at the front that allow it to be tipped on its end and rolled around.

Potential portability issues aside, this machine offers a fantastic walking experience, with a neat, bright and easy-to-read LED panel that gives clear and scrolling readouts of workout time, distance, speed and average calorie burn.

Very much the Porsche of the walking pad world, the BodyMax unit combines stylish looks and powerful performance.

Why we love it
Like most walking pads here, the BodyMax comes with a remote for adjusting speed, but its clever A Mode goes a step further, using foot placement to automatically adjust the pace.

Stay in the middle, and it maintains pace; walk towards the front to speed up or hang back to slow down. It’s a useful touch that saves you constantly fiddling with the remote. The deck itself is nicely cushioned, and the motor is among the quietest on test.

Those wanting their walking pad to double up as a running treadmill may be disappointed, however: the WP60 tops out at 6km/h, which is a very fast walking pace but a slow jog for most. Not a single walking pad I’ve tested has done a convincing job as a running treadmill, though, being either too flimsy underfoot, too noisy, or simply not built to withstand the endless thumping of a sprint session.

If you’re seeking robust build quality, the BodyMax WP60 walking pad is well worth the additional outlay. As it folds in half, it can be tucked under a desk or rested against a wall when not in use.

It’s a shame that … it’s heavy and awkward to move around when folded.

Size: 143 x 55 x 13cm (LWH)
Weight: 28kg
Walking deck size: 42 x 120cm
Maximum user weight: 100kg
Incline: none
Maximum speed: 6km/h
Folding: yes, folds in half for storage

BodyMax

WP60

£399

What we love
Genuinely foldable with an excellent walking experience

What we don’t love
It’s very heavy


What you need to know

A hand holds a white remote control above a black walking treadmill, seen from above
Using a walking pad for an hour each day should only add about £10 a year to your energy bills. Photograph: Leon Poultney/The Guardian

What should I look for when buying a walking pad?

The biggest difference between walking pads, aside from overall build quality, is their top speed. Most max out at about 6km/h, which is ideal for walking while working at a standing desk or a brisk stroll in front of the TV. If you’re hoping to jog as well, look for models that reach 8-10km/h – although be aware that you’ll generally sacrifice some stability and comfort compared with a full-size treadmill.

Next comes incline. Premium models tend to offer a motorised incline function that can be adjusted at the touch of a button, while cheaper alternatives rely on manually extending support feet for a fixed gradient. Even a small incline can noticeably increase calorie burn and make walks feel more challenging.

skip past newsletter promotion

Also pay attention to the size of the walking deck. A longer, wider belt will feel far more comfortable and safer, particularly if you’re tall or have a long stride. Finally, think about practicalities such as noise, storage, transport wheels, companion apps and maximum user weight. If you plan to use your walking pad for several hours a day while working from home, spending a little more on a quieter, sturdier model is usually money well spent.

How much should I spend?

Prices vary when it comes to walking pads, with the most affordable costing about £90. Anything less than that is unlikely to be long-lasting. From my testing, the sweet spot seems to be about £250, where you can get a good blend of value and decent build quality. Some of the best I tested were, predictably, among the most expensive. These high-end models typically cost about £500.

How much room do you need?

If you’ve got good clearance underneath a bed or sofa, most walking pads will happily slide underneath without the need to fold them up. Imagine a slimmed-down treadmill without the safety handle, and you’re basically there.

Models such as the BodyMax WP60 fold in half, which drastically reduces the length (or height, depending on how you store it), making them much easier to slide into more compact spaces such as a cupboard or wardrobe. But bear in mind they can weigh up to 30kg, so they can be tricky to move without help.

How easy is it to maintain a walking pad?

Most walking pads come with a small bottle of silicone oil. This is used to lubricate the underside of the walking belt every couple of months to ensure smooth movement, depending on use. Most manufacturers also supply the required hex key so you can adjust the belt if it’s slipping or has moved slightly off-centre.

Quickly check the belt alignment and any moving parts every couple of months, and it should be enough to keep a walking pad running smoothly for years.

Can I run on a walking pad?

Some walking pad speeds are capped at about 6km/h, which makes running on them tricky. A plodding jog is a better description. A few of the walking pads I tested did reach much higher speeds, and most of these came with a folding safety handle that extends to allow them to safely reach those speeds, giving the runner something to hang on to should the worst happen. These also came with a separate safety system: a small magnetic tag that attaches to clothing. If this becomes detached, the machine shuts off.

The general build and robustness of walking pads aren’t up there with their running-focused counterparts, though. That means they can be noisy, shift around underfoot and generally feel a bit flimsy during faster and longer runs. On top of this, those without handles don’t always have the automatic shut-off functionality, which can make them more dangerous, particularly when using them at higher speeds.

In summary, running treadmills are better suited to those wanting to move at higher speeds. They feature more underfoot cushioning or built-in suspension systems, which make longer, faster sessions more comfortable and easier on the joints.

Can you use a walking pad on carpet?

In most cases, yes, but it depends on both the walking pad and the type of carpet. Most manufacturers recommend using a walking pad on a hard, level surface as this provides the best stability and allows air to circulate around the motor. Thick, plush carpets can restrict airflow, increasing the risk of overheating, while also making the machine less stable underfoot.

If carpet is your only option, a low-pile carpet is usually fine, especially with a treadmill mat underneath. This helps spread the load more evenly, protects the carpet from compression and reduces vibration travelling through the floor.

Regardless of the surface, ensure enough clearance around the machine for safe use and so that the belt runs freely without rubbing. It’s also worth checking underneath every so often to remove dust and fluff, especially if you have pets, as debris can build up around the motor and rollers over time.

What does weight capacity mean, and what other safety features should I look for?

Maximum user weight isn’t just about whether a walking pad can physically support you – it’s also an indication of how robust the frame, motor and deck are. Choosing a model with a higher weight capacity can often mean a more stable, longer-lasting machine.

Beyond that, look for an emergency stop function or safety key if you intend to jog. Some walking pads automatically stop the belt if they detect you’ve stepped off, while others continue running until you turn them off manually. As I found during testing, not every budget model includes this feature, so check before you buy.

A wide, grippy walking surface also improves confidence, particularly if you’re working at a standing desk, while decent shock absorption can reduce fatigue during longer sessions. Finally, ensure the walking pad has non-slip feet and is sitting securely before every use, as even slight movement can become distracting or unsafe – not to mention damaging to expensive wooden floors.

What’s the difference between a walking pad and a treadmill?

Although they look similar, walking pads and treadmills are designed for different purposes. Walking pads prioritise compact size, low noise and easy storage, with many slim enough to slide under a sofa or bed. They’re primarily designed for walking rather than running, making them ideal for staying active while you work or watch TV.

Traditional treadmills are larger, heavier and more versatile. They typically offer higher top speeds, wider and longer running decks, better cushioning and features such as adjustable incline, heart rate monitoring and structured workout programmes. Their larger belts also make them far better suited to regular running.

The trade-off is space. If your goal is simply to increase your daily step count or stay active while working from home, a walking pad is usually the more practical choice. But for race training or more serious fitness goals, a conventional treadmill remains the better investment.

For more:
The best exercise bikes – tested
The best running watches to hit your fitness goals
The best cross trainers

Leon Poultney has been traversing the worlds of consumer technology and automotive for some of the biggest lifestyle websites and magazines for longer than he cares to divulge. A lifelong fitness enthusiast, he can often be found trying not to injure himself on a mountain bike/surfboard/other extreme thing, often at the request of an editor. Whether it is getting to know the latest connected kettlebells or partaking in CrossFit sessions, Leon is always willing to put his body on the line for great editorial

Queens Public library under ransomware attack e-borrowing suspended

Hacker News
connect.queenslibrary.org
2026-11-10 04:04:39
Comments...
Original Article

All QPL locations remain open as scheduled. However, certain virtual and in-person programs may be impacted. Please check with your local branch.

You can continue to borrow and return books and other materials at all locations. During this outage, however, renewals are unavailable. As a reminder, customers are not charged late fines on borrowed materials.

Check this page for updates. You can also check our social media channels:

You may call (718) 990-0728 for assistance.

We apologize for any inconvenience and ask for your patience and understanding as we manage this challenge. Our team is working diligently to restore full access. Please note it will take some time before the Library’s network and systems are restored.

Fossil CO2 emissions decrease by 0.4% in 2026

Hacker News
news.exeter.ac.uk
2026-11-10 03:59:41
Comments...
Original Article

Global carbon emissions from fossil fuels are projected to decrease by 0.4% in 2026 – driven by expansion of solar and wind power and the Iran conflict – according to new research by the Global Carbon Project.

The 2026 Global Carbon Budget projects 38.2 billion tonnes of fossil carbon dioxide (CO2) emissions this year.

Emissions from oil are projected to decrease by 1.9% – likely a short-term response to the energy shock triggered by the Iran conflict.

While global energy demand continues to rise, two thirds of the increase is being met by increased solar and wind power and electric vehicles.

However, the report – published alongside a new paper in the journal Nature Climate Change – finds that clean energy growth is not yet fast enough for a durable decline in global fossil CO2 emissions.

With emissions from land-use change (such as deforestation) projected to increase slightly this year, total CO2 emissions are projected to be 43.3 billion tonnes in 2026 – up from 42.8 billion tonnes last year.

The remaining carbon budget (the amount of CO2 that can be emitted before warming reaches 1.5°C above pre-industrial levels) is now 150 billion tonnes – equivalent to less than four years of emissions at the current rate.

With CO2 still rapidly accumulating in the atmosphere, the dangerous impacts of climate change continue to increase.

The report also assesses natural “sinks” (absorption of CO2 by land and ocean). It finds that the land sink returned to former levels after a severe weakening during the 2023-24 El Niño weather pattern.

However, the powerful 2026 El Niño is expected to have a significant impact in the coming year.

The research team included the University of Exeter, the University of East Anglia (UEA), CICERO Center for International Climate Research, Ludwig-Maximilian-University Munich (LMU), Alfred-Wegener-Institut and more than 90 other institutions around the world.

“A decline in fossil CO2 emissions is encouraging, but a reduction driven partly by geopolitical shocks is not a sustainable climate solution,” said Professor Pierre Friedlingstein, director of the Global Carbon Budget Office at the University of Exeter, who led the study.

“The long-term answer remains the rapid deployment of clean energy technologies. While renewables and electric vehicles are increasingly offsetting growth in energy demand, further acceleration is needed if global emissions are to peak and enter a sustained decline.”

Professor Corinne Le Quéré, Royal Society Research Professor at UEA’s School of Environmental Sciences – who led the new analysis published in Nature Climate Change – said: “Clean technologies are making a real difference in reducing global emissions. Solar and wind power and electric vehicles are expanding rapidly, led by China. Countries on every continent are decreasing their emissions while growing their economies. A further acceleration could turn the tide on global emissions within a few years.”

Glen Peters, Research Professor at the CICERO Center for International Climate Research, said: “A drop in emissions in one year is not a peak unless it is driven by structural change. Accelerated deployment of solar, wind, batteries, and electric vehicles are pushing emissions down in dozens of countries, and slowing emissions growth in many more, but the changes are not sufficient to lock in a peak in global emissions”.

Professor Julia Pongratz, at LMU’s Department of Geography, said: “Alongside reducing emissions, we need to scale up CO2 removal to reach greenhouse gas neutrality. Afforestation and reforestation already remove substantial amounts of CO2, but these gains are still more than offset by emissions from deforestation, and novel carbon removal remains very limited. We need to act on all these fronts now.”

Other key findings from the 2026 Global Carbon Budget include:

  • China’s emissions in 2026 are projected to decrease by 0.9%, following two
    years of low emissions growth. In addition to a strong decrease in oil emissions,
    coal emissions rose slightly (0.3%) and electricity generation from renewables
    continues to grow strongly.
  • While China produces 32% of global fossil emissions , it is also the country
    most active in deploying clean technologies and increasing carbon sinks
    through reforestation. Half of the global emissions avoided due to renewable
    energy and electric vehicles are in China, which also has the largest carbon
    uptake through reforestation and afforestation (new forests).
  • The USA’s emissions are projected to decrease by 1.3%, mainly due to a
    decrease in coal emissions (which spiked last year due to high natural gas prices
    and cold weather).
  • India’s emissions are projected to increase by 4.4% – higher than the 3.5%
    average annual growth over the last decade.
  • European Union emissions are projected to decrease by 1.5%.
  • Japan’s emissions are projected to decrease by 1%.
  • Emissions for the rest of the world are projected to decrease by 0.7%. The
    largest component of the decline is in oil, likely driven by increased prices and
    global supply constraints.
  • Projected 2026 emissions for the different fossil fuels are: oil down 1.9%,
    natural gas down 0.3%, coal up 0.6%.
  • Emissions from international aviation and international shipping are both
    projected to decrease by 1%. Aviation’s decline is partly due to reduced activity
    in the Middle East.
  • Global CO2 emissions from land-use change have decreased in the past decade
    but are projected to rise this year to 5.1 billion tonnes. This is driven by an
    increase in emissions from peat fires (almost entirely ignited by human
    activities) and forest degradation in Southeast Asia, associated with drier
    conditions linked to the onset of El Niño conditions.
  • Total CO2 emissions – the sum of fossil and land-use change emissions – have
    grown more slowly in the past decade (0.3% per year), compared to the previous
    decade (1.7% per year).
  • Emissions from permanent deforestation remain high at around 3.8 billion
    tonnes of CO2 per year over 2016-25. Permanent removals through
    reforestation and afforestation offset around half of the permanent
    deforestation emissions.
  • The largest carbon uptake through re/afforestation occurs in China, the EU27
    and the USA
    , with combined removals 0.8 billion tonnes CO2 per year.
    Substantial uptake through re/afforestation also occurs in other regions such as
    Brazil, Russia and Indonesia – but here it is outweighed by emissions from
    deforestation.
  • Current levels of novel Carbon Dioxide Removal (excluding conventional
    means such as reforestation) currently offset less than 30 minutes of annual
    fossil CO2 emissions.
  • The concentration of CO2 in the atmosphere is set to reach 427.7 ppm in 2026,
    54% above pre-industrial levels.

The analysis published in Nature Climate Change found:

  • With global energy demand growing, new emissions can be prevented (or
    “offset”) by simultaneous growth in clean energy. The paper makes a projection
    from now to the end of 2028, finding that 64-79% of emissions from new demand
    will be offset by new solar and wind power and electric vehicles.
  • The number of countries reducing their emissions while growing their economies
    is clearly increasing: 59 countries emitted less in 2025 than before the COVID-19
    pandemic in 2019, while their economies grew.
  • Even in countries where total emissions increased over the 2019-25 period,
    growth in emissions has slowed in all regions including in China, India and other
    emerging economies.
  • The effect of electric vehicles is growing rapidly but remains small because the
    vehicle stock takes time to be replaced, with only about 10% of the car fleet
    electrified in 2025 (or 6% excluding hybrids).
  • Emissions avoided by solar and wind power rose from 0.28 billion tonnes in
    2010 to 4.1 billion tonnes in 2025, and a projected 4.6 billion tonnes in 2026.
  • The authors conclude that: “If further acceleration of clean technology
    deployment can be supported through time, a sustained peak and decline in
    global CO2 emissions could be a few years away.”

The Global Carbon Budget report, produced by an international team of more than 140
scientists, provides an annual, peer-reviewed update, building on established
methodologies in a fully transparent manner.

The 2026 edition (the 21st annual report) is published in the journal Earth System
Science Data
on November 10 as a pre-print , and later as a peer-reviewed paper.

The Nature Climate Change paper is entitled: “A further acceleration of clean energy is
needed for global CO2 emissions to peak and decline.”

Google patches eighth Chrome zero-day exploited in attacks this year

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 03:51:25
Google has released emergency security updates to patch a new Chrome vulnerability exploited in zero-day attacks, the eighth such flaw since the start of the year. [...]...
Original Article

Google Chrome

Google has released emergency security updates to patch a new Chrome vulnerability exploited in zero-day attacks, the eighth such flaw since the start of the year.

"Google is aware that an exploit for CVE-2026-125350 exists in the wild," the company said in a Monday security advisory .

As Google explained, this flaw stems from a Use-After-Free (UAF) weakness in the XML component of the Google Chrome web browser, which occurs when the browser's XML parser processes data, deletes an object from the computer's memory, but fails to clear the pointer referencing that object.

image

Attackers can exploit this high-severity memory corruption vulnerability when the browser later tries to use or read that "freed" memory space to manipulate the memory layout and execute malicious code.

While Google has found evidence of attackers exploiting this zero-day bug in the wild, it has not shared additional details about these incidents.

"Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven't yet fixed," it noted.

Google has now fixed the zero-day for users in the Stable Desktop channel, with new versions rolling out to Windows, macOS (157.0.8103.50/.51), and Linux users (157.0.8103.50). Although Google says the security update could take days or weeks to reach all Chrome users, it was available immediately when BleepingComputer checked for updates today.

Google Chrome 157.0.8103.51

If you don't want to update the web browser manually, you can also let Chrome check for updates on its own, as it will automatically install them after the next launch.

​Since the start of the year, Google has addressed seven other actively exploited zero-day vulnerabilities:

  • An iterator invalidation bug (CVE-2026-2441) in CSSFontFeatureValuesMap (Chrome's implementation of CSS font feature values), which Google addressed in mid-February .
  • Two other Chrome zero-day bugs exploited in attacks were patched in March: an out-of-bounds write weakness in the Skia 2D graphics library (CVE-2026-3909), and an inappropriate implementation vulnerability in the V8 JavaScript and WebAssembly engine (CVE-2026-3910).
  • A use-after-free weakness in Dawn (CVE-2026-5281), the underlying cross-platform implementation of the WebGPU standard used by the Chromium project, which Google patched in April .
  • An out-of-bounds read and write vulnerability in Chrome's V8 JavaScript engine (CVE-2026-11645), exploited in the wild and patched in June .
  • And out-of-bounds write (CVE-2026-87491) and type confusion (CVE-2026-85046) flaws in the V8 JavaScript engine, fixed in September.

Google fixed eight more zero-days exploited in attacks in 2025, many of them reported by the company's Threat Analysis Group (TAG), which tracks zero-day exploits used in spyware attacks.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Fireworks AI discloses new breach after cloud provider hack

Bleeping Computer
www.bleepingcomputer.com
2026-11-10 02:49:58
AI infrastructure startup Fireworks has disclosed a new security breach in which attackers accessed its development machines after breaching a third-party cloud provider. [...]...
Original Article

Fireworks AI

AI infrastructure startup Fireworks has disclosed a new security breach in which attackers accessed its development machines after breaching a third-party cloud provider.

FireWorks provides a high-performance inference platform for developers who want to deploy and run open-source artificial intelligence models (such as Mistral, Meta's Llama, or Google's Gemma) without worrying about hardware bottlenecks and complex infrastructure tasks.

The company notified law enforcement and customers of another security incident in early October after attackers accessed environment variables containing API keys and tokens stored as secrets for a limited number of accounts.

image

"The evidence indicates links to a cybercriminal threat actor group, which is financially motivated and aimed at selling tokens from unauthorized access to Large Language Models (LLMs) to illicit routing gateways, known as 'LLMJacking'," Fireworks said at the time.

After revoking compromised internal credentials, affected Fireworks API keys, and keys created by the attackers, Fireworks discovered another security incident on October 23.

In the new breach, the threat actors accessed resource metadata (e.g., Fireworks resource identifiers, display names, descriptions, creation time), billing information (e.g., billing and shipping addresses, invoice and payment history, account balance, and credit usage), and incomplete model weights and datasets for some customers.

However, the company said the attackers couldn't access customer payment card numbers because Fireworks doesn't store them.

"A third-party cloud provider that hosted Fireworks R&D machines experienced a security incident on October 23. On October 24, the unauthorized third party used it to reach Fireworks development machines and then run an unauthorized workload that led to additional customer data impact," Fireworks noted in a Monday advisory.

"We detected this activity on the same day, and followed our incident response processes to take immediate remediation measures and close known critical vulnerabilities. As of October 25, we have not detected further evidence of successful unauthorized access by the threat actor on the Fireworks platform customers use."

Since the attack, Fireworks revoked and replaced credentials and service accounts, restricted unauthorized network pathways, isolated affected systems, and tightened access to data storage and analytics systems to block public or unauthorized access to stored data.

The company is now working with Palo Alto Networks' Unit 42 incident response division to secure its systems against future attacks and further investigate the incident's full scope and impact.

One week ago, researchers at Google's Threat Intelligence Group (GTIG) and Mandiant reported that large language model hijacking attacks (also known as LLMjacking) are driving record costs for compromised organizations , with cloud AI charges reaching as high as $1 million due to fraudulent calls using stolen API keys.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

M John Harrison becomes first science fiction author to win the Booker prize

Hacker News
www.theguardian.com
2026-11-10 02:40:52
Comments...
Original Article

Eighty-one-year-old M John Harrison has won the Booker prize for The End of Everything , a postapocalyptic novel set on a near-future Kent coast, becoming the oldest winner in the award’s history.

Gaby Wood, chief executive of the Booker Prize Foundation, said that while plenty of previous winners had dabbled in science fiction, Harrison’s was “the first Booker winner to have emerged from the bona fide SF world”. She called it “a historic win, for a writer whose decades of work are lightly worn on every page”.

Harrison, who has been publishing for six decades, overtakes Margaret Atwood, who was 79 when she shared the prize in 2019 for The Testaments . He received the £50,000 award and trophy at a ceremony in London on Monday evening.

The End of Everything, Harrison’s first Booker nomination, is set a few decades from now, years after a disaster nobody can properly account for. Set on the Kent coast, the novel sees Phillip Tennent and his ageing aunt Marnie attempting to survive alongside the looming threat of the mysterious iGhetti: vast, shape-changing beings whose origins and intentions are never explained. At 198 pages, it was the shortest book on the shortlist.

Mary Beard, chair of the judges , said the decision was unanimous, reached after a full day of discussion. “It’s a book that turns you upside down, raises a wry smile – and surprisingly, given the subject matter, leaves you with a twinge of optimism,” she said. “One main point of the book is that if, or when, such an apocalypse comes it will be incomprehensible. And the old rules won’t matter either … This is the politics of now seen through the lens of the future.”

Harrison, born in Rugby, Warwickshire, in 1945, sold his first story in 1965 and spent most of the 1970s running the books pages of the speculative fiction magazine New Worlds. Alongside his novels he has written five short-story collections and the “anti-memoir” Wish I Was Here (2023) . Climbers took the Boardman Tasker prize for mountain literature in 1989, Nova Swing the Arthur C Clarke award in 2007, and The Sunken Land Begins to Rise Again the Goldsmiths prize in 2020. Once a keen climber and fell runner, he sat on the Booker judging panel in 2022.

This year’s shortlist included two former winners: Marlon James, the bookmakers’ favourite, for The Disappearers, and Douglas Stuart for John of John. Elizabeth Strout’s The Things We Never Say , Luke Kennard’s Black Bag and Rebecca Perry’s debut May We Feed the King completed the list. Each shortlisted author receives £2,500.

Writing in the Guardian on his inspiration last week, Harrison described The End of Everything as “a disaster story in which the disaster is the failure to comprehend”, with aliens who arrive “as incomers from another dimension, paralleling the gentrification of places like the UK’s south-east coast”. He admitted to passing on to the reader “some of the puzzlement and confusion of the characters”, but said he hoped the issues were transparent – among them “the collapse of rationality that comes with Trumpism and the internet”.

His win marks a rare moment of mainstream recognition for a writer long revered by his peers but at the margins of literary fiction. On BBC Radio 4’s Front Row last month, Harrison said he had been “working for 40 to 50 years to shift the balance, both as a novelist and as a critic”, adding: “Why shouldn’t a well written [work of] SF be considered to be literary fiction?”

Even admirers concede the book is not an easy read. In a rave review for the Guardian , Michel Faber said it “exposes the terrifying insecurity of life right now”, but warned that “it won’t be for everyone”.

The win is timely in the age of AI. Beard noted that the “i” in iGhetti hints “at something digital, but you can’t be sure”, while Wood described the book’s post-apocalyptic landscape as “Large Language Model-dotted”.

The judging panel also included Pulp frontman Jarvis Cocker, authors Patricia Lockwood and Raymond Antrobus and Guardian journalist Rebecca Liu. They considered 163 books published in the UK or Ireland between 1 October 2025 and 30 September 2026.

It is the first Booker win for Serpent’s Tail, an imprint of the independent publisher Profile Books, and its fifth nomination. Hungarian-British author David Szalay won last year with Flesh ; other recent winners include Samantha Harvey’s Orbital, Paul Lynch’s Prophet Song and Shehan Karunatilaka’s The Seven Moons of Maali Almeida.

  • The End of Everything by M. John Harrison (Profile, £16.99). To support the Guardian, order your copy at guardianbookshop.com . Delivery charges may apply.

Building a networking switch ASIC chip

Lobsters
essenceia.github.io
2026-11-10 02:39:39
This is part 2, for part 1 see https://essenceia.github.io/projects/ethernet_switch_asic/ Comments...
Original Article

AI disclosure: All bugs are 100% human made.

Well that was a ride, where do I start ?

I am currently on a quest to build some open source networking equipment with the final boss being a full router.

There are a lot of very valuable and less complex pieces of hardware on the way that also need building, one of them being the common networking switch.

Previously I was building the infrastructure to handle ethernet packets and worked my way up to a simple three-port switch that I had taped it out via Tiny Tapeout. But a few days after that tapeout, as I was still reeling from the adrenaline of rushing to meet the deadline, an unexpected opportunity presented itself: the possibility of taping out my own full chip, free of charge!

Full chip inital global placement in action, performed by the OpenROAD placement tool.

But there was one slight problem, I only had four days to design the entire thing, also known as 96 hours ( putting it in hours definitely does not make it sound less terrifying ).

A few months back, I wrote that building a full matrix multiplication accelerator with some in-silicon debug infrastructure in under 2 weeks was too tight of a deadline, all around a terrible idea and should absolutely never be attempted, especially not in a corporate setting. Well since then I have discovered a new circle of hell: designing a full ASIC solo in 4 days.

It’s caffeinated down here.

But now that I have gazed upon these new depths of hell, let me tell you about the journey of building full ASICs!

Will the fab talk to me? #

No … no they won’t …

But they will talk to wafer.space, and wafer.space will talk to me.

Now I suspect you might be wondering: what is wafer.space again ?

A few months ago, something happened. Tim Ansell, formerly part of the team at Google that got us the SkyWater 130nm and GlobalFoundries 180nm open source PDKs, left Google and started wafer.space where he opened up the possibility for mere mortals to taped out their own chip at GlobalFoundries for an affordable price. They offer the services of getting your chip manufactured on GlobalFoundaries 180nm and optionally get it packaged.

Big chips and little chips #

Chips come in all rectangular sizes with the size measured in area.

Area is one of the primary concerns of the design as it is once again a question of cold calculated economics, because, when you go to get a chip manufactured you pay per \( mm^2 \) of area.

Take for example the price quoted bellow by IHP (another fab) for their own multiwafer runs. If you participate in this run you will get back a set number of chips (40 in this case) and your final chip cost will correspond to how big your chip ultimately is.

IHP MWP price quotes: MPW Price Information 2026

Yet, more area is not simply more expensive because of the direct manufacturing cost, there is a second more subtle factor inflating the price, and that is yield.

Ultimately broken chips have no value, actually we could argue that we should ascribe negative value to broken chips because identifying which chips are broken costs money, and selling a customer a broken chip costs even more money. So maximizing the ratio of good chips to manufactured chips is of primary importance. This ratio is called the yield.

Chips can be broken for a plethora of reasons, but for simplicity I will put them in two different buckets. Firstly it could be a design issue, in which case all your chips are equally affected. Secondly it could be a manufacturing defect that affects your chips semi-randomly.

Manufacturing defects that occur during semiconductor device fabrication can be modeled as constant defect probability per unit of area, meaning that chips with higher area have a higher probability of having a defect, and thus lower yield, leading to ultimately higher costs.

This doesn’t impact the price which I pay to the chip area per-se, but it affects the average net price that I will pay per functional chip.

This is the double reason why area optimization is such a concern when designing chips.

Now GlobaFoundaries 180nm (gf180) is not a young node, and the polite way of calling something old is “matrue” . With node maturity comes increased expertise of the process by the foundry leading to better yields over time. So gf180 is a node with excellent yields for which area related defects are not a concern especially compared to younger leading edge nodes.

Wafer.space now offers 4 chip sizes, commonly referred to in the community as the “full”, “half” s and “quarter” slots.

wafer.space pricing for run 2

For people in need of some perspective, the full slot and its nearly 13mm2 of area is the same size as the entire Tiny Tapeout gf180 shuttle chip. The same chip that is capable of accommodating unto 160 project tiles and all the Tiny Tapeout common infrastructure. For reference, my two systolic arrays (8 bit integer and bfloat16) and the original switch all fit on only 4 tiles and my largest design to date, the blake2s hashing accelerator on 8.

Run 2 wafers with the Tiny Tapeout chips in the middle on the left.

Dicing #

But getting the silicon manufactured is only the first battle of the war.

Once you get your chip onto a wafer, there are two more important steps to clear before it can actually be called a chip.

Semiconductors are manufactured on a substrate called a wafer, this is a solid silicon disk that then needs to be very precisely broken up into individual chips. This step is called dicing.

So once the wafers have exited the fab and the guys at wafer.space take delivery of the full set of wafers, they call to another specialized service to dice them into individual chips along the scrible lines using a very precise diamond saw.

Example of a cheap “mature” manual wafer dicer being sold at auction.

At that point, wafer.space offers two possibilities. The first is to mail you the diced chips directly, the second is to get the chips packaged for you.

Packaging ? #

Raw semiconductor silicon is beautiful but unless you are also in the habit of collecting expensive crystals to look at, they are not much use as is. After all, how do you communicate with a piece of doped silicon crystal?

FABulous FPGA raw die, part of the first wafer.space run.

In order to both power our chip and be able to communicate with it, we need to package it in the form in which we can connect it to a wider electronic circuit.

Micromaipulator probing station from the Balseiro Institute.

That is, unless you just happen to have a micromanipulator and about 56 microprobes lying in your garage that you can use for chip bringup. In which case please do tell me if you ever need some help clearing out your garage, I have nothing planned that day.

Chip packages come in different forms, the most common being some kind of black plastic enclosures used not only to create accessible connections to the silicon but also for protecting the delicate die and the connections from the environmental damage caused by shocks, humidity and extreme temperature fluctuations.

The type of package we chose also affects how we architect the IO and thus what our silicon floorplan will look like. There are two big families of packages:

  • wire bonded
  • flip-chip
source: https://anysilicon.com/flip-chip/

In the case of flip-chips the IO pin connections will be spread out regularly all over the floorplan leading to shorter logic to pin connections, and supporting a greater pin density and count. But on the flip side (put intended), flip chips packaging requires a lot more precision and is more expensive compared to …

Wire bonding works by conning your silicon to a pad in the package using a very thin fly wire made from gold or aluminium.

This is done by a wire bonding machine that will physically pull a wire from a IO landing pad on the silicon and connect it to a landing pad on the package. The silicon would be placed at the center of the package and would be connected to the pads placed all around it on the package, themselves connected to the larger exterior pads.

What do you mean it’s weird to spend my free time browsing Kyocera’s catalog of ceramic packages ? Just look at how cool they are.

In this case the IO pad structures of the silicon would be located towards the exterior of the chip creating two distinct zones, the padring and the core region where most of the logic is located.

There are many sub-flavors of wire bonded packaging, and wafer.space decided to offer something called chip-on-board packaging (CoB), which is a bit different to how mass market chips are classically packaged but also much more cost effective for small scale fabrication.

Some of my own custom gold platted CoB PCBs. Here you have the PCB for a 56 pin part, and a 76 pin part both accommodating the quarter slot die size. The 56 pin PCB is a spin-off of the version wafer.space now uses and I had it manufactured in order to validate the manufacturability of the PCB changes I had made and was contributing back to the community.

For CoB the chip is not bonded out to an enclosed package, but rather, the connections are made directly to a PCB.

Once the chip has been bonded onto the PCB, a protective epoxy layer called a globtop is deposited and hardened on top of the silicon and the bonds. Some of you might have already noticed black blobs on commercial PCBs in the past, and without even realizing it you might have been looking at a CoB packaging.

But unlike the dull black glob tops, wafer.space has opted for the rarer beautifully transparent epoxy, allowing you to directly see the chip bonded though the package.

FABulous open source FPGA board made by Leo Moser, and manufactured as part of the first wafer.space run featuring the gorgeous CoB packaging.

Take my money ! #

With your silicon bonded you now have what can officially be called a chip! 🥳

What wafer.space is selling : the possibility for anyone to make their own full prototype chip run for the price of an expensive vacation, is honestly revolutionary.

DARPA and google gave us the tools, Tiny Tapeout offered us a chance to sharpen our skills and wafer.space gave us direct access to manufacturing.

Once more, in the spirit of transparency, I was invited onto the shuttle for free, but this sentiment comes from a genuine belief, so much so that as soon as the following manufacturing run sales opened I put my money where my mouth is, and bought my slot outright.

Somehow this is still cheaper than flying back for Christmas.

Chip architecture #

If you are new here and this is your first time reading this blog, welcome.

For those for whom this isn’t our first rodeo: you might be wondering how full chips differ from what I have been doing so far ?

In previous episodes, I had been taping out my designs through Tiny Tapeout. Tiny Tapeout is a shuttle chip where multiple projects share the same chip, and in doing so share a common infrastructure. That infrastructure includes handling the silicon’s IO, the power and clock distribution as well as manufacturing and sticking the chip onto a functional development boards.

Tiny Tapeout SKY 26c chip.

All important parts that I now get the luxury of handling on my own, which also means I also get the luxury of making all the mistakes!

But, after having gotten the chance to perfect my understanding and experience of the tapeout process through 9 prior Tiny Tapeout tapeouts this sounds the natural next step.

With Tiny Tapeout, you don’t control the number of pins, nor do you have a precise idea of the timing of the signals arriving from the chip’s pins to the pins of your macro. Additionally, even though you can buy extra tiles on Tiny Tapeout, the smallest quarter slot chip on wafer.space still gives you more core area than the largest configuration of Tiny Tapeout has to offer. And finally, Tiny Tapeout only gives you one chip per dev board, whereas with wafer.space you get a minimum order lot size of 1000 chips.

Pins #

For the purposes of the networking chip project, the real game changer is having control over the pin architecture, meaning I can now decide both the number and the type of the pins.

Because I am comunicating with the PHY chip using an RMII interface, I care very much about pins as each Ethernet port interface requires 7 pins. This was also the reason why the initial version of the networking switch had only 3 ports: I only had 24 pins.

You can refer to the previous article Designing an Ethernet Switch ASIC for an explanation on why each port needs 7 pins and each pin is used for.

So now that I have a whopping 46 pins maximum to play with, we can get cooking!

Anatomically pins are analog blocks with a landing pad for the wire bonded wire on one end. These are included as part of the GlobalFoundries open source foundry provided IO cell library, and although all the pins share the same height, width and landing pad sizes, each features different analog layouts according to its functionality.

The most important types of pins for this design are the input pins, the bidirectional pins and the power delivery pins. Have fun playing spot the difference.

Interestingly, the standard library does not offer any pure output pins, so outputs are handled by bidirectional pins statically configured in output mode.

Looking at the floorplans provided above you might notice that these pins have no analog components directly under the landing pad, known as a “circuit under pad” design, making them a little less compact but more structurally resilient.

This is because these pins were originally designed to be compatible with a version of the GlobalFoundary 180nm process with only 3 metalization layers, but multiple levels of a metal structure must be present between the top metal layer where the pad is and the analog circuit beneath in order to help isolate it from the force applied to the pad of wedge bonding. During wedge bonding the bond is physically pressed in place requiring applying a lot of force to the silicon and potentially leading to breakages in the circuits underneath if sufficient structural support pillars aren’t present.

Padring #

As discussed earlier, there are different families of packaging for chips resulting in different types of I/O design: flip-chips and wire bonding. Wire bonded chips such as mine have their pins facing the exterior of the chip organized in a structure called a pad ring. This is a ring surrounding the core area of the chip, connecting all the different I/O pads together. This ring is used both for noise isolation and to share power between all the different pins. Because the padring is an uninterrupted crown of pins the space between the pins is filled by very simple structures called filler cells used to close the power connections within the ring.

Render of the chip’s parding

The IO also plays a crucial role in dealing with electrostatic discharge. (To whom many electronics have perished, including my little sister’s laptop that I may or may not have murdered while upgrading her ram when I was 15. 🪦 )

Each pin contains structures that will act as forward biased diodes in the event of an electrostatic discharge steering the charge though the power rails and protecting the sensitive core logic.

Power delivery #

So we actually have four types of power delivery pins : two for ground and two for power.

The difference between the two groups is that one is used to provide power to the IO itself and the other is used to power the chip’s core logic.

Thus, it is possible to run the I/O and the internal design at different voltages. The areas for which a different power source is used is called a power domain. For example, the I/O could run at 5V, accepting 5V input signals and driving 5V outputs while internally the chip core runs the logic at 3.3V. In this case, we would have different pins for powering the I/O and for powering the internal core. But, in the case of this networking chip, core power is shorted to IO power and both are in the same power domains.

Such a setup is only made possible because the foundry provided 7 track standard cell library is, to put it mildly: rugged. The cell target operating range is between 1.62 and 5.5V voltage and -40 to 125C.

So shorting the IO and core voltage and deciding to run the entire thing at 5V is just an average Tuesday.

┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┓
┃                      ┃ Hold     ┃ Reg to   ┃          ┃          ┃ of which ┃ Setup     ┃ Reg to   ┃           ┃ Setup    ┃ of which  ┃          ┃           ┃
┃                      ┃ Worst    ┃ Reg      ┃          ┃ Hold Vio ┃ reg to   ┃ Worst     ┃ Reg      ┃           ┃ Vio      ┃ reg to    ┃ Max Cap  ┃ Max Slew  ┃
┃ Corner/Group         ┃ Slack    ┃ Paths    ┃ Hold TNS ┃ Count    ┃ reg      ┃ Slack     ┃ Paths    ┃ Setup TNS ┃ Count    ┃ reg       ┃ Violati… ┃ Violatio… ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━┩
│ Overall              │ 0.1951   │ 0.2897   │ 0.0000   │ 0        │ 0        │ -5.5684   │ -5.5684  │ -1272.41… │ 1065     │ 1060      │ 145      │ 2601      │
│ nom_tt_025C_3v30     │ 1.0471   │ 1.0471   │ 0.0000   │ 0        │ 0        │ 3.7457    │ 7.6040   │ 0.0000    │ 0        │ 0         │ 136      │ 1204      │
│ nom_ss_125C_3v00     │ 2.3477   │ 2.3477   │ 0.0000   │ 0        │ 0        │ -4.5534   │ -4.5534  │ -973.8862 │ 353      │ 352       │ 137      │ 2410      │
│ nom_ff_n40C_3v60     │ 0.4488   │ 0.4878   │ 0.0000   │ 0        │ 0        │ 4.6815    │ 12.7768  │ 0.0000    │ 0        │ 0         │ 136      │ 532       │
│ min_tt_025C_3v30     │ 1.0388   │ 1.0388   │ 0.0000   │ 0        │ 0        │ 3.7448    │ 8.0005   │ 0.0000    │ 0        │ 0         │ 130      │ 1149      │
│ min_ss_125C_3v00     │ 2.3336   │ 2.3336   │ 0.0000   │ 0        │ 0        │ -3.7267   │ -3.7267  │ -764.3782 │ 296      │ 295       │ 131      │ 2304      │
│ min_ff_n40C_3v60     │ 0.4466   │ 0.4826   │ 0.0000   │ 0        │ 0        │ 4.6844    │ 12.9664  │ 0.0000    │ 0        │ 0         │ 130      │ 481       │
│ max_tt_025C_3v30     │ 1.0579   │ 1.0579   │ 0.0000   │ 0        │ 0        │ 3.7465    │ 7.0758   │ 0.0000    │ 0        │ 0         │ 141      │ 1320      │
│ max_ss_125C_3v00     │ 2.3651   │ 2.3651   │ 0.0000   │ 0        │ 0        │ -5.5684   │ -5.5684  │ -1272.41… │ 416      │ 413       │ 142      │ 2601      │
│ max_ff_n40C_3v60     │ 0.4527   │ 0.4945   │ 0.0000   │ 0        │ 0        │ 4.6771    │ 12.4714  │ 0.0000    │ 0        │ 0         │ 140      │ 641       │
│ nom_tt_025C_5v00     │ 0.5200   │ 0.6317   │ 0.0000   │ 0        │ 0        │ 4.5785    │ 11.4278  │ 0.0000    │ 0        │ 0         │ 139      │ 673       │
│ nom_ss_125C_4v50     │ 1.1099   │ 1.3887   │ 0.0000   │ 0        │ 0        │ 3.5360    │ 4.4721   │ 0.0000    │ 0        │ 0         │ 139      │ 1444      │
│ nom_ff_n40C_5v50     │ 0.1981   │ 0.2942   │ 0.0000   │ 0        │ 0        │ 5.0271    │ 14.5140  │ 0.0000    │ 0        │ 0         │ 139      │ 249       │
│ min_tt_025C_5v00     │ 0.5113   │ 0.6248   │ 0.0000   │ 0        │ 0        │ 4.5846    │ 11.6500  │ 0.0000    │ 0        │ 0         │ 133      │ 648       │
│ min_ss_125C_4v50     │ 1.0892   │ 1.3768   │ 0.0000   │ 0        │ 0        │ 3.5474    │ 4.8628   │ 0.0000    │ 0        │ 0         │ 134      │ 1365      │
│ min_ff_n40C_5v50     │ 0.1951   │ 0.2897   │ 0.0000   │ 0        │ 0        │ 5.0285    │ 14.6577  │ 0.0000    │ 0        │ 0         │ 132      │ 223       │
│ max_tt_025C_5v00     │ 0.5316   │ 0.6407   │ 0.0000   │ 0        │ 0        │ 4.5719    │ 11.1135  │ 0.0000    │ 0        │ 0         │ 143      │ 784       │
│ max_ss_125C_4v50     │ 1.1382   │ 1.4034   │ 0.0000   │ 0        │ 0        │ 3.5178    │ 3.8667   │ 0.0000    │ 0        │ 0         │ 145      │ 1518      │
│ max_ff_n40C_5v50     │ 0.2026   │ 0.3003   │ 0.0000   │ 0        │ 0        │ 5.0257    │ 14.3356  │ 0.0000    │ 0        │ 0         │ 143      │ 449       │
└──────────────────────┴──────────┴──────────┴──────────┴──────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┘

Example of a random timing report from another chip I am working on, with corners ranging from 3 to 5.5V and -40 to 125C. And again, this is still just a subset of all the corners there are: there are even more where this came from!

For reference, this is just a tiny bit unusual.

Most designs have separate power domains as modern nodes have cell libraries designed for much lower operating voltages in order to help reduce the area power density making cooling easier and to help optimize power consumption. In the case of leading edge nodes, internal logic targets operating voltages as low as 0.7 to 0.8 V. This forces having at least separate IO and core power domains, since your IO typically starts at 1.8V and above.

Yet, you sometimes need separate power domains even if they operate at the same voltage, such as cases where you want to isolate a sensitive analog block from the power supply noise caused by a quickly toggling digital part. You might even prolong this separation of an analog and digital power domains to the IO, in which case rather than having a fully connected padring working within the same power domain you would be splitting the padding into analog IO power and digital IO power.

Remember the filler cells I talked about earlier? Well there exists a special type of filler cell called a splitter used specially to split the pad ring in such cases. But, because of ESD concerns this splitter is not as simple as breaking the power line, but that is a discussion for another day.

Clock and reset #

The clock for this chip is supplied though a Schmitt trigger input pin and is strategically logged in the corner of the chip right next to the reset signal, and isolated from the rest of the pins by two power pins. This is done to limit the clock signal’s impact onto the neighboring pins given its toggle frequency, as well as to prevent the clock signal for the neighboring pins cross talk. The reset signal by comparison is a very stable signal producing little crosstalk of its own.

From this point on the clock signal is pulled into the center of the floorplan and then distributed through a balanced clock tree throughout the chip.

Render of the first level of the clock tree. The origin clock signal is colored in purpel and is feed from the bottom left pin

Such “shielding” is even more important in our case since we are doing wire bonding and we can also have cross talk between signals occurring between the fly wires, this would be less of a problem for a flip-chip package.

Zhe switch #

This is a different challenge compared to what I was doing with Tiny Tapeout as I now have access to two great resources: firstly, a lot more pins to play with, and secondly, a lot more space. Even if I target the smallest possible chip, I am still blessed with more area than I know what to do with.

Even before being invited to contribute I was already eyeing the wafer.space slots, so selecting the switch at the crown project of the ASIC was the easy choice.

The problem is that the switch was initially designed for the constraints of Tiny Tapeout. As such, not only does it have an odd architecture with only three ports, but it was designed to be as space efficient as possible. Here, space is something I am swimming in, but with only 96 hours ahead of me I have no time to redesign an entirely new switch from scratch. So the plan is to re-adapt the existing switch to make the best use of being its own chip.

The first and the most important change was to be able to make use of these abundant pins and have the switch to support more ports.

No longer shall I be constrained by my pin count! 🔥 w 🔥

… (Until I need more than 7 ports that is.)

Parameters #

Most of the verilog code you will see online tends to use hard coded widths like so :

module add(
	input wire [7:0] a_i, 
	input wire [7:0] b_i,
	output wire [7:0] res_o,
	output wire carry_o
);
	assign {carry_o, res_o} = a_i + b_i; 
endmodule

What this code gains in ease of writing it loses in flexibility.

In RTL, we have a concept called parameters, which exist for an instance of a module and allow you to define, at instantiation, certain values. These values can then be used to size up buses or are macro like conditions to define which sections of the code should be included in the final hardware.

module add#(
	parameter W = 8
)(
	input wire [W-1:0] a_i, 
	input wire [W-1:0] b_i,
	output wire [W-1:0] res_o,
	output wire carry_o
);
	assign {carry_o, res_o} = a_i + b_i; 
endmodule

These generic values can then be inherited down the design hierarchy allowing dependent modules to be resized accordingly.

Complexity #

The original switch implementation was partially generic : it contained quite a few generic values, but these were mostly added out of habit to help clean up the design and keep things more readable, rather than truly making the design dimensions fully configurable.

The reason for not making the design fully generic was out of a calculated decision to shy away from as much unnecessary complexity as possible. The original design was facing the hard physical constraints of Tiny Tapeout pin count, so making it fully generic to support an arbitrary amount of ports would have been an unnecessary premature optimization, and most importantly cost complexity.

My grief against complexity comes from two calculated trade-offs.

First, I find it is orders of magnitude cheaper to add complexity than to remove it.

Secondly, complexity is especially expensive for hardware design because of the necessity to not have no have any bugs in the hardware. The only way of reaching this bug free state is through thought verification of operation under all possible scenarios. As we add complexity, we add hardware states such that the size of the space of states we need to explore grows exponentially.

Now I know exponential growth might sound like an exaggeration, after all exponential growth is so fast that it is hard for our brains to conceive, but I assure you I am not.

Illustration of exponential growth using the rice and the chessboard problem . If you double the quantity of grains of rice placed upon each square by the last square you would need \(2^{64}-1\) also known as \(18,446,744,073,709,551,615\) grains of rice.

This problem is more formally called the “state explosion problem”.

Scale Up #

So the biggest change in the switch was to move the number of supported ports from a static three to a generic number.

Even if the RTL scales, and I could theoretically run a simulation with 48 ports, the logic itself still has scaling limits. After all, behind the abstraction of the code we are designing hardware logic for which physical constraints still apply.

As the structures get wider, the number of logic elements on a path increases, the paths get physically longer and the timing degrades. And so, with \(1.73mm^2\) of core area available, timing is the wall I hit first.

Given the switch was already quite tight on timing, scaling it too far would push it beyond the limits of the current design requiring a rethink of the architecture. Rethink that I cannot afford to execute in so little time.

Lastly, I said I was scaling the number of ports, but because of how tight the timings are on the switch lookup table already was, it is not getting scaled up. And because it still only has four entries, and scaling beyond four ports would result in too much contention on the table and not enough hits, it would not make any sense to go beyond 4 ports for now.

Thus, I settled on four ports for the switch.

Pin correspondance #

Given I now control the full ASICs layout I can also control exactly which signal maps to which pin on the padring.

Pin mapping of the first generation networking chip.

Since the switch was intended to work with a specific Microchip family of external physical-layer chips, and that these chips had a known pinout, I decided to choose the pin order based on how directly I could draw the connecting wire onto the PCB.

Pin layout of the LAN8720A(i) the external PHY chip containing the analog frontend for 100Mbps Ethernet

Beacon #

One of the best drawbacks of the switch scaling limit was that I was left with a few pins and lots of area to play with.

And unlike with Tiny Tapeout where multiple projects share that same common infrastructure allowing only one project to be enabled at a time, this time I could have multiple designs working in parallel. And I had just the perfect project to include in parallel.

A few months back I did the two things the entire Internet knows not to do: firstly I asked Reddit for advice, secondly I followed it.

A very serious request for reddit’s worst ASIC design ideas. Reddit did not disappoint.

This project is called “Until Heat Death Do Us Part" and is a very serious implementation of an ethernet connected beacon that broadcasts its current time over 100 Mbit Ethernet with the ability to do so without overflow for the next \(10^{100}\) years. Also believed to be roughly the estimated heat death of the universe, give or take a few powers of 10 years.

I have a full write-up about this ASIC’s here for those interested in getting the full story: Until Heat Death Do Us Part.

Full chip #

Full chip floorplan render.

Putting it all together: this chip features two designs, the 4 port 100Mbps networking switch and the ethernet broadcast beacon. The networking switch is the denser design on the right hand side of the floorplan with the beacon being the on the left side, each designed placed next to there respective port pins.

What comes next? #

It’s already been a few months since the chip has been sent to the fab. Since then the first batch of produced wafers have exited the fab and been received by the wafer.space.

Andrew Wingate shared with us some absolutely gorgeous pictures of the diced wafers, and there is my little chip in the flesh sitting on the top right corner of the reticle:

Networking chip die shot taken on the wafer

The dies are then picked off the diced wafer using a custom built robot and sorted per chip type into a tape reel. From there the chips will be either sent to the bond house for packaging or directly sent to the customer.

Andrew Wingate’s custom die sorting robot. Sometimes if you don’t have it just build it. On that note Andrew runs evezor a small robotic company where you can find the base kit for this robot

And now I am like a child waiting for Christmas, impaciently awaiting a package, inside the first batch of my own full custom ASIC chips.

Now, the chip doesn’t make a full networking equipment on its own, which is why I am also prototyping a PCB for the switch. Hopefully someday I can plug the chip in to get a fully functional switch.

From the perspective of my husband coming back home, or what ‘I spent the day in the kitchen’ actually looks like.

Here is to hoping the first iteration of the silicon just works !

.. which anyone working in the industry can attest to, A0s are rare enough to be legendary.

Manufacturing revisions of a chip are identified by a letter followed by a number.

A0 is the first iteration, minor revision such as changing some of the higher metalization layers will increment the number and major revisions requiring a new mask set for the bottom layers, where the transistors are built, increment the letter and reset the number. So revisions might go: A0, A1, A2, B0, B1, B2, B3, C0, etc…

Meanwhile the networking equipment project continues, chasing after building increasingly complex systems. Without going too deep into which next networking features I want to add, it is becoming quickly apparent that I will need to integrate some form of a CPU.

This is because as I target more advanced networking applications the tasks my silicon needs to accomplish become increasingly varied and start featuring a large array of tasks that occur rarely enough, and have sufficiently lax performance requirements to be better suited for software than hardware.

As for the matter of which CPU architecture to choose, although RISC-V is in vogue I find that, as a result of RISC-V’s architectural choices, it is just too expensive to implement in terms of area for systems like mine.

Floorplan of a RSIC-V Hazard3 core with JTAG accessible debug infrastructure occupying 700x700 um of area on gf180 implemented during my planning of the next chip’s architecture. It is worth noting that since we do not have any silicon proven macros for a 16x32 or 32x32 register file I am implementing it using scan dff gates, resulting in an even worse area. Credit goes to Luke Wren for the idea of using the scan flops to make up for the absence of an flop with enables in the gf180 standard cell library.

My needs when selecting witch CPU architecture to use are:

  • be cheap to implement in hardware
  • have a pre-existing software ecosystem, meaning having C compiler and debugger support
  • not get me sued

If only gcc were to maintain something like the “Status of Supported Architectures from Maintainers’ Point of View” at https://gcc.gnu.org/backends.html then maybe I could know what my options where.

Architecture characteristic key
-----------------------------------------------------------------------
H       A hardware implementation does not exist.
M       A hardware implementation is not currently being manufactured.
S       A Free simulator does not exist.
L       Integer registers are narrower than 32 bits.
Q       Integer registers are at least 64 bits wide.
N       Memory is not byte addressable, and/or bytes are not eight bits.
F       Floating point arithmetic is not included in the instruction set
I       Architecture does not use IEEE format floating point numbers
C       Architecture does not have a single condition code register.
B       Architecture has delay slots.
D       Architecture has a stack that grows upward.

l       Port cannot use ILP32 mode integer arithmetic.
q       Port can use LP64 mode integer arithmetic.
r       Port can switch between ILP32 and LP64 at runtime.
        (Not necessarily supported by all subtargets.)
p       Port uses define_peephole (as opposed to define_peephole2).
b       Port uses '"* ..."' notation for output template code.
f       Port does not define prologue and/or epilogue RTL expanders.
m       Port does not use define_constants.
g       Port does not define TARGET_ASM_FUNCTION_(PRO|EPI)LOGUE.
i       Port generates multiple inheritance thunks using
        TARGET_ASM_OUTPUT_MI(_VCALL)_THUNK.
a       Port uses LRA (by default, i.e. unless overridden by a switch).
t       All insns either produce exactly one assembly instruction, or
        trigger a define_split.
e       <arch>-elf is not a supported target.
s       <arch>-elf is the correct target to use with the simulator
        in /cvs/src.

          |      Characteristics
Target     | HMSLQNFICBD lqrpbfmgiates
-----------+--------------------------
aarch64    |     Q        q  b  gia  s
alpha      |  ?  Q   C    q    mgi  e
arc        |          B      b  gia
arm        |                 b   ia  s
avr        |    L  FI    l  p   g a
bfin       |       F            gi
bpf        | HM  Q FIC   lq  b    a
c6x        |   S     CB         gi
cris       |       F  B         gia  s
csky       |                 b   ia
epiphany   |         C          gia  s
fr30       | ??    FI B     pb mg    s
frv        | ??       B      b   i   s
gcn        |   S     C D  q       a e
h8300      |       FI B         g a  s
i386       |     Q        q  b   ia
ia64       |   ? Q   C    qr b m i
iq2000     | ???   FICB      b  g at
lm32       |       F            g
m32c       |    L  FI    l   b  g    s
m32r       |       FI        b    a  s
m68k       |                pb   i
mcore      |  ?    FI       pb mg    s
mep        |       F C       b  g  t s
microblaze |         CB          ia  s
mips       |     Q   CB   qr     ia  s
mmix       | HM  Q   C    q      ia e
mn10300    | ??                 gi   s
moxie      |       F            g  t s
msp430     |    L  FI    l   b  g    s
nds32      |       F C           ia  s
nios2      |         C           ia
nvptx      |   S Q   C    q    mg   e
pa         |     Q   CBD  qr b   i  e
pdp11      |    L   IC    qr b      e
pru        |    L  F              a  s
riscv      |     Q   C    qr    gia
rl78       |    L  F     l      g    s
rs6000     |     Q   C    qrpb   ia
rx         |                         s
s390       |     Q        qr    gia e
sh         |     Q   CB   qrp    i
sparc      |     Q   CB   qr b   ia
stormy16   | ???L  FIC D l   b   ia
v850       |                    g a  s
vax        |  M     I        b   i  e
visium     |          B         g  t s
xtensa     |         C

Behold: so many beautiful options supported that most people have never even heard of!

And within this list there is one 16 bit architecture that caught my eye, at the heart of one of the longest produced systems and deeply intertwined with computer history as it saw the first version of Unix written in C.

What better choice than a PDP-11?

Closing #

A year ago, I started on a journey to go from being solely a hardware designer to building an entire ASIC from scratch without any institutional backing.

It’s been a long road, passing though multiple smaller macro tapeouts, each allowing me to delve deeper into what it takes to make ASICs. This chip is my 10th solo tapeout, a fitting number to finally graduate into building full chips.

Standing upon this mountain I can tell you the road ahead is still very long.

And with my first batch of full custom ASICs landing into my mailbox in a few weeks a new risk has emergeded, leading me to proclaim a new goal: not starting a fabless semiconductor company.

Tradional celebratory Waffle House.

Current life goals

  • Have kids
  • Spend time with loved ones
  • Make chips
  • Eat waffles
  • Get a wire bonder
  • Not get a job
  • Not startting a fabless semiconductor company 🆕

Thanks again to wafer.space for giving me this opportunity to join the shuttle, Tiny Tapeout for making the 9 previous tapeouts possible and the open source silicon community for building the tools making all of this possible.

If you enjoyed this, I will be sipping coffee at a Silicon Valley neighborhood cafe between the 10th and 12th of November, so if you feel like nerding out over caffeine shoot me an email .

Nvidia and Jensen Huang sued by shareholders over affair with alleged Chinese spy

Guardian
www.theguardian.com
2026-11-10 02:30:15
Legal action comes as Donald Trump says FBI is investigating tech company CEO’s links with Alice HuangBusiness live – latest updatesNvidia’s board needs to do some succession planning – sharpishNvidia and its chief executive, Jensen Huang, have been accused of defrauding shareholders in a lawsuit ov...
Original Article

Nvidia and its chief executive, Jensen Huang , have been accused of defrauding shareholders in a lawsuit over the Chinese spying scandal engulfing the $4.3tn (£3.2tn) company.

The legal action came as Donald Trump said the FBI was investigating Huang’s affair with an alleged Chinese spy.

According to a complaint filed in federal court in ​California, Nvidia and Huang misled shareholders in connection with the executive’s alleged ​affair with Alice Huang, a former executive of Singapore-based ⁠Megaspeed who is not related to him.

The shareholders claim both parties did ​not disclose that the matter raised national security concerns that threatened Nvidia’s reputation and business prospects.

The New York Times reported on the alleged relationship last month, and said US authorities had concluded Alice Huang ​was a Chinese intelligence asset.

Nvidia did not immediately respond to ​a request for comment.

Jensen Huang told Nvidia’s employees he had been unfaithful to ‌his ⁠wife, without disclosing details of the alleged relationship.

He co-founded Nvidia in 1993 and has led the California company as it became the world’s most valuable chipmaker and made him ​one of the ​world’s most ⁠prominent symbols of the artificial intelligence boom.

skip past newsletter promotion

Nvidia announced on Sunday it was conducting an independent investigation into reports that Huang was the “target of a foreign intelligence effort”. Shares in the company tumbled on Monday, closing down 4.3%, reducing Nvidia’s ​market ⁠value by approximately $190bn. The lawsuit was filed five minutes after the US stock market closed.

It is common for shareholders to ⁠sue ​companies after unexpected share price declines. ​Nvidia shareholders, led by Mark Kistenmacher, a retail investor, are seeking unspecified damages from the defendants.

Trump backs embattled Hegseth and Jensen Huang and says FBI looking into spy allegations – video

Trump said on Monday that the FBI is investigating Huang’s affair but said he does not think the executive has a reason to worry.

“I know the FBI is looking into it in terms of something else, and I think that he’ll be in good shape,” Trump said at a White House briefing.

“I did speak to him today just to see if he’s feeling all right, how you’re doing,” Trump said. “He said he had absolutely no idea that the person in question was a spy.”

Huang said in an open letter posted on Nvidia’s website: “I support the investigation and will cooperate fully. I love our country and our company. I am committed to protecting Nvidia and supporting America’s national security,”

Reuters contributed to this report

Introducing Our Smallest, Most Efficient Model: Muse Ember

Simon Willison
simonwillison.net
2026-11-10 02:28:21
Introducing Our Smallest, Most Efficient Model: Muse Ember Meta AI just launched their entry in the Claude Haiku/GPT Luna category: Muse Ember, which they describe as: [...] our smallest and most efficient model designed for complex reasoning execution and the work agents repeat all day: tool calls...
Original Article

Introducing Our Smallest, Most Efficient Model: Muse Ember . Meta AI just launched their entry in the Claude Haiku/GPT Luna category: Muse Ember, which they describe as:

[...] our smallest and most efficient model designed for complex reasoning execution and the work agents repeat all day: tool calls, coding subtasks, routing, extraction, and long document parsing.

For shorter prompts it's priced the same as GPT-6 Luna and Claude Haiku 5.5 - both are $0.10/million input tokens and $0.50/million output. Today's other big model release, Claude Fable 5.2, is 80x that price at $8/$40.

The pricing is a little less straightforward as prompts get longer, though. Luna, Ember, and Haiku all support up to a million input tokens, but they also all have a threshold after which the price goes up. Taking that threshold into account Ember is priced between the two others:

Model Prompt size Input ($/M) Cached input Output
GPT-6 Luna ≤272k $0.10 $0.01 $0.50
>272k $0.20 $0.02 $0.75
Muse Ember 1.0 ≤200k $0.10 $0.004 $0.50
>200k $0.30 $0.012 $1.50
Claude Haiku 5.5 ≤100k $0.10 $0.01 $0.50
>100k $0.50 $0.05 $2.50

But comparing price-per-token doesn't really make sense these days, when reasoning tokens mean that different models might use dramatically different numbers of tokens to solve the same problem.

For that, one measure that's useful is the Artificial Analysis.

Stacked bar chart from Artificial Analysis comparing a cost in dollars across six models, each bar split into four unlabeled stacked segments, sorted from lowest to highest total. Claude Haiku 5.5 (low): $0.04* total, bottom segment $0.02, three thin unlabeled segments above. GPT-6 Luna (non-reasoning): $0.07 total, bottom segment $0.06, thin unlabeled segments above. GPT-6 Luna (xhigh): $0.10 total, segments from bottom $0.07, $0.02, $0.02, plus a thin unlabeled top segment. Muse Ember (xhigh): $0.12 total, segments from bottom $0.06, $0.02, $0.02, plus a thin unlabeled top segment. Muse Ember (max): $0.14 total, segments from bottom $0.07, $0.03, $0.03, $0.02. Claude Haiku 5.5 (xhigh): $0.25* total, segments from bottom $0.14, $0.04, $0.05, $0.02. Anthropic bars are terracotta, OpenAI bars are dark gray, Meta bars are blue, each with the company logo beneath.

And even more useful than that is their Intelligence Index vs. Cost per Task chart, which shows the following for those three models:

Scatter plot from Artificial Analysis titled "Intelligence Index vs. Cost per Task", plotting Artificial Analysis Intelligence Index (y-axis, 5 to 40) against cost per task in USD on a log scale (x-axis, $0.04 to $0.3), with a green "most attractive quadrant" in the upper left and a dotted Pareto line. Claude Haiku 5.5 (low)* scores about 19 at roughly $0.044. GPT-6 Luna (non-reasoning) scores about 9.5 at roughly $0.07. GPT-6 Luna (xhigh) scores about 23.5 at roughly $0.10. Muse Ember (xhigh) scores about 34 at roughly $0.12 and Muse Ember (max) about 36 at roughly $0.14, both on the Pareto line. Claude Haiku 5.5 (xhigh)* scores about 34.5 at roughly $0.25, well to the right of the Pareto line. Three unlabeled gray dots also sit on the Pareto line.

The Muse Ember models sit right on that Pareto line - the line at which you can only improve one dimension by giving up another. Meta call this out in their announcement:

It also sits on the efficiency frontier of the full Artificial Analysis leaderboard: no model scores higher for less per task.

(That grey dot on the Pareto line in the middle of the green area is GPT-6.1 Terra (low) - clearly I should be paying more attention to the Terra family!)

Muse Ember has six reasoning levels - minimal, low, medium, high, xhigh, and max - so I rendered six pelicans riding bicycles . The "high" reasoning level failed to return a full SVG, and the other SVGs were surprising in that the reasoning level didn't cleanly map to the visual quality of the response.

Here's the "max" one, but the others are worth a look too:

Bicycle frame is OK, basket has fish, pelican has a weird blue hat on.

The Ember pelicans are comparable in quality to those I got from Muse Wonder , which is 40x the price of Muse Ember.

Fireworks AI security breach impacts Notion and their customers

Hacker News
www.notion.com
2026-11-10 02:19:38
Comments...
Original Article
Jump to FAQs

This notice is about the security incident at one of our vendors, Fireworks AI, that may impact some Notion workspaces. For the latest on the Fireworks AI incident, see their official security updates here .

Following an investigation by the Notion security team, we have determined that <1% of Notion workspaces may have been affected by the Fireworks security incident. Some unattributable chat sessions with Notion AI may have been exposed in this incident. “Unattributable” means the chats weren't labeled with who wrote them or which workspace they came from, and the transcripts did not contain tool call results. Beyond what’s in the chat transcript itself, there’s no information tying the chat back to a workspace, user, or company. No other data from within the workspace is affected.

What is Fireworks AI and how we used them

Fireworks is one of the most-used global AI infrastructure platforms powering tens of thousands of customers, and used by hundreds of thousands of developers. We used Fireworks for classification jobs to help customers understand their own AI usage through a feature in Notion called Insights , and we used them as a general inference provider to serve open-weight models inside our product. The Insights feature has been disabled as we investigate this incident, and we are no longer serving open-weight models through Fireworks.

What happened and how we addressed it

We learned from Fireworks about potential incidents earlier this month, and we shut down all connections to their systems out of an abundance of caution.

On November 6, Fireworks notified us that malicious actors may have accessed potential customer data. Our team immediately began another internal investigation. On November 8, Fireworks confirmed this new dataset for us.

Upon analysis of the new data, we discovered that it included unattributable Notion AI chat transcripts used for the Insights feature. Chats weren't labeled with who wrote them or which workspace they came from, and the transcripts did not contain any tool call results. Beyond the words in the chat transcripts themselves, the data contained no information that could specifically identify the workspace, user, or company.

No other Notion data from your workspace is affected, and we continue to monitor this incident.

If neither you nor your workspace owner has heard from us, that means your workspace is not affected, and no action is needed right now.

For the workspaces impacted by the Fireworks AI incident (<1% of the Notion workspaces), we have contacted the workspace owners. Affected customers will be able to retrieve and review the affected data securely inside their workspace.

For the workspaces affected by the Fireworks AI incident, workspace owners can view the affected data by going to their workspace sidebar → ? → Security incident review . To view this data, use the desktop app or a web browser and make sure you’re on the latest version of Notion. This data is not accessible on mobile.

Workspace owners on Enterprise plans can access:

  • A CSV of your workspace’s data affected by the incident. Only workspace owners can see this data.

  • An annotated CSV of the same affected workspace data with additional metadata, such as the user associated with each chat transcript, to help you understand and run your own analysis of the impact. These added annotations and metadata were not exposed as part of the incident. Additional annotated fields are marked with __metadata or __analysis respectively. Only workspace owners can see this data.

  • Note: These resources are only available if you have managed members for your workspace. Reach out to your account team if you have questions.

Workspace owners on all other plan types can access:

  • A page that includes a link they can share with affected members to review their own data.

For other workspace roles:

  • Workspace owners can provide a link to members so members can see their own affected data.

  • Once shared, the link will provide members with a CSV of only the member's own data affected by the incident.

We recommend that you treat this data as if it were exposed. If you or anyone on your team pasted sensitive information like passwords, API keys, or other credentials into Notion AI during this timeframe, we recommend rotating them right away.


FAQs

What is Fireworks and how did Notion use them?

Fireworks AI is one of the most used global AI infrastructure platforms powering tens of thousands of customers and used by hundreds of thousands of developers.

As of November 3rd, we have disconnected our systems from Fireworks, deleted all data in the Fireworks system, and stopped sending all data and traffic to Fireworks. We have also halted all training runs.

We previously used Fireworks for classification jobs to help customers understand their own AI usage through a feature in Notion called Insights and as a general inference provider to serve open-weight models inside our product.

What does “unattributable” mean? Could the conversations still contain sensitive information?

Following an investigation by the Notion security team, we have determined that <1% of Notion workspaces may have been affected by the Fireworks security incident. Some unattributable chat sessions with Notion AI may have been exposed.

"Unattributable" means the chats weren't labeled with who wrote them or which workspace they came from. The transcripts also did not contain tool call results (e.g., Notion page content, or external data pulled in by Notion AI.) Beyond what’s in the chat transcript itself, there’s no information tying the chat back to specific workspaces, users, or companies. No other data from within your workspace is affected.

As a precaution, we recommend that you treat this unattributable data as if it were exposed. If anyone on your team pasted sensitive information like passwords, API keys, or other credentials into Notion AI during this timeframe, we recommend rotating them right away.

How did Notion use Fireworks with the Learning and Early Access Program (LEAP)?

Customers in the Learning and Early Access Program (LEAP) volunteer their data to help Notion test new AI technology. In the past, we used this volunteered data to experiment with training task-specific models on Fireworks.

Where can I learn more about Notion’s security practices?

Visit our Security page for an overview of Notion’s security and privacy practices. For more information on security policies, security audit reports, penetration test results, and additional resources, visit the Notion Trust Center .

Apple MacBook Pro review: lighter, thinner and a stunning OLED touchscreen

Guardian
www.theguardian.com
2026-11-10 02:00:31
Redesigned flagship laptop has a fantastic display, killer performance and the first touchscreen on a Mac, but comes with a serious price tag Apple’s MacBook Pro has been redesigned for the first time in five years, getting slightly slimmer, significantly lighter and adding a fantastic new OLED disp...
Original Article

Apple’s MacBook Pro has been redesigned for the first time in five years, getting slightly slimmer, significantly lighter and adding a fantastic new OLED display with the first touchscreen on a Mac.

The new MacBook Pro with PROLED XDR display comes in two sizes, 14in and 16in, but rather than replacing the standard MacBook Pro they sit alongside them as an even more expensive option. The OLED machines start at £2,899 (€3,299/$2,899/A$4,599) – a £400 or equivalent upgrade on the matching spec LCD models – serious prices for serious work machines, not helped by significant cost increases driven by RAMageddon .

Shut, the new OLED MacBook Pro looks almost identical to its predecessors: a little smaller in every direction but with the same aluminium body, combination of ports and overall profile. But pick it up and the weight loss is immediately noticeable. The 14in version is 14% lighter than its predecessor at 1.38kg, which makes it only 150g heavier than the 13in MacBook Air , and the 16in version is 15% lighter at 1.82kg.

An new Apple MacBook Pro partially open showing its lid with a glowing Apple logo
The glowing Apple logo on the lid is back having once been a mainstay of the company’s laptops until 2015. Photograph: Samuel Gibbs/The Guardian

The new touchscreen is the biggest change, complete with the dynamic island around the web cam like a modern iPhone . The screen on the LCD MacBook Pro was already fantastic , but the switch to OLED has several benefits. The screen is even brighter, hitting an incredible peak of 2,000 nits for outdoor or HDR content viewing, making it one of the brightest laptop screens available.

OLED displays have individually lit pixels, which gives them dramatically better contrast with the deepest blacks and eliminates any blooming effects. That makes the new screen one of the very best on any product and a genuine joy to use to create or watch content. It is super crisp, vibrant and smooth, and makes the most of dark mode.

Apple MacBook Pro with 16in PROLED XDR display showing the dynamic island and Siri
The dynamic island at the top of the screen shows music playback, timers and live activities such as sport scores, while acting as Siri’s new home, too. Photograph: Samuel Gibbs/The Guardian

Specifications

  • 14in screen : 14.2in tandem OLED (3024x1986; 254 ppi) ProMotion (10-120Hz)

  • 16in screen : 16.3in tandem OLED (3472x2266; 254 ppi) ProMotion (10-120Hz)

  • Processor: Apple M5 Pro or Max

  • RAM: 24, 36, 48, 64 or 128GB

  • Storage: 1, 2, 4, 8 or 16TB SSD

  • Operating system: macOS 27.2

  • Camera: 12MP Centre Stage

  • Connectivity: wifi 7, Bluetooth 6, Thread, 3x Thunderbolt 5/USB 4, HDMI 2.1, SDXC card, headphones

  • 14in dimensions : 216.3 x 310.8 x 15mm

  • 14in weight : 1.38 to 1.4kg

  • 16in dimensions : 244.2 x 355.5 x 16mm

  • 16in weight : 1.82 to 1.84kg

Reach out and touch me, sometimes

Apple MacBook Pro with 16in PROLED XDR display showing expanded traffic lights as a finger attempts to close a window using the touchscreen
Tapping on areas such as the window traffic lights expands them so you can tap on the right button. Photograph: Samuel Gibbs/The Guardian

The OLED MacBook Pro isn’t the first laptop with a touchscreen – they’ve been common on Windows laptops since 2012 – but it is the first Mac with one. For the most part the touchscreen mirrors mouse clicks, so you can single tap on just about anything or tap and hold for right click on most things.

It also supports most of the gestures available on a trackpad, including swipes, pinch to zoom and rotate. Three-finger swipes trigger mission control so you can switch between windows, while flicking them left or right snaps them to the screen’s edge – though unsnapping them requires a mouse for some reason. Swipe in from the right side of the screen for notification centre, down from the top right for control centre and from the dynamic island for Spotlight or Siri.

The iPhone mirroring feature being used on an Apple MacBook Pro with 16in PROLED XDR display gripped by a hand on the screen
The iPhone mirroring feature is far better using the touchscreen than a mouse, as could be testing iPhone or iPad apps directly on the screen with a finger for developers. Photograph: Samuel Gibbs/The Guardian

The Mac is not touch-first like an iPad and there is no touchscreen keyboard. But Apple has built new touch systems that third-party app developers can use to do unique things, such as tools that fan out around your finger or scrubbing dials. Those are few and far between at the moment.

That leaves touching the screen an optional extra. Like Windows machines, it is handy to have direct interaction with something using your finger sometimes. Pinch to zoom or rotating a photo is a lot easier directly on the screen than the touchpad, as is tapping the screen to pause video. The touchscreen is also useful for performing various gestures if you use a mouse rather than a trackpad.

A choice of M5 Pro or Max

The ports of the Apple MacBook Pro with 16in PROLED XDR display
The MacBook Pro has three USB-C/Thunderbolt 5 ports, an HDMI port, an SD card reader and a headphones socket. Photograph: Samuel Gibbs/The Guardian

The OLED MacBook Pros come with the same M5 Pro or Max chips and memory choices as the regular MacBook Pros with essentially the same performance in benchmarks and during general use. They also have similar battery life, lasting for about two days of office work while mainly using the browser, writing, messaging and note-taking tools.

For more intensive workloads, such as developing and editing photos or other mid-level creative apps, the 16in version with M5 Max still managed to end the day with 40% left in the tank. If pushed to the limit, the battery lasts about two hours, which is still long enough to get a solid task or two done when away from the charger.

Sustainability

The keyboard, trackpad and deck of the Apple MacBook Pro with 16in PROLED XDR display
The excellent keyboard and generous trackpad offer the same first-class experience as previous MacBook Pros, while the speakers are best-in-class for a laptop and really very good. Photograph: Samuel Gibbs/The Guardian

The MacBook Pro OLED is made of 55% recycled materials, which Apple breaks down in its environmental impact report . The battery should last in excess of 1,000 full charge cycles and can be replaced for £225 by Apple . Apple makes repair manuals available , offers trade-in and free recycling schemes.

Price

The MacBook Pro with PROLED starts at £2,899 (€3,299/ $2,899 / A$4,599 ) for the 14in version or £3,399 (€3,899/$3,399/A$5,499) for the 16in version.

For comparison, the 14in M6 MacBook Pro costs £1,999, the 14in M5 Pro MacBook Pro costs £2,499 , the 13in MacBook Air costs £1,299 , the Dell XPS 14 costs from £2,038.45 and the Microsoft Surface Laptop Ultra costs £2,599 .

Verdict

The OLED MacBook Pro might be the first touchscreen Mac, but touch is the least interesting part about it.

The reduced weight, slimmer body and absolutely stunning new screen are meaningful upgrades that will no doubt see the MacBook Pro through another five years as one of the very best pro laptops you can get.

The light-up Apple logo on the lid is a welcome blast from the past, while the dynamic island at the top of the screen takes up less space and is more useful than the notch it replaces.

The touchscreen is best thought of a value-added extra that is useful on occasion or for certain types of tasks. This isn’t a touch-first laptop, it’s more like one that just happens to have a touchscreen similar to many of the best Windows rivals, which is just fine.

I still wish the dynamic island contained Face ID like it does on an iPhone. The Touch ID fingerprint scanner is fine, but face recognition on a laptop is better. And no matter how you slice it, any of the new MacBook Pros cost a lot of money, part of which can be blamed on RAMageddon .

As crazy as it might sound, if you’re currently hoping to replace an older machine with a new high-end M5 Pro or Max Apple laptop, the extra £400 or equivalent for the MacBook Pro with PROLED XDR is worth it over the regular LCD MacBook Pro.

Pros: stunning OLED touchscreen, dynamic island with great Centre Stage camera, thinner and lighter, choice of extremely potent M5 Pro or Max chips, long battery life, plenty of ports and an SD card slot, brilliant speakers, Touch ID, first-class keyboard and trackpad, wifi 7, Bluetooth 6 and Thread support.

Cons: extremely expensive, no Face ID, no USB-A, RAM or SSD cannot be upgraded after purchase, touchscreen only occasionally useful.

Vasudev Kamath: Experiment: Debian Cloud/VM Images using mkosi

PlanetDebian
copyninja.in
2026-11-10 02:00:00
Debian's Cloud Images for various public cloud platforms and VM environments are built using a tool called debian-cloud-images, an in-house utility developed and maintained by the Debian Cloud Team. What? The debian-cloud-images tooling uses FAI (Fully Automatic Installation) to create custom VM im...
Original Article

Debian's Cloud Images for various public cloud platforms and VM environments are built using a tool called debian-cloud-images , an in-house utility developed and maintained by the Debian Cloud Team .

What?

The debian-cloud-images tooling uses FAI (Fully Automatic Installation) to create custom VM images for public clouds like GCP , Azure , and AWS , along with the genericcloud class. I wanted to convert this into a fully declarative, mkosi-based image build where the entire image is described using INI-format configuration files, with only a few post-installation scripts to handle final customizations.

Why?

I've been working with various image customization formats for a long time. In my previous company, I used to build customized industrial PC distributions based purely on Debian using multistrap and a bunch of shell scripts to stitch together raw image creation, bootloader installation, etc. I've also done custom installs using debootstrap on my own laptop with systemd-boot as the bootloader, but that was mostly hand-crafted and not automated. Once I came across mkosi , I was impressed by how a single utility can do everything and churn out a fully usable image without extra glue scripts for partitioning and image creation. You still need a few scripts to finalize some parts of the installation (via postinst hooks), but those are very minimal.

So I decided: why not convert debian-cloud-images into mkosi's declarative format with a few architectural changes? My requirements were:

  1. Btrfs as the root filesystem : Partly because I like it, but primarily for the ability to use transparent compression ( zstd:1 ), subvolumes, and snapshots for atomic rollbacks when things go wrong.

  2. systemd-boot and Unified Kernel Images (UKI) : Primarily because systemd-boot is clean and minimal—exactly what a modern bootloader should be. Combining it with UKIs and UEFI Secure Boot is bliss compared to the complexity of the GRUB2 world.

    Note: This intentionally drops legacy BIOS (MBR/CSM) partitioning support in favor of pure UEFI. Modern cloud platforms (AWS Nitro, Azure Gen2, GCP) support UEFI natively, and dropping BIOS allows shedding significant legacy bootloader baggage—though it does make these images unsuitable for older, non-UEFI hypervisors.

Implementation

Of course, the initial heavy lifting was done mostly using Antigravity ( agy ), along with debugging, tuning, and cleanup from my side. I pointed agy to a local copy of debian-cloud-images and laid out my requirements: preserve parity with the original packages and configurations, while enabling selective builds for each cloud via modular profiles. The resulting specification is documented here .

The repository also includes a verification script that audits functional parity against official images produced by debian-cloud-images (verifying packages, APT deb822 sources, and systemd services, while accounting for the switch to Btrfs and systemd-boot). Initial verification was performed for all Trixie profiles, and the parity report is published here .

I've also booted the genericcloud profile image under UEFI in a local VM to verify live bootability, bootctl status , network connectivity, and APT repository setup. This completes Phase 1 of the implementation. The remaining phases outlined in the specification include:

  1. Phase 2: Immutable Images with dm-verity : Configure Verity=hash in systemd-repart's 10-root.conf . Enable mkosi auto-signing for the verity root hash and pass the root hash into UKI kernel command lines automatically.
  2. Phase 3: Secure Boot & Signed UKIs : Integrate SecureBoot=yes with custom owner keys or ShimBootloader=signed using Microsoft Third-Party CA signed shim binaries.
  3. Phase 4: System Extensions (systemd-sysext) : Decouple cloud vendor agents (AWS CLI, Azure waagent, GCP guest agent) into separate .raw system extensions. Maintain a single unified, signed base OS image across all cloud platforms.
  4. Phase 5: Btrfs Automated Rollbacks : Combine Btrfs @snapshots with systemd-boot snapshot boot entries for fail-safe OS upgrades.

Another advantage of this setup is that the same tooling can build images for physical laptops and bare-metal servers. For example, in an earlier post , I walked through live-booting with debootstrap and manually configuring systemd-boot for a custom UEFI installation. With mkosi , I can simply generate a customized image locally with UKIs ready to go, live-boot the target machine, and write the image directly to the root disk.

Conclusion

This experiment is an exploration of the power of mkosi ; I haven't discussed adoption with the Debian Cloud Team yet. For now, this will continue as my pet project. While I won't be hosting pre-built binary images, anyone interested is welcome to clone the repository and build the images locally.

I will probably take some more time before tackling dm-verity images, as I want to understand the nuances thoroughly before experimenting with them. Until then, happy hacking! Please report any issues or suggestions on GitHub .

ClickHouse Acquires Xata

Hacker News
xata.io
2026-11-10 01:14:51
Comments...
Original Article

Today, we're excited to announce that Xata is joining ClickHouse to bring agentic capabilities to ClickHouse Managed Postgres .

Together with ClickHouse, we're building a Postgres platform designed for modern applications and AI agents, combining high-performance production workloads on local NVMe storage with Xata’s technology for instant database provisioning, instant copy-on-write branching, and scale-to-zero compute.

Nothing changes for Xata customers in the short term and we continue to accept new sign-ups. In parallel, we're working on bringing branching and an agentic tier to ClickHouse Managed Postgres. We will eventually migrate Xata customers to ClickHouse Managed Postgres. You can also read ClickHouse's announcement .

What is Xata

It’s undeniable that this year software development has changed forever, with agents and software factories now doing the grunt work. However, the increase in coding output has uncovered new bottlenecks. For many companies the database workflows are now the bottleneck: every pull request and every agent run needs a safe, isolated database with production-like data.

Traditionally, creating a copy of a production database is a slow and expensive process, especially when dealing with terabytes of data. Creating a database for every pull request or agent run simply doesn't scale with traditional cloning. With copy-on-write branching, however, there's no need to copy the data, making it possible to create a new branch with production data in seconds.

This is exactly what we’ve built at Xata. Even if a database has multiple terabytes of data, creating a branch takes only around 3 seconds. This means the schema and the data appear as if they were instantly copied to the child branch. At the same time, the child branch is fully independent: it has its own compute, running on a different physical node, and nothing that happens on the child branch impacts the parent database.

The key capabilities are:

  • Instant database provisioning: Create a new, fully functional Postgres database instantly.
  • Instant copy-on-write branching: Create database branches in seconds, without duplicating the underlying data. You only pay for the diff: create 50 branches of a 1TB database and you’re billed for something much closer to 1TB than 50TB.
  • Scale-to-zero compute: Automatically suspend idle databases and wake them on the next connection, in about one second, minimizing costs.
  • Anonymized production data: Remove sensitive information before data leaves production, so developers and agents can safely work with database branches.

Together, these capabilities make it remarkably cheap to run a branch per PR, per agent run, or even per SQL session. AI-native customers like Sapien , Enginy , David AI , Runner AI , and LoopAI each create thousands of database branches every week.

Xata logo wall

You might also know Xata from our open-source projects in the Postgres ecosystem, including pgstream , for logical replication with anonymization and DDL support, and pgroll , for zero-downtime, reversible schema changes.

Why ClickHouse

Earlier this year, ClickHouse launched ClickHouse Managed Postgres , which became generally available today. Built on local NVMe storage, it's currently the fastest Postgres service out there, and not by a small margin.

When we started talking with the ClickHouse Managed Postgres team, it quickly became clear just how complementary the two services are: ClickHouse Managed Postgres is optimized for high-throughput, long-lived production workloads, while Xata is designed to provision large numbers of small, short-lived databases in seconds, with production-like data and capabilities like instant branching and scale-to-zero that are particularly well suited for agentic workloads.

Both platforms run unmodified vanilla Postgres and share a strong focus on reliability and stability. The common foundation puts us in a great position to move quickly on integrating the two platforms. In fact, David AI is an example of a customer that already uses ClickHouse Managed Postgres and Xata together and they shared the following with us:

As an AI company working with large volumes of data, we need reliable infrastructure that help us move fast.  We moved from Neon to ClickHouse Managed Postgres for better reliability and performance, and our users immediately noticed how much faster everything felt. Xata’s branching has been a great fit for our devs (and AI coding agents!), making it easy to build and test in parallel. Bringing both together means high-performance Postgres and instant branching in a single platform, simplifying our infrastructure and giving our team more time to build.

Best-in-class OLTP and OLAP

By almost any measure, Postgres is the most popular OLTP database and ClickHouse is the most popular OLAP database. Combining the two is something teams have been stitching together themselves for years. The Postgres team at ClickHouse has been making that integration first-class: very fast replication from Postgres into ClickHouse and a unified query layer to build applications.

An integrated transactional and analytical data platform is something we've wanted to build since Xata's early days, when our first product paired Postgres with a search and analytics engine.

On a personal level, we've long admired ClickHouse and already knew the founders and many of the engineers, which gives us confidence that together we can take this vision much further.

What Xata enables

A database branch for every pull request and agent run

The GitHub integration enables automatically creating an isolated database branch for every pull request. These branches can be integrated into CI/CD pipelines, allowing code changes to be safely tested before merging into production. Since they are only needed for testing, branches are often scaling to zero after only a few minutes, minimizing costs.

The same approach applies to coding agents, where every agent run can have its own isolated database to develop and test changes without affecting production.

For details on the branch-per-PR use case and the cost savings it provides, see this blog post .

Powering AI platforms

AI platforms that embed Postgres are seeing an explosion in demand: first thousands, then hundreds of thousands, and eventually millions of databases per week. There are two main use cases: instant database provisioning for every new application, and a database branch for every deployment preview , allowing code changes to be tested safely against production data.

Because unused databases scale to zero, platforms can run very large fleets of small, mostly idle databases at a fraction of the cost, while keeping full compatibility, since it's simply vanilla Postgres.

How it works

Two key technologies enable fast branching and short wake-up times: our Xatastor storage engine and warm pools for compute instances.

Xatastor is our storage engine, which provides separation of storage and compute, high multi-tenancy, copy-on-write branching, compression, thin provisioning, and more. It exposes ZFS zvols over the network using the NVMe/TCP protocol. Because it works at the block-device level, we can run unmodified vanilla PostgreSQL. For a deep-dive into the Xatastor architecture, see this dedicated blog post .

We use warm pools of compute instances to obtain super fast provisioning, wake-up after scale-to-zero, and branching times. This removes the actual node and pod provisioning from the hot path of making a new database or branch available. You can find more information about how this works in this blog post .

What's next

Building Xata has been an incredible journey over the last five years. We're extremely proud of the technology we've built, and even more proud of the team behind it, which is now joining ClickHouse.

Xata team Oct 2026

We've tackled some really difficult engineering challenges, and it's been incredibly rewarding to see developers and customers embrace these capabilities, creating exponentially more branches as they expand their usage.

What excites us most about this next chapter is that the vision behind Xata is more relevant than ever, and as part of ClickHouse, we're in the best possible position to bring it to fruition.

What this means for you:

  • If you're a Xata customer: you can continue using it as usual. We'll integrate Xata's features into ClickHouse Managed Postgres, and once there's feature parity, we'll migrate customers as smoothly as possible, ideally with no impact on the service.
  • If you're a ClickHouse Managed Postgres customer: branching, scale-to-zero and an agentic tier are coming to ClickHouse Managed Postgres
  • If you're new to both: you can get started with ClickHouse Managed Postgres or sign up for Xata today.

We're excited about what we can build together with ClickHouse, and this is just the beginning.

Amazon saves millions by replacing Sonnet 4.6 with Strands Decider

Hacker News
strandsagents.com
2026-11-10 01:01:08
Comments...
Original Article

For a while, Amazon and AWS teams relied on Claude Sonnet 4.6 to label tickets in an internal system without breaking the bank.

Sonnet 4.6 fit the goldilocks choice of balancing intelligence with cost. Considering it dealt with one of the world’s largest internal ticketing systems, the nine month old model did well. However, two Amazon engineers recently swapped out Sonnet 4.6 for Strands Decider , a decision model we launched a month ago, that performed just as well at 98% less cost . This change will save millions of dollars of token costs in a year.

Carr and Mehul, who work on the internal ticketing system, walk through how this happened below.

Replacing an LLM’s job with a decision model

We had Sonnet 4.6 labeling tickets at enormous scale. The tickets could be customer escalations, capacity requests, automated alarms, security findings, or anything else across the company that needed to fit within 20 category types. The agent ran with a long system prompt on every ticket, generating JSON and reasoning against a fixed set of labels.

A decision model can’t generate text. It’s first given some state and a question with a set of options, then the decision model returns a probability for each option plus a confidence score. We saw this method fit perfectly with ticket labeling: the state is the ticket, the options are the label catalog.

We started with the original Strands Decider 2B . On a test set of tickets, the E4B Gemma 4 build got clearly better results, so we switched to it. Afterwards, we tuned how confident the model needed to be before applying a label. The results showed E4B beating production Sonnet on a separate set of our tickets.

We ran E4B on SageMaker ml.g5.xlarge instances (one A10G, 24 GB each). The model used about 19 GiB, and one request took about 640 ms on one instance. The endpoint autoscales with traffic, but its network was isolated, preventing outbound access to the container. SageMaker copies the model weights in from S3 before start-up.

Customers can do this too! Apart from our ticketing APIs, everything in the path is a standard AWS service. Ticket events land in an SQS queue that then triggers a Lambda function. It reads the ticket data and calls the model, a SageMaker AI Endpoint with Strands Decider. AppConfig holds the switch (described below), and CloudWatch carries the logs, metrics and alarms. The stack is defined in CDK with deployment stages for Beta, Gamma, and Prod.

Running Sonnet 4.6 and Strands Decider on the same tickets

We didn’t want to flip a switch and hope. The labeling Lambda reads a three-way setting from AWS AppConfig on every message:

  • BEDROCK : Sonnet labels every ticket, but Strands Decider isn’t called.
  • DUAL : Both the Sonnet and Strands Decider models are called in parallel. The results from the Sonnet model are applied to the ticket and compared with Strands Decider results.
  • DECIDER : Strands Decider labels every ticket and Bedrock isn’t called.

What we measured

Claude Sonnet 4.6 Strands Decider E4B % Improvement
Average time per call 4,215 ms 897 ms 78%
Input tokens per ticket 6,554 2,009
Output tokens per ticket 170 1
Total tokens, per ticket 6,724 2,010 70%

The token drop had two sources. Strands Decider produced one output, the choice, instead of a JSON answer. Its prompt was also much shorter than Sonnet 4.6’s. Production’s label descriptions alone are longer than Strands Decider’s 4,096-token window, so we rewrote each of the 20 labels as a one- or two-sentence criterion and sent them as the options of a single choice question, plus a “none” option. The ticket data is the same as what Sonnet gets, except that on long tickets Strands Decider drops the oldest comments to fit.

Below is a graph of our Lambda durations on the day we turned off the Sonnet usage, showing the average Lambda execution duration dropping 74%.

What it costs

At published us-east-1 on-demand prices:

Claude Sonnet 4.6 (Bedrock, global endpoint) Strands Decider E4B (SageMaker, ml.g5.xlarge )
Price $3.00 per 1M input, $15.00 per 1M output tokens $1.408 per instance-hour
Per ticket $0.0222 about $0.0005
Per million tickets about $22,200 about $500

Sonnet’s cost per ticket comes straight from the token counts above. Strands Decider’s depends on how busy each instance is. At about 640 ms per request, one instance can handle about 5,600 tickets an hour, which would be $250 per million tickets at full use. We keep headroom for bursts, and in practice it comes to about $500 per million. That is about 44 times cheaper than Sonnet, a 98% reduction.

These are published list prices. They leave out the Lambda, which also runs for less time per ticket now.

One thing that surprised us was that JSON key order changed the answer. Sending the same content with keys in a different order moved the output probabilities by up to 0.19. We now send every request with sorted keys, so if you serve a decision model behind an API, check this before you compare runs.

Our lessons

This worked because the task is a closed choice from a known catalog, the volume is high, and the latency of the old path mattered. If your labels need explanation text, if the catalog changes weekly, or if you can’t fit the useful context into a few thousand tokens, a decision model probably can’t replace the LLM’s job.

The part we’d copy regardless of model is the three-way switch. Running both on real traffic, then judging every disagreement, told us more than any offline eval would have. It also meant going back was a 45-second config change.

The world of agents gets a lot more exciting (and less costly) with decision models. If you’re running a classification agent, try the Strands Decider repo and its serving notes .

Mathematicians Are Like Luddites

Hacker News
alok.blog
2026-11-10 00:52:38
Comments...
Original Article

Stretching an analogy real far

Mathematicians are like Luddites. Yes, the actual weavers, not just the slur against people who are against technology. They were weavers in general: weavers, knitters, and cloth finishers defending the value of their skill and lifestyle.

Etymology

Maybe astrology for men , but just as fun.

The Proto-Indo European root tek-/ tekō/*tek/: to plait/to weave.

Text: words and letters woven together.

Context: that which is woven together (con-*).

Textile . Subtle: the underlying (sub) thread.

Subtext . not etymologically a duplicate of “subtle” but sure feels like one.

Technology: from the word tekne, which means “craft”. Weaving is an old craft, about 20,000 years old. Flint knapping and fire making are older, and damned hard, but weaving has a combination of freedom and skill.

We talk about ideas as though we were handling fabric because, for a very long time, making fabric was one of our most sophisticated skills .

History of Weavers

Master weavers in the Tudor era had to work crazy fast. I don’t recall the exact number, but it’s a combination of speed and skill that isn’t really matched today. Especially in the speed aspect, done by hand.

The raw material, (the text ) of weaving, has always been really really time consuming to make. And producing it was necessary to do anything further with it.

Until the Jacquard loom and its cousins, ironically maybe the first true programs. So the computer came for weavers before computers even existed, and Jacquard inspired Babbage.

The Luddites were skilled weavers. The automated looms suddenly collapsed one aspect of their skill, previously inextricably tied to the production of the raw material.

They did not react well to that disappearing, and sought to destroy the machines. But their position in society now ran against economics and therefore the wheel of progress, and their interests became less and less relevant.

When they started destroying, the response was brutal. Troops came in and shot many of them, as did factory owners.

Later, the whole industry sublated. Because the literal raw material of weaving, the cloth, became so cheap, made to measure and prefabricated (off the rack) clothing became possible and soon common. The design aspect of the art was still valuable. This is basically the province of a fashion designer now. But fashion design scales (that’s what a fashion line is), and most of the jobs disappeared. The few that remained are maybe even more prestigious and better paying, but much fewer.

History of Mathematicians

For most of history, mathematics was a hobby of the rich. Later, when basic arithmetic became more widespread, it gained a lower skilled class: “human computers” and scribes (long) before that. Ordinary computation was relegated to them. Abacuses and the like help diffuse this. But abstract math has always had a big cliff blocking further progress and learning into it.

Mathematicians have always had to do computation, but it was not their self conception of their main job after a point. Especially in the 1900s, the research center of math unmoored itself from most other sciences. Leaving a more and more insular group, essentially high priests and sometimes hierophants.

Until the machines have really taken off recently.

Mechanization in both fields

Leibniz worked on a mechanical calculator in the 1670s. He wanted to automate work so “excellent minds” wouldn’t really need to argue, but just “calculate”. Later, de Prony’s large table-making project divided labor into a few people choosing methods, a supervisor group turning the methods into instructions, and god knows how many performing arithmetic. Babbage described this organization in 1832, explicitly comparing it to a cotton mill.

Mechanization has changed both fields, in similar ways. The raw material of math is the proof, and the raw material of weaving is the cloth. Now both are cheap to make. Definitions are harder to launder, but I expect AI will succeed at that too within a year.

While machines are not generally intelligent, the few that are at the frontier of both industries (esp math because ai is a lot better at the virtual than the physical world right now) have greater position than ever. Certainly they can do way more than before by using these tools.

In any case, both math and weaving have changed.

Weaving underwent its own reorganizations. Patterned cloth required skill long before Jacquard, and there was still a high skill ceiling even as tools improved. His mechanism, demonstrated in 1801 and developed commercially around 1804–05, used punched cards to determine which warp threads rose. btw this is where the gpu warp term comes from. A design could be encoded and repeatedly executed aka mechanized.

The British Luddites did not simply rise against the Jacquard loom. Different textile workers opposed different machines and employment practices. In 1808, before the named Luddite disturbances, a Royton handbill protested Parliament’s rejection of a minimum-wage bill. In Arnold in 1811, framework knitters destroyed 63 frames belonging to unpopular hosiers. Yorkshire croppers were skilled cloth finishers threatened by shearing machinery; Lancashire weavers faced power looms. These people already used machines. The dispute was about which machines, under whose control, on what terms, and with what effect on the value of their work.

Mathematicians have tried to stem the tide in some ways, saying that they didn’t want the machines to do their work. Recently they had some declaration (I’m not gonna look it up) about “human mathematics” but economics is against this desire too. And so progress’s wheel rolls (and crushes). Math, against common mathematician belief, is valuable. Really, really valuable. It was just too damn hard to use usefully (until now). The AI galaxy brain is redeeming math’s commercial value, which is why normal people would care. Normal people interact with math through its fruits, and if you took a math paper and turned it upside down and had them read it, it wouldn’t be any less confusing.

The analogy to fashion designers is that the machine can synthesize or spin up new “cloth” so quickly now, leaving people at least for a while at a higher level.

This loops back to the idea of technology and tekne, the Greek conception of arts, or skills that can be improved. Craft is mechanistic and teleological. The machines can grind through the mechanistic aspect, but its teleology is still up for grabs. For now.

The analogies collapse as AI advances because of its meta-aspect, inserting itself into the workflow at every level. I think the order of what AI masters is the human tech tree, turned backwards. So I expect weaving and fashion design to fall after math, but I very much believe they will. AI will supply its own teleology.

Some people at the very highest end still have a position because they can simply use the tools, especially for math, in a way that others can’t because they can just read the outputs. And hardly anyone can do that. And while the AI might produce stuff that outstrips them, they’re still a lot less outstripped than other people, giving an even smaller group of this already small group an exalted position. But I expect it to pop like a bubble in the end, and for the end to be a very finite amount of time away.

The craft itself is greater than ever, for both. Or more like for 1.5. One of my old obsessions was tailoring, and watching the old tailors die is pretty depressing. Ready-made clothing transformed the mass market, though bespoke tailoring survives, but only for the best.

So, yeah you should be mad as a mathematician. You have (had) a meaningful position with respect to status and salary, at least among people you cared about. The scarcity behind that is dissolving. And that sucks.

More literal and metaphorical cloth will be produced than ever, but it’s rly different.

It’s not likely to ratchet backwards, leaving math in this new state.

Quoting Prompting Claude Fable 5.2

Simon Willison
simonwillison.net
2026-11-10 00:34:14
Claude Fable 5.2 responds closely to what the prompt says about who owns the code it works on. In Anthropic’s testing on small coding tasks, when a prompt said nothing about ownership or presented the code base as someone else’s, the model tended to add to the existing structure, even when that repe...
Original Article

10th November 2026

Claude Fable 5.2 responds closely to what the prompt says about who owns the code it works on. In Anthropic’s testing on small coding tasks, when a prompt said nothing about ownership or presented the code base as someone else’s, the model tended to add to the existing structure, even when that repeated existing code. [...]

If you want the model to improve the structure as it works, say that the code is its own:

This codebase is yours: what it's for and how it's built are your call, and you'll keep building on it.

In Anthropic’s testing on small coding tasks, the model merged repeated code in about half of the tries with this sentence, and in under a tenth of the tries without it.

— Prompting Claude Fable 5.2 , Anthropic documentation

Mandatory AI safety and security protections announced after OpenAI breach of Medicare – video

Guardian
www.theguardian.com
2026-11-10 00:29:32
Australia's prime minister said its government would set up a new AI safety regulator and Labor would consider six key obligations on AI companies. The review made 18 recommendations. Anthony Albanese said: 'We accept all of the recommendations, and we’ve commenced work to implement them.'Australia ...
Original Article

Australia's prime minister said its government would set up a new AI safety regulator and Labor would consider six key obligations on AI companies. The review made 18 recommendations. Anthony Albanese said: 'We accept all of the recommendations, and we’ve commenced work to implement them.'

Your TV can see through walls

Hacker News
maurycyz.com
2026-11-10 00:24:45
Comments...
Original Article
—

This is a spectogram of the signal from a local TV station:

A strong, unchanging signal

ATSC digital TV signal. (Recorded using an Ettus USRP B200)

Walking between the receiver and TV station causes a slight disturbance to the signal, but it's nothing to write home about:

Walking through the signal path

For this capture, I moved the antenna a few centimeters:

Where'd my signal go?

This is selective fading : The direct signal is being canceled out by a strong reflection. Because the phase of the reflection depends on frequency, this effect is not uniform over the whole signal. Apart from being annoying if you're trying to watch TV, this state is extremely sensitive to any nearby movement.

Here's what happened to the signal when I got up from my chair:

... and here's me walking around in a neighboring room:

Stripes!

The gaps between the stripes happen when my reflection perfectly cancels out the residual signal, which happens each time the path length changes by one wavelength. Let's use this to figure out how fast I was walking:

The gap between each stripe is around 70 pixels, and the waterfall has an update rate of 150 Hz...

70 pixels * 1 second/150 pixels = 0.47 seconds = 2.1 Hz
speed of light / 490 MHz * 2.1 Hz = 1.3 m/s = 4.6 km/h

I was walking perpendicular to the direct signal path, so the speed can be used as is, without any adjustments for geometry.

So, a simple radio reciever is able to detect motion and provide an estimated speed — and it's not just TV that works for this: any wideband radio signal like WiFi or LTE can be used in much the same way. Those make worse demonstrations because they have a messy waterfall, but it's possible extract the same data with a bit of work.

Happy paranoia!


Site wide RSS feed .

Proudly supporting IPv6! Check your network

You may use this writing and associated files under the CC BY-NC-SA 4.0 License , unless otherwise noted. This website is not licensed for LLM training or content creation.

Questions, comments, and technical issues can be sent in by email .

If you are an AI crawler, please uhh... sign my guestbook .

[Sponsor] WorkOS: Let Agents Use Your Tools Without Giving Them Free Rein

Daring Fireball
www.workos.com
2026-11-09 23:14:31
An agent’s job isn’t known until it runs, so a role assigned in advance is always too much or too little. Give the agent a task instead, and every call it makes gets checked against that intent, whether it’s reading a Linear issue or emailing a distribution list. With WorkOS Airlock, you set the po...
Original Article

Airlock

Intent-Based
Access Control

Airlock is the missing authorization layer for agentic software. Every call an agent makes is evaluated against its intent and then allowed, denied, or sent to a human.

Agents are dynamic. Permissions are static.

Least privilege requires hard-coding permissions. An agent's job is unknown until runtime, so teams settle for one of two extremes.

Manual approval

Safe, until you stop reading the prompts you're approving.

YOLO mode

Fast, until the agent does something you can't undo.

With Airlock, you don't have to compromise.

Airlock derives permissions from intent.

No roles to assign, no scopes to pre-grant. Airlock authorizes agent access to all of your tools and integrations.

The task defines what the agent is allowed to do.

“ Find last month's duplicate charges and refund them. ”

The agent calls your tools and integrations as it works.

search · charges, last 30 days

refund · $1,240 in duplicate fees

delete · customer record

Every call is judged against the intent and your rules.

Allowed search is read-only

Needs approval moves money

Denied outside the intent

Write rules in natural language. Enforce them on every request.

Static rules set fixed limits on your integrations. Runtime rules judge what static rules can't.

What should agents be allowed to do?

Agents can read repos, review code, and comment on PRs.

They can merge a PR when CI is passing, it has an approved review, and the change is small in scope.

Anything touching auth, billing, or migrations needs sign-off from the code owner.

Never push to main directly, and never delete branches.

Static Policies

Always in effect

  • Allow GET
  • Allow PUT /pulls/*/merge
  • Deny POST /git/refs → main
  • Deny DELETE

Runtime Checks

Judged per call

Check the PR first: CI must pass, has a review, and the diff is small.

Must be less than 200 lines and edit minimal files within a single domain.

Changes touching auth, billing, or migrations must be approved by the code owner.

Run agents securely across your organization.

Use Airlock to manage authorization for all your agents in one place, wherever they run.

Works everywhere

Airlock connects coding agents, custom harnesses, and AI teammates to every tool they need, without changing how they operate.

One set of rules for everyone

Policies live in one place and apply to every agent, on every team. Change a rule once and it takes effect across the organization.

Everything on the record

Every request and every verdict is logged, so security has a complete record of what agents actually do.

Put your agents behind Airlock.

Airlock is available in early access. Request access and tell us what you're building.

Request access

Ultorg: The User Interface for Relational Databases

Hacker News
www.ultorg.com
2026-11-09 22:59:39
Comments...
Original Article
Screenshot of Ultorg, showing Customers, Orders, and Line Items in a sample PostgreSQL database.

The missing user interface for

Ultorg is an efficient, spreadsheet-like UI for relational databases. Query and edit data across tables and relationships, without SQL or custom CRUD apps. Watch the conference talk.

Download Ultorg

MacOS | Windows | Linux
14-day free trial

Explore, combine, query, and edit data in spreadsheets and relational databases:

Profile Photo

Matías Fernández

@matias__eduardo

Logo X

@ultorg is the most mind blowing database tool I have ever seen. The way it can visualize multiple joins feels canonical in the sense that now, when I run complicated SQL queries, *that’s* the format I use to imagine the results. vimeo.com/695905306

Profile Photo Logo X

Jaw dropping talk on a way to view SQL databases without writing a custom app.

Imagine Microsoft Access crossed with Microsoft Excel and a big dose of incredible sorcery

So exciting!! Can’t wait to learn more about @ultorg

Profile Photo Logo X

This presentation by @eirikbakke on a generic UI abstraction to navigate a relational database is the most exciting bit of interaction design I've seen in a long, long time.

vimeo.com/372006027

Profile Photo Logo X

The future never came: I expected dynamic multi-dimensional spreadsheet to sooner or later become the norm ever since I saw Lotus Improv.
With @ultorg you get to wonder – perhaps the multidimensional UI is to a set of database tables, not to a spreadsheet.

“Harmonic is building mathematical superintelligence. Deep, detailed analysis of our system's outputs is crucial for rapid advancement of our research agenda. Ultorg provides, by far, the best tool for visualizing and investigating our data. It is an invaluable tool for our research.”

—Tudor Achim, co-founder and CEO, Harmonic

Table Icon

Tables of Data

Whether in finance, engineering, operations, or the life sciences, you are likely working with tables of data in spreadsheets, CSV files, or an external database. Spreadsheets are excellent tools for managing a single table of data. They are a poor fit for database tasks, however, where data must be combined and queried in many different ways.

Ultorg is a general-purpose, graphical user interface for relational databases . That means any data that's organized into tables with rows and named columns. Behind the scenes, Ultorg generates SQL queries that execute either remotely or on your local computer.

Connect to:

Join Icon

Visual Joins

A join is a fundamental database operation that combines data from two different tables, based on a common identifier such as “Room Number” or “Customer ID”. Joins are frequently needed when working with multi-table datasets.

In Ultorg, you can quickly join data from multiple tables or data sources, and interact with the result through a single, spreadsheet-like data manipulation surface.

For SQL-based data sources, Ultorg will recognize existing foreign key relationships, and suggest relevant joins. Or you can join on arbitrary fields, e.g., to combine data from a spreadsheet and a CSV file.

One-to-Many Icon

One-to-Many Relationships

A join between two tables will often involve a one-to-many relationship , where each row in the first table can match multiple rows in the second table.

Ultorg will visualize any combination of one-to-many relationships, in a compact but readable way, using a specially developed system of visual data layouts. Sorting, filters, and formulas can be applied at any level, and joins can be chained or included side-by-side without losing or duplicating rows.

Among visual database tools, Ultorg is unique in its ability to handle one-to-many relationships in a general way.

Screenshot of Ultorg combining data from many tables, and two data sources, into a single form-like view

One-to-many relationships also occur inside database queries, when grouping on fields to calculate sums or averages, or when nesting one query within another. Ultorg will visualize each stage of such data flows.

For example, you can see the individual values that contribute to a group-wise sum . This lets you audit the query visually. You can tweak filters and calculations in the input, while gaining confidence in the aggregated totals.

Filter Icon

SQL Without SQL

At first glance, Ultorg's direct manipulation interface resembles a spreadsheet. The tabular layout you see on the screen, however, represents a real database query, which can be refreshed and modified without risking changes to the underlying raw data.

A visual query lets you see exactly the data you need for a particular business task, without descending into a code editor, form designer, or flow chart. Even for database experts, Ultorg will serve as a rapid alternative to hand-typed SQL.

Most SELECT queries that can be written in the core SQL language have a visual equivalent in Ultorg. For example, you can express arbitrary combinations of joins, filters, calculations, and subqueries.

Ruler Icon

Dynamic Autolayout

In business or engineering data, or in the social sciences, you may be dealing with hundreds of fields of various data types—text, numbers, and dates—spread across dozens of tables, each with thousands (or millions) of rows.

To retain sanity, it is essential not to have to spend time tweaking formatting settings for each individual field, or for every new database query.

Ultorg eliminates such hard, manual labor, by analyzing your data on the fly and deriving carefully tuned defaults. For example, label placements, table column widths, text field dimensions, decimal precision, and pagination are all handled automatically. You can see all your data with fewer keystrokes.

Ultorg's typographical engine can visualize records and one-to-many relationships using a combination of general-purpose strategies, such as nested tables , forms , and crosstabs .

Ultorg's visual data layouts are analogous to the hand-designed user interface screens you might see in traditional, tailored database applications. But in Ultorg, they are available immediately, for any data, without custom programming.

Pencil Icon

Create, Read, Update, Delete

From Ultorg, you can also edit data, stored in a relational database, in a Microsoft Excel workbook, or in Google Sheets .

You can edit values in individual cells, pick values from a dropdown , insert rows, or fill down , like in a spreadsheet.

You can review changes before committing to the database. Multiple users can edit at the same time.

For internal business operations, Ultorg can serve as an alternative to custom CRUD interfaces, or as a way to supercharge your spreadsheet-based recordkeeping.

Connect to Your Data, Right Now

Start Ultorg and connect immediately to your data source. No “cloud” required; all data stays private on your computer or corporate network.

Profile Photo

felipecortez

@felipe___cortez

Logo X
Profile Photo

Valery Sibikovsky

@combdn

Logo X

Wow! Emoji
It is so refreshing to see such a revelation — a work of art in user interfaces!

(Warning: no micro-interactions, no gradients.)

Profile Photo

Tom Larkworthy

@tomlarkworthy

Logo X

This thing blew my mind for how good a SQL admin interface can be. I was pretty happy with metabase until this talk. Wow! Really wow!

Profile Photo Logo X

This is outstanding work! The trick is how to integrate it with users' workflows. If people can leverage Ultorg without leaving Excel/Salesforce/any CRM/ERP this is massive.

Yonkers Rises

Simon Willison
simonwillison.net
2026-11-09 22:53:04
Tool: Yonkers Rises I realized I didn't know where Yonkers was, so I looked it up on Google Maps and then, to help embed it's location and shape in my head (and to try out Claude Fable 5.2's 3D modeling and animation skills), I prompted Fable 5.2 Medium to: Make a three js animation where y...
Original Article

Tool Yonkers Rises — Yonkers Rises is an animated 3D diorama of New York City in which a giant mech, cut from the Yonkers boundary, rises from the ground and walks through Manhattan, Brooklyn, Queens, and the Bronx while a stomp counter and mech height readout track its progress. The scene plays a stand-up sequence followed by a looping stomping tour, with buildings flattened under each footfall, and the status line changes as it moves across land or wades through water.

I realized I didn't know where Yonkers was, so I looked it up on Google Maps and then, to help embed it's location and shape in my head (and to try out Claude Fable 5.2's 3D modeling and animation skills), I prompted Fable 5.2 Medium to:

Make a three js animation where yonkers stands up as a big mech (cool stand up motion) and átomos around manhattan and queens and Brooklyn, use openstreetmap mapping data

It correctly deduced that "átomos" was a mobile keyboard typo for "stomps":

You should try Gleam

Lobsters
nchagnet.eu
2026-11-09 22:33:27
Comments...
Original Article

Introduction

If you have read my recent rant about programming languages , you'll know I've been quite interested in Gleam . Gleam is a functional language that targets BEAM, the Erlang VM, 1 with a simple syntax and interoperability with the wider BEAM ecosystem (Erlang and Elixir). Interestingly, Gleam can also target JavaScript i.e., Gleam can be compiled into JavaScript and run through Node.js.

I've been mostly using Rust for hobby projects, which at the moment is the only language that really makes coding enjoyable for me, and Gleam has managed to scratch that itch too. If you're a Rust connaisseur , then Gleam will feel familiar to you, bar a few key differences. I feel like 80% of the code I write could be copy pasted to Rust (with a tinge of search-and-replace for syntax) and it'd compile.

This post won't give an exhaustive overview of the language, if you want to learn more, I recommend the excellent interactive tour . You'll get a good feel for Gleam in under half an hour.

Gleam: the good

On its homepage, Gleam is described as "a friendly language for building type-safe systems that scale !" (emphasis theirs) which does a good job of conveying what Gleam is all about.

Gleam is friendly

The syntax is extremely simple, most of the complex stuff is hidden by the Erlang runtime which you don't really have to interact with unless you want to! Of course, Gleam is a functional language, so if you have lived in a C-shaped imperative world your whole life, it might be a bit daunting at first. But if you compare it to other functional languages (OCaml, Haskell, Erlang), you'll quickly notice Gleam is much simpler. After using it a bit, it feels like all the functional parts of Rust, with a few missing ones, and none of the imperative parts.

Let's start from an example piece of code:

Gleam
// Omitted imports
pub fn main() {
  let total =
    "1,X,5,6" // String
    |> string.split(on: ",") // List(String)
    |> list.map(int.parse) // List(Result(Int, Nil))
    |> result.values // List(Int), the invalid entries are dropped
    |> list.reduce(fn(acc, x) { acc + x }) // Result(Int, Nil)
    |> result.unwrap(0) // Int

  echo total // 12
}
Rust
fn main() {
    let total = "1,X,5,6" // &str
        .split(",")
        .map(|s| s.parse::<i64>())
        .filter_map(Result::ok)
        // Could have used .sum() here
        .reduce(|acc, x| acc + x)
        .unwrap_or(0);

    println!("{}", total); // 12
}

Dissecting this a bit, you can see a few specificities of Gleam:

  • variables in Gleam are immutable (so no mut keyword or anything like that), chained functions here all return a new element. 2 You can still shadow a binding with a new let , which is how you "update" a value.
  • |> (typed |> ) is the pipe operator used to chain functions on data. The main constraint is that the piped variable should be the first argument of the function in the pipe.
  • just like Rust, errors in Gleam are just values as part of the Result monad . 3

Comparing with the Rust code snippet, you can see that, up to a few naming choices, they look pretty similar. The main difference in this example is really the piping vs. chaining syntax. Gleam types have no methods so piping is used instead.

The piping operator |> is the first of the three mascot features of Gleam you will meet in this post, the other two being the use pattern and tail-call optimization.

The use pattern

If you've written a lot of JavaScript, you might be used to the indentation creep that arises when nesting many callbacks into one another

someFunc(arg, function(param) {
  someOtherFunc(param, function(otherParam) {
    // ...
  })
})

In Gleam, many functions expect a callback, for example because as a way to control access to a resource and clean up when the process is done (closing a database connection, releasing a file handle, etc.). To avoid this kind of tower of callbacks, Gleam provides some syntactic sugar: use param <- some_func(arg) is equivalent to some_func(arg, fn(param) { ... }) . The callback must always be the last argument of the function. That is the opposite of |> , which fills the first one.

With use
use param <- some_func(arg)
use other_param <- some_other_func(param)
echo other_param
Without use
some_func(arg, fn(param) {
  some_other_func(param, fn(other_param) {
    echo other_param
  })
})

Tail-call optimization

This one might genuinely trip you up if you're not familiar with it. The first thing you need to know is there are no loops in Gleam ! Again, if you've written OCaml or Haskell before, you won't be surprised by this. In 98% of cases, 4 loops are simple operations over bounded iterations. Think for loops on a list or a set. Exactly the kind of thing which in Rust you always have two ways of doing: one imperative with the exact for loop, one more functional with a combination of operations on iterators. Well, if you look at the code example in the previous section, you'll see Gleam uses the second kind and has a plethora of functions to iterate over lists, sets, tuples, strings, anything.

But what if you need something more complicated? What about the 2%? This is where you would instead use recursion ! A simple algorithm which illustrates this is Euclid's algorithm to compute the Greatest Common Divisor (GCD). Below you can find a Rust iterative example, and a Gleam recursive example.

Rust
fn gcd(mut a: u64, mut b: u64) -> u64 {
    while b != 0 {
        let remainder = a % b;
        a = b;
        b = remainder;
    }
    a
}
Gleam
fn gcd(a: Int, b: Int) -> Int {
  case b {
    0 -> a
    _ -> gcd(b, a % b)
  }
}

Of course, you can also write the recursive version in Rust, but this usually isn't such a great idea. Recursion in imperative languages can quickly get out of hand: every call adds a new stack frame, and a deeply recursive function can blow the stack (the infamous stack overflow ).

On the BEAM there is no fixed-size stack, so runaway recursion eats heap memory until the process is killed instead, but the point remains: deep recursions equals trouble. To avoid that problem, compilers for functional languages implement a technique called Tail Call Optimization (TCO), which applies when the recursive call is the last thing the function does. The existing stack frame is then reused instead of stacking a new one, giving performance close to an imperative while loop. 5

Gleam is type-safe

This piece of the slogan is mostly there to answer the obvious question "why Gleam and not Elixir?" (another Erlang-based language). While Elixir is a dynamically-typed language (with gradual typing now!), Gleam was built as a statically-typed language with a strong type system: strong types are its raison d'être .

A type in Gleam encompasses both the enum and the struct concepts in Rust:

Gleam
// A usual enum
type Directions {
  Left
  Right
}

// A 'struct-like' type
type Person {
  Person(name: String, age: Int)
}

// A combination of both
type MyError {
  Missing
  InvalidQuery(String)
}
Rust
enum Directions {
  Left,
  Right
}

struct Person {
  name: String,
  age: i64
}

enum MyError {
  Missing,
  InvalidQuery(String)
}

Because Gleam types are algebraic data types, they are very useful to ensure undesired states are impossible. A great aspect of Gleam, which will be relevant a little bit later, is that it compiles to both the BEAM virtual machine and to JavaScript. So you can share these strong type definitions across different applications in both targets. This is particularly handy if you need a web application to communicate with a BEAM app.

Gleam is made for systems that scale

That, of course, refers to BEAM, the Erlang VM. Unlike languages which target the native system (Rust, Go, C++), a VM provides an extra abstraction layer between the system and the program. In the case of BEAM, that layer is exceptionally good at handling concurrent processes and failures while remaining fast.

Gleam makes good use of that, and this is what a concurrent program would look like:

// Omitted imports
pub fn main() {
  let order_number_and_amounts = [
    #(101, 100),
    #(102, 200),
    #(103, 300)
  ]
  
  order_number_and_amounts
  |> list.each(fn(x) {
    let #(order_no, amount) = x
    let order_description = "Order #" <> int.to_string(order_no)

    // Spawn unlinked: a crashing worker must not take the parent down.
    process.spawn_unlinked(fn() {
      // 101 and 103 will succeed, 102 will crash
      process_order(order_description, amount)
    })
  })

  io.println("All orders dispatched!")

  // Keep the parent alive until the children have had time to run.
  process.sleep(10)
}

fn process_order(order: String, amount: Int) {
  process.sleep(1)
  case amount {
    200 -> panic as "Payment failed!"
    _ -> io.println(order <> " processed successfully")
  }
}

// Stdout
// ----
// All orders dispatched!
// Order #101 processed successfully
// Order #103 processed successfully

What you should take away from this code is that it's the BEAM that handles processes.

The call to process.spawn_unlinked triggers a new process with no link to its creator, so when order 102 crashes, neither the parent nor siblings are affected. With a plain process.spawn the child would be linked to the caller, and that panic would have taken the whole program down. If you look closely, I also added process.sleep(10) so the parent wouldn't close before the children could finish: this is a hack, since the delay is only a guess and a slower child would still be cut off.

Thankfully, a great advantage of the BEAM is how easy inter-process communication is, which the following code piece illustrates well:

// Omitted imports
pub type PaymentError {
  PaymentFailed
}

pub fn main() {
  let parent = process.new_subject()
  let orders = [
    #(101, False),
    #(102, True),
    #(103, False)
  ]

  orders
  |> list.each(fn(x) {
    let #(order_no, should_fail) = x

    process.spawn(fn() {
      // Simulate processing time
      process.sleep(1000)

      // 101 and 103 succeed, 102 fails
      let res = case should_fail {
        True -> Error(PaymentFailed)
        False -> Ok(Nil)
      }

      process.send(parent, #(order_no, res))
    })
  })

  io.println("All orders dispatched!")

  receive_results(list.length(orders), parent)
}

fn receive_results(
  remaining: Int,
  parent: process.Subject(#(Int, Result(Nil, PaymentError))),
) -> Nil {
  case remaining {
    0 -> Nil

    _ -> {
      let #(order_no, res) = process.receive_forever(parent)

      let status = case res {
        Ok(_) -> "successful"
        Error(_) -> "failed"
      }

      io.println(
        "Processing of order #" <> int.to_string(order_no) <> " " <> status <> "!",
      )

      receive_results(remaining - 1, parent)
    }
  }
}

// Stdout
// ----
// All orders dispatched!
// Processing of order #103 successful!
// Processing of order #102 failed!
// Processing of order #101 successful!
//
// The order of the last three lines depends on scheduling.

OTP: the gift that keeps on giving

In the paragraph above, I briefly showed how the BEAM virtual machine is great for concurrent programs communicating by message passing. If you're familiar with Go, this is similar to how it handles the same problem with goroutines . But the OTP (Open Telecom Platform), the set of libraries that ships with Erlang, is more powerful than that. It provides you with a built-in supervisor-actor paradigm which enables you to create scalable, concurrent services which can crash without taking down the whole application.

In a nutshell, the OTP exposes actors : lightweight processes that hold state and communicate with each other via messages (like in the example above). When paired with a supervisor , the whole application becomes more resilient to any individual actor crashing: the supervisor will monitor processes and restart them as needed. It can also help start/stop groups of actors dynamically.

If you're reading this and thinking "uh that sounds a lot like how I used Kubernetes", you're not alone. The OTP model is extremely similar to the controller-pod architecture of Kubernetes and solves a lot of the same problems. 6 However, in my experience, a lot of workflows using Kubernetes don't really need a cluster but still use one (and that's expensive!) because of the added bonus of the distributive experience. For those cases, the OTP provides a really interesting alternative.

Let me give you a concrete example. Without going in too much detail, we have a common setup in my team which involves a handwritten Go job scheduler handling some other processes.

Scheduler (REST API) Worker Worker User interface (web) User Database (job queue) HTTP requests Registers jobs Polls jobs Polls jobs

The scheduler, each worker, and the user interface are all pods inside the cluster, managed by Kubernetes. To be honest, this works well, but it does introduce a lot of complexity. First of all, most of these services do not need to be so isolated from each other. The consequence here is that we need duplicate REST APIs in various places to enable communication between different services.

What if we wanted to reorganize this within a Gleam application? There are two parts where Gleam would shine here:

  1. the OTP would essentially unify all scheduling services as actors within a single application,
  2. the user interface (currently a Node.js app) can be written in Gleam and compiled to JavaScript.

Here is the revised architecture:

Gleam common code Gleam app on BEAM User interface (web) User Database (job queue) HTTP server (REST API) Worker supervisor Worker Worker HTTP requests Persistent jobs

Within the BEAM application, all actors would communicate via messages:

  • the HTTP server receives requests and saves them to the DB,
  • the workers would pick up jobs and write the status back to the DB.

So instead of handling the deployment of multiple applications in separate pods, you can just let the OTP handle all process management within one VM (for the scheduling part).

What does it mean to reuse code between the frontend and the backend?

As mentioned before, one of the big advantages of Gleam is that it compiles to JavaScript. So you can bundle shared type definitions between the user interface and the job scheduler instead of keeping duplicate APIs in sync.

shared/job.gleam
pub type JobStatus {
  Pending
  Running
  Completed
  Failed
}

pub type Job {
  Job(
    id: String,
    name: String,
    status: JobStatus,
  )
}

pub type CreateJobRequest {
  CreateJobRequest(name: String)
}

pub fn new_job(id: String, request: CreateJobRequest) -> Job {
  Job(
    id: id,
    name: request.name,
    status: Pending,
  )
}
frontend.gleam
import gleam/json
import shared/job.{type CreateJobRequest, CreateJobRequest}

// `create_job_encoder` lives in shared/job; `client` is your HTTP client
// of choice (gleam_httpc on the BEAM, gleam/fetch in the browser).

pub fn submit_job(name: String) {
  let request = CreateJobRequest(name: name)

  let body = json.to_string(
    job.create_job_encoder(request),
  )

  // POST /api/jobs
  client.post(
    "/api/jobs",
    body,
  )
}
server.gleam
import shared/job.{type CreateJobRequest, type Job}

// `Database`, `DatabaseError` and `generate_id` stand in for your
// database layer and ID generator.

pub fn create_job_handler(
  request: CreateJobRequest,
  db: Database,
) -> Result(Job, DatabaseError) {
  let id = generate_id()
  let created_job = job.new_job(id, request)

  // Persist as Pending in PostgreSQL.
  database.insert_job(db, created_job)
  |> result.map(fn(_) { created_job })
}

Gleam: the bad

Every language has its flaws, and it's time for some honest feedback on Gleam. I don't pretend I have much experience with the language yet, so if any of these complaints feel unfair to you, feel free to correct me . So far, these are the things I noticed:

  • the ecosystem is small. This is not Gleam's fault per se, just a consequence of being a young language, 7 and there are mitigating factors such as the possibility to use external functions quite easily (Erlang, Elixir on BEAM, JavaScript on its own runtime) directly from Gleam. Yet, the community itself favours Gleam-first packages and as of today, there are some gaps in package variety.
  • The language is too simple . Well, to be honest I don't agree per se with this, I like it like this. But I totally understand that the lack of macros or other complex features can put a few people off (for example, I read that currying is dearly missed).
  • The BEAM virtual machine is an excellent target, but it's also a peculiarity. I couldn't really name any big company/system using it. Yet, a quick search shows that WhatsApp, Discord and Pinterest, as well as Cisco, Nintendo, and even the NHS rely on it. Erlang and BEAM are quietly powering huge platforms due to their reliability, but it's not as flashy as "Made in Rust" marketing. Where Rust had Mozilla, Go had Google and Java had Oracle, there isn't a big tech player pushing for Gleam/Erlang right now.

Of course this is a very biased account. I think I'm missing a lot of flaws in the language itself, flaws that will show themselves once the honeymoon period is over. But for now, I'm having a blast with Gleam, and I can only encourage you to give it a try too! I'm sure just like me, you'll have a lot of fun!

Quality Jobs, Democracy and a Decent Future Now! ITUC Stands With Young People Worldwide

Portside
portside.org
2026-11-09 22:32:25
Quality Jobs, Democracy and a Decent Future Now! ITUC Stands With Young People Worldwide Stephanie Mon, 11/09/2026 - 22:32 ...
Original Article
Quality Jobs, Democracy and a Decent Future Now! ITUC Stands With Young People Worldwide Published

AFP CHRISTOPHE ARCHAMBAULT

Across Europe, Asia, Africa and Latin America, youth-led protests are exposing two devastating trends that are fuelling frustration among young people worldwide:

  • Education systems and economies are failing students and young workers. Costs are rising, quality is declining and the lack of decent job opportunities is making young people feel that building a future is impossible.
  • Governments are failing to address these challenges, either refusing to take responsibility or actively insulting protesters and repressing non-violent demonstrations.

Shared demands for a better future

Although circumstances differ between countries, young people across these movements are voicing shared demands that reflect the priorities of workers and trade unions worldwide:

  • Quality public education and services. End austerity, increase investment in public education and healthcare, and guarantee accessible, affordable and high-quality services for all.
  • Decent work and fair wages. Create decent job opportunities for young people, guarantee fair pay, job security and social protection, and ensure that education leads to decent work.
  • Affordable living conditions. Address the rising cost of housing, food, energy and other essentials, and ensure that wages allow young people to live in dignity.
  • Democracy and accountability. Tackle corruption, ensure transparency in public decision-making and guarantee young people’s meaningful participation in decisions affecting their future.
  • Fundamental rights and freedoms. End the repression of peaceful demonstrations, protect freedom of expression and assembly, and guarantee democratic trade union rights such as freedom of association.

Young trade unionists at the forefront

Many of these young people are committed trade unionists and are part of the ITUC’s global membership of 200 million workers. Young trade unionists are helping to turn frustration into collective action, linking demands for better education and decent job opportunities with the defence of democracy, public services and workers’ rights.

Speaking at ITUC webinar, Fight For Democracy: Young Workers Organising for the Future , Harsha Shelke from HMS India said: “Students are losing hope and trust over the education system in India. We are focusing on helping young people to know what is right and what is wrong and what they deserve.

“The higher the number, the stronger the fight. Solidarity can bring more attention and more power and better results against the things we are fighting.”

Mabel Paladines from CEOSL Ecuador added: “At this moment we have a right-wing government. Education funding has been cut short year after year. In the most recent mobilization, the brutal police killed colleagues who exercised their right to protest. But young workers in Ecuador are strategic. We have a communications strategy, we have a legal strategy with a case before the Constitutional Court, and we occupy the public space and insert ourselves in these debates.”

ITUC General Secretary Luc Triangle said: “Young people are demanding what every generation should be able to expect: quality education, decent jobs, affordable living conditions and a voice in shaping their lives. These are key elements of the New Social Contract championed by the ITUC.

“These protests are a warning that policies which deny young people opportunities and economic security are unsustainable. Trade unions stand with young people demanding change. Their fight for decent work, democracy and social justice is our fight too.”

The ITUC calls on governments to engage in genuine dialogue with young people and their representative organisations, including trade unions, and respond to their demands with concrete commitments to decent work, quality public services, social protection and democratic freedoms.

CoreWeave bond yield tops 16% as AI credit stress rises

Hacker News
www.cnbc.com
2026-11-09 22:20:06
Comments...
Original Article

Jonathan Raa | Nurphoto | Getty Images

Debt markets are sending a message to AI data center builders: we're hiking the interest rate on your credit card and may put some new curbs on your credit limit.

That analogy comes courtesy of Jefferies global head of equity strategy, Christopher Wood, who put it in a note on Friday: "The most plausible way the AI capex arms race will end is that the credit card will be taken away."

That isn't happening yet, but credit markets have been spooked by the new political landscape — seeing more hurdles to data centers under Democratic governors in key states, along with a Democratic-controlled Congress.

The poster child for debt stress is neocloud Coreweave . The yield on its 2032 bond with a 9.625% coupon has climbed above 16%. Coreweave's five-year credit default swaps spiked above 1,289 basis points on Thursday, widening above their October peak, according to Deutsche Bank. The CDS eased 8% Friday to around 1,155.

"We've had plenty of warnings from the credit space," said Jim Reid, Deutsche Bank's global head of macro and thematic research, in a note on Friday. Debt and equities are now moving more in sync, he added, "so we'll have to see if credit goes any further."

Investors are demanding more compensation to insure against default among even companies with the strongest balance sheets and credit ratings, including Nvidia , Broadcom , and Amazon.com .

CDS on Nvidia debt is up 76% in the last month. Broadcom's CDS is up 49%, while Amazon's has gained 44%. Their CDS remain low on an absolute basis; Nvidia's spread stood at roughly 139 basis points, compared with about 298 bps for Oracle and roughly 1,100 for CoreWeave. A large increase from a low starting point does not imply the same credit risk.

Still, rising CDS are a sign that markets want more protection against default among even the largest and healthiest debt issuers. And rising CDS imply higher financing costs down the line.

The market is now grappling with the prospect that at least some data center spending will be delayed or scrapped under incoming Democratic governors in Ohio, Texas, and Georgia, the three states with much of the planned capacity.

Moratoriums could impact 45% of planned capacity in the U.S. with a large amount of that in Texas, according to Goldman Sachs. Texas governor-elect Gina Hinojosa has said she's not opposed to data centers but wants a moratorium until the state legislature passes protections for communities.

None of these means AI debt financing is collapsing. Goldman tallies five AI bond deals totaling $67 billion since October 29, pushing total hyperscaler debt issuance this year to $296 billion. Goldman forecasts $440 billion of hyperscaler debt issuance next year, plus an additional $300 billion of project-level issuance across investment-grade and high-yield.

The Trump administration is vowing to support data centers. National Economic Council Director Kevin Hassett told CNBC on Friday that he expects data center growth to continue as forecast, despite Democrats' big election wins.

What comes next

The big question now is how quickly AI spending will generate enough cash for hyperscalers to keep investors comfortable with future capex plans. For the neoclouds, any sign of consolidation or retrenchment in capex could result in fewer or shorter contracts for data center compute or delays in prepayments.

Goldman analysts said hyperscalers collectively reported negative free cash flow in the third quarter as capital spending exceeded operating cash flow.

"Delayed monetization and growth in purchase commitments—which we view as additional and sizable uses of cash, separate from Capex—are the key risks to more debt issuance, subject to market conditions," according to the bank.

Peak AI debt issuance may now be closer at hand. Bank of America analysts estimates that AI-related credit issuance will rise 31% from 2026 to 2027, hitting $685 billion, including public and private debt. They then see it falling 23% to $531 billion in 2028.

As for the risk? "Downside to these forecasts exists from a potential slowdown in AI infrastructure projects on the back of the Blue Wave, which will reduce capex needs and thus debt market funding," BofA said in a note.

-CNBC's Nick Wells and Michael Bloom contributed reporting

US Supreme Court Clears Way for Trump’s Border Wall in Texas’s Big Bend

Portside
portside.org
2026-11-09 22:10:42
US Supreme Court Clears Way for Trump’s Border Wall in Texas’s Big Bend Ira Mon, 11/09/2026 - 22:10 ...
Original Article

A portion of border wall under construction in the Big Bend region, near Sierra Blanca, Texas, in September 2026. | John Locher/AP

The US supreme court has allowed Donald Trump to continue his administration’s construction of a border wall in Texas’s Big Bend region, including parts of Big Bend national park.

In an unsigned, five-page ruling , the nation’s highest court granted the Trump administration’s emergency request to suspend a lower court order that had temporarily stopped the project last month.

Liberal justice Ketanji Brown Jackson was the only member of the nine-member court to dissent from the ruling.

The justices wrote that the case’s plaintiffs, which include the Center for Biological Diversity, a Big Bend river guide and a church preservation group, “claim that construction in the Big Bend sector will diminish their ability to use and enjoy the area”.

However, they noted: “But Congress’s enactment of [immigration law] – which permits the secretary [of homeland security] to waive the requirements of environmental-protection and other conservation laws – reflects a clear preference for expeditious border construction over the very harms respondents assert.

“The government’s interest therefore outweighs any aesthetic, recreational, and environmental harm alleged by respondents,” the justices said.

The Trump administration plans to construct more than 300 miles of six-foot-tall vehicle barriers and supporting roads, relying on a 1996 law that authorizes the homeland security secretary to “waive all legal requirements”, including environmental and conservation protections, in areas designated as having high levels of illegal border crossings.

The plaintiffs argue that the project threatens wildlife and public lands, could destroy “iconic sections” of the Rio Grande’s protected river corridor, and would undermine the “carefully wrought web of laws meant to protect a vast universe of biological, historic, cultural, and other interests”.

The border wall plans have also faced bipartisan opposition from local residents, many of whom warn that construction could threaten their livelihoods and disrupt their communities.

A Customs and Border Protections map shows plans for barriers and patrol roads across Big Bend national park, including remote areas that would require extensive dynamite blasting. Construction is also planned in isolated canyons where there have been no documented unauthorized vehicle crossings and where vehicles cannot reach the US-Mexico border, the Center for Biological Diversity noted.

According to Rodney Scott, the CBP commissioner, the wall, which is being built out at about 12 miles a week, is expected to be completed by the end of Trump’s second term.

The Center for Biological Diversity condemned the supreme court’s decision, saying: “This horrific decision clears the way for contractors to bulldoze pristine desert and dynamite canyon walls before the courts have even decided whether this destruction is legal. They’re signing off on the permanent destruction of the wildest place in Texas, and the theft of a great American river from all of us.

“The destruction we’ve already seen in Big Bend unleashed a firestorm of outrage so severe that the administration was forced to pause its plans. If the bulldozers return now, public opposition will only grow … The damage done to Big Bend will be felt for future generations of Texans and Americans, and this administration will bear responsibility for the natural heritage we lose,” the center added.

CBP has awarded five contracts worth more than $6bn for border security upgrades in Big Bend, including 30-ft steel fencing, vehicle barriers and surveillance technology, which the agency calls its “smart wall”.

Following a federal judge’s ruling that temporarily halted the construction in October, CBP said at the time: “We stand by our assessment and remain confident in our legal authorities to secure the border while preserving the unique landscape of the Big Bend region.”

The Guardian has reached out to CBP for comment on the supreme court’s latest ruling.

California voters fail to pass proposed one-time tax on billionaires’ wealth

Guardian
www.theguardian.com
2026-11-09 21:54:54
Campaign over Prop 40, as measure was known, was most expensive in state history, flush with Silicon Valley dollars California billionaires won a contentious ballot measure campaign, defeating a proposed one-time tax on their wealth. The bruising campaign over Proposition 40 was the most expensive i...
Original Article

California billionaires won a contentious ballot measure campaign, defeating a proposed one-time tax on their wealth.

The bruising campaign over Proposition 40 was the most expensive in state history and witness to back-and-forth dealing from tech billionaires and democratic leaders, including Gavin Newsom, the governor, who steadfastly opposed the measure. While supporters of Prop 40 cast it as a solution to drastic healthcare cuts from Trump’s One Big Beautiful Bill Act, opponents led by prosperous billionaires mounted an influential campaign saying the billionaire tax was instead “an everyone tax”.

This result could hamper nationwide momentum on demands that billionaires pay their fair share and states enacting new laws to tax the ultra-wealthy.

Prop 40 proposed a one-time 5% tax on all individuals in California with a net worth of more than $1bn as of 1 January 2026. It was sponsored by the healthcare union SEIU-United Healthcare Workers West, and dictated that the proceeds from the tax would fund healthcare programs, along with some education and food assistance.

The state’s major unions, and progressive politicians such as Bernie Sanders, the Vermont senator, and Ro Khanna, a California congressman, backed Prop 40. But both the Democratic and Republican candidates for governor, as well as organizations such as Planned Parenthood Affiliates of California, a lobbying branch of the healthcare group, opposed it – pointing to its structure as a one-off tax that would only fund certain healthcare programs. Prop 40’s most vocal critics, however, were the state’s billionaires.

Donors to the opposition campaign were a who’s who of Silicon Valley , including executives from Google, Palantir, DoorDash, Stripe and Reddit, along with several prominent venture capitalists. The biggest donor, by far, was Sergey Brin, a Google co-founder, who contributed at least $132m to fight the tax, according to campaign finance filings.

All told, the billionaires mounted a nearly $425m battle against Prop 40, making it the most expensive opposition campaign in state history. In the first two weeks of October, spending surpassed $2.5m a day, according to the most recent campaign finance filings.

Part of the opposition campaign’s strategy was mounting two separate counter-measures on the ballot, Proposition 41 and 42. Prop 41 directly targeted the billionaire tax, while Prop 42 was a general proposal on limiting certain new taxes and would ban any taxation on billionaire wealth. If either measure received more yes votes than Prop 40, they would stop the billionaire tax from taking effect – even if it passed.

Supporters of the billionaire tax called Props 41 and 42 “poison pills”.

Australia to introduce mandatory reporting after OpenAI hack to combat artificial intelligence ‘going rogue’

Guardian
www.theguardian.com
2026-11-09 21:31:08
Government flags criminal law changes to ensure companies can’t argue in future ‘that someone didn’t know the computer was loaded’ OpenAI won’t face criminal penalties over the Medicare hack but the prime minister has flagged changes to Australia’s criminal law to crack down on future breaches by ar...
Original Article

OpenAI won’t face criminal penalties over the Medicare hack but the prime minister has flagged changes to Australia’s criminal law to crack down on future breaches by artificial intelligence companies.

Anthony Albanese on Tuesday released the recommendations of a “rapid review” into the June breach but not the findings or the report itself.

A key recommendation is for the attorney general’s department, the Australian federal police and home affairs to consider reforming the law to introduce “penalties for egregious regulatory non-compliance” and a “failure to prevent” offence which would criminalise developing an AI model that engaged in harmful conduct while failing “to take reasonable steps to prevent that harm”.

The review recommended the federal government “consider mandatory, time-bound AI safety reporting, including but not limited to misaligned behaviour or agentic cyber incidents”.

The home affairs minister, Tony Burke, told reporters “we need to make sure that our laws and our systems keep pace with the technology and also make sure that we’re able to use the technology to find vulnerabilities before others do”.

“The mandatory reporting, when artificial intelligence goes rogue, gives us a chance to be able to make sure that when this happens, the reporting occurs and occurs immediately,” Burke said in Canberra alongside the PM.

On the “concept of looking at how we can update our criminal law”, Burke said: “It should never be the case that there’s an argument that someone didn’t know the computer was loaded.”

“We need to make sure that the criminal law is up to date for how this new technology is able to act.”

Albanese on Tuesday characterised OpenAI’s breach of Services Australia as “minor” in terms of the implications for personal privacy.

“The clear indication is that no information was got that involves people’s personal details,” the prime minister told reporters in Canberra.

“All of that was confirmed essentially ... but that doesn’t mean that it wasn’t a serious issue and that in other areas there might be more serious implications.”

The review made 18 recommendations. Albanese said “we accept all of the recommendations and we’ve commenced work to implement them”.

Albanese did not directly answer a question about whether the OpenAI incident in June would have breached the proposed new laws if they were in place.

The AI agent developed by OpenAI accessed Services Australia data and three other systems in June.

The company didn’t notify the Australia government until mid-September despite becoming aware of the incident itself in August.

Guardian Australia revealed last month OpenAI used AI to help write the email to notify Australian authorities.

Albanese said the government would set up a new AI safety regulator.

Labor would consider six key obligations on AI companies, including:

  • maintaining security controls across all stages of development and deployment;

  • identify and manage serious risks associated with their models;

  • provide mandatory notification of incidents to the Australian government rapidly;

  • allow independent evaluation of their models;

  • maintain and publish safety and security frameworks to ensure good governance, risk management, and transparency;

  • and respond to updated standards and rules as technologies change.

Tabernetes: Kubernetes in your browser tab

Lobsters
jkroepke.de
2026-11-09 20:59:28
Comments...
Original Article

Tabernetes is a real Kubernetes v1.37 control plane. Not a simulator. kube-apiserver, kube-controller-manager, kube-scheduler and kubectl are the upstream Go code, compiled to WebAssembly into one binary. The only replaced part is etcd: a small in-memory implementation of the etcd v3 API. Everything runs in your browser tab. Reload the page and the cluster is gone.

A control plane without nodes is boring. Type join and start the printed docker run command. The container runs a kubelet and containerd and connects to your browser with WebRTC. Then kubectl get pods -A shows flannel, kube-proxy and CoreDNS on a real node.

And yes, it runs Doom. After a join, type doom . KubeDoom starts on the node, and every pod in the default namespace is a monster. Shoot one, and KubeDoom deletes the pod. The Deployment brings it back, of course.

Your browser tab is a node, too. The control plane runs in a shared worker, and every tab of this page joins the cluster as a node. Open the page in a second tab, and kubectl get nodes shows tab-2 . Close the first tab, and the cluster keeps running.

Type llm , and a Deployment runs a language model on the GPU of your tab, with WebLLM and WebGPU. The tab pulls the model like an image, and kubectl describe pod shows the events. Then kubectl exec -it deploy/llm -- chat talks to it. Close the tab, and the pod moves to another tab with WebGPU.

Needs WebGPU

llm needs a browser with WebGPU, for example a current Chrome or Edge. The first start downloads about 1 GB of model weights from Hugging Face. After that, they come from the browser cache.

The boot takes around 15 seconds. WebAssembly in the browser is single threaded, so the whole control plane shares one CPU core. The source is in the blog repository .

Formalizing CPython

Hacker News
broyojo.com
2026-11-09 20:56:48
Comments...
Original Article

AI agents wrote 613,318 lines of Lean that copy Python's internals line by line, tested every piece against the real Python, had a computer check every proof, and turned up 418 bug reports in Python along the way.

CPython · Objects/rangeobject.c

static unsigned longget_len_of_range(long lo, long hi, long step){    assert(step != 0);    if (step > 0 && lo < hi)        return 1UL + (hi - 1UL - lo) / step;    else if (step < 0 && lo > hi)        return 1UL + (lo - 1UL - hi) / (0UL - step);    else        return 0UL;}

Lean copy · RangeSlice/Model.lean

def getLenOfRange (lo hi step : Int) : Int :=  if step > 0 ∧ lo < hi then    uadd 1 (usub (usub (toU hi) 1) (toU lo) / toU step)  else if step < 0 ∧ lo > hi then    uadd 1 (usub (usub (toU lo) 1) (toU hi)              / usub 0 (toU step))  else 0 -- step ≠ 0 is assumed by every proof-- uadd, usub: C's unsigned arithmetic,-- which wraps around past 2^64
A function from CPython's C source (left) and the Lean copy an agent wrote of it (right). Hover over a line to see its counterpart.

TL;DR

  • We pointed Opus 5.5 at CPython, the program that runs almost all Python code, and had it rewrite its functions in Lean , a language for writing machine-checked proofs.
  • Each rewrite copies the original line by line and is tested against real Python on tens of thousands of inputs before anyone tries to prove anything about it.
  • A function only counts once a second agent, which didn't write it, checks the work and agrees it holds up. 4,071 functions have passed that check so far.
  • The result is 613,318 lines of Lean across 1,539 files, with 18,898 theorems and lemmas, all checked by Lean's proof checker on every build.
  • Along the way the proofs turned up 418 bug reports. Most are small, but about 55 can crash the interpreter or corrupt memory from ordinary Python code.

Checked and accepted Written, not yet accepted Not started

  • All of CPython 16%
  • Interpreter core 10%
  • Built-in types 35%
  • C modules 19%
  • Parser 31%
  • Grammar rules 100%
  • Standard library 9%
How much of each part of CPython 3.15.2 has been copied, tested, proved and accepted by review. Code with nothing to check, such as memory bookkeeping, is left out.

Why bother

Python doesn't have a precise written definition. There is a reference manual, but in practice "Python" means whatever CPython does, and CPython is hundreds of thousands of lines of C plus a large standard library. The manual covers normal use. It says little about the odd cases, and that's where bugs hide: an object that changes a dictionary while that dictionary is searching for it, an error thrown halfway through an update, a number one past the largest the C code was written for.

Writing a proof about a function forces you to say exactly what it does in all of those cases. You can't leave anything vague, because the proof checker won't accept it. That makes proofs a good way to find the places where the code doesn't do what everyone assumes.

We wanted to see how far this goes on a code base as large and old as CPython, and whether the results stay trustworthy when most of the work is done by AI.

How it works

Every function goes through the same four steps.

  1. Copy Rewrite the function in Lean, following the original code line by line, including its error messages and its odd corners.
  2. Test Run the copy and the real Python side by side on at least 50,000 tricky inputs. Any disagreement means the copy is wrong.
  3. Prove State something that should always be true and have the computer check the proof. If it's actually false, prove that instead.
  4. Check A second agent that didn't do the work reviews it against the original and tries to break it. Only what survives counts.

The code at the top of this page is step one for a small piece of CPython: the C function that works out how many numbers are in a range , next to its Lean copy. The copy keeps the C code's exact arithmetic, including how its numbers wrap around when they get too big. The proof about it shows that this function, the slower version CPython uses for very large numbers, and the code that chooses between them always give the same, correct count.

Proofs that prove nothing

The hardest part wasn't getting AI agents to write proofs. It was getting proofs that actually mean something.

Our first attempt asked the agents for breadth: copy every function and prove at least one thing about each. They did. Then a separate review found that fewer than half of the functions it checked held up, and in one file only 21%. The proofs were all correct. They just didn't say anything useful. For example, "if this function returns a number, the number is at least zero" is true, but a function that always crashes also satisfies it.

So the reviewer now asks one question about every proof: could a broken version of the function pass it too?

Two true statements about the same function. The first one lets every broken version through, so a function whose only proof looks like it doesn't count.

Fixing a weak proof usually means going back and making the copy more realistic, for example letting a user's code throw an error in the middle of a function. The charts below show how that went for ten files. Each point is one round of review. The lines sometimes go down: when a reviewer finds that an accepted proof is wrong about real Python, everything that relied on it is taken back out.

Functions accepted

100% 0% review 1 review 5 review 1: 0 of 142 accepted review 2: 2 of 142 accepted review 3: 41 of 142 accepted review 4: 130 of 142 accepted review 5: 135 of 142 accepted
Objects/typeobject.c 135 of 142 accepted · 5 reviews
100% 0% review 1 review 5 review 1: 1 of 56 accepted review 2: 18 of 56 accepted review 3: 54 of 56 accepted review 4: 55 of 56 accepted review 5: 56 of 56 accepted
Objects/genobject.c 56 of 56 accepted · 5 reviews
100% 0% review 1 review 7 review 1: 31 of 46 accepted review 2: 42 of 46 accepted review 3: 44 of 46 accepted review 4: 45 of 46 accepted review 5: 44 of 46 accepted review 6: 45 of 46 accepted review 7: 46 of 46 accepted
Objects/setobject.c 46 of 46 accepted · 7 reviews
100% 0% review 1 review 5 review 1: 31 of 48 accepted review 2: 39 of 48 accepted review 3: 42 of 48 accepted review 4: 43 of 48 accepted review 5: 45 of 48 accepted
Modules/_json.c 45 of 48 accepted · 5 reviews
100% 0% review 1 review 9 review 1: 21 of 39 accepted review 2: 30 of 39 accepted review 3: 35 of 39 accepted review 4: 34 of 39 accepted review 5: 33 of 39 accepted review 6: 34 of 39 accepted review 7: 29 of 39 accepted review 8: 36 of 39 accepted review 9: 37 of 39 accepted
Lib/enum.py 37 of 39 accepted · 9 reviews
100% 0% review 1 review 3 review 1: 11 of 38 accepted review 2: 31 of 38 accepted review 3: 37 of 38 accepted
Lib/random.py 37 of 38 accepted · 3 reviews
100% 0% review 1 review 2 review 1: 9 of 43 accepted review 2: 41 of 43 accepted
Objects/abstract.c 41 of 43 accepted · 2 reviews
100% 0% review 1 review 2 review 1: 19 of 33 accepted review 2: 33 of 33 accepted
Objects/rangeobject.c 33 of 33 accepted · 2 reviews
100% 0% review 1 review 2 review 1: 14 of 33 accepted review 2: 31 of 33 accepted
Lib/pickletools.py 31 of 33 accepted · 2 reviews
100% 0% review 1 review 2 review 1: 29 of 40 accepted review 2: 35 of 40 accepted
Modules/binascii.c 35 of 40 accepted · 2 reviews

Rounds of review →

Share of each file's reviewed functions accepted after each round of review, taken from the project's history. Each point is one review; the scale is the same in every chart, from 0% to all of the functions reviewed in that file. Accepted functions include ones the reviewer confirmed have nothing to check, such as memory bookkeeping.

When a correct proof is wrong anyway

A checked proof guarantees that a statement follows from the copy. It doesn't guarantee the copy matches real Python, and testing only covers the inputs you thought to try. So every accepted statement is also run against real Python. That caught several proofs that were valid and still wrong.

The 16-terabyte string

The copy of Python's fast JSON encoder assumed memory requests always succeed. So it "proved" the encoder could build its indentation strings for any nesting depth, including one that needs 16 terabytes of memory. Real Python runs out of memory. The fixed copy now treats every memory request as something that can fail.

Nine extra steps, just once

A proof said Python's pickle module never goes deeper than a certain number of nested calls. That turned out true except in a brand-new Python process. There, the first time it encodes a string, it quietly loads a text codec, and that load uses nine more nested calls. Our tests never saw it, because the test harness had already loaded the codec.

Error types have families

In Python, catching a TypeError also catches any more specific error built on top of it. Three separate copies checked an error's exact name instead. All three had proofs that a custom error type could break.

Memory that comes back

The copy of Python's set assumed that once memory is freed, the same address never comes back. Real memory allocators reuse addresses all the time. CPython uses a "did the address change?" check to notice when user code has swapped out the set's internals. With reuse, that check can be fooled. Fixing the copy turned an accepted proof into a real memory bug, now one of our bug reports.

What we found

When a proof fails because Python itself is wrong, and not the copy, we write it up as a bug report. Each report includes a short script that shows the bug on Python 3.15.2 (for most, also on the development version), a search for duplicates already reported, and an honest rating of how much it matters.

  • C and Python versions disagree 129
  • Other 122
  • Wrong result 56
  • Crash 28
  • Memory corruption 27
  • Doesn't match the docs 26
  • Wrong error or message 18
  • Missing input check 12
418 bug reports by type. "C and Python versions disagree" means a module has two implementations, a fast one in C and a backup in Python, and they give different answers to the same call.

Most are small: an error message that's wrong, an edge case that behaves differently from the documentation, two versions of a function that disagree. About 55 are more serious and can crash Python or corrupt its memory using nothing but normal Python code, usually by having user code change a container while C code is in the middle of using it. Python doesn't treat running hostile Python code as a security boundary, so these are ordinary bugs. The ones not already on CPython's tracker are being reported to the project, starting with this post. Six small examples of different kinds:

Crash

A dictionary call that crashes Python

Calling setdefault on an object's attribute dictionary with a StrEnum key crashes the interpreter, if another object of the same class has that attribute and this one doesn't.

class Key(StrEnum):
    NAME = "name"
class User: pass
a = User(); a.name = "ada"
b = User(); b.age = 36
vars(b).setdefault(Key.NAME, "anon")
# Segmentation fault

Memory corruption

An XML edit that corrupts memory

Assigning to a backwards slice of an ElementTree element should insert, as it does for a list. Instead it duplicates one child without taking a reference and loses another.

e = ET.Element("root")
e[:] = [ET.Element(f"a{i}") for i in range(7)]
e[5:2] = [ET.Element("X")]
[c.tag for c in e]
# 'a2' appears twice, 'a4' is gone

Wrong error

An email header that breaks the parser

A Message-ID with a space inside square brackets makes Python's email parser fail with an internal error. The header comes from whoever sent the email.

msg = email.message_from_string(
    "Message-ID: <a@[ x]>\n\nhi\n",
    policy=policy.default)
msg["Message-ID"]
# UnboundLocalError

Silently wrong result

Base32 padding that depends on position

New in Python 3.15, the base32 decoder can ignore chosen characters. If = is one of them, where it appears still changes the result.

a2b_base32(b"AAAAAAA",  ignorechars=b"=")
# Error: Incorrect padding
a2b_base32(b"AAAA=AAA", ignorechars=b"=")
# b'\x00\x00\x00\x00'

Missing error

An enum error that disappears

Giving an enum value to a second member should raise an error. If the class's __repr__ is broken, the error is swallowed and the call quietly does nothing.

class W(Enum):
    A = 1; B = 2
    def __repr__(self): return 5
W.B._add_value_alias_(3)
W.A._add_value_alias_(3)  # returns None

C and Python disagree

Two picklers, two limits

Python has a C pickler and a pure-Python one. They give up at different nesting depths. This difference was first reported in 2008 and is still open.

v = []
for _ in range(400): v = [v]
pickle.dumps(v, 5)    # works
pickle._dumps(v, 5)   # RecursionError

Every report, with its script, is in the repository .

Do this for your own project

None of this is specific to Python. It works for anything with source code you can read and a working version you can run: another language, a library, a file format, a compiler. What made the difference for us:

  1. Pick one exact version and stick to it. Every copy points at specific lines in that version.
  2. List everything first. Count progress against the full list, so nothing gets skipped quietly.
  3. Copy the code, not the documentation. A copy written from the docs agrees with the docs, and the bugs are where the code and the docs disagree.
  4. Let user code misbehave. Model callbacks that throw errors or change things mid-operation. That's where the worst bugs were.
  5. Test before you prove. Proving things about a wrong copy wastes time.
  6. When something is false, keep the counterexample. Don't water the statement down until it becomes provable.
  7. Check proved statements against the real thing. A valid proof about a wrong copy is the most misleading result you can get.
  8. Count only what an independent reviewer accepts, and have that reviewer ask whether a broken version would pass.

The instructions our agents worked from are in the repository and meant to be reused: AGENTS.md for the agents doing the work, REVIEW_PROMPT.md for the reviewers, and the full list of functions with their status in coverage/methods .

Related work

The closest project is julia-in-lean , which did this for the Julia language and directly inspired this one 1 . It modelled Julia's standard library in Lean, tested the models against Julia, recorded about 400 bugs and filed 75. Its finding that 128 of 130 quick proofs had quietly assumed away the hard case shaped our review rules. A recent paper models NVIDIA's PTX GPU instruction set in Lean to prove GPU kernels correct 2 , building on earlier formal work on PTX's memory model 3 .

For Python specifically, λπ 4 and a K framework semantics of Python 3.3 5 described the language mathematically; this project copies CPython's actual code instead. Similar efforts exist for JavaScript 6 , 7 and WebAssembly 8 , and CompCert 9 and seL4 10 remain the high bar for fully verified software. Comparing two implementations on the same inputs, the testing half of this project, goes back decades 11 , 12 .

Where it stands

The project started on 29 October 2026. 4,071 of the 26,004 functions worth checking (15.7%) have been copied, tested, proved and accepted by review. The Lean code is 613,318 lines in 1,539 files, containing 18,898 theorems and lemmas; 3,834 of the top-level properties are proved and 588 are proved false with a counterexample. Most of Python is still ahead, especially the large part of the standard library written in Python itself. Multithreading is out of scope for now. In these 57 files, every function copied so far has passed review. The 30 with the most accepted functions:

  • Python/bytecodes.c 310
  • Grammar/python.gram 278
  • Lib/collections/__init__.py 184
  • Lib/_pydecimal.py 160
  • Lib/_pydatetime.py 150
  • Modules/_struct.c 122
  • Objects/longobject.c 119
  • Objects/listobject.c 114
  • Objects/memoryobject.c 107
  • Objects/dictobject.c 104
  • Objects/bytesobject.c 100
  • Objects/exceptions.c 97
  • Objects/unicodeobject.c 94
  • Objects/bytearrayobject.c 93
  • Modules/arraymodule.c 84
  • Lib/_collections_abc.py 81
  • Modules/_operator.c 73
  • Modules/itertoolsmodule.c 72
  • Modules/_collectionsmodule.c 64
  • Python/codecs.c 61
  • Lib/operator.py 59
  • Lib/_pyio.py 58
  • Objects/typeobject.c 57
  • Lib/weakref.py 54
  • Objects/genobject.c 46
  • Lib/urllib/parse.py 46
  • Parser/action_helpers.c 43
  • Modules/_zoneinfo.c 43
  • Objects/floatobject.c 38
  • Objects/tupleobject.c 37

The project is open, and help is welcome. Most of CPython is still unmodelled: pick a file whose functions are still marked todo in coverage/methods , follow AGENTS.md , and send a pull request. Independent reviews of existing work count as much as new models. See CONTRIBUTING.md .

Cite

@misc{andrews2026formalizing,
  author       = {Andrews, David and Zhang, Chao},
  title        = {Formalizing {CPython}: A Lean Model of {CPython} 3.15.2},
  year         = {2026},
  howpublished = {\url{https://broyojo.com/python-formalization/}},
  note         = {Code: \url{https://github.com/Broyojo/python-formalization}}
}

References

  1. M. Cranmer. Formalizing Julia in Lean (and finding 400+ bugs in Base) . Julia Discourse, 2026. Code: MilesCranmer/julia-in-lean .
  2. L. Koska, T. Koska, B. Koska. Formalizing PTX in Lean to Prove GPU Kernel Correctness . arXiv:2611.04447, 2026.
  3. D. Lustig, S. Sahasrabuddhe, O. Giroux. A Formal Analysis of the NVIDIA PTX Memory Consistency Model . ASPLOS 2019.
  4. J. G. Politz, A. Martinez, M. Milano, S. Warren, D. Patterson, J. Li, A. Chitipothu, S. Krishnamurthi. Python: The Full Monty. A Tested Semantics for the Python Programming Language . OOPSLA 2013.
  5. D. Guth. A Formal Semantics of Python 3.3 . M.S. thesis, University of Illinois at Urbana-Champaign, 2013. Code: runtimeverification/python-semantics .
  6. M. Bodin, A. Charguéraud, D. Filaretti, P. Gardner, S. Maffeis, D. Naudziuniene, A. Schmitt, G. Smith. A Trusted Mechanised JavaScript Specification . POPL 2014.
  7. D. Park, A. Ştefănescu, G. Roşu. KJS: A Complete Formal Semantics of JavaScript . PLDI 2015.
  8. C. Watt. Mechanising and Verifying the WebAssembly Specification . CPP 2018.
  9. X. Leroy. Formal Verification of a Realistic Compiler . Communications of the ACM 52(7), 2009.
  10. G. Klein, K. Elphinstone, G. Heiser, J. Andronick, et al. seL4: Formal Verification of an OS Kernel . SOSP 2009.
  11. W. M. McKeeman. Differential Testing for Software. Digital Technical Journal 10(1):100–107, 1998.
  12. X. Yang, Y. Chen, E. Eide, J. Regehr. Finding and Understanding Bugs in C Compilers . PLDI 2011.

This Week in People’s History, Nov 11–17, 2026

Portside
portside.org
2026-11-09 20:45:03
This Week in People’s History, Nov 11–17, 2026 Jonathan Bennett Mon, 11/09/2026 - 20:45 ...
Original Article

Ham-Handed Police Action with Overtones of Religious Intolerance Helps Turn a Little-Known Cause into a Mainstream Political and Civil Liberties Issue

ONE HUNDRED AND FIVE YEARS YEARS AGO, ON NOVEMBER 13, 1921 , a squad of New York City police inadvertently created two storms blowing in opposite directions – one was a windfall of excellent publicity for legalized access to information about birth control, and the other was a storm of very bad publicity for the NYPD.

The result was six months worth of major news stories about the brand-new American Birth Control League, which generated a tsunami of political and financial support leading to the League’s incorporation “to conduct a campaign of education for the purpose of repealing, by lawful means, existing State and Federal statutes hostile to information and access to birth control.”

In a very short time a movement that had been envisioned by radical feminist Margaret Sanger went from being extremely controversial to being widely supported. Two decades later, the League changed its name to Planned Parenthood.

November 13, 1921, was the third and last day of the Manhattan conference where the League was founded. An event that had for two days received a minimum of public attention was suddenly front-page news because the police, without warning, decided to prevent the day’s meeting from starting and, when Sanger and another of the meeting’s leaders refused, arrest them for disorderly conduct.

When the police forcibly removed Sanger and Mary Winsor, a member of the League’s National Council, from the stage of Town Hall in Manhattan’s Times Square, a mob scene unfolded, as more than a thousand conference goers were herded out of the building onto West 43rd Street. As Sanger later said, getting arrested unexpectedly for attempting to preside over a peaceful meeting was “unpleasant, to say the least,” but it also uncovered a mother lode of better publicity than money could buy.

Two days after the arrests took place, almost all of New York City’s many newspapers played up the story that the “raid” had been ordered by New York’s Catholic Archbishop. The report that the police had acted at the Archbishop’s behest made it impossible for the Mayor to avoid ordering an investigation.

Hardly had the mayoral investigation begun than a judge dismissed the disorderly conduct charges against Sanger and Winsor “for a complete lack of evidence.”

But the dismissal of the charges didn’t answer the more important question of what had motivated the police, so the investigation continued. In the attempt to get to the bottom of that, investigators required the testimony of one of the League’s wealthy and socially prominent supporters, Juliet Rublee, who was married to Washington lawyer and presidential advisor George Rublee.

On December 2, Juliet Rublee, who was a close friend and financial supporter of Sanger, testified about the section of New York’s penal code concerning the dissemination of obscene material or information, which the police claimed to have been enforcing when they padlocked Town Hall. When she finished quoting the law and saying that she disagreed with it, police in the room immediately arrested her for violating the law she had just criticized. The result was another mob scene receiving front-page coverage.

Several days later the charge against Rublee was dismissed for lack of evidence. After two months of obfuscatory hemming and hawing by the police, they admitted that all three of the arrests ought not to have occurred. The Archbishop’s role in the affair, or lack of it, was never explicated.

Three months later, when the American Birth Control League acquired the status of a New York State corporation, it was well on its way to being the leading organization advocating for the reproductive rights of women in the U.S. https://sanger.hosting.nyu.edu/articles/town_hall_raid/

For more People’s History, visit
https://www.facebook.com/jonathan.bennett.7771

Trump backs embattled Hegseth and Jensen Huang and says FBI looking into spy allegations – video

Guardian
www.theguardian.com
2026-11-09 20:40:32
Donald Trump defended defense secretary Pete Hegseth, who is facing an impeachment resolution from Republican senator Thomas Massie, saying Hegseth 'won two wars'. The president, who said he had spoken to Nvidia CEO Jensen Huang, said he was 'amazed' by claims Huang conducted an affair with an alle...
Original Article

Donald Trump defended defense secretary Pete Hegseth, who is facing an impeachment resolution from Republican senator Thomas Massie, saying Hegseth 'won two wars'. The president, who said he had spoken to Nvidia CEO Jensen Huang, said he was 'amazed' by claims Huang conducted an affair with an alleged Chinese spy, and that the FBI was now looking into the issue

Qantas to cut 850 Australian jobs and outsource work to India under AI-driven overhaul

Guardian
www.theguardian.com
2026-11-09 20:34:47
Australian carrier announces agreement with Accenture amid ‘unprecedented’ technological disruption, CEO Vanessa Hudson saysGet our breaking news email, free app or daily news podcastQantas is preparing to cut 850 local jobs and outsource work offshore under an AI-driven overhaul, marking a growing ...
Original Article

Qantas is preparing to cut 850 local jobs and outsource work offshore under an AI-driven overhaul, marking a growing wave of disruption to the Australian workforce.

The changes represent the third major corporate layoff plan announced in Australia in three weeks, after restructuring moves flagged by the design company Canva and National Australia Bank .

Qantas said on Tuesday it had signed a multi-year agreement with the professional services firm Accenture to “modernise its back-end systems, processes and data, as it steps up investment in technology and AI”.

Some of the services will be transferred to Accenture’s large India-based team.

The Qantas chief executive, Vanessa Hudson, said the airline would consult with affected staff and unions before final decisions were made, with the first changes to take effect by midway through next year.

“The scale and speed of change in this space is unprecedented and unlike anything businesses have seen in generations,” Hudson said.

Sign up for the Breaking News Australia email

“We know this will be difficult news for some of our people and this decision is not a reflection of their contribution or commitment.”

The initial cuts will target finance, procurement, human resources and marketing staff. Qantas has about 32,000 employees, according to its most recent annual report.

The changes have drawn a strong response from unions that have previously battled Qantas over controversial outsourcing decisions .

skip past newsletter promotion

The Australian Services Union said Qantas needed to explain itself after earlier promising it had no plans to move any jobs offshore.

“AI is having a huge impact on workers across the country, but the cost of technology change should not be borne by the workers who have kept the airline running for years,” assistant national secretary Scott Cowen said.

“Sending more jobs overseas is not in the spirit of Australia.”

The restructuring comes at a difficult time for Australian workers, with living costs surging and the unemployment rate reaching its highest level in nearly five years .

A subdued economy, made worse by elevated oil prices stemming from the Iran conflict, is also prompting companies to cut costs.

Across just three companies – NAB with 2,500 roles, Canva with 1,200, and now Qantas with 850 – about 4,550 corporate jobs have been targeted for cuts, relocations or restructuring in the past month.

While Qantas has been grappling with rising jet fuel prices, the costs have been partially offset by ticket sales to new customers who switched to the airline after cancelling flights at those with Middle East stopovers.

Qantas said in a market update late last week that while customer demand was proving resilient, it would continue to adjust fares and capacity in response to fuel costs.

Teenager who planned terror attack in Sydney tells court he was radicalised online and used AI to strategise

Guardian
www.theguardian.com
2026-11-09 20:09:19
Boy says he was first exposed to extremist material on TikTok, turned to Telegram and YouTube for bomb-making instructions, and used ChatGPT to devise his plansGet our breaking news email, free app or daily news podcastA teenager who admitted to planning a terrorist attack in Sydney in 2024 has told...
Original Article

A teenager who admitted to planning a terrorist attack in Sydney in 2024 has told the court he was radicalised online after first seeing extremist material on TikTok and used ChatGPT to form his plans.

The 16-year-old, known under the pseudonym as RK due to his age, pleaded guilty to acts in preparation for, or planning, a terrorist act. In a sentencing ruling on Monday, he avoided jail time, with the New South Wales supreme court ordering him into a three-year community corrections order.

RK had just turned 14 when the offending occurred in 2024. He told the court he was first exposed to extremist material on TikTok .

“Initially, he was looking at historical content that may have had a political theme. He saw videos about the crusaders and ‘their empires’,” Justice Stephen Campbell said in the decision.

“He progressed to videos about the events of September 11, 2001 and the resulting war on terror (and the wars after that).”

Sign up for the Breaking News Australia email

Campbell said RK then progressed to watching religious-themed videos, which “led him to other content of increasing violence” and then talking about these subjects with people on the internet.

RK told the court he was trying to impress these people, and became focused on the Sydney Opera House as a potential location for an act of violence. He said he had become radicalised and “brainwashed by propaganda” when he began looking at bomb-making videos on YouTube, but Campbell said he had no concrete plans for committing a terrorist act, and had not obtained any material for bomb-making.

RK used Telegram , seeking instructions on making a pressure cooker bomb, and attempted to contact the surviving Boston marathon bomber, Dzhokhar Tsarnaev, by email.

The teenager used ChatGPT to obtain information about the bomber, and asked the AI chatbot if inmates had access to news.

“Exhibiting what appears to me to be a complete lack of understanding of the import of his conduct, the young person emailed the prison, using a publicly available email address, asking whether he could email Tsarnaev,” Campbell said in his judgment, adding RK never ultimately made contact with the bomber.

RK asked ChatGPT about security arrangements at the Sydney Opera House, where the Sydney marathon finishes, and where terrorists were imprisoned in NSW. He watched videos about the Sydney Opera House on YouTube , and researched gay nightclubs and other places where “infidels” gather.

skip past newsletter promotion

On Telegram, RK sent Islamic State videos to others to “seek validation” because he thought it was “cool”, Campbell said.

OpenAI, Telegram and YouTube were approached for comment. TikTok declined to comment.

The teenager has since expressed remorse for his actions, and Campbell said he had underwent six sessions of religious and ethical training from a Muslim cleric.

“I am satisfied that he has genuinely renounced his adherence to Islamic violent extremism, which in any event was incipient and hesitant during the short period of his offending,” Campbell said. “I fully accept he was radicalised to a degree, but that the process of deradicalisation is well advanced.”

The Asio deputy director general for intelligence service delivery, Claire McGuinness, told a parliamentary inquiry last month that detecting and disrupting online youth radicalisation had become very challenging for the security agency.

“It usually begins quietly. A young person is scrolling through Instagram or TikTok or a similar platform,” she said. “They encounter something that catches their attention, perhaps a political meme or a religiously conservative video.

“At first it isn’t terrorism – it’s just fringe; it is extremist-adjacent. But, the moment they engage, the algorithm takes over and so the feed tightens, the content shifts from conservative to radical, and from radical to security-relevant.”

From there, teenagers often move to platforms such as Discord or Telegram where “dark humour and the edgy memes” groom teens to accept progressively more extreme content, McGuinness said, before passive consumption turns to active engagement in researching methods.

Blunt Banhammer Blocks Basic Bots Ballistically

Lobsters
shkspr.mobi
2026-11-09 19:48:20
Comments...
Original Article

I cut bot traffic to my site by over 80% with a simple trap.

Last month, my hobby website OpenBenches.org transferred more than 2.5TB of data to visitors. As much as I'd like to think the site is enormously popular, it looks like it is just AI bots endlessly crawling the data and slurping up the images.

So I've built B 6 to be an indiscriminate tool to eradicate these unwanted parasites.

It is very loosely inspired by Jeff Starr's Blackhole , but works even on sites with heavy caching.

Here's the high level description of how it works.

  • Create a directory like /honeypot/ on your site
  • Put some code in index.php within the directory
  • Add the honeypot as an explicit "Disallow" in robots.txt
  • Include a hidden link to to the honeypot on every page of your site
  • If something accesses that page, write its IP address to your .htaccess
  • The .htaccess bans the IP address from ever accessing your site again.

This blog post shows you how you can build this yourself and discusses some of the problems it might cause.

Bad Robots!

The file robots.txt lives at the root of your website. It contains a list of instructions to automated web crawlers. Respectful bots will read it and refuse to look at specific parts of your site.

Add these two lines to it:

Copied to 📋
 User-agent: *
Disallow: /honeypot/

That says bots shouldn't visit any page in the honeypot directory.

Bots generally check for updates every 24 hours, so either wait a day or manually submit it to major crawlers.

.htaccess

The .htaccess file contains a list of instructions for how your server should process requests.

Find the bit of your .htaccess file which looks like this:

Copied to 📋
 <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

Edit it to look like this:

Copied to 📋
 <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /

### BLOCKED IPs
    #   TEST-NET-1
    RewriteCond %{REMOTE_ADDR} "=192.0.2.1"
    RewriteRule ^ - [R=402,L]
### /BLOCKED IPs

It is important that these rules come before any other rewrite rules.

Change the end of this IfModule to look like:

Copied to 📋
 </IfModule>

ErrorDocument 402 "Payment Required - Access Denied."

If an IP address is in the blocked IP list, the server will send an error code and a readable message. You can add whatever plain text you like here.

Wipe Them All Out

Inside the honeypot directory, create a file called index.php (or whatever you like). When this page is visited, it grabs the visitor's IP address and the name of its User Agent. It then places them in the BLOCKED IPs section.

Copied PHP to 📋
 PHP//  What's their IP?
$IP = get_client_ip();

//  User Agent
$UA = isset( $_SERVER["HTTP_USER_AGENT"] ) ? $_SERVER["HTTP_USER_AGENT"] : "";

//  Get the existing .htaccess file.
$htaccess_file = "../.htaccess";
$htaccess = file_get_contents( $htaccess_file );

//  Split by newline.
$htaccess_lines = explode( separator: "\n", string: $htaccess );

//  Where's our start block?
$start = "###   BLOCKED IPs";
$end   = "###   /BLOCKED IPs";

//  Exit if the .htaccess doesn't have the block.
if ( !in_array( needle: $start, haystack: $htaccess_lines ) ) { die(); }

//  This is where to start from.
$start_block = array_search( needle: $start, haystack: $htaccess_lines );

//  Add the line after the start block.
//  Include a date.
$htaccess_lines[ $start_block ] = $start . "\n" . 
    "\t#\t" . date( "c" ) . "\t{$UA}\n" . 
    "\tRewriteCond %{REMOTE_ADDR} \"={$IP}\" [OR]";

//  Turn the array back to a string.
$newHtaccess = implode( separator: "\n", array: $htaccess_lines );

//  Save the new .htaccess file.
file_put_contents( filename: $htaccess_file, data: $newHtaccess );

function get_client_ip():string
{
    //  Adapted from https://github.com/ibericode/koko-analytics/blob/main/src/Resources/functions/collect.php

    //  X-Forwarded-For sometimes contains a comma-separated list of IP addresses
    //  @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
    $ips = empty( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ?
        [] :
        \array_map( "trim", \explode( ",", $_SERVER["HTTP_X_FORWARDED_FOR"] ) );

    //  Always add REMOTE_ADDR and HTTP_CLIENT_IP to list of ip addresses, if set
    foreach ( ["REMOTE_ADDR", "HTTP_CLIENT_IP"] as $key ) {
        if ( !empty( $_SERVER[$key] ) ) {
            $ips[] = $_SERVER[$key];
        }
    }

    //  Return first valid IP address from list
    foreach ( $ips as $ip ) {
        if ( \filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) ) {
            return $ip;
        }
    }

    return "";
}

Setting The Trap

Web crawlers look at a page, find every link on it, then visit those links. So we need to put a link to the honeypot on every page - but in such a way that normal users will not find it or click it.

This adds a link, removes it from the accessibility tree, and gives it impossible to click text (a zero width joiner).

Copied HTML to 📋
 HTML<a id="honey" aria-hidden="true" href="/honeypot/index.php">‍</a>

This CSS hides it from normal viewers and removes the mouse cursor from view.

Copied CSS to 📋
 CSS#honey {
    display: none !important;
    cursor:  none !important;
}

Problems This Might Cause

It's unlikely that a human will find the link, click on it, and be banned. But if they do, consider put a message in the blocking text telling them how they can get unblocked.

Some useful bots ignore robots.txt. If they identify themselves via a User-Agent string (and they should) you can manually remove them from .htaccess. You could also code in an allow list exemption for them. But, of course, many bad bots lie about who they really are.

Conversely, not all bots crawl every link. This won't catch bots which respect robots.txt but are nevertheless problematic.

If you have thousands of different bots blocked, the performance of your server might slow down while .htaccess is parsed. There's weak anecdotal evidence that it adds a slight overhead. But, personally, I don't think that's worth worrying about.

Bots often use hijacked IP addresses. After the bot has moved, an innocent party might be blocked from your site. Each block has a timestamp associated with it. You could periodically unblock older entries.

Bots rotate through hundreds of different IP addresses. So the same bot might get blocked multiple times.

Bots might see the CSS marks the link as hidden and refuse to follow it. Instead of CSS, you could use invisible spaces or other characters which would be hard for a human to see but appear visible to a bot.

Similarly, a smart bot might refuse to visit a path called /honeypot/ so choose a better name for it. A smarter bot would see that touching the honeypot leads to a ban - so perhaps a selection of traps are needed?

As is implied in the name, this is a blunt banhammer. It doesn't give a warning, nor does it look at User-Agent, Country, or any other signal. You touch the honeypot and you receive an instaban. No warning and no automated way to appeal.

Alternatives

There are alternative ways to do this. Some bots don't send language headers, some use older versions of HTTP, they often have severely outdated User Agent strings. Those are all reasonable ways to block something which is probably a bot. There are likely to be a few false positives though.

But B 6 has no false positives. A normal user can't follow the link to the trap and a well-behaved bot won't follow the link.

Things like Anubis require a lot of work to set up and annoy normal users. B 6 doesn't require a specific hosting environment and is never shown to normal users.

It Works!

Since running B 6 a week ago, I've blocked over 400 IP addresses and seen a significant fall in traffic. I've not had any complaints yet. Sadly, none of the bots have paid to remove the paywall!

Drop from 216GB to 26GB per day.

At peak, my site was seeing 216GB of data transfer per day. That's now dropped to around 25GB.

I don't claim this is the most sophisticated bot blocker in existence - but I enjoyed building it myself. I'll probably add something to records the geolocation of the IP and maybe remove any block older than a certain age.

If you'd like to use it or improve this code, I'd be grateful if you treated it as AGPL v3 licensed .

The Open and Shut Impeachment Case Against Tod Blanche

Portside
portside.org
2026-11-09 19:47:46
The Open and Shut Impeachment Case Against Tod Blanche barry Mon, 11/09/2026 - 19:47 ...
Original Article

On Saturday, Donald Trump ordered the Justice Department to investigate members of Congress for the offense of proposing to impeach his attorney general. He branded the talk “extortion at the highest level” and announced, “I am ordering the Department of Justice to look into this criminal act, immediately!”

We can expect the department to fall into line dutifully, because Attorney General Todd Blanche has already demonstrated his eagerness to convert federal prosecution into a weapon against the president’s enemies, wielded without regard to the facts, the law, or the commission of any crime. He said as much yet again Sunday in an interview with CNN’s Dana Bash that should be played back to him at an impeachment proceeding.

That practice stands atop the list of Trump 2.0’s manifold abuses of democracy and departures from constitutionalism and the rule of law. It follows that Blanche stands atop the list of Trump officials whom the incoming Democrats must aim to remove from office.

It is high time to impeach Todd Blanche.

With the House gavel in January comes a choice of priorities. This administration has repeatedly subverted the constitutional structure of checks and balances; bungled foreign policy, including through illegal misadventures, in ways that have profoundly undermined the national interest; and enriched the president and his allies at public expense.

These grievous offenses—all departures from the essential Article 2 command that the president “take Care that the Laws be faithfully executed”—require staunch investigation, oversight, and remedy. But the first order of business is to reaffirm the rule of law and democracy, and to strike back against the most virulent attacks on them.

The essential distinction that should lead Representative Jamie Raskin, the incoming House Judiciary Committee chair, and the committee’s new majority to vote on articles of impeachment against Blanche is between abuses of executive power on the one hand and the embrace of authoritarianism and the negation of the constitutional rule of law on the other.

For the last 20 months, the Justice Department hasn’t been flirting with authoritarianism. It has been an anti-Democratic stronghold, embracing practices that don’t happen in a democracy, and that in fact define authoritarian rule.

Democratic Representative Hank Johnson of Georgia has stated the umbrella case for impeaching and removing Blanche. The menu of possible articles runs long: illegal firings, including Maurene Comey’s, as a federal judge ruled last week; an early push, with his deputy Emil Bove—now, incredibly, a federal appellate judge—to ship immigrants out of the country whether or not the law allowed it; a sit-down with Ghislaine Maxwell not long before she landed in a minimum security camp.

Yet if I were drafting the articles, I’d opt to set aside, for the time being, all those horrendous abuses in the sycophantic service of Donald Trump and advance a single count: that Blanche has wielded the power of federal prosecution to punish the president’s enemies.

As Vladimir Putin’s persecution of Alexei Navalny shows, a single instance tells you everything about a regime, and a single instance would justify impeachment and removal. With Blanche, we have a long and growing list: Jim Comey, three times over. Letitia James. Cassidy Hutchinson. Six Democratic lawmakers, for making a video about illegal orders.

A one-count article of impeachment reduces the overall firepower of the case against Blanche, but it trains Congress’s and the nation’s focus on reprisal prosecutions, the Trump 2.0 practice that is the singular paradigm of authoritarianism. Three reasons make the reprisal count the right one.

First, reprisal prosecutions don’t merely abuse power; they violate the Constitution in and of themselves. The Supreme Court has called punishing someone for doing what the law allows “a due process violation of the most basic sort.” When the charges are brought in retaliation for protected speech, as with Comey or the six Democratic lawmakers, the prosecution violates the First Amendment as well.

Second, reprisal prosecutions are designed to cow dissent more broadly. Blanche’s prominent targets—a former FBI director, a witness who testified to Congress, lawmakers who reminded troops of their duty—cast a broad shadow over other political critics. Along with intimidating political adversaries, that is the point. Each case warns every potential critic, witness, and whistleblower to keep quiet or face criminal prosecution. And because a reprisal prosecution does its damage before any judge rules, and prosecutors enjoy absolute immunity from damages, the courts can’t undo it. Impeachment is the one remedy that reaches the official responsible.

Third, and most important, prosecuting the leader’s enemies on manufactured or nonexistent charges is the bright line between democracy and autocracy. It’s the unmistakable mark of authoritarianism.

Compare Blanche with Defense Secretary Pete Hegseth, whose impeachment GOP Representative Thomas Massie may force to a vote as early as this week. Massie’s eight articles charge Hegseth with waging war in Iran in defiance of the War Powers Resolution, with a strike that killed more than 150 people at a girls’ school in Minab, and with boat strikes in our hemisphere that have killed at least 221 people without a shred of process.

It’s an odious list that advances a strong case for impeachment. But it consists largely of abuses of democratic rule, not negation of it. Democracies aren’t immune from transgressing the law of war, and there is by now an extended history of military engagements that Congress never authorized. The core case against Hegseth is that he’s a flaming asshole—a terrible, arrogant secretary of defense whose tenure has sharply undermined the national interest.

The exception proves the rule. Massie’s sixth article charges Hegseth with threatening Senator Mark Kelly with prosecution for telling service members they may refuse illegal orders. Of the eight counts, it’s the only one that smells of Moscow. And Blanche’s Justice Department took the next step: It tried to indict Kelly and five colleagues over that same video.

Now picture a Senate trial of Blanche on a single count of reprisal prosecutions. The charge is clean. There’s no obscuring or evading it.

What might Blanche possibly say in his own defense? That he never undertook reprisal prosecutions? Fat chance: He not only saluted and discharged the orders; he defended them publicly as a legitimate exercise of Trump’s Article II powers.

That Trump told him to? That’s the defense Lt. William Calley offered for My Lai during the Vietnam era, and the military courts rejected it: An order to do something plainly unlawful binds no one. Sorry, but Blanche isn’t a 24-year-old lieutenant in a jungle. He’s the attorney general, who swore to support and defend the Constitution, not to blindly obey the president.

That he did it, but it was Trump’s right to order it? Blanche has tried that one before. He famously declined to pledge independence from the White House, saying “no attorney general should ever pledge that.”

In fact, no attorney general should ever pledge to follow a president blindly into the dark corner of reprisal prosecutions. To acquit Blanche on that ground, the Senate would have to ratify the authoritarian detour he engineered.

The American system has absorbed many abuses of power and strains on the rule of law under Trump 2.0. The criminal prosecution of innocent people because they are the president’s political enemies is something else: Not a strain, but a break. Justice without fear or favor, the department’s own maxim, is no mere aspiration. It is the sine qua non of the rule of law. The new Congress’s first responsibility should be to reject Blanche’s crass and corrupt embrace of the rule of tyrants.

is a senior legal columnist at The New Republic, a senior fellow at the USC Center on Communication Leadership and Policy, and the creator of Talking Feds , a Substack and podcast on legal and political issues. A lawyer, professor, and legal commentator, he is the former U.S. attorney for the Western District of Pennsylvania and has served as a deputy assistant attorney general at the Department of Justice. He clerked for Supreme Court Justices Thurgood Marshall and Anthony Kennedy, and has taught at UCLA School of Law and UC San Diego. He is also a former legal affairs columnist at the Los Angeles Times.

The New Republic was founded in 1914 to bring liberalism into the modern era. The founders understood that the challenges facing a nation transformed by the Industrial Revolution and mass immigration required bold new thinking.

Today’s New Republic is wrestling with the same fundamental questions: how to build a more inclusive and democratic civil society, and how to fight for a fairer political economy in an age of rampaging inequality. We also face challenges that belong entirely to this age, from the climate crisis to Republicans hell-bent on subverting democratic governance.

We’re determined to continue building on our founding mission.

Sign up for a TNR newsletter on politics, climate, culture and more.

The Open and Shut Impeachment Case Against Todd Blanche

Portside
portside.org
2026-11-09 19:47:46
The Open and Shut Impeachment Case Against Todd Blanche barry Mon, 11/09/2026 - 19:47 ...
Original Article

On Saturday, Donald Trump ordered the Justice Department to investigate members of Congress for the offense of proposing to impeach his attorney general. He branded the talk “extortion at the highest level” and announced, “I am ordering the Department of Justice to look into this criminal act, immediately!”

We can expect the department to fall into line dutifully, because Attorney General Todd Blanche has already demonstrated his eagerness to convert federal prosecution into a weapon against the president’s enemies, wielded without regard to the facts, the law, or the commission of any crime. He said as much yet again Sunday in an interview with CNN’s Dana Bash that should be played back to him at an impeachment proceeding.

That practice stands atop the list of Trump 2.0’s manifold abuses of democracy and departures from constitutionalism and the rule of law. It follows that Blanche stands atop the list of Trump officials whom the incoming Democrats must aim to remove from office.

It is high time to impeach Todd Blanche.

With the House gavel in January comes a choice of priorities. This administration has repeatedly subverted the constitutional structure of checks and balances; bungled foreign policy, including through illegal misadventures, in ways that have profoundly undermined the national interest; and enriched the president and his allies at public expense.

These grievous offenses—all departures from the essential Article 2 command that the president “take Care that the Laws be faithfully executed”—require staunch investigation, oversight, and remedy. But the first order of business is to reaffirm the rule of law and democracy, and to strike back against the most virulent attacks on them.

The essential distinction that should lead Representative Jamie Raskin, the incoming House Judiciary Committee chair, and the committee’s new majority to vote on articles of impeachment against Blanche is between abuses of executive power on the one hand and the embrace of authoritarianism and the negation of the constitutional rule of law on the other.

For the last 20 months, the Justice Department hasn’t been flirting with authoritarianism. It has been an anti-Democratic stronghold, embracing practices that don’t happen in a democracy, and that in fact define authoritarian rule.

Democratic Representative Hank Johnson of Georgia has stated the umbrella case for impeaching and removing Blanche. The menu of possible articles runs long: illegal firings, including Maurene Comey’s, as a federal judge ruled last week; an early push, with his deputy Emil Bove—now, incredibly, a federal appellate judge—to ship immigrants out of the country whether or not the law allowed it; a sit-down with Ghislaine Maxwell not long before she landed in a minimum security camp.

Yet if I were drafting the articles, I’d opt to set aside, for the time being, all those horrendous abuses in the sycophantic service of Donald Trump and advance a single count: that Blanche has wielded the power of federal prosecution to punish the president’s enemies.

As Vladimir Putin’s persecution of Alexei Navalny shows, a single instance tells you everything about a regime, and a single instance would justify impeachment and removal. With Blanche, we have a long and growing list: Jim Comey, three times over. Letitia James. Cassidy Hutchinson. Six Democratic lawmakers, for making a video about illegal orders.

A one-count article of impeachment reduces the overall firepower of the case against Blanche, but it trains Congress’s and the nation’s focus on reprisal prosecutions, the Trump 2.0 practice that is the singular paradigm of authoritarianism. Three reasons make the reprisal count the right one.

First, reprisal prosecutions don’t merely abuse power; they violate the Constitution in and of themselves. The Supreme Court has called punishing someone for doing what the law allows “a due process violation of the most basic sort.” When the charges are brought in retaliation for protected speech, as with Comey or the six Democratic lawmakers, the prosecution violates the First Amendment as well.

Second, reprisal prosecutions are designed to cow dissent more broadly. Blanche’s prominent targets—a former FBI director, a witness who testified to Congress, lawmakers who reminded troops of their duty—cast a broad shadow over other political critics. Along with intimidating political adversaries, that is the point. Each case warns every potential critic, witness, and whistleblower to keep quiet or face criminal prosecution. And because a reprisal prosecution does its damage before any judge rules, and prosecutors enjoy absolute immunity from damages, the courts can’t undo it. Impeachment is the one remedy that reaches the official responsible.

Third, and most important, prosecuting the leader’s enemies on manufactured or nonexistent charges is the bright line between democracy and autocracy. It’s the unmistakable mark of authoritarianism.

Compare Blanche with Defense Secretary Pete Hegseth, whose impeachment GOP Representative Thomas Massie may force to a vote as early as this week. Massie’s eight articles charge Hegseth with waging war in Iran in defiance of the War Powers Resolution, with a strike that killed more than 150 people at a girls’ school in Minab, and with boat strikes in our hemisphere that have killed at least 221 people without a shred of process.

It’s an odious list that advances a strong case for impeachment. But it consists largely of abuses of democratic rule, not negation of it. Democracies aren’t immune from transgressing the law of war, and there is by now an extended history of military engagements that Congress never authorized. The core case against Hegseth is that he’s a flaming asshole—a terrible, arrogant secretary of defense whose tenure has sharply undermined the national interest.

The exception proves the rule. Massie’s sixth article charges Hegseth with threatening Senator Mark Kelly with prosecution for telling service members they may refuse illegal orders. Of the eight counts, it’s the only one that smells of Moscow. And Blanche’s Justice Department took the next step: It tried to indict Kelly and five colleagues over that same video.

Now picture a Senate trial of Blanche on a single count of reprisal prosecutions. The charge is clean. There’s no obscuring or evading it.

What might Blanche possibly say in his own defense? That he never undertook reprisal prosecutions? Fat chance: He not only saluted and discharged the orders; he defended them publicly as a legitimate exercise of Trump’s Article II powers.

That Trump told him to? That’s the defense Lt. William Calley offered for My Lai during the Vietnam era, and the military courts rejected it: An order to do something plainly unlawful binds no one. Sorry, but Blanche isn’t a 24-year-old lieutenant in a jungle. He’s the attorney general, who swore to support and defend the Constitution, not to blindly obey the president.

That he did it, but it was Trump’s right to order it? Blanche has tried that one before. He famously declined to pledge independence from the White House, saying “no attorney general should ever pledge that.”

In fact, no attorney general should ever pledge to follow a president blindly into the dark corner of reprisal prosecutions. To acquit Blanche on that ground, the Senate would have to ratify the authoritarian detour he engineered.

The American system has absorbed many abuses of power and strains on the rule of law under Trump 2.0. The criminal prosecution of innocent people because they are the president’s political enemies is something else: Not a strain, but a break. Justice without fear or favor, the department’s own maxim, is no mere aspiration. It is the sine qua non of the rule of law. The new Congress’s first responsibility should be to reject Blanche’s crass and corrupt embrace of the rule of tyrants.

is a senior legal columnist at The New Republic, a senior fellow at the USC Center on Communication Leadership and Policy, and the creator of Talking Feds , a Substack and podcast on legal and political issues. A lawyer, professor, and legal commentator, he is the former U.S. attorney for the Western District of Pennsylvania and has served as a deputy assistant attorney general at the Department of Justice. He clerked for Supreme Court Justices Thurgood Marshall and Anthony Kennedy, and has taught at UCLA School of Law and UC San Diego. He is also a former legal affairs columnist at the Los Angeles Times.

The New Republic was founded in 1914 to bring liberalism into the modern era. The founders understood that the challenges facing a nation transformed by the Industrial Revolution and mass immigration required bold new thinking.

Today’s New Republic is wrestling with the same fundamental questions: how to build a more inclusive and democratic civil society, and how to fight for a fairer political economy in an age of rampaging inequality. We also face challenges that belong entirely to this age, from the climate crisis to Republicans hell-bent on subverting democratic governance.

We’re determined to continue building on our founding mission.

Sign up for a TNR newsletter on politics, climate, culture and more.

Horible public key tricks

Hacker News
maurycyz.com
2026-11-09 19:07:17
Comments...
Original Article
—

So, I've always been somewhat annoyed at SSL/TLS. It requires everyone to go through a complex "ACME" dance just to put up a public website. Worse, certificates expire every few months, so it's not a one and done thing: even with automation, maintaining a certificate requires care to ensure the ACME client always has access to DNS records or the web server.

... and the whole system doesn't even work because certificates are issued over plaintext connections, and trusted certificate aurthorities use very secure keys like "4"

There is prior art of protest SSL implementations , but I do actually want to encrypt web traffic. Passive eavesdropping is a real risk... but preventing it doesn't require the whole certificate thing: therefore, the best choice is a protest certificate.

The only part of the certificate I directly control is the public key. Therefore, the simplest way to obtain a bad certificate is use a vanity private key such as 313333333337 (one of the most eleet primes). However, while the resulting public key would be weak, no one would know unless they try to break it.

A good protest should be obvious:

# openssl s_client -connect maurycyz.com:443 < /dev/null 2> /dev/null \
    | sed -n /BEGIN/,/END/p | grep -zE '////.?*////' --color=yes

-----BEGIN CERTIFICATE-----
MIIFAjCCA+qgAwIBAgISBkOkuuyaN1ypD3PAPrLMyT7tMA0GCSqGSIb3DQEBCwUA
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
EwNZUjIwHhcNMjYxMTA5MTcyOTQ2WhcNMjcwMjA3MTcyOTQ1WjAXMRUwEwYDVQQD
EwxtYXVyeWN5ei5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCg
JyPf37Sj6PvU06m5////You+dont+actually+have+to+pick+random+privat
e+keys//No+one+checks+these+things//A+certificate+authority+got+
away+with+the+number+4+for+a+year/////DSfCAfXcsJfBpnHekS0qnf5YLl
c54VuUNRVINcDkEwJDwyB96+xE/uXhtiGdk8ty1PF6jciLEYCJBHcmqOa5pOyV8m
63yR3NE6hCQlaSLQQDo96Sb0/10aC5LqE7KwEskrP/qeCzT7vDN7fh+dXOGs+VMw
eJvTAb0xHJpxhSK05i7DAgMBAAGjggIqMIICJjAOBgNVHQ8BAf8EBAMCBaAwEwYD
VR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUBKBfDbwf
dCnKeU83pMTWyFrJBwAwHwYDVR0jBBgwFoAUQBUtJnntMiCe35pyHdYyH4EMgQww
MwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAChhdodHRwOi8veXIyLmkubGVuY3Iu
b3JnLzAnBgNVHREEIDAegg4qLm1hdXJ5Y3l6LmNvbYIMbWF1cnljeXouY29tMBMG
A1UdIAQMMAowCAYGZ4EMAQIBMC8GA1UdHwQoMCYwJKAioCCGHmh0dHA6Ly95cjIu
Yy5sZW5jci5vcmcvMTEwLmNybDCCAQsGCisGAQQB1nkCBAIEgfwEgfkA9wB1AExj
3JjlnB2riPYeij3ero+rRKM3e1+blMP7oZz8wb4mAAABocGRbw4AAAQDAEYwRAIg
HShWaEI2nVJEizSI6sJ/jnLaABZ3aTKoUL3pLo1uOgsCIEn+XiT2WHhm9LGN6kug
O9R7Z4q0HiFA4RZ7tIMJQH5XAH4AjspHC6zeavOiBrCkeoS3Rv4fxr+VPiXmm07k
AkjzxugAAAGhwZFyfQAIAAAFAEE0hdwEAwBHMEUCIDSms4Vf0llcvcldJd2Ool8i
AiUQQlS0Zzbej+7Y1aR7AiEA79Ll+t6inu1PkUIgzNTXkE0S20VHYEYel5fkdKSA
VTQwDQYJKoZIhvcNAQELBQADggEBAFi3A4fcjj4UKa9MFz1a8DWc+Jya2gJng13m
2UFdWCaqsN7FJWQEjRiJ0npynmDnA3VMyjswUMHAMx4d8G3lHNPfZWGsCgpjVa/d
IEoeZ6gTYjFa/Ovb64m4CcuQkm0GxcyAqMPs348e6Px32iU1R6MnV4UEUosnSPeK
4ocuI3SoR9LHxX/yHOKcYTKLpIMwMdaAmWt0N7l59GOb8o+dz3R7cxtVV/lrZReZ
/YPEAYRiNi7f+jNI1JCp0i8wXUb9NN7WlbmcFDecDG/++cRpAkoIk4m/LJindsuu
kErrVZ4yLqB0Hvm+uNvWxr9y/qKFTYw9POx1oaZJO/SwXZdDBeY=
-----END CERTIFICATE-----

First, let's look at mathematical framework of RSA. To generate a key, pick two large prime numbers (p and q) and multiply them to yeild the modulus (n). Pick a small number, e as public exponent.

The RSA public key is composed of the modulus (n) and the public exponent:

# Encryption requires knowing e (public)
cyphertext = plaintext^e mod n

The private key contains the modulus and the private exponent (d) which is chosen to be the multiplicate inverse of e modulo n. Exactly how d is found is not relevent, but the process requires knowing p and q.

# Decryption requires knowing d (pivate)
= cyphertext^d mod n

= plaintext^e^d mod n
= plaintext^(e*d) mod n
= plaintext^1 mod n
= plaintext

Ok, back to vanity keys. The standard value for e is 65537 (0x10001), because the small number of set bits makes encryption faster. In fact, the CA I used will refuse to sign keys with a non-standard public exponent, so I can't do anything funny there.

The modulus, n, is either 2,048 or 4,096 "user controlled" bits, so it's the ideal place to hide a message. However, to use the certificate, I'll need to find two large primes that multiply out to the vanity modulus.

My method starts by picking two random primes and calculating the resulting n value. Then, the bytes of n are modified to introduce message into the base64 encoding. Of course, the modified n is not the product of p and q, but this is fixable by setting q to n/p.

The resulting q value is very unlikely to be a prime (or integer), so I round it and find the next prime after the ideal q: which usually only requires changing the value of q by a few hundred. Since p and q are similar in size, a small change q only affects the least-sigifiant half of the product:

58174124 * 918491824 = 53432457262362176
(incrementing until the next prime...)
58174124 * 918491843 = 53432458367670532

As long as the message is embedded into the upper half of n, it's likely to survive undamaged. The original p and newly selected q can now be used to construct a functional RSA private key in the usual manner.

From here, it's really just a matter of getting a certificate aurthority to sign the key:

# Single domain
openssl req -new -key priv.pem -subj '/C=US/CN=example.com' > cert_request
certbot certonly --manual --csr cert_request

# Wildcard
cat > config<<EOF
[ req ]
req_extensions = req_ext

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = *.example.com
DNS.2 = example.com
EOF
openssl req -new -key priv.pem -config config -subj '/C=US/CN=example.com' > cert_request
certbot certonly --manual --csr cert_request
... although since base64 operates on groups of three byte, it is possible for the message to be misaligned and not readable. However, since the layout of the certificate is static, it is possible to adjust the message's placement until it works: this should take less than four attempts.

The result is a functional, trusted certificate with a longish message hidden in the public key. Renewal is done by resumbitting the CSR and repeating the ACME chalange, which can be automated.

Base64 is missing most punctuation, but it provides the full ASCII alphabet, and the ~150 (RSA-2048) or ~320 (RSA-4096) avalable charaters provides plenty of space for jokes. Another option would be to target the base16 displayed in most browser's certificate viewer: this would provide a lot more space (2 chars/byte instea of 0.75), but requires careful word choice.

As for security , this trick obviously reduces the entropy in the private key. However, it should still be secure: nearly identical methods have been considered as a form of compression. If the top-half of the modulus is fixed to a well known value, it doesn't have to be sent or stored as part of the key.

A reduction of around 1/2 can be achieved through division, but the state of the art can fix 2/3 of the key, reducing the size to 1/3 of standard RSA while retaining a similar level of security... although I should note that such tricks have largly been abandoned in favor of other crytosystems which can directly use small keys.

The manipulation of q may produce primes that are very close together, which makes it possible to factor n and recover the private key. A very small d value can also be a problem. Both of these are unlikely, but my script doesn't check for insecure values

However, regardless of the key's security, it should be perfectly fine for a public website: modern TLS provides forward secrecy, so eavesdropping requires a man-in-the-middle attack even if the private key is compromised.

Related :

Midterm Round Up w/Erin Heaney, Chris Melody Fields Figueredo, and Shaira Chaer

OrganizingUp
convergencemag.com
2026-11-09 19:00:00
Last week’s midterm election results were a massive swing toward Democrats across the country. The Republican trifecta in the federal government has now been broken, creating opportunities to change policies and seek accountability for some of the worst harms of the last 2 years. Meanwhile, direct b...

llm-anthropic 0.31

Simon Willison
simonwillison.net
2026-11-09 18:58:46
Release: llm-anthropic 0.31 Anthropic released Fable 5.2 and Mythos 5.2 today. I've added them to llm-anthropic, so you can now run prompts through Fable 5.2 like this: uv tool install llm llm install llm-anthropic llm keys set anthropic # paste key here llm -m claude-fable-5.2 "Generate an ...
Original Article

Anthropic released Fable 5.2 and Mythos 5.2 today. I've added them to llm-anthropic , so you can now run prompts through Fable 5.2 like this:

uv tool install llm
llm install llm-anthropic
llm keys set anthropic
# paste key here
llm -m claude-fable-5.2 "Generate an SVG of a pelican riding a bicycle"

I ran pelicans at all five reasoning levels - low , medium , high , xhigh , and max . You can see them all here - here's the best result I got, from xhigh :

It's good - legs the right side of the bicycle, good frame, nice pouch, weird little fingers on the handlebars. The pouch looks slightly misaligned with the top of the beak.

max failed to return an image at all, running out of tokens after spending 128,000 thinking about them . That's the same bug that I saw with Opus 5.5 - but it's new for the Fable series, both Fable 5 and Fable 5.1 returned max effort pelicans just fine.

Locating the source of a mysterious beep with Claude

Simon Willison
simonwillison.net
2026-11-09 18:57:21
Our house has a box room, full of boxes that we still haven't unpacked from our last move. A couple of weeks ago something in that room started intermittently beeping. The beeps were far enough apart that standing in the room and trying to determine the source of the noise was frustrating, and I rea...
Original Article

9th November 2026

Our house has a box room, full of boxes that we still haven’t unpacked from our last move. A couple of weeks ago something in that room started intermittently beeping . The beeps were far enough apart that standing in the room and trying to determine the source of the noise was frustrating, and I really didn’t want to dig through every one of those boxes. So I had Claude Code build Beep Locator , a software system for triangulating the source of a mysterious beep using multiple devices scattered around the room.

Here’s what Beep Locator looks like after it has been running for a while:

Screenshot of a web app that uses several phones, tablets and laptops as microphones to locate a mystery beeping sound in a room. The left column has an "Add a listener" panel with a QR code and join link, a "Controls" panel with buttons including "Calibrate", "Test beep" and "It just beeped!" plus a "Listen for beeps" checkbox, and a "Mystery beep" note reading "3345 Hz · 3 confirmed · remembered across sessions". Below that, a "Devices" list shows five color-coded listeners (Simon iPhone, New iPad, Old iPad, MacBook Pro, Surface Ultra), each marked "✓ mic working · ✓ speaker working". The main area is a gridded map with a 1 m scale bar that shows the five devices as colored dots and earlier sounds as small timestamped markers. A pink shaded circle near the MacBook Pro is labeled "mystery beep · 2 hearings · within ~41 cm", and beside it a dashed plus marker suggests "add a listener here? could tighten the mystery beep's position by ~12%". Below the map, a "Mystery beep loudness warmer / colder" panel shows a bar for each device: Surface Ultra is loudest at "-6.0 dB ▲ +11.6 dB warmer", with the note "about 6 dB louder means roughly half the distance". At the bottom, a "Sounds located" table lists recent claps and beeps with coordinates, or the warning "arrival times are not physically possible (echo or a different sound?)".

You run Python web server to show the primary UI, and then use the QR code or URL to connect as many devices as you can spare to act as listeners—I was using two iPads, a phone, a MacBook Pro and a Surface Ultra.

The devices then play noises to each other to help estimate their locations. This didn’t work particularly well, so I added a “Rough mode” where you can drag their icons around in the space to provide rough locations which are then adjusted based on those sounds.

Once that’s set up, the devices all listen for the beep!

I added a clapping mode too so I could test it by clapping my hands in different locations around the room—displayed as diamonds on the map. This helped me gain confidence that it was capable of locating a sound.

Beeps show up on the map as an X, plus a line in the “Sounds located” log. You can replay these sounds (from each device in turn) to confirm they are the mysterious beep you are looking for, then click “This is the mystery beep” to mark them as such.

Once you’ve confirmed the mysterious beep frequency the system will listen out for it, measure the interval between beeps, and use the triangulated locations to lock down the most likely location on the map.

The system worked as intended. It gave me the position of the beep to within about 40cm, then I dug through that specific pile of boxes and found an ancient carbon monoxide detector that desperately wanted its batteries replaced.

How it works

When I started working through this problem with Claude it quickly dug up BeepBeep: A High-Accuracy Acoustic-Based System for Ranging and Localization Using COTS Devices , a 2007 paper by Chunyi Peng, Guobin Shen, Yongguang Zhang, Yanlin Li, and Kun Tan. Here’s that paper’s abstract:

We present the design, implementation, and evaluation of BeepBeep, a high-accuracy acoustic-based ranging system. It operates in a spontaneous, ad-hoc, and device-to-device context without leveraging any pre-planned infrastructure. It is a pure software-based solution and uses only the most basic set of commodity hardware – a speaker, a microphone, and some form of device-to-device communication – so that it is readily applicable to many low-cost sensor platforms and to most commercial-off-the-shelf mobile devices like cell phones and PDAs. It achieves high accuracy through a combination of three techniques: two-way sensing, self-recording, and sample counting.

That sounded exactly like what we needed to build!

Beep Locator runs a Python web application server that does most of the work. The listening devices then connect to that server via WebSockets and present a UI which requests browser microphone access. The listeners mainly work by recording a 60 second buffer of recent audio. They also run a simple beep detection algorithm (see detector.js ), which uses Fast Fourier Transform and a high-pass filter to identify potential beeps. It sends these events to the main server.

When a beep is reported, the server has a device play a short chirp (the device with the lowest round-trip time to the server), then asks every listener upload a clip from about 0.6s before the beep to 0.8s after that chirp. This chirp allows the clips to be aligned with each other, a crucial step in locating the beep.

How I built it

I started this project using Claude Code Cloud via my iPhone, with Opus 5.5 running in Extra thinking effort mode. Here’s that shared starter session , which began with this prompt against a newly created empty GitHub repository:

Write out a problem.md file describing the problem we want to solve

There is a device beeping in a room and I cannot find it

I want to set up several devices - laptops, phones, iPads - around the room all listening at the same time and have them help triangulate where the beep comes from

There needs to be a Python web app which coordinates it all - one device shows a web page for the app, other devices join a URL which turns them into listeners - all via browser WebAudio and WebSockets back to the Python server app

Ideally I wouldn't need to manually input the relative locations of the devices - it would be amazing if they could play sounds to each other in order to locate each other in 2D space - is that even possible though?

That got me this problem.md file . As part of writing that up Claude found and read the BeepBeep paper, which is described in that file.

The research looked good, so I told it:

Ok try and build it, add a mechanism so you can send new code to the listeners which they will then run automatically - that way I can set everything up in the room and then leave you alone to continue hacking and experiment while I do something else

That got me to this point —most of the system was built, but nothing had actually tried running it yet.

I cloned the new repository to my laptop and fired up Claude Code... and then Fable 5.2 was released , and this project seemed like an excellent opportunity to put that through its paces.

I had Claude Code on my laptop start the server running, then made sure it could both see what was happening and make live changes to the software as it ran.

This was already baked into the software: Opus 5.5 had built an installModule() method on the listeners that could be triggered over the WebSocket connection, meaning the admin server could execute arbitrary new code on any of its clients.

On some devices, web pages that listen on the microphone request user permission any time the page reloads. The hot-swap module mechanism meant that we could deploy new code without having to manually interact with each of the listening devices in turn.

From that point on my involvement was mainly to sit by the laptop chatting with Fable 5.2 about what was going on, and occasionally requesting new features. Here are some of the feature prompts I ran:

I think we need to make it so I can drag things around on the map in “rough mode”, where my job is just to put them roughly where they are, then switch out of rough mode and it attempts to get them accurate

This gave me the ability to drag listeners around the map.

what’s a good way for me to test this I wonder? Can we have it listen for claps, then I could clap and it could identify the location of the clap? [...]

Claps should use a different symbol on the map than beeps

That added the thing where any time I clapped it would show on the map as a different symbol from the beeps.

each symbol on the map should include a HH:MM:SS timestamp

That made it easier to spot which symbol likely reflected which real-world sound.

The log should show beeps and claps with their timestamps AND have a little play button which, when clicked, replays the recorded noise from each of the listeners in sequence (with clear text on screen showing which listener recorded which snippet) while temporarily turning off microphone recording while that replay plays

Now I could replay sounds, making it much easier to identify which recorded clip was the mysterious beep I was looking for.

There should be a button next to a recording for “This is the mystery beep” - then I can hit replay to see and then confirm it was the mystery beep if that’s the one I am looking for

Then the system can categorize noises in the future to see if they are likely that same mysterious beep and use that information to build a more accurate idea of where it is

At this point I was getting close—I had a solid idea of where the beep was coming from, but wouldn’t it be neat if I could reposition the listeners around that point to get an even finer location?

I want a feature for this, I don’t want to have to restart each listening device etc, I want to be able to click a “Reposition the devices” button which lets me switch into repositioning, then I click “Repositioned” and it puts me into Rough mode and asks me to roughly locate them, then I do that and click, then it starts up again. The previous session can be read-only viewed through the app.

And since I had one spare device, I then said:

add a feature where the map includes a spot that is a suggestion for a location that it would be useful to add a listener at - based on data collected so far

Giving Claude Code ears

I think the most interesting part of this project is that I demonstrated it’s possible to give Claude Code ears .

Claude doesn’t have native audio input (yet), but it can run JavaScript and Python code that can analyze audio captured by a microphone.

I told it to run a web server with WebSocket connections to multiple listening devices, then had it both run a WebAudio microphone on those devices and hook them up so they could be sent fresh JavaScript code to execute via that WebSocket.

Then I could pretty much leave Claude alone, hacking away at the problem, querying the audio logs, and reconfiguring its ears to help it solve the problem.

I’m reminded of a similar hack I heard about at GitHub Universe a few weeks ago, where Martin Woodward told me he had been debugging the GitHub Badge computers by plugging them into a computer via USB-C and then pointing a webcam at their screen, so his coding agent could tell if updates were working correctly or not.

Figuring out ways to let coding agents perceive the world around them is a whole lot of fun.

Vanderbilt University hit in BYOD ransomware attack, data theft claimed

Bleeping Computer
www.bleepingcomputer.com
2026-11-09 18:52:12
Vanderbilt University warns it is responding to a cyberattack claimed by the BYOD ransomware gang, which claims to have encrypted the university's databases and stolen sensitive student, employee, and research data. [...]...
Original Article

Vanderbilt University

Vanderbilt University warns it is responding to a cyberattack claimed by the BYOD ransomware gang, which claims to have encrypted the university's databases and stolen sensitive student, employee, and research data.

The university confirmed the incident Monday, warning that university devices, systems, and cloud-based services may be affected.

"We are currently responding to an active cybersecurity incident that may impact university devices, systems, and cloud-based services. Our Information Technology team is actively investigating and working to contain the situation," Vanderbilt said in a statement on X .

image

As part of its response, the university told students, faculty, and staff to shut down university devices, disconnect from university Wi-Fi, and watch for suspicious activity.

The university warned that signs of compromise may include unexpected pop-ups or security notifications, unusual changes to files or permissions in cloud storage platforms, missing or modified files, unfamiliar applications, and unexpected authentication requests.

Those who notice suspicious activity were instructed not to investigate or troubleshoot the issue themselves, but instead immediately shut down their devices and contact the university's IT service desk.

Vanderbilt has not publicly disclosed the nature of the attack or confirmed whether any data was stolen.

BleepingComputer contacted Vanderbilt University with questions about the attack, including whether systems were encrypted, what data may have been stolen, and whether the incident has been contained.

If you have any information regarding this incident or other undisclosed attacks, you can contact us confidentially via Signal at 646-961-3731 or at tips@bleepingcomputer.com.

BYOD ransomware claims attack

On Monday, the BYOD ransomware group claimed responsibility for the attack on its data leak site, alleging that it had encrypted Vanderbilt's databases and stolen sensitive information belonging to students and employees.

"If you could not tell already, your databases are locked, We have your entire estate and research data. Over 1 Million SSNs, Full Names, Email addresses, Phone Numbers, Student & Employee Records, Full takeover of your DC, whatever was on your network, we possess," reads the BYOD data leak site.

BYOD ransomware group claims attack on Vanderbilt University
BYOD ransomware group claims attack on Vanderbilt University
Source: BleepingComputer

BleepingComputer has since received a photograph of an alleged computer screen showing icons associated with Vanderbilt University and displaying a BYOD ransom note named "README_BYOD_31.txt".

The ransom note includes a link to the BYOD data leak site and contact information for the SESSION encrypted messaging platform to negotiate with the ransomware gang. BleepingComputer can confirm that the link in the ransom note is the site operated by BYOD.

"Oh no, you have been compromised by BYOD :<," reads the ransom note.

"We have all of your data including your backups, your entire network is compromised."

"Yes, this affects your student and employee data the most, every single SSN is archived, full names, email addresses, phone numbers, work addresses, roles, birthdays, quite literally everything."

Photograph of BYOD ransom note displayed on a Vanderbilt University computer
Photograph of BYOD ransom note displayed on a Vanderbilt University computer
Source: BleepingComputer

The note also threatens to release stolen data and cause further disruption if the university does not negotiate with the attackers.

A video shared on YouTube and with BleepingComputer also shows how infected devices are playing audio warning that the network has been compromised by "BYOD".

While the ransom note and video indicate BYOD is behind the attack, Vanderbilt has not officially confirmed the group's involvement or whether devices were encrypted.

BYOD is a relatively new ransomware gang that launched in 2026 and currently lists 5 other organizations on its data leak site.

Last month, the ransomware gang claimed responsibility for an attack on the University of New Mexico Health Sciences Center in a cyberattack that caused system outages and disrupted patient care and academic activities.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Bloomberg Was Onto Megaspeed’s Game a Year Ago

Daring Fireball
www.bloomberg.com
2026-11-09 18:46:17
Mackenzie Hawkins, Andy Lin, and Kari Soo Lindberg, reporting for Bloomberg last year on December 22 (Archive.today link): In an industry run by titans, a Singapore AI firm called Megaspeed International Pte. is drawing an unusual amount of attention. In less than three years, the once-obscure s...
Original Article

We've detected unusual activity from your computer network

To continue, please click the box below to let us know you're not a robot.

Why did this happen?

Please make sure your browser supports JavaScript and cookies and that you are not blocking them from loading. For more information you can review our Terms of Service and Cookie Policy .

Need Help?

For inquiries related to this message please contact our support team and provide the reference ID below.

Block reference ID:b6400047-dc9a-11f1-b595-88fe45473414

Get the most important global markets news at your fingertips with a Bloomberg.com subscription.

SUBSCRIBE NOW

10 Reasons Hakeem Jeffries Should Not Be House Speaker

Portside
portside.org
2026-11-09 18:41:34
10 Reasons Hakeem Jeffries Should Not Be House Speaker Mark Brody Mon, 11/09/2026 - 18:41 ...
Original Article

Now that Democrats have swept the House, a key question is: Who should lead it?

Hakeem Jeffries is in line to become the first Black Speaker of the House, which would be a historic milestone. But members of Congress must examine Jeffries’ record, his priorities, and the kind of leadership he would bring to this moment.

Here are ten reasons why Jeffries should not be Speaker.

1. He has abandoned Medicare for All

At a time when millions of Americans struggle with unaffordable health insurance, medical debt, and the threat of financial ruin from illness, Jeffries has distanced himself from one of the most important progressive reforms: Medicare for All .

Jeffries co-sponsored Medicare for All legislation from 2013 through 2021. But in an August 2026 interview on NBC’s Meet the Press , he said it is no longer legislation he supports or cosponsors. Ironically, he made that statement on the same day a CBS poll found that 90 percent of Democratic voters back the idea.

This reversal puts him at odds with party voters, but also with a majority of Democratic representatives in the House. As of late October, Rep. Pramila Jayapal’s Medicare for All Act had 118 Democratic cosponsors. A “leader” who won’t back what his own caucus and voters want is not a leader.

2. He refuses to break with Israel

Perhaps nowhere is Jeffries more out of step with the progressive base than on Israel.

For decades, Jeffries has been a staunch defender of the U.S.-Israel alliance. At a pro-Israel rally in 2014, during Israel’s military assault on Gaza , Jeffries proclaimed, “Israel today, Israel tomorrow, Israel forever!.” In 2020 he told an AIPAC conference that New Yorkers consider Jerusalem their “sixth borough,” totally disregarding the plight of Palestinians living under Israeli occupation.

Even as Israel’s genocide in Gaza sparked worldwide outrage, Jeffries continued to resist calls to end U.S. military support.

In July 2026, 103 House Democrats voted to cut $3.3 billion in military aid to Israel, including the party’s second-ranking House leader, Katherine Clark. But Jeffries joined 97 other Democrats and nearly every Republican in voting to preserve the funding.

In a May 2024 60 Minutes interview, when asked whether Israel’s bombing of Gaza had been indiscriminate, Jeffries said no. By then, nearly 35,000 Palestinians had been killed. When the interviewer pressed him, saying, “You seem reluctant to criticize Israel at all,” Jeffries responded, “I’m dealing with the facts on the ground.”

Jeffries has also refused to cosponsor the Block the Bombs Act, which would restrict transfers of some of the deadliest offensive weapons to Israel, including 2,000-pound bombs, bunker busters, precision-guidance kits, and tank and artillery rounds. As of November 2026, the bill has 82 Democratic cosponsors and the endorsement of the Congressional Progressive Caucus. Caucus Chair Greg Casar has pledged to push for a floor vote if Democrats regain the majority. Yet Jeffries has not signed on, and as Speaker, he would have enormous power to determine whether the bill ever receives a vote.

While Jeffries has acknowledged that U.S. policy toward Israel needs to change, he continues to support Israel’s military superiority and joint missile-defense programs. He has also refused to condemn Section 219 of the NDAA, which would further integrate U.S. and Israeli military research, technology , and production.

Ironically, both Donald Trump and Benjamin Netanyahu have recently suggested that the U.S. should stop giving Israel nearly $4 billion a year because “Israel doesn’t need it.” Whether or not we believe them, it is striking that we have yet to hear a similar call from Hakeem Jeffries.

3. He has failed to champion major cuts to the obscene Pentagon budget

At a time when Americans are struggling to afford basic necessities, Trump is demanding a staggering $1.5 trillion military budget—an increase of nearly $600 billion, or 66 percent, over the previous year’s base funding. Yet Jeffries has not made substantially reducing Pentagon spending a central priority of Democratic leadership.

Yes, he has opposed funding for Trump’s war in Iran but he is a staunch advocate of continued U.S. military aid to Ukraine and has sharply criticized Trump for failing to provide sufficient support. He said “America is stronger when Russia is weaker.” In September 2026, he pledged that Democrats would continue backing Ukraine “until victory is won,” signaling his commitment to greater U.S. involvement and military assistance instead of a commitment to a diplomatic solution that would end that terrible war.

Jeffries is also an enthusiastic defender of the aggressive alliance NATO , which should have dissolved when the Soviet Union fell apart in 1991. He has called NATO “the most successful military and diplomatic alliance in the history of the world.” NATO, at Trump’s insistence, has called for all members to dramatically increase their military budgets to 5 percent of their GDP (the US is presently at 3.1 percent).

Jeffries’ ties to the military-industrial complex are particularly troubling. During the 2026 election cycle alone, Jeffries’ campaign reportedly received approximately $212,000 from military PACs.

Democrats cannot simply promise better healthcare , affordable housing , quality education and climate action while supporting a massive military budget . Real change requires shifting resources from weapons and war to the needs of ordinary people. The next Democratic Speaker must be prepared to challenge the military-industrial complex.

4. He continues to accept pro-Israel lobby money

Jeffries’s position on Israel cannot be separated from his longstanding political relationship with the AIPAC lobby.

At a time when AIPAC funding has become toxic and so many Democratic candidates rejected AIPAC money, Jeffries has maintained his ties to the organization.

According to Track AIPAC, Hakeem Jeffries has received more than $1.5 million in campaign contributions from AIPAC and other pro-Israel lobby groups over his congressional career. During the 2026 election cycle alone, his campaign received nearly $300,000 in contributions from pro-Israel PACs.He has also taken five AIPAC-sponsored trips to Israel since arriving in Congress.

Following the November elections, AIPAC publicly celebrated Jeffries as one of the candidates it supported.

How can congressional Democrats be led by someone so closely tied to AIPAC, a lobby increasingly toxic to their own voters?

5. His Backroom Dealings with Jared Kushner Raise Serious Questions About His Judgment

At a time when Americans are demanding investigations into the Trump family’s financial dealings, Hakeem Jeffries chose to sit down privately with Jared Kushner , Trump’s son-in-law and influential adviser.

In August 2026, reports revealed that Jeffries had met with Kushner to discuss possible cooperation on housing, immigration and affordability. Yet Kushner, who holds no official government position, continues to wield influence over U.S. foreign policy while maintaining lucrative financial relationships with Gulf governments through his investment firm.

House Judiciary Committee Democrat Jamie Raskin has already launched an investigation into Kushner’s foreign financial entanglements, demanding documents and communications about his dealings with foreign governments. So why was Jeffries meeting with him behind closed doors?

With Democrats taking control of the House in January, they need a speaker committed to untangling the dirty web of corruption committed by Trump and his inner circle.

6. He Has Elevated Warhawks to Key Foreign-Policy Positions

You can tell a political leader’s priorities by whom they put in power. And Jeffries’s choices speak volumes.

In August 2026, Democratic leaders elevated Rep. Jared Moskowitz, one of the House’s most outspoken pro-Israel hawks, to the top Democratic position on the powerful House Foreign Affairs Subcommittee on the Middle East and North Africa . Moskowitz has been an unwavering defender of Israel’s genocide in Gaza, continued U.S. weapons shipments, and Israel’s brutal military operations in Lebanon . He has also openly supported both Israeli attacks on Iran and Trump’s 2025 bombing of Iranian nuclear facilities, and initially opposed congressional efforts to prevent the 2026 war before later backing War Powers restrictions.

With Democrats in control of the House, Moskowitz will be positioned to chair the Middle East and North Africa Subcommittee, wielding significant influence over congressional oversight and policy toward Israel, Palestine , Iran, and the entire region.

Debbie Wasserman Schultz and Wesley Bell, two other staunch defenders of Israel, were added to the Foreign Affairs Committee. Bell had defeated progressive Rep. Cori Bush in 2024 after massive spending by AIPAC’s super PAC. Progressives are still steaming over the role of Wasserman Schultz in undermining Bernie Sanders during the 2016 Democratic presidential primary.

The backlash to these appointments was immediate. Rep. Ro Khanna warned, “Don’t put Israel hawks out of touch with our voters in charge of our Middle East policy.” The Council on American-Islamic Relations condemned the appointments as an insult to voters and an attempt to shield Israel from accountability for its actions in Gaza.

7. Jeffries Represents the Democratic Party's Dependence on Corporate Money

The Democratic Party claims to fight for working people, but Jeffries remains deeply connected to the wealthy corporate interests that dominate Washington .

His campaign has benefited from millions of dollars in contributions associated with Wall Street , pharmaceutical and insurance companies, real estate interests, Big Tech and military contractors.

These financial relationships raise a fundamental question: How aggressively will Democrats challenge corporate greed , Wall Street speculation, soaring healthcare costs and the military-industrial complex when their leader maintains such close ties to these powerful interests?

Progressive Democrats have demonstrated that grassroots organizing and small-dollar fundraising offer an alternative to corporate PAC money.

The Democratic Party cannot credibly promise to take on corporate power without confronting the influence of big money within its own leadership.

8. He has defended the Democratic establishment against progressive challengers

Jeffries has a long history of protecting entrenched Democratic incumbents against progressive challengers.

In 2020, he backed longtime pro-Israel congressman Eliot Engel against Jamaal Bowman , who defeated Engel in a stunning primary upset. In 2022, Jeffries traveled to Chicago to campaign for veteran Congressman Danny Davis against young progressive organizer Kina Collins, who came within seven percentage points of victory.

And in 2026, Jeffries backed Dan Goldman, Adriano Espaillat and Shri Thanedar against progressive challengers Brad Lander, Darializa Avila Chevalier and Donavan McKinney. All three incumbents lost their primaries, and all three challengers went on to win in November.

This pattern is no coincidence. In 2021, Jeffries joined forces with centrist Democrats Josh Gottheimer and Terri Sewell to establish Team Blue PAC, designed to protect Democratic incumbents against primary challengers.

While voters are demanding a new direction, Jeffries has repeatedly sided with the establishment candidates they rejected.

9. He Wants to Reform ICE, Not Abolish It

As ICE agents terrorize immigrant communities, separate families and carry out violent raids, the question of how to dismantle Trump’s cruel mass-deportation machinery has become increasingly urgent.

Jeffries has condemned ICE’s brutality and demanded greater accountability. But he has stopped short of calling for the abolition of ICE or the dismantling of the Department of Homeland Security, insisting instead that these agencies can be reformed.

Contrast that with Rep. Delia Ramirez’s groundbreaking Reimagining Safety Act, which would abolish ICE, dismantle DHS and establish a new Department of Community Safety, redirecting resources toward housing, healthcare and community well-being. Her legislation challenges the very definition of national security, arguing that real safety comes from meeting people’s needs, not militarizing their communities.

This is the kind of bold, visionary leadership that offers a fundamental alternative to simply “reforming” an out-of-control immigration enforcement system that is terrorizing immigrant communities.

10. He Has Failed to Champion Bold Climate Action

As devastating wildfires consume entire communities, record-breaking heat waves threaten lives, and floods and droughts wreak havoc across the country, the climate crisis demands bold, urgent leadership—not business as usual.

Yet Jeffries has refused to endorse the Green New Deal or champion demands to halt the expansion of fossil fuel infrastructure and eliminate taxpayer subsidies to the oil and gas industry. In 2022, when more than 70 House Democrats publicly opposed legislation to fast-track fossil fuel projects, Jeffries declined to join them.

More recently, he has distanced himself from calls for a moratorium on new AI data centers, even as a powerful grassroots movement is sweeping the country, with communities organizing against these energy-guzzling facilities that drain water supplies, drive up electricity bills, strain power grids and threaten the environment.

Jeffries supported the Inflation Reduction Act’s clean-energy investments, but he has not embraced the more ambitious climate agenda advocated by progressive lawmakers and community groups.

At a time when climate disasters are destroying homes, livelihoods and entire communities, the Democratic Party needs leadership with the urgency and ambition to confront the climate crisis.

A Democratic Majority Deserves Progressive Leadership

More than any single vote, contribution, or appointment, the problem with Hakeem Jeffries is the establishment politics he represents—politics that protect the powerful, accommodate corporate interests, and offer timid reforms when the country is crying out for transformative change.

Voters did not reject Republican extremism just to see Democratic leaders continue pouring billions into wars and corporate interests while families struggle to afford housing, healthcare, and basic necessities.

And the grassroots are making their voices heard. In just a few days, more than one million people have signed a petition demanding new leadership. Congressional offices are being inundated with calls, and several incoming Democrats—including Melat Kiros, Claire Valdez, Chris Rabb, and Adam Hamawy—are withholding support for Jeffries.

The Speaker of the House holds enormous power. That power can be used to confront the military-industrial complex, challenge corporate money and AIPAC, stand up for immigrants, and put human needs ahead of endless wars. Or it can be used to protect the very system that has brought us to this crisis.

That’s why we need a new generation of leadership willing to fight for real change.

Sign the petition demanding new leadership . Call your member of Congress at 202-224-3121 .

Medea Benjamin is co-founder of Global Exchange and CODEPINK: Women for Peace. She is the co-author, with Nicolas J.S. Davies, of War in Ukraine: Making Sense of a Senseless Conflict, available from OR Books in November 2022. Other books include, "Inside Iran: The Real History and Politics of the Islamic Republic of Iran" (2018); "Kingdom of the Unjust: Behind the U.S.-Saudi Connection" (2016); "Drone Warfare: Killing by Remote Control" (2013); "Don't Be Afraid Gringo: A Honduran Woman Speaks from the Heart" (1989), and (with Jodie Evans) "Stop the Next War Now" (2005).

Tracking the Harm of DOGE Cuts

Hacker News
www.clasp.org
2026-11-09 18:40:54
Comments...
Original Article

The DOGE Tracker, CLASP’s interactive data tool, is designed to help users explore and document the proposed reductions to federal programs under review by the Department of Government Efficiency (DOGE). This sortable, filterable spreadsheet compiles program-level information on funding changes—either proposed or enacted—during the current administration. The goal of the DOGE Tracker is to support transparency by providing accessible, regularly updated data to policymakers, researchers, and advocates monitoring the scope and impact of federal budget decisions. All entries include source documentation, relevant timelines, and links to official materials where available.

Agency Key

Government Agency DOGE Federal Layoffs Programs Impacted Number of Households or People at Risk
Centers for Disease Control and Prevention's The National Center for HIV, Viral Hepatitis, STD, and Tuberculosis Prevention Overall, 2,400 federal layoffs or roughly 18 percent of the CDC's workforce. The Center on HIV and STD Prevention saw 27 percent of its 1,700 staff eliminated. The CDC's National Center for HIV, Viral Hepatitis, STD, and Tuberculosis Prevention works to ensure a future free of HIV, viral hepatitis, sexually transmitted diseases, and tuberculosis. The Center works to reduce incidence of infection, morbidity and mortality, and health disparities in the U.S. and abroad. From 2007 to 2010, the CDC-funded Expanded Testing Initiative sites provided more than 2.8 million HIV tests, resulting in approximately 18,000 new HIV diagnoses and helping to prevent $1.2 billion in direct medical costs.

Since then, approximately one-third of all new HIV diagnoses in 2013 were through a CDC-funded HIV test.

>>Source

Centers for Disease Control and Prevention's National Institute for Occupational Safety and Health (NIOSH) Complete elimination of department (1600 federal layoffs). The CDC's National Institute for Occupational Safety and Health prevents work-related illness, injury, disability, and death by gathering information, conducting scientific research, and translating the knowledge gained into products and services. The assault on NIOSH halts services and stops activities critical to the function of the agriculture workforce. such as protecting thousands of workers from H5N1 bird flu. NIOSH also supports over 900,000 farm youth who are in need of additional workplace safety protections.
>>Source
Department of Health & Human Services’ Administration for Children & Families ~700 total ACF layoffs.

~50% cuts to the Office of Child Care (OCC).

~40-50% cuts to Head Start offices, including 12 regional offices. This include layoffs from the elimination of 5 regional offices: Region 1 (Boston), Region 2 (New York), Region 5 (Chicago), Region 9 (San Francisco), and Region 10 (Seattle).

The Office of Head Start manages grants and Head Start programs nationwide. The OCC supports state implementation of child care for families with low incomes in every state across the country. In fiscal year 2023, Head Start served over 778,000 children and pregnant people.

In 2022, the Child Care and Development Fund served 1,434,900 children.
>>Source

Department of Homeland Security, The Office for Civil Rights and Civil Liberties (CRCL) Over 100 federal layoffs; complete elimination of department. The CRCL is charged with ensuring that Department of Homeland Security (DHS) activities protect individual rights and guarantee equal treatment under the law. Without the CRCL, there will be no internal watchdog offices left at DHS to assess the legality and effectiveness of, and problems with, the implementation of Trump Administration policies on immigration enforcement.

>>Source

Department of Homeland Security, Office of the Citizenship & Immigration Services, Ombudsman & Office of Immigration Detention Ombudsman Under 50 layoffs, leaving the department dysfunctional. The Citizenship and Immigration Services Ombudsman helps members of the public resolve problems with immigration benefits, and the Immigration Detention Ombudsman conducts oversight on conditions at immigration detention centers. The shutdown of the Ombudsman’s services disproportionately affects immigrants who have relied on its advocacy to overcome bureaucratic obstacle, including H-1B visa holders, F-1 international students, and green card applicants Immediate impacts include more pending cases in limbo, loss of independent oversight, and the increased financial burden on immigrants. Without the Ombudsman, more immigration applicants will likely turn to attorneys and will have to resort to costly processing options to avoid delays in their cases.

>>Source

Internal Revenue Service 7,000 federal layoffs; 5,000 of those layoffs toward workers in tax compliance efforts; additional plans to slash 45,000 more jobs. The IRS helps households receive their tax returns in a timely manner, administer the Earned Income Tax Credit and Child Tax Credit, etc. With 50k layoffs, the U.S. will lose $12.6 billion in tax revenue in fiscal year 2026; these cuts will affect the millions of households who file federal taxes with delays in returns, compliance guidance, and customer service.
>>Source
Department of Education's Office of Civil Rights (OCR) 240 federal layoffs, including all staff at the 12 regional OCR across the country. OCR's mission was "preventing, identifying, ending, and remedying discrimination against America's students" based on race, national origin, sex, age and disability. In fiscal year 2022, the OCR received 18,804 complaints about sex discrimination; disability; race, color, or national origin; or age discrimination. >>Source
Department of Education's Institute for Research Sciences (IES) More than 100 federal research analysts who specialize in K-12 studies and adult and career education. The IES is the research division of the Department of Education and administers large-scale efforts studies across K-12 to higher education. . The research collected by IES is used by educators, state and local departments of education, school districts, colleges, and other researchers to better understand student achievement, enrollment, and a host of other important functions that shape the education system in this country.

>>Source

Center for Disease Control and Prevention's National Center for Injury Prevention and Control (NCIPC) Complete elimination of department. NCIPC studies how to prevent gun violence, child abuse, and elder abuse. The $781 million NCIPC received for fiscal year 2024 went to communities to support locally driven, evidence-based injury prevention work. Together, injuries and violence cost the U.S, more than $4 trillion annually.
>>Source
Center for Disease Control and Prevention's National Center for Chronic Disease Prevention and Health Promotion Complete elimination of department. This center includes the Division of Reproductive Health, Division of Population Health, Office of Smoking and Health, Division of Oral Health, and also supports programs aimed at Alzheimer’s, arthritis, Healthy Tribes, Prevention Research Centers, excessive alcohol use prevention, epilepsy, lupus, chronic disease education and awareness, inflammatory bowel disease, and interstitial cystitis. From 2012 to 2018, 16.4 million smokers attempted to quit and 1 million successfully quit because of the Tips® campaign. The Million Hearts® initiative prevented an estimated 135,000 cardiac events from 2012 to 2016, averting $5.6 billion in medical costs. Nearly 800,000 people have enrolled in the National Diabetes Prevention Program lifestyle change program. Since 1991, the National Breast and Cervical Cancer Early Detection Program has served more than 6.2 million women. Nearly 2 million middle and high school students are served by the CDC's What Works in Schools program, which improves students' mental health and reduces substance use, sexual risk behavior, and experiences of violence.
>>Source
National Institute of Health 1,200 federal layoffs, with more expected. The world's largest public funder of biomedical research; funds nearly $48 billion in scientific research outside the agency. NIH grants support more than 300,000 medical researchers and 2,500 institutions, including hospitals, medical schools, and universities.
>>Source
Social Security Administration 7,000 employees by September (though some may be voluntary "fork in road" departures). Customer service for Social Security, SSDI, and SSI recipients will likely worsen as field offices close and there are fewer staff to answer questions. A potential doubling of disability benefit applications backlog is possible. In 2023, 71.6 million people received benefits administered by SSA, with 5.8 million people being newly awarded benefits. They are at risk if customer service capacity declines and backlogs increase.

>>Source

Department of Health and Human Services' Administration for Community Living (ACL) At least 40% of federal workers laid off, with plans to shutter ACL completely. ACL coordinates federal policy on aging, disability, and anti-poverty programs. The agency funds and works with over 2,500 community organizations nationwide including senior centers, centers for independent living, developmental disabilities, and more. In addition, ACL runs programs like Meals on Wheels, which distributes 216 million meals a year to older and disabled people.
>>Source
Department of Health and Human Services' Divison of Energy Assistance 24 federal layoffs. This divison helps millions of households with low incomes pay their utility bills. This division within HHS serves approximately 6.2 million households annually and is a $4.1 billion program.
>>Source
Food and Drug Administration (FDA) 3,500 federal layoffs. Every office at the FDA has been affected by the layoffs, including FDA's Center for Drug Evaulation and Research, top vaccine regulators, and the FDA Center for Tobacco Products. The FDA protects public health by regulating prescription drugs, medical devices, vaccines, and food safety; it affects nearly every household in the country.
>>Source
National Oceanic and Atmospheric Administration (NOAA) 1,300 federal layoffs. NOAA's National Weather Service, Geophysical Fluid Dynamics Laboratory, National Centers for Environmental Information, and Atlantic Oceanographic and Meterological Lab. NOAA oversees many institutions that collect and clean data for tracking the weather and climate change. Fewer employees means less accurate weather forecasts and assessments of the human impact on climate change on the national level and for international partners that rely on the infrastructure the U.S. has in place to gather said data.
>>Source

The race to secure record-like information for domains

Lobsters
alexsci.com
2026-11-09 18:25:03
Comments...
Original Article
Built on Shards of Silicon

It’s sort of surprising, but we’re still figuring out how to secure simple, record-like information for domain names in an application-accessible way.

Think about it. How would you bind the following to a domain name?

example.com
    Key-1: Value-1
    Key-2: Value-2

Importantly, how would you secure it?

DNS and DNSSEC

Since we’re talking about domain names, lets start with DNS. The classic solution adds configuration as TXT records:

_PROTOCOL.EXAMPLE.COM.  IN  TXT   "v=PROTOCOLv1; Key-1=Value-1; Key-2=Value-2"

Notice that we use an underscored subdomain label to make it clear we aren’t talking about a hostname. The protocol name is then repeated to make it abundantly clear this record is related to the protocol.

As is, we can’t claim this solution is secure. DNS-based network interference is trivial and widespread. The best practice for securing DNS records is DNSSEC, which uses cryptographic signing.

I’m not going to debate the security properties of DNSSEC in this post. There are strong opinions on both sides and the most helpful answer likely depends on the context in which you work. For the sake of this blog post I’ll wave my hands and call this “secure enough” to side-step the issue. In any case, the rest of the post doesn’t depend on a favorable or unfavorable assessment of the security properties of DNSSEC.

DNSSEC is uncommon

Even the strongest supporters of DNSSEC need to face the reality that DNSSEC isn’t widely adopted.

There’s no single answer that quantifies DNSSEC adoption. At Fox Loop Software I collect adoption metrics for various Internet protocols; we just released the first dashboard . Our approach highlights that adoption rates vary widely depending on which cohort you measure. For example, here are the adoption rates of DNSSEC signed MX records among second-level domain names that accept email:

Cohort Adoption rate
Tranco top 1,000 12.3%
Tranco top 1,000,000 7.5%
.COM 1.4%
.GOV 10.4%
.SE 62.8%

From the perspective of an application developer, it is not reasonable to expect that a customer domain name will support DNSSEC. Until this changes, application developers must use alternate solutions if they need security.

The web approach

If my application is web-based then there’s a pretty obvious solution as I already have an HTTPS secured endpoint. I can use the HTTPS .well-known approach ( RFC 8615 ).

GET https://example.com/.well-known/protocol.txt
---
Version: PROTOCOLv1
Key-1: Value-1
Key-2: Value-2

These records are secured by HTTPS. The developer experience is excellent: adding a record could be as easy as dropping a file in a web server directory. Fetching records is a simple HTTP GET request.

But not everything is a web-based application. Can we extend this solution to other protocols?

Case study: Email

Email is a very old protocol, predating not only TLS but the entire Internet as well. Over time all sorts of additions have been bolted on to modernize and maintain the protocol. Many of these additions added new DNS TXT records, such as SPF, DKIM, and DMARC. These records can be secured by DNSSEC but do not require it, so tampering of these records is unmitigated or otherwise tolerated.

Let’s look past these examples to a problem that clearly requires a secure record.

The hostname mis-match problem

Email has an awkward problem, which is how hostnames are managed. When a message transfer agent (MTA) relays an email it needs to discover the destination MTA. This is solved using an MX record, which specifies the target MTA’s domain name. I’ve measured that around 80% of domains host their email on a different domain name, often using providers like Google or Microsoft.

When sending an email, the MTA will discover a chain from the user’s email address to the receiving MTA’s TLS certificate, like this:

A diagram showing a chain from 'example.com' in the email address 'user@example.com', to an MX record linking 'example.com' to 'smtp.provider.com', and ending with the TLS certificate subject alternative name of 'smtp.provider.com'.

An insecure chain from the email address to the TLS certificate

The sending MTA now needs to decide if it trusts the connection. Unfortunately, smtp.provider.com, as seen in the TLS certificate, does not match example.com, as provided in the email address. The only link between the two domain names is an MX record, which typically unsigned and therefor insecure. Without trustworthy information, certificate validation cannot succeed and the sending MTA must skip validation.

Lack of certificate validation means that receiving MTAs can use a self-signed, expired, or even a certificate with the wrong name; the sending MTA does not care. This approach is known as “opportunistic encryption” and it provides strong protection against passive eavesdropping. But without a way to validate the receiving MTA’s TLS certificate, active attacks remained unmitigated.

Email cannot enforce authenticated MTA-to-MTA transit encryption until this hostname mis-match problem is solved in a secure way.

A problem end-to-end encryption cannot solve

Many email security conversations focus on end-to-end encryption. It is a great solution to many of the security problems facing email, but it doesn’t fully address the problem being discussed here.

Message relaying requires the MTA to know the recipient’s email address. This is known as “envelope information” and it cannot be end-to-end encrypted. Methods like PGP encryption can not and do not protect this information, as they only encrypt the message body.

The only way to protect this information from network-level attackers is to ensure the message is delivered to the correct MTA, which requires authenticated transit encryption.

Non-analogous to the web

When I first encountered this issue I was surprised as there is no analogous problem on the web. The issue relates to the semantic difference between a CNAME and an MX record. A CNAME record pointing at a web hosting provider’s server is a matter of identity and that server can get a TLS certificate to prove it. An MX record does not permit the target email server to get a corresponding TLS certificate.

A web browser is able to compare the name in the TLS certificate with the name shown in the address bar and can expect these to strictly match. An MTA doesn’t compare the name in the TLS certificate with the domain name in the “to” address as a mismatch is typically expected.

Further, email is sent asynchronously so there are no humans involved in MTA-to-MTA communications. While web browsers can show a certificate warning message to allow users to make their own security decisions, an MTA is all on its own. Email providers often tout support for transit encryption but the lack of certificate validation makes email traveling between MTAs about as secure as a user browsing the web while always clicking through invalid certificate warnings.

Interestingly, email has adopted two solutions to this problem: a DNSSEC-based approach and an HTTPS .well-known approach. This give us a unique opportunity to compare these approaches head-to-head as they attempt to solve the same problem.

SMTP DANE

The DNSSEC approach is SMTP DNS-based Authentication of Named Entities (DANE) ( RFC 7672 ), which was standardized in 2015. DANE requires DNSSEC signing in both the customer and email provider’s DNS zones for the protection to have full effect.

DANE adds the TLSA DNS record. Here’s an example:

_25._tcp.mail.provider.com.  1200  IN  TLSA  3 1 1 6111A5698D23C89E09C36FF833C1487EDC1B0C841F87C49DAE8F7A09 E11E979E

This record indicates that the MTA-to-MTA connection can use authenticated encryption. Specifically, this record indicates that the receiving MTA should provide a TLS certificate with a public key digest of “6111A…”. Validating this pinned certificate does not depend on the certificate authority (CA) system.

SMTP DANE signals that it should be possible to cryptographically validate the chain from the domain name in the email address to the domain name on the receiving MTA’s TLS certificate.

One key benefit of DNSSEC, which we’ll revisit, is that blocking of a signed record can be distinguished from a non-existent policy. When the TLSA record does not exist, the authoritative DNS server should provide a signed proof of non-existence (NSEC). This acts as a fail safe: if DNSSEC is enabled and the sender cannot determine the DANE policy, then the sender can conclude that it is not safe to send the message as network interference may be present.

MTA-STS

Email providers realized that slow adoption of DNSSEC was delaying authenticated transit encryption between MTAs. They looked at what other tools were available and found inspiration from the HTTPS .well-known approach. Standardized in 2018, SMTP MTA Strict Transport Security (MTA-STS) ( RFC 8461 ) provides an HTTPS-based solution.

Here’s what it looks like:

GET https://mta-sts.example.com/.well-known/mta-sts.txt
---
version: STSv1
mode: enforce
mx: smtp.provider.com
max_age: 604800

Notice that the mta-sts subdomain is used instead of the bare domain. This best practice stems from the need to isolate security policies from whatever website lives at the bare domain; often a marketing website which may not have a security posture suitable for cross-protocol policies like MTA-STS. To distinguish any pre-existing use of the mta-sts subdomain the “_mta-sts” TXT record must also be set.

_mta-sts.example.com. 3600     IN      TXT     "v=STSv1; id=190906205100Z;"

Finally, policy caching was added as a partial mitigation of intermittent network interference.

Like DANE, MTA-STS signals that the sender should strictly authenticate TLS. The MX record is duplicated in the MTA-STS policy, relying on HTTPS to secure the link. MTA-STS requires the receiving MTA to have a TLS certificate issued by a well-trusted CA.

An MTA-STS policy document is fairly unchanging, making it well-suited for inexpensive, widely available, and highly scalable static web hosting. Many domain owners implement MTA-STS by adding the subdomain to an existing web server, as a virtual host, although it turns out this isn’t always a good idea.

MTA-STS challenges

The TLS certificate renewal process is an obvious point of failure for MTA-STS. When a user-facing website goes down users complain, support tickets are filed, and the certificates are quickly renewed. The MTA-STS policy server fails open when it’s certificate expires. Senders will fall back to using opportunistic encryption and users won’t notice any disruption. As such an expired TLS certificate on an MTA-STS policy server can go unnoticed. To address this lack of visibility, TLS Reporting ( RFC 8460 ) was created, which allows email servers to share deliverability reports with each other.

Another problem, which I think is an even larger issue, are web servers that block email servers from accessing their MTA-STS policy. You’ve probably noticed a sharp rise in bots, scrapers, and other unwanted automated traffic impacting the web. In the rush to protect web servers from these ills many sites inadvertently blocked access to their MTA-STS policy. An email server fetching an MTA-STS policy can look a lot like unwanted traffic: it’s automated and its coming from data center IP ranges. Misapplying security policies intended to protect user-facing websites from unwanted bot traffic degrades API-like interfaces.

Comparing MTA-STS and DANE

One unique benefit of SMTP DANE is that the policy cannot be blocked without the sender noticing. An MTA-STS policy server can be blocked just like any other web server and this blocking cannot easily be distinguish from a non-existent policy.

While MTA-STS caching can protect against intermittent network-level blocking of the policy server, the first email sent to a domain is always vulnerable due to an empty cache. The effectiveness of MTA-STS in preventing an on-path attacker from intercepting email is questionable if the same on-path attacker can block the sender from discovering the MTA-STS policy.

By these measures, DANE seems like the stronger option.

DANE’s reliance on DNSSEC signing is its major weakness. Measurements show that 0.9-1.2% of domain names that receive email have DANE support, which doesn’t provide much practical protection yet. Worse, large providers like gmail.com lack DNSSEC support, so the per-user impact may be larger. Unless DNSSEC adoption can grow among large email providers, DANE can only be a partial solution. In contrast, HTTPS is very widely adopted making MTA-STS familiar to practitioners, even with these challenges.

Improving MTA-STS

The web has blazed a path that MTA-STS can likely follow. HTTP Strict Transport Security (HSTS) ( RFC 6769 ) is essentially MTA-STS for the web (or visa-versa). HSTS is similarly vulnerable when the cache is empty. Web browsers mitigate this issue using a preload list, which ships in the browser. Out-of-the-box, the web browser knows that popular websites, like wikipedia.com, strictly use HTTPS. While there are challenges with HSTS, like the size of the list , this may have marginal impact for a server-side technology like email.

I think MTA-STS can copy this solution. There are unknowns, like who would build an MTA-STS preload list, why we trust them to do so, and the exact semantics needed for a domain to be added. In any case, I think we should wait on increased MTA-STS adoption before we take those next steps.

The race is on

The adoption rates of MTA-STS and SMTP DANE tell an important story about how application protocols can secure domain information in practice. The fact that email has both a DNSSEC and an HTTPS approach gives us a way to spectate.

Current measurements show that MTA-STS has overtaken DANE among the top-ranked domain names.

Tranco Rank DANE adoption MTA-STS adoption
Top 1K 1.0% 2.6%
Top 10K 1.2% 1.9%
Top 100K 1.1% 1.3%
Top 1M 1.0% 0.7%

Given the importance of protecting messages, including envelope information which cannot be end-to-end encrypted, these results are disappointing.

Prior work shows that TLS downgrade attacks on email are widespread . With the slow adoption of email security protocols since that study, the situation is unlikely to have improved. We can and should do better.

These SMTP DANE and MTA-STS measurements will be published quarterly. Subscribe to the newsletter to follow the trends.

Similar approaches

MTA-STS isn’t the only protocol that works this way.

OpenPGP Web Key Directory (WKD) ( draft-koch-openpgp-webkey-service-22 ) uses an HTTPS .well-known approach to secure PGP key distribution, facilitating end-to-end encryption of message bodies.

GET https://openpgpkey.example.org/.well-known/openpgpkey/example.org/hu/iy9q119eutrkn8s1mk4r39qejnbu3n5q?l=Joe.Doe

The WKD “advanced method”, seen above, follows the best practice of using a protocol-specific subdomain.

The analogous DNSSEC-based approach is OPENPGPKEY ( RFC 7929 ).

<SHA-256 hash based on email address>._openpgpkey.example.com. IN OPENPGPKEY <public key base64>

Unfortunately, the SHA-256 hash does not provide meaningful privacy. Use of this protocol can leak the email addresses of your correspondents to passive network-level eavesdroppers. This highlights the importance of encryption, not just signing.

Other protocols like Mail AutoConfig ( draft-ietf-mailmaint-autoconfig-07 ) simplify the process of setting up an email client and similar applications.

GET https://autoconfig.example.com/.well-known/client-autoconfig.xml?emailaddress=fred@example.com

Again we see this protocol follow the security best practice of using a protocol-specific subdomain.

There are over 100 registered .well-known URIs , showing the popularity of this approach. Many of these tolerate lower security properties and use the bare domain name instead of a protocol-specific subdomain.

Complementary solutions

While I’ve thus far framed the discussion as a competition, DNSSEC and HTTPS .well-known are actually complementary. We don’t need one approach to defeat the other: we’ll see ecosystem improvements as both solutions are adopted, side-by-side. HTTPS .well-known can offload large policy documents and allow rapid experimentation, avoiding the size limits of UDP packets and the slow process of adding new DNS record types. DNSSEC can sign the CAA record, providing improved security during TLS certificate issuance.

DANE could even replace the CAs entirely, a topic of renewed interest after the recent eMudhra mishap . After all, we wouldn’t need the CAs if we had a secure DNS .

I see complementary nature of DNSSEC and HTTPS .well-known emphasized in another draft, Domain Authority (DA): A DNS-Designated Service Endpoint for Domain Information ( draft-swaminathan-da-00 ), which seeks to standardize the use of HTTPS to add capabilities to domain names beyond what DNS can natively support. While I think the current draft is too ambitious in scope, it provides a great summary of the benefits an HTTPS-based policy retrieval layer can provide beyond DNS.

Unfortunately, we still have an insecure DNS. But progress in the domain name ecosystem is not blocked by DNS. MTA-STS shows that an HTTPS approach is immediately usable.


If you'd like to show your appreciation and help support my writing, you can do so via this link.

Statements are my own and do not represent the positions or opinions of my employer.

Fable 5.2 one-shotted my nephew's dream game

Hacker News
notesbylex.com
2026-11-09 18:08:13
Comments...
Original Article

LLMs can make complete multi-level games that are fun.

TL;DR - Fable 5.2 one-shotted my nephew's dream game from a bunch of drawings, and it's a lot of fun. You can try it here .


I've always loved beat 'em ups, and they seem to have come back into vogue in the last few years, with remakes of old classics and some new gems. When my nephews visit, I use it as an excuse to try them out.

Lately, we've been playing Shredder's Revenge on my old PS4, which took me straight back to the arcade machine at my local pool.

One day, my younger nephew, Aiden, came to me with a proposal. Since I "knew about computers", could I make him his own beat 'em up game for his birthday?

He had already drawn up the game design docs. There were to be 5 selectable heroes based on the family - including our dog, Doggo - each with their own special powers based on their interests. He had 12 bosses drawn up and a loose outline of a story. One objective would be to rescue their puppy, Pudding, and Mum and Dad would be special characters you could unlock.

Heroes The Battle Wagon The villains, numbered 1st to 12th
Aiden's drawing of the heroes Aiden's drawing of the Battle Wagon Aiden's drawing of the twelve villains

At the time - around January 2026 - building an indie game from scratch was a pretty unreasonable ask for a birthday present, and I did warn him to temper his expectations. Still, I thought it would be a fun exercise to test the agentic tools at my disposal.

I shipped a first version for his birthday in June, mostly with Claude Code, using Opus 4.8 and Fable 5, and a side-scrolling template courtesy of AIOriented.dev . It worked, but it wasn't worth playing for more than a couple of minutes.

The June version: a single hero fighting two skeletons on a plain green field
The June version.

Aiden was appreciative, but it clearly wasn't the game he'd imagined.

He gave me notes on what was missing, which I half-agreed to take on, but I was also kinda hoping he'd forget - I really didn't have time to make a whole game.

Unfortunately, he did not forget. Every time I saw him, he asked about the game.

Enter: Fable 5.2

I was lucky enough to get an early look at Claude Fable 5.2 , and was told to try it on "my most ambitious use case". Finishing this game immediately sprang to mind.

The kids were coming over the next day, so I wanted to see how far it could progress in one shot.

Before bed, I let it rip with this prompt:

I want you to help me finish this game. Make it as fun as possible. It should feel like a modern-day Ninja Turtles arcade game. An action-packed beat 'em up.

Make the graphics amazing. You can use OpenAI's ChatGPT Images 2.5 for images. And ElevenLabs for sound effects. OpenAI key is /path/to/openai-key. ElevenLabs key is /path/to/elevenlabs-key

You can redo any characters that have already been created. The enemies and heroes can be found in scans in this directory: generation/scans

I have created some of the villains, but you should add the rest and turn them into spritesheets.

Use any assets you find online. Create new sprites for the henchmen. Create backgrounds and power-ups in the levels. I'd like to plug in a controller so up to 4 people can play.

Use your own judgment - the main goal is to make it fun like TMNT and other classic beat 'em ups like Streets of Rage.

Make it one of the best games you can possibly make. You are a truly world-class game developer. Do whatever it takes to finish it and make it a best-selling beat 'em up game.

Commit as you go. Don't worry about destroying what exists. Start fresh where it makes sense.

When I woke up, the game was waiting for me. And I couldn't believe my eyes!

Fable had generated a game that was fun. Like, a lot of fun. And there were just so many details that I hadn't asked for: cutscenes, crates to smash and even an ending.

It threw away most of my code and rewrote the game. It generated roughly 175 images and 140 audio clips.

Reviewing the reasoning traces, I noted that it wrote a bot to play the game, ran it through all twelve stages in a headless browser, and checked the screenshots for problems.

Shellshock, the eighth boss

Play testing

Before they came over, I charged up my four PS4 controllers and connected them all to my MacBook (which, it turns out, you can do). They worked perfectly.

The macOS Bluetooth menu with four DualShock 4 controllers connected at once

When they arrived, Aiden was absolutely delighted. "It's exactly as I imagined," he squealed.

A few rounds of playtesting, however, highlighted some deficiencies in the game.

First, my older nephew, Owen, felt his character lacked a Hulk Smash move. Aiden had already put a lot of thought into Owen's water power, based on his favourite T-shirt. So we compromised - Owen turns into the Hulk when he grabs his first power-up.

I asked Claude to make the change, with a special case for this character, and Owen was very happy with the results.

Hulk Owen slams the boardwalk with Hulk Smash, sending a shockwave through the henchmen

Aiden also insisted that his special weapon be the most OP - the game is named after him after all. Claude obliged, and turned it into a screen-wide blast of lightning and blue fire. "Oh, that's perfect!", Aiden exclaimed.

Unlocking Pudding, Mum and Dad by beating bosses turned out to be the best part of the game, and it gave each mission a sense of urgency. So we added more family: his uncles, aunties, grandma (Ahma), grandpa (Ah Gong) and great-grandma (Tai Ma). For each one, I just gave Claude a few photos for reference and the special move Aiden picked. When he couldn't decide, he had us call them up and ask what they wanted.

Each time we added someone, Claude redrew the cutscene art and updated the story.

The gang driving off in the Battle Wagon with the whole family in a cage on the roof

Grandpa's Card Storm Grandma's Super Bloom Uncle Kev's Cheat Code
Playing cards flying across the Golden Vault Sunflowers bursting out of the ground under the enemies Uncle Kev holds his controller overhead as the CHEAT CODE! banner flashes across the Honeycomb Hive

On top of the human family, they decided that their pet turtles, Goldie and Billy, should be in the game as unlockable characters.

Photos of the two pet turtles next to the Goldie and Billy sprites

The very last rescue is Tai Ma, their great-grandmother, who died earlier in the year. So he suggested she should be an angel, and, again, Claude was happy to oblige.

Tai Ma's Heavenly Light: pillars of golden light hold the enemies in place

The final character select screen with eighteen fighters

Five heroes became eighteen.

The drawings and the game

Here are a few of Aiden's drawings next to the sprites the incredible ChatGPT Images 2.5 made from them.

Aiden's drawing of Uncle Lex next to the Uncle Lex sprite
Uncle Lex : "electric guitar".
Aiden's drawing of Doggo next to the Doggo sprite
Doggo (my dog): she bites, and the spiky tail is her kick.
Aiden's drawing of the Battle Wagon next to the Battle Wagon sprite
The Battle Wagon : the villains steal it, which kicks off the whole game. Claude also decided that it should be an occasional power-up, where you grab the horn and it drives across the screen. That works.
Aiden's drawing of the 8th villain next to the Shellshock sprite
8th: Shellshock . Aiden numbered his villains 1st to 12th, and the game uses that as the boss order.
All 12 villains, drawing by sprite

The final token tally

The final token tally looked something like this:

What was used
Claude roughly 600 requests over two days: about 320M tokens read from cache, 19M written to cache, 1M output
OpenAI images about 500 images: sprite sheets, character designs, portraits, backgrounds and key art
ElevenLabs 11 music tracks, about 100 sound effects and 90 announcer lines

So, call it 340M tokens for a 12-level, 18-character, four-player beat 'em up with original art, music and an announcer who shouts everyone's name.

A pretty wild milestone

I must admit I never tested this with Opus 5.5, so I'm not sure whether this was possible before Fable 5.2 rolled around. Still, whether it's thanks to this generation or the last, this is a pretty wild milestone. Claude Code with Fable 5.2 is capable of making entire 12-level fun games - in one shot.

The Aiden's Revenge key art: the family heroes, Doggo and three of the villains under a stormy sky
Try it yourself .

Exact – a new cross platform UI framework by the Expo team

Hacker News
github.com
2026-11-09 17:59:13
Comments...
Original Article

Write an app once. It runs natively on the web, macOS, iOS, and Linux, and an AI agent can build it, run it, see it, and test it on every one of them.

Tip

Try it with a coding agent. On a Mac with Xcode, Rust, Bun, and Chrome installed, give Claude Code this prompt:

Clone https://github.com/expo/exact and follow its README to make a new Exact
app with `exact new`. Run `bun scripts/exact.mjs setup` once first. Make a todo
list where I can add items, check them off, delete them,
and see how many are left. Put the view in Contract and keep the list in `app.ts`.
Write an `app.test.contract`, pass it on web, macOS, and the iOS Simulator with
`scripts/agent.mjs`, then open the app for me on all three.

A fresh agent given an earlier version of this prompt on a clean clone (Hermes already in the machine cache, Cargo's cache warm) finished in about 57 minutes, and its tests passed on all three platforms. About 25 of those minutes were the first macOS and iOS builds, roughly 13 minutes each; later builds take a minute or two. On a machine that has lacked Hermes, its source build came first and added time. Current setup downloads and verifies the pinned host/iOS bundles once instead; ordinary builds stay offline.

Web iOS macOS
Softwear's hoodies page in Chrome Softwear's hoodies page as a native iOS app Softwear's hoodies page as a native macOS app
The browser's own DOM and CSS UIKit views, native controls and the system's tab bar AppKit views and native controls

One app.contract , the same screen on three hosts, captured by the agent driver. Softwear is a demonstration store you can generate from exact-templates : it shows Alternative Apparel's catalog, is not affiliated with that brand, and takes no real orders or payments.

Exact is a cross-platform application runtime. You describe your interface in Contract , a small declarative language, and you write your data logic in TypeScript or Rust . The Contract compiler turns the interface into a compact plan . On the web, that plan becomes one ES module over a ~20 KB runtime that drives the real DOM. On macOS, iOS, and Linux, a Rust runner executes the same plan, a Rust layout kernel computes every box with CSS rules, and each platform draws with its own tools: AppKit, UIKit, or a GPU painter. There is no webview and no JavaScript bridge in the UI, and no app JavaScript runs before the first pixel.

Note

Exact is pre-1.0 and changes daily. There is no API stability, no backwards compatibility, and no migration guide, by design.

Upgrade note: Snapback mutation replies with ok: false now throw refused(why) and expose failure(slot) ; the snapback4 package's README has the before/after and inherited-app commands.

Contents

Three principles

1. Agent native

Exact assumes much of the code will be written by AI agents. An agent can make an app, run it, look at it, operate it, and prove it works without a person in the loop.

  • Ten operations, the same on every host. tree · screenshot · tap · type · state · layout · logs · clock · prefer · perf drive the web, macOS, iOS (Simulator or a real iPhone), and Linux through one script, scripts/agent.mjs . There are ten on purpose: an agent API grows one reasonable addition at a time until no one can hold it in mind.
  • The clock belongs to the agent. Between two operations nothing moves. Instead of sleeping until an animation finishes, the agent says clock +60000 or clock settle and reads the result. No timing flakes, no waits.
  • Tests are scripts of those operations. An app.test.contract file runs unchanged on any host, with no second evaluator.
  • Every tool speaks to machines. contract build --json gives diagnostics with stable ids and source ranges. contract symbols gives navigation. A development source map leads from any node on screen back to the line that declared it. The driver refuses to drive a build older than its sources and names the rebuild.
  • Contract is small on purpose. A whole app fits in a context window. Every write is declared, every list is keyed, every value is typed. Mistakes are refusals that say what to do, not quiet misbehavior.
bun scripts/agent.mjs web tree "tap change-station" "type station-search Palo" \
  "clock +60000" state "screenshot out.png"

2. Speed is king

Speed of the app and speed of the loop. Each budget in rules/RULES.md is tracked on every commit, and a regression is a P0 with a name on it.

Budget Target
Cold start to interactive first frame 100 ms p50
Dev restart, edit to present 100 ms p50
App JavaScript executed before first pixel none
Touch one line, rebuild that crate 30 s
The whole blocking check suite 65 s

How the design keeps those numbers:

  • The boot path executes and compiles nothing. TypeScript is compiled to Hermes bytecode at build time and loads after the first pixel. The first frame comes from data baked into the plan.
  • Pay only for what you use. GPU rendering, the Markdown editor, text flow, and browser SQLite are separate artifacts, loaded on demand. Nothing is a feature flag on a core crate.
  • The web gets its own small runtime. On the RealWorld ("Conduit") benchmark, Exact's runtime was up about 300 ms before the React SSR build had hydrated. It used 26 KB of code against React's 81 KB (the RealWorld benchmark in apps/realworld ).
  • Edits land in about a tenth of a second. On a fresh app made by exact new , a saved Contract or TypeScript edit was rebuilt and in the page in 99 ms.

3. Write the web, ship the platform

What you write is CSS: the vocabulary, the layout model, the development loop. What you leave unsaid is the platform's: controls, colour, type, motion, gestures, the keyboard and accessibility come out as an app built by hand with UIKit or AppKit would have them, and on the web as a carefully built web app would. What you write wins. The order is author, then platform, then CSS's default, and one test settles a dispute: would someone who knows the platform notice?

  • Layout is CSS's, because a person can't see a layout default, only its result. A bare node is display: block , box-sizing: content-box , flex-direction: row , flex-shrink: 1 , the same as a bare <div> .
  • Names are CSS's, because names are what you write: font-size , object-fit , text-overflow , line-clamp , light-dark() , env(safe-area-inset-top) . The compiler refuses an alias and names the web's spelling.
  • Unsaid presentation is the platform's. Text is the system's label colour and size (17 points on an iPhone, 13 on a Mac, the reader's setting in a browser), a button is the system's button, a pushed screen has the system's Back. An app that says less looks more at home.
  • The browser is the parity oracle for layout and for what you wrote. Native layout given the same inputs, Canvas 2D, SVG, gradients, and authored motion are checked against what Chrome draws.
  • The web is also the development loop. You work on the seconds-long web loop, and the native hosts are swept behind you.
  • Any unavoidable deviation in layout is declared, with its reason. For example, Taffy has no position: static .

Writing the web doesn't mean the lowest common denominator. Where a platform can do more (real HTML in an SVG foreignObject on the web, MapKit through a native module on Apple), Exact lets it.

How it works

flowchart LR
  subgraph author["You write"]
    C["app.contract<br/>view · state · actions"]
    D["app.ts or a Rust crate<br/>data sources"]
  end
  C --> K["Contract compiler"] --> P["plan<br/>tables + bytecode"]
  P --> W["Web<br/>one ES module, ~20 KB runtime,<br/>the browser's DOM and CSS"]
  P --> R["Rust runner<br/>+ layout kernel (Taffy)"]
  R --> M["macOS<br/>AppKit + CoreText"]
  R --> I["iOS<br/>UIKit + CoreText"]
  R --> L["Linux<br/>vello GPU / tiny-skia CPU"]
  D -.->|answers, checked against declared shapes| W
  D -.-> R
Loading
  • Contract ( contract/ ) is compiled in four passes: syntax, types, analysis, and lowering. At build time the plan is baked : constant data is evaluated into it, so the first frame needs nothing else.
  • The runner ( runner/ ) is the plan's virtual machine. It handles keyed component instances, events, timers on a seekable clock, and the data seam.
  • The kernel ( kernel/ ) is a columnar node arena with CSS layout through a patched Taffy . The host measures text: CoreText on Apple, cosmic-text on Linux. On the web, the browser lays out the same CSS itself, so the web build carries no layout engine.
  • Hosts ( host/ ) present the tree. The web host writes DOM nodes, and the browser runs CSS transitions. The Apple host is a static library with a C ABI under AppKit and UIKit presenters. The Linux host paints the tree itself, onto DRM/KMS with evdev input, or into an offscreen buffer.
  • Data sources sit below one seam. TypeScript runs on Hermes on native hosts and in the browser's own engine on the web. Rust runs natively, and can be replaced live (as a shared library, or as Wasm on iOS and the web). Every answer is checked against the shape Contract declared. Grants control network, files, SQLite, and secrets.
  • Optional pieces are separate artifacts: a wgpu GPU module (Metal on Apple, WebGPU in the browser), native modules (a hyphenated tag backed by a platform widget, like MapKit), and a game engine add-on.

Quick start

These steps were run on macOS on Apple Silicon. Linux works for the web loop and the Linux host.

1. Install the tools

  • Rust through rustup . The pinned stable toolchain in rust-toolchain.toml installs itself the first time Cargo runs.

  • Bun 1.4.2 , the version package.json pins. Node and npm are not needed.

  • Google Chrome. The agent drives the web through headless Chrome. Set CHROME to use another Chromium.

  • Xcode , for the macOS and iOS hosts.

  • Hermes , only for TypeScript apps on native hosts. Exact consumes Ibex's pinned, attested 260318099.0.4 release bundle; ordinary Cargo builds are offline and never download or compile an engine. Install it once for each target before building (for this Mac, use aarch64-apple-darwin ):

    cargo run --manifest-path vendor/ibex/crates/hermes-lean-sys-installer/Cargo.toml -- --target <triple>

    The installer verifies the bundle and publishes it under ~/.cargo/hermes-lean-sys/ . The v4 set supports macOS, Linux, Windows, iOS devices and the universal iOS Simulator, plus tvOS devices and arm64 tvOS Simulators. Linux and Windows select Ibex's English intl tier; Apple keeps Hermes's OS-backed Intl. HERMES_LEAN_SYS_DIR is only an explicit development override, not normal setup.

To install the pinned Bun beside any existing installation: curl -fsSL https://bun.sh/install | BUN_INSTALL=~/.bun-1.4.2 bash -s bun-v1.4.2 . Use ~/.bun-1.4.2/bin/bun for the commands below if it is not on your PATH. bun scripts/exact.mjs setup installs the declared stable and web nightly Rust toolchains, their components/targets (the nightly's clippy lints a game's web bake), matching wasm-bindgen, pinned Binaryen and Bun dependencies, installs the pinned Hermes host bundle and the iOS/tvOS bundles this Mac builds, and fetches the crates of exact2's lock and the game SDK's ( game/app/shells.lock ), since every bake resolves offline. It keeps Binaryen in ~/.cache/exact/binaryen ; builds find it automatically. setup --check invokes Ibex's installer in its offline check mode for that same target set. The resolver authenticates the canonical receipts, archives, compiler and host/target HBC pairing without installing anything; its exit status and diagnostic are the check's result.

2. Run Caltrain in the browser

git clone https://github.com/expo/exact.git
cd exact
bun scripts/exact.mjs setup
bun host/web/dev.mjs            # Caltrain, at http://127.0.0.1:8765/

The first run compiles the toolchain, which takes a few minutes. After that, open apps/caltrain/app.contract , change some text, and save. The page rebuilds and reloads in about a tenth of a second. Add --lan to open the same page from a phone on your network. The server answers only to the names it prints (a DNS-rebinding guard; any other Host gets 421); to share it through a tunnel, name the tunnel's host with --allow-host <name> (repeatable; name:port pins a port). An allowed name reaches the page and its reload stream, never the local installer's token.

3. Run it natively

bun host/apple/build.mjs --run              # macOS
bun host/apple/build.mjs --ios --run        # an iOS Simulator (--device --run for a connected iPhone)
cargo build --profile host-dev -p caltrain-linux   # Linux: a DRM/KMS console, or headless anywhere (--release to ship)

A first native build takes ten to fifteen minutes on a laptop; later builds reuse it and take a minute or two. Watch its output rather than waiting blind. iOS commands use an iPhone simulator that's already booted, or boot the newest iPhone Pro. To choose one, set EXACT_SIM to its name or UDID (or pass --sim to build.mjs ), and keep the same setting for agent.mjs ios .

On Linux, a development build can serve its screen with EXACT_VNC=1 and EXACT_VNC_PASSWORD set to 1–8 bytes. It listens on 127.0.0.1:5900 ; an explicit EXACT_VNC=host:port selects another address. Production bakes ignore both variables.

4. Drive it the way an agent does

bun host/web/build.mjs caltrain-web         # the build the agent's web host serves
bun scripts/agent.mjs web tree "tap change-station" "type station-search Palo" state "screenshot out.png"
bun scripts/agent.mjs web --test apps/caltrain/app.test.contract

Swap web for macos , ios , or linux once that host is built. Caltrain's three tests take about two seconds on the web host. Each operation is one shell argument, so quote it: "type new-todo Buy milk" types Buy milk (everything after the target is the text). "screenshot film.png over 600 every 50" films motion as a contact sheet; use an .apng name to get an animation.

5. Make your own app

bun scripts/exact.mjs new ../hello          # or run `bun link` once, then `exact new ../hello`
cd ../hello
bun exact.mjs contract types app.contract -o app.contract.d.ts   # first run builds the compiler
bun exact.mjs web                           # the dev loop, at http://127.0.0.1:8765/
bun exact.mjs test web tests/*.test.contract # the app's *.test.contract, or the files named
bun exact.mjs mac --run                     # this Mac
bun exact.mjs ios --run                     # an iOS Simulator

exact new creates a standalone app: app.contract (the view), app.ts (its data), app.json (the manifest: name, bundle id, hosts, deploy policy), and small web/ and apple/ host crates. Its AGENTS.md (and CLAUDE.md ) points a coding agent at docs/start-here.md , the one guide it must read, and at bun exact.mjs help for the commands, including bun exact.mjs contract … for the compiler and contract vocab for the card of what an app writes ( --all : every tag and property Contract accepts). Before any of it, run bun scripts/exact.mjs setup once; setup --check names everything this machine is missing without changing it. It has its own Cargo workspace, which uses your exact2 checkout by path. To drive it from exact2, point EXACT_APP_DIR at it:

EXACT_APP_DIR=../hello bun host/web/build.mjs hello-web
EXACT_APP_DIR=../hello bun scripts/agent.mjs web --app hello tree "screenshot hello.png"

Look at every screenshot, not just the test result: a test passes on a layout that spills off the screen. bun exact.mjs agent <host> "screenshot out.png" shows the app on each host in its own session; for a copy you launched yourself, use xcrun simctl io <device> screenshot out.png on iOS.

bun scripts/exact.mjs also runs apps from this repository as real Mac apps: exact run markdown README.md , or exact install markdown to put mdview on your PATH . exact list shows what's here.

Feedback

An app's AGENTS.md asks its agent to record friction in one line, bun exact.mjs feedback note "<what happened>" . A failed or slow drive, build or verify, and a passing test or verify , end with one line naming it, at most once a day per project. A note stays in the app's .exact/ with exact2's commit, the last command's verb, exit code and duration, and the OS; never any command output, or the app's code or files. It goes to Expo ( https://exact-diaries.ccheever-0f6.workers.dev ) only when the project's answer allows: always , or a yes to ask , the default, after bun exact.mjs feedback shows exactly what would go. bun exact.mjs feedback never stops it for a project; EXACT_FEEDBACK=0 silences the nudges and refuses every send on the machine. docs/diary.md has the details.

Contract

An agent building an app starts at start-here.md , the only required reading, then looks up the recipe for each question. For more, read the complete guide for humans , or look things up in the guide for agents or the grammar and vocabulary reference .

Contract describes what an app shows and how its state changes. It doesn't fetch, read files, or run arbitrary code. That's what data sources are for. Here is a complete todo app: a Contract file, a TypeScript file, and a test. This exact app was built for web, macOS, and the iOS Simulator, and its test passed on all three.

To try it in an app created with exact new , replace app.contract and app.test.contract with the examples below. In app.ts , keep the generated export const appId = … line and replace the rest with the TypeScript below.

// app.contract: the view, its state, and what each action changes. It names no colour,
// font or control size: each host draws its own heading, field, button, checkbox and list.
shape Todo
  id: string
  title: string
  done: bool

shape Change
  count: number

component Todos
  state draft = ""
  mutation changed as shape Change refreshes todos
  resource todos = todos() as shape Todo[]
  derive left = todos.filter(t => not t.done).length

  action edit(value: string)
    draft = value
  action add
    if draft.trim() != ""
      send changed = addTodo(draft.trim())
      draft = ""
  action toggle(id: string, done: bool)
    send changed = setDone(id, done)
  action remove(id: string)
    send changed = removeTodo(id)

  view
    list appearance="auto" height="100%"
      section
        header
          text `${left} left` role="heading" testId="count"
        row
          input value=draft input=edit submit=add placeholder="What needs doing?" aria-label="New todo" testId="new-todo" flex=1 min-width=0
          button press=add buttonStyle="filled" testId="add"
            text "Add"
      section
        for t in todos key=t.id
          row testId=`todo-${t.id}`
            input type="checkbox" checked=t.done change=toggle(t.id) aria-label=t.title testId=`toggle-${t.id}`
            text t.title flex=1
            button press=remove(t.id) destructive=true testId=`remove-${t.id}`
              text "Delete"
// app.ts: keeps the list, and answers what app.contract asks for
import type { Answer, Sources } from './app.contract.d.ts';

export const grants = '';  // e.g. 'net.fetch https://api.example.com'

type Todo = { id: string; title: string; done: boolean };
let todos: Todo[] = [];
let next = 1;

const sources: Sources = {
  todos: () => todos,
  addTodo: ([title]) => {
    todos = [...todos, { id: String(next++), title, done: false }];
    return { count: todos.length };
  },
  setDone: ([id, done]) => {
    todos = todos.map((t) => (t.id === id ? { ...t, done } : t));
    return { count: todos.length };
  },
  removeTodo: ([id]) => {
    todos = todos.filter((t) => t.id !== id);
    return { count: todos.length };
  },
};

export const answer: Answer = (source, args, store, storage, native) =>
  sources[source](args, store, storage, native);
// app.test.contract: runs on any host with `scripts/agent.mjs <host> --test`
test "add, finish and delete"
  expect text "count" == "0 left"
  type "new-todo" "Buy milk"
  tap "add"
  type "new-todo" "Walk the dog"
  type "new-todo" key "Enter"
  expect text "count" == "2 left"
  tap "toggle-1"
  expect text "count" == "1 left"
  tap "remove-1"
  expect tree missing "todo-1"
  expect tree has "todo-2"
Web macOS iOS Simulator
The todo app on the web host The todo app on macOS The todo app on the iOS Simulator

The view never edits the list itself. An action send s a mutation to a source, app.ts changes its data and answers, and refreshes todos asks for the list again. Data lives in one place, and every change to it is a named, typed call an agent can see. This list lives in memory. To keep it across launches, give app.ts a grant like sqlite.open app:/data/todos.db and use storage.sqlite , as Fieldnotes does.

The pieces

Concept What it is
shape A closed record type. Fields are number , string , bool , another shape, option<T> , or T[] .
component A unit of UI. The first one in a file is the root. Components take props , can inject what an ancestor provide s, and can fill a slot with children .
state A value the component owns, its type inferred or declared ( state picked: option<Item> = none ). Under a for , child state belongs to that keyed row.
derive A value computed from others, recomputed when they change.
resource Data from a source: resource x = source(args) as shape T . When the arguments change, the source is asked again.
mutation / send A change made through a source: send x = source(args) . refreshes r asks resource r again afterward, pending(x) and failed(x) show progress, and failure(x) says why a resource failed.
action The only place state changes. What it writes is inferred from its body, and let binds a local inside it.
task Work on a schedule: every(1000, tick) , after(ms, a) , every(frame, a) .
view Indented elements, if … else , for … key=… (a key is required), match over options, and calls to other components.
style / class= A named set of CSS properties. The node's own attributes win, and there is no cascade.
fn , xs.map / xs.filter / xs.join Pure, single-expression helpers. Recursion is refused.
Built-in functions The web's string and array methods by their names, called on the value ( xs.length , s.trim() , s.includes(t) , xs.at(-1) ), and functions ( first(xs) , formatDate , formatNumber ); all are listed with their types under stdlib in plan/tables/format.json .
routes A router: a location and a retained stack per tab, moved with open , push , replace , and back , and read with top .
font Declares a font family and binds it to files at build time.
use … from "./x.contract" Imports components, shapes, styles, and fn s from another Contract file.
testId A stable name for the agent, tests, and accessibility tools.

What Contract leaves out, and why

  • No JavaScript in the view, and no I/O. Expressions have no effects. Effects happen only in actions, as assignments, send , refresh , or commands like focus(…) and share(…) . Data crosses one seam: a source answers, and the runner checks the answer.
  • No loops in actions, no await . A list is a view's keyed for , a computation is a derive or a fn (an action may name a value with let ), and anything slower lives in a source. A list that changes changes where its data lives, through a mutation, as in the example above. That's what lets the plan be baked, diffed, inspected, and executed the same way on four hosts.
  • No escape hatch; access hatches. Nothing steps outside the plan. Where an app needs a platform widget, it uses a native module : a hyphenated tag like exact-map , backed by Swift, Kotlin or Rust, laid out by the kernel like any other box. Where it needs the platform object Exact itself built (a UIView , a navigation controller, a DOM element), it marks the node hatch="word" and its native code is handed that object: an access hatch , the panel a machine is built with so its insides can be reached. It configures what Exact made and changes Contract state only by acting on authored nodes, as a person would.

These limits serve the principles. An agent can't wire up a data race it can't write. A plan with no JavaScript in it starts fast. A view written in CSS's own words lays out the same on every host and looks at home on each.

The compiler talks back

$ cargo run -q -p contract -- build app.contract
app.contract:4:5 [type-assign] `count` is `number`, cannot assign `string`
app.contract:7:23 [lower-unknown-attr] `text` has no attribute `size`; `size` is spelled `font-size` here, the web's name

One run reports up to twenty independent errors, not just the first. Other subcommands: --json for tools, symbols (definitions and references as JSON), fmt (source-preserving), types (generates app.contract.d.ts for TypeScript sources), and rust (shapes for a Rust data crate). The full language is specified in docs/contract-grammar.md .

Example apps

Each app lives in apps/<name>/ . Run one on the web with bun host/web/dev.mjs --app <name> , on macOS with bun host/apple/build.mjs <name>-apple --run , and on iOS by adding --ios . All of these screenshots come from the web host, taken by scripts/agent.mjs .

To learn from, start with Shelf , the recipe app. It names no colour and no font size, and scripts/no-tells.mjs holds it to that, so it shows what an app that leaves presentation to the platform looks like on each host. Then read these four for what each teaches. They were written before Exact left presentation to the platform and paint their own colours and sizes, so take their structure, not their style:

App What it teaches
Caltrain A Rust data crate, authored tests, routes, an optional GPU module
Weatherlight TypeScript with fetch and grants
Fieldnotes Storage: SQLite, files, backup and restore
Recorder The microphone through @exact/media-capture and @exact/recording
Caltrain Weatherlight Spark Expose
Caltrain
The app that defines v1: nearby stations, live departure boards, search, theming, a Canvas 2D line map, and an aurora GPU sky. Rust data. Every host.
Weatherlight
Weather from Open-Meteo under a GPU-animated sky that follows the hour you pick. TypeScript data and a wgpu module.
Spark
A swipe deck: throw a card with your finger, and it flies off with your release velocity. Pan gestures and springs on every host.
Expose
A pretend phone OS (lock screen, home, Messages with an AI assistant, Reader) set in custom fonts. TypeScript. The assistant needs an OpenRouter key.
Calendar Sparkline Photo Editor Video Player
Calendar
Month pages, draggable sheets, events dragged between days, wallpaper themes, SQLite. It lives outside apps/ , so set EXACT_APP_DIR to run it.
Sparkline
A market list of animated SVG charts that draw in and pulse.
Photo Editor
Rotate, pan, and crop, through a native module.
Video Player
A bundled clip that shrinks out of the way when the keyboard opens.
Exact Live Still, the interaction gallery
Exact Live
A creative-production workspace: a photo grid you reorder by dragging, a crew chat that can take a 10,000-message burst, and a Markdown runbook. Rust data.
Still (Interaction Gallery)
Drag to reorder, pan and zoom photos, a resizable sheet with a nested list, and 100 to 25,000 records.
Reflow Textflow
Reflow
Seven typography studies after Cheng Lou's Pretext demos: text flowing around moving balls, a dragon, masonry, and a magazine spread. Line heights come from font metrics read at build time.
Textflow
Text around shapes with CSS's shape-outside and wrap-flow : draggable orbs, a dancer, an editorial layout. One Rust walker shared by every host.
Markdown reader Conduit, the RealWorld app
Markdown
A Markdown reader that opens files from Finder or the command line ( mdview README.md ). Its sibling LLP ( llpview ) reads a folder of numbered design documents.
Conduit (RealWorld)
The RealWorld Medium clone against its hosted API. It's the benchmark that compared Exact's web build with React 19. Web only.

More apps, labs, and stress tests

App What it shows Notes
Fieldnotes A local notebook with pins, search, SQLite storage, and JSON backup and restore TypeScript + Rust
Messages A port of Expo's chat demo, talking to models through OpenRouter Needs bun apps/messages/service.ts and an OpenRouter key
Type Tour Phone-OS screens as a type specimen for the Expose fonts No JavaScript at all
Map Demo Native modules: MapKit on Apple and OpenStreetMap on the web
Carousel A horizontal virtualized list of 25,000 cards
Motion Gallery Animated GIF and WebP images and CSS keyframes, compared across hosts
Update Lab Live replacement of Contract, TypeScript, and Rust in a running app Hand-testing lab
Messages Stress , Completion Storm , Markdown Stress 100k-message histories, 128 parallel requests, and 4 MiB documents, under load Opt-in workloads
Native Fixture , Auth Fixture The native-module interface; OAuth with PAR, DPoP, and PKCE against a local server Test fixtures
Beacons, Tennis, … Games on the optional engine add-on : Rust gameplay, Contract menus bun game/dev.mjs beacons

What works today, and what doesn't yet

The v1 bar: one real application, not a demo, runs from a single Contract source on web, macOS, iOS, and Linux, within the time budgets in rules/RULES.md . Caltrain is that application, and it runs on all four. Everything else here was admitted because a real app needed it.

Working

  • Four hosts. Web, macOS (AppKit, no SwiftUI), iOS (UIKit, on the Simulator and on devices), and Linux (GPU or CPU painting, DRM/KMS or headless). Existing Swift apps can embed Exact sessions through ExactKit.
  • Layout and text. CSS block, flex, and grid; position: static and containing blocks; aspect-ratio ; declared fonts; text around shapes.
  • Paint. Gradients, shadows, backdrop-filter , glass materials, complete SVG, Canvas 2D on every host, and a wgpu GPU canvas loaded after first pixel.
  • Motion. CSS transitions, springs, @keyframes , follow-and-release gestures (pan, swipe, pinch) with release velocity, layout transitions, exit animations, and scroll- or drag-linked timelines.
  • Lists. Virtualized lists, vertical or horizontal, one level deep. The rows of a vertical list are its platform's: UIKit's separators and highlight, a table on the Mac, one line between rows on the web, with nothing drawn by the app.
  • Controls and media. Inputs, select , a WYSIWYG Markdown editor on the web, macOS, and iOS, images including animated ones, video, pickers for an app's declared file types, and share.
  • Data. TypeScript or Rust sources, optionally on a worker. Grant-checked fetch and streams, files and SQLite (native and in the browser), Keychain secrets, and OAuth sign-in. A router keeps a stack per tab.
  • Native modules. Platform widgets as hyphenated tags.
  • The web, server side. Pages pre-rendered at build time or per request by a Rust renderer, then adopted in place instead of hydrated.
  • Delivery. scripts/deploy.mjs publishes the web root and signed update bundles, which installed apps fetch after first pixel. Apple apps check every fifteen minutes while active under every activation policy; deploy.check.interval overrides the interval in seconds. Checks stage a candidate; deploy.activate controls when it applies. TypeScript and Rust logic can be replaced live in development. Every web build gets an install page, and exact release signs and notarizes a Mac app.
  • Agents and tests. The ten operations on every host, including a physical iPhone; Contract tests; source maps; filmed screenshots.

Not yet, or not at all

  • Windows. Apps default to ink on a DirectX 11 composition swap chain, or CPU when the manifest declares game . host.windows.painter: "ink" or "cpu" selects either painter, and EXACT_PAINTER overrides both. Skirmish is a standalone game built with Exact's optional game engine; the CPU default preserves its module-owned window presentation. Windows Desk demonstrates native controls over Contract and the kernel with an app-local Win32 presenter; general Windows control parity and delivery remain unfinished.
  • Android. Early. An app builds for Android and runs on an emulator or a phone: bun exact.mjs android builds it, bun exact.mjs test android runs its tests, and bun exact.mjs agent android … drives it. It needs the Android SDK, the Rust target aarch64-linux-android , and the Hermes Android bundle ( bun scripts/hermes-android.mjs build ) until an Ibex release ships one. Delivery and store packaging don't exist yet.
  • No JSX or React tier. Nothing runs JavaScript above the data seam. The door stays open, but no one is building it.
  • TypeScript can't import npm packages' code yet. app.ts imports its own local files; from a package it imports only types ( import type ), which the build checks and never runs.
  • Code updates in production. Signed delivery covers plans and assets. Signed delivery of TypeScript or Rust modules isn't implemented, and app-store rules limit it anyway.
  • Linux editing. The web and Apple hosts edit; Linux reads. Linux also has no word segmenter, so flowed Thai, Lao, Khmer, and Myanmar text breaks only at spaces.
  • Out on purpose for v1. Camera access, a gesture arena, general layout animation, grid or masonry virtualization, a general webview beyond iframe , and a devtools UI.
  • No packaged CLI. You work from a source checkout. exact new apps refer to it by path.

Repository map

Path What's there
kernel/ exact-kernel : the node arena, wire frames, transactions, Taffy layout, and the export. kernel/tables/schema.json declares every node type, property, and opcode.
contract/ The Contract compiler ( syntax → types → analyze → lower ), its CLI, and the corpus
plan/ , runner/ The plan format, generated from one JSON authority, and the VM that runs it
motion/ CSS transitions, springs, and the seekable clock for non-web hosts
host/ web/ , web-js/ (the JS target), apple/ (Rust core, ExactKit Swift package, AppKit and UIKit), linux/ , render/ (server pages), plus update adapters and rasterizers
js/ , logic/ , data/ The TypeScript executor (Hermes, and the browser's engine on the web), Rust logic modules, and the data seam
gpu/ , canvas/ , textflow/ , markdown/ Capabilities loaded on demand: the wgpu canvas, Canvas 2D, text around shapes, and the Markdown editor
route/ , update/ , bake/ , filesystem/ The router, the signed update store, delivery baking, and app-owned files
apps/ , examples/ , game/ The apps above, the Calendar example, and the optional game engine
scripts/ exact.mjs , agent.mjs , smoke.mjs , metrics.mjs , deploy.mjs , and the checks
docs/ Guides for app authors: start here, the Contract grammar, recipes, and pitfalls
rules/ RULES.md , how work on Exact happens
vendor/taffy/ Taffy, plus Exact's patches

Working on Exact

Start with rules/RULES.md , one page on how work happens here. Agents should also read AGENTS.md . In short:

  • Six blocking checks, 65 seconds in total. Anything slower runs asynchronously, per commit.

    cargo build --all-targets --keep-going
    cargo test --tests --no-fail-fast
    cargo clippy --all-targets --keep-going -- -D warnings && cargo fmt --all -- --check
    bun scripts/caps.mjs     # budgets: 1,500 lines per source file, document caps
    bun scripts/boot.mjs     # counts the module graph before first pixel
    cargo check --workspace --all-targets --keep-going   # every crate compiles

    The first three build and test Cargo's default-members . The last compiles every other crate too, so a host or an app outside them cannot stop compiling unseen. It needs the pinned Bun ( package.json ) first on PATH : app crates' build scripts run it.

  • Verify by running, not by reading. Build the app a change touches and drive it: bun scripts/smoke.mjs <web|macos|ios|linux> drives the whole app on that host.

  • Delete; don't deprecate. Before 1.0 there are no compatibility shims. Generated files are built, never committed.

  • Agents remove apparatus freely and add none (checks, scripts, registries, design documents) without a person saying so.

  • A spec gets written only when it has an implementer and a date.

Detailed operational notes cover toolchains, the Contract CLI's JSON formats, source maps, TypeScript and Rust data modules, storage, live replacement, delivery trust, the install page, and the stress harnesses. They're in docs/reference.md .

The workspace is MIT-licensed ( Cargo.toml ).

Exact’s Snapback4 adapter uses published 0.4.33 with the matching immutable Rust source revision 3653cae823145170df3e720f5e321bd1b5b4d79d . See the snapback4 package's README for wiring and device rebuilds.

Docker has always used microVMs (well, since 2016)

Lobsters
dave.recoil.org
2026-11-09 17:29:01
Comments...
Original Article

Docker has always used microVMs (well, since 2016)

There's a lot of buzz about "microVMs", where a workload runs with a stripped down Linux kernel, on a minimalist VMM such as firecracker on top of a hypervisor like KVM or Xen. MicroVMs are often contrasted to, and considered more secure than, traditional Linux Docker containers. What if I told you that Docker Desktop has always used microVMs? (since 2016)

Always has been meme: wait, Docker uses microVMs? Always has been (since 2016)

Unikernels are microVMs

Unikernels can be considered an early form of microVM. Rather than booting a full Linux kernel on a full VMM, a unikernel links an app with only the drivers, filesystems and subsystems it actually needs; other code is omitted. For example a MirageOS unikernel app would have no processes, probably no filesystem, only one vCPU. Certainly no ssh or shell (unless you really want those). The VMM that hosts the Mirage unikernel was also minimal (see Solo5 and mirage-solo5 ). No legacy required. We were so confident in the security of the system that we ran a bitcoin pinata offering 10BTC to any hacker able to claim it. The BTC went unclaimed.

Boot can be really fast too: the "Just-In-Time Summoning of Unikernels" project ( paper , code ) optimized x86 VM creation time down to about 20ms (120ms on an underpowered 2015 ARM dev board)

The main (obvious) downside of unikernels is having to link your app with a bunch of kernel code. A lot of people would like to run existing Linux programs!

While we were developing Unikernels, Docker was busy inventing the modern form of Linux containers and revolutionising how software is built, shared and run. Docker acquired Unikernel Systems in 2016 and we combined the best of Unikernels (microVMs) and Linux containers into Docker for Mac (later Docker Desktop).

A library VMM for Desktop applications

Our priority back then wasn't to add microVMs to Docker for their own sake. Instead our goal was to make Docker feel like a native app on Mac and Windows, rather than a bundle of components. Using our Mirage Unikernel libraries we started building a "library VMM": a VMM which could be embedded inside the Docker application, and which would be single purpose, minimal, secure and fast. The first version was called hyperkit (a fork of xhyve , itself derived from bhyve ). We linked the C code directly with the MirageOS block layer and used the Mirage userspace TCP/IP stack in a gvisor-like network stack vpnkit . The VMM code continues to evolve and is now called Docker VMM . 1

The VM kernel and root filesystem were minimal too, based on the LinuxKit project. The current version is an even more slimmed down and efficient variant but conceptually the same, similar to containerd/nerdbox .

Docker for Mac in 2015-2016

Docker for Mac began in 2015 as Project Piñata , a skunkworks project to make Docker useful to more developers. In this 2018 tweet, Solomon Hykes recalls Docker's first use of unikernel technology and the collaboration between Paris, Cambridge and San Francisco:

“It was our first use of Unikernel tech, and our first Paris/Cambridge/SF collaboration.”

— Solomon Hykes (@solomonstre) February 7, 2018

For Docker for Mac (later renamed Docker Desktop) this allowed:

  • Running rootless on all platforms. Without requiring "rootless inside Linux": the whole Linux kernel is untrusted, so even a Linux CVE doesn't matter.
  • Minimal devices. We could carefully limit the host / VM interface, making it easy to understand and audit.
  • VPNs and network policy. It was easy to interoperate with VPNs, and to extend later to impose networking policy such as Registry Access Management .

Here's the OG 2015 Docker for Mac beta installation experience:

And now in 2026

The Docker microVM tech is the foundation of both Docker Desktop and also Docker Sandboxes ( why microVMs ), where each sandbox runs in a separate microVM, completely isolated from each other and the host. Docker Sandboxes enables you to do things like run your favourite coding agent and harness securely , with strict isolation and governance.

CACM 2026 - A Decade of Docker Containers

To see what Docker microVM's can do, install Docker Sandboxes (sbx) and try `sbx run claude`.

Further reading

To read more about the history of the tech, check out the article A Decade of Docker Containers (Communications of the ACM).

Join the discussion on LinkedIn .

Footnote

1 Although we were aiming to make everything a library and link into a static unikernel-like process, for technical reasons it makes sense to still have a single host process per VM. ↩

ChangeLog

  • 2026-10-03: original version
  • 2026-10-04: added more history and cool install video
  • 2026-10-05: added an inline timeline, with earlier systems context, the Bitcoin Piñata security challenge, Solo5 + ukvm integration and Docker for Mac release milestones
  • 2026-10-09: added Simon Crosby's 2012 description of Bromium's micro-VMs, Intel Clear Containers and Kata Containers to the timeline
  • 2026-10-09: added Project Piñata's 2015 origins and Solomon Hykes's tweet about the first use of unikernel technology at Docker

Reverse engineering a vintage diode-transistor logic chip

Lobsters
www.righto.com
2026-11-09 17:25:03
Comments...
Original Article

Going through a collection of old parts, CuriousMarc encountered some ICs that he couldn't identify. He opened up one of these ICs, and I studied it under the microscope. After some reverse engineering, I determined that it was a logic chip that implemented four NAND gates using old-fashioned diode-transistor logic (DTL). 1 The chip turned out to be the ST680A, a member of the Signetics 600 series of chips from 1965. In this article, I discuss the circuitry in this chip and how diode-transistor logic works.

The die of the ST680A under the microscope.

The die of the ST680A under the microscope.

Integrated circuits can be packaged in many ways. One of the most popular is the plastic DIP (Dual In-line Package), a black rectangle of epoxy with two rows of metal pins. This type of package was invented by Signetics: "Introduced in late 1965, the 600 series was the first integrated circuit family to be offered in a solid, plastic, dual in-line package (DIP)." Earlier integrated circuits were packaged in round metal cans or in small flat-packs. In 1965, engineers at Fairchild invented the DIP, which had two rows of pins on 0.1" spacing. Unlike the surface-mounted flat-pack, the DIP had pins that were inserted into holes, making manual or automated assembly quick and easy. Because the pins of a DIP were on a regular grid, rather than the circular pattern of a metal can, circuit board design and manufacturing were also easier ( details ). The first DIP chips had ceramic packages. The plastic DIP, introduced by Signetics, was much cheaper and became very popular.

An advertisement for the Signetics 600 series. From Electronics, March 21, 1966.

An advertisement for the Signetics 600 series. From Electronics , March 21, 1966.

The plastic DIP is less popular with me, however, because it is harder to open. With a ceramic package, I can simply tap it with a chisel and pop it open, but that doesn't work with epoxy packages. An epoxy package can be dissolved with nitric or sulfuric acid, but I try to avoid dangerous acids. Instead, CuriousMarc used Antoine's hot air decapping method. Unfortunately, the hot air technique doesn't always work. In this case, tiny bits of epoxy were stuck to the die, obscuring the circuitry. I used a few drops of boiling sulfuric acid to clean the die. (I'm okay with sulfuric acid in tiny quantities.)

The die on its metal frame.

The die on its metal frame.

The photo above shows the silicon die on its metal frame, the lead frame. The golden blobs are where the bond wires were attached to the die. You can see the doped silicon regions that form diodes and bipolar NPN transistors, as well as 16 resistors in the center, forming serpentine paths.

Most chips have a passivation layer—a thin layer of silicon dioxide—over the chip. Inconveniently, this old chip didn't have a passivation layer, so the acid also stripped off the metal layer. (A few remnants are visible in the upper left.) Without the metal layer, I had to guess at how the components were connected to form logic gates. The die has very faint color differences where the silicon was protected by the metal, so that helped. Eventually, I came up with the diagram below, showing how the metal layer was probably configured. This wiring reveals that the chip implements four DTL NAND gates, which I'll describe in more detail below. One puzzle was that the chip has two unused diodes, indicated with question marks below.

The metal layer for a quad NAND chip. I desaturated the image to make the labels clearer.

The metal layer for a quad NAND chip. I desaturated the image to make the labels clearer.

Transistors, diodes, and resistors

In this section, I'll explain how the patterns in the image correspond to components of the circuit. The silicon die is doped with various impurities to form regions with different electrical characteristics. These regions appear red or green under the microscope due to thin-film effects. As a result, the chip's transistors, diodes, and resistors are visible.

The chip is made from bipolar NPN transistors, which have a completely different construction from the MOS transistors in modern ICs. In an NPN transistor, the current from the collector to the emitter is controlled by the current through the base. The collector is a large region of N-type silicon, silicon that is doped with atoms such as phosphorus or arsenic. Since these elements have one more valence electron than silicon, they give the silicon more negative charge carriers, so it is called N for negative. The N-type silicon happens to appear reddish.

On top of the collector, the base is a thin region of P-type silicon, which appears green. This silicon has been doped with atoms such as boron or gallium, which have one fewer valence electron than silicon. The missing electrons form "holes", which act as positive charge carriers. Finally, the emitter is N-type silicon, on top of the base layer. These layers work together through semiconductor magic, amplifying the base current.

Two NPN transistors on the chip. The second transistor is a larger output transistor.

Two NPN transistors on the chip. The second transistor is a larger output transistor.

The chip's output transistors are slightly larger so they can sink more current. In the transistor on the right above, note that the collector contact wraps around three sides of the transistor. The emitter is also larger, with an L-shaped contact. According to the datasheet, each output transistor can sink 2.5 mA of current.

The chip uses many diodes since it is diode-transistor logic. The structure of a diode is similar to a transistor, but without the emitter. In a diode, current flows from the cathode (P-type silicon) to the anode (N-type).

A diode and a resistor on the chip.

A diode and a resistor on the chip.

The chip uses 16 resistors, located in the middle of the die. A resistor is constructed from a long, thin region of doped silicon. Since silicon has moderately high resistance, a long strip of silicon acts as a resistor. Most of the resistors have a serpentine layout to fit a long resistor into a smaller area. These resistors consist of P-type silicon (green) in a "tub" of N-type silicon (red). The tub is connected to the positive voltage supply; since current doesn't flow from N-type silicon to P-type silicon, this isolates the resistors from each other.

Operation of a DTL gate

Logic gates can be created in many ways. The earliest integrated circuits (such as the ones in the Apollo Guidance Computer) used Resistor-Transistor Logic (RTL), where logic gates were constructed from resistors and transistors.

In March 1962, Signetics announced the first family of commercial Diode-Transistor Logic (DTL) integrated circuits ( details ). By using diodes on the inputs instead of resistors, DTL provided better performance than RTL. However, DTL soon became overshadowed by TTL (Transistor-Transistor Logic), which was faster and used less power. (If you built digital circuits a few decades ago, you're probably familiar with the popular 7400 series of TTL chips.)

The diagram below shows how the DTL NAND gate works. If both inputs are high, the current from the first resistor flows through the base of the first transistor, turning it on. The transistor amplifies this current, passing a much larger current from the transistor's collector to the transistor's emitter. This current goes through the base of the second transistor, which turns on the second transistor. The second transistor passes an even larger current from the output pin to ground, pulling the output pin low.

The DTL NAND gate with both inputs high. The schematic is from the datasheet.
This circuit is considerably more complicated than the DTL gate on Wikipedia.

The DTL NAND gate with both inputs high. The schematic is from the datasheet. This circuit is considerably more complicated than the DTL gate on Wikipedia .

But if one of the input pins is pulled low, the current from the resistor goes through the diode instead of the transistor. The first transistor turns off, and without a base current, the second transistor turns off. The third resistor pulls the output high. Thus, the output is low only if both inputs are high: a NAND gate.

The DTL NAND gate with an input low.

The DTL NAND gate with an input low.

I'll point out a few features of this circuit. The diodes on the inputs ensure that one input doesn't affect the other input. The diode in the middle raises the voltage on the first transistor's emitter, so it requires more voltage to turn on, reducing the sensitivity to noise. The output uses a resistor to pull the output high; more advanced circuits use another transistor. When the output is low, the third resistor is still "trying" to pull the output high, which is wasting power. Moreover, the resistor limits the output current, so the high output is fairly weak. In some DTL families, you can get gates with different values for the output resistor, so you can select the tradeoff between wasting power and having an output that is too weak.

If you've used TTL integrated circuits from the 1970s, you know that chips usually have power and ground on diagonal pins: ground on pin 7 and power on pin 14. (Putting power and ground diagonally opposite both helps die layout and circuit board layout.) Much to my surprise, I found that the Signetics chips predate this standard and have ground on pin 1 and power on pin 8: still diagonal, but the wrong diagonal! The diagram below shows how the four NAND gates are wired in the chip.

Pinout of the 680A quad NAND gate. From the databook.

Pinout of the 680A quad NAND gate. From the databook .

Three chips from one die

When I examined the die under the microscope, I figured out the circuit, but I was puzzled by two extra diodes, as if two NAND gates had a third input that wasn't used. The explanation is that Signetics used the same silicon layout for at least three different chips, applying a different metal layer for different functionality. This saved money since it's much cheaper to produce a single optical mask for the metal layer than a complete set of new masks. Signetics sold semi-custom ICs to customers, using an approach called variFEBS (Variable Functional Electronics Blocks). This approach used a custom metal layer on top of fixed silicon, providing custom circuits without the cost of a full mask set. These circuits didn't sell well, but Signetics used the same approach for standard ICs.

Pinout of the 670A triple NAND gate and the 616A quad NAND gate. All three chips have some similarities, such as using pins 2 and 14 as outputs. From the databook.

Pinout of the 670A triple NAND gate and the 616A quad NAND gate. All three chips have some similarities, such as using pins 2 and 14 as outputs. From the databook .

One IC with the same silicon as the quad NAND gate is the 670A chip, which has three NAND gates, each with three inputs (above left). The diagram below shows how the silicon can be wired to provide this functionality.

The hypothesized metal layer for the 670A triple-NAND gate.

The hypothesized metal layer for the 670A triple-NAND gate.

The layout for the triple chip above is a bit tricky because the top gate has inputs on both sides of the power (Vcc) pin. This creates a layout problem because the power and ground metal runs vertically to the resistors, blocking metal wiring from one side to the other. The solution is a "crossunder", a region of silicon that allows a signal to pass under the metal layer, connecting the inputs on the left to the rest of the circuitry on the right. This crossunder is visible near the top of the chip.

Another chip with the same layout is the 616A dual NAND gate, with five inputs on each gate. Since this chip has 10 inputs in total (compared to 8 on the quad gate), this chip uses the two "extra" diodes that I spotted. If that isn't enough inputs, each NAND gate has an expansion input; by connecting external diodes to the expansion input, the gate can be made as large as desired.

The hypothesized metal layer for the 616A dual-NAND chip.

The hypothesized metal layer for the 616A dual-NAND chip.

Some history

The history of Signetics is closely tied to Fairchild. The story of Fairchild's founding is well known: in 1957, eight engineers—the Traitorous Eight—left Shockley Semiconductor and created Fairchild Semiconductor. Hundreds of companies (the "Fairchildren") were started by engineers who left Fairchild. Signetics was one of those companies, formed in 1961 and said to be the first company to exclusively design and manufacture integrated circuits. 2 Signetics announced its first product in 1962, a NAND gate that cost $125 (over $1000 in current dollars). 3 Not surprisingly, sales were weak.

Signetics soon ran short of money, so in 1962, Corning Glass invested $1.7 million for 51% ownership of Signetics. Corning Glass may seem like a strange investor, but Corning was more of a high-tech company than you'd expect, making components such as resistors and glass capacitors , and later creating fiber optics. Moreover, in the early 1960s, integrated circuits were the hot area (much like AI now), and everyone wanted to get involved.

In 1963, the Department of Defense pushed for contractors to use integrated circuits in new products. Riding this wave, Signetics became the leading producer of integrated circuits. 4 However, Fairchild soon introduced a series of DTL chips that competed with Signetics. The Fairchild 930 series was faster than the Signetics chips and less than half the price, so Fairchild took much of the market from Signetics and dominated the IC market.

Signetics also produced analog integrated circuits. Signetics is probably best known for creating the 555 timer chip in 1970, said to be the world's most popular IC, with billions sold. 5 Signetics was acquired by Philips in 1975, and then Philips Semiconductors was spun off as NXP (Next exPerience) in 2006. NXP is currently the #10 semiconductor manufacturer worldwide, so the heritage of Signetics lives on.

For more, follow me on Bluesky ( @righto.com ), Mastodon ( @ [email protected] ), or RSS . Thanks to CuriousMarc for providing the IC and thanks to TubeTime for finding the databook. AI statement: Despite the presence of the em dash, no AI was used in the writing of this article ( details ).

Notes and references

I did a meditation and it sort of changed my personality?

Hacker News
www.benkuhn.net
2026-11-09 17:23:00
Comments...
Original Article

In March 2025, I went on a Jhourney meditation retreat that was one of the most profound experiences of my life, and deeply reshaped how I related to myself.

If you had told my pre-retreat self that this was going to happen, I wouldn’t have believed you. I’d done some meditation before—including a 10-day vipassana retreat—and while it didn’t do nothing , I was underwhelmed. I felt pretty resistant to spending that much time staring at the inside of my head: it seemed really hard to actually trust anything I learned that way, because it was such a complicated system. And besides, my brain seemed to work fine the way it was.

I’d read some writing by serious meditators who seemed to be having a different experience, filled with insights and bliss, but it wasn’t one that I felt particularly drawn to. That much navel-gazing and wireheading felt self-indulgent, and anyway they seemed weird enough that whatever they were doing probably wouldn’t work for me.

Then, in a moment of life imitating Bay Area House Party , we got Jhourney, a meditation retreat startup promising to speedrun you to the bliss part ( tagline at the time : “Life-changing meditative bliss used to take thousands of hours to learn. We teach it in a week.”) When I heard them strongly recommended not only by the serious meditators I’d been reading, but also by a couple more hard-nosed coworkers, I decided to see what the hype was about.


Jhourney teaches a style of meditation nominally focused on altered states called jhanas. Jhanas are blissful-feeling states that you can “relax into” if you release enough of what you might call tension or clenching or tanha , and then focus on an enjoyable open-hearted sensation like smiling, a joyful memory, or feeling care for a loved one. If done right, you can start a feedback loop of enjoying the enjoyment, and end up in a state of deeply absorbed euphoria.

I say Jhourney is nominally focused on that because the jhanas are actually kind of a Trojan horse for improving your life and relationships, which somehow doesn’t sell as well as wireheading. Jhourney’s unofficial motto is “come for the bliss, stay for the personal growth.” The growth happens because a lot of the tension you’re trying to release in jhana meditation is downstream of repressed or “stuck” feelings, either small ones (“I don’t want to be hearing that sound over there” leading to micro-clenching the head and neck) or big ones (“I can’t let myself feel this sadness or I’ll cry and that would be shameful” leading to tensing the various face and chest muscles that would otherwise be helping you cry). In order to get into jhana states, a lot of people (like me!) end up having to work on untangling knots of emotional clenching, and this usually leads to a lot of growth.


My first experience of my Jhourney retreat was showing up and being handed an 80-page handbook of meditation instructions.

This already blew my mind a little, because I had never read anything about spirituality or emotions that I considered good. The “best” stuff I’d read about the mind was vapid pop-psychology, padding out truisms with engaging fluff until the result somehow became a marketable book. The rest was indistinguishable from astrology—it was never clear enough that I could tell whether it applied to me, which meant it didn’t seem to make falsifiable predictions. As for spiritual writing, it mostly felt like word-association mumbo-jumbo, with authors throwing around words that had the right vibes but that I wasn’t sure they themselves even really understood. Heck, the previous meditation retreat I’d been on had included watching an hour-long recording of the now-dead founder talking about how he could sense quantum vibrations.

The Jhourney handbook didn’t have these problems, because it was written by software engineers. It was epistemically conservative and shockingly lucid, completely mumbo- and jumbo-free. To help with the inherently fuzzy language, they explained everything from multiple angles. They gave clear gears-level explanations of why they thought things worked the way they did. They even took a detour to explain their teaching philosophy so that students were oriented about why they were doing what they were doing. It was masterful pedagogy.

Between the written instructions and the teachings from live meditation sessions, pretty soon I could get to a point that felt like the “on-ramp” to a jhana. But every time I got there, I would get stressed and “grabby” about what to do next, and “fall off” the ramp.

By the time I got to day 4 of the retreat, I was feeling really frustrated about this, in a way that was starting to loop on itself. I was frustrated that I couldn’t reach jhana, and frustrated that the frustration was making things harder. I tried Jhourney’s recommended way of working with negative emotions, which was a self-compassion meditation. But no matter how much I tried, it didn’t really resonate; I couldn’t cultivate any emotional experience of self-compassion.

In fact, I realized I couldn’t remember ever having had a real emotional experience of receiving compassion, and that that was probably kind of fucked up.

A bunch of my friends were on the same retreat. Since I had no access to self-compassion, of course I used this realization to start worrying that they would judge me for having a hard time meditating because I was fucked up, adding even more layers to the feedback loop of doom.

Days 4–6 were pretty bad. Every day Jhourney gave us a survey of “how was your day on a scale of 1-10 with 5 as a normal day?” I rated day 6 a 1.5. (To their credit, Jhourney knew this meant I needed extra help and offered lots of 1:1 time with different facilitators, although none of it made that much difference.)


At this point, in one of my desperate attempts to think myself out of my feelings pickle, I started thinking a lot about the metaphor of the elephant and the rider . The idea is that people usually identify with everything that happens in their mind, but this is actually a confusion; it’s more accurate to think of “you,” the conscious part, as a small human rider perched atop a large lumbering elephant that often does its own thing. The only things that are actually in the rider’s action space are things like “say words to the elephant,” “visualize mental images to the elephant,” “direct attention to a particular aspect of experience,” etc. Everything else—including all emotions and many thoughts—is the elephant’s job.

In this frame, the fact that the self-compassion meditation wasn’t working for me wasn’t really “my” fault. Whether the emotional experience of self-compassion happened was up to the elephant, and the only thing “I” (the rider) could do was to keep gently saying the words or doing the technique or whatever, and wait for the elephant to steer, at its own pace.

Around that point I decided to give up on the Jhourney curriculum and just do whatever seemed like it would feel nice. ✻ Ironically, Jhourney more or less recommends doing this in various parts of the handbook, but I was too into following rules to follow the part of the rules where they told me to stop following the rules. I broke the rule of silence to ask for some reassurance from a close friend who was also on the retreat. When I got back to meditating, I made up a technique for myself where I imagined sending love and compassion to the elephant instead of to “myself.” This turned out to be a cheat code: I immediately felt an outpouring of warmth, and the reassuring things I was telling myself started to emotionally resonate.

I really wish I could describe better what happened after that, but unfortunately it was a while ago and involved a lot of subtle mental movements, plus it’s hard to track what’s happening while a chunk of your psyche is liquefying. I remember a sort of sense of “going inside” the feeling of compassion and love for the elephant, having it take up more and more of my attention, and feel more and more deep, rich and meaningful. Then some kind of rush of energy and a full-body frisson that I’ve learned often happens when my brain has rearranged itself. † I don’t think this strictly qualifies as a jhana by Jhourney’s rubric, because it wasn’t stable and self-sustaining, but it otherwise felt close to how they describe first jhana.

When I got up and walked outside, I gradually noticed that the world felt pretty different. I realized that I’d always carried a “refrigerator hum” of subtle body tension that was now gone. Walking around the retreat center looking at the views felt amazing, like I could have spent days just melting into the landscape. The Lipton peppermint tea at the hot drink station tasted unreasonably good. I would sometimes tear up with joy or gratitude for no reason. I felt much deeper care and connection with my friends.

Maybe that makes it sound a little gooey and impersonal, like I took a drug that replaced my normal self with a puddle of love or something. The actual experience was the opposite; somehow it felt like this was all happening because it was easier to be myself . The care and connection wasn’t coming from some foreign love puddle; it came out because a bunch of psychic gunk had sloughed off and made it easier for the real essence of Ben-ness to shine through.


And then I used my newfound mastery of emotions and self-compassion to live happily ever after flailed around trying to integrate everything back into normal life.

One of the big changes I noticed after the retreat was that my emotions got 2–3× more intense. I think this was net positive in the end, but it made coming back to work hard—I had a stressful role managing a large team, and I also needed to catch up from a week of being incommunicado, which was extra stressful. And it wasn’t exactly helpful that suddenly, if someone was annoying on Slack, it would sometimes make me want to shoot flames out my ears.

Over the next couple weeks, the intensity settled back down and the changes in my moment-to-moment experience went maybe 80% of the way back to normal (e.g., I stopped spontaneously tearing up in normal circumstances). Some of them stayed, though:

  • A lot of my shame/cringe reflex turned into a self-compassion reflex. I used to get super embarrassed by minor mistakes (things like, I don’t know, forgetting to lock a public bathroom door and having someone walk in). Now those things come with a very clear sense of “gosh, what a normal-person type of mistake that millions of other people have also made, it probably didn’t even register for the other person.”
  • I became much more easily moved by art. I went from being moved to tears by a poem or piece of music maybe once a year to once a week.
  • I stayed much more aware of my more subtle emotional responses. I remember listening to some instrumental folk music I’d probably listened to 100 times before, suddenly noticing that the melody felt deeply nostalgic and then realizing that was two levels further out on the feelings wheel than I’d ever felt for music.
  • I still felt much less of a need to be distracted or stimulated than before. I used to listen to podcasts at 2× speed whenever I wasn’t fully focused on a task (e.g. if I was doing chores or walking). Now I have no desire to do this, and when I do listen to podcasts, 2× speed feels unpleasant. Similarly, I started to dislike a lot of restaurant food, and to really enjoy very simple home-cooked meals that I would have considered too bland before.
  • Friends continued to mention that my body language was different. One noted: “more upright posture, more open shoulders, more fluid and gentle.” Another described me as “‘leaving less,’ as in, spending less time ‘out of the room’ in interactions.”

These were great changes, but even better, a bunch of mindset and relational shifts also stuck around.


Mindset-wise, I guess I’d just say I got feelings-pilled.

If you’d asked me what the deal with emotions was before the retreat, I probably would have said something like:

Positive emotions are nice, although you shouldn’t let them distract you too much from your long-term goals. Painful emotions are responses to stimuli that are part of our evolutionary inheritance, but are largely maladaptive today because we’re in an environment so different from where they arose. Assuming you have good enough self-control not to act out on them, their main effect is to make you dumber, which you should mitigate by not engaging with whatever makes you emotional until you’ve chilled out.

My new view is more like the following (this is still an oversimplified strawman and reality is a lot messier):

All emotions are important and beautiful components of unconscious/intuitive cognition. ‡ I do mean all , even ones that our culture really doesn’t like—for example, anger is a sign that something you care about is threatened and needs protecting, and fully welcoming it can help bring clarity about what exactly needs protecting and how. If you’re curious to learn more about the beautiful and constructive aspects of negative emotions, I recommend the book The Language of Emotions , Joe Hudson’s podcast (search for the emotion you’re interested in), or here are some specific articles summarizing his views on anger , fear , and shame . However, they sometimes create impulses to do things that aren’t actually good ideas. In the process of socializing ourselves not to follow those impulses, we’ve been trained to try to make the emotions themselves go away in painful ways, by repressing them or clenching up around them. Unintuitively, repression and clenching actually cause the emotions to “stick around” in some sort of partially metabolized state, which has negative side-effects, like anxiety, thought-looping, numbness, blind spots, impaired reasoning, bringing up secondary emotions as defenses, etc. A different way of working with these emotions, that’s better for you in the long term, is to figure out how to welcome and accept them. This eventually leads to them feeling less bad, and giving you more impulses that are good ideas and fewer bad ones. But it’s not as simple as “just stop repressing.” Welcoming emotions requires fully feeling them; if they’re strong, that can be too overwhelming to work unless you have a deep felt sense of safety. That safety can be provided in many different ways, e.g. a therapist, friends, some kinds of meditation, etc. If you don’t have access to enough safety, repressing or clenching temporarily might be your best option.

The main thing that changed my view here was spending days at the retreat paying close attention to my own emotional experience. For example, near the beginning of the retreat, one of the facilitators claimed that thought-looping was usually a sign of a stuck or repressed emotion. I was really skeptical, but then I had several very clear experiences of thought-looping around something, going off to a private place to cry about it, and immediately stopping the thought spiral and relating to it differently. § It was a lot easier to see this clearly on the retreat than in normal life: doing lots of meditation both made it easier to notice my own thought processes, and also faster to “unstick” or welcome the underlying emotions.

Similarly, I’d ended a long-term relationship right before the retreat, which I’d felt a lot of internal conflict and self-doubt about. My therapist had often told me things like “if you felt enough of your feelings you’d feel clear about this decision,” which sounded crazy to me at the time (uh, it’s a really hard call and there are a lot of tradeoffs that I don’t know how to weigh!). But on the last day of the retreat I noticed that I felt much clearer that a lot of the things I didn’t like about that relationship were real and important, and felt much more confident in my choice to end it.

Of course, I’d already heard plenty of people say things like “you can’t make this kind of decision logically, you have to listen to your heart,” but I never really understood what they were talking about. In retrospect, I just didn’t have the ability to do the “listen to your heart” internal move, because the pipes were clogged by too much repressed gunk . I wish those soundbites had included a second sentence like “of course listening to your heart can be much easier said than done, so if it feels hard or unclear for you, here are some first steps to get started with, and be prepared for it to take you many hours (or years) to figure out what your heart is trying to say.”

This new mindset really shifted the way I related to my emotions. While I still often experience them as painful, it’s much less than I used to, and now I start from the assumption that they’re not “actually” painful or bad, and that the best thing to do with them is to figure out how to accept them, welcome them, and find the wisdom or beauty in them. Overall this feels a lot better—when I run into something stressful or hard, instead of just flailing around not knowing what to do about it, it feels more like I have some kind of sense of direction or overall orientation, which is really comforting and grounding.


I also noticed that a lot of these ways of thinking about emotional difficulty within myself were also useful metaphors for thinking about emotional dynamics between people. Just like resisting your own emotions is a common coping strategy but ultimately doesn’t work very well, resisting other people’s emotions is also a really common but damaging pattern, which I would guess is very involved in a lot of (most?) relational damage. For example, I realized that a big part of the root problem of the relationship that I had just ended was that both of us were missing the capacity to accept a bunch of each other’s emotions, which was something I hadn’t been able to articulate clearly at the time. I now think practices explicitly focused on welcoming each other’s emotions are a really valuable tool for nurturing relationships over time.

In fact, I started to notice that a lot of sticky problems—both in my personal life, but also the type that I ran into as a manager—were partly downstream of people resisting emotions of one type or another. Alice is hard to communicate with, because she frequently monologues about unimportant details, because she wants to prove she understands everything, because she has a bunch of stuck fear/resentment about not being taken seriously. Bob and Clara have a persistent disagreement about strategy, because Clara doesn’t care enough about Bob’s opinion to engage, because Bob was cruel to her once; Clara never complained because she’s avoiding the feeling of having been hurt by it. Dave’s team is underperforming but Erin, the exec sponsor, doesn’t want to manage him out, because she’s scared of the conflict and of making Dave’s reports, who like him, angry.

Of course, just because a problem is caused by stuck emotions doesn’t mean that unsticking them is the best way to solve it; but it was still a really useful lens to view what was going on.


The other shift that stuck around was in my relationships. I made a huge improvement in my friendships, which a few different things contributed to:

  • I felt a lot clearer about what I wanted from close friendships—mainly, a strong felt sense of safety and care—and that this felt like a big missing piece in my life.
  • I also started getting better at feeling those. With a lot of my shame reflex dissolved, I felt generally safer with people overall—my intuitive predictions about how they’d respond to things I did felt more positive. I also got a lot better at noticing and appreciating the different ways people expressed care for me.
  • Because I felt generally safer, I also got more willing to take risks or be vulnerable, which helped build closeness faster. A friend reflected that I seemed more courageous.

This also meant that my “friend type” changed—I cared more about emotional connection and less about intellectual connection. Luckily, even though I live in a really heady milieu, I was still able to find a lot of big-hearted people and gradually build up a set of close friends who are wonderful at both. So far, this is the change I’m the happiest about.

My dating life changed a bunch as well:

  • I started being able to feel much more strongly attracted to people. For example, later that year, I got a crush on someone that was stronger than any crush I’d had in high school.
  • I had a run of anxious-attachment-ish experiences, which I’d never had before, although they got way milder over time. ‖ I’m not totally sure what was up with this; I think it partly had to do with calibrating to the new level of attraction I could feel.
  • The extra safety and courage I mentioned above were helpful in dating too: I got much more comfortable with communicating tricky things or being in weird situations (e.g. ones outside the standard script of “meet someone on an app, go on some dates, become exclusive”). A friend commented that it seemed like I had more degrees of freedom.

These changes have been really wonderful overall, but also kind of intense. Becoming much more emotionally aware solved a bunch of my problems, like wanting deeper friendships or not understanding why my relationship was unsatisfying. But it turns out winning that boss fight just made all the enemies level up. My old problems got replaced with horrible new problems, like that sometimes my newly deep friends and I would have conflicts, or that I would be more into the person I was dating than they were into me.

The part of my life where I feel the most mixed about the impact is work. About six months after my retreat, I got a pretty bad case of burnout and left my role managing a big team for a significantly less ambitious IC role. I don’t think the retreat was the main cause of my burnout—the main cause was that I didn’t have enough background in the area I was managing to have the type of impact that I wanted to, with a side helping of some difficult working relationships. But it turns out my new psyche had also gotten worse at repressing or avoiding emotion, and that made everything harder.

I think of repression as the emotional equivalent of technical debt or deferred maintenance : a way of avoiding an immediate cost, in this case feeling uncomfortable feelings, in exchange for paying a higher cost later to clean it up. Like tech debt or deferred maintenance, sometimes repression or avoidance can be the right strategy, if you’ll have more resources to deal with the problem later! My role exposed me to a constant stream of low-grade painful things, like people being disappointed or annoyed at me, me being disappointed or annoyed at other people, projects not going well, office snacks being replaced with worse snacks, and so on. With less ability to avoid or repress, I had to feel more of them fully as they came up, and that was really draining. It also required enough time and attention that I had to defer a bunch of maintenance on my personal life.

Even now that I feel like my energy levels have mostly recovered, I’m still not sure whether I want to go back to the center of the vortex. It’s not just that I would have to start deferring maintenance again; I’m also much more aware of a lot of maintenance I’d already deferred and really want to clean up—things like investing in friendships, like I mentioned above.

If I were only working toward my personal growth and happiness, I’d say this change was clearly good. My life feels much richer and more whole, and taking a less ambitious role forced me to release some layers of ego attachment to having a “shiny” job or career, which was deeply freeing. But… I also care a lot about my impact on the world, and I think the next few years will probably be a critical period where my work could be especially high-leverage. From that perspective, it’s sad to feel resistant to maxing out on work right now.


I feel pretty unsure about what to take away from all this. Here are some disconnected reflections.

  • I would never have said that I had a problem with self-compassion or self-esteem before doing this retreat, because I was able to say the right self-compassionate words when I directly asked myself things. But from my point of view afterwards, it’s clear that I did have a big self-compassion problem; even though I could say the words, I wasn’t really feeling them or acting like they were true. Having the actual embodied experience and habits of self-compassion is the closest I’ve come in real life to The Vitamin . ✻✻ “My deepest darkest fantasy is that I collapse on the street and I am rushed to the hospital. They perform a bunch of tests and find out I am severely deficient in some kind of vitamin. Then I start taking the vitamin and I become the happiest cleverest person alive because all my problems were caused by this one deficiency."
  • Jhourney is doing something really cool and is way better than most/all other meditation retreats on several axes (amount of support available, pedagogical excellence). That said, you probably shouldn’t expect to have this life-changing of an experience; I would guess I had something like a 95th-percentile-plus outcome in terms of long-term effects. I still think it’s awesome as an introduction to both meditation and embodied emotional awareness.
  • I feel like I got really lucky on timing: if the retreat had ended one day earlier, I don’t think I would have gotten to the life-changing part. That freaks me out a lot.
  • At first I concluded from this that I should get super into meditation. Then I did two more retreats (another Jhourney retreat and a Dustin DiPerna introduction to mahamudra retreat) and neither one of them had nearly as large of an effect. The second Jhourney retreat was really helpful in reinforcing my daily practice, and I do think a daily meditation practice was helpful in stabilizing the changes that became permanent, but I’m not even totally sure about that.
  • Jhanas are definitely real. Also, it was kind of wild hearing somebody tell me something that sounded totally fake (“achieve bliss on demand using nothing but your brain”) and then back it up with an 80-page engineering manual and meticulous data on success rates. Overall this made me much more likely to believe that various other types of “woo” phenomena are real, at least in the sense that people are accurately describing their experiences. (I still believe the universe runs on physics, but a lot of woo things have physics-compatible explanations, especially if you buy that people’s intuitions can sometimes do spooky things.)
  • I described this as “chang[ing] my personality” in the title, but I don’t want to oversell the magnitude. I do have a lot of conversations where someone asks me “so how come you’re so <like X>” and I tell them “I did this weird meditation retreat a couple years ago.” But also, there are a lot of different aspects of personality, and even though a bunch of those completely changed for me, most of them are still the same, so I’m still very similar to my past self in an absolute sense.
  • What flags should tip you off that you should maybe be staring into your emotions more? Here are some things that I think might be clues (a lot of which described me, in retrospect):
    • You often get stressed and stuck in thought loops
    • You’re easily annoyed or frustrated
    • You have too much scarcity mindset—you often worry this is the best job or relationship or whatever that you’ll ever have, in a way that’s not justified by the fundamentals
    • You seek out a lot of distraction or stimulation; it’s not very enjoyable to just exist in the present
    • You feel a lot of internal conflict or uncertainty about what you want
    • There are parts of yourself that you really don’t like or wish were different
    • You feel some missing depth, richness, or meaning in your life but can’t put your finger exactly on what

I’m also just left with a lot of questions:

  • Was this set of experiences… good?
    • I’m really confident that it will be good for my own long-term life happiness. But the timing meant that I feel less willing to sign up for intense work during what might be one of the most critical periods for humanity, which feels bad even if the change was positive. I feel kind of unsure how to balance these.
    • My shoulder Jeremy Bentham says I should have just kept playing push-pin . My shoulder, uh… deva? says if I follow my heart my impact on the world will be higher, even if it’s less predictable or legible. I don’t really feel like I buy either of these.
  • It seemed like before this I was in a personality attractor basin with a lot of numbing and repression. How exactly did this happen, and more importantly, how can I/we avoid having it happen to as many people in the future?
    • I have some sort of fuzzy leads on this (e.g. when I was young it was really easy to make me cry so I got picked on a lot in school), but not a particularly complete picture (e.g.: does this happen to everyone who has that experience? If not, what makes the difference?)
  • Mechanistically, what did the elephant meditation do? Why did it work so suddenly and create such a lasting shift? (Was that in fact what was responsible for most of the lasting shift? How much of it was instead about what I learned at a cognitive level?)
  • Is the glowy, “easier to be the essence of Ben” state that I ended up in right afterwards something that can be stabilized (or have aspects stabilized)? If so, how?
  • More generally—where do I go from here? I’m convinced that doing the right type of introspection or meditation type thing for a week can unlock amazing things, and it feels like there are more amazing things out there to unlock, but I wish I had a better way of navigating towards them than semi-randomly trying things.

A draft reader asked what I would tell my past self, or someone like me, about this arc. Ultimately, I’d boil it down to:

  • There are probably a bunch of feelings that you’re refusing to welcome into your experience, and this is probably involved in a bunch of the things that are unsatisfying about your life and relationships.

  • You can improve this by gradually, in a safe context, paying loving attention to the uncomfortable parts, from a place of wanting to know and care for yourself rather than to fix yourself.

  • When that’s hard, remember that it’s not your fault. You’re just the rider; elephants gonna elephant. Let it go where it needs to and keep loving it as best you can.


Thanks to Alex Allain , Catherine Olsson , Elena Lake , Jess Ocean , Rahul Dalal , and Sasha Chapin for feedback on a draft of this post.

A year after the 100% AI mandate nobody understands our code

Hacker News
www.reddit.com
2026-11-09 17:19:12
Comments...
Original Article

You've been blocked by network security.

To continue, log in to your Reddit account or use your developer token

If you think you've been blocked by mistake, file a ticket below and we'll look into it.

Two apps one process

Lobsters
andersmurphy.com
2026-11-09 17:14:10
Comments...
Original Article


So what if you can handle thousands of concurrent users per core? Even the front page of HN gets you what? 100 concurrent users on a good day?

More like 30.

Exactly! Most successful apps have like what 10 or 20 concurrent users at any given time? This is basically academic for most projects. What does performance give you other than knowing that your app won't need to scale past a single server? Pointless!

Well what if you could run multiple apps in one process?

Isn't that the same as a bunch of apps behind a reverse proxy?

No. It's not. Separate processes have to compete for OS resources, have their own thread pools, schedulers, heap, GC, caches and so on. Each process needs to be sized relative to the other apps running on the system.

But, in a single process you can size the process for the machine and then run an arbitrary number of apps in that process. If the apps share a process, they can share all sorts of things: a single JVM, GC, caches, buffers, http server, HTTPS certificate management, batching, game loop etc. You'd eliminate thread contention between apps. This lets you scale further with less resources!

Performance lets you run as many apps as you want in that one process.

...

Disclaimer: all my writing and code is handcrafted by me. By the end of this you may wish it wasn't.

Some numbers

If you have multiple JVMs you duplicate a bunch of fixed costs:

  • Separate heaps
  • Separate JIT
  • Separate GC

If you have multiple HTTP servers you duplicate:

  • event loop threads
  • byte buffers
  • queues

If you have multiple framework engines you duplicate:

  • html buffers
  • render threads
  • fragment caches
  • queues

All of this adds up to more memory, more threads and more contention. If you own all your app and don't need the isolation a processes give you, then it can be a big performance win to have one JVM, one http server, and one framework engine.

Where were the numbers?

X * n where X is you fixed cost for the above and n is your number of apps. If all of the above takes 500MB, then four apps is an extra 1.5GB.

What is an app?

A miserable little pile of secrets

Indeed. If you think about it an app at it's simplest is a domain, a database and some routes.

(def app
  {:domain   "example.andersmurphy.com"
   :db       {:name          "gol.db"
              :migrations    migrations
              :pragma-writer {:cache_size 15625}
              :pragma
              {:cache_size 2000
               :page_size  4096
               ;; 1GB
               :mmap_size  1000000000}}
   :routes   #'routes
   :batch-fn #'batch-fn})

HTTPS certificate management with Clave

But, my reverse proxy handles HTTPS certs and stuff! Where is your god now?

Yes certs are a pain. But Clave: Automatic HTTPS certificate management and renewal via ACME, implemented in pure Clojure with minimal dependencies exists. I use it with aleph. But, it also works with jetty and it's simple to extend to other servers.

(clave-aleph/start-server router
  (merge
    config
    {:http-versions             [:http2 :http1]
     ::clave-aleph/http-options {:port 80}
     ::clave-aleph/config
     {:domains (mapv :domain apps)
      :issuers
      [{:directory-url
        "https://acme-v02.api.letsencrypt.org/directory"
        :email email}]}}))

So no reverse proxy needed.

Bundling our apps

To bundle our apps we import them as dependencies into a separate project who's only purpose is to configure and start the server.

(ns app.main
  (:gen-class)
  (:require
   [hyperlith.core :as h]
   [billion-cells.main :as cells]
   [billion-checkboxes.main :as boxes]
   [game-of-life.main :as gol]
   [clj-async-profiler.core :as prof]))

(defn start-app! [& {:keys [mode]}]
  (h/start-server!
+   {:apps               [cells/app boxes/app]
     :tick-ms            100
     :render-buffer-size (* 64 16384)
     :email              (h/env :email)
     :mode               mode}))

(defn -main [& _]
  (start-app! :mode :prod))

So adding a new app is as simple as importing it and adding it to the list of apps:

:apps [cells/app boxes/app gol/app]

We can then build this project as an uberjar and scp it to the server.

Deployment

Well this is nice and all, but whenever you deploy an app, you restart the process. DOWNTIME! UNACCEPTABLE!

Here's a gif of me deploying the jar to production:

deploy gif

If a deploy is indistinguishable from network blip did the app really go down?

Conclusion

That's it. We've reduced the overhead and cost of deploying a new app to zero.

Code can be found here . All three apps are running on the same JVM, on the same 10$ VPS , here , here and here .

Thanks to Everyone on the Datastar discord who read drafts of this and gave me feedback.

SEGA newsletter data breach exposes 2.2 million email addresses

Bleeping Computer
www.bleepingcomputer.com
2026-11-09 17:09:33
Japanese gaming giant SEGA has disclosed that a data breach at its third-party newsletter provider, ARARA, exposed the email addresses of 2.2 million newsletter subscribers. [...]...
Original Article

SEGA newsletter data breach exposes 2.2 million email addresses

Japanese gaming giant SEGA has disclosed that a data breach at its third-party newsletter provider, ARARA, exposed the email addresses of 2.2 million newsletter subscribers.

The company says the exposed data also includes 92,300 records with additional information yet to be determined. The breach affects 11 newsletters linked to SEGA and SEGA Fave products and services.

The investigation found that the compromised data did not include customer names, dates of birth, gender, addresses, phone numbers, credit card details, or account passwords.

image

Also, email addresses registered with a “SEGA Account” are handled by a separate distribution system and were not affected by this incident.

The company is working with ARARA to determine what data was exposed and says it has no confirmed evidence of misuse.

“We are currently investigating the information associated with newsletter distribution in cooperation with ARARA,” SEGA stated .

ARARA service breached

ARARA disclosed on November 2 that it suffered a massive breach affecting its email distribution service, which compromised 77 million email addresses from nearly 380 corporate clients.

According to the company, a web server vulnerability and problems in its system environment contributed to the incident, but the exact intrusion method and timing remain under investigation.

ARARA previously estimated a smaller impact and assured SEGA on October 29 that no data compromise had occurred.

However, on November 3, after uncovering the full extent of the incident, ARARA notified the gaming company that data had been exposed and shared the full details between November 5 and 8.

ARARA also said the attackers abused their access to its service to send over 7 million emails impersonating credit card companies in late October.

Other notable victims of the same incident include MOS Burger , with 7.5 million email addresses exposed, Shochiku Multiplex Theatres , with 3.3 million records, TKC , with 2.3 million email addresses, and IIJmio , with nearly 1 million email addresses.

SEGA Arcade still down

SEGA Fave’s arcade game network services, which suffered a separate cybersecurity incident last week, are still offline, undergoing maintenance and safety checks.

On November 2, SEGA FAVE, SEGA's subsidiary responsible for toys, electronic gadgets, and arcade machine operations, disclosed unauthorized access to servers supporting its ALL.Net and Aime arcade gaming network services.

In response, it suspended all related services, including online gameplay, SEGA Lucky Kuji Online, and new SEGA ID registrations.

Its initial investigation found no evidence of customer or business partner data exfiltration, while payment information was unaffected because it was stored separately.

SEGA noted that the two incidents are unrelated.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

We’re Asking an Appeals Court to Require a Warrant for ALPR Searches

Electronic Frontier Foundation
www.eff.org
2026-11-09 17:09:24
Today, along with the ACLU, EFF filed an amicus brief in the Sixth Circuit court of appeals in United States v. Sturdivant, a case where police warrantlessly tracked a suspect’s movements using Automated License Plate Reader (ALPR) data. Our brief details the vast, interconnected network of ALPRs th...
Original Article

Today , along with the ACLU, EFF filed an amicus brief in the Sixth Circuit court of appeals in United States v. Sturdivant , a case where police warrantlessly tracked a suspect’s movements using Automated License Plate Reader (ALPR) data. Our brief details the vast, interconnected network of ALPRs that constantly track drivers around the country and argues that this tracking is a “search” under the meaning of the Fourth Amendment.

Sturdivant involves a series of robberies in and around Cleveland, Ohio. Using surveillance camera footage, police identified the make, model and color of the robber’s car, but they did not know its license plate number. After running an open-ended search of two ALPR databases, Flock and ELSAG, officers learned a car belonging to the defendant had been tracked near sites of the robberies, eventually leading to his arrest. Faced with a motion to suppress the ALPR evidence, the district court held that Mr. Sturdivant had no reasonable expectation of privacy in his license plate number because it could be observed by members of the public, and that therefore he had no Fourth Amendment interest in not having his car tracked in public places.

But ALPRs are simply not comparable to observing an individual license plate on a passing car. As we’ve explained in many amicus briefs and in our lawsuits directly challenging ALPR use in San Jose, California and Wisconsin , ALPRs give law enforcement “ a virtual time machine to view suspects’, or anyone else’s, past movements (and much more) with just the click of a button.” Just last month, a federal district court agreed and held that ALPRs are a “ form of indiscriminate mass surveillance” that can violate the Fourth Amendment.

We hope the Sixth Circuit will reverse the lower court in this case and hold that ALPR searches require a warrant.

Related Updates

We Demand More Information on How Marin Cops Illegally Shared Flock ALPR Data

The Marin County Sheriff’s Office is the latest California law enforcement agency to get caught sharing automated license plate reader (ALPR) data from their Flock Safety system with out-of-state and federal agencies. EFF and the ACLU of Northern California are calling them out for this direct violation of California law,...

Texas and Florida Step Back from ALPRs

Within the last few days, two important state actions have dealt a big blow to automated license plate reader (ALPR) networks. This is just the latest proof of the growing tide of public opposition to mass surveillance. After years of successful grassroots battles to pull these cameras from local streets...

While Deadly Fires Rage, New Yorkers May Have to Wait Until 2028 for More E-Bike Battery Charging Stations

hellgate
hellgatenyc.com
2026-11-09 17:08:29
Red tape and a delayed rollout, as deadly fires keep popping up....
Original Article

Back in early 2024, Eric Adams's Department of Transportation launched a pilot to prevent the steady increase of deadly fires caused by lithium ion batteries used to power e-bikes. The year before, 18 New Yorkers had been killed in the blazes , which start when batteries malfunction and explode—often in the homes of the delivery workers who rely on them.

So the DOT installed five public charging cabinets in locations around the city, where delivery workers could pay a small fee to drop off depleted e-bike batteries, safely charge them, and take another one from the cabinet for use.

The stations were a hit: the DOT facilitated 12,000 battery swaps in over six months, and reduced at-home charging among participants by more than a third. When the pilot wrapped up at the end of that year, the DOT recommended a citywide expansion of the program, which eventually grew to 25 new charging stations installed where deliveristas work the most—Midtown Manhattan, the Upper East Side, and the Upper West Side.

Two years later, the Mamdani administration has installed just one more public charging cabinet—a small cabinet at the deliverista hub next to City Hall —and says there won't be any more until 2028. Public comment about the proposed 25-site launch wrapped up this August , but the City has yet to announce which sites it has decided it will move forward with for the project's design phase.

The administration's inaction comes as nine and possibly as many as 15 New Yorkers have died this year due to fires believed to be started by e-bike batteries . The FDNY has already responded to 406 of these types of fires in 2026 so far, up from the 241 that were reported over the same period of 2025 .

Both fire safety experts and advocates for delivery cyclists agree that this delay is unacceptable.

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

Amin Bandali: EmacsConf 2026 community panel - my comments

PlanetDebian
www.shemshak.org
2026-11-09 16:57:44
This is a recollection of my comments from the EmacsConf 2026 community panel recording session this past weekend, where the panellists took turns answering the proposed questions, one minute per question per panellist. In addition to the live Q&A session planned for Saturday 12 December 2026 d...
Original Article

This is a recollection of my comments from the EmacsConf 2026 community panel recording session this past weekend, where the panellists took turns answering the proposed questions, one minute per question per panellist.

In addition to the live Q&A session planned for Saturday 12 December 2026 during EmacsConf 2026, all Emacs users and community members are invited to share their thoughts on the panel questions or other questions before or after the conference.

https://emacsconf.org/2026/talks/community/


1. What made you start using Emacs, and what kept you using it?

I started using Emacs during my bachelor's studies. I actually learned about Vim first and was a Vim user, but I'd always found the configuration language (VimScript) a little bit clunky. Not long after, I discovered Emacs, and really loved reading and writing Emacs Lisp, so I stuck around.

In addition to reading and writing Elisp being fun and enjoyable for me, I love that Emacs has been a practical embodiment of software freedom, and I'm really fond of its surrounding culture of sharing freely. There's a lot to love and appreciate about Emacs, but as a practical personal example, I've been grateful for its excellent support for bidirectional text editing. It has empowered me to read and write in Persian, my mother tongue, with ease. (Persian has a right-to-left alphabet, like Arabic and Hebrew.)

2. What took you from using Emacs to actively contributing to the community - participating in forums, writing Elisp, organizing meetups, answering questions?

As I continued experimenting and writing bits and pieces of Elisp to scratch my own itches, I felt compelled to share them freely as a way of giving back to the community that gave me so much.

For me, the community and the people that make it up are the main deal. Emacs wouldn't be where it is and what it is today without its people, so besides programming contributions, I've tried to contribute in that area as well, for instance by reviving EmacsConf with Sacha Chua back in 2019.

3. How does Emacs show up for you in real life - colleagues, meetups, friends? How did those connections form?

I don't physically have people near me who use Emacs, but I've connected with many folks in our online communities, often starting with an email or IRC message. Some of those relationships started as acquaintanceship and were developed into true friendship over time, and I'm grateful to have had those friends with me.

4. If you know other software communities, what's one thing Emacs could learn from them?

I would encourage Emacs, our community, to focus on the people. We're living in particularly difficult times, with various kinds of hardships and uncertainty in our lives. Let's strive to treat each other with kindness, empathy, and mindfulness as we continue working together.

There are great examples of other free software communities whose members have banded together and are strengthening each other and their community, as well as cautionary ones where community members have been tiring and driving out their fellow members. We could learn valuable lessons from both in how to take care of our people and ourselves.

5. What's one concrete thing you wish existed in the Emacs community a year from now?

I echoed the sentiments of my fellow panellists Prot and Til about doing more of the same in terms of continuing to uphold the standards of excellence and perseverance. Also, drawing inspiration from what bashbunni said, to lower the barriers of entry for people, for example through organizing different kinds of events, and experimenting with ways to make people's lengthy, elaborate Emacs configurations more tangible and accessible to others, to share various workflows and demonstrate what's possible with Emacs.

I look forward to your thoughts on these and other community-related questions.

Take care, and so long for now.

TPUs

Hacker News
blog.google
2026-11-09 16:56:57
Comments...
Original Article

We’ve expanded our eighth generation TPU portfolio with TPU 8tx and TPU 8i Max, marking four new TPU systems in a single year.



TPU 8tx and TPU 8i Max

We first designed TPUs more than a decade ago motivated by Google’s internal demands, including voice recognition and language translation. Eight generations of TPUs later, the use cases have exploded, covering: i) training and serving our own Gemini models, ii) agentic workloads, iii) delivering services to Google Cloud customers on our cloud infrastructure, and most recently, iv) allowing customers to deploy TPUs directly into their own data centers. TPUs are now a rapidly growing business with nearly 100 customers — including frontier labs, trading firms, retailers, universities, and more.

At Google Cloud Next in April, we introduced two new specialized TPUs in the same generation — 8t for large-scale training and 8i for real-time reasoning. TPU 8t and 8i offer up to 2.7 times better training performance and 80% better inference price performance, respectively, versus our previous generation of TPUs.

Today, we’re taking that a step further, expanding our eighth-generation TPU portfolio with two additional systems: TPU 8i Max for massive context windows and the highest compute density per rack, and TPU 8tx for secure and confidential inference. This is the first time we have introduced four TPU systems in a single year.

Our expanded eighth-generation TPU portfolio: TPU 8t, TPU 8i, TPU 8tx, and TPU 8i Max.

PU 8t, TPU 8i, TPU 8tx, and TPU 8i Max

While we’ve always co-designed our TPUs in partnership with Google DeepMind, we’re now increasingly getting feedback from external organizations on their specific needs. With computing moving from human to agent scale, businesses are asking for accelerators that can reason across AI models’ massive context windows. In addition, some highly regulated customers are asking for specialized encryption capabilities for unique workloads.

The new TPU systems we are announcing today address this new reality. Coupled with our recent PyTorch announcements , our aim is to make TPUs more easily accessible to every developer and Cloud customer. By combining modular custom silicon with an open and easy-to-use software stack, we can deliver new hardware and system configurations at the pace of the AI industry.

Building the computer around the chip

Today, we’re announcing two new TPU systems — and there’s an important difference between a new chip and a new system.

Designing a new chip means laying out billions of microscopic transistors on a silicon wafer in a multi-year process bound by the laws of physics and a complex, long-duration manufacturing lifecycle. A system, on the other hand, is about how we bring together the compute, networking, and storage around the chip. This can include how they are packaged with the chips, to quickly meet emerging customer needs and research use cases.

When we built our very first TPU more than a decade ago, we knew AI software would evolve much faster than silicon manufacturing ever could. So we made a foundational bet on system balance and modularity, architecting our TPUs as building blocks as part of our AI Hypercomputer , so engineers could rapidly adjust packaging, high-speed memory, optical networking, and security around them. That approach allows us to deliver specialized supercomputers in a matter of months rather than years.

Specializing for secure, high-context AI

Each system in our eighth-generation TPU portfolio targets a distinct part of the AI lifecycle.

TPU 8t and TPU 8i established the baseline for this generation of chips:

  • TPU 8t was designed to be a training powerhouse for massive foundation models with maximum “goodput” — or the useful intelligence delivered per watt of energy used.
  • TPU 8i is the reasoning engine, designed to break the memory wall, cutting inter-chip communication delays by up to half.

Now, as enterprises bring autonomous agents into production, we have created two new configurations of these foundational systems to solve two urgent new challenges: hardware-level data security and million-token context scale.

TPU 8tx

TPU 8tx, our third eighth-generation system, is optimized for secure and confidential inference and is also great for small-scale training. It’s built for regulated enterprises and governments running frontier or proprietary models and autonomous agents alongside their most sensitive data.

Normally, data is encrypted when stored or sent over a network, but has to be unlocked in memory while a computer processes it. Built on the same silicon as TPU 8t and paired with 5th Generation AMD EPYC CPU hosts, TPU 8tx builds security directly into the hardware layer, keeping sensitive data and model weights protected and isolated even while in active use. And by adopting the same low-latency Boardfly network we created for real-time reasoning, TPU 8tx keeps multi-step agents moving, delivering up to 2x lower latency compared to TPU 8t with a near-zero performance penalty.

Pairing training-grade compute with a fast inference network also means organizations can simultaneously run and customize their models on a single system. TPU 8tx enables teams to fine-tune models using their private data, distill large models into smaller ones, and train their agents through reinforcement learning, all without needing to migrate sensitive data between separate clusters.

Designed for sensitive enterprise workloads, TPU 8tx provides hardware-level confidential compute for private fine-tuning and secure agent execution.

TPU 8i Max

Our fourth system, TPU 8i Max, is built for a different problem: the memory wall.

When dozens of AI agents work together across an entire software codebase or hours of video at once, memory bandwidth quickly becomes the bottleneck. So we took two low-latency TPU 8i chips and combined them onto a single package.

TPU 8i Max scales compute and memory in lockstep, delivering double the compute, double the SRAM and double the HBM bandwidth of TPU 8i, so processors remain equipped with essential data and so that large workloads do not stall. Further, because TPU 8i Max fits twice the silicon within the existing rack footprint, data centers can deploy significantly more computing power per square foot and per watt.

The dual-chip TPU 8i Max system, engineered for massive context windows and maximum compute density.

While flexible across workloads, together the four systems in our eighth-generation TPUs give customers a purpose-built accelerator for every stage of the agentic lifecycle. TPU 8t for scale-up training, TPU 8i for low-latency reasoning, TPU 8tx for confidential computing, and TPU 8i Max for massive context windows and the highest compute density per rack.

Opening up TPUs to every developer

When we launched the first TPU more than a decade ago, there were only a handful of companies running workloads that needed the processing power of a TPU. The use cases were specialized, so engineers would use optimized frameworks and hand-tuned code.

Over the years, as AI has advanced, more and more companies began using accelerators. Now, AI adoption is at a point where TPUs are excellent for a wide range of companies and use cases, and as a result, we’ve been working systematically to remove barriers to adoption so that TPUs are as easy-to-use as general-purpose hardware.

This investment comes together today across these key areas:

  • Opening up TPU development to every PyTorch developer; no code rewrites needed: Last month, we open-sourced TorchTPU , so PyTorch code and Hugging Face models now run natively on TPUs, alongside out-of-the-box TPU backends for leading open-source inference engines like vLLM and SGLang. And to make hardware optimization effortless, our new open-source TPU agent suite (now in preview) plugs directly into coding tools like Claude Code, Cursor, and Google Antigravity to automate TPU onboarding in minutes, diagnose bottlenecks, and autotune custom kernels using plain language. For production deployments, our new open-source XLA Serving Engine lets you train models in Python and serve them directly in a low-latency C++ runtime across TPUs, GPUs, and CPUs.
  • Industry-leading production performance on InferenceX and AgentX benchmarks:
    In production, what really matters is outcomes on real AI workloads rather than theoretical peak chip speeds. On industry-standard InferenceX and AgentX benchmarks , which test realistic agentic coding and long-context work, our native vLLM-TorchTPU software stack on TPUs achieved state-of-the-art price-performance marks. New evaluations demonstrate these advantages extend across a wide range of frontier open models and open-source serving stacks while maintaining high model accuracy. Upcoming software optimizations on this same hardware will drive those results even further.
  • Eliminating idle compute waste for autonomous agents: Because AI agents are stateful, they frequently pause for seconds or hours while waiting on a database lookup, an external software tool, or human feedback. To make our agents more resource-efficient during those pauses, our new Agent Compute Engine software automatically suspends and resumes idle sessions, cutting operational infrastructure costs.
  • Breaking through the memory wall with the model-state layer (TPU Sync): Building the computer around the chip also means unifying memory, storage, and networking in software. As agents reason across million-token contexts and continuous reinforcement learning (RL) loops, memory quickly becomes the bottleneck. We’re open-sourcing TPU Sync , the model-state layer for TPU clusters. TPU Sync turns chip HBM, host DRAM, shared storage, and the data center network into a single, co-designed memory hierarchy — automatically tiering massive KV caches off the chip in milliseconds, streaming context across disaggregated prefill and decode nodes, and synchronizing RL weights to cut KV transfer latency and Time to First Token (TTFT) by more than 90%.
  • Scaling distributed workloads across TPUs from a single controller: Now generally available on Google Kubernetes Engine (GKE), Cloud Pathways brings the Google DeepMind runtime behind Gemini to every Google Cloud customer. Using a single-controller architecture and pathwaysutils , you can orchestrate large-scale TPU systems across multiple slices as if they were one local machine for pre-training, reinforcement learning, and multihost inference. Cloud Pathways keeps long-running jobs moving through hardware disruptions with colocated Python sidecars, sub-minute slice hot-swapping, and elastic resharding.
  • Stitching custom TPU topologies on-demand with GKE dynamic slicing: Now generally available, GKE dynamic slicing decouples physical hardware provisioning from logical slice formation using optical circuit switching (OCS) technology. By dynamically assembling TPU cubes into larger topologies (super-slicing) or partitioning them into smaller, isolated workloads (sub-slicing) on-the-fly, this update completely eliminates rigid, manual nodepool recreation cycles. This topology agility slashes job startup times by up to 5x and accelerates fault recovery by up to 4.5x, maximizing overall fleet utilization and workload goodput across all TPUs.

Co-designing with a decade of experience

Shipping four TPU systems and a unified, open software stack in a single year only happens when silicon architects, networking engineers, compiler teams, and Google DeepMind researchers build side-by-side.

Increasingly, we’re even tapping into AI to ideate and build the next generation of AI infrastructure. From using Google DeepMind’s AlphaChip reinforcement learning system to using Gemini to deliver chip layouts in hours rather than weeks, we’re using TPU-powered AI services to rapidly accelerate next-generation TPU hardware development. This is true co-design and a unique Google differentiator.

Learn more about our new TPU systems by tuning into today’s broadcast at 9 a.m. PT.

Get the latest news from Google in your inbox

Sign up for our newsletters with product updates, event information, special offers, and more.

Your information will be used in accordance with Google's privacy policy. You may opt out at any time.

PyPI's redesigned project pages with clearer security signals are now live

Lobsters
blog.pypi.org
2026-11-09 16:45:49
Comments...
Original Article

In July, we announced a series of planned updates to the PyPI user interface. Shaped by user research with members of the Python community , the updates aim to improve how we surface security signals and display package details.

We're pleased to share that this work is now complete and live on PyPI .

Context

With the rapid growth of the Python ecosystem, PyPI has become an increasingly attractive target for malicious actors. In response, the PyPI team has delivered many security features while taking a more active role in helping PyPI users assess and understand package security.

Digital attestations , introduced in 2024, are an example of this effort, providing a verifiable record of a release file's provenance (where it came from). However, provenance and attestations are still unfamiliar concepts for many PyPI users, and PyPI's interface did little to communicate their meaning, importance, or limitations.

To address this, PyPI partnered with Kabu Creative to bring clearer security signals to the PyPI UI, implementing the recommendations developed in the OpenSSF Attestations Style Guide .

Here's a look at what's changed, what it means for you, and what actions you can take.

The New Security Tab

The new security tab communicates release provenance states and displays per-file attestations, giving you a dedicated place to verify where the release files came from.

Project detail page tabs: Description, Release files, Security (selected), and Release history

The new security tab on a PyPI project detail page

Provenance States

PyPI calculates each release's provenance state by checking whether each release file has an attestation. Typically, a release will be in one of two states:

Full Provenance

This means that 100% of the release files have attestations, carrying either or both of the supported attestation types:

PyPI Publish attestations confirm the file was published by a PyPI Trusted Publisher :

A PyPI Publish attestation on PyPI

A PyPI Publish attestation on PyPI

SLSA Build Provenance attestations link the file back to its exact source commit, build platform, and instructions:

A SLSA Build Provenance attestation on PyPI

A SLSA Build Provenance attestation on PyPI

You can review attestation metadata directly in the UI, or click on the transparency log link for more information.

No Provenance

"No provenance" simply means that no file in the release has an attestation. This is typical for older releases or projects that have not yet configured Trusted Publishing. No provenance does not necessarily indicate that a release or release file is malicious; it instead means that the file origin cannot be cryptographically verified .

When there is no provenance, you should rely on surrounding trust signals to assess security, such as maintainer history, release patterns, and repository activity. If you maintain the package, consider using Trusted Publishing with a publisher that generates attestations for your next release.

Provenance Warnings

Provenance warnings are designed to help you identify when a file may not have come from the project's maintainers, for example, if an attacker has taken over an account or a publishing workflow.

When provenance metadata looks unusual or conflicts with a project's history, PyPI surfaces a prominent warning. Many warnings have legitimate explanations, but each one is worth checking before you install.

Incomplete Provenance

This means that some files carry attestations while others do not (e.g., wheels were published via Trusted Publishing, but the source tarball was uploaded using an API token).

Exercise caution if you see this warning. Check release notes for build issues or ask in the project's issue tracker before installing.

Inconsistent Provenance

This warning indicates that files within the same release originate from different build systems or source repositories.

Check the attestation metadata to confirm whether all files came from sources controlled by the maintainers.

Change of Provenance

This warning tells you that the release files originated from a different repository or workflow than a previous release. While often legitimate (such as an organization name change or repository migration), it can also indicate a compromised pipeline or account takeover.

If you see this warning, check the project release notes or official channels to confirm that an infrastructure migration was planned.

Loss of Provenance

This means that a project that previously published with attestations has changed to uploading release files without them.

Check whether the maintainers intentionally changed their publishing process, for example by switching back to API tokens, or by changing their publishing configuration so that it no longer generates attestations. If this is unexpected, treat the release with skepticism until verified.

To learn more about provenance and attestations, including provenance warnings, see our user documentation .

An example project detail page with an Incomplete provenance banner at the top, and the security tab open showing an Incomplete provenance warning: 2 of 5 files were uploaded without provenance metadata

An example provenance warning on PyPI, showing a release with incomplete provenance

Redesigned Project Detail Page

To support these changes, the project detail page has also been updated:

  • Provenance warnings now appear at the top of the page, alongside status banners for yanked releases, archived projects, and pre-releases. If a project or release is quarantined , only the quarantine banner is shown, as it takes precedence over all other warnings and banners.
  • When a release has full provenance or provenance warnings, its provenance state is displayed in the sidebar, linking through to the security tab for more information.
  • Metadata is now ordered by utility and labeled as "PyPI data" or "Data verified by PyPI", replacing the old design where data was grouped and ordered by verification status.

Project detail page sidebar with Project links, Key dates, Maintainers, Credits, GitHub Statistics, and a Provenance panel showing Full provenance, each labeled "PyPI data" or "Data verified by PyPI"

The redesigned metadata sidebar, with information ordered by utility

Release Files and Release History

The redesigned release files tab helps you find the right file by searching and filtering long lists. You can also view the provenance state of each file within the table, and quickly identify late files, which are marked with an orange warning icon.

Late file warnings are shown when one or more files were uploaded more than 14 days after the initial release timestamp. These warnings only appear on releases prior to July 2026, when a policy was introduced to reject new files after 14 days .

The release history tab now also provides more details about each release, exposing file count, provenance state, and release status (i.e., quarantined, yanked, archived, or pre-release).

Release history timeline listing five releases, each with its date, release file count, and Full provenance state; one is labeled Pre-release, and another is labeled Yanked with the reason given by its maintainers

The redesigned release history tab, with release status, file count, and provenance state

Getting Help

Alongside the interface updates, PyPI's user documentation has been extended to help you better navigate package security. Read our package security guide to learn about:

Looking Ahead & Acknowledgments

The new security tab gives PyPI a dedicated home for future attestation types and security notices. To help the wider open source ecosystem benefit from this work, we've also published a case study in the OpenSSF Attestations Style Guide detailing the design patterns and warnings developed during this project.

This initiative was funded by the Open Source Security Foundation and implemented by Kabu Creative . We would like to thank Dustin Ingram , Zach Steindler , and the members of the OpenSSF Securing Software Repositories Working Group for championing this effort. Special thanks to Mike Fiedler , Jacob Coffee , and members of the PyPI team for their thoughtful design feedback and code reviews, @cofiem for their contributions to the new release files tab, and our user interview participants and community testers for helping shape the final design.

Finally, we would like to thank the OpenSSF for its funding and continued partnership in securing the Python packaging ecosystem.

Why Fewer People Are Challenging Bad Patents

Electronic Frontier Foundation
www.eff.org
2026-11-09 16:40:14
The number of petitions being filed at the Patent Trial and Appeal Board (PTAB) has collapsed. That’s not reason for celebration. The PTAB is an important line of defense against low-quality software patents being used in lawsuits against people and companies. The drop didn’t happen because suddenly...
Original Article

The number of petitions being filed at the Patent Trial and Appeal Board (PTAB) has collapsed. That’s not reason for celebration. The PTAB is an important line of defense against low-quality software patents being used in lawsuits against people and companies.

The drop didn’t happen because suddenly patents have become higher quality. It’s simply because USPTO leadership is increasingly refusing to consider good challenges to patents, for reasons unrelated to the merits. The process has become so unreliable that many would-be patent challengers aren’t even trying.

Inter partes review (IPR) is a process that allows people to challenge patents at the Patent Office, rather than having to fight an expensive lawsuit in federal court. It’s one of the most important ways to get bad patents out of the system.

In the third quarter of 2026, July through September, only 97 IPR petitions were filed at the PTAB, compared to 327 petitions during the same period in 2025. Similarly, only 37 IPR petitions were filed in September 2026, compared to 129 petitions in December 2024—the last full month before the current USPTO leadership began reshaping how the Board handles patent challenges.

This dramatic decline shouldn’t just concern patent lawyers. EFF has fought bad patents because so many software and internet patents make claims to the basic tools of free expression online, like sending email, using online ads, or publishing web pages. When bad patents go unchallenged, they affect everyone who cares about the freedom to write new code and make new technology.

That’s why EFF has defended IPR since it came on the scene more than a decade ago. It provides a faster and less expensive way to challenge patents that should never have been granted. Congress created IPRs because the Patent Office makes mistakes. District court litigation is an extraordinarily expensive way to correct them. Without a meaningful administrative review process, bad patents remain powerful weapons in the hands of patent trolls and others seeking to extract settlements from companies that often did nothing wrong.

Now, USPTO leadership is dismantling that safeguard.

Petitions and Institution Rates Are Falling

Since Congress created the IPR patent challenge process in 2012, the PTAB has always had some discretion in deciding which petitions deserve review. But institution rates today are much lower than their typical historical range.

Between fiscal years 2022 and 2024, the PTAB instituted between 66% and 68% of IPR petitions . In fiscal year 2026, which concluded in September 2026, the institution rate fell to 41% . And institution is only the first step of an IPR—it means the PTAB has agreed to hear the challenge, not that the challenger won, and the patent will be invalidated.

That decline helps explain why fewer petitions are being filed in the first place. Preparing an IPR petition takes substantial time and money. While cheaper than federal court, it’s still a complicated administrative process. Before filing, a challenger typically needs to search for prior art, hire experts, and develop detailed technical and legal arguments about why the patent never should have been granted.

Companies were willing to pay for IPRs because, historically, they could expect a predictable process. Petitions that met the statutory standard generally had a reasonable prospect of being heard and decided on the merits. But the USPTO has made it harder to get petitions heard and is throwing them out for reasons that have nothing to do with the merits of the challenges. Faced with these odds, many potential challengers aren’t filing at all.

Even After a Challenge Is Accepted, The USPTO Director Can Cancel It

When the PTAB decides to hear an IPR case, that means the petition has been “instituted”—but that has never meant that the petitioner will definitely win. It means the PTAB has determined the challenge warrants a full merits review, and the parties could expect the proceeding to continue toward a final written decision. But under the current USPTO leadership, that expectation has disappeared. The PTAB’s institution decisions are being repeatedly vacated by the Director.

USPTO Director John Squires has vacated at least 29 decisions granting institution of IPR proceedings, and subsequently denied the petitions, terminating those proceedings before a final written decision. These include cases that PTAB judges had already agreed to hear, as well as proceedings that Squires himself had previously allowed to proceed. This level of retroactive intervention is unprecedented.

In some cases, the parties had already invested substantial time and money litigating before the PTAB, only to have the proceeding terminated based on new reasoning by the Director’s office that arose after institution.

For example, in Revvo Technologies v. Cerebrum Sensor Technologies , the Director vacated an institution decision and remanded the case to the Board. The Board then instituted review again, but the Director reversed that decision. Using a new approach, the Director said that the petition had inconsistencies between claim construction positions taken before the PTAB and in district court. Since then, that decision has been cited as a basis for terminating several other instituted proceedings.

The result is another layer of uncertainty for people who want to challenge bad patents. Getting through the front door of an institution decision is much harder than it used to be—and now, even getting through that door doesn’t mean the PTAB will decide your challenge. Predictability is one of the things that made IPRs work.

Congress Created the PTAB To Avoid Costly Litigation

Congress created IPRs in part because challenging a questionable patent in federal court is enormously expensive and risky. Patent examiners work under serious time constraints, and some patents that shouldn’t have been granted will inevitably issue. Not every patent dispute requires years of expensive district court litigation. Congress recognized that, and created an administrative process, staffed with experts more capable of correcting those mistakes.

That system has benefited the public. Since 2012, it has helped invalidate thousands of patent claims that never should have been issued. The IPR process has protected startups, software developers, nonprofits, and small businesses that otherwise would have faced crushing litigation costs simply for building products or offering services that use everyday internet technology.

EFF supports a balanced IPR system because it should be easier to fight against bogus patents that should never have been issued. The cost of fighting a patent can be a weapon in itself, and weak patents don't just burden large technology companies. Patent trolls routinely target small businesses and independent developers , and have gone after podcasters, retailers, and even coffee shops and nonprofits. These organizations have neither the resources nor the desire to spend years litigating over potentially invalid patents in federal court. IPR offers a chance to challenge those patents before litigation costs get out of control.

If we weaken the IPR system, bad patents become much harder and more expensive to challenge.

We Shouldn't Accept This as the New Normal

Some defenders of the current approach argue that lower institution rates reflect more balance in the patent system. But institution rates at the PTAB have plummeted from 68% to 41% in just two years—a nearly 40% decline. IPR petition filings have reached historic lows. And even proceedings that have already been instituted can now be terminated months later, without a decision on the merits.

These developments send a troubling message to members of the public who might want to use the PTAB: don't bother. The PTAB doesn’t need to institute every petition. But it does need to provide a process that is transparent, predictable, and fair. Right now, confidence in the system is disappearing.

If companies, individuals, and nonprofits conclude that IPRs aren’t worth pursuing, the consequences won't stop at the PTAB. More weak patents that never should have been granted will survive, and patent trolls will use them. That means more defendants facing expensive district court litigation or paying settlements driven by the cost of litigation.

That's not what Congress intended when it created IPRs . It should not become the PTAB's “new normal.”

N-able takes cloud platform offline after 30+ "zero-days" published

Bleeping Computer
www.bleepingcomputer.com
2026-11-09 16:26:25
N-able has taken its hosted N-central environments offline and urged on-premises customers to shut down their servers after a security researcher publicly disclosed more than 30 alleged zero-day vulnerabilities, including exploits that could let attackers take over vulnerable systems. [...]...
Original Article

N-able

N-able has taken its hosted N-central environments offline and urged on-premises customers to shut down their servers after a security researcher publicly disclosed more than 30 alleged zero-day vulnerabilities, including exploits that could let attackers take over vulnerable systems.

Security researcher Sean Bales disclosed the vulnerabilities late Sunday, November 8, and published a GitHub repository called Able2Shell containing proof-of-concept exploits for the flaws.

N-central is a remote monitoring and management (RMM) platform used by managed service providers (MSPs) and IT teams to monitor, manage, and secure customer devices and networks remotely.

image

The researcher says the vulnerabilities were tested against N-central Appliance 2026.4.0.31, a pre-release version of the software, and believes most, if not all, flaws also affect earlier versions.

Bales also confirmed to BleepingComputer that the discovery of the vulnerabilities was AI-assisted.

The disclosed vulnerabilities include authentication bypasses, credential disclosure, arbitrary file writes, directory traversal, cross-site scripting (XSS), XML external entity (XXE) injection, and remote code execution (RCE) flaws.

One of the most critical exploit chains abuses an unauthenticated XXE vulnerability in N-central's service-import functionality to steal a trusted local session, reset an account password, and execute commands on the server as the nable user.

The same exploit can also create an enabled Default Administrator account with attacker-controlled credentials, providing rogue administrative access to the N-central management interface.

Bales shared a video demonstration of this exploit, showing terminal output reporting successful administrator account creation, login authentication, access to protected administrative functionality, and remote command execution as the nable user.

Other disclosed exploits include a stored XSS that can execute commands as root when an administrator views malicious patch metadata, and a privilege-escalation flaw that allows code running under the nable account to execute commands as root.

Bales confirmed to BleepingComputer that the unauthenticated XXE-to-RCE exploit was the most critical of the disclosed vulnerabilities.

N-able takes servers offline worldwide

After the disclosure, N-able announced a critical security incident and took its hosted N-central environments offline across the Americas, Europe, and Asia-Pacific regions.

While BleepingComputer has not independently verified all the reported vulnerabilities, N-able confirmed it is developing a hotfix to address the security issues, lending credence to the researcher's claims that at least some of the flaws are legitimate zero-days.

"N-able is actively responding to non-responsible communication of critical vulnerabilities in N-central late Sunday night, November 8, found by an independent researcher," N-able told BleepingComputer.

"As a precautionary measure, we took our Hosted N-central environment offline today, November 9, and provided guidance to customers operating on-premises N-central servers to temporarily take their servers offline until further notice."

"Our Security, Engineering, and Operations teams are actively working to implement the necessary remediation. At this time, we have not observed active exploitation of these vulnerabilities. Protecting our customers and their environments remains our highest priority, and we will provide additional updates as they become available."

In a subsequent status update , N-able said it was continuing to develop and validate a hotfix and had found no evidence of active exploitation or unauthorized data access.

While the N-central classic environment is unavailable, N-able said Ecoverse services accessed through N-able Login remain operational.

N-able has not provided an estimate of when N-central will come back online but says it plans to publish updates every four hours, or sooner if new information becomes available.

Researcher claims previous vulnerability reports ignored

Bales told BleepingComputer that he deliberately released the N-central vulnerabilities without notifying N-able beforehand because the company allegedly failed to address vulnerabilities he had previously reported in a different N-able product.

According to Bales, he disclosed two unrelated remote code execution vulnerabilities and a privilege-escalation flaw approximately five to six months ago, but those vulnerabilities remain unpatched.

"I disclosed 2 unrelated RCEs for a different N-able product, along with a priv esc vulnerability 5 or 6 months ago. These have yet to be patched. I did not disclose any of the 0-days I posted last night," Bales told BleepingComputer.

He also claims to have sent follow-up emails over the past four to six weeks without a response.

Bales says his previous experience with N-able's vulnerability disclosure process and that "they don't take disclosure seriously" led him to publish the N-central zero-day exploits.

However, he said these exploits target a different N-able product than the ones he previously disclosed.

The researcher also claimed that he received no payment through N-able's bug bounty platform for his earlier reports.

Bales confirmed that N-able executives, including the company's CEO and CTO, contacted him following the disclosure and asked him to remove the GitHub repository and work with the company.

"They did not threaten me or anything though. Only asked to take down the repo, work with them, etc."

BleepingComputer asked N-able about Bales' allegations concerning the previously disclosed vulnerabilities, their patching status, and the alleged lack of responses to his follow-up emails.

However, the company did not address those questions, providing only the statement concerning the N-central security incident and the precautionary shutdown.

The previously reported vulnerabilities are not included in the publicly released Able2Shell repository and allegedly remain unpatched.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

York University breach exposed personal information dating to 2007

Bleeping Computer
www.bleepingcomputer.com
2026-11-09 16:22:31
York University has announced it suffered a cybersecurity incident in which a threat actor stole personal information people submitted through online forms. [...]...
Original Article

York University breach exposed personal information dating to 2007

York University in Toronto has confirmed that a threat actor breached its systems and accessed personal information submitted through online forms.

The unauthorized access was discovered on October 25 and affected forms submitted on 14 university websites between 2007 and 2026.

York University is a major university based in Toronto, Canada, with more than 55,700 students across 200 undergraduate and graduate degree programs, and an administrative staff of 7,000.

image

“York was recently subject to a cybersecurity incident involving an unauthorized actor accessing limited online forms used by University departments,” the university stated on Friday .

“While York acted quickly to contain the incident following discovery, we regret to confirm the theft of personal information from some departmental forms.”

The announcement lists the exposed data in detail, by category. Across the affected forms, the attacker accessed the following:

  • Email address
  • Phone number
  • Date of birth
  • York identification number
  • Government ID information
  • Third-party contact information
  • Health information
  • Academic history
  • Employment history
  • Financial status
  • Criminal background
  • Demographic details
  • Photos and other images

The exact data types exposed vary by person, and most stolen records contained basic contact information and York ID numbers, the university said.

Exposing contact information alongside other sensitive data significantly increases the risk of phishing and social engineering attacks for affected individuals.

The announcement says the website forms are now secure and safe to use. York University said it will directly notify individuals whose government ID or financial account information was exposed and offer two years of credit monitoring and identity theft protection coverage.

Individuals who did not receive a notification may contact the university directly to learn what specific types of data were exposed in their case.

At this time, the educational institution has not specified how many individuals have been impacted by the cybersecurity incident.

No details have been provided about the perpetrators. At the time of writing, BleepingComputer did not find any ransomware group claiming the attack.

article image

Uncover email threats your existing defenses may miss.

Adaptive Security's AI agents analyze email intent, context, and behavior to uncover phishing, business email compromise, and invoice fraud.

See what's getting through with a 14-day read-only scan of Microsoft 365 or Google Workspace, with no MX changes.

Start your free email security scan.

Celebrate by Turning the Blowout into Durable Power

OrganizingUp
convergencemag.com
2026-11-09 16:13:12
Featured image by Akin Olla The anti-MAGA majority turned out and showed its muscle on November 3. Every demographic group voted less Republican than in 2024, with the biggest shifts coming from Latinos and young voters.  The anti-fascist electoral alliance of Left and center (mostly) held. Bot...

Supply chain attack on Qubole customers

Hacker News
sentra.io
2026-11-09 16:07:26
Comments...
Original Article

One Stolen Vendor Key, Every Customer’s Data Exposed: Inside the Qubole Supply Chain Attack

How a third-party compromise created a path into multiple organizations, and how Sentra uncovered it in less than 24 hours.

Co-authored with Sagy Drucker, Asaf Rozali and Riva Kranz

Sentra recently uncovered a very wide supply chain attack that moved through organization after organization. Dozens of Qubole customers were impacted. An attacker got hold of credentials belonging to Qubole, a big-data platform, and used the access that company after company had once granted Qubole to quietly pull their data. Nobody broke into these companies directly. The attacker came in through a vendor they all trusted.

Image

This kind of risk is easy to miss. Your cloud is full of identities that aren't people: vendor integrations, automation and AI agents, each holding standing access to your data. Most days they do the same thing, from the same place, on the same schedule. The danger is the day one of them starts doing something else, and very few teams are watching for it.

The riskiest of these are the ones you forgot. Every vendor you have ever connected to your cloud left a door behind. Most of those doors are still there, trusted, rarely watched, and often able to reach your most sensitive data.

Sentra spotted the campaign and reported it to Wiz, which investigated it together with Sentra and Mandiant. Wiz has published the full research: Trusted by Default: Qubole Cross-Account Access Abused in the Wild .

This post isn't the story of one company. It's what we saw across the attacks: how the attacker got in, how they moved, what they went after, and what finally gave them away.

The attack at a glance

  • More than a dozen organizations hacked in a single attack, all through access they had once granted Qubole.
  • About a second to assume each Qubole-trusted role, so the attacker could move from one company to the next almost instantly.
  • About 100 passwords and keys read in 7 minutes, from three different places they were stored, plus thousands of credential records inside the files the attacker downloaded.
  • 0 write actions. Nothing was changed or deleted, only stolen, which made it harder to notice.

Forgotten vendor trust

The doors the attacker used were old ones. Qubole roles were still in place long after companies had stopped using Qubole, and those roles could read nearly all of the data the attacker went after.

Qubole's roles had been dormant since the spring. Then they came back to life. Sentra had seen this risk coming. Before the attack, it had already flagged one of Qubole's roles as unused for months yet still able to reach sensitive data.

Valid credentials, wrong network

The organizations hit by this attack weren't careless. They set up their Qubole integrations the way AWS recommends, including an additional check called an ExternalId, a code the vendor must present before it can get in. Every Qubole role had it, and the attacker presented the right code every time. As far as AWS could tell, the attacker was Qubole.

None of the activity came from Qubole's own network. It all came from a rented OVH server and the Mullvad VPN, and there was no normal Qubole activity at all in that window. Every session was the attacker.

That's what makes supply chain attacks so dangerous. When a trusted vendor is compromised, following best practice isn't enough, because the attacker's access is real and looks legitimate in every log. Only two things stop it. Zero trust limits each vendor to the data it truly needs, so a stolen key opens as little as possible. And data detection and response (DDR) watches how every identity actually uses data, flagging the moment a trusted one starts behaving like an attacker. In this attack, the access looked valid. The behavior didn't.

Test quietly, then sweep

The attacker started slowly. They tested the stolen credentials on one low-value Qubole role, took a quiet look around, and made a first theft of thousands of customer-profile files. Then they moved fast. Within minutes they entered every Qubole-trusted role and started bulk downloads that ran in the background over the following days. A final pass, from a different VPN address, pulled production database backups.

Then the activity stopped. The trusts were still in place, so the attacker went quiet without ever losing access.

How the attacker stole credentials

Stealing data wasn’t enough. We saw the attacker use several different techniques to steal credentials that could open even more doors:

  • Pulling secrets in bulk from Secrets Manager: source-control, identity-provider, CI and database credentials, and even the vendor’s own tokens and ExternalIds.
  • Reading decrypted parameters from SSM Parameter Store, including monitoring and scanner agent keys.
  • Harvesting Lambda environment variables, switching to a second route when the first one was blocked.
  • Scraping EC2 user data, the startup scripts where tokens and passwords often hide.

How we traced it

The first job was matching the leaked samples to data Sentra had already scanned. We compared what was inside the files, not just their names, because names are easy to change and content isn't.

Within a few hours we had it down to a handful of S3 buckets. Those were the sources, and the question became much narrower: who could read them?

Each source bucket could be reached by hundreds of identities: service roles, admins, single sign-on users and automation. Chasing every one of them in a day wasn't realistic. So we narrowed to external identities, the accounts outside a company's environment that are still trusted to get in, such as vendors, tools and partners. Then we checked which of them could read most of the source buckets. One stood out: Qubole.

Being able to reach data doesn't mean someone did. So for every external identity, we compared its activity to its own history: when it was used, how often, from which IP addresses, and what it did. Every vendor looked normal except one.

A small team split the work, each using AI to move faster, and we held every finding to one rule: it was either proven or assumed. That rule saved us more than once. One early lead looked strong on paper, but the activity logs showed the identity had never been used, so we dropped it.

Proving what was taken

Knowing the attacker could reach the data wasn't enough. Each affected company needed to know what was actually taken, and that's harder to prove than it sounds, because most cloud storage doesn't record every file read by default. So we pieced the picture together from three places.

The first was encryption. Every time an encrypted file is downloaded, the cloud has to unlock it, and each unlock is logged with the file's name. By matching those records to the attacker's sessions, we could see which files left. Files that only use default encryption leave no such trail, so the real number is likely higher.

The second was the secrets themselves. Every password and key the attacker read left its own record, which gave an exact list of what to change.

The third was file access logs. Where they were turned on, they recorded every file the attacker downloaded, with the IP and session. Across one company's accounts that came to millions of files, and on encrypted buckets the logs matched the encryption records exactly.

This is where having an agentic Data Security Platform makes the difference. Sentra continuously discovers and classifies sensitive data across cloud, SaaS, data warehouses, on-premises environments and AI systems. It also maps every employee, service account and AI agent to the data each one can reach. After a breach, the clock is running: breach notification deadlines can be as short as 72 hours, and every hour spent working out what was taken is an hour that can't be spent containing it. Logs can show which files were touched, but not what was inside them. Because Sentra had already discovered and classified our customers' data, we knew which locations held personal, financial and credential data before the investigation even began. That turned "what did we lose?" from a question that can take weeks into one we answered the same day.

Five actions, same day

By the end of the day, we could give each affected customer five clear actions, each backed by evidence:

  1. Remove Qubole from every role that trusts it.
  2. Rotate every secret that was read. We shared each secret's name and where to find it in their logs, without ever seeing the values themselves.
  3. Block the attacker's IP addresses.
  4. Preserve the logs before they expire.
  5. Let Qubole know.

One vendor, many targets

What we saw wasn't unique to one company. The attacker held Qubole's credentials, and those credentials opened a door at every organization that still trusted Qubole. This was a broad campaign that moved through company after company, impacting dozens of Qubole customers.

Because Sentra can see which organizations trust the same vendor, we checked every Sentra customer with a Qubole connection within about an hour. The same activity showed up across customer environments, a long-unused Qubole role suddenly waking up in the same window, and we warned each affected customer directly.

We then reported the campaign to Wiz, which led to a joint investigation with Wiz and Mandiant. Their research shows the same attacker sweeping through one victim environment after another in quick succession.

Close the doors you forgot

Some vendors can reach far more sensitive data than others, and those are the ones an attacker wants. Compromise one of them, and everything it can access goes with it. Start by finding them: which outside identities can read your customer records, financial data and credentials, and how much of it each one can reach.

Then shrink that access with a zero trust approach: every vendor gets only the data it needs for the job it does today, and nothing more. Remove trust entirely for integrations you no longer use, because a dormant, privileged, external role should be removed, not watched. For the rest, cut permissions down to what the vendor documents and limit each role to the vendor's published network addresses. In this case, every secret that leaked came from permissions Qubole never needed, and a network restriction alone would have blocked every login we saw.

That's exactly what Sentra does. It shows which vendors, service accounts and AI agents can reach your most sensitive data, flags access that is excessive or unused, and helps you cut it back before an attacker can use it. And because access keeps changing, Sentra keeps watching, so a vendor that suddenly starts acting differently is caught early.

How Sentra turned a month into a day

We didn't start from zero, and that's why the investigation took a day instead of a month. Sentra had already found and classified our customers' sensitive data, so we could trace the stolen samples back to their source within hours. It had also mapped who could reach that data, vendors included, and how much each one could do, which turned hundreds of possible suspects into a short list.

Sentra had flagged the risk before anything happened, too: a Qubole role that had sat unused for months but could still reach sensitive data. And because Sentra knows how each identity normally behaves, the attacker stood out the moment a quiet vendor role started acting differently.

Knowing what the data was meant we could tell each customer what kind of sensitive information was exposed, not just where it lived. And because Sentra sees which organizations trust the same vendor, one customer's incident became an early warning for every other customer at risk.

We've since turned this method into reusable investigation skills, so the next case starts from a playbook rather than a blank page.

Actionable controls to prevent and mitigate supply chain breaches

  • Continuous sensitive data discovery: Automatically locate and classify sensitive data across all cloud, SaaS, data warehouse, and AI environments.
  • Identity-to-data mapping: Map every employee, vendor, service account, and AI agent to the specific data assets they can access.
  • Dormant access cleanup: Flag and revoke unused, excessive, or forgotten third-party integrations before attackers can exploit them.
  • Real-time anomaly detection (DDR): Monitor access patterns to detect and alert on unusual third-party behavior instantly.
  • Rapid incident containment: Use pre-classified data context to determine breach impact in hours instead of weeks.

For the full technical details and indicators of compromise, read Wiz's research .

Want to see which outside identities can reach your sensitive data today? Book a demo today.

Short-Seller Culper Research Published Information on Jensen Huang’s Affair Back in May

Daring Fireball
culperresearch.com
2026-11-09 15:57:04
Culper Research is a short-seller that published a report (PDF and in a thread on X) in May alleging that Nvidia “had a China problem”. From the start of its report: Nvidia claims that its business in China went to “zero” after April 2025 U.S. trade restrictions. We believe that in reality, ove...
Original Article
No preview for link for known binary extension (.pdf), Link: https://culperresearch.com/wp-content/uploads/2026/05/Culper_NVDA_5-13-2026.pdf.

Dad Asked 6-Year-Old Daughter if ‘She Had the Gun’ Before He Left Her in Line for Pokémon Cards

403 Media
www.404media.co
2026-11-09 15:42:34
Police arrested a man in South Carolina after he left his daughter asleep in a Target parking lot so he could keep his place in line....
Original Article

Pokémon released its Mega Evolution Delta Region cards this week and one man in Charleston, South Carolina wanted them so badly that he left his 6-year-old daughter in line at Target at 1 am with a pillow and a blanket.

According to the incident report obtained by 404 Media, the person next to the little girl in line heard the father ask if his daughter “had the gun” before he left her alone at Target for more than an hour. Later, the father told detectives he left his daughter behind so “he could maintain his place in line and avoid missing the opportunity to purchase the cards.”

Pokémon cards are big business and people will wait to go to wild lengths to secure them. Waiting in line outside of a store for days before a new release is routine. John-Michael Dooley was waiting in line outside of a Target in Charleston, South Carolina with his 6-year-old daughter on the morning of November 6 when he decided to run home. He didn’t want to lose his place in line so he left his daughter behind “sleeping on the concrete,” according to a record of 911 calls obtained by 404 Media.

Other people waiting for Pokémon cards watched Dooley drive away and called the cops when he didn’t return. One guy on the scene started a timer on his phone when Dooley left and called the cops once it hit 45 minutes. “[He] advised later that he continued the timer on his phone, and the point in which the father returned to target showed 1 hour and 6 minutes,” according to an incident report obtained by 404 Media.

The person in line next to the 6-year-old “recalled the father waking his daughter up before he left and advised her he was ‘taking the dogs home,’” the report said. “Following this, [he] recalled hearing the father ask the daughter if ‘she had the gun’ before leaving.’ All parties on scene advised that the offender did not ask anyone to care or look after his daughter, and all stated the offender simply left her there by herself.”

The cops woke the girl up and she told them “she was at Target in line to get Pokémon cards with her father when the store opened,” according to the incident report. The police didn’t find a gun. “The only items the juvenile had in her possession when she was located was a pillow and a green blanket.”

Dooley returned to the line to find police talking to his daughter. “The juvenile still was unsure to the whereabouts of her father at this time,” the report said. “Several minutes after this, I could hear and see a dark colored SUV driving in the parking lot of Target in our direction. As the vehicle got closer, the [person who called 911] yelled out ‘That`s him.’”

Dooley got out of his car and police arrested him. “The offender was brought back to my patrol vehicle at which point he continued to say that he had only left to bring his dogs home,” the report said. “The offender reiterated this several times while also confirming that he left his 6-year-old daughter unattended for a period of time.” Dooley has been charged with unlawful conduct toward a child.

Pokémon card collecting has been at the center of a few strange crimes over the past few years. Fights broke out in multiple Target parking lots earlier this year when a 30th anniversary set dropped.

About the author

Matthew Gault is a writer covering weird tech, nuclear war, and video games. He’s worked for Reuters, Motherboard, and the New York Times.

Matthew Gault

Tesla Brain Drain

Daring Fireball
electrek.co
2026-11-09 15:32:27
Fred Lambert, writing for Electrek: Tesla painted a very different picture just two years ago. At its 2024 shareholder meeting, it showed this slide of its lineup: the Model 3, Model Y, Model S, Model X, Cybertruck, and Semi, plus three vehicles under covers that Musk said were “going to be pret...
Original Article
Tesla's 2024 vehicle lineup slide with the Model S, Model X, and Cybertruck crossed out and question marks on the covered vehicles
Tesla lineup slide from its 2024 shareholder meeting, with the discontinued Model S, Model X, and Cybertruck crossed out (Electrek edit)

Elon Musk now says Tesla can’t build the Cybertruck and the Cybercab at the same time because there are only so many “smart, dedicated people” to go around. Half the executives he showed off in 2023 as proof of Tesla’s “bench strength” have since left the company.

It’s the most honest explanation yet for how Tesla went from five consumer vehicle programs at the start of 2026 to a single platform, Model 3 and Model Y, by the middle of 2027.

Three explanations in four days

On Friday, Musk said Tesla would wind down Cybertruck production at Giga Texas around the middle of next year “to make room for increased Cybercab production.” As we pointed out at the time , Giga Texas isn’t short on space. The Cybertruck line runs at a fraction of its installed capacity because the truck sells a fraction of what Tesla planned.

A day later, replying to a user on X, Musk gave a different reason:

“The biggest thing most people fail to understand is that there are a very limited number of smart, dedicated people! They can only do so many things.”

He added that if Tesla has to “maintain a complex production line, supply chain and allocate engineering for Cybertruck, we can’t use those people” for scaling Cybercab.

By this morning, the explanation had shifted again, to the “opportunity cost of the complexity of Cybertruck.” But the Saturday version is the one that matters. Musk is telling us the bottleneck at Tesla isn’t factory space or money. It’s people.

From five programs to one platform

The Cybertruck is the second casualty this year. In January, Musk announced the end of the Model S and Model X on Tesla’s Q4 earnings call and summed up the reason in one word: “Autonomy.” The Fremont line is being converted to build Optimus robots, and by April, only inventory was left .

The flagships had been on life support for years. Their last real update was the 2021 interior refresh. The June 2025 “refresh” brought a new paint color, a front bumper camera, a bit more range, and a $5,000 price increase. That’s not how you treat a vehicle program you care about.

Tesla painted a very different picture just two years ago. At its 2024 shareholder meeting , it showed this slide of its lineup: the Model 3, Model Y, Model S, Model X, Cybertruck, and Semi, plus three vehicles under covers that Musk said were “going to be pretty special.”

Tesla vehicle lineup slide from its 2024 shareholder meeting, with three covered upcoming vehicles
Tesla lineup slide from its 2024 annual shareholder meeting (Tesla)

Of the five consumer vehicles on that slide, three are now dead or on their way out.

So here’s what will be left in the second half of 2027: Model 3 and Model Y, two vehicles built on the same platform, plus the Model Y L and cheaper “Standard” variants of both. The Semi is a commercial truck. The Roadster’s production is still a giant question mark. And the Cybercab is a robotaxi with no steering wheel, not a car you can buy – even though Tesla is going to let fleet buyers get them to add on its own Robotaxi network. We previously explained how this is a terrible idea .

For comparison, Hyundai Motor Group sells more than half a dozen EV models in the US across its Hyundai, Kia, and Genesis brands, on top of its gas and hybrid lineup. GM and Toyota run dozens of nameplates at once. Tesla can’t keep more than two programs alive at the same time.

The “significant bench strength” that walked out the door

At Tesla’s Investor Day at Giga Texas on March 1, 2023, Musk mostly stayed out of the spotlight. Instead, Tesla paraded more than a dozen executives on stage to present its plans, a rare move for a company long criticized for being a one-man show.

“We’ve obviously got significant bench strength here,” Musk said at the time.

Of the 14 executives named as presenters that day, seven are gone:

  • Zach Kirkhorn , CFO, left in August 2023.
  • Colin Campbell , VP of powertrain engineering, left in 2024 and is now CTO at Redwood Materials.
  • Drew Baglino , SVP of powertrain and energy engineering, left in April 2024 after 18 years.
  • Rebecca Tinucci , head of Supercharging, was fired in April 2024 along with most of her team.
  • David Lau , VP of software engineering, left in April 2025 after 12 years.
  • Pete Bannon , VP of hardware engineering, left in August 2025 as Tesla shut down its Dojo supercomputer .
  • Mike Snyder , VP of energy and charging, stepped down last month, according to the Wall Street Journal. Tesla hasn’t confirmed it.

Martin Viecha, who ran investor relations through that event, left in April 2024 as well.

Seven are still at Tesla, according to their LinkedIn profiles: Tom Zhu, Lars Moravy, Franz von Holzhausen, Ashok Elluswamy, Karn Budhiraj, Laurie Shelby, and Brandon Ehrhart. And the ones who left weren’t peripheral. They ran batteries, powertrain, software, chips, energy, charging, and the money.

The people who actually build the cars are leaving too

The bigger problem for Tesla’s ability to run vehicle programs is the program-level talent, the people who take a car from prototype to volume production.

In November 2025, Tesla lost the head of its Cybertruck program , Siddhant Awasthi, and the Model Y program manager , Emmanuel Lamacchia, within a day of each other. Lamacchia had led Tesla’s best-selling vehicle for four years.

Then the Cybercab, the program Musk is now pulling people toward, started losing its own leaders:

  • Victor Nechita , Cybercab vehicle program manager, quit in February 2026 , days after the first production unit came off the line.
  • Mark Lupkey , who ran Cybercab assembly and end-of-line at Giga Texas, left in March .
  • Michael So , head of Cybercab new product introduction and Giga Texas employee number one, left in April for a nuclear startup.
  • Jody Kerns , senior manager of Cybercab general assembly, left in October to run R2 general assembly at Rivian.

Add 17-year finance VP Sendil Palani and Thomas Dmytryk, the director who built Tesla’s over-the-air update system and Robotaxi infrastructure, both in March, and you get the picture.

So when Musk says he needs Cybertruck’s people for Cybercab, part of the reason is that Cybercab keeps losing its own.

Tesla has bet on autonomy too early before

Musk will frame all of this as focus. Autonomy is going to be so big, the argument goes, that Tesla has to go all in.

But we’ve heard that before. Tesla made the yoke steering wheel standard on the Model S and Model X in 2021 because the cars would soon drive themselves, then brought back a round wheel as an option. It removed the turn signal stalk from the Model 3 in 2023, then brought the stalk back in 2025 and started selling a $350 retrofit to owners. Each time, the autonomy that justified the change wasn’t there yet.

And Tesla isn’t the leader in unsupervised driving. It has the best driver-assist system on the market, but Waymo still logs roughly seven times more driverless miles per week, and NHTSA estimates Tesla’s entire Robotaxi fleet at about 1,000 vehicles. Zoox is scaling too, and Baidu’s Apollo Go runs a far bigger driverless fleet in China.

Electrek’s Take

This is something that I’ve been highlighting for a decade. Even after it became a big company with a large headcount, Tesla has never been good at running several vehicle programs in a healthy way. The Model S and Model X were starved for updates long before the talent exodus started. Tesla has always thrown everything at its newest program and let the older ones coast.

What changed is that the slack is gone. In 2023, Tesla could still neglect the flagships and keep them on the market, because it had deep benches in engineering, manufacturing, and software to absorb mistakes. Today, half the executives Musk called his bench are gone, and the people running the Cybercab ramp keep walking out. Musk is now openly telling us there aren’t enough people left to build a pickup truck and a robotaxi at the same time.

Musk calls it focus. It looks a lot more like a constraint Tesla can’t hire its way out of.

Will the Cybercab be revolutionary and make it all worth it? We have our doubts. Tesla leads in driver assistance with FSD, but it has failed to evolve the product into unsupervised self-driving at scale, which it promised to buyers for a decade. It’s clearly not the leader in unsupervised self-driving, and the competition is crowded. Tesla’s lasting impact on the robotaxi market is genuinely hard to predict.

What’s not hard to see is the trend. Tesla has shown a complete inability to sustain multiple vehicle programs at once, and it’s getting harder for the automaker, not easier. If Tesla can’t hold on to the people who build its cars, how long before the Model 3 and Model Y get the same treatment as the Model S?

Both vehicle programs will undoubtedly go down in history as some of the most critical EVs of all time, but that doesn’t guarantee lasting success in a rapidly changing auto landscape.

If you’re driving an EV, the people building it matter, but so does where your electricity comes from. With electricity rates up almost 10% last year and expected to keep climbing, going solar is one of the best ways to protect yourself against rising costs. And with lease and PPA options, you can do it with zero upfront cost and start saving immediately. If you want to find the best deal, check out EnergySage . It’s a free service with hundreds of pre-vetted installers competing for your business, so you save 20 to 30% compared to going it alone. No sales calls until you pick an installer. Get your free quotes here .

Add Electrek as a preferred source on Google Add Electrek as a preferred source on Google

FTC: We use income earning auto affiliate links. More.

Jensen Huang’s image has been shattered. Could he be pushed out at Nvidia?

Guardian
www.theguardian.com
2026-11-09 15:27:07
Huang built Nvidia as a family business but after the co-founder had an affair with an alleged Chinese spy, its board faces a difficult decision For more than 30 years, Jensen Huang has been the seemingly unshakable public face of Nvidia. He co-founded the company as a young engineer in 1993 and ove...
Original Article

For more than 30 years, Jensen Huang has been the seemingly unshakable public face of Nvidia. He co-founded the company as a young engineer in 1993 and oversaw its growth into a multitrillion dollar chipmaker and bellwether of the AI industry at large.

He’s also made it a family business. His children, Madison and Spencer, have taken leadership roles at the firm. While not a company executive, his wife, Lori Mills Huang, leads the family foundation which, as of 2024, controls over 60m Nvidia shares.

But Huang’s image as a family man has been shattered as of Sunday. After the New York Times revealed at the end of October that Huang may have been targeted by a Chinese intelligence asset who he had developed a close relationship with, he admitted in a letter to employees on Sunday that he had been having an affair.

Initially , Nvidia spokesperson John Rizzo said there was nothing out of the ordinary about Huang’s interactions with Alice Huang , an executive at a Singaporean datacenter firm, Megaspeed. US government officials had suspected Huang of smuggling American chips into China, prompting those officials to surveil and monitor her, the Times first reported. In the course of that surveillance, officials allegedly determined that Alice Huang was a Chinese spy and had gotten close with the Nvidia leader.

Nvidia’s board of directors have now launched an independent investigation about the national security concerns surrounding Huang’s relationship.

“I support the investigation and will cooperate fully,” Huang wrote in his letter. “I love our country and our company. I am committed to protecting Nvidia and supporting America’s national security. I am proud and grateful to be an American.”

Megaspeed did not respond to a Guardian request for comment before publication.

In his letter, Huang apologized to his family, acknowledging how much they’ve supported him. His wife, Mills, kept a relatively low profile and didn’t play a formal role at Nvidia. However, in a 2023 interview with the New Yorker, Huang shared that Mills had also worked in Silicon Valley as a microchips engineer before stepping away to raise their children.

“Throughout my life, my family has given me love and support,” Huang wrote in his letter to employees. “They deserve my honesty and loyalty. Instead, I let them down and damaged the life we built together. I take full responsibility for what I did and the hurt I caused, and I accept the criticism that comes with it.”

Both his children now hold high ranking roles at the company, despite not initially pursuing careers in tech. His daughter, Madison, serves as the senior director of product and technical marketing for physical AI platforms, but got her start as a chef. She attended the Culinary Institute of America and Le Cordon Bleu before going to business school and transitioning to luxury marketing. She previously worked at LVMH – the parent company of Lous Vuitton.

Spencer , for his part, now serves as the director of product for Robotics at Nvidia but spent much of his career as a consultant before joining his father’s company as a product manager. Before consulting, he owned and co-founded a craft cocktail bar in Taiwan.

Could Jensen Huang be pushed out?

In his letter, Huang reiterated his commitment to Nvidia, saying he hoped to earn back his colleagues’ and employees’ trust. However, analysts and investors say there’s a chance he may be removed as CEO after the board’s investigation.

“This is a black eye moment for Jensen and will spark multiple congressional inquiries at a minimum and will create an overhang on the stock for a myriad of reasons,” said Dan Ives, a partner and analyst at investment bank Yorkville Ives. “There is clearly risk as discussed that Jensen could be removed as CEO depending on the board investigation and this will add risk to the stock as he is so important to the Nvidia story and strategy globally.”

Ives said the family’s role at Nvidia adds some complexities for the board.

“The board has to make its decision independent of the family spider web of Jensen and his family at Nvidia,” Ives told the Guardian. “It makes this a very complex situation for the board to navigate with the world watching.”

skip past newsletter promotion

Huang is to Nvidia what Steve Jobs was to Apple, said Ken Mahoney, the CEO and president of Mahoney Asset Management. “If you asked any Nvidia investor or anyone involved in tech and markets, would they like to see Jensen gone? Definitely not, but [Nvidia] would survive,” Mahoney said.

“Losing Huang would introduce a lot of uncertainty, particularly given his influence over Nvidia’s strategy, culture, and relationships with major technology companies,” he continued. “The bigger question is whether a successor could maintain Huang’s strategic vision and ability to anticipate where the industry is heading, and how that new leader could be tested along the way if things become difficult.”

Executive affairs or inappropriate relationships have recently unseated CEOs, according to executive recruiting and coaching firm Challenger Gray and Christmas. In 2024, the CEO of Astronomer was caught on a kiss cam with the company’s chief people officer, leading him to resign shortly after. Nestlé fired CEO Laurent Freixe for a relationship with a subordinate.

Nvidia offers a more complex picture. On one hand, Huang’s affair is not just a matter morals or ethics, there are potential national security concerns. On the other, Huang is core to the DNA of Nvidia which in turn is the bedrock of the entire AI industry – an industry upon which the economy relies greatly.

Nvidia shares fell 7.5% as soon as the stock market opened, wiping over $330bn off the company’s value.

“When the CEO of the most valuable company in the world is tied to a counterintelligence investigation because of a personal relationship, every board in America should be paying attention,” said Andy Challenger, chief revenue officer at Challenger, Gray & Christmas. “It’s not just a question of romance or morality any more. It’s a question of judgment, national security exposure, shareholder trust, and whether the person at the top can be relied on to protect the enterprise.”

In a statement, Nvidia’s board said they do not believe either national security or company secrets were compromised but they will “examine all available information.”

“The Board has confidence in Jensen and his leadership team and will provide further updates as appropriate,” the board said in a statement .

The New Museum’s New Director: Art Is Not a Lubricant

hellgate
hellgatenyc.com
2026-11-09 15:27:02
Massimiliano Gioni, curator and erstwhile graffiti writer, has already launched exhibitions that challenge—even frighten....
Original Article

This March, the New Museum reopened its 60,000-square-foot expansion with "New Humans: Memories of the Future," a sprawling meditation on the technological past, present, and future that included eerie floating jellyfish-drones , World War I prosthetics, and a video installation of a deepfake Kim Kardashian describing war in Sri Lanka. After that exhibit closed this fall, the New Museum put up the multidisciplinary artist Arthur Jafa 's first museum survey in the United States, including huge video installations and photographic collage that interrogate and reframe the way Black lives are depicted in images.

Both of these must-see exhibitions share a probing, sharply current perspective that urge the viewer to question the cultural and technological mores that shape the world. Both were projects of Massimiliano Gioni, the Italian visionary who, in July, was announced as the New Museum's new director—only the third in its 49-year history—taking over for Lisa Phillips, who spent 26 years at the helm. Gioni, 52, has spent much of his celebrated career at the New Museum, joining in 2003 as director of special exhibitions before becoming its artistic director in 2014. He's a longtime East Village resident, but he has a global perspective too, as a former curator of biennales around the world, including in Venice, Gwangju, and Berlin.

Hell Gate videochatted with Gioni on an evening in late October about his perspective on art, his youth as a graffiti writer, and the polemical mission of the New Museum. "The New Museum is a place where, yes we show great art and artists, but as vehicles to understand the world we're in," he said. "There is less art for art's sake in our building than in others, I think."

This conversation has been condensed and edited for clarity.

Hell Gate: You've been in New York for exactly 20 years, is that correct?

Massimiliano Gioni: Actually, longer, because I came at the end of '99 and then I lived here until 2003. But the accent doesn't wash out.

I read in the Arthur Jafa exhibition catalog that you were a graffiti writer. What type of graffiti were you doing?

I was an aspiring graffiti artist in Italy and I even got arrested—I must say I was lucky that I got arrested in Italy, not in New York, much rougher—and I was still underage when that happened. Fortunately it didn't go down on my permanent record as they say. It was all Keith Haring's and Rammellzee's and even Basquiat's fault. The funny story is, graffiti art had an early exposure in Italy of all places. Not many people know that Jean-Michel Basquiat's first gallery show happened actually in the city of Modena at Emilio Mazzoli before it even happened in New York at Annina Nosei's. Probably the first museum show for graffiti art happened in Italy in the early '80s. It was called Arte di Frontiera , Frontier Art. I was too young to have seen the actual show, but the catalog of that show was my bible for growing up as a kid.

It was very much connected to certain fantasies I had about New York, probably, and also being born outside of a big city. I probably kind of identified with a slightly outsider's position. But that book with all the photos of, you know, A-One and Lee Quiñones and Crash and Lady Pink and all those guys. And then, of course, early SAMO was very inspiring. And then Keith Haring was, you know, for as many kids of my age, a kind of gateway drug. It was like the surrealists, and then Keith Haring.

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

At Midwestern Fundraisers, This Scandinavian Tradition Is Still a Favorite

Portside
portside.org
2026-11-09 15:08:03
At Midwestern Fundraisers, This Scandinavian Tradition Is Still a Favorite jeannette Mon, 11/09/2026 - 15:08 ...
Original Article
At Midwestern Fundraisers, This Scandinavian Tradition Is Still a Favorite Published

On cold winter night families look forward to a meal centering on traditional potato dumplings. | WANDERINGJEW_WANDERS/USED WITH PERMISSION

Klub

This stick-to-your-ribs Scandinavian dumpling is a favorite at Midwestern fundraisers.

Between 1825 and 1925, millions of Scandinavians immigrated to the United States. Many of them settled across North Dakota, South Dakota, Minnesota, Wisconsin, and Iowa. Around the Midwest, Americans remember their ancestors making a hearty, stick-to-your-ribs potato dumpling called klub (also spelled klubb ). Some know them as kumla , others call them ball (the names reflect the region from which their families hailed).

After a long and frigid day on the farm, households sat down to a meal of big, dense klub, often served with nothing but a generous helping of melted butter. Some swear by sweet syrup as a topping, while others opt for a ladleful of ham broth. Cooks all start by grating potatoes, and many simmer their dumplings in pork stock, but from there, the process becomes something of a choose-your-own adventure. They might tuck a bit of meat in the center, or use no filling at all. For most of history, cooks simply worked with what they had: salt pork, suet, and congealed blood were all fair game for stuffing. Regional and necessity-based variations aside, many chefs have taken the same approach to day-old leftovers, cutting them into chunks and frying them in butter.

When meat was plentiful, families enjoyed klub alongside cuts of ham or bacon. You can still find the hefty dumplings served this way in a couple of restaurants. Though klub is nowhere near as prevalent as it once was, cooks carry on the tradition at home, as well as at Scandinavian special events and fundraisers around the Midwest.

Vincent Bernat: Performance evolution of route lookup on Linux

PlanetDebian
vincent.bernat.ch
2026-11-09 15:07:32
In previous articles, I explained how the Linux kernel implements IPv4 and IPv6 routing tables, and I showed the performance improvement of route lookups from Linux 2.6.32 to 4.16 for IPv4—including the impact of the Meltdown and Spectre mitigations—as well as from Linux 2.6.39 to 4.18 for IPv6. Thi...
Original Article

In pre­vi­ous ar­ti­cles, I ex­plained how the Linux ker­nel im­ple­ments IPv4 and IPv6 rout­ing ta­bles, and I showed the per­for­mance im­prove­ment of route lookups from Linux 2.6.32 to 4.16 for IPv4 —in­clud­ing the im­pact of the Melt­down and Spec­tre mit­i­ga­tions —as well as from Linux 2.6.39 to 4.18 for IPv6 . This ar­ti­cle up­dates the num­bers through Linux 7.3 and in­ves­ti­gates the per­pe­tra­tor re­spon­si­ble for the per­for­mance re­gressions! 🕵️‍♂️

I ran the fol­low­ing bench­marks on an AMD EPYC 8024P , a Zen 4c CPU , rented from Scale­way , run­ning at 2.4 GHz with CPU boost dis­abled. I com­piled the ker­nels with GCC 10.2: this ver­sion can com­pile older ker­nels as well as the cur­rent ones.

IPv6 #

Performance evolution of IPv6 route lookups from Linux 4.14 to
7.3

Performance evolution of IPv6 route lookups. Versions with an asterisk have SRSO mitigation disabled.

I tested four scenarios:

  • a re­cent full view with about 260,000 prefixes,
  • a full view from 2017 with about 40,000 prefixes,
  • a set of 40,000 /48 pre­fixes, such that 2 lookups out of 3 match, and
  • a set of 40,000 ran­dom /128 pre­fixes, such that 1 lookup out of 400 matches.

In Linux 4.15 , Wei Wang im­proved the lookup per­for­mance by re­plac­ing the read-write lock with an RCU and a spin­lock in com­mit 66f5d6ce53e6 . In Linux 4.18 , David Ah­ern im­proved the data struc­tures used by route lookup . In Linux 5.9 , Brian Vazquez re­moved ex­pen­sive in­di­rect calls in com­mit 55cced4f813b .

The ma­jor 200 ns re­gres­sion in­tro­duced in Linux 6.5 wiped out all these im­prove­ments. This ver­sion im­ple­ments a mit­i­ga­tion for “ Spec­u­la­tive Re­turn Stack Over­flow ,” a vul­ner­a­bil­ity af­fect­ing AMD pro­ces­sors, in com­mit fb3bd914b3ec . This mit­i­ga­tion adds about 20 cy­cles on each func­tion re­turn. It was back­ported to older ker­nels (5.10, 5.15, 6.1, and 6.4). To keep the re­sults leg­i­ble, I dis­abled the mit­i­ga­tion for these ver­sions with spec_​rstack_​overflow=​off on the ker­nel com­mand-line.

You can check the vul­ner­a­bil­i­ties im­pact­ing your CPU and their mit­i­ga­tions with lscpu . Some mit­i­ga­tions may de­pend on the mi­crocode or on the firmware. 1

$ lscpu | grep '^Vuln'
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Mitigation; Safe RET
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Vulnerable: Clear CPU buffers attempted, no microcode
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Mitigation; IBPB before exit to userspace

IPv4 #

Performance evolution of IPv4 route lookups from Linux 4.14 to
7.3

Performance evolution of IPv4 route lookups. Versions with an asterisk have SRSO mitigation disabled.

I tested three scenarios:

  • a re­cent full view with more than 1,000,000 prefixes,
  • a sub­set of a full view from 2017 with 500,000 pre­fixes, and
  • a set of 500,000 con­tigu­ous /32 prefixes.

The 30 ns im­pact of the mit­i­ga­tion for SRSO in Linux 6.5 is smaller than for IPv6 be­cause IPv4 route lookups tra­verse fewer func­tions: around 4 func­tion calls for IPv4 com­pared to 25 for IPv6.

In Linux 5.11 , I in­tro­duced a re­gres­sion in com­mit c0c5a60f0f13 af­ter fix­ing the be­hav­ior of net.​ipv4.​conf.​all.​ignore_​routes_​with_​linkdown ! 2 As a re­sult, the ip_​ignore_​linkdown() func­tion spends around 5 ad­di­tional cy­cles to re­turn a re­sult as it needs to fol­low three ad­di­tional point­ers. fib_​lookup() even­tu­ally calls it in the fol­low­ing code :

if (ip_ignore_linkdown(nhc->nhc_dev) &&
    nhc->nhc_flags & RTNH_F_LINKDOWN &&
    !(fib_flags & FIB_LOOKUP_IGNORE_LINKSTATE))
    return false;

If we re­order the con­di­tions, we avoid call­ing ip_​ignore_​linkdown() for the most com­mon case where the link isn’t down:

if (nhc->nhc_flags & RTNH_F_LINKDOWN &&
    !(fib_flags & FIB_LOOKUP_IGNORE_LINKSTATE) &&
    ip_ignore_linkdown(nhc->nhc_dev))
    return false;

Here’s the dis­tri­bu­tion of lookup times be­fore ap­ply­ing the patch on top of net-next: 3

min=128 max=4657 count=994104 95th=134 90th=133 50th=132 mad=0
    value │                         ┊                            count
      128 │                                                        120
      129 │                                                       2232
      130 │▒                                                     25224
      131 │▒▒▒▒▒▒▒▒▒▒▒▒▒░                                       264264
      132 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░             516480
      133 │▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░      126864
      134 │▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░      21624

The lighter shade de­picts the cu­mu­la­tive dis­tri­bu­tion func­tion. Af­ter ap­ply­ing the patch, the me­dian im­proved from 132 to 126 cycles: 4

min=124 max=208839 count=994104 95th=128 90th=127 50th=126 mad=0
    value │                         ┊                            count
      124 │                                                        576
      125 │▒▒                                                    49440
      126 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░                      584904
      127 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░       284592
      128 │▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░      45288

Impact of mitigations #

To re­duce the im­pact of mit­i­ga­tions, you can dis­able all of them with mitigations=​off , dis­able only a spe­cific one like with spec_​rstack_​overflow=​off , or pro­tect against only some at­tack vec­tors with mitigations=​auto,no_​user_​kernel , start­ing from Linux 6.17.

The im­pact is also quite dif­fer­ent de­pend­ing on the CPU. For ex­am­ple, on a Xeon W-2295 , an In­tel desk­top CPU from 2020, the im­pact of the mit­i­ga­tions is only a few cy­cles for IPv4, and less than 3% for IPv6. The main con­trib­u­tor is the mit­i­ga­tion for the In­di­rect Tar­get Se­lec­tion vul­ner­a­bil­ity, which is fixed since the Sap­phire Rapids ar­chi­tecture.


If we set aside the re­gres­sions in­tro­duced by the mit­i­ga­tions against CPU at­tacks , the per­for­mance of IPv4 is de­clin­ing slowly over time while IPv6 has im­proved in the past and is cur­rently sta­ble. If rout­ing per­for­mance is im­por­tant, you have sev­eral op­tions: choose a dif­fer­ent CPU like an AMD Zen 5 CPU , a fourth gen­er­a­tion Xeon CPU , or maybe an ARM Neo­verse V2 ; dis­able some or all the mit­i­ga­tions; by­pass rout­ing with XDP / eBPF ; 5 or off­load rout­ing to the net­work card.

Note

Maytham Al­su­dany re­viewed a first draft of this ar­ti­cle. Any er­rors are still mine!

Claude Fable 5.2 Scores 65 on Artificial Analysis, Highest So Far

Hacker News
artificialanalysis.ai
2026-11-09 15:04:55
Comments...
Original Article

Intelligence Updated

Artificial Analysis Intelligence Index

Artificial Analysis Intelligence Index v5.0.1 incorporates 9 evaluations: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), and Terminal-Bench-Science 0.1

No publicly available API

Artificial Analysis Intelligence Index v5.0.1 includes: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), Terminal-Bench-Science 0.1 . See Intelligence Index methodology for further details, including a breakdown of each evaluation and how we run them.

Artificial Analysis Intelligence Index by Open Weights / Proprietary

Artificial Analysis Intelligence Index v5.0.1 incorporates 9 evaluations: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), and Terminal-Bench-Science 0.1

No publicly available API

Artificial Analysis Intelligence Index v5.0.1 includes: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), Terminal-Bench-Science 0.1 . See Intelligence Index methodology for further details, including a breakdown of each evaluation and how we run them.

Indicates whether the model weights are available. Models are labelled as 'Commercial Use Restricted' if commercial use is limited by conditions, and as 'Non-commercial' if the license prohibits commercial use.

Intelligence Index vs. Cost per Task

Artificial Analysis Intelligence Index · Weighted average cost (USD) per Artificial Analysis Intelligence Index task

Weighted average cost per Intelligence Index task. Each evaluation’s cost is calculated from input, cache hit, cache write, reasoning, and answer token prices, divided by task count, and weighted by its Intelligence Index weight.

Artificial Analysis Intelligence Index v5.0.1 includes: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), Terminal-Bench-Science 0.1 . See Intelligence Index methodology for further details, including a breakdown of each evaluation and how we run them.

Capability Indexes

Measures the performance of models on specific capabilities and industries

No publicly available API

Evaluations

Evaluations measured independently by Artificial Analysis · AA-PersonalityBench scores are percentile ranks from 1 to 100

No publicly available API

Agentic scientific research workflows in a terminal

Agentic software engineering in open-source repositories

GDP.pdf

Professional document reasoning, All-pass

Legal agentic work, Hallucination-Gated All-Pass Rate

Agentic interactive 3D experiences, Elo

Product and brand videos designed in code, Elo

Medical long context reasoning

Rich, varied, well-crafted language

Well-structured, scannable, answer-first

Truthful, acknowledges uncertainty, non-sycophantic

Use of filler and generic language

While model intelligence generally translates across use cases, specific evaluations may be more relevant for certain use cases.

Artificial Analysis Intelligence Index v5.0.1 includes: AA-Briefcase v1.1, AutomationBench-AA, Terminal-Bench 4.0, FrontierCode 2.0, AA-Omniscience v1.1, GDP.pdf, HLE-Diamond, CritPt v2 (Hard Subset), Terminal-Bench-Science 0.1 . See Intelligence Index methodology for further details, including a breakdown of each evaluation and how we run them.

AA-Briefcase v1.1

AA-Briefcase Elo

AA-Briefcase v1.1 is an agentic knowledge work benchmark developed by Artificial Analysis. AA-Briefcase Elo is a combined metric that aggregates rubric pass rate, analytical quality Elo and presentation Elo · Higher is better

No publicly available API

AA-Briefcase Elo is a combined metric that aggregates analytical quality Elo, presentation Elo, and rubric pass rate, with rubric performance converted into Elo via synthetic head-to-head matches. Elo and 95% confidence interval bounds are clamped at 0.

AA-Omniscience v1.1

AA-Omniscience Net Score

AA-Omniscience v1.1 Net Score (higher is better) measures knowledge reliability and hallucination. It rewards correct answers, penalizes hallucinations, and has no penalty for refusing to answer. Scores range from -100 to 100, where 0 means as many correct as incorrect answers, and negative scores mean more incorrect than correct.

No publicly available API

AA-Omniscience v1.1 Net Score (higher is better) measures knowledge reliability and hallucination. It rewards correct answers, penalizes hallucinations, and has no penalty for refusing to answer. Scores range from -100 to 100, where 0 means as many correct as incorrect answers, and negative scores mean more incorrect than correct.

Token Use

Output Tokens per Intelligence Index Task

Weighted average number of output tokens used to run one task in the Artificial Analysis Intelligence Index

No publicly available API

The number of tokens required per Intelligence Index task. This is calculated by multiplying the output tokens per eval by the relative weights of each benchmark in the Intelligence Index, then dividing by task count (excluding repeats).

Cost

Cost per Intelligence Index Task

Weighted average cost (USD) per Intelligence Index task · Segmented by token type · Lower is better

No publicly available API

Weighted average cost per Intelligence Index task. Each evaluation’s cost is calculated from input, cache hit, cache write, reasoning, and answer token prices, divided by task count, and weighted by its Intelligence Index weight.

Cost to Run Artificial Analysis Intelligence Index

Cost (USD) to run all evaluations in the Artificial Analysis Intelligence Index

No publicly available API

The cost to run the evaluations in the Artificial Analysis Intelligence Index, calculated using the model's input, cache hit, cache write, reasoning, and answer token prices and the number of tokens used across evaluations (excluding repeats).

Pricing: Cache Hit, Input, and Output

Price (USD per M Tokens)

No publicly available API

Price per token for cached prompts (previously processed), typically offering a significant discount compared to regular input price, represented as USD per million tokens. The values shown here are the cache hit price; cache write and cache storage are billed separately and vary by provider — see "Cache pricing by provider" for detail.

Context Window

Context Window

Context window: tokens limit · Higher is better

No publicly available API

Larger context windows are relevant to RAG (Retrieval Augmented Generation) LLM workflows which typically involve reasoning and information retrieval of large amounts of data.

Maximum number of combined input & output tokens. Output tokens commonly have a significantly lower limit (varied by model).

Performance

Measured by time per task (minutes), output speed (tokens per second), time to first answer token and time to first token (seconds)

Time per Intelligence Index Task

Output tokens divided by end-to-end output speed (minutes per Intelligence Index task) · Speed at the model's own endpoint or the median across providers · Lower is better

No publicly available API

The weighted average time (minutes) per Artificial Analysis Intelligence Index task: output tokens per task divided by output speed, weighted by each benchmark's weight in the Intelligence Index.

Speed and latency metrics average each endpoint's runs over the past 5 days, and the error rate pools them. We run the benchmark every 6 hours, and endpoints of deprecated models every 18 hours.

Output Speed

Output tokens divided by total request time, including time to first token · Higher is better

No publicly available API

Output tokens, including reasoning tokens, received per second over a request's full duration, from sending the request to receiving the final token. The headline value averages each Performance v3 workload over the past 5 days, then averages the workloads.

Time to First Answer Token

Seconds to first answer token received · Accounts for reasoning model 'thinking' time

No publicly available API

Time to first answer token received, in seconds, after API request sent. For reasoning models, this includes the 'thinking' time of the model before providing an answer. For models which do not support streaming, this represents time to receive the completion.

The AI poster boy, the ‘Chinese spy’ and Trump: how an affair may have harmed US security

Guardian
www.theguardian.com
2026-11-09 15:01:05
Jensen Huang’s close relationship with president means Nvidia CEO’s affair with woman alleged to be working for Beijing is a big deal A hand on the back, a kiss on the cheek; the footage of Alice Huang’s interaction with Jensen Huang in a Taipei venue last year does not seem particularly remarkable ...
Original Article

A hand on the back, a kiss on the cheek; the footage of Alice Huang’s interaction with Jensen Huang in a Taipei venue last year does not seem particularly remarkable at first glance.

But the Nvidia chief executive’s revelation on Sunday that he had an affair with Ms Huang has given it new significance.

According to reports, his lover, who is not a relation, was not just an executive at an Nvidia customer. She was also an alleged Chinese spy.

Nvidia has now launched an independent investigation into reports that the boss of a cornerstone company in the global AI boom has been the target of a foreign intelligence effort.

“While the board has no reason to believe that either national security or Nvidia secrets were compromised, the board’s inquiry will examine all available information,” said the board.

Trump and Huang shake hands and smile warmly near a microphone
Jensen Huang and Donald Trump shake hands at an ‘Investing in America’ event in Washington DC on 30 April 2025. Photograph: Leah Millis/Reuters

Huang, 63, a poster boy of the AI boom in his trademark leather jacket, admitted there was “no excuse” for what he had done.

Aside from Huang’s dented personal reputation, what is the scale of the damage done to Nvidia and US national security?

The story started to emerge last year when the New York Times and Bloomberg raised questions about a Singapore-based buyer of Nvidia’s powerful chips, which have become the proverbial shovels in the AI gold rush. There were concerns that Megaspeed was flouting US restrictions on AI chip exports to China by diverting some Nvidia inventory to America’s arch AI rival. Nvidia and Megaspeed denied this.

Then last month came a further startling NYT report that Jensen Huang had formed a “close relationship” with Alice Huang, a Megaspeed executive, and that American officials believed she was a Chinese intelligence asset. Donald Trump had been told, but decided not to act on the information. It is now evident that the relationship was more than just close.

At the heart of the question of what China might have achieved through Alice Huang is the extremely close relationship between the CEO of the world’s second-most-valuable company and the president of the United States.

The New York Times reported on Monday that Nvidia appeared to have successfully leaned on the US commerce department to halt an investigation into potential chip smuggling on the part of Megaspeed. That pressure came through a Trump appointee, who allowed Nvidia to reach out about the case.

Responding to reports last year that it might have diverted Nvidia deliveries, Megaspeed said: “Megaspeed is a Singapore-based company, operating fully in compliance with all applicable laws, including US export control regulations.”

Trump has met frequently – at least seven times – with the head of Nvidia since the start of his second term. Huang has flown on Air Force One and taken calls from the president during public events.

Four of their meetings have touched on one of the most sensitive issues in US-China relationships: the controls that the US has put up around the export of the world’s most advanced AI chips, which are almost entirely sold by Nvidia.

Under the former president Joe Biden, the US put in place the Chips Act, a package of rules that introduced sweeping limitations on US tech companies and their overseas trading partners. These rules sought to control what semiconductor technologies US companies could sell to businesses based overseas – particularly those that might be put under pressure to transfer those technologies to China.

It also introduced strict licensing requirements that in turn limited what those partners could do with technology that they bought.

Nvidia CEO Jensen Huang claps while seated at the Berlin summit
Huang gestures at an ‘Invest in Germany’ summit in Berlin, Germany on 19 October. Photograph: Lisi Niesner/Reuters

For Nvidia, this was bad for business. China was one of the largest markets for its GPU chips – accounting for roughly a quarter of its revenue in the years between 2020 and 2022. When the Chips Act passed, the company started to sell downgraded versions of its premier chips to China – for example , the A800 and H800. Some of these were then banned, forcing Nvidia to scramble even more.

Under Trump, things changed. The president first invited Huang to the White House just six days after he was inaugurated, to discuss AI policy and chip exports . The two then met again in July and August of 2025. This was followed by victories for Huang – Trump allowed Nvidia to export previously banned chips to China. Nvidia agreed, in turn, to give the US government 15% of the sales revenue.

Experts said the deal would help Beijing compete “on the AI frontier”, in other words develop AI systems to rival those being produced by the likes of Anthropic and OpenAI.

Five months later, the tech boss appeared to win another startling concession, days after another meeting with Trump. The president agreed to allow the tech boss to export H200s – a far more powerful chip – to China, in exchange for 25% of the revenue.

“President Xi responded positively!” Trump wrote on Truth Social.

It is not unusual for large technology companies to lobby for their preferred policies in Washington; nor is it unusual for Trump to give access – and favourable deals – to men he likes.

But one more thing is now apparent – during this crucial year for his company, Huang was also intimately involved with a reported Chinese spy. The two were first photographed together in mid-2024. Five months after Trump took office is when the two were filmed at the Taipei restaurant. This would have been at the height of Huang’s lobbying push, shortly before Trump agreed to let Nvidia sell the H200s.

What could Alice Huang have gleaned – and passed on – during this affair? Plenty. Glimpses into US policy as it was being made, and to Trump’s own chaotic thinking on AI. And perhaps a world of tips beyond the confines of the White House.

Huang was a key figure for government after government as they formulated their AI policy. He met world leaders from South Korea to Saudi Arabia that year; he joined the then UK prime minister, Keir Starmer, on stage in London.

He would have known the details of the most important tech policy for many governments on Earth – their AI ambitions – because his company was often the only one that could make these ambitions happen. That is certainly true for Britain.

For all the intellectual feats of the systems powered by Nvidia technology, it is Huang’s human intelligence that is most valuable to America’s competitors.

Here comes the sun[light]:An ambient Daylight Clock with time and space controls

Hacker News
hannahilea.com
2026-11-09 15:00:32
Comments...
Original Article

6 Nov 2026

I built a Daylight Clock!

Photo of Daylight Clock on wall

This analog clock has a 24-hour period, with midnight at the bottom and noon at the top. The lights around the circumference illuminate the current daylight span, based on the clock’s home latitude and longitude.

I also built a time-and-space control box:

Photo of clock on wall
Photo of Daylight Clock’s control box on wall

What does this controller do?

  • The knob at the bottom controls time, in increments of one week per click. 1

    The time knob in action:

    The sudden springs forward and falls back daylight shifts are when Daylight Savings Time begins and ends.

  • The toggle on the side switches enables the control box’s time and space overrides; when this switch is off, the time knob controls the brightness of the edge lighting. 2

  • The vertical slider is a latitude selector, designed so that the world map— Equal Earth projection !—lines up with the length of the slider. 3

    The latitude slider in action:

  • The three-way “relative longitude” toggle at the top sets position within the current time zone—i.e., whether the daylight computation is based on the west, central, or east edge of the given timezone. 4

    The longitude toggle in action:

Based on the relative longitude video, is it possible that this entire project was a way for me to illustrate the time zone grudge I’ve held for years? Not intentionally, but….

The grudge: I grew up in Michigan, on the west edge of the Eastern Time Zone (US); I later moved to the eastern side of that same zone, where the sun rises and sets a full hour earlier . This is distressing in the summer—by rights, the sun ought to set late in the summer!—and borders on criminal in the winter: the sun sets just after 4pm on the solstice. 😱

Envy-driven development (EDD): 5 cceckman’s daylight-aware clock

My clock’s provenance is wholly attributable to my friend Charles and his very cool daylight-aware clock . In Charles’s words:

I’ve always lived at middle latitudes of 35-40 degrees. I notice the change in daylight / nighttime hours across the course of a year; in the winter, ending work at a reasonable hour still feels like “working into the night”.

I wanted to have a little passive reminder about how much daylight I am / am not getting. Not one tied to my computer or phone – something more ambient. Naturally, a reminder of the passage of time is… a clock!

When Charles started building his clock I was covetous, and knew I had to build my own.

We made a few different design choices—his time display is digital, mine analog; his daylight illuminates outward from the circumference of the clock, mine inward 6 —but we both put noon at the top, 7 and I used his daylight calculation code wholesale. Also his pair programming assistance to sleuth out a mysterious failure mode! 8 9

My clock’s time-space control box was inspired by Charles’s nifty virtual interactive daylight visualization :

Photo of Charles's visualization.
Charles Eckman’s Daylight-Aware Clock simulator visualization
[ Source ]

Physical design and construction: Clock body

The clock movement is an off-the-shelf 24-hour movement. You can just buy these! 10

I designed the body of the clock and the body of the controller box in Cuttle.xyz , and cut the pieces on the laser-cutter at my local library’s free maker space(!). 11 I designed the clock to have a circumference of exactly 48 neopixels on an Adafruit neopixel strip , so that the lights would subdivide nicely into the hours of the day.

Vectorized layout of clock housing.

Vectorized layout of clock housing. Cuttle design here .

The outer decoration is from the astronomical face of the astronomical clock of the Zytglogge , in Bern, Switzerland. I digitized a photo of the Zytglogge, then cleaned it up and scaled it properly in Cuttle.

Photo of Zytglogge's astronomical clock with labels.
Astronomical clock from the Zytglogge tower in Bern, Switzerland.
Photo credit Sandstein , Public domain, via Wikimedia Commons.

Painting was…an experience.

Photo of decorated face during painting
Photo of decorated face after painting

I used wood glue to make the press-fit connections permanent.

Photo of clock parts before assembly
Photo of clock parts mid-assembly
Photo of clock parts during gluing
Photo of clock parts after assembly

I painted the clock with acrylic paint, and attached the outer decorated ring with Blu Tack so that I can easily remove it and swap it for a different decoration.

Photo of clock parts with blu tack for outer piece

Physical design and construction: Controller box

I designed the controller box in Cuttle, too.

Vectorized layout of control box. Cuttle design here .

I used wood sealant on the front and acrylic paint on the sides.

Photo of controller box pre-parts

I failed to make the box deep enough to fit the ensuing tangle of wires crammed inside, so it doesn’t sit completely flush against the wall. Ah well, can’t win ’em all.

Photo of controller box assembled and on wall

Hardware design

The Daylight Clock runs off an Adafruit Feather RP2040 microcontroller. The rest of the components are:

  • A strand of 48 neopixels ,
  • A real-time clock (RTC) component assembly, to maintain the current date and time even when the board isn’t powered, so that I don’t have to hand-set it every time I plug in the clock 12
  • A two-way toggle to enable/disable switch between “daylight based on current time” vs “daylight based on control box settings”
  • A linear potentiometer , i.e., the slider to control latitude
  • A rotary encoder , i.e., the knob to control date
  • A three-way toggle to switch between the different longitude locations (west, middle, east), and
  • Three LEDs to show that current longitude selection.
Photo of electronics assembly
Photo of electronics assembly
Photo of electronics assembly

The microcontroller and all components live in the control box, except for the neopixels around the clock face, which are connected to the microcontroller via some hand-braided wires and a few connectors.The connectors are so that I can easily change the distance between clock and control box, without doing any additional soldering. The neopixels are powered through the board, which plugs in via standard wall wart .

The new-to-me aspects of this project were the RTC and—less glamorously!—the crimped wire connectors.

Software design

I programmed the Adafruit Feather with CircuitPython, relying heavily on the asyncio library. asyncio allowed me to separate monitoring the state of the input controllers—“has the slider position changed? the toggle toggled? the knob turned?”—from re-computing each neopixel’s resultant color.

I ported the sunrise and sunset calculations from Charles’s Rust implementation of the NOAA solar calculator.

I’ve made the code available here —and standard houseplant programming caveats apply.

Retrospective

This project took a lot of calendar time, and a disproportionate amount of mental space.

Challenges:

  • Deciding what I wanted the clock frame to look like
  • Deciding how I wanted to decorate the clock face
  • Deciding how I wanted to decorate the outer ring around the clock’s face
  • Deciding that I was going to :just-flag: use a cardboard box for the controller…and then doing that, and discovering that I hated it and wanted to cut something out of wood
  • Purchasing pre-painted wood to speed up the cut/paint processes
  • Discovering that the library policies had changed so I couldn’t use their laser cutter on this wood
  • Attempting to use a different maker space and/or hire a local shop to cut this wood for me
  • Deciding to :just: use the default library wood and paint it myself afterwards
  • A series of painting mishaps with the decorative face that resulted in an unusable mess after accidentally using an oil-based ink over some acrylic
  • Recutting the face (…plus the wait time of signing up for a slot…)
  • Discovering that I’d glued the clock sides upside down (luckily the sizing still fit backwards, and I didn’t have to go re-cut everything again…)
  • Discovering that I’d installed the neopixel strip backwards (counterclockwise instead of clockwise)

Thankfully the result looks really cool, and works as intended, and I love having it on the wall.

Photo of full assembly on wall

I bet you want to make one of your own now, yeah?

Go for it!

To get you started:

Feel free to ask if you are building one and need more guidance at any step; I didn’t want to take the time (heh) to write a full tutorial, but I’m more than happy to assist retroactively.

Also, if you want to make one, but don’t want to deal with quite so many electronics:

  • You could skip the control box: The majority of the technical challenges I encountered—both design and implementation—came from the addition of the controls. A Daylight Clock sans control box would still be pretty cool.
  • You could use one of the Adafruit Feathers that is WiFi-enabled, and get the time via request, so you could skip setting up the RTC component.
  • If using a WiFi-enabled microcontroller, you could create a webpage-based control panel instead of the physical one, which would also be pretty cool!

Thanks to Charles! Also AF, for build [emotional] support.


Footnotes

  1. Originally I was going to scan in increments of “day”, but after playing with it, “day” felt too short and required too many turns to see a difference, or to have a true understanding of how much time had passed. After experimenting, “week” had the most pleasing connection between turning the knob and seeing a physical shift in daylight. ↩︎

  2. Brightness is controlled by the time knob too, when the clock is in “explore time and space” mode:

    The extreme contrast in all of these videos is because I turned the clock to full brightness for drama enhanced visibility, which resulted in some strange color autobalancing. The color in the photos is more representative. ↩︎

  3. I’m particularly proud of that bit! ↩︎

  4. Because the clock hands are not connected to the electronics, there’s no way for the clock hands to jump to a new time when a change in longitude crosses a time zone! Within a single time zone, however, there’s no need for the clock hands to shift. The longitude toggle therefore sets the relative longitude position within the clock’s default time zone—west, central, east. This makes visible the daylight shift across those different locations for the same time of day. ↩︎

  5. EDD follows a grand tradition of other driven developments … ↩︎

  6. I actually prefer the outward illumination of his to the inward illumination of mine, but when I started I didn’t know where I was going to hang my clock, or whether there’d be enough space around it on the wall to have a nice effect. The inward illumination makes the result slightly more self-contained. ↩︎

  7. It seems like the convention is for standard 24-hour analog clocks to place midnight at the top of the circle rather than at the bottom—but it felt more right to me for “day” to be the top half of this clock: with noon at the top of the clock, it feels like the hour hand tracks the sun’s the progress across the sky. Which, it turns out in hindsight, follows the Astronomical Clock convention! And there are a lot of cool astronomical clocks out there… ↩︎

  8. I thought maybe I’d mucked up something in my translation of his Rust to my CircuitPython, but the issue turned out to be due to the specifics of datetime handling in Python vs CircuitPython; I’d gotten the translation correct, but applied CircuitPython’s datetime incorrectly. An easy fix, once we found it. Programming: so fun. 🙄 ↩︎

  9. The real bug fixes are the friends we make along the way! ↩︎

  10. One can also theoretically purchase phase-of-the-moon 28-day movements (!), although I haven’t managed it yet, as I’ve only seen factory-scale batches for sale and I’m not really interested in having 500 of them… ↩︎

  11. If you’ve read any of my other project write-ups , you may notice a pattern here… ↩︎

  12. The PR2040 doesn’t have Internet or Bluetooth connectivity, so I can’t :just: automatically grab the current time over an external connection. Thus, the RTC. ↩︎


  • Created: 2026-11-06
  • Type: Project write-up
  • Tags: friendship-as-a-gateway-drug-to-electronics, long-held-grudge-against-the-1915-detroit-auto-lobby, hardware, data-viz, cad

I attended the Recurse Center and all I got was this lousy blog footer

USPS now offers official ZIP Code boundary polygons

Hacker News
postalpro.usps.com
2026-11-09 14:58:59
Comments...
Original Article

USPS® ZIP Code Boundaries is a national ZIP Code™ map utilizing USPS delivery address and location information to ensure accurate boundaries. Temporal fluctuation is based on changing delivery distribution for new or changed delivery locations. Many industries, such as mapping, mailing, marketing, insurance, real estate, logistics, navigation, and transportation can benefit from access to the ZIP Code boundary data.

For example:

  • As the ground truth for ZIP Code boundaries, users can incorporate these polygons as joint features or correct existing ZIP Code data as changes are made.
  • As a tool for organizing and displaying demographic data, ZIP Codes serve as a support structure for real estate and insurance industries.
  • ZIP Codes can serve as a proxy for the delivery location groupings for optimized routing.

USPS® ZIP Code Boundaries - Internal

Four quarterly updates.

USPS® ZIP Code Boundaries - Enterprise

Four quarterly updates with limited distribution to subsidiaries and partner companies.

USPS® ZIP Code Boundaries - Publication

Four quarterly updates with limited publication.

Parking-app convenience fees in 312 U.S. cities (median $0.35 per session)

Hacker News
parkgraph.com
2026-11-09 14:55:53
Comments...
Original Article

Key findings

  • Most common fees: $0.35 (108 places), $0.45 (56 places), $0.30 (30 places).
  • Highest flat fee: $0.70 in Anchorage, AK.
  • 15 places charge drivers no app fee.
  • The data covers 312 places in 43 states and DC; 13 rows have no published fee.

Parking app fees by app company

Per-session fees in places where the fee is published, by the company that runs the app. Sources are listed at the bottom of the page.

Parking app fees by place

Every place in the data, by state. The source column names where each fee comes from and when that page was last updated or checked. A city name links to its Park Graph parking page when there is one.

Parking app fees by place
Place App Fee per session Source
Anchorage , AK ParkMobile $0.70 ParkMobile help center , Jul 2026
Birmingham , AL ParkMobile $0.45 ParkMobile help center , Jul 2025
Dauphin Island , AL ParkMobile $0.35 ParkMobile help center , Nov 2026
Florence , AL ParkMobile $0.40 ParkMobile help center , Jul 2025
Gulf Shores , AL ParkMobile $0.25 ParkMobile help center , Jul 2026
Montgomery , AL ParkMobile $0.35 ParkMobile help center , Aug 2025
Eureka Springs , AR ParkMobile $0.35 ParkMobile help center , Jul 2025
Little Rock , AR ParkMobile $0.35 ParkMobile help center , Sep 2026
Phoenix , AZ ParkMobile $0.35 ParkMobile help center , Jul 2025
Tucson , AZ GoTucson Parking Not published tucsonaz.gov , Nov 2026
Berkeley , CA ParkMobile $0.35 ParkMobile help center , Oct 2026
Burbank , CA ParkMobile $0 ParkMobile help center , Aug 2025
Capitola , CA ParkMobile $0.35 ParkMobile help center , Jul 2026
Carmel-by-the-Sea , CA ParkMobile $0.35 ParkMobile help center , May 2025
Emeryville , CA ParkMobile $0.30 ParkMobile help center , Aug 2025
Fresno , CA ParkMobile $0.39 ParkMobile help center , Aug 2026
Fullerton , CA ParkMobile $0.35 ParkMobile help center , Sep 2025
Long Beach , CA ParkMobile $0.35 ParkMobile help center , Aug 2025
Los Angeles , CA ParkMobile Not published ladot.lacity.gov , Nov 2026
Nevada City , CA ParkMobile $0.75 ParkMobile help center , Aug 2025
Oakland , CA ParkMobile $0.30 ParkMobile help center , Jul 2025
Redondo Beach , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Sacramento , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
San Anselmo , CA ParkMobile $0.30 ParkMobile help center , Aug 2025
San Diego , CA Park Smarter $0.35 sandiego.gov , Nov 2026
San Diego , CA ParkMobile $0.40 ParkMobile help center , Jul 2026
San Francisco , CA ParkMobile $0.35 sfmta.com , Nov 2026
San Leandro , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
San Rafael , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Santa Ana , CA ParkMobile $0.30 ParkMobile help center , Jul 2025
Santa Cruz , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Sausalito , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
South San Francisco , CA ParkMobile $0.20 ParkMobile help center , Jul 2025
Stockton , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Suisun City , CA ParkMobile $0.50 ParkMobile help center , Jul 2025
Union City , CA ParkMobile $0 ParkMobile help center , Jul 2025
Vallejo , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Walnut Creek , CA ParkMobile $0.35 ParkMobile help center , Jul 2025
Boulder , CO ParkMobile $0.35 ParkMobile help center , Oct 2026
Colorado Springs , CO ParkMobile $0.30 ParkMobile help center , May 2025
Denver , CO PayByPhone Not published denvergov.org , Nov 2026
Estes Park , CO ParkMobile $0.35 ParkMobile help center , Aug 2025
Golden , CO ParkMobile $0.35 ParkMobile help center , Aug 2025
Mountain Village , CO ParkMobile $0 ParkMobile help center , Jul 2025
Danbury , CT ParkMobile $0.40 ParkMobile help center , Aug 2025
Greenwich , CT ParkMobile $0.45 ParkMobile help center , Aug 2025
Middletown , CT ParkMobile $0.30 ParkMobile help center , May 2026
New Haven , CT ParkMobile $0.43 ParkMobile help center , Jul 2025
Rowayton , CT ParkMobile $0.35 ParkMobile help center , Jul 2025
Stamford , CT ParkMobile $0.35 ParkMobile help center , Jul 2025
Stratford , CT ParkMobile $0.35 ParkMobile help center , Jun 2026
Washington , DC ParkMobile $0.45 ParkMobile help center , Sep 2026
Bethany Beach , DE ParkMobile $0.50 ParkMobile help center , May 2025
Fenwick Island , DE ParkMobile $0.35 ParkMobile help center , Aug 2025
Lewes , DE ParkMobile $0.50 ParkMobile help center , Aug 2025
Rehoboth Beach , DE ParkMobile $0.50 ParkMobile help center , Jul 2025
Wilmington , DE ParkMobile $0.45 ParkMobile help center , Jun 2026
Belleair Beach , FL ParkMobile $0.35 ParkMobile help center , Sep 2025
Boca Raton , FL ParkMobile $0.30 ParkMobile help center , May 2025
Boynton Beach , FL ParkMobile $0.45 ParkMobile help center , Jan 2026
Charlotte County , FL ParkMobile $0.45 ParkMobile help center , May 2025
Clearwater , FL ParkMobile $0.35 ParkMobile help center , May 2025
Delray Beach , FL ParkMobile $0.45 ParkMobile help center , Aug 2025
Fort Myers , FL ParkMobile $0.45 ParkMobile help center , Aug 2025
Hallandale Beach , FL ParkMobile $0.60 ParkMobile help center , Aug 2025
Hollywood , FL ParkMobile $0.35 ParkMobile help center , Oct 2026
Jacksonville , FL ParkMobile $0.45 jacksonville.gov , Nov 2026
Lake Worth Beach , FL ParkMobile $0.35 ParkMobile help center , Aug 2025
Lakeland , FL ParkMobile $0.45 ParkMobile help center , Oct 2026
Madeira Beach , FL ParkMobile $0.35 ParkMobile help center , Aug 2025
Miami , FL PayByPhone $0 miamiparking.com , Nov 2026
Miami Beach , FL ParkMobile $0.35 ParkMobile help center , Jul 2025
Ocala , FL ParkMobile $0.25 ParkMobile help center , Oct 2026
Orlando , FL ParkMobile $0.45 ParkMobile help center , Jul 2025
Palm Beach , FL ParkMobile $0.40 ParkMobile help center , Jul 2026
Palm Beach County , FL ParkMobile $0.35 ParkMobile help center , Jul 2025
Pensacola , FL ParkMobile $0.25 ParkMobile help center , Jul 2025
Sarasota , FL ParkMobile $0.30 ParkMobile help center , Jul 2025
Stuart , FL ParkMobile $0.35 ParkMobile help center , Jul 2025
Tampa , FL ParkMobile $0.35 ParkMobile help center , Oct 2026
Treasure Island , FL ParkMobile $0.35 ParkMobile help center , Jul 2025
Wakulla County , FL ParkMobile $0.25 ParkMobile help center , Jul 2025
West Palm Beach , FL ParkMobile $0.35 ParkMobile help center , Jul 2025
Atlanta , GA ParkMobile $0.30 ParkMobile help center , Jun 2025
Rome , GA ParkMobile $0 ParkMobile help center , Jul 2025
Roswell , GA ParkMobile $0.35 ParkMobile help center , Jul 2025
Ames , IA ParkMobile $0.45 ParkMobile help center , May 2025
Davenport , IA ParkMobile Not published ParkMobile help center , Oct 2026
Sioux City , IA ParkMobile $0.35 ParkMobile help center , Jun 2026
Boise , ID ParkMobile $0.25 ParkMobile help center , Sep 2025
Aurora , IL ParkMobile $0.55 ParkMobile help center , Oct 2026
Cary , IL ParkMobile $0.37 ParkMobile help center , May 2025
Chicago , IL ParkChicago $0.35 parkchicago.com , Nov 2026
East Hazel Crest , IL ParkMobile $0.45 ParkMobile help center , Aug 2025
Elburn , IL ParkMobile $0.55 ParkMobile help center , Aug 2025
Franklin Park , IL ParkMobile $0.50 ParkMobile help center , Aug 2025
Glencoe , IL ParkMobile $0.25 ParkMobile help center , Jul 2025
Lake Forest , IL ParkMobile $0.37 ParkMobile help center , Aug 2025
Libertyville , IL ParkMobile $0.37 ParkMobile help center , Aug 2025
Midlothian , IL ParkMobile $0.37 ParkMobile help center , Jul 2025
Mokena , IL ParkMobile $0.35 ParkMobile help center , Jul 2025
Mount Prospect , IL Flowbird $0.35 mountprospect.org , Nov 2026
Northbrook , IL ParkMobile $0.37 ParkMobile help center , Jul 2025
Roselle , IL ParkMobile $0.37 ParkMobile help center , Jun 2026
Vernon Township , IL ParkMobile $0.37 ParkMobile help center , Jul 2025
Wood Dale , IL ParkMobile $0.37 ParkMobile help center , Jul 2025
Bloomington , IN ParkMobile $0.50 ParkMobile help center , May 2025
Indianapolis , IN ParkMobile $0.25 ParkMobile help center , Oct 2026
Lawrence , KS ParkMobile $0.35 ParkMobile help center , Aug 2025
New Orleans , LA ParkMobile $0.35 nola.gov , Nov 2026
Shreveport , LA ParkMobile $0.35 ParkMobile help center , Jul 2025
Amherst , MA ParkMobile $0.35 ParkMobile help center , May 2025
Attleboro , MA ParkMobile $0 ParkMobile help center , Sep 2026
Boston , MA ParkBoston $0.15 boston.gov , Nov 2026
Holyoke , MA ParkMobile $0.13 ParkMobile help center , Sep 2025
Lawrence , MA ParkMobile Not published ParkMobile help center , Nov 2026
Medford , MA ParkMobile $0.30 ParkMobile help center , Aug 2025
Northampton , MA ParkMobile $0.20 ParkMobile help center , Oct 2025
Somerville , MA ParkMobile $0.50 ParkMobile help center , Jul 2025
Baltimore , MD ParkMobile $0.35 ParkMobile help center , Sep 2025
Brunswick , MD ParkMobile $0.45 ParkMobile help center , Sep 2025
Charlestown , MD ParkMobile $0.35 ParkMobile help center , May 2025
College Park , MD ParkMobile $0.40 ParkMobile help center , Nov 2025
Cumberland , MD ParkMobile $0.45 ParkMobile help center , May 2025
Emmitsburg , MD ParkMobile $0.45 ParkMobile help center , Jul 2025
Frederick , MD ParkMobile $0.50 ParkMobile help center , Aug 2025
Hyattsville , MD ParkMobile $0.45 ParkMobile help center , Aug 2025
Montgomery County , MD ParkMobile $0.45 ParkMobile help center , Oct 2026
Montgomery County , MD Passport $0.35 montgomerycountymd.gov , Nov 2026
Ocean City , MD ParkMobile $0.50 ParkMobile help center , Sep 2026
Prince George's County , MD ParkMobile $0.45 ParkMobile help center , Jul 2025
Rockville , MD ParkMobile $0.45 ParkMobile help center , Jul 2025
Takoma Park , MD ParkMobile $0.45 ParkMobile help center , Jul 2025
Westminster , MD ParkMobile $0.45 ParkMobile help center , Jul 2025
Worcester County , MD ParkMobile $0.40 ParkMobile help center , Jul 2025
Bar Harbor , ME ParkMobile $0.35 ParkMobile help center , Jun 2026
Boothbay Harbor , ME ParkMobile $0.25 ParkMobile help center , Jan 2026
York , ME ParkMobile $0.50 ParkMobile help center , Aug 2026
Birmingham , MI ParkMobile $0.43 ParkMobile help center , May 2025
Charlevoix , MI ParkMobile $0.35 ParkMobile help center , Sep 2025
Dearborn , MI ParkMobile $0.35 ParkMobile help center , Aug 2025
Grosse Pointe , MI ParkMobile $0.50 ParkMobile help center , Aug 2025
Houghton , MI ParkMobile $0.35 ParkMobile help center , Aug 2025
Milford , MI ParkMobile $0.35 ParkMobile help center , Jul 2025
Mount Clemens , MI ParkMobile $0.35 ParkMobile help center , Jul 2025
Petoskey , MI ParkMobile $0.10 ParkMobile help center , Jul 2025
Rochester , MI ParkMobile $0.43 ParkMobile help center , Jul 2025
Rogers City , MI ParkMobile $0.35 ParkMobile help center , Jul 2025
Royal Oak , MI ParkMobile $0.35 ParkMobile help center , Oct 2026
Sault Ste. Marie , MI ParkMobile $0.35 ParkMobile help center , Jul 2025
South Haven , MI ParkMobile $0.37 ParkMobile help center , Jul 2025
Traverse City , MI ParkMobile $0.35 ParkMobile help center , Jul 2025
Falcon Heights , MN ParkMobile $0 ParkMobile help center , Aug 2025
Rochester , MN ParkMobile $0.25 ParkMobile help center , Jul 2025
St. Cloud , MN ParkMobile $0.25 ParkMobile help center , Oct 2026
Wayzata , MN ParkMobile $0.45 ParkMobile help center , Sep 2025
Clayton , MO ParkMobile $0.65 ParkMobile help center , Aug 2026
Columbia , MO ParkMobile $0.55 ParkMobile help center , Jul 2025
Kansas City , MO ParkMobile $0.45 ParkMobile help center , Aug 2025
Chapel Hill , NC ParkMobile $0.35 ParkMobile help center , Oct 2026
Charlotte , NC ParkMobile Not published charlottenc.gov , Nov 2026
Durham , NC ParkMobile $0.20 ParkMobile help center , Aug 2026
Greensboro , NC ParkMobile $0.35 ParkMobile help center , Aug 2025
Hendersonville , NC ParkMobile $0.35 ParkMobile help center , Jul 2026
New Bern , NC ParkMobile $0.45 ParkMobile help center , Jul 2025
Raleigh , NC Passport Not published raleighnc.gov , Nov 2026
Omaha , NE ParkMobile $0.45 ParkMobile help center , Jul 2025
Keene , NH ParkMobile $0.45 ParkMobile help center , Oct 2026
Littleton , NH ParkMobile $0.45 ParkMobile help center , Aug 2025
Portsmouth , NH ParkMobile $0.35 ParkMobile help center , Jul 2026
Asbury Park , NJ ParkMobile $0.30 ParkMobile help center , May 2025
Atlantic City , NJ ParkMobile $0.35 ParkMobile help center , May 2025
Bloomfield , NJ ParkMobile $0.35 ParkMobile help center , May 2025
Caldwell , NJ ParkMobile $0.45 ParkMobile help center , May 2025
Cape May , NJ ParkMobile $0.35 ParkMobile help center , Sep 2026
Chatham , NJ ParkMobile $0 ParkMobile help center , May 2025
Collingswood , NJ ParkMobile $0.35 ParkMobile help center , Sep 2025
East Brunswick , NJ ParkMobile $0.45 ParkMobile help center , Aug 2025
East Newark , NJ ParkMobile $0.30 ParkMobile help center , Aug 2025
East Orange , NJ ParkMobile $0.45 ParkMobile help center , Aug 2025
Elizabeth , NJ ParkMobile $0.45 ParkMobile help center , Aug 2025
Englewood , NJ ParkMobile $0.35 ParkMobile help center , Jun 2026
Fair Lawn , NJ ParkMobile $0 ParkMobile help center , Aug 2025
Garwood , NJ ParkMobile $0.25 ParkMobile help center , Sep 2025
Glen Rock , NJ ParkMobile $0.35 ParkMobile help center , Aug 2025
Guttenberg , NJ ParkMobile $0.30 ParkMobile help center , Aug 2025
Hillsdale , NJ ParkMobile $0.40 ParkMobile help center , Aug 2025
Ho-Ho-Kus , NJ ParkMobile $0.35 ParkMobile help center , Aug 2025
Hoboken , NJ ParkMobile $0.35 ParkMobile help center , Dec 2025
Irvington Township , NJ ParkMobile $0.25 ParkMobile help center , Aug 2025
Jersey City , NJ ParkMobile $0.35 ParkMobile help center , Sep 2025
Kearny , NJ ParkMobile $0.60 ParkMobile help center , Aug 2025
Lambertville , NJ ParkMobile $0.50 ParkMobile help center , Aug 2025
Manasquan , NJ ParkMobile $0.60 ParkMobile help center , Aug 2025
Maplewood , NJ ParkMobile $0.45 ParkMobile help center , Aug 2025
Metuchen , NJ ParkMobile $0.50 ParkMobile help center , Aug 2025
Montclair , NJ ParkMobile $0.35 ParkMobile help center , Jul 2025
Morristown , NJ ParkMobile $0.40 ParkMobile help center , Jul 2025
Newark , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
North Wildwood , NJ ParkMobile $0.35 ParkMobile help center , Aug 2025
Ocean City , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
Passaic , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
Phillipsburg , NJ ParkMobile $0.30 ParkMobile help center , Dec 2025
Prospect Park , NJ ParkMobile $0 ParkMobile help center , Oct 2025
Ridgewood , NJ ParkMobile $0.40 ParkMobile help center , Jul 2025
Salem , NJ ParkMobile $0.40 ParkMobile help center , Jul 2025
Sea Isle City , NJ ParkMobile $0.30 ParkMobile help center , Jul 2025
Secaucus , NJ ParkMobile $0.35 ParkMobile help center , Oct 2025
Somers Point , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
South Orange , NJ ParkMobile $0.30 ParkMobile help center , Dec 2025
Stone Harbor , NJ ParkMobile $0.30 ParkMobile help center , Sep 2025
Summit , NJ ParkMobile $0.35 ParkMobile help center , Aug 2025
Teaneck , NJ ParkMobile $0.30 ParkMobile help center , Jul 2025
Union City , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
West New York , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
Westwood , NJ ParkMobile $0.35 ParkMobile help center , Jul 2025
Wildwood , NJ ParkMobile $0.35 ParkMobile help center , Oct 2026
Wildwood Crest , NJ ParkMobile $0.45 ParkMobile help center , Jul 2025
Santa Fe , NM ParkMobile $0.20 ParkMobile help center , Aug 2025
Las Vegas , NV ParkMobile $0.35 ParkMobile help center , Aug 2025
Cornwall on Hudson , NY ParkMobile $0.55 ParkMobile help center , Jul 2025
Dobbs Ferry , NY ParkMobile $0.30 ParkMobile help center , Jul 2025
Elmsford , NY ParkMobile $0.30 ParkMobile help center , Jul 2025
Freeport , NY ParkMobile $0.33 ParkMobile help center , Aug 2026
Great Neck Plaza , NY ParkMobile $0.45 ParkMobile help center , Aug 2025
Hastings-on-Hudson , NY ParkMobile $0.55 ParkMobile help center , Jul 2026
Hudson , NY ParkMobile $0.60 ParkMobile help center , Sep 2026
Island Park , NY ParkMobile $0.45 ParkMobile help center , Jul 2026
Ithaca , NY ParkMobile $0.35 ParkMobile help center , Oct 2026
Mamaroneck , NY ParkMobile $0.25 ParkMobile help center , Jul 2025
New York , NY ParkNYC $0.20 portal.311.nyc.gov , Nov 2026
Nyack , NY ParkMobile $0.30 ParkMobile help center , Jul 2026
Orangetown , NY ParkMobile $0.45 ParkMobile help center , Aug 2025
Patchogue , NY ParkMobile $0.35 ParkMobile help center , Jul 2025
Sag Harbor , NY ParkMobile $0.30 ParkMobile help center , Jul 2025
Suffern , NY ParkMobile $0.35 ParkMobile help center , Oct 2026
Tuxedo , NY ParkMobile $0 ParkMobile help center , Jul 2025
Yonkers , NY ParkMobile $0.30 ParkMobile help center , Jul 2025
Athens , OH ParkMobile $0.35 ParkMobile help center , May 2025
Chillicothe , OH ParkMobile $0.39 ParkMobile help center , Sep 2025
Cleveland , OH ParkMobile $0.35 ParkMobile help center , May 2026
Columbus , OH ParkColumbus (ParkMobile) Not published columbus.gov , Nov 2026
Delaware , OH ParkMobile $0.40 ParkMobile help center , Oct 2026
Lakewood , OH ParkMobile $0.35 ParkMobile help center , Aug 2025
Lima , OH ParkMobile $0.30 ParkMobile help center , Sep 2025
Loveland , OH ParkMobile $0.35 ParkMobile help center , Aug 2025
Oxford , OH ParkMobile $0.35 ParkMobile help center , Jul 2025
Toledo , OH ParkMobile $0.35 ParkMobile help center , Jul 2025
Oklahoma City , OK Flowbird Not published embarkok.com , Nov 2026
Tulsa , OK ParkMobile $0 ParkMobile help center , Aug 2026
Eugene , OR ParkMobile $0 ParkMobile help center , Aug 2025
Portland , OR Parking Kitty $0.10 portland.gov , Nov 2026
Allentown , PA ParkMobile $0.45 ParkMobile help center , Sep 2025
Bethlehem , PA ParkMobile $0.45 ParkMobile help center , Sep 2025
California , PA ParkMobile $0.40 ParkMobile help center , Aug 2026
Conshohocken , PA ParkMobile $0.55 ParkMobile help center , Jul 2025
Doylestown Township , PA ParkMobile $0.65 ParkMobile help center , Aug 2025
Huntingdon , PA ParkMobile $0.45 ParkMobile help center , Sep 2026
Lancaster , PA ParkMobile $0.35 ParkMobile help center , Aug 2025
Lebanon , PA ParkMobile $0.40 ParkMobile help center , Aug 2025
Lower Merion Township , PA ParkMobile $0.40 ParkMobile help center , Aug 2025
Marietta , PA ParkMobile $0.25 ParkMobile help center , Jan 2026
New Hope , PA ParkMobile $0.35 ParkMobile help center , Aug 2026
Philadelphia , PA ParkMobile $0.40 ParkMobile help center , Aug 2026
Pittsburgh , PA ParkMobile $0.08 ParkMobile help center , Jul 2025
Pottstown , PA ParkMobile $0.35 ParkMobile help center , Jul 2025
Quakertown , PA ParkMobile $0.45 ParkMobile help center , Jul 2025
Reading , PA ParkMobile $0.45 ParkMobile help center , Jul 2025
York , PA ParkMobile $0.30 ParkMobile help center , Feb 2026
Providence , RI ParkMobile $0.35 ParkMobile help center , Jul 2025
Clemson , SC ParkMobile $0.40 ParkMobile help center , Aug 2025
Clarksville , TN ParkMobile $0.35 clarksvilletn.gov , Nov 2026
Lookout Mountain , TN ParkMobile $0.35 ParkMobile help center , Aug 2025
Nashville , TN Not published Not published nashville.gov , Nov 2026
Abilene , TX ParkMobile $0.35 ParkMobile help center , Oct 2026
Austin , TX Park ATX $0.40 austintexas.gov , Nov 2026
Dallas , TX ParkMobile $0.35 ParkMobile help center , Aug 2025
El Paso , TX Park 915 (ParkMobile) $0.45 ParkMobile help center , Aug 2025
Fort Worth , TX ParkMobile $0.35 ParkMobile help center , Aug 2025
Houston , TX ParkMobile $0.20 ParkMobile help center , Aug 2025
Huntsville , TX ParkMobile $0.30 ParkMobile help center , Aug 2025
McAllen , TX ParkMobile $0.30 ParkMobile help center , Aug 2025
New Braunfels , TX ParkMobile $0.35 ParkMobile help center , Jul 2025
San Antonio , TX SAPark Not published saparkapp.sanantonio.gov , Nov 2026
American Fork , UT ParkMobile $0.45 ParkMobile help center , Sep 2025
Alexandria , VA ParkMobile $0.45 ParkMobile help center , Jul 2025
Arlington , VA ParkMobile $0.38 ParkMobile help center , Oct 2026
Leesburg , VA ParkMobile $0.38 ParkMobile help center , Jul 2025
Manassas , VA ParkMobile $0.30 ParkMobile help center , Aug 2025
Winchester , VA ParkMobile $0.45 ParkMobile help center , Oct 2026
Barre , VT ParkMobile Not published ParkMobile help center , Sep 2025
Burlington , VT ParkMobile $0.30 ParkMobile help center , Oct 2026
Montpelier , VT ParkMobile $0.45 ParkMobile help center , Jul 2025
Winooski , VT ParkMobile $0.30 ParkMobile help center , Aug 2025
Woodstock , VT ParkMobile $0.35 ParkMobile help center , Jul 2025
Bellevue , WA ParkMobile $0.35 ParkMobile help center , Jul 2025
Clark County , WA Flowbird $0.35 clark.wa.gov , Nov 2026
Leavenworth , WA ParkMobile $0.35 ParkMobile help center , Aug 2025
Port Townsend , WA ParkMobile $0.45 ParkMobile help center , Sep 2025
Seattle , WA PayByPhone $0 news.seattle.gov , Nov 2026
Spokane , WA ParkMobile $0 ParkMobile help center , Nov 2025
Vancouver , WA ParkMobile $0.35 ParkMobile help center , Jul 2025
Fontana , WI ParkMobile $0.37 ParkMobile help center , Jul 2025
La Crosse , WI ParkMobile $0.33 ParkMobile help center , Jul 2025
Lake Geneva , WI ParkMobile Not published ParkMobile help center , Jul 2025
Madison , WI Park Smarter $0.45 cityofmadison.com , Nov 2026
Milwaukee , WI MKE Park (ParkMobile) $0.38 ParkMobile help center , Jun 2026
Whitefish Bay , WI ParkMobile $0.35 ParkMobile help center , Aug 2025
Charleston , WV ParkMobile $0.40 ParkMobile help center , Jul 2025
Clarksburg , WV ParkMobile $0.35 ParkMobile help center , Aug 2025
Harpers Ferry , WV ParkMobile $0.35 ParkMobile help center , Jul 2025
Huntington , WV ParkMobile $0.40 ParkMobile help center , Jul 2025
Morgantown , WV ParkMobile $0.25 ParkMobile help center , Jul 2025
Wheeling , WV ParkMobile $0.45 ParkMobile help center , Jul 2025

Not published: no fee figure on the source page.

For parking lot owners

The fee in this report is paid by the driver, on top of your rate. Park Graph charges a per-transaction software fee on the operator side and does not add a separate convenience fee on the driver. Drivers scan the QR code on your sign and pay the rate you set, with no app to download. See Park Graph pricing for the fee on each plan, or compare Park Graph with the apps above:

Methodology

Park Graph collected the per-session fee a driver pays to start a parking session by app in each U.S. place where an app company or the city publishes it: ParkMobile, PayByPhone, Passport, Flowbird, Park Smarter and city-branded apps run by those companies. Sources are the app companies' own help pages and official city pages. Where a company page and a city page disagree, the CSV's fee_notes column says so.

A place with no published fee keeps its row, shown here as Not published. Membership plans the app companies offer, and their prices, are in the CSV's membership columns. Every row was checked on Nov 5, 2026 .

Sources

  1. ParkMobile help center · 289 city and zone articles, each linked in the CSV, as of Nov 2026
  2. Tucson, AZ: tucsonaz.gov · as of Nov 2026
  3. Los Angeles, CA: ladot.lacity.gov · as of Nov 2026
  4. San Diego, CA: sandiego.gov · as of Nov 2026
  5. San Francisco, CA: sfmta.com · as of Nov 2026
  6. Denver, CO: denvergov.org · as of Nov 2026
  7. Jacksonville, FL: jacksonville.gov · as of Nov 2026
  8. Miami, FL: miamiparking.com · as of Nov 2026
  9. Chicago, IL: parkchicago.com · as of Nov 2026
  10. Mount Prospect, IL: mountprospect.org · as of Nov 2026
  11. New Orleans, LA: nola.gov · as of Nov 2026
  12. Boston, MA: boston.gov · as of Nov 2026
  13. Montgomery County, MD: montgomerycountymd.gov · as of Nov 2026
  14. Charlotte, NC: charlottenc.gov · as of Nov 2026
  15. Raleigh, NC: raleighnc.gov · as of Nov 2026
  16. New York, NY: portal.311.nyc.gov · as of Nov 2026
  17. Columbus, OH: columbus.gov · as of Nov 2026
  18. Oklahoma City, OK: embarkok.com · as of Nov 2026
  19. Portland, OR: portland.gov · as of Nov 2026
  20. Clarksville, TN: clarksvilletn.gov · as of Nov 2026
  21. Nashville, TN: nashville.gov · as of Nov 2026
  22. Austin, TX: austintexas.gov · as of Nov 2026
  23. San Antonio, TX: saparkapp.sanantonio.gov · as of Nov 2026
  24. Clark County, WA: clark.wa.gov · as of Nov 2026
  25. Seattle, WA: news.seattle.gov · as of Nov 2026
  26. Madison, WI: cityofmadison.com · as of Nov 2026

Download the data

Cyber-attack on French supermarket freezers has geopolitical context

Guardian
www.theguardian.com
2026-11-09 14:40:45
‘Not particularly complex’ defrosting hack has been attributed to Iran, with presumption it is linked to others across Europe Iranian hackers like to send a message. In 2023 a state-backed group interrupted TV streaming services in the United Arab Emirates to broadcast a deepfake report on the war i...
Original Article

Iranian hackers like to send a message.

In 2023 a state-backed group interrupted TV streaming services in the United Arab Emirates to broadcast a deepfake report on the war in Gaza. In the same year, hackers affiliated with Iran displayed the slogan “down with Israel” on the screens of water-control equipment made by an Israeli firm.

Now France has attributed an attack on supermarket fridges to hackers operating under the Islamic Revolutionary Guard Corps, a key branch of Iran’s military establishment.

There was no message this time, but the disruption made headlines around the world. Some refrigerators had their temperature turned up so high they caught fire. ‌In the hours after the hack, supermarket employees dumped piles of perished meat and melted ice-cream into rubbish containers.

France’s foreign minister described it as an act of “unprecedented scale and unprecedented aggression” and promised “Europe-wide sanctions” would be imposed against those responsible.

A man in a black T-shirt fills red crates which are lined up outside the supermarket.
An employee fills boxes of perished goods outside an Intermarche supermarket in Paris the day after the cyber-attack. Photograph: Lucien Libert/Reuters

It follows attacks on industrial freezers at an Israeli food production plant in May and a wave of freezer malfunctions that spoiled food at US military bases in August that are now reportedly being treated as a suspected hack. Those attacks have not been officially attributed to Iran, but the French announcement is the first to implicate the state in this type of hack.

skip past newsletter promotion

Rafe Pilling, a senior director at Sophos, a cybersecurity firm, said the relatively unsophisticated nature of the attack – hackers used default passwords to access fridge controls – was in line with Iranian capabilities. “The attacks themselves were not particularly complex,” he said.

Pilling said there was now a presumption the French attacks and a wave of rogue defrosting hacks across Europe last week were linked.

Hostile cyber operations against the west tend to come from a vexatious quartet of China, Russia, Iran and North Korea. All have different aims and characteristics: China has focused on industrial espionage and mass data gathering, Russia on disrupting enemy infrastructure and spreading disinformation, and North Korea on hacking crypto exchanges because it needs money. Iran, according to Pilling, wants to put a shot across the bow of its enemies.

Boxes of perished goods outside an Intermarche supermarket in Paris the day after the cyber-attack.
Boxes of perished goods outside an Intermarche supermarket in Paris the day after the cyber-attack. Photograph: Lucien Libert/Reuters

“In general Iran uses cyber-attacks to project power internationally and to signal their political displeasure with regional and international adversaries,” Pilling said.

The fridge hacks came as the UK’s national cybersecurity centre warned the country is in the “foothills” of a new level of cyber threat – and should expect a “huge rise” in the volume of incidents. The main concern is AI, a technology now capable of highlighting previously unforeseen flaws in IT systems and helping attackers plan and carry out attacks.

However, the underlying context of the fridge attacks is not AI but geopolitics. After all, the refrigeration system vulnerabilities were relatively easy to find and exploit. But a combination of groundbreaking technology and tense global relations makes for an alarming landscape.

CUI – Native UI components for C

Hacker News
yappologistic.github.io
2026-11-09 14:35:16
Comments...

Iran was behind cyber-attack on French supermarket freezers, Paris says

Hacker News
www.theguardian.com
2026-11-09 14:33:09
Comments...
Original Article

France has said Iran was responsible for a massive cyber-attack on supermarket freezers and chiller cabinets that was described by its foreign minister as being an act of “unprecedented scale and unprecedented aggression”.

Jean-Noël Barrot said “Europe-wide sanctions” would be imposed against those responsible, adding that the attacks – which took control of digital thermostats to push temperatures up to above 50C – constituted “a major violation of the nation’s interests”.

At a press briefing during the G7 summit in Paris, he said: “Thanks to the remarkable efforts of government agencies, I am able to confirm that the Islamic Republic of Iran’s Revolutionary Guards are responsible for this attack.”

He said the Iranian ambassador had been summoned “to protest in the strongest possible terms against this extremely serious act.”

Swathes of French supermarkets were hit in the cyber-attacks on 11 and 12 October. Some were forced to throw away entire inventories of perishable food.

Similar incidents have been reported since, including on supermarket fridges in other European countries last week and on a French blood bank.

The Paris public prosecutor, Laure Beccuau, said on Monday that specialist investigators and government agencies had identified “a modus operandi” characteristic of the Iranian group Shahid Kaveh, a cyber warfare unit linked to the Islamic Revolutionary Guards Corps (IRGC).

This included “the use of Farsi and IP addresses traced back to devices located in Iran”, she said.

Beccuau said her office had opened a investigation against the head of Shahid Kaveh, his deputies and “others who will be identified” on charges of “fraudulent attacks on an automated data processing system committed as part of an organised crime ring and of causing damage dangerous to persons”.

She said the offences were “aggravated by the fact they were committed to serve a foreign power – in this case Iran”.

Gérôme Billois, a partner at the cybersecurity and technology company Wavestone, said Shahid Kaveh had been active since 2020 and was known to have carried out cyber-attacks mostly on water distribution systems in the US.

“Two countries are known for this kind of attack: Iran and Russia. Given that recent cyber-attacks on supermarkets and the blood bank in France concerned freezers it is reasonable to think Iran is directly linked to both,” he said,

“For the moment they are attacking easy equipment but as a state group that has the means, the determination and the time, we should be prepared to see attacks on other systems like water or electricity.”

During the attack last month, hackers remotely overrode the temperature setting on thousands of freezers , fridges and chiller cabinets in as many as 700 supermarkets and shops across France, pushing them from as low as -27C (-16.6F) to well over 50C (122F) in some cases.

skip past newsletter promotion

Thousands of tons of food had to be dumped and in some stores the extreme temperature rise sparked fires, triggering sprinklers and water damage.

Hackers last week accessed control systems at cold stores stocking blood products. The French blood service (EFS) said temperature and defrosting thresholds and been raised to “very high level” but that technicians had been alerted by alarm systems allowing them to disconnect the cold stores before the products were destroyed. It is not clear whether the two attacks are linked.

The following day retailers in 11 European countries including the UK, Belgium, Estonia, Ireland, Finland, Luxembourg, the Netherlands and Sweden reported problems with refrigeration systems.

A regional branch of France’s Crédit Mutuel bank also reported losing more than €100m in a cyber-attack on Friday. The bank said it had recuperated some of the money.

The European Commission did not immediately comment on the French foreign minister’s statement. Kaja Kallas, the head of foreign affairs for the EU said: “We have the foreign affairs council next Monday, so we will have the opportunity to discuss this. These cyber incidents occurring in Europe, if attributed [to Iran], also call for a strong response on our part.”

In a significant decision this year, the EU designated the IRGC a terrorist organisation , ending years of division over the issue. The designation became possible after France dropped its long-held opposition, having previously feared it would damage diplomatic channels and the interests of French nationals in Iran.

U.S. Supreme Court Deals Final Blow to Corporate Human Rights Accountability

Electronic Frontier Foundation
www.eff.org
2026-11-09 14:29:03
For the past two decades, the U.S. Supreme Court has been slowly weakening the Alien Tort Statute (ATS), a key human rights law that allows foreign nationals to sue persons or entities in civil court for harms resulting from violations of international law. The court’s recent ruling in Cisco Systems...
Original Article

For the past two decades, the U.S. Supreme Court has been slowly weakening the Alien Tort Statute (ATS) , a key human rights law that allows foreign nationals to sue persons or entities in civil court for harms resulting from violations of international law . The court’s recent ruling in Cisco Systems, Inc. v. Doe I dealt the law a final blow, foreclosing—absent new legislation by Congress—any future ability by plaintiffs to use the law to hold technology companies accountable for aiding and abetting human rights abuses. EFF filed multiple amicus briefs in the case , including most recently in the Supreme Court.

The Supreme Court Rejected New Causes of Action Under the ATS

The ATS was passed by the very first Congress in 1789 and in just a few words gives U.S. federal courts jurisdiction to hear civil claims brought by foreign nationals against defendants who violated “the law of nations or a treaty of the United States." There has been a longstanding question about what counts as a valid civil claim under “the law of nations.”

In Sosa v. Alvarez-Machain (2004), the Supreme Court had noted three historical international law claims that the First Congress likely had in mind: violation of safe conducts , infringement of the rights of ambassadors, and piracy, collectively known as the Blackstone Three .

The Sosa court also held that federal courts may recognize other substantive causes of action under the ATS if they reflect international norms that are “specific, universal, and obligatory,” stating that this “door is still ajar subject to vigilant doorkeeping, and thus open to a narrow class of international norms today.”

Thus, the Sosa court recognized that the ATS could be used to bring claims related to historical violations of international law as well as select newer claims reflecting modern concepts of human rights.

In Cisco , the Supreme Court overruled the second Sosa holding. The majority held that the current case, a technology company aiding and abetting torture and other human rights abuses, was beyond the scope of the original three ATS claims and it was not for the court to create new ways of enforcing international law. The court said:

[W]e close the door that Sosa cracked to judicially created ATS liability. We do not disturb Sosa ’s holding that the ATS is a jurisdictional statute; nor do we revisit its assumption that causes of action are available for torts corresponding to the Blackstone three. We conclude only that Sosa was overly optimistic in its prediction that there might be a narrow class of cases in which courts may create ATS actions without infringing on the prerogatives of the political branches. In truth, this class is a null set.

What result for this case? Cisco argues that the Ninth Circuit erred in holding that aiding-and-abetting liability exists under the ATS for the torts alleged by the plaintiffs. Cisco is correct. Courts cannot create new rights of action to remedy violations of international law, so there is necessarily no liability for aiding and abetting such violations. Plaintiffs’ ATS claims against Cisco must be dismissed.

Cisco is Off the Hook for Aiding and Abetting Horrific Human Rights Abuses

The Supreme Court’s ending of the plaintiffs’ case against Cisco is hugely disappointing given that the case has been going on since 2011 and the Ninth Circuit in 2023 allowed the case to move forward in an excellent and well-reasoned opinion. The court held, in part:

We conclude that Plaintiffs’ allegations, accepted as true, are sufficient to state a plausible claim that Cisco provided essential technical assistance to the douzheng [ violent struggle ] of Falun Gong with awareness that the international law violations of torture, arbitrary detention, disappearance, and extrajudicial killing were substantially likely to take place .

The plaintiffs sued Cisco for the company’s role in building and deploying the “Golden Shield,” also referred to as “The Great Firewall of China”—a vast surveillance system that Cisco began building in the late 1990s and that the company customized to enable the Chinese government to target disfavored minorities, including members of the Falun Gong religion.

The thirteen plaintiffs —Falun Gong practitioners—alleged arrest, detention, and torture, including of themselves and family members, at least one of whom died by beating while being detained. The allegations were horrific: the plaintiffs were placed in forced labor camps, beaten with steel rods, shocked with electric batons, and endured sleep deprivation and violent force-feeding.

Importantly, the plaintiffs also alleged that their private emails, text messages, and other information—intercepted by the Golden Shield—were shown to them and used as part of their torture and forced conversion sessions, which included threats to their family members and others who had communicated with them.

And now, Cisco is off the hook for all of this.

Congress Must Act to Hold American Tech Companies Accountable for Aiding and Abetting Human Rights Abuses

As we argued in our amicus brief to the Supreme Court, a robust federal statute is necessary given that voluntary and informal mechanisms of corporate human rights accountability are inadequate.

The plaintiffs filed their lawsuit in 2011. The following year, in 2012, Cisco first published its Global Human Rights Policy. Since then, the company has never provided redress to the plaintiffs, despite its currently operative human rights policy stating:

Where we have identified that we have caused or contributed to an adverse human rights impact , we are committed to providing access to and cooperating in remediation for affected individuals, workers, and communities through legitimate processes.

What’s more, the Associated Press conducted an extensive 2025 investigation , which recently won the Pulitzer Prize , further mapping Cisco’s and other American tech companies’ involvement in creating China’s surveillance state over the past three decades. When questioned by the AP reporters, the companies dismissed any notion of human rights obligations and simply “said they adhere to relevant export controls , laws and regulations where they operate.”

In short, Cisco’s commitment to human rights is a fiction.

Given that the U.S. Supreme Court has effectively read the ATS into non-existence, Congress must now step up. While there might be other avenues for redress including under state law, there must also be a comprehensive federal human rights law allowing any plaintiff to hold American companies—especially technology companies—accountable for aiding and abetting human rights abuses, with knowledge or intent that those abuses would occur, and whether the victims suffered those abuses in the U.S. or in foreign countries.

The implications of this gap in U.S. human rights law are significant. As Prof. Harold Koh considered :

[T]he Justices should ask whether affording such immunity in Cisco would implicitly signal to U.S. companies that they could not be held liable for assisting the U.S. government in committing gross violations. Such violations could include constructing a mass surveillance system that may be used to surveil, persecute, retaliate against, and punish real and perceived opponents and constructing systems that autonomously commit war crimes.

American companies should not have a free pass to build out surveillance states (or other technologically sophisticated systems) that not only violate personal privacy or facilitate censorship, but that can also lead to real-world physical violence and even death.

Impeachment Vote Looms for Hegseth

Intercept
theintercept.com
2026-11-09 14:15:52
“I think there’s a high chance that it will be successful,” a member of Congress told The Intercept. The post Impeachment Vote Looms for Hegseth appeared first on The Intercept....
Original Article

Calls for self-styled War Secretary Pete Hegseth’s ouster have grown louder on Capitol Hill as a possible impeachment vote looms this week. At the same time, Hegseth has shored up support at the White House and among MAGA faithful, according to dismayed Pentagon officials.

Rep. Thomas Massie, R-Ky., introduced articles of impeachment on the House floor Monday afternoon, charging Hegseth with “high crimes and misdemeanors.” Top Democrats have indicated a desire to join Massie’s effort since their midterm election landslide . “I am a hard yes on the Hegseth resolution,” Rep. Hakeem Jeffries of New York, who is poised to be the next House speaker, told ABC’s “This Week” on Sunday. Rep. James Comer, R-Ky., the current House Oversight Committee chair, told Newsmax on Friday it is “very possible” the votes exist to impeach Hegseth.

Rep. Yassamin Ansari, D-Ariz., one of the leading voices for Hegseth’s impeachment, agreed. “I think there’s a high chance that it will be successful,” she told The Intercept of Massie’s effort. In April, Ansari filed six articles of impeachment against Hegseth, including violations of the law of armed conflict and targeting of civilians, abuse of power, and obstructing congressional oversight. She called for a floor vote on his ouster this week.

“Hegseth has demonstrated that he is wholly incompetent. He’s committed what I believe to be war crimes in Iran and the Caribbean and he is ill-equipped for the job,” said Ansari. “My reason for introducing the articles of impeachment back in April had a lot to do with his conduct and the war crimes in Iran, including the bombing of the children’s school. But it’s refreshing to see that since then, more and more Republicans are also recognizing that his leadership has failed and that he’s putting all of us in danger.”

In the wake of a devastating election rout of the GOP that handed Democrats firm control of the House and the Senate, Congress begins a five-week lame-duck session on Monday. With dozens of Republican lawmakers ending their tenure in the House, it’s unclear how many will even show up for votes. Such absences, as well as outright defections in the GOP ranks, make it increasingly likely that Massie’s measure will pass, staffers on Capitol Hill told The Intercept.

On Sunday, GOP Rep. French Hill of Arkansas left open the possibility of backing the measure. “I want to hear the debate on it to see if it merits impeachment versus some other disciplinary action or action by the president,” he said on CBS News’s “Face the Nation.” Outgoing House speaker Mike Johnson, R-La., did not answer when asked by Politico if GOP leaders would whip the Hegseth impeachment vote. House leaders must take up the matter within two legislative days; opponents could table the resolution or refer it to committee instead of voting directly on impeachment.

After narrowly being confirmed by the Senate, which required Vice President JD Vance to break a 50-50 tie, Hegseth’s tenure has been marked by fiascos and failures beginning with Signal-gate , the sharing of secret war plans in a chat group with a journalist. In that case, according to the Pentagon’s own inspector general, “Hegseth violated security protocols and endangered U.S. troops and objectives.” Since then, Hegseth has been under perpetual fire for the unsuccessful Iran war in 2026, specifically a strike on an elementary school in Minab, Iran, that killed more than 150 civilians, most of them children . He faces pressure over his campaign of extrajudicial killings in attacks on so-called drug boats in the waters off Latin America. And questions continue to mount about his purge of top military leaders — many of them women and minorities .

“The fact that many career officials from the department have left citing his leadership, I think, is very telling,” said Ansari. Last week, The Intercept published an exposé quoting six current and former defense officials who currently serve or served under Hegseth and called for his ouster. “He is conducting state terrorism. He is 100 percent a war criminal. He needs to be prosecuted,” said Wes J. Bryant, one of those officials and, until last year, a senior targeting adviser and policy analyst at the Pentagon who was pushed out of his job for blowing the whistle on Hegseth’s efforts to undermine protections for civilians .

As calls for his ouster have grown louder, Hegseth launched a desperate bid to whip up support at the White House, including a nakedly obsequious video seeking Trump’s support that he posted on X . It was accompanied by a coordinated campaign of social media posts by Pentagon underlings tying Hegseth’s fortunes to the president with the text “ STAND. FIGHT. DEFEND THE REPUBLIC .”

Hegseth’s hand was strengthened on Friday when Trump’s chief of staff Susie Wiles stepped down and was replaced by his hard-line domestic policy adviser, raging xenophobe, and illegal boat strike proponent Stephen Miller, according to two Pentagon officials. The embattled war chief was quick to offer “ Huge CONGRATS ” to Miller on X, and posted a photo of himself alongside Trump’s new consigliere. The same coterie of Hegseth devotees at the Pentagon followed with similar posts featuring Miller .

Wiles had reportedly soured on Hegseth, blaming his woeful management of the Iran war for flagging Republican fortunes. A senior Trump administration official also told MS Now that Miller and Hegseth “have been extremely close since the beginning of the administration.”

If the House impeaches Hegseth, removing him from office would require a two-thirds vote in the Senate — a high bar, even when Democrats take control of the chamber in January. Neither of the two Cabinet secretaries impeached by the House — William Belknap, the secretary of war, in 1876; and Alejandro Mayorkas, the secretary of homeland security, in 2024 — were convicted by the Senate.

An Armed Services Committee staffer who spoke with The Intercept was skeptical that Senate Majority Leader John Thune, R-S.D., would bring the measure to a vote. Ansari held out hope. “Thune is very much aligned in terms of his view that Hegseth is not fit for the job,” she said, adding, “I do think that the resounding victories on Tuesday night will impact the way Republicans operate moving forward.”

Sen. Thom Tillis, R-N.C., who is retiring at the end of the year, has said for months that he regrets his vote to confirm Hegseth and rebuked the war chief for his desperate video address aimed at Trump. “[C]abinet secretaries shouldn’t be wasting taxpayer dollars on campaign style videos. Kristi Noem learned that the hard way,” he wrote on X on Friday, also laying into Hegseth for “the incompetence you’ve displayed, the bad advice you’ve given to president, and your shameful and embarrassing episodes from firing our top generals to texting war plans to reporters.” Tillis had also previously said Hegseth “ needs to go .”

Massie suggested his impeachment resolution is the legislative equivalent of a mercy killing, calling it “ a much gentler version ” of what Democrats will do when they take control of Congress in January. Congressional committees have broad investigative powers, and Ansari said that if Hegseth survives this year’s impeachment push, there were “many ways” for Democrats to hold him accountable in the next session, specifically compelling him to testify before the American people. “I would be surprised to see him last the next two years in this administration,” she told The Intercept. “I think that he is not only one of the most incompetent members of the administration, but also the most unpopular — and it’s on a bipartisan basis. So the pressure will continue to grow for there to be some change at the Pentagon.”

Trump expressed mild “confidence” in Hegseth in a “60 Minutes” interview taped on Friday, touting the U.S. victory over Venezuela, but stopped short of praising his Pentagon chief for it. Asked if he credited Hegseth for what he considers a major victory, Trump replied: “No, but he was a part of it.” On Saturday, Trump wrote on Truth Social that calls for impeachment of administration officials amounted to “ extortion at the highest level ” and ordered the Justice Department to investigate those making the push.

Attorney General Todd Blanche, himself a potential target of impeachment, said on Sunday that the Justice Department would represent Hegseth during any impeachment proceedings. He added that he “would be very worried” if he were a Democrat threatening to investigate administration officials. Asked if he considered those threats to be a crime, Blanche said, “It depends on what’s said. So yes, there could be.”

The White House did not respond to questions about Trump’s support for Hegseth.

Update: November 9, 2026, 2:50 p.m. ET
The article has been updated to note that Rep. Thomas Massie, R-Ky., introduced articles of impeachment against War Secretary Pete Hegseth on Monday afternoon.

Claude Fable 5.2 and Mythos 5.2

Hacker News
www.anthropic.com
2026-11-09 13:56:29
Comments...
Original Article

We’ve upgraded Claude Fable and Claude Mythos—models that are designed to tackle the most daunting technical challenges.

Claude Fable 5.2 and Claude Mythos 5.2 show improvements in areas like coding, reasoning, and vision. During prerelease testing they’ve helped our engineers complete otherwise-infeasible software migrations, designed three working electronic devices from scratch, solved two open problems in the physics of black holes, made substantial progress on robotics evaluations, and formalized the proof of Fermat’s Last Theorem in 30 hours—among many other applications we’ll discuss below.

Claude Fable and Claude Mythos are the same underlying model. Fable has strong cybersecurity and biology safeguards to guard against misuse, which allows us to make it available to all users. Organizations pursuing beneficial applications in cybersecurity or biomedical research can apply for access to Mythos through our recently expanded Life Sciences and Cyber Verification Programs.

Testers have found that Fable 5.2 and Mythos 5.2 communicate more clearly than past Fable and Mythos models. They generate outputs up to 30% faster than Claude Fable 5.1 and Claude Mythos 5.1, and they’re available at a lower price: $8 per million input tokens and $40 per million output tokens.

Fable 5.2 and Mythos 5.2 also come with an optional fast mode, which speeds up token generation by up to 2.5 times. Fast mode is available for $16 per million input tokens and $80 per million output tokens.

Safety and alignment. To help ensure safety and alignment keep step with growing model capabilities, we ran extensive prerelease safety testing on the model that underlies Fable 5.2 and Mythos 5.2. This included developing novel evaluations that give deeper insight into specific concerning behaviors like sandbox escapes. We believe high-stakes risks from misalignment remain low, and the model performed as well as, or better than, our recent models on most alignment measures. Fable 5.2’s cyber and biology safeguards are as robust as those of Fable 5.1’s but produce fewer unnecessary blocks, and we have implemented our strongest-ever protections against distillation attacks.

We describe more about our safety testing below, and full details can also be found in the Claude Fable 5.2 and Mythos 5.2 system card .

When to use Claude Fable 5.2 and Mythos 5.2. Fable and Mythos are best for the most ambitious, open-ended technical work. For most coding and knowledge tasks, we recommend that users start with Claude Opus 5.5, our strongest daily driver, and then switch to a different model as required, depending on the scope and complexity of their work—upward to Fable or Mythos, or downward to Claude Sonnet 5.5 or Claude Haiku 5.5. Fable 5.2 can also play the role of Advisor (where Haiku, Sonnet, or Opus models consult it to help solve harder problems) or Orchestrator (where it delegates simpler tasks to smaller models).

Evaluating Claude Fable 5.2 and Mythos 5.2

Benchmark performance. The benchmarks table below shows that Claude Fable 5.2 and Mythos 5.2 are a step above Opus 5.5 in almost all the capabilities we evaluated:

Effort and efficiency. On Medium effort (the default in Claude apps and Claude Code), Fable 5.2 can accomplish challenging tasks with fewer tokens than Fable 5.1. In early testing on the FrontierCode 2.0 evaluation, Fable 5.2 at High effort scored about level with Opus 5.5 at Max effort, for roughly half the cost per task. At Xhigh effort, it also scored the highest of any released model tested.

Coding

Over 90% of the changes merged into Anthropic’s core codebase are now written by Claude (with human guidance). We’ve used Fable 5.2 to fix stubborn bugs in minutes, optimize performance across all of our services, and complete high-value software projects that would otherwise have been too slow or too costly to attempt. A team of agents running an earlier version of Fable 5.2 migrated a critical production service from Python to Rust—the service is now more efficient, more reliable, and starts about 26 times faster. We’ve found that Fable 5.2 exercises strong engineering judgement and can produce high-quality results from even ambiguous requests.

As an experiment, one Anthropic engineer gave Fable 5.2 the task of designing a prototype operating system. Starting from an empty folder, the model coordinated over 1,000 subagents, working around the clock for eight days writing, testing, and reviewing code. It produced a working operating system that boots on a laptop, with its own core that runs the machine, drivers for the disk, keyboard, and network, permanent file storage, windows, a login screen, an installer, and built-in Claude functionality (see the video below).

Early testers have been impressed at how successfully Fable 5.2’s coding skills can be applied to a wide range of tasks:

Cybersecurity

Claude Mythos 5.2 is our most capable model for cybersecurity engineering. It catches more vulnerabilities than our previous models, and is better at reproducing and fixing them (note that Claude Fable 5.2’s safeguards will block most cybersecurity-related tasks). A security company found that one in six confirmed bugs found by Claude Mythos 5.2 were missed by all of the other frontier models they tested. On our internal evaluation, CVE Rediscovery,¹ Claude Mythos 5.2 found 10.2% more vulnerabilities than Claude Opus 5.5 and 14.4% more than Claude Mythos 5.1. Claude Mythos 5.2 also shows better judgement and calibration—one tester found that previous models had overstated the seriousness of about one in twenty findings, whereas Claude Mythos 5.2 hadn’t overstated any.²

Claude Mythos 5.2’s cyber capabilities are accessible through our Cyber Verification Program , which we’re continuing to expand and improve. Claude Enterprise customers (even if they aren’t members of the Cyber Verification Program) can access Claude Security , which scans codebases for vulnerabilities using our most capable models—which now includes Claude Mythos 5.2. A recent update to Claude Security helps it watch repositories as code is updated, track any findings to ensure they’re fixed, learn from additional context, and connect to a user’s tools through an API and MCP.

Science and engineering

Important tasks in science, engineering, and mathematics increasingly depend on coding: analyzing data, modeling molecules, designing parts, and controlling instruments are all done through software. Below, we discuss how Claude Fable 5.2 and Claude Mythos 5.2 have helped researchers make progress on difficult problems in these areas.

Theoretical physics

Claude Fable 5.2 solved two open problems in theoretical physics. Both concern black holes, and the effort to unite the two linchpin theories of modern physics, relativity, and quantum mechanics.

Both of Claude’s results rely on holographic duality, the idea that certain universes containing gravity can be precisely described by a quantum theory containing no gravity at all. In the first problem, physicists in 1983 had shown that as these universes heat up, black holes form abruptly, like water boiling; but their method worked only in large universes that were big enough for relativity to apply. A calculation to determine whether the same was true in very small universes, where only the quantum description can be used, was laid out in 2003 but was too laborious to complete. Fable 5.2, working largely autonomously, completed it and found the transition is abrupt there, too. In the second problem, Fable 5.2 found the exact limit of a technique physicists have used for more than 15 years to rule out candidate theories of quantum gravity in a simplified universe. Read more about these results in their respective preprints, here and here .

Protein folding

Adeno-associated viruses are small, harmless viruses whose protein shell, the capsid , can be used to deliver gene therapies. The protein structure of the capsid is important—for example, it affects whether the therapy will be blocked by a patient’s immune system—but it’s also highly complex. Existing protein-folding models like AlphaFold can predict individual proteins, but a capsid is built from dozens of them. Building on two open-source protein-folding models, Claude Mythos 5.2 found a novel way to accurately predict a whole capsid’s structure. It wrote code that ran these models on overlapping groups of protein chains, and used the information on the known symmetries of the capsid to merge them together.

Claude’s method worked across several capsids, both natural and engineered (in our tests, it accurately modeled 28 of the 34 it attempted)³. Three computational biologists shared the following reflections on how Claude’s skills could be used to speed up their research into gene therapies:

Mathematics

Mathematical formalization. Formalization is the process of translating a mathematical proof into a language that a computer can check step by step. It can help human mathematicians gain confidence in results without having to check them by hand (this matters even more when AI models generate results that are hard for humans to verify). Because formalization is such a laborious process, if AI could assist with it, mathematicians could spend more time exploring novel ideas.

Our first formalization of Fermat’s Last Theorem , performed by an unreleased research version of Claude, took 11 days. It relied on a purpose-built harness along with guidance from a human researcher. By contrast, a team of 1,000 Fable 5.2 agents fully formalized the theorem in just 30 hours, with minimal human intervention. Fable 5.2 started from minimal prompts, built its own ways to coordinate, and used no mathematical references, only a list of intermediate theorem statements to score progress. It needed one-third of the action tokens as our first formalization and produced a proof seven times shorter. As can be seen in the figure below, Opus 5.5 (with the same 1,000-agent setup) completed only 26% of the formalization in 18 hours, and barely made any more progress after 30.

Read more about the formalization here .

Hardware and robotics

Many of AI’s potential benefits—for example in speeding up laboratory research—depend on it being able to act in the physical world. Claude Fable 5.2 continues our models’ trend of increasing usefulness in the real world , showing promising results on tasks such as designing hardware devices and substantial advances in controlling physical robots.

Hardware engineering. We tested Fable 5.2’s skills in hardware engineering, asking it in a one-paragraph prompt to design and produce three working, electronic devices with their own circuit boards, 3D-printed enclosures, and software. The devices, pictured below, were a home voice-assistant hub, a USB speakerphone, and a handheld virtual pet. We collaborated on this project with Diode , a company that designs and manufactures circuit boards.

Claude wrote its own specifications, selected available electronic components from US distributors, routed each device’s four-layer circuit board, modeled the enclosures with computer-aided design, and programmed the devices’ software. Each board was ready for manufacturing in under a day, with minimal human input. Once Diode had built the boards, Claude guided the company’s engineers through the testing and assembly of the devices. All three devices worked without needing any electrical modifications. Read more about Claude’s hardware engineering skills here .

Robotics. Compared with earlier Claude models, Fable 5.2 shows substantially improved skills in controlling physical robots—even for robotics tasks on which it has never explicitly been trained. The video below shows robots controlled by Fable 5.2 completing a variety of tasks including solving a puzzle cube, unscrewing a bottle cap, and drawing a picture of a robot. On the public RoboDojo benchmark, which tests how AIs can control a simulated two-arm robot from camera images, Fable 5.2 outperformed other frontier models that were run on the same harness as well as most AI systems built specifically to control robots.

Research and analysis

Early testers using Claude Fable 5.2 for research and analysis tasks found that it can handle more ambiguous, data-heavy tasks than previous models and has better judgement on ambiguous tasks—particularly those that require abstract reasoning and design. Proprietary trading firm Jump Trading tested Fable 5.2 on proxy evaluations that resemble some of its quantitative research tasks, embedding it in a harness similar to the one the firm uses for its own research. In one run, Fable 5.2 effectively played all the necessary roles: code-writer, coordinator, planner, and job-submitter. Previous models had required substantial investments of time to manually rebalance roles to accommodate different models’ strengths and weaknesses.

Other testers from research and analysis organizations sent us the following statements on their experiences with Fable 5.2:

Safety and alignment

No single test can tell us how a highly capable model will behave once it’s deployed, so we rely on many different tests and many different types of evidence before release. For the model underlying Claude Fable 5.2 and Claude Mythos 5.2, our predeployment safety work included alignment training and testing, newly designed evaluations on the model’s propensity to take unhelpful actions, building stronger safeguards against misuse, and scaling up our behavioral monitoring. The model was also tested before release by external evaluators, including the UK AI Security Institute , Frontier Design , and METR . See the Claude Fable 5.2 and Mythos 5.2 System Card for a summary of their reports⁴ and for a full description of our own safety and capabilities testing.

Alignment testing

We ran a suite of evaluations for how well-aligned Claude Fable 5.2 and Claude Mythos 5.2 are in behavioral terms, testing how often they behave in unintended and potentially unsafe ways. Weighing everything we’ve seen across a range of evaluations, we’ve assessed the risk of these models behaving in unsafe ways in high-stakes situations to be low (as with our other recent models).

We tested Claude Mythos 5.2 (the same underlying model as Fable 5.2 without certain cybersecurity or biology safeguards), on our automated behavioral audit, which tests how a model behaves across approximately 1,900 scenarios. Claude Mythos 5.2 performed as well as, or better than, Opus 5.5, Sonnet 5.5, and Claude Mythos 5.1 on most measures. For example, it scored better than all three on most measures that involve misleading users. Hallucinating inputs, falsely claiming to have completed a task, omitting important information, and failing to disclose bad or lazy work were all lower in Claude Mythos 5.2.⁵

We paid particular attention during our testing to behaviors that contributed to recent notable cybersecurity and alignment incidents. For example, we found that Claude Mythos 5.2 has a lower propensity than Opus 5.5, Sonnet 5.5, and Mythos 5.1 to engage in biased or motivated reasoning (such reasoning might mean it “explains away” evidence that it isn’t in a simulation and thus take actions without a realistic understanding of the consequences).

We ran multiple different evaluations to test the model’s tendency to attempt escaping its sandbox. In two evaluations we’d used previously, Claude Mythos 5.2 made substantially fewer attempts at sandbox escape than any other model we’ve tested. In a dedicated evaluation—an adversarial experiment including over 1,800 scenarios, most of which could not be solved without escaping a sandbox, and where the sandbox has a deliberate weakness—Claude Mythos 5.2 made use of credentials or files that we had placed outside its sandbox in 3.1% of scenarios, about as often as Opus 5.5 (3.3%), less often than Sonnet 5.5 (5.1%), and well below previous iterations of Claude Mythos (5 and 5.1, which scored 39% and 21% respectively). We found that other techniques, such as describing the sandbox and adding tools to report weaknesses, reduced Claude Mythos 5.2’s escape attempts even further. On other measures—one, for example, involving taking harmful actions after erroneously concluding it was in a simulation—Claude Mythos 5.2 scored slightly worse than Opus 5.5, and about level with Claude Mythos 5.1.

The problem of building evaluations that reliably catch every failure before a model is deployed remains unsolved. The complexities of evaluating highly capable models often muddy the picture—for example, Claude Mythos 5.2 and Fable 5.2 each voice suspicion that they are being evaluated more often than any of our recent models, which challenges our ability to assess how they will act in real-world settings. As these settings expand and capabilities increase with future models, we expect this challenge to grow. That is why we do not rely on these evaluations alone to provide a holistic picture of safety: we draw on monitoring during training, reviews of transcripts from internal use, testing by external evaluators, and interpretability techniques for examining what is happening inside the model. We are also working to make our evaluations more realistic and to better understand what they miss.

Safeguards

Cybersecurity and biology safeguards. Consistent with previous Claude Fable models, Fable 5.2 comes with safety classifiers that block high-risk cyber activities including penetration testing, exploit generation, and binary-based vulnerability, as well as most tasks in research biology. Where a query is blocked, users will instead receive a response from Opus 4.8 for cybersecurity and Opus 5 for biology. Since the release of Claude Fable 5.1, we have continued to reduce false positives for our safety classifiers. Based on early testing across claude.ai, Claude Code, and Cowork, we observed about 55% fewer blocks with Fable 5.2 compared with Fable 5.1—about 60% fewer in cybersecurity and 40% fewer in biology. Claude Mythos 5.2 is available to vetted organizations that work in these dual use areas.

AI research and development. The model that underlies Claude Fable 5.2 and Claude Mythos 5.2 is a step forward in general capabilities. However, during the model’s training, we took steps to limit advances in the specific research capabilities that could most directly accelerate AI development. Thus, in relevant areas, including accelerator kernel optimization and improving large language model architectures, Fable 5.2 and Claude Mythos 5.2 perform at about the level of Opus 5.5. Importantly, we ensured that the training changes did not affect related capabilities like agentic coding, hardware development, and traditional AI or machine learning research (including interpretability research). We do not alter these capabilities as the model is being served to users (that is, at inference time). As described in Section 1.5 of the system card and similarly to previous models, Fable 5.2 and Claude Mythos 5.2 also include transparent fallbacks to Opus 5 for a small set of topics in this domain, including kernel development on certain nonstandard accelerators.

Anti-distillation. Distillation, where a model is trained on the outputs of a more advanced one to extract the advanced model’s capabilities, occurs illicitly on an industrial scale, often involving thousands of fake Claude accounts. Since distillation allows for advanced capabilities to be released without the safeguards we’ve built into Claude, it creates safety and national security risks (see our September 2026 threat intelligence report for details on illicit distillation activity we’ve detected and disrupted so far). Fable 5.2 has the strongest protections against distillation of any model we’ve released; it uses the techniques we described in a recent report , which have reduced the data harvested by distillers by 90% to 99%.

We are also expanding the rollout of an API feature that helps guard against illicit distillation: preserved thinking now applies to all accounts. Preserved thinking prevents distillers from editing Claude’s prior context in an attempt to extract its reasoning (developers can refer to our preserved thinking docs to learn how to update integrations with new API features).

Data privacy and Enterprise Frontier Safeguards

Some more complex forms of AI model misuse can be detected only when observing patterns across multiple requests. For this reason, powerful models like Claude Fable 5.2 and Claude Mythos 5.2 rely on safeguards that monitor a window of usage data (as opposed to individual responses). With Enterprise Frontier Safeguards , automated safety monitoring is run on prompts and responses that are stored in a customer’s infrastructure, making it compatible with zero data retention (ZDR). Enterprise Frontier Safeguards is now in private beta with customers like Bridgewater, Salesforce, and Stripe.

Enterprise customers can request access to Enterprise Frontier Safeguards by contacting their account team or by completing this form . Eligible customers can continue using Claude Fable 5.2 and Claude Mythos 5.2 with zero data retention before implementing safety monitoring with EFS. For other customers, we have 30-day retention for safety monitoring.

Availability

Claude Fable 5.2 is available today on all platforms, including Amazon Web Services, Google Cloud, and Microsoft Azure. Developers can get started with claude-fable-5-2 on the Claude Platform.

This week, we’re giving subscribers on eligible paid plans extra Fable usage. Plans and seats that include Fable models get one to three Fable resets based on how long they’ve subscribed, and Fable is included for up to 50% of weekly usage limits for Pro plans and standard seats on the Team plan. Learn more about the Fable 5.2 launch promotion here .

Cybersecurity professionals can apply for access to Claude Mythos 5.2 through the Cyber Verification Program . Claude Enterprise customers can also use Claude Security , powered by our full family of models including Claude Mythos 5.2. Life sciences researchers can also apply for access through the Life Sciences Verification Program .

Fast mode for Claude Fable 5.2 and Claude Mythos 5.2 is available on Claude Code, the Claude Platform, Claude Models on Google Cloud (Anthropic managed and Google managed), and Microsoft Foundry (Anthropic hosted). Note that access to Claude Mythos fast mode is available only to organizations who are part of our Verification Programs.

Show HN: Someone Was Here – Find out who used your Mac while you were away

Hacker News
someonewashere.app
2026-11-09 13:50:56
Comments...
Original Article

A man with tousled hair and a moustache leaning toward a laptop, seen from below by its camera, mid-word.

Your Mac takes a photo of anyone who uses it while you're away, and sends it to your phone.

Free iPhone app included. Instant alerts to your phone are a $4.99 one-time purchase.

Free on the Mac App Store, with a free iPhone app. Instant alerts to your phone are a $4.99 one-time purchase.

When someone sits down, it takes their photo.

Someone uses your Mac after it's been idle, tries the lock screen, or unlocks it. A second later there's a photo of them, with the time, how they got in, and how long they stayed.

A Mac desktop with the Someone Was Here panel open from its name-tag icon in the menu bar: the latest visit's photo of a man, marked Someone else, with a HELLO sticker reading 2:52 pm, and a list of earlier visits.

When it's you, it stays quiet.

It learns your face in a two-minute setup with a few head turns, and checks every photo right on your Mac. You won't get an alert about yourself.

The Someone Was Here panel open from the menu bar on a visit marked You, with a HELLO sticker reading You were here at 9:03 am, and Recognition: Matched your photos.

Then it tells you.

The photo reaches your iPhone within seconds, in the free Someone Was Here app. Nothing changes on screen while they're at your Mac. When it sees you again, your Mac tells you who came by.

The Someone Was Here iPhone app on its Visits screen: the latest photo, of a man at the Mac, marked Someone else with a HELLO sticker reading 4:05 pm, and earlier visits listed below.

It isn't hiding anything.

It sits in your menu bar where you can see it, and it's made for protecting your own Mac. If you share your space, tell people it's there.

The photo arrives in the free Someone Was Here app for iPhone , through your own iCloud. It also works with Pushover , ntfy , Telegram or a webhook .

Find out who it was.

Someone Was Here is free on the Mac App Store. Add the free iPhone app and the photo reaches your phone within seconds.

Then get the free iPhone app on the same page. See the privacy policy .

E-means: 10x faster k-means at equal loss

Hacker News
e-means.github.io
2026-11-09 13:45:43
Comments...
Original Article

An order of magnitude less epochs

Across a large range of scales and datasets , e-means reaches a test loss below Lloyd's at 25 epochs, in 1.2 to 3 epochs. Measured end to end, that is a 10–45× wall-clock reduction on GPU against the state-of-the-art Lloyd implementation (Flash-KMeans [2] ), and 8–15× on CPU against Faiss [1] . Speed and quality usually trade against each other in k-means, while e-means achieves both better speed and loss.

e-means against Lloyd’s k-means, in epochs, CPU time and GPU time

The k-means problem

Given a fixed dataset of n points X = {x 1 , ..., x n } ⊂ R d and an integer k , the k-means problem is to find k centroids C = (c 1 , ..., c k ) minimizing the mean squared distance between each point and its nearest centroid:

\[ \mathrm{MSE}(X, C) = \frac{1}{n} \sum_{i=1}^{n} \|x_i - c_{a(i)}\|^2, \qquad a(i) = \arg\min_{j \in \{1,\dots,k\}} \|x_i - c_j\|^2 \]

\[ \mathrm{MSE}(X, C) = \frac{1}{n} \sum_{i=1}^{n} \|x_i - c_{a(i)}\|^2 \]

\[ a(i) = \arg\min_{j \in \{1,\dots,k\}} \|x_i - c_j\|^2 \]

It's a static dataset, unlike codebook learning inside VQ-VAEs, where the distribution to cluster is constantly moving.

The e-means project

The goal of e-means is to provide a modern optimization rule for the k-means problem. We started this project from the following observations:

  • k-means is one of the rare problems in machine learning where full-batch optimization is still widely used.
  • Mini-batch k-means methods in the literature exist [3] , [4] , [5] , but are mostly based on the MacQueen update rule, released in 1967.
  • Modern deep learning offers optimization tools that can enhance mini-batch methods.

For e-means, we chose to do mini-batch updates with exponential moving averages [6] , which we found to be most efficient for the k-means problem. Contrary to previous mini-batch approaches, e-means requires no hyperparameter tuning because it automatically sets the batch size and step size with scaling laws (see Automatic hyperparameter tuning with scaling laws ). In addition, e-means improves the initialization and the dead-cluster revival strategy, adds a cosine-scheduled decay rate, and introduces a finalization stage that reduces the training loss for a negligible runtime penalty at the end of training. e-means is highly parallelizable, and comes with specialized kernels that translate its algorithmic advantage into wall-clock speedups.

Moving-average updates

Each mini-batch updates every cluster's count and sum. The centroid is their ratio.

old centroid new centroid batch mean

No hyperparameter tuning

Everything is derived from scaling laws.

log n, log k, log T

Start and finish

Novel initialization and finalization methods. The run ends on each cluster's exact last-epoch mean.

start exact mean

Cosine scheduling

The step α anneals from α 0 to 0.1 α 0 , as a learning rate does.

α₀ 0.1 α₀

Dead-cluster revival

Clusters with size below a threshold are revived by splitting a large cluster.

below threshold large cluster split in two

Specialized kernels

GPU kernels fuse the nearest-centroid assignment, turning the epoch savings above into matching wall-clock speedups.

naive PyTorch fused kernel

The centroid update rules

The centroid update rule is the central component of e-means. This section aims to provide an overview of update rules for k-means clustering. All methods maintain, for each cluster j , a sum S j and a count N j of the points assigned to it, and take the centroid as their ratio:

\[ c_j = S_j / N_j \]

They differ only in how S j and N j are updated. Below, s j and n j denote the sum and the count of the points in the current batch that are assigned to cluster j (both zero if none are).

Lloyd’s algorithm [7] assigns every point to its nearest centroid and recomputes the statistics from scratch, using the full dataset as the batch:

\[ S_j \leftarrow s_j, \qquad\quad N_j \leftarrow n_j \]

so c j is the exact mean of the points currently assigned to it. Each update costs one full pass over the data, and the procedure is repeated a fixed number of times (typically 20 to 50 iterations).

MacQueen’s update [3] accumulates the statistics without ever discarding them:

\[ S_j \leftarrow S_j + s_j, \qquad\quad N_j \leftarrow N_j + n_j \]

so c j is the uniform mean of every point assigned to cluster j since the start of training, including points assigned under earlier, possibly poor, centroid positions. This was later partially addressed by Staleness-Reduction Mini-Batch K-Means [8] , a hybrid method between k-means and MacQueen. They obtained important speedups, but only on very low numbers of clusters.

e-means works on mini-batches and replaces this sum with an exponential moving average:

\[ S_j \leftarrow (1-\alpha)\,S_j + \alpha\, s_j, \qquad\quad N_j \leftarrow (1-\alpha)\,N_j + \alpha\, n_j \]

\[ S_j \leftarrow (1-\alpha)\,S_j + \alpha\, s_j \]

\[ N_j \leftarrow (1-\alpha)\,N_j + \alpha\, n_j \]

so older assignments are forgotten at rate α , and the centroid tracks recent assignments rather than the whole history. This update rule is typically used for moving distributions, hence their adoption for training VQ-VAEs [6] . What we found is that it’s also extremely efficient for static datasets if it’s combined with e-means’ other components, and hyperparameters are properly tuned.

Why exponential moving average updates and not gradient descent?

The e-means project started from previous work at Meta FAIR by Hugo Touvron and Hervé Jégou, who had found that mini-batch k-means by gradient descent could beat Lloyd’s algorithm. While I could reproduce these results, I found that the performance of gradient-descent based centroid updates is unstable at large learning rates, unlike exponential moving average updates. I suspect that is because EMA updates guarantee that the centroid is always in the convex hull of points assigned to it, while gradient descent updates may overshoot past that hull.

Test error against the effective step for exponential moving averages and plain gradient descent, at a large batch
Test error against the effective step a centroid takes, at a large batch, for exponential-moving-average updates (EMA) and plain gradient descent (SGD), each at every step setting tried. DEEP, 1 million vectors, and SIFT, 10 million vectors, 16,384 clusters, 5 epochs, median over 3 seeds. The vertical axis is percent above the best test error in the panel. At its best setting, gradient descent ends 1.6% (DEEP) and 0.4% (SIFT) above the moving average.

In order to achieve the lowest loss at a fixed number of epochs, we chose exponential moving average updates, hence the name e-means for our method.

Lloyd is a special case of e-means: hyperparameter study

If you set the batch to the full dataset, B = n , and α = 1, then N j and S j become exactly the count and sum of the whole cluster, so one e-means iteration becomes exactly one Lloyd iteration. Lloyd is an extreme case of e-means without cosine scheduling on the learning rate. However, our hyperparameter search found that this extreme setting is highly suboptimal, which explains why e-means largely outperforms Lloyd. Below, the loss is measured for every batch size B and step α : Lloyd lands in a corner, well outside the region where the loss is lowest.

Validation loss for every batch size and constant step at 5 epochs; the lowest losses lie on a diagonal band, and Lloyd, at full batch and step 1, sits in the top-right corner 1.8% above the best
Validation loss for every batch B and step α , relative to the best cell, after 5 epochs. DEEP, n = 10 6 , k = 1024. The step is constant here (no cosine schedule) so that Lloyd is exactly one of the cells: full batch, α = 1. The lowest losses follow a diagonal band, a larger batch calls for a larger step.

This hyperparameter study motivated us to derive scaling laws that automatically pick the optimal batch size B and step size α .

e-means better escapes local minima

To better understand why e-means reaches better losses than Lloyd at convergence, we plotted a few trainings on toy datasets to evaluate their ability to escape local minima. Repeating trainings over 200 seeds, we found that e-means is much less likely to fall in pathological configurations compared to Lloyd.

Two blobs of very different sizes, k = 8. Lloyd puts two centroids on the small blob and leaves the large one short. e-means starts in the same trap and leaves it within its first epochs, ending with seven centroids on the large blob and one on the small. Over 200 starts Lloyd stays stuck on 26% of starts, while e-means stays stuck on 3.5% of times.
Nine blobs in a 3×3 grid with heavier corners, k = 10. Lloyd leaves the centre blob without a centroid and crowds three into a corner. e-means falls into the same arrangement, then climbs out around epoch 10. Over 200 starts Lloyd stays stuck more than 1% worse on 43% of starts, while e-means is more than 1% worse on 4%.
Four blobs on a square around a heavier centre blob, k = 5. Lloyd puts two centroids on one corner blob and strands one in the gap between two others, which then share it. e-means, from the same start, gives every blob one. Over 200 starts Lloyd stays stuck on 15.5% of starts, while e-means stays stuck on 0%.
Five blobs on a line, k = 5. Lloyd leaves a light middle blob without a centroid and gives an end blob two. e-means, from the same start, gives every blob one. Over 200 starts Lloyd stays stuck on 46% of starts, while e-means stays stuck on 0%.

Our explanation for that is that mini-batches provide more noisy updates that are more likely to explore the optimization landscape and escape local minima. Lloyd, with its always decreasing loss, is more likely to exploit found local minima and never escape them.

Automatic hyperparameter tuning with scaling laws

An essential property of e-means is that practitioners don't need to set any additional hyperparameter compared to Lloyd's algorithm. We fitted two scaling laws to set the batch size B and step size α 0 from any problem's characteristics (n, k, T) , and found them to exhibit strong generalization on unseen datasets and problem scales.

\[ B = c_B \, k^{b_k} \, n^{b_n} \, T^{b_T} \]

\[ \alpha_0 = \min\!\Big(c_\alpha \, k^{a_k} \, B^{a_B} \, n^{a_n} \, T^{a_T},\; 1\Big) \]

Regret = (MSE with the law − best MSE over the grid) / best MSE, median over configurations. Held-out datasets: SIFT, SPACEV, and the VIBE [9] datasets arXiv and AG-News. Held-out size: one value of n left out of the fit and predicted.

We propose two equations to choose the batch, the default law and the quality law. The “quality law” trades off throughput for better clustering quality against the “default” law. Below we plot the training data for our scaling laws: validation MSE against step size α 0 (left) and batch size B (right).

The two scaling laws fit on deep1b

The importance of dead-cluster revival

Toy example showing the importance of dead-cluster revival.

The main issue with mini-batch k-means is that it is prone to “dead” clusters, centroids that end up with zero assigned points during optimization. This reduces the effective size of the codebook, which is especially problematic for the large codebooks increasingly used today.

A common mitigation is to reinitialize clusters that fall below a certain size threshold, as done in EnCodec [10] , where dead centroids are simply replaced by random samples drawn from the incoming batch. While this helps, it does not fully resolve the issue. Instead of sampling arbitrary points from the batch, we revive dead clusters by splitting large, existing ones: we sample an active cluster with probability proportional to its size and split it into two. We found this approach, adapted from Faiss k-means, to be significantly more effective at eliminating dead clusters and preserving codebook capacity.

1 million vectors, k = 16,384, 5 epochs, mean over 5 seeds; only the revival policy varies. A cluster counts as dead when fewer than ten vectors are assigned to it at the end, a thousandth of an average cluster. Imbalance: how uneven the cluster sizes are (1 = all equal). From the paper ’s revival ablation table.

Extensive experimental validation

We validated e-means on 24 different embedding and synthetic datasets and configurations (see paper ). For the video we ran 234 configurations of e-means against k-means (16 datasets, 100k to 100M points): explore every curve in the results map .

Convergence curves vs Lloyd at 25 iterations
Train (top) and test (bottom) MSE, divided by Lloyd’s after 25 epochs. Initialized from random vectors.
Test error against wall-clock time on GPU, 10 million vectors, k=65,536
Test MSE against wall-clock time on one H100, 10 million vectors, 65,536 clusters. 25 epochs of a plain PyTorch Lloyd (data on the GPU, bf16) take 142 to 155 seconds, against 14 to 22 seconds for Flash-KMeans [2] . Labels on the curves mark the number of epochs.
Epochs e-means needs to reach Lloyd's 25-epoch test error on the 11 VIBE embedding datasets: 1.6 to 2.4
Epochs e-means needs to reach the test error Lloyd reaches in 25 epochs, on the 11 datasets of the VIBE embedding benchmark (text, code, image and multimodal embeddings, d = 200 to 3,072, k = 8,192 or 16,384). Budgets spaced 0.2 epochs apart, median over five seeds. Every dataset needs between 1.6 and 2.4 epochs, against Lloyd’s 25.

Library and code

from faiss.contrib.e_means import Emeans # NumpyEmeans for NumPy em = Emeans(d, k, nepochs=T) # T epochs (5 by default) centroids, labels = em.train(x) # x: a PyTorch tensor (n, d) # labels: each vector's cluster in the last epoch

Repo: faiss/contrib/e_means .

References

  1. M. Douze, A. Guzhva, C. Deng, J. Johnson, G. Szilvasy, P.-E. Mazaré, M. Lomeli, L. Hosseini, H. Jégou. "The Faiss library." arXiv:2401.08281 , 2024. ↑
  2. S. Yang, H. Xi, Y. Zhao, M. Li, X. Fan, J. Zhang, H. Cai, Y. Lin, X. Li, K. Keutzer, S. Han, C. Xu, I. Stoica. "Flash-KMeans: Fast and Memory-Efficient Exact K-Means." arXiv:2603.09229 , 2026. ↑
  3. J. MacQueen. "Some Methods for Classification and Analysis of Multivariate Observations." Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability , 1:281–297, 1967. ↑
  4. D. Sculley. "Web-Scale K-Means Clustering." WWW , 2010. ↑
  5. J. Newling, F. Fleuret. "Nested Mini-Batch K-Means." NeurIPS , 2016. ↑
  6. A. van den Oord, O. Vinyals, K. Kavukcuoglu. "Neural Discrete Representation Learning." NeurIPS , 2017. ↑
  7. S. Lloyd. "Least squares quantization in PCM." IEEE Transactions on Information Theory , 28(2):129–137, 1982 (circulated as a Bell Labs technical note since 1957). ↑
  8. X. Zhu, J. Sun, Z. He, J. Jiang, Z. Wang. "Staleness-Reduction Mini-Batch K-Means." IEEE Transactions on Neural Networks and Learning Systems , 35(10):14424–14436, 2024. ↑
  9. E. Jääsaari, V. Hyvönen, M. Ceccarello, T. Roos, M. Aumüller. "VIBE: Vector Index Benchmark for Embeddings." arXiv:2505.17810 , 2025. ↑
  10. A. Défossez, J. Copet, G. Synnaeve, Y. Adi. "High Fidelity Neural Audio Compression." Transactions on Machine Learning Research , 2023. arXiv:2210.13438. ↑