CiviCRM 6.19 Release

CiviCRM
civicrm.org
2026-10-09 01:25:43
Thanks to the hard work of CiviCRM’s incredible community of contributors, CiviCRM version 6.19.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.19.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; Andrew Thompson; Artful Robot - Rich Lott; Australian Greens - Andrew Cormick-Dockery, John Twyman; Business & Code - Alain Benbassat; civico GmbH - Johannes Filter; CiviCRM - Coleman Watts, Tim Otten, Benjamin W; CiviDesk - Yashodha Chaku; civiservice.de - Tobias Voigt; CompuCo - Muhammad Shahrukh; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; CSES (Chelmsford Science and Engineering Society) - Adam Wood; Dave D; Jakub Fidler; GESTAD - Guillaume Sorel; iXiam - Vangelis Pantazis; JMA Consulting - Monish Deb, Seamus Lee; Joinery - Allen Shaw; iTech4Web - Dima; Marvin Müller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; New York State Senate - Nate Frank; Nicol Wistreich; Professional Exchange Service Corporation - Jose Torres; OPEN - dewy; Richard Baugh; Rant - Dmitry Rantovov; Richard van Oosterhout; Semper IT - Karin Gerritsen; Sinjinsmiley; Squiffle Consulting - Aidan Saunders; Stiftung Pfadfinden - Andreas Lietz; SYSTOPIA - Dominic Tubach; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton, Lars Sander-Green

New Extensions

  • Gmail Connect - Gmail integration for CiviCRM.
  • CiviCRM Connect - CiviCRM Connect add-on for Gmail.
  • Notification - Notification framework for CiviCRM.
  • Managed Entities UI - Provides a UI for reviewing the current state of Managed Entities.
  • Deepl - Integrates the Deepl translation service into CiviCRM.
  • Portal Invoice Download - Secure download of saved contribution invoices for contacts and their authorised delegates.
  • SumUp - Revisionist adds automatic version history to CiviCRM's FormBuilder and SearchKit. Every time a form or search is saved, a snapshot is recorded automatically - so you can browse previous versions, see exactly what changed.
  • Typesense Instant Search - Instant federated full-text search across CiviCRM entities backed by Typesense.
  • Wallet - Generate QR, Apple Wallet and Google Wallet pass for CiviCRM.
  • CiviSCAN - CiviScan embeds the React application inside CiviCRM at `civicrm/civiscan`. It provides a mobile event check-in UI without asking an already connected back-office user for another credential.
  • Afform Order - Afform Order adds an editable, in-form line-item cart to Afform forms, so staff can build a new order or edit an existing contribution's line items directly from a form — while keeping Afform's existing checkout/payment flow intact.
  • CiviCRM MCP Server - Serves the Model Context Protocol (MCP) from inside CiviCRM, so AI clients such as Claude can answer questions from CiviCRM data as the signed-in user.
  • Civi-Inputmask - CiviCRM extension for configurable input masks, phone-number formatting and real-time casing rules on QuickForm and Afform forms.
  • Input Masks - Provides automatic formatting for phone and postcode fields.
  • Contract - The Contract Extension optimizes processes and communication related to the management of memberships, subscriptions, and other models involving recurring payment obligations.
  • Event manage locations - This is a CiviCRM extension that changes how the Location tab of the CiviCRM Event Info form works, so that Locations (LocBlock/address/email/phone records) can be safely shared between Events.
  • Swiss QR Invoice for CiviCRM - A CiviCRM extension for generating PDF invoices with a Swiss QR-bill (Swiss Payment Standard) slip, linked to CiviCRM contacts and contributions.
  • SMTP Router - A CiviCRM extension that routes each outbound email to the correct SMTP server based on the From: address.
  • Practice Booking - Appointment booking for practices with several practitioners sharing one or more rooms. Public WordPress form, room and practitioner availability, CalDAV sync.
  • Twikey Integration - Integrates CiviSepa with Twikey. Sends all transaction groups to Twikey. Twikey will collect the money.
  • ICS Meeting Invite - Converts EventICS .ics attachments into proper METHOD:REQUEST calendar invites so Outlook shows Accept/Tentative/Decline buttons on event confirmation emails.
  • Log Reader - Search CiviCRM's debug log, stack traces included, however large the file.

PSA: Europe changes time forward soon, North America next, for the last time?

Anarcat
anarc.at
2026-10-08 15:30:02
This is a copy of an email I sent at work. I'm not sure I should be making noise about this here, feedback welcome. This is your bi-yearly reminder that time is changing soon! October 25th in Europe, November 1st in North America. Less people in Canada are changing this year, with BC, Alberta, Mani...
Original Article

This is a copy of an email I sent at work . I'm not sure I should be making noise about this here, feedback welcome.

This is your bi-yearly reminder that time is changing soon! October 25th in Europe, November 1st in North America. Less people in Canada are changing this year, with BC, Alberta, Manitoba and Northwest Territories getting rid of DST.

What's happening?

Some places in the world implement what is called Daylight saving time or DST:

https://en.wikipedia.org/wiki/Daylight_saving_time

Normally, you shouldn't have to do anything: computers automatically change time following local rules, assuming they are correctly configured, provided recent updates have been applied in the case of a recent change in said rules (because yes, this happens, and happened this year, and yes, you need to upgrade your software!).

Of course, appliances like your microwave oven will likely not change time and will need to adjusted unless they are so-called "smart", in which case they are part of the skynet botnet and should be destroyed.

If your clock is flashing "0:00" or "12:00", you have no action to take to adapt to this change, lucky you.

If you haven't changed time in six months, congratulations, your clock will be accurate again!

In any case, you should still consider DST because it might affect some of your meeting schedules, particularly if you set up a new meeting schedule in the last 6 months and forgot to consider this change.

If your location does not have DST

Properly scheduled meetings affecting multiple time zones are set in UTC time, which does not change. So if your location does not observer time changes, your (local!) meeting time will not change.

But be aware that some other folks attending your meeting might have the DST bug and their meeting times will change.

Be kind to those poor souls which might be missing meetings by a full hour because time flies backwards for them.

If you do observe DST

If you are affected by daylight savings, your local meeting times will change for UTC meetings. Normally, your meeting times are scheduled to take this into account and the new hours should be reasonable.

But now is a good time to verify that. Take a look at your schedule for the next couple of weeks and reschedule meetings before the daylight saving come up to avoid too much disruption. You have only a couple of weeks to do so right now.

When do times change, how, and and where?

As regular readers will remember, the rule of thumb is:

Spring forward, fall backwards.

That is, during the season of Spring, the clocks move forward, and during the Fall (like right now), they move backwards. That is in the northern hemisphere, but then the southern hemisphere is often saner and doesn't switch anyways.

So time will move backwards which means an extra hour of sleep. Unless you have children or bad sleep, in which case your body doesn't care about what the clock says and will wake up one hour earlier than what it should.

And of course, this doesn't happen everywhere at once, so let's see when it happens where.

The dance starts in Europe.

The change happens on the last Sunday in October at 01:00 UTC (not local time!), that is October 25th. If you are in the central European timezone, also known as Amsterdam, Berlin, or Paris time depending on your national affiliation, that essentially means that at 2:59 local the clocks will fall back to 2:00 instead of going to 3:00.

Concretely, set your watch back one hour before going to bed, go to bed at the normal time, and enjoy an extra hour of sleep or leisure.

If you have kids, you might want to start getting them to bed slightly earlier every day for a week before the change so they take time getting used to the change. If you have trouble sleeping in the morning, find your inner child and do that to yourself as well.

USA / Canada

Then it's the US[1] and Canada[2] joining the dance, on the First Sunday in November at 02:00 local (not UTC!), that is, I believe, November 1st 2025.

This means that, at 1:59, the clocks will flip to 1:00, instead of 2:00.

Concretely, do like the Europeans and tweak your clock before going to bed.

That is a little less than four weeks from now.

[1] except Arizona (except the Navajo nation), US territories, and Hawaii

[2] except Yukon, Saskatchewan, (newly) British Columbia, (newly) Alberta, (newly) Northwest Territories, (newly) Manitoba, one island in Nunavut (Southampton Island), one town in Ontario (Atikokan) and small parts of Quebec (Le Golfe-du-Saint-Laurent)

Other places with DST

This time again, I must apologize to the people of Cuba, Lebanon, Israel, Palestine, Egypt, Chile, Australia, and New Zealand, as you fine folks all have your own DST rules that are omitted here for brevity. I rely on this page from Wikipedia to be updated by time nerds accurately for this message, and it should provide you with a rough idea of what's coming:

https://en.wikipedia.org/wiki/Daylight_saving_time_by_country

In general, changes also happen in October, but either on different times or different days, except in the south hemisphere, where they might happen in September (oops, sorry NZ folks, I'm late!).

Places without DST

Everyone else, enjoy, you're on the right side of history, and we thank you for the good example you give us.

Changes since last time

There's been lots of changes since last time:

  • British Columbia moved to permanent -07 on 2026-03-09, that is it will not change to normal time in November

  • Alberta moved to permanent -06 on 2026-06-18, similar to BC above.

  • Canada’s Northwest Territories moved to permanent -06 on 2026-08-21, matching Alberta.

  • Manitoba moves to permanent -05 on 2026-10-31.

  • Morocco moves to permanent +00 on 2026-09-20.

  • Moldova has used EU transition times since 2022, but the tz database only noticed in 2026

This is my interpretation of the changes announced on the tzdata mailing list here:

https://lists.iana.org/hyperkitty/list/tz-announce@iana.org/latest

If the eastward trend continues, Canada should adopt country-wide "no daylight savings" rules by 2027, although there's actually no sign of the other provinces (Ontario, Québec and so on) currently running bills to change those rules just yet. Poor Canadians like me confused about time in their countries can refer to this section of Wikipedia for details:

https://en.wikipedia.org/wiki/Daylight_saving_time_in_Canada#By_province_and_territory

... and particularly the image featured there:

https://commons.wikimedia.org/wiki/File:Canada_time_zone_map - en.svg

It also seems like the US government might finally adopt a permanent daylight saving change bill in 2026, as the "Sunshine protection act" pass the house in July:

https://en.wikipedia.org/wiki/Sunshine_Protection_Act

True to form, this was associated with absolutely ridiculous pressure from Donald Trump against republicans (his own party!) objecting to the change:

On July 14, 2026, the House passed a Sunshine Protection Act bill backed by President Trump. Nevertheless, the bill was opposed in the Senate by Republicans, including Senator Cotton. In response, on October 3, 2026, Trump shared a post on Truth Social urging Cotton to approve the bill, where he revealed Cotton's personal cellphone number and called on people to call him.

https://www.theguardian.com/us-news/2026/oct/03/trump-tom-cotton-daylight-saving-time

Given that the last time the US did a major change to the daylight savings policy (in 2005), Canada followed suit to stay in sync, it's quite possible Trump's mad dash might actually finish getting rid of DST in North America:

https://en.wikipedia.org/wiki/Energy_Policy_Act_of_2005#Change_to_daylight_saving_time

Created . Edited .

Refueling an EV be like

blogccasion
blog.tomayac.com
2026-10-08 14:42:32
This is a post for people who never drove an electric vehicle (EV) before. Imagine for a moment that for refueling your car you had to open an app to search for gas stations and filter them by whether they have Diesel, and then whether the pump delivers a decent stream of Diesel, or just by the drop...
Original Article

This is a post for people who never drove an electric vehicle (EV) before.

Imagine for a moment that for refueling your car you had to open an app to search for gas stations and filter them by whether they have Diesel, and then whether the pump delivers a decent stream of Diesel, or just by the drop. Next, when you found one, imagine you had to go to the pump's reviews in the app to estimate the odds that judging from the most recent comments there actually is Diesel.

When you arrive at the designated point, imagine that the gas pump is somewhere randomly hidden in a sparely lit industrial area parking lot. To start fueling, imagine you needed that random gas station brand's own RFID card that of course you don't have, or an app. Fine, imagine you scanned the QR code on the pump to download the app, only to find that the app isn't available in the country your phone's app store is registered in. Dead end. Cool, cool, there's another gas station within 15km, just still within the remaining range.

When you arrive at the other gas station, luckily their app is downloadable because they published their app globally. 75MB on a crappy 3G network. You finally have the app. Now you need to create an account. Email, phone number, national ID, address; whatever, fine. At this point, you'd sell a kidney for the right to fuel your car. Finally the SMS account confirmation arrives. Notification permission? Sure. Location access? Fine. Get access to your photos? Right. Wait, what? Ah, they need you to scan a QR code on the pump to start fueling, so that must be why they're asking. Likely…?

Oh, in order to proceed, verify your email. Alright, verified and logged in. But on their website in the app. Weird, you thought you needed to download an app because only the app can get you fuel, and now apparently the website can? Hmm, now there's a link to log in to the app, on the website. Email. Password? Ah, it's in the browser's password manager. Wait, twice actually , once with your national ID as the user name and once with your email. Likely you signed up in the past on a long gone phone.

Well… The new credentials luckily work. Pasted from the browser's password manager into the app because of course they built it with whatever framework the Android password manager doesn't support. Finally logged in. Choose how much Diesel you want and from what pump. To do so, scan the QR code on the pump or enter the pump ID manually. Luckily the ID is still readable while the QR code is covered by random local soccer club ultras fan stickers someone placed there. You're that close to fueling.

Pre-authorize the fuel purchase by accepting the charge in your bank's app. Pre-payment accepted, please go back to the app. Oh, sorry, unfortunately the fueling capability is currently not available. Please try again later. Hmm, maybe you were not supposed to plug in the nozzle before you go through the payment dance? Try again, hoping the gas station company charges you back for the "finished fueling" that never started. OK, finally the Diesel is flowing, time for a well-deserved coffee. Ah, wait, there's nothing open because you're in the middle of nowhere on an industrial area parking lot.

Tom in jeans and a black hoodie with the paperwork in his hands standing next to a brand-new white 2021 Hyundai Kona Electric at the car dealer.
Me and our 2021 Hyundai Kona Electric at the car dealer.

The above is an extreme case of an EV charging experience, narrated for fossil fuel drivers. But it actually happened. Here's what I would like to see:

  • Every EV charging station has to accept the exact same cashless payment methods they allow for fossil fueling. In Europe, this would essentially be credit and debit cards. Support app payment if you want, but don't make it the only option.
  • Municipalities should stop building slow charging infrastructure, unless maybe in residential areas. Instead, we need fast DC charging stations widely available.
  • Every gas station with fossil fuel pumps should have to have fast EV charging stations as well, in relationship to the number of fossil fuel pumps they have, with regulation enforcing a transition to electric mobility over time. Today it might be one fast charger for every four fossil fuel pumps, gradually increasing over the years.

Oh, I forgot to say that the sun has been refueling our two EVs, the Hyundai Kona from the picture above and a Peugeot e-208, for free for the last several years ☀️… You should really get an EV, and when you can, get solar as well. Don't let my story discourage you, but it's really something I want to see change, and more awareness raised for!

CiviCRM Community Council Election 2026: Nominations Are Open

CiviCRM
civicrm.org
2026-10-08 11:33:39
CiviCRM keeps growing. New installs land every month, and the product gets stronger with each release. The Community Council election has started, and the community wants strong candidates to help guide what comes next. Declare Your Candidacy Nominations are open now. Declare your candidacy by...
Original Article

CiviCRM keeps growing. New installs land every month, and the product gets stronger with each release. The Community Council election has started, and the community wants strong candidates to help guide what comes next.

Declare Your Candidacy

Nominations are open now. Declare your candidacy by October 21, 2026.

To run, you need two other individuals who are members of the CiviCRM community to second your nomination. You will also submit a short statement with:

  • Your name and location
  • Your involvement in the CiviCRM project
  • What you want to bring to the Council

Submit your nomination here: https://www.skvare.com/civicrm-community-council-nomination-form

Thanks to Skvare for hosting the nomination form.

Who Can Run, and Who Can Vote

Any person with an active account on civicrm.org may nominate themselves. An active account means a login within the past two years.

The same rule sets the voter list. Log in to your account today at civicrm.org/user to confirm your details and stay eligible to vote.

No account yet? Register one at civicrm.org/user/register .

We will export the voter list on October 29, 2026 . Log in before that date to make the list.

Know Someone Who Would Be Great on the Council?

Tell them about this post. Point them to the nomination form, or to communitycouncil@civicrm.org with questions.

Timeline

Date Item
October 21, 2026 Declaration of candidacy due, with two seconders per candidate.Seconders must be active in the CiviCRM community.
October 28, 2026 Candidate statements due; Log in or create your civicrm.org account to be eligible to vote
October 29, 2026 Voter list exported from civicrm.org and imported into the voting platform
October 30, 2026 Candidates announced
November 2, 2026 Voting opens
November 13, 2026 Voting closes
November 12-17, 2026 Results confirmed with winners
November 20, 2026 Winners announced

India's actually existing DPIs as architectures of hegemony

Internet Exchange
internet.exchangepoint.tech
2026-10-08 08:17:05
Mila T. Samdub argues India's digital public infrastructure binds banks, tech firms, and the state into a ruling coalition....
Original Article
internet governance

Mila T. Samdub argues India's digital public infrastructure binds banks, tech firms, and the state into a ruling coalition.

India's actually existing DPIs as architectures of hegemony
Kathryn Conrad & Rose Willis / Extraction Network 1 / Licenced by CC-BY 4.0

Mila T. Samdub . Originally published on irl.works

Governance, Openness and Security of Digital Public Infrastructure in India by the internet Research Lab (hereafter, the “GOSDPI paper”) provides new evidence into the organization and functioning of state promoted digital platforms in India. With its comparative approach, it allows us to identify patterns, divergences and blindspots that make up what we might call “actually existing DPI” (as distinct from widely circulating inflated and ungrounded claims about DPI). This essay responds in the form of an architectural critique rooted in political economy. It draws on the findings of the GOSDPI paper to theorize the architecture of DPI systems as flexible, distributed platforms that encode the structure of hegemony in Digital India. This architecture splits governance, ownership, deployment and profit to forge links between powerful interests (software, finance, state elites and sectoral interests, such as in construction). Seen thus, DPIs emerge as instruments that build and sustain elite coalitions, enabling the continuance and intensification of domination.

Actually Existing DPIs

A large and expanding body of gray literature prescribes the principles, architectures, and functions of something called “Digital Public Infrastructure”. Much of this literature is mobilized towards rapid policy diffusion, exporting certain idealized models as “best practices” whose supposed successes can be replicated around the world. As a result, mainstream DPI discourse often pays more attention to finessing how to promote “DPI” than to understanding what the systems given this name actually do.

What does it mean to look at “actually existing DPIs”? This means looking not at technical diagrams that assume end-users who are rational, literate, and empowered, nor unattributed factoids about the cost savings these systems will supposedly deliver, nor the smiling photographs of fictional user personas – farmers and street vendors are in vogue – that adorn dozens of report covers, nor even the elegant principles that promise openness, interoperability, and trust. Rather, actually existing DPIs refer to the opaque, imperfect, compromised, and negotiated systems that are actively reorganizing societies. Looking at actually existing DPIs also means being specific about how these systems work in different contexts; this article focuses on the Indian cases studied by the GOSDPI paper, while recognizing that systems elsewhere are similar and different.

DPI are worth studying in empirical detail because they form the operating system of contemporary life in many places. Small nuances in the structures of these systems have massive ripple effects affecting hundreds of millions of people. Since they are composed of several interlocking structures – legal, technical, economic, cultural – it is precisely the interplay of these various forces that this analysis unpacks.

The GOSDPI paper is primarily framed as an exercise in gathering evidence and evaluating whether six actually existing DPI live up to the claims made on their behalf. This is critically important for advocacy, as the answer on most counts is “no”. In the course of this exercise, the paper’s authors also begin to theorize actually existing DPI. The paper refers, for example, to DPI’s “highly networked public-private architecture”, its “distributed architecture”, its “selective openness”, “complex incentive structures across multiple actors” and “fragmented model of responsibility”. They write that in DPI, “regulatory authority is concentrated in central state bodies, while operational governance is delegated through layered frameworks of rules, guidelines, and bilateral agreements.” And: “when faced with security vulnerabilities and data breaches, DPIs defined their security perimeter narrowly. The security boundary was set to be at the core infrastructure, while responsibility for breaches occurring through third-party integrators and components was denied.” This essay picks up some of these threads to build a more systematic theorization of actually existing DPI.

The DPI Assemblage: From Imaginary to Platform to Extension

To understand DPIs’ broader social and economic effects they should be treated as assemblages: DPIs encompass not only core software platforms, but also ecosystems of private and public sector complementors, the hardware and infrastructural dependencies on which they run, the regulations that govern them, the imaginaries that shape them and the human intermediaries and social structures that provide last-mile interfaces. Across these dimensions, DPIs in India are characterized by a hyper-proliferation of roles and actors. They are structured in ways that “increase the surface area of a problem” , multiplying the sites in which different entities can enter the system and the functions they serve. These functions are operational, economic and regulatory, often at the same time. Importantly, as the GOSDPI paper reveals, though DPI are often described as “open”, in practice they are tightly permissioned, and the entities that occupy roles in the ecosystem often do so because they have significant economic and political power.

Here we draw on and extend the example of the FASTag highway toll collection DPI, which is explicated at length in the GOSDPI paper.

Common imaginaries of marketized development

It is clear from the GOSDPI paper that DPI is not simply a one-size-fits-all approach. There is significant room for variation between different DPIs. Yet at the same time, a shared “sociotechnical imaginary” motivates DPI more broadly. The notion of a broad-based move from “pipes to platforms” in the architecture of government services, for example, has been promoted by a relatively small set of actors over a decade. The Nilekani-led TAGUP report is a consistent touchstone in the distributed governance of DPI. An imperative to scale at all costs, likewise, accompanies all DPI rollouts.

The DPI imaginary frames not only the architecture of the DPI platform but also proposes a theory of change, claims about the kind of social and economic change these systems will bring about in the world. This theory of change – for which there exists little concrete evidence – links DPI deployment to increased government efficiency, private sector innovation and poverty alleviation. It is built on pre-existing imaginaries of marketized development, including CK Prahalad’s business school promise of the “fortune at the bottom of the pyramid” and a “ financial inclusion assemblage ” that claims that, once granted access to credit, the poor can entrepreneur their way out of poverty.

Entities that have promoted the DPI imaginary include, among others , the tech czar Nandan Nilekani, the industry body Indian Software Product Industry Roundtable (iSPIRT), and global funding agencies like Omidyar and the Gates Foundation . Broadly, these correspond to domestic software capital and US transnational capital. Their stakes are not only economic but also symbolic. With the proliferation of DPI, domestic software capital has today arguably become the hegemonic class fragment in India, playing an outsize role in shaping common-sense assumptions about what the future of the nation should look like .

Complex ownership structures

The agencies that own the core platforms of DPI are often composed of complex configurations of actors. In some DPI, ownership rests entirely with a technocratic state agency. This is especially the case for so-called “foundational DPI” like Aadhaar and Digilocker. But in domains with powerful incumbent sectoral interests, like finance or highways, ownership models tend to be more complex.

As the GOSDPI paper describes, FASTag is owned by the Indian Highways Management Company Limited (IHMCL), a special purpose vehicle, of which the public enterprise National Highways Corporation of India owns 41.38%, toll concessionaires (which include some of the largest infrastructure and construction companies in the country) hold 33.81% and financial institutions hold 24.81%. This fragmented ownership structure includes both finance and construction, with “L&T Finance, GMR Highways, Shapoorji Pallonji Roads, and Essel Infraprojects, each holding between 3–8% of total share capital”.

The National Payments Corporation of India (NPCI), which owns the Unified Payments Interface system, is one of the most prominent entities in the operation of DPI. It is structured as a non-profit company composed of a mix of public banks, private banks and fintechs. Over 51% of shares are held by public sector banks.

Such ownership structures mix public sector enterprises with commercial interests across various sectors. They should be understood as ways of carving up the pie that secure the consent of powerful fractions of capital to build and deploy large-scale projects.

Platform-ecosystems in operation

At the level of operation, each DPI is a platform-ecosystem composed of a two or three-layer stack: the core platform, occasionally a hidden routing layer, and an interface layer.

The core platform is usually operated by the entity that owns the DPI (NPCI operates UPI, UIDAI operates Aadhaar). Occasionally, the operating entity is distinct from the owning entity. The National Electronic Toll Collection (NETC) transactions that are at the center of FASTag toll collection, for example, are operated by NPCI (which is involved in many DPIs that process financial transactions).

The routing layer, where it exists, is composed of incumbent sectoral interests, often but not always in finance, whose buy-in is necessary to operate the DPI. In the case of FASTag, these actors are the issuing and acquiring banks that facilitate the movement of data and money through the system. Access to this layer is controlled by licenses that often mandate technical specifications and/or turnover requirements, restricting them to large enterprises. These entities often earn guaranteed rents from occupying these privileged nodes in the ecosystem.

The interface layer is usually composed of user-facing apps or services. Organized to attain scale, this level is often characterized by entities that already have significant market access or have the resources to take on elevated risk to acquire customers. In FASTag, the interface layer is split between acquiring banks and fintech startups. Acquiring banks are responsible for registering new users into the FASTag system and providing them with a physical FASTag RFID to affix to their car. Fintech apps form the extended ecosystem, which are often used to top up one’s FASTag funds. In other DPI, such as UPI or Aadhaar, this layer is often occupied by fintech companies with speculative business models backed by venture capital.

Putting these three layers together: When a car passes through a toll plaza, data is transmitted to a toll plaza operator, whose infrastructure is configured by a system integrator, to an acquirer bank, to NPCI’s NETC mapper, to an issuing bank, from whose account money is deducted, and then back. A complex incentive structure follows: “Each toll transaction triggers a fixed percentage-based payout to the involved entities. The acquirer bank, issuer bank, NPCI, and IHMCL receive 0.13%, 1%, 0.15% and 0.25% of the transaction value respectively as programme management fee.”

Multiple dependencies

All DPIs depend on complex infrastructural stacks, which are usually excluded from most definitions of DPI. To continue with the FASTag example: “When users pass through a toll plaza, multiple devices generate and collect data: RFID readers capture the Tag ID, TID (transponder ID), and user memory; Automatic Vehicle Classification (AVC) systems determine the vehicle class; Weight-in-Motion (WIM) sensors record vehicle weight; and image capture systems photograph the vehicle.” A proliferation of hardware components, then, is what keeps DPI like FASTag running.

DPIs share infrastructural dependencies with cloud-based contemporary digital systems: data centers, undersea cables, mobile towers and more. These are largely supplied by Chinese hardware manufacturing and US hyperscalers. Yet DPI also have particular infrastructural dependencies that are unique to their uses and the situation of India. Smartphones and internet access, for example, are major dependencies of DPI in India, and India’s telcos – operated by conglomerate capital – entrench their importance with every use of DPI. Since biometrics have been foundational to Aadhaar, biometrics suppliers – which are often US and European contractors – have played a prominent role as well.

People are important dependencies in the functioning of DPI. Despite the nationwide rollout of FASTag, most toll plazas in India remain labor intensive, with human intermediaries helping users navigate systems that often don’t work as designed . A simple example familiar to most people who have traveled on an Indian highway: a user’s FASTag fails to scan when the car pulls up at the boom barrier; in response, a toll plaza operator pulls out an RFID reader affixed to a long stick and waves it closer to the tag in order to scan it. Without such improvisations, DPI would simply not work.

Fragmented regulation

DPI function within a regulatory regime that is organized towards maximizing the circulation of data . Thus, the structure of regulation in DPI often fragments authority. The ultimate regulatory authority often rests within central government ministries or central regulators, such as the Reserve Bank of India, but is enforced by a range of actors. In FASTag, the Ministry of Road Transport and Highways is the apex policy authority, while operational guidelines – fee structures, rules of participation and compliance – are managed by IHMCL.

Extension and interconnection

Because DPIs are structured as platform-ecosystems, they can often be extended. New actors can enter the ecosystem as complementors, usually via bilateral agreements and APIs. Thus, FASTag data is also accessed by government agencies for tax compliance and national security. Commercial entities offer a different kind of extension, integrating DPI with each other or with other services. In a commercial fintech app, the Bharat Connect DPI may be used to top up a FASTag account using UPI for payment. As they are extended and interconnected, DPIs become more entrenched.

Architectures of Hegemony

According to a classic paper on postcolonial politics , a ruling coalition “is always based on an explicit or implicit protocol, a network of policies, rights, immunities derived from both constitutional and ordinary law which sets out over a long period, the terms of this coalition and its manner of distribution of advantages”. With DPI, this article has shown, this protocol is not only legal and social but also technical and economic.

The DPI assemblage apportions specific roles to powerful entities suited to their particular interests. In most DPI, this creates a coalition between the state, the software capitalists that build and extend these systems, the financial capital that runs much of the financial plumbing, the conglomerate capital that operates the network infrastructure and sectoral capitals that vary with each DPI (construction in the case of FASTag), as well as important international actors upon which the entire structure is dependent: US hyperscalers and Chinese hardware manufacturers.

Entities with an economic stake in DPI may extract guaranteed rents from occupying a position in the routing layer. Or they may take more risky interface-level business models, often funded by venture capital. The stakes may also be symbolic – building prestige and the image of nation-building. They may be political, offering gains in national security or surveillance. Some entities are content with the status quo; others want to bend the architecture of the system further towards their interests.

DPIs should be understood not only, then, as technologies of service delivery but also as architectures of hegemony. The protocols of DPI encode the distribution of advantages between the divergent entities that compose the ruling bloc of the nation-state today.

Mila T. Samdub is a writer, designer, and curator who works on the aesthetics and political economy of digital infrastructures in India and the Global Majority world.


ICANN's new domain applications are now public

Yesterday was ICANN's Reveal Day , and the full list of applications for new top-level domains is now searchable ( Wired has a good primer ). ICANN published 1,615 applications from 481 applicants, and our fiscal host, Exchange Point , is among them applying for .tiny and backup .point.

The most popular applications are AI related . Thirteen applicants want .agent and seven want .agi with OpenAI and Google both applying. Alongside them are lots of brand domains like .facebook and .bankofamerica.

A tip if you go digging to see who applied for what, you need to know what you're searching for. Google files through its registry company, Charleston Road Registry. A search for "Google" returns no results. "Open AI" returns nothing, while "OpenAI" returns 15 results.

Applicants have until October 21 to switch to backup strings, the final list will be public November 17, and public comment runs until mid-March.

Want to appear here? Sponsor a newsletter.

Support the Internet Exchange

If you find our emails useful, consider becoming a paid subscriber! You'll get access to our members-only Signal community where we share ideas, discuss upcoming topics, and exchange links. Paid subscribers can also leave comments on posts and enjoy a warm, fuzzy feeling.

Not ready for a long-term commitment? You can always leave us a tip .

Become A Paid Subscriber

🚨

Stop press! Do you enjoy our links? Links are now available to paid subscribers only. Become a paid subscriber today.

Internet Governance

Digital Rights

Technology for Society

  • The AI industry hates the term "stochastic parrots," which casts chatbots as remixing training data rather than thinking, because it undercuts the case for trillions in investment, Brian Merchant argues in a video with Emily M. Bender. https://www.youtube.com/watch?v=7Z7oA9ndmdY

Privacy and Security

Upcoming Events

Careers and Funding Opportunities

Opportunities to Get Involved

  • SplinterCon Nordic, a December conference on internet fragmentation, seeks talks, research, workshops, and demos on how AI affects censorship, network control, and access to information. Submissions are due October 30 . https://splintercon.net/nordic/cfp

What did we miss? Please send us a reply or write to editor@exchangepoint.tech .

Hackers abuse Google Ads, Bing redirects to push Claude ClickFix attacks

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 16:31:37
Hackers are abusing legitimate Bing search-result redirects as click URLs in Google search ads to direct users to fake Claude installers that deliver ClickFix attacks. [...]...
Original Article

Claude

Hackers are abusing legitimate Bing search-result redirects as click URLs in Google search ads to direct users to fake Claude installers that deliver ClickFix attacks.

The technique, dubbed "Adception" by security researchers at Push Security, appears designed to evade advertising security checks by using Bing's trusted domain as the ad destination, before redirecting victims through a compromised website to the malicious download page.

The attack also uses multiple layers of cloaking to prevent security scanners and visitors who access the malicious URLs directly from seeing the payload.

According to a report published by Push Security , the campaign was discovered after researchers detected a malicious Google ad targeting users searching for "claude mac."

Google search ad ultimately redirecting to a fake Claude download page
Google search ad ultimately redirecting to a fake Claude download page
Source: Push Security

Unlike typical malvertising campaigns that direct victims to attacker-controlled domains, the sponsored result displayed the legitimate bing.com domain, making the advertisement appear less suspicious.

When clicked, Push says the ad first passed through Google's advertising redirect before reaching Bing's bing.com/ck/a click-tracking endpoint, which forwarded the browser to a legitimate but compromised WordPress website belonging to a South American retailer.

The compromised website then redirected the visitor to claude-desk-code[.]com , a fake Claude download page designed to trick macOS users into executing malicious commands.

Bing's click-tracking redirects use JavaScript to send visitors to their destination, allowing attackers to redirect users to malicious websites while making the traffic appear to originate from Bing.

The campaign also uses two layers of cloaking to prevent unwanted visitors from reaching the payload.

The compromised WordPress website checks for a Bing referrer and specific browser headers before redirecting visitors, while the fake Claude website uses JavaScript to verify that visitors arrived from Google or Bing.

Visitors who try to access the malicious site directly are redirected to a 404 error page, making it harder for automated security scanners to analyze the attack.

Fake Claude installer hides malicious commands

The final destination is a convincing imitation of a Claude download page that offers a macOS installer using an installation command entered into the Terminal.

ClickFix prompt disguised as installation steps for Claude for macOS 
ClickFix prompt disguised as installation steps for Claude for macOS
Source: Push Security

However, while the page displays Anthropic's legitimate installation command, curl -fsSL https://claude.ai/install.sh | bash , clicking the copy button places a malicious command in the clipboard.

The substituted command first prints a message claiming to download Claude from Anthropic's official website, but actually decodes a Base64-encoded URL pointing to lake-90[.]com .

It then uses curl to silently download a .dat file from the attacker-controlled server and pipes its contents directly into the macOS Z shell ( zsh ) for execution.

This means victims see the legitimate Claude installation URL both on the download page and in the terminal, even though an entirely different script is being executed.

The final payload delivered by the attack remains unknown, so it unclear what malware, if any, is being installed.

Push Security says it identified several domains associated with the same ClickFix toolkit, which it tracks internally as AcSig, that use an identical macOS installation command, payload URL structure, and installer interface.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Friday Squid Blogging: I Caught a Squid

Schneier
www.schneier.com
2026-10-09 16:24:45
On Wednesday I spent a day fishing, on a small boat out of Gloucester, MA. We caught many cod (none of which we could keep), and a bunch of hake and mackerel (all of which we could keep). And…I caught a squid! Near as I can tell, it’s a longfin squid, sometimes called a Boston squid (Dor...
Original Article

Friday Squid Blogging: I Caught a Squid

On Wednesday I spent a day fishing, on a small boat out of Gloucester, MA. We caught many cod (none of which we could keep), and a bunch of hake and mackerel (all of which we could keep). And…I caught a squid! Near as I can tell, it’s a longfin squid, sometimes called a Boston squid ( Doryteuthis (Amerigo) pealeii ).

That night I cooked it over a barbecue grill—hot and fast. Delicious.

Posted on October 9, 2026 at 4:24 PM • 1 Comments

Sidebar photo of Bruce Schneier by Joe MacInnis.

No Man Is an Island

Hacker News
borretti.me
2026-10-09 16:04:00
Comments...
Original Article

In this post, I argue that individual intellectual activity can only be sustained in an intellectual community of other humans. AI dissolves these communities, which in turn makes private intellectual activity rarer.

The Case of Software

Some years ago, when it became clear that AI would solve software engineering, my thinking was:

  1. In my professional life, I’m happy to move one level up to become a manager of AI agents. I’m literate, I’m a good technical writer, I can describe what I want and let AI agents write the code.
  2. In my own time, I can keep doing the things I care about because I enjoy them intrinsically. This is the “intellectual” side of software engineering: reading technical blog posts and papers, learning new programming languages, designing new programming languages, writing technical essays, writing code for my tiny open source projects.

The second point has not quite worked out. What actually happened? First, the discourse of software engineering became worse. As I wrote earlier :

Claude Code was released a little over a year ago. In that short time, software engineering has been completely transformed. Materially, it might be positive: higher productivity, though at the cost of a messier codebase. Socially, it has been a disaster.

The discourse around software engineering has gotten dumber. It’s like everyone in the industry lost 30 IQ points. People used to talk about compilers, type systems, logic. Now they talk about “prompts”, “harnesses”, “loops”. The discourse is narrower, shallower, and more repetitive. There’s only so many times I can hear about “agentic harnesses” before I lose my mind.

Then there’s the loss of human capital formation: there is nothing to learn. Prompting is not a skill, at least, it’s a much shallower skill than software engineering. The instrumental dimension of the work has improved in that people can get more output per unit of effort, but the dimension of work that’s about building up human capital has collapsed. And maybe this is rational. Why learn to code at all? The computers can do that for us. And so the rigorous, systematic thinking you need to practice in order to be a good programmer: all gone. The machines can be rational for us. We can just vibe.

Second, contributing to the commons of software engineering is increasingly pointless. Before AI, you could publish open-source code, write blog posts to share ideas or inspire other people, write expository texts like tutorials, forum posts, textbooks etc. to teach people. After AI, what’s the point?

  • You write a blog post: who’s going to read it? The next training run will ingest it, marginally improving AI capabilities. Maybe the post was a workaround to some obscure technical problem, so the next time someone encounters that problem, they will ask Claude, who will solve it without crediting you. Maybe you had some insight about how to structure large codebases: who cares? The humans aren’t making those decisions anymore.
  • You design a revolutionary new programming language: who cares? Maybe Claude cares, for what that’s worth. But humans don’t write or even read the code anymore. The programming language is an implementation detail the humans no longer have to care about.
  • You write a library, and publish it on GitHub: who cares? The AIs might discover it, and use it, but the operator won’t know you exist or did anything.

It’s not just “you can’t get GitHub stars or traffic to your blog”; rather, there is no sense of a common human project you can contribute to. There’s your own private garden of code, which you can grow infinitely in all directions with the help of AI, but you never have to leave the garden and go to the bazaar to trade with people. Under these conditions, it’s hard to care or do anything.

But does it actually matter? Does it matter if we stop writing blog posts about obscure JavaScript features, and designing new programming languages? Maybe writing code was always drudgery, and now we can move on to higher things, like math— oh, wait .

The Intellectual Life

From observing what happened to software engineering, and what’s currently happening to mathematics, I think we can derive some general insights about intellectual practices in general.

We tend to think of intellectual activity as private and solitary: the philosopher sitting in his armchair, deriving the world ab initio . But intellectual activity has two inputs that can’t be acquired in isolation: a shared body of work to build upon, and motivation . The shared body of work is communal, unless you want to recapitulate the entire tech tree. Motivation we can break down into two components:

  • Intrinsic motivation: we learn for the sake of learning, we create art from a compulsion we can’t understand, etc.
  • Extrinsic motivation: David Chapman defines “nobility” as manifesting glory for the service of others, and using our abilities in service of others. We want our work to be useful to others, we want others to benefit from our work, we want to contribute to a shared human project. Fame and the esteem and good will of your peers are the proxies by which we measure our contribution.

We tend to think of intrinsic motivation as the purest kind: endogenous, self-created, unmotivated by material or social gain. But it’s an emotion, and, like all emotions, it’s transient and short-lived. And this is rational: otherwise, we’d all be stuck in life-long unproductive obsessions. So, we need something to fill the gaps between moments of divine inspiration. Extrinsic motivation serves this function.

Private intellectual activity that is sustained, complex, and long-term requires an external intellectual community to provide material and motivation, like fuel and oxidizer. That private activity, in turn, sustains the community: by publishing papers, textbooks, code, etc., you add to the shared body of work for others to build on top of; by citing someone’s paper or contributing to their repository, you give them the recognition and honor that confirms they are doing useful work, which in turn motivates them to keep contributing.

Without community, you don’t get isolated individuals each working on their own things: you get nothing. The inputs to intellectual activity dry up: no one is adding to the shared body of work, and there are no peers to benefit from your own intellectual activity. Without this extrinsic motivation, you get less intellectual activity because, again, intrinsic motivation is fleeting.

After AI

After AI, intellectual contributions become unnecessary or redundant. In the case of software: the AIs write all the code, so what’s the point of writing either code or prose? The audience for those things is now severely diminished. Humans don’t write code anymore, so they won’t read blog posts about how to write code, or tutorials, or try new libraries or programming languages. In the case of mathematics: the AIs can prove theorems, write papers, explain papers, tutor students, and in the near future, they might write entire textbooks better than humans. So what’s the point of writing a paper, or a textbook? It’s superfluous.

If intellectual activity is unnecessary—if there’s no consequence to designing a new programming language or publishing a paper, or if there’s simply no community to contribute to—then it won’t happen. There’s no point.

Now apply this to every other domain of intellectual activity, and you see what the future looks like. There may be individuals building new libraries and programming languages, but no shared culture of software engineering; there may be individual students and practitioners of mathematics, but no living community of mathematicians.

I’ve spoken to people who think AI will have a positive effect on the life of the mind, and their thinking is that right now too many people are doing intellectual activity for instrumental reasons: citations, clout, etc. In this view, the collapse of intellectual communities is good , because it sifts the intrinsically-motivated übermenschen from the clout-chasing masses.

I think this view fits with contemporary society: we view intrinsic and extrinsic motivation as high and low status, respectively. A “developed” person is supposed to have a private, inexhaustible reserve of motivation which is causally disconnected from external reward.

But this is not a realistic view of human beings. Humans are social animals who can only flourish in the society of other humans. We care, and we should care, about contributing to the world. And if technology makes our contributions superfluous, then what is left?

Acknowledgements

Thanks to Luke Drago and Andy Matuschak for feedback and conversations.

Branches in branch-free code

Lobsters
00f.net
2026-10-09 15:31:17
Comments...
Original Article

Let’s add two numbers

Here’s a complete C function that adds two unsigned 128-bit integers:

typedef unsigned _BitInt(128) u128;

u128 add(u128 a, u128 b) {
    return a + b;
}

Now let’s compile it for 32-bit RISC-V:

clang --target=riscv32 -march=rv32imac -mabi=ilp32 -O2 -S add.c -o -

You can see the output on Compiler Explorer , alongside versions compiled with GCC and with the Zicond extension we’ll look at below.

Here’s the relevant snippet:

        add     a1, t1, t0
        add     a2, a7, t2
        sltu    t0, a1, t1
        add     a2, a2, t0
        beq     a2, a7, .LBB0_2
        sltu    t0, a2, a7
.LBB0_2:
        add     a5, a5, a3
        add     a4, a4, a6
        add     t0, t0, a5
        sltu    a3, a5, a3
        sltu    a5, t0, a5

Wait, why is there a beq in an addition? That’s a conditional branch, right?

RV32 registers hold 32 bits, so LLVM has to split our 128-bit addition into four smaller ones, passing the carry from each to the next.

This is how the compiled code performs the addition; a0 and b0 are the lowest 32-bit words of our inputs; a1 and b1 are the next ones. All values are unsigned, low32() keeps only the lowest 32 bits, and comparisons return 0 or 1.

sum0 = low32(a0 + b0)
carry0 = (sum0 < a0)

sum1 = low32(a1 + b1 + carry0)

if sum1 == b1:
    carry1 = carry0
else:
    carry1 = (sum1 < b1)

Can you guess why sum1 == b1 is checked?

CPUs such as x86 and AArch64 have instructions to perform conditional moves ( cmov ), allowing carry propagation to be implemented without a branch.

But on RV32, even comparing two 64-bit integers with < produces a branch.

What about the usual bit mask?

We’ve been talking about carry propagation in large integers, but if you’ve written constant-time code, you’ve probably used some version of this everywhere:

#include <stdint.h>

uint32_t ct_select(uint32_t bit, uint32_t a, uint32_t b) {
    uint32_t mask = -(bit & 1);
    return (a & mask) | (b & ~mask);
}

If the low bit of bit is set, mask is all ones, so the expression keeps a and zeros out b . Otherwise, the mask is zero and we get b .

Just bitwise operations, no branch in the source.

Let’s compile that for RV32 with clang 23:

ct_select:
        andi    a0, a0, 1
        beqz    a0, .LBB0_2
        mv      a2, a1
.LBB0_2:
        mv      a0, a2
        ret

Aaaahhhhhhhh, a beqz instruction, branching on the bit we just masked. So much for carefully writing the selection with bitwise operations.

And this also happens on 64-bit RISC-V.

You can see the compiled code on Compiler Explorer which includes both targets, plus clang 17, GCC and Zicond for comparison.

Why include clang 17? Because the branch was there in 15, gone in 16 and 17, and back from 18 to 23. Fun, uh?

So, even if you reviewed assembly code with a given version of the compiler, and everything looked fine, every change to the compiler version of compiler flags requires a new review.

What about Zig?

Let’s try the 128-bit addition in Zig, along with the same bit-mask selection:

export fn add(a: *const u128, b: *const u128, r: *u128) void {
    r.* = a.* +% b.*;
}
export fn ctSelect(bit: u32, a: u32, b: u32) u32 {
    const mask = 0 -% (bit & 1);
    return (a & mask) | (b & ~mask);
}
zig build-obj add.zig -target riscv32-freestanding -O ReleaseFast -femit-asm=add.s -fno-emit-bin

Same beq after the second word, and the selection gets the same beqz ( Compiler Explorer code ).

Changing the source language doesn’t get us out of this. And yes, Rust has the same issue.

What about other platforms?

Now let’s compile C examples for a few other targets.

I also added a 64-bit a < b comparison, since that was enough to produce a branch on RV32.

These are the numbers of conditional branches and conditional returns emitted by clang 23 at -O2 .

As usual everything can be verified on Compiler Explorer :

Target add ct_select 64-bit <
x86_64, x86 0 0 0
AArch64, 32-bit ARM, Cortex-M3 0 0 0
MIPS32, LoongArch64, WebAssembly 0 0 0
Cortex-M0 0 1 1
32-bit PowerPC 0 1 2
RV32 1 1 1
RV64 0 1 0
RV32 and RV64 with Zicond 0 0 0

Targets with zeros are safe. Everything else has ugly side channels in spite of source code looking like it runs in constant time.

WebAssembly has a select ( cmov ) instruction, so no obvious conditional jumps are visible in the modules, but then WebAssembly compilers can do whatever they want. On platforms without equivalent native instructions, it’s likely that we’ll get a jump.

Cortex-M0 (Thumb-1) and generic 32-bit PowerPC don’t have an cmov -like instructions, so they branch.

Let’s try GCC

Now here’s a pleasant surprise: GCC 16.1 compiles both examples without branches on RISC-V. Its carries use sltu , and it leaves the mask arithmetic alone.

Cool. But let’s make a small change: derive the mask from a comparison.

uint32_t m = -(uint32_t) (x < y);
return (a & m) | (b & ~m);

And… the branch is back!

GCC now emits a bgeu on both RV32 and RV64 ( Compiler Explorer ). It also branches on 64-bit comparisons on RV32.

Can we hide the mask from the optimizer?

For the bit-mask example, there’s a common workaround: pass the mask through an empty asm statement before using it. Let’s do that:

uint32_t ct_select(uint32_t bit, uint32_t a, uint32_t b) {
    uint32_t mask = -(bit & 1);
    __asm__("" : "+r"(mask));
    return (a & mask) | (b & ~mask);
}

The assembly does nothing, but its declaration tells the compiler that it may change mask .

Now, both versions compile without branches on RV32 and RV64. Phew.

Can we do the same for the addition?

I tried hiding the inputs behind a memory barrier, and the branch stayed. But putting a register barrier on each of their 32-bit words worked, and every carry became an sltu .

Both attempts are on Compiler Explorer .

To be honest, I wouldn’t rely on either barrier experiment as a fix for the addition.

For arithmetic involving secrets, I’d avoid integer types wider than two registers and write the carries explicitly, using 32-bit words on RV32.

Currently, clang 23 keeps my hand-written carry chain free of branches, but who knows what will happen in the next releases.

Giving LLVM the missing instructions

For RISC-V, there’s a solution, though: RISC-V has an extension called Zicond .

It adds czero.eqz and czero.nez , which zero a register depending on whether another register is zero. And that can be used to select a value without branching.

Let’s enable it with -march=rv32imac_zicond and compile our bit-mask example again:

ct_select:
        andi       a0, a0, 1
        czero.eqz  a1, a1, a0
        czero.nez  a0, a2, a0
        or         a0, a0, a1
        ret

Yay, no jumps. Every case tested above is free of branches with Zicond enabled.

Zicond is part of the RVA23 profile, but unfortunately many cores in use today don’t implement it, especially microcontrollers.

And even if it’s available, there’s an important detail that’s easy to overlook: the Zicond specification only guarantees that their timing is independent of the data if the Zkt extension is also implemented.

Writing secure, portable code is hard. Protecting against side-channels is as footgunish as zeroing secrets.

Oh, and if you haven’t read it yet, Thomas Pornin’s Why constant-time crypto? and Constant-time multiplication pages are absolutely worth a read.

How To Write Shared Libraries (2011)

Lobsters
www.cs.dartmouth.edu
2026-10-09 14:47:32
Comments...
Original Article
No preview for link for known binary extension (.pdf), Link: https://www.cs.dartmouth.edu/sergey/cs108/ABI/UlrichDrepper-How-To-Write-Shared-Libraries.pdf.

You Might Want to Try Being Less Creative

Hacker News
blog.bawolf.com
2026-10-09 14:39:47
Comments...
Original Article

I tagged along to Secret Studios with my friend Jon for a jam session and realized why I’d never finished a song as a teenager.

I left a little ashamed of how I’ve gotten in my own way, but also inspired by what I now feel empowered to do.

The first thing Jon and I did was triangulate towards something that was alive for both of us that day. We talked a lot about flow. For me it was writing, or breaking . For Jon it was music and skating. We loved the moments when we were totally absorbed and everything else just faded to the background.

“ It all just falls away ” became the foundational hook for our chorus.

As a teenager, I’d written plenty of riffs and fragments but that was as far as I’d gotten. I was so obstinately opposed to doing it the easy way that I was never good enough to do it any way at all.

Me at 16 when I was spending my most time on music.

I was so afraid that if I watered down my songs with too many choices other people had made, they would no longer be mine. So if people liked my work, it wasn’t because they liked me, it was just because they liked them.

Jon wasn’t worried about that at all.

First we borrowed from other artists early and often. As soon as we had our direction, we made a playlist of songs with the right energy. Next we studied them. When multiple songs were 90 BPM, that was a good sign. When a few of them shared chord progressions, we adopted those.

Then we stole even more directly. We converted a guitar riff we liked into our vocal rhythm. We found a drum loop that sounded like one of our inspirations, and spliced in the hi-hat that was missing. Jon composed a bass line on the keyboard that was mostly roots and fifths to get us a rhythmic feel.

None of these were exactly right, but they didn’t have to be.

We weren’t making the finished song. We were just sketching.

The studio Jon and I spent the afternoon

Some of the things we tried were great. Others we pulled out. We tried five or six different melodies over our vocal rhythm. Our musical collage gave us enough information to know whether or not it was working .

Past me would have had so much pride caught up in each of these choices, but to Jon it was just a demo. As he would say, “ make decisions in service of the song, not the parts. ”

That fear came from a scarcity mindset. I was scared I might only have a few creative ideas in me, and that if I didn’t put myself in every single decision, I’d waste them.

But jamming with Jon, I saw abundance. We could write so many songs. Sure, most of them don’t stand out, but the path to writing a great song really is through hundreds of mediocre songs.

I used to take it as a dig that all pop songs use the same chords . But now I think it’s beautiful how much creative expression exists inside the same constraints. None of these songs sound the same.

The key is to spend your energy on the right things. You can’t possibly reinvent the entire discipline. You need to focus your creativity where it counts most.

What’s crazy is that I’ve learned these lessons before! I’ve even written about how important constraints are to creativity ! In my professional life, software engineers often want to build all their own custom tools, or switch to the latest and greatest stuff rather than choosing boring technology .

Startup founders run into their own versions of this. As Antonio García Martínez put it colorfully in Chaos Monkeys , “ The classic sign of a shitty startup idea is that it requires at least two (or more!) miracles to succeed. ”

Over and over I’d learned that your unique creative expression can be narrow, and yet the whole work can still be yours.

The rest just falls away.

I’m shadowing as many artists as I can to understand how they make their creative choices. It’s amazing how short experiences with great practitioners can permanently raise your own expectations . If that sounds interesting to you, follow along for more.

And if you have a craft of your own, hit me up if I can tag along for a session. I’d love to learn from you too.

Discussion about this post

Ready for more?

Microsoft-Decision-1, our model for fast decision-making

Hacker News
commandline.microsoft.com
2026-10-09 14:38:44
Comments...
Original Article

Decision models are quickly emerging as an important new category in AI. Unlike LLMs, which are designed to generate text or reason through complex problems, decision models are purpose-built to deliver structured outputs that software can immediately act on. And once you understand that capability—making decisions and classifying things at very low cost with high performance—all kinds of useful tasks get unlocked.

Today we’re introducing Microsoft-Decision-1 , our new model for fast decision-scoring, available in Microsoft Foundry and coming soon through OpenRouter. This model is designed for routing, classification, prioritization, verification, and workflow control, making it easier to incorporate decision intelligence into existing applications, agents, and workflows in a secure, trusted environment. Microsoft-Decision-1 delivers top performance in latency and quality on structured decision tasks to outperform both LLMs and other decision models.

Microsoft-Decision-1 achieved the highest accuracy in our 36-benchmark comparison, spanning nearly 150,000 questions across benchmarks kept blind from training. And in our benchmarking, it was the fastest measured: 4.5 times quicker than Quyet-1.0-Large, the runner-up, and 35 times quicker than GPT-6 Sol.

How Microsoft-Decision-1 works

To build Microsoft-Decision-1, we post trained Qwen3.5-9B for fast, single-pass decision scoring and will soon rebase it on other models, including Microsoft AI (MAI) and OpenAI. When given a fixed set of answer options, Microsoft-Decision-1 provides a calibrated probability score for each option. The model supports yes/no, multiple-choice, and rating options, as well as rubric-based grading of AI responses and agent actions, all through a simple structured API call.

To build a reliable decision model, we had to address several challenges:

1. Speed

Each decision adds delay, especially when one step depends on another. For example, adding just 100 milliseconds to each of 20 sequential decisions adds two seconds to the overall workflow.

Microsoft-Decision-1 P50 latency is ~35x faster than GPT-6 Sol.

2. Quality that generalizes

It’s easy to overfit a model for one benchmark or one type of decision task. We need to know whether that quality carries over to various tasks the model wasn’t trained on. That’s why we evaluated Microsoft-Decision-1 across dozens of benchmarks kept blinded from training, spanning routing, ranking, long context, multilingual and out-of-distribution tasks, reasoning, and safety. We also took several of the top public models on the popular open leaderboard JevBench and tested them across 36 additional public and private benchmarks. Microsoft-Decision-1 performed the best across these broader sets of benchmarks, demonstrating strong generalization.

3. Robustness

Equivalent inputs should produce equivalent decisions. In production, states and instructions get paraphrased, option descriptions change, choices are reordered, keys change, and harmless formatting noise appears. None of those changes should materially alter the decision.

We perturb the same request in eight ways and measure how often the decision flips. Microsoft-Decision-1 changes its decision on 1.3% of perturbations on average with zero flips when option descriptions are paraphrased or when options are reversed or shuffled.

4. Probability and confidence calibration

The probability itself is part of the API, not just a ranking score. Applications use confidence to decide when to act, defer, or ask for review, so a 90% prediction should be right about nine times out of 10 on representative cases.

5. Safety

A decision model should recognize harmful requests without needlessly blocking harmless ones. We tested Microsoft-Decision-1 on 5,250 requests across 11 benchmarks, covering harmful content, jailbreak attempts, and prompt injection, and found that the model successfully refused harmful behavior while retaining a high degree of utility.

Demo examples

Classification is a key use case for decision models. Check out how accurately and quickly Microsoft-Decision-1 can categorize a variety of queries compared to GPT-6 Sol:

Decision models can also be efficient for computer use scenarios. This demo shows how fast Microsoft-Decision-1 can complete the task of buying a backpack compared to GPT-6 Sol:

How we’re testing Microsoft-Decision-1 internally

Here are some of the ways we’ve been testing Microsoft-Decision-1 internally, with a lot more to come.

Labeling data

XBOX Research used Microsoft-Decision-1 to process more than 10,000 open-ended pieces of feedback and reviews from surveys, STEAM, and Twitter/X and sort them into a fixed set of themes established by researchers to understand what people are saying about different games, launches, streams, and more. They found Microsoft-Decision-1 to be competitive on quality with GPT-6 Sol while running over 14 times faster and 200 times less expensive.

Quality control

The Copilot team measures the quality of chat and agentic responses. Their testing found Microsoft-Decision-1 to be competitive with GPT5.6 Luna and 100 times faster.

Incident response

Our on-call engineers use AI to retrieve relevant knowledge to respond to live incidents across logs, ticketing systems, calls, messages, and other data sources. Microsoft-Decision-1 performed better and faster than an LLM for knowledge retrieval.

Scientific discovery

Microsoft Discovery implements an adaptive replanning feature where an agent evaluates a previous experiment, revises its approach based on rubric grades, and repeats until it has completed its objectives. Microsoft-Decision-1 scored as 46 times more consistent than the LLM-based score at three times the speed and resulted in nearly four times the speed on adaptive replanning

Faster, more reliable planning could significantly impact outcomes for long-running scientific experiments.

Those are just a small handful of examples. There are many more potential use cases for Microsoft-Decision-1. Consider trying out the following:

  • Agent controls: Evaluate an agent’s proposed next step and decide whether to continue, stop, retry, or hand off to a model, tool, or human.
  • Model routing: Evaluate an incoming request and select the best model for the task based on quality, cost, and latency requirements.
  • Skill-based decisions: Apply the rules from an agent skill to select the appropriate next action without repeatedly processing a long list of instructions.
  • Data labeling: Assign consistent labels to social media posts, customer feedback, and other data for analysis or training.
  • AI judging: Evaluate an AI-generated response against defined quality criteria and decide whether to accept, revise, or reject it.
  • Intent analysis: Identify what a user is trying to accomplish and match their request to a supported intent.
  • Incident response routing: Classify an incident by type and urgency, then route it to the appropriate team or workflow.
  • Data validation: Check whether an input meets defined requirements and decide whether to accept it, reject it, or flag it for review.
  • Recommendations: Select the most relevant item, offer, or next action from a set of candidates.
  • Search relevance: Assess how well a search result matches a query and assign a relevance label or priority.
  • Content classification and filtering: Categorize content by topic or policy and decide whether to display it, filter it, or send it for review.
  • Code scanning: Evaluate code against defined criteria and flag potential defects or policy violations for review.
  • Safety and security screening: Classify requests, outputs, or proposed actions by risk and decide whether to allow, block, or escalate them.
  • Computer and UI use: Select the next interface action from a set of options based on the current screen and task.
  • Robotics: Select among predefined robot actions based on observations, task goals, and operating constraints.
  • Scientific discovery: Screen candidate hypotheses, compounds, or experiments against defined criteria and prioritize them for further evaluation.

Getting started

Developers can get started with Microsoft-Decision-1 today in Microsoft Foundry here: https://ai.azure.com/catalog/models/Microsoft-Decision-1 .

Pricing

Input tokens cost $0.042 USD per million tokens. Output tokens are free.

Looking ahead

Now that agentic AI is a reality, we’ve seen that cost plays a major role in how people decide to use AI. And it’s increasingly important to choose the right model for the right job. With agents taking action and making an impact in the real world, decision models have the potential to help people guide and control those agents through complex environments.

We look forward to seeing what developers build with Microsoft-Decision-1 and hearing their feedback. We’ll continue to release updates to the model, including by incorporating evaluations and data to further optimize quality, confidence, and cost.

Appendix: Models benchmarked

Quyet-1.0-Large — https://huggingface.co/chinhnc/Quyet-1.0-Large
Surogate Rune 26B-A4B — https://huggingface.co/surogate/rune-26b-a4b-GGUF
GPT-6 Luna Decisions — https://developers.openai.com/api/docs/guides/decisions
deck-31B — https://github.com/krishna-gogineni-765/deck31b
H2O-Lightning-4B — https://huggingface.co/h2oai/h2o-lightning-4b
Strands-Decider 2B — https://github.com/strands-labs/strands-decider

Where Are the Iran War Protests?

Intercept
theintercept.com
2026-10-09 14:31:17
Despite a wildly unpopular war with Iran, a mass protest movement for peace hasn’t materialized — at least in the ways we’ve been taught to recognize. The post Where Are the Iran War Protests? appeared first on The Intercept....
Original Article

Do the Old Ways Still Work?

Have you been recently scolded by an older peacenik about the good old days of street protests? I have!

Has an older beloved activist — a mentor, even — bemoaned “kids these days” and criticized their lack of political engagement? Have you heard the dreaded preamble: “In my day, we…” — fill in the blank — marched, struck, organized?

I have been on the receiving end of some of these rebukes recently, even though I am not much of a kid anymore. These aging activists aren’t seeing the outrage. They aren’t seeing the opposition. They aren’t seeing the resistance. But it might just mean they aren’t looking in the right place. Because there is plenty of resistance if you know where to look .

But more on that later.

The war against Iran is hugely unpopular . And it is not just a faraway, abstract wrong. It is having a demonstrable impact on the daily lives of Americans. Gas and heating fuel are and will continue to be more expensive. The Iran War Energy Cost Tracker , a project of Brown University’s Climate Solutions Lab, estimates a nearly $1,000 war tax paid by each U.S. household. That is on top of the actual and massive price tag of military operations so far: nearly $40 billion and rising at a rate of $2 to 3 billion a month, with the projected final price tag in the trillions .

At the end of February, Trump’s war opened in typical Trumpian fashion with a massive bombardment that not only targeted Iranian leaders but also the smallest and most innocent Iranians : Operation Epic Fury had an elementary school in its sights, and the result was obliteration. Raytheon-manufactured Tomahawk missiles slammed into the school in Minab, Iran, killing 156 civilians, most of them children. A U.N. panel now asserts that the U.S. attack was a war crime.

As the war ground on, the resistance continued. In March, Green Party candidate for Senate in North Carolina, former Marine, and member of Veterans for Peace, Brian McGinnis , disrupted a Senate hearing, shouting: “Americans do not want to fight this war for Israel.” (He suffered a broken arm at the hands of Capitol Police.) That same month, a top counterterrorism official, Joe Kent, resigned from the Trump administration, citing his opposition to the Iran war. More than 65 veterans and military family members were arrested inside a congressional building in April, protesting the illegal use of military force against Iran. The list goes on and on and on.

But we have not seen a reprise of the massive protests that marked the lead-up to the Iraq War 23 years ago. Maybe it’s understandable. And maybe it’s OK.

NEW YORK, UNITED STATES - MARCH 28: Demonstrators gather near Central Park before marching through Manhattan and passing through Times Square during the third âNo Kings❠protest in New York, United States, on March 28, 2026. (Photo by Selcuk Acar/Anadolu via Getty Images)
Demonstrators gather near Central Park for te third No Kings protest in New York City on March 28, 2026. Photo: Selcuk Acar/Anadolu via Getty Images

March Where? To Stop What?

I love a good protest march. I love the signs, the energy, the chanting, the music, coordinated outfits, mass-printed placards, and creative, handmade signs, a veritable rainbow of puns and alliteration and outrage glittered to cardboard and foamcore. I love the collection of newsletters and radical tracts and stickers and flyers for the next get-together that fill my backpack by the end. I love the chance encounters with friends. (“OMG, I didn’t know you’d be here.”) For a time, long ago, I served on the United for Peace and Justice steering committee and played a very small role in organizing such big and beautiful anti-war marches.

But I have a friend in her 70s who recently announced: I will not march in an empty city on a weekend ever again. And I agree. Her point was that big protest marches are often planned to be convenient for working people, so they are scheduled on weekends. But the leaders we want to confront with our people power don’t work on the weekends. In Connecticut, where I live, that means we end up marching in circles around a deserted downtown Hartford, our chants lost in the caverns of empty office buildings.

That happens in Washington, D.C., too. The weekend that 200,000 people reportedly marched at a “No Kings” rally in the capital last fall, Trump was holding a $1 million-per-plate fundraiser at his Mar-a-Lago resort in Florida. That is not disrupting business as usual. It is not creating some alternative. So it ends up feeling performative and like a numbers game. We show up to be counted. And now, the counting is itself a battleground. In D.C., the U.S. Park Police used to count crowds at protests. But they stopped in the 1990s, after the Million Man March challenged their count as a low-ball figure.

What is the political utility of marching one day and then returning to business as usual the next?

Personally, I would march on a Monday, down the middle of the highway, stop traffic, and sit in to demand that the world stop business as usual until there is justice for the children of the Minab school, or an end to Israeli settler violence in the West Bank , or an end to the Israeli genocide in Gaza .

But I agree with my friend. I am not going to a performative protest that’s easy to ignore. What is the political utility of marching one day and then returning to business as usual the next?

Our History Is Inspiration, Not Fodder for Scolds

I am white-haired and I can no longer say it is premature. When people assume I am a grandma, I am learning to accept it gracefully. At 52, I could be a grandmother. But I am too young to have lived through the so-called heyday of protest marches that required months or years of organizing work and political finesse. These marches — like the 1963 March on Washington for Jobs and Freedom , or the huge November 1969 Moratorium to End the War in Vietnam, or the April 1971 protest made famous by Vietnam veterans throwing their medals — demonstrated the movements’ organization, economic, and cultural power.

The March on Washington was the culmination of decades of vision, years of work, and hundreds of thousands of dollars. It brought upward of 250,000 mostly Black Americans to the nation’s capital to demand a civil rights act, desegregation, jobs, the right to vote, and more. The march is credited with helping pass both the Civil Rights and the Voting Rights acts.

During my lifetime, there have been major mass mobilizations of varying utility. The June 12, 1982, March and Rally for Nuclear Disarmament in New York City was the largest single protest in U.S. history (so far), with more than 1 million people calling for an end to the nuclear weapons threat. There were so many people lined up in the streets that tens of thousands of marchers never even arrived at the rally in Central Park!

Organized to coincide with the United Nations meetings on nuclear disarmament, the event was the culmination of 18 months of work. Coordinator Leslie Cagan, who eventually helped found UFPJ, recalled that the march was “a tremendous success.” Historians like Vincent Intondi credit it as a cultural turning point that created the conditions for the Treaty on the Prohibition of Nuclear Weapons nearly four decades later. Intersectional , joyful , and woman-led, the rally also encouraged participants to bring the spirit of the march home with them, seeding countless anti-nuclear community efforts around the nation.

In February 2003, the world said no to the impending U.S. war on Iraq with rallies and marches in almost 800 cities around the globe, demonstrating both the power of the people and the limitations of this form of resistance. All over the world, as many as 30 million people participated in an unprecedented coordinated series of actions, with marches from Athens, Greece, to Zagreb, Croatia. The pages of the New York Times called the global movement against the Bush war the “Other Superpower,” but the muscle flexed in the streets did not translate into the political, economic, or cultural might needed to stave off a war built on a web of lies .

Historian Jeremy Varon writes vividly about the impact of the marches and rallies in his recent study of the movement against the war on terror , “Our Grief is Not a Cry for War,” concluding that while they didn’t keep the Iraq war from happening, they bolstered and built a peace movement that is still active in creative resistance today. Our past is inspiring. We need to learn this history and apply the lessons that make strategic sense for this context.

We shouldn’t look at the past and beat ourselves up by saying, “Wow, they got a million people to turn out for nuclear disarmament in 1982, and I can’t even get 10 people to come to a street corner protest.” The saying goes, “We learn our history so we don’t repeat it,” and I think that goes for movement history, too. We don’t want to repeat history to keep it precious and amber-encased. We want to learn from it and apply what is useful to our own very different moment right here in 2026, where we are flooded with social media’s steady stream of bad news, fake news, infotainment, and rage-bait.

Today, people are exhausted, stretched thin, worried about their own bottom lines. Or maybe I should just speak for myself. I am exhausted. Stretched thin. Supremely worried. It is easy to despair. Everything in modern life seems geared toward our individual hopelessness and isolation. We are better consumers when we feel alone and powerless.

Like many, I was inspired by political scientist Erica Chenoweth’s 2010s research on nonviolent civil resistance and regime change, which established the 3.5 percent rule . It states that no government can withstand a challenge where 3.5 percent of its population is mobilized for a “peak event” like a mass protest. It seemed simple and achievable. That is, until I did the math. Three and a half percent of the U.S. population is approximately 12 million people. Only 10 million people bought tickets to Taylor Swift’s entire Eras Tour — 149 sold-out shows in 51 cities and 21 countries. If we got all those Swifties out in the streets here in the U.S., we’d still come up short for a regime-changing General Strike .

Mobilizing, Not Marching

Everything feels existential. Everything feels like an emergency. Trump floods the zone with rage-bait every single day. Do I have to stay mad to be a good leftist? That does not seem healthy to me. So, what can we do instead?

Activists today are marching less and instead mobilizing for community power over the long haul. This means relationship building, visible and decentralized resistance, and crisis response that transforms into solidarity after the acute crisis subsides. For example, you may have seen visibility brigades, the grassroots activist groups that display large signs and wave to drivers from highway overpasses and pedestrian bridges. Then there are the rapid-response networks that turn out trained community witnesses and protection squads whenever ICE is active in a neighborhood or town, or the calls to show up and support people being held at detention facilities like Delaney Hall in Newark, New Jersey.

Dissent is once again being labeled as terrorism. Critique is labeled as terrorism. Questions are labeled as terrorism.

The past teaches us that the tactics must keep changing. Most of what worked in 1963 in Washington wasn’t applicable to organizers in 1982 and was outdated by 2003. And that is OK; we don’t still use mimeographs or fax machines, either. There might not be millions of people in the street to oppose the war on Iran but that doesn’t mean people are not resisting . It just looks different. It is also landing differently, and more heavily, on the people arrested for resistance. Those who protest and are arrested are looking at serious charges , hostile court environments, and a Justice Department high on its own supply of anti-terrorist, anti-antifa fearmongering .

People are struggling and afraid, and I can’t blame them for that. Dissent is once again being labeled as terrorism. Critique is labeled as terrorism. Questions are labeled as terrorism. Anything that is not lockstep, grinning compliance is terrorism.

Still, people are stepping up. Not the way their parents or grandparents did. Not in a way that gets front-page news. Not in a way that penetrates the white noise of the corporate media . Here is a Harper’s Index entry from June 2026: “Estimated number of protests that took place in the United States in the first year of Trump’s first term: 10,873. In the first year of his second term: 39,154.” That is you and me and everyone we love. We need to keep doing it, smart, hopeful, inviting, and full of righteous rage.

I’ll admit that I am still struggling with how to make my opposition to the U.S.–Israeli war on Iran evident and public. I had a “No War on Iran” sign in my weedy front yard. It lasted a few weeks before it disappeared. I have talked to friends about a regular peace vigil downtown or at the nearby plant of weapons-making giant General Dynamics. But I have a time conundrum. The best time to be most visible is 2 or 3 p.m., right when my kids are coming home from school and most people are still at work. The most convenient time for more people to gather is 6 p.m., but by then our downtown is a ghost town and the mosquitos are fierce. So should we be strategic or inclusive? The debate continues.

In the meantime, I just put up a new sign in my yard yesterday. I painted the message: The U.S. War on Iran Kills Civilians, Wastes Money, Destroys the Environment. Let’s Stop It!

We’ll see how long it lasts.

Platforms' Violent Content Rules Are About to Meet The Pentagon's Firing Squad

Hacker News
www.techdirt.com
2026-10-09 14:28:12
Comments...
Original Article

from the barbaric-content-moderation dept

There is plenty of coverage everywhere you look about how Pete Hegseth and the Pentagon have announced plans to livestream the firing squad execution of Nidal Hasan, the Army officer who shot up Fort Hood, killing 13 people and wounding dozens more. There is plenty of debate about the moral atrocity that is a firing squad execution and plenty of comparison to the botched lethal injection execution in Tennessee last week. This is not the place for such discussions, other than to make it clear that the entire concept here — no matter how terrible Hasan is or no matter how terrible his crime — of the state putting people to death is a barbaric practice that should be ended.

But there is one angle here that we can talk about that most other places won’t: whether hosting the livestream would violate the platforms’ own rules — and whether they’ll simply ignore (or rewrite) those rules to do it anyway. While it’s probably perfectly legal in the US to stream the execution, it still might violate the various platform rules that most sites have set up for themselves. (Hosting it globally may also create legal headaches in countries with stricter rules on violent, extremist, and terrorist content, but that’s a separate question.)

But let’s look more closely at the possible platforms Hegseth might use, since the Pentagon hasn’t yet said where this “livestream” is supposed to occur.

X

Elon Musk’s X is (duh) a likely choice. In theory, X has a “ violent content policy ,” but it leaves a lot of wiggle room for Elon to claim the barbarous execution doesn’t violate its policies:

You may share graphic media if it is properly labeled, not prominently displayed and is not excessively gory or depicting sexual violence, but explicitly threatening, inciting, glorifying, or expressing desire for violence is not allowed.

X is a place where people can express themselves, show and learn about what’s happening, and debate global issues, often sharing images and videos as part of the conversation. However, healthy conversations can’t thrive when Violent Speech is used to deliver a message, and not every participant wishes to be exposed to Violent Media. As a result, we may remove or reduce the visibility of Violent Content to ensure the safety of our users and prevent the normalization or glorification of violent actions. We also do not allow sharing Violent Content in highly visible places such as profile photos, banners or bio.

I would argue that livestreaming a government firing squad is “excessively gory” and, depending on how it’s packaged, “glorifying” violence, though there’s clearly room to argue otherwise. And I’m sure Elon will claim it’s not. The policy does do a little more of an explanation of what it considers “glorification” as well:

  • Glorification of Violence: Glorifying, praising, or celebrating acts of violence where harm occurred, including expressing gratitude or praising that someone experienced physical harm by Violent Entities. This also includes glorifying animal abuse or cruelty.

Again, I would argue the execution counts, because it is clearly celebrating an act of violence. The policy also says that it prohibits violent content “in live video” but again, I expect that to be ignored by Elon’s team.

There is one concrete area of X’s policy that is interesting:

  • Moment of Death: We may request the removal of images or videos that were taken at the point of, immediately before, or after an identifiable individual’s death, if we receive a request from their family or an authorized representative.

In theory, Hasan’s family could ask X to remove the video, and then the question is whether Elon would honor that request. And since the policy only says X “may” remove such content, it leaves plenty of wiggle room to say no.

In short, the video will likely be shared on X, and whether or not it violates the company’s policies really depends on a very subjective set of decisions.

YouTube

YouTube is the other most likely choice for streaming the execution. Here, it seems pretty clear that the execution video, on its own, would violate YouTube’s stated policy .

Violent or gory content intended to shock or disgust viewers, or content encouraging others to commit violent acts, are not allowed on YouTube.

That said, YouTube leaves itself an out in saying there’s an exception for “content that is in the public interest.”

In some cases, we may make exceptions for content with educational, documentary, scientific, or artistic context , including content that is in the public’s interest.

Looking through that linked exceptions page, the obvious hook is that YouTube lists “government proceedings” as public-interest material that may get an exception, and you can bet that’s what it would point to. But the same page lists content that’s barred from exceptions no matter the context, including “the act of decapitation.” While this isn’t quite decapitation, it’s still a pretty gruesome public execution.

Meta (Instagram / Facebook)

Zuck has spent the past couple years sucking up to Donald Trump after Trump threatened to put Zuck in jail for life. But Meta’s “ Violent and Graphic Content ” policy is the clearest of the bunch in ruling out hosting a livestream of the execution. In the list of things that it says “Do not post” is literally:

Live-streams of capital punishments.

The policy does allow still imagery of such content behind a warning screen and limited to adults, but livestreams of capital punishment are banned outright.

I don’t see any exceptions or language that Meta can wiggle out of for this, meaning that if it does allow such a livestream, it would only be either by ignoring its current policies or changing them.

TikTok

TikTok has less detail than the others in its policy , but does say they don’t allow “glorification of violence” among other things.

  • Violent and Criminal Behavior: We don’t allow threats, encouragement or glorification of violence, promotion of crime, or instructions on how to commit harmful acts.

Again, the company (now backed by Trump’s investor friends) can probably wriggle around that language and try to claim that the execution isn’t a “glorification” of violence, though it would be wrong.

Truth Social

I guess we need to consider that the Pentagon might try to post it on the president’s personal social media and propaganda site, Truth Social. Truth Social has very unhelpful terms of service and community guidelines , that do say that when you upload content you “represent and warrant” that your content isn’t violent:

your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable.

your Contributions do not depict violence, threats of violence or criminal activity.

But that is only the agreement with the user. It says nothing about whether or not the site will take such content down. In the community guidelines, it only notes that you can “report” “content that depicts violence or threat of violence,” but says nothing about whether or not that’s actually allowed.

In short, depending on how much these services want to bend over backwards (or should I say, bow down?) to appease Donald Trump and the bloodthirsty Pete Hegseth, all of them except Meta can make unfortunately credible claims that livestreaming an execution by firing squad doesn’t technically violate their policies. Meta cannot say that. I’d argue that the videos likely do violate YouTube, X, and TikTok’s policies as well, but it very much depends on subjective calls for all three.

Again, as a reminder, in the US, all of these platforms are free to set their own editorial policies, including both what to allow and what not to allow.

Remember, some of the earliest moral panic over how “bad” social media is came from US elected officials losing their minds about terrorist execution videos on YouTube . It’s kind of incredible how far we’ve come: Now the US government itself is planning to stream a gruesome execution of its own, and any platform that pushes back will likely be attacked by the president and his supporters for not being patriotic enough.

Filed Under: , , , , , , ,
Companies: facebook , instagram , meta , tiktok , truth social , twitter , x , youtube

'Ballerini Doesn't Live in Bushwick,' and More Incredible Lines From 'NCIS: New York'

hellgate
hellgatenyc.com
2026-10-09 14:07:49
Our city deserves copaganda this campy....
Original Article

This week, as I watched LL Cool J and Scott Caan converse in a car on the BQE about how they're from Queens and Bay Ridge, respectively, and that everything's changed but it's still the greatest city in the world, I couldn't help but wonder: "NCIS: New York," what took you so long?

CBS's "NCIS" is one of network television's most popular and longest-running scripted/non-animated shows of all time, bested only by "Law & Order" and "Law & Order: SVU." Like those copaganda shows, it is about solving crimes and presents its law enforcement protagonists as heroes. But unlike those shows, it mostly forgoes attempts at gritty realism in favor of absolutely absurd situations and dialogue that transcend into camp.

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

Vectorized CLZ and CTZ

Lobsters
purplesyringa.moe
2026-10-09 13:45:44
Comments...
Original Article

clz and ctz are instructions that compute the number of leading (trailing) zero bits in a fixed-size integer. They are natively supported by modern CPUs, though they are not always fast, e.g. tzcnt has a latency of 3 on Arrow Lake.

I used ctz in an FPU emulator I’m working on, but figured out how to avoid it with floating-point trickery, and I just realized that this generalizes to a vectorizable ctz polyfill in a round-about way. I also implemented clz for completeness.

clz

Let’s start with clz , the easier of the two:

fn clz(x: u32) -> u32 {
    let a = 2.0f64.powi(-970);
    32 - ((f64::from_bits(a.to_bits() | x as u64) - a).to_bits() >> 52) as u32
}

The general idea goes like this:

Floating-point exponents are biased logarithms of their values. By substituting a 32-bit number x into the mantissa of some value 2 k , we get a double representing 2 k ( 1 + 2 − 52 x ) . We can then subtract 2 k as a double to get 2 k − 52 x . Extracting the exponent gives k − 52 + 31 − clz ( x ) , from which clz can be computed with a bitwise subtraction. From that, k can be chosen such that clz behaves correctly for x = 0 .

We need 64 -bit doubles to handle 32 -bit inputs; unfortunately, this means that this trick can’t work for arbitrary 64 -bit inputs, only up to 52 bits.

Assuming the inputs and outputs are stored in u64x4 , this compiles to:

    vpbroadcastq ymm1, [rip + bias]

    vorpd ymm0, ymm0, [rip + a]
    vsubpd ymm0, ymm0, [rip + a]
    vpsrlq ymm0, ymm0, 52
    vpsubq ymm0, ymm1, ymm0

a:
    .quad 0x350000000000000, 0x350000000000000, 0x350000000000000, 0x350000000000000
bias:
    .quad 32

On my Haswell, this runs at 0.45 ns/iteration, compared to 1 ns for the scalar version. When latency-bound, the numbers rise to 2 ns vs 1 ns (but if you’re latency-bound on vectorized ctz , you’re probably doing something wrong).

Ian Qvist tested this on Alder Lake (thanks!) and got 0.29 ns/iteration, compared to 0.85 ns for the scalar version, and 1.3 ns vs 0.85 ns when latency-bound. On modern Intel CPUs, the numbers should be the same or better.

AMD CPUs make lzcnt so cheap that a scalar version will likely win. Though keep in mind that Zen CPUs support AVX-512, which has vplzcntd , so that’s an option, too.

ctz

Now for ctz :

fn ctz(x: u32) -> u32 {
    let a = f64::from_bits((0x340000100000001 ^ x as u64) ^ (x as u64 + u32::MAX as u64))
        - f64::from_bits(0x340000000000000);
    (a.to_bits() >> 52) as u32
}

We start with x ⊕︎ ( x − 1 ) to isolate the lowest set bit. ctz equals the logarithm of that value, which we determine by adding 2 k bitwise and subtracting 2 k as a double, then inspecting the exponent, which with a well-chosen k contains the unbiased ctz . We pre-mix 2 32 into the mantissa and use x + 2 32 − 1 instead of x − 1 to handle x = 0 correctly, and pre-mix 1 into the mantissa to ensure odd x generate a = 0 and not a slow subnormal. (Can you imagine how much time I spent arranging this?)

This function compiles to:

    vpxor ymm1, ymm0, [rip + c1]
    vpaddq ymm0, ymm0, [rip + u32_max]
    vpxor ymm0, ymm1, ymm0
    vsubpd ymm0, ymm0, [rip + c2]
    vpsrlq ymm0, ymm0, 52

c1:
    .qword 0x340000100000001, 0x340000100000001, 0x340000100000001, 0x340000100000001
u32_max:
    .qword 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
c2:
    .qword 0x340000000000000, 0x340000000000000, 0x340000000000000, 0x340000000000000

On Haswell, this runs at 0.49 ns/iteration and 2.3 ns when latency-bound. On Alder Lake, it’s 0.35 ns/iteration and 1.3 ns when latency-bound. The slowdown compared to clz is due to using one more instruction. It can be avoided by using vpternlogq if AVX-512 is present, but at that point you might as well run vpopcntd on (x - 1) & !x . The scalar version behaves no differently from clz .

Added later:

Nikolay Malkovsky pointed out that de Bruijn sequences offer another vectorizable approach. After some testing, I arrived at the following code:

const char table[32] = {
    0, 4, 5, 6, 11, 9, 7, 12, 15, 3, 10, 8, 14, 2, 13, 1,
    0, 4, 5, 6, 11, 9, 7, 12, 15, 3, 10, 8, 14, 2, 13, 1,
};
__m256i bit = _mm256_andnot_si256(x, _mm256_sub_epi32(x, _mm256_set1_epi32(1)));
__m256i high = _mm256_madd_epi16(
    _mm256_cmpeq_epi16(bit, _mm256_set1_epi16(-1)),
    _mm256_set1_epi16(-16)
);
__m256i index = _mm256_srli_epi32(_mm256_mullo_epi32(bit, _mm256_set1_epi32(0xf0a6f0a7)), 28);
__m256i low = _mm256_shuffle_epi8(_mm256_loadu_si256((__m256i*)table), index);
return _mm256_add_epi32(low, high);

We can’t use a true 32-byte LUT because vpshufb cannot cross 16-byte lanes. The approach I used instead is tricky to explain, but essentially we use a 16-bit de Bruijn sequence repeated twice to compute bits 0-3 of the ctz , and then add 16 or 32 depending on which halves are zeroes. Six seven 0xf0a6f0a7 is one of only four magic constants that make this work.

This takes 1 ns on Haswell ( 0.7 ns on Alder Lake), but has twice the throughput, so it may be a little faster than the FP-based approach if it helps avoid shuffling.

If you don’t need to deal with x = 0 (or want ctz ( 0 ) to be 0 and not 32 ), using

__m256i high = _mm256_and_si256(
    _mm256_cmpgt_epi32(bit, _mm256_set1_epi32(0x7fff)),
    _mm256_set1_epi32(16)
);

brings the time down to 0.82 ns.

Two Futures for LLMs in Mathematics

Lobsters
wiredream.com
2026-10-09 13:23:45
Comments...
Original Article
David G. Andersen October 08, 2026

This week, we've seen two very different approaches to LLMs for math/theoretical computer science.

In one corner, Anthropic dropped a result to Josh Alman (Columbia) and his former advisor at MIT, Virginia Williams, who are both known for having shown that matrix multiplication could be done slightly more cheaply than previously thought. They did so through very careful counting of how many operations were actually needed in various parts of the existing "laser" method of matrix multiplication, finding that you could shave off a hair here and there.

These two researchers looked at the result from Anthropic and turned it into a fully-fleshed-out paper . The new paper wasn't a matmul result directly; it was a way to use a particular flavor of matrix product to break some bounds that had held so long people were starting to build theory around their hardness, such as 3SUM:

For decades, nobody could figure out how to do 3SUM faster in sub-quadratic time, i.e., something like O( n 2 - e ) time for some value of e > 0, though we hadn't specifically proved that it needed it. This new paper showed that it doesn't. The work has a very similar feel to some of their previous matrix multiplication work, in the sense that it's also using very careful counting of operations to drop things from O( n 2 ) to O( n 1.9992 ). That beats O( n 2 ) by only a tiny hair, but that hair is important, because it means our assumptions were wrong, and a bunch of other previously-conjectured hardnesses were reduced along with it using the same technique. This is quite a big result in its subfield.

In the other corner, OpenAI dumped a repository of over 700 PDFs of highly varying quality, some with accompanying Lean proofs, some without, few with clear human review. Some of the claimed results are nearly breathtaking, if they're true. One that jumped out was about matrix multiplication, the area of expertise of the above two researchers. The straightforward way of multiplying matrices is O( n 3 ) for two square n × n matrices: You have n 2 output cell values, each of which results from the dot product of two size- n inputs (requiring n multiplies). But we've known for a while there's some redundant computation in there; that exponent, which we term omega (ω) is less than three, but it's unknown exactly what it can be. There have been a series of series of some practical and mostly theoretical optimizations that resulted in the previous state-of-the-art upper bound, the somewhat ungainly O( n 2.371177 ).

OpenAI's PDF claims to reduce ω to 2.25, or 9/4. This would be several things. First, it would be literally the largest reduction we've seen since Schönhage's reduction to 2.522 in 1981; second, the first "large" reduction at all since Coppersmith and Winograd brought things to 2.3755 in 1990. And it would be incredibly satisfying to have something that's a rational number bound of 9/4, not the least because it seems more likely to me to intuitively illustrate some missed structure in the problem.

Allow me to illustrate these papers with a few snippets from the introductory material of the papers. Take a peek and read them, asking if you understand what they're saying. From Alman and Williams:

3SUM: Given n numbers, decide whether three of them sum to 0. This is a classical problem with a long history, and it is central to computational geometry (see [GO95]). Despite many decades of research, the O( n 2 )-time algorithm taught in algorithms classes has only been sped up by polylogarithmic factors [BDP08, GP18, Cha20].

From OpenAI's pdf dump:

The exponent ω of matrix multiplication over ℂ is the infimum of the real numbers τ such that, for every ε > 0, two n × n matrices can be multiplied in O ε ( n τ + ε ) scalar arithmetic operations. The dimension n tends to infinity; the algorithm and its constants may depend on ε.

I mean, true, but this is not how you'd write the first paragraph of a paper written for humans. Contrast that with one of Williams' human-written papers about the same topic:

Multiplication of matrices is a fundamental algebraic primitive with applications throughout computer science and beyond. The study of its algorithmic complexity has been a vibrant area in theoretical computer science and mathematics ever since Strassen’s [Str69] 1969 discovery that the rank of 2 by 2 matrix multiplication is 7 (and not 8), leading to the first truly subcubic, O(n2.81)-time algorithm for multiplying n × n matrices. Fifty-five years later, researchers are still attempting to lower the exponent ω, defined as the smallest real number for which n × n matrices can be multiplied in O(nω+ε) time for all ε > 0.

I can read that! I like it! I want to read more!

And the OpenAI paper is rife with things I find confusing. For example, consider this line:

We write products either by juxtaposition or by ⊗. The zero tensor is 0, the scalar tensor xyz is 1, and the integer m ≥ 0 denotes the direct sum of m copies of 1. Thus mA = A ⊕ m .

I think this is intentional use of the notation, but as a human, when you introduce a symbol to me and then use a tiny-font subtly different symbol in the next line that you've never introduced, my head hurts a little. (Note that they introduced circled-times and then used circled-plus in their explanation of the integer-matrix product). And their notation there is confusing overall to me.

This is one example of many, and probably one of the better-confidence ones at that, given that at least this one has a Lean version that proves something (what it proves I am not yet certain—does it prove the 2.25 result? That's going to take some time and expert evaluation). The internet is aflutter with people finding flaws in these papers; three of them have already been withdrawn due to errors that rendered them invalid. The writing in these PDFs is very AI-slop-feeling.

I like to point out that when you write, you're responsible for making sure your audience understands what you've written. There's one of you putting in some time, and potentially thousands of people reading what you've written. Their collective effort to understand you is far higher than the time it takes you to be clear.

And the same thing applies here, but perhaps at 100x magnification: Thousands of people will have to waste time reading this dump and possibly trying to determine if it's correct, and that's really hard work. That time would have been much better spent by having an expert or two review, revise, and present the material cleanly before throwing an unfiltered dump at the world.

We've seen two ways of having your internal advanced AI interact with the world of research, and I know which one I prefer: The one that produced a human-centered result that was informative and interesting to read and where I have much higher confidence I didn't waste my time reading something broken.

Unpatched AhsayCBS flaws exploited to deploy webshells, mine crypto

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 13:17:23
Threat actors are exploiting one critical and one medium-severity vulnerability still unpatched in the AhsayCBS backup management platform to deploy webshells and cryptocurrency miners. [...]...
Original Article

Unpatched AhsayCBS flaws exploited to deploy webshells, mine crypto

Threat actors are exploiting one critical and one medium-severity vulnerability still unpatched in the AhsayCBS backup management platform to deploy webshells and cryptocurrency miners.

AhsayCBS is typically used by managed service providers (MSPs) and system integrators. The malicious activity was observed on October 7, and targeted at least five organizations.

The two security issues exploited in attacks are tracked as CVE-2026-105133 , an authentication bypass vulnerability that has a public exploit, and CVE-2026-105134, which can be leveraged for OS command injection.

Both vulnerabilities are reported as fixed in AhsayCBS 10.3.2, but researchers at managed detection and response company (MDR) Huntress found that they also affect Ahsay 10.3.4, currently the latest version.

"After further investigation, Huntress has determined that Ahsay 10.3.4 is also affected by these vulnerabilities," Huntress says in an update today.

In the observed attacks, the threat actor chained the two vulnerabilities, CVE-2026-105133 first to bypass authentication and then CVE-2026-105134 for code execution.

After gaining access, Huntress observed the attacker perform reconnaissance, deploy Java Server Page (JSP) webshells, and download the XMRig miner disguised as edge.exe.

The miner persists on the host via a service named ‘MicrosoftEdgeUpdateSvc,’ which runs msedge.exe, identified by Huntress as a modified copy of the legitimate Non-Sucking Service Manager (NSSM) utility.

A PowerShell file (Taskgmr.ps1) that Huntress believes to be an AI-assisted script conceals mining activity by stopping the service when Task Manager opens and restarting it when Task Manager closes.

The script also terminates Task Manager at 6 p.m. local time or if it remains open for more than an hour overnight.

In one case, the attacker also deployed the vulnerable WinRing0x64.sys driver, likely in an attempt to unlock more hardware resources for the miner.

BleepingComputer has contacted AhsayCBS to ask about its plans to fix the two flaws, but we have not heard back as of publication.

Until a patch is available, Huntress recommends that system administrators restrict access to the AhsayCBS management interface to trusted IP addresses only, and investigate signs of compromise.

If a compromise is confirmed, administrators should perform a full restore of the host from a safe backup, because the attacker may have installed additional backdoors for prolonged persistence.

Huntress has also provided indicators of compromise (IoCs) for this activity, along with four Sigma rules to help defenders detect it.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Python 3.15 released

Linux Weekly News
lwn.net
2026-10-09 13:15:44
Version 3.15 of the Python programming language has been released. Notable changes in this release include the addition of the sentinel and frozendict built-in types, the use of UTF-8 encoding by default, package start-up configuration files, as well as improvements in the experimental JIT compiler....
Original Article

[Posted October 9, 2026 by jzb]

Version 3.15 of the Python programming language has been released. Notable changes in this release include the addition of the sentinel and frozendict built-in types, the use of UTF-8 encoding by default, package start-up configuration files , as well as improvements in the experimental JIT compiler . See the " What's new in Python 3.15 " article for an in-depth look at new features in this release, and the changelog for a full list of changes.



to post comments

M7.6 Earthquake in Panama

Hacker News
earthquake.usgs.gov
2026-10-09 14:22:20
Comments...
Original Article

The Earthquake Event Page application supports most recent browsers, view supported browsers . Or, try our Real-time Notifications, Feeds, and Web Services .

Ideas aren't getting harder to find, anyone who tells you otherwise is a coward

Hacker News
www.experimental-history.com
2026-10-09 14:16:03
Comments...
Original Article
Photo cred: my dad

I’ve worked with a lot of research assistants over the years, and at some point we inevitably have The Talk: should they get a PhD? I was recently having The Talk with one particularly distraught student, who was worried her ideas aren’t good enough. “Maybe I’m not cut out for it,” she told me, “or maybe all of the easy ideas have already been done.”

Like her, I’ve worried that I was born too late and all the low-hanging fruit was picked before I got here. Fifty years ago, you could get a million citations just for showing that people like their own team the best , that kids will do something that they watch other people do , or that people think other people agree with them . Everything obvious has been done, and now it’s up to poor schmucks like me to figure out the hard stuff.

Lots of people who think hard about the progress of science seem to come to the same conclusion:

Scott Alexander :

All the low-hanging fruit has already been picked […] it’s almost inconceivable that it could ever be otherwise.

Holden Karnofsky :

[I]deas naturally get harder to find over time, and we should expect art and science to keep slowing down by default.

Dean Keith Simonton :

The days when a doctoral student could be the sole author of four revolutionary papers while working full time as an assistant examiner at a patent office — as Einstein did in 1905 — are probably long gone. Natural sciences have become so big, and the knowledge base so complex and specialized, that much of the cutting-edge work these days tends to emerge from large, well-funded collaborative teams involving many contributors.

Everyone agrees: we must resign ourselves either to tweaking what came before or spending our lives descending deeper and deeper into the idea mines, searching for the few nuggets of originality left.

I once found this idea seductive. Now I find it outrageous. It’s not just because it’s wrong; it’s an affront to the human spirit. People only discover stuff when they think it’s worth trying, and there have been entire eras of human history where people didn’t think it was worth trying. A meme like “ideas are getting harder to find” could drive the desire to discover back into hiding again, fulfilling its own abominable prophecy.

Somebody needs to defend the belief that mere mortals can still discover useful truths, and it’s me. I’m here to be that somebody.

If we’re going to entertain, say, defunding theoretical physics on the grounds that there’s just no more useful physics to do, we should at least ask: could any cognitive biases be at play here?

I can see two. First, all ideas seem obvious in retrospect . Heliocentrism, germ theory, and randomized controlled trials look like no-brainers once someone explains them to you, but they took people thousands of years to figure out. ("E = mc^2? That’s just three letters and a number!”)

Second, it’s always going to feel hard to think of new ideas. What should we do next in physics, biology, music, or film? Gosh, I don’t know! I’d have to think pretty hard, just like everybody before me, and I might not come up with anything, just like almost everybody before me.

So if past ideas seem obvious and future ideas seem obscure, it’s tempting to conclude we live at the inflection point where ideas suddenly get harder to find. And maybe we do. But we’d feel that way even if ideas weren’t getting harder to find, and that should make us a little skeptical.

If our ancestors also thought they were running out of ideas and were wrong, then we should be wary about thinking the same thing. Our ancestors did think that, and they were wrong.

For instance, physics was apparently about to end in the 1890s :

Max Planck later remembered a professor telling him that during this period, “the system as a whole stood there fairly secured, and theoretical physics approached visibly that degree of perfection which, for example, geometry has had already for centuries.”

The British scientist William Cecil Dampier recalled his apprenticeship at Cambridge in the 1890s: “It seemed as though the main framework had been put together once for all, and that little remained to be done but to measure physical constants to the increased accuracy represented by another decimal place.”

British physicist J. J. Thomson: “All that was left was to alter a decimal or two in some physical constant.”

American physicist Albert A. Michelson: “Our future discoveries must be looked for in the sixth place of decimals.”

Surgery was nearing perfection in 1873 :

There cannot always be fresh fields for conquest by the knife. There must be portions of the human frame that will ever remain sacred from its intrusion – at least, in the surgeon’s hand. That we have nearly, if not quite, reached these final limits there can be little question.

Psychology was on track to wrap up before 1920 , according to the behaviorist John Watson:

I believe we can write a psychology […] and never go back upon our definition: never use the terms consciousness, mental states, mind, content, introspectively verifiable, imagery, and the like. I believe that we can do it in a few years…

It was only going to take a couple of dudes and a summer to solve some of the fundamental problems in artificial intelligence:

We propose that a 2-month, 10-man study of artificial intelligence be carried out during the summer of 1956 at Dartmouth College in Hanover, New Hampshire. The study is to proceed on the basis of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it. An attempt will be made to find how to make machines use language, form abstractions and concepts, solve kinds of problems now reserved for humans, and improve themselves. We think that a significant advance can be made in one or more of these problems if a carefully selected group of scientists work on it together for a summer.

(They didn’t solve everything but they did start the field of artificial intelligence , so it was still a pretty productive summer, all things considered.)

When I wrote recently about how all popular stuff now comes from just a few franchises and superstars , one of the responses on Twitter was:

X avatar for @SquashedBox

Glyn Hughes @SquashedBox

I suppose the day has to come sooner or later when we've used up all the new ideas.

X avatar for @a_m_mastroianni

Adam Mastroianni @a_m_mastroianni

Chart-topping original movies have gone extinct. People have a lot of explanations for this, but they're all incomplete because they don't realize the same thing is happening everywhere. An oligopoly has conquered all of popular culture. https://t.co/9oVoSIlNdj

7:29 PM · May 4, 2022

1 Like

But there’s more original content than ever; it’s only popular content that's been dominated by reruns. Clearly, it’s easy to rush to the conclusion that we’re close to the end of ideas, and easy to be wrong.

Pessimists seem to think that the universe was born with a long list of discoveries, ordered from easy to hard, like this:

As time goes on, the thinking goes, more and more of the easy discoveries get crossed off the list, leaving only the hard ones. But knowledge doesn’t work like this at all. Every discovery opens up additional discoveries to make:

Which in turn lead to more discoveries:

And so on.

You might worry that this means discovery gets harder over time because you have to follow a chain to its end before you can add a new link. Fortunately:

We can all agree that discovering fire was pretty rad. The first humans to do it probably spent a lot of time learning which kind of kindling was best, how to nurse a spark into a flame, and what sorts of fires were best for cooking vs. heating. They must have painstakingly passed this knowledge from generation to generation, and youngsters had to practice making lots of fires before they got it right.

But in 2022, I don’t have to do any of that. When I need to cook, I turn on the stove and it makes fire for me. Or I tap a button on my phone and a human makes food for me using their own fire, then they bring it to me. When it gets cold, a fire in the basement turns on, heats up some water, and then the water flows up into the room where I live and makes me warm, too. I don’t really know how any of this works. All the fire-knowledge I’ll ever need is encoded into the innovations that surround me.

This is how science works, too. To do science, you don’t need to start with the dawn of all human knowledge and then work forward. You start with the current state of knowledge and go from there. Learning the history of science is helpful for shaping your intuitions and giving you perspective, but you don’t actually have to read Darwin, for example, to do evolutionary biology.

That’s why I’m puzzled by the claim that scientists must labor under an ever-increasing burden of knowledge . The author of that paper writes: “If one is to stand on the shoulders of giants, one must first climb up their backs, and the greater the body of knowledge, the harder this climb becomes.” This suggests that if you peek into PhD programs, you’ll see lots of students bent over their books, desperately trying to learn everything that’s come before so they can start their own projects. “I can’t do any physics yet,” you might hear them lament. "I’m only up to Huygens !” Instead, you’ll see PhD students doing original research from Day 1—and often long before. Indeed, many students start doing more interesting work once they stop looking at lots of previous work, as it finally frees them from imitating other people and searching for “gaps in the literature,” two strategies that are unlikely to yield anything interesting.

The world heats up. Stars explode. Species invade. Tectonic plates shift around. The internet upends society. Wars break out, diseases spread, and an ambiguously colored dress turns brother against brother. All of this demands explanation, and we’re the ones who get to explain it, because all the scientists of yore are dead. We probably won’t get far before a whole new deluge of facts arrive, or before we become the scientists of yore.

It turns out many scientific studies don’t work when you try them again. Lots of cancer studies may be bunk . A coding glitch may have ruined 150 chemistry papers . When the premier journal in social psychology publishes evidence of ESP , you know something is amiss.

This chaos is a ladder for young scientists. We thought all the juicy, low-hanging fruit had been picked, but now it’s back on the tree, ripe and ready for us to snatch. When we’re standing on the shoulders of giants and they start buckling underneath us, that’s our shot to become the giants .

Professors delight in telling graduate students that they had to do their data analysis with punch cards, write their dissertations on typewriters, and call up strangers on the phone to ask them to participate in studies. Now you can analyze data by pointing and clicking, write your dissertation in a word processor that fixes your typos for you, and run 1,000 participants in an afternoon on Amazon Mechanical Turk. We’ve got electron microscopes and automatic pipetters and AI-powered transcription and a million other tools that allow us to do research that was impossible or unfeasible even a decade ago. So even if we’re picking the lowest-hanging fruit, we’re standing on an ever-ascending scissor lift.

I’m a psychologist, and I understand that most people aren’t thinking about psychology when they fret about humans running out of ideas, and that psychology hasn’t been a formal discipline as long as the natural sciences have. Still, we’ve certainly been thinking about minds and behavior for a very long time, so if ideas get harder to discover over time, it should be pretty hard to do psychology these days.

Let me tell you: it’s not. I’ve published two papers in what most scientists consider the third-most prestigious journal in all of science. (I think journals are bad, but that’s a story for a different day.) The idea behind the first paper was, quite literally, “ Do conversations end when people want them to? ” The idea behind the second paper was “ Do people know how public opinion has changed? ” These ideas are so low-hanging you could trip over them. My conversation studies could have been run a hundred years ago. My public opinion studies could only have been run recently because we haven’t been measuring public opinion all that long. So one low-hanging idea went unpicked for a century, and another could only have been picked in the last few years.

The hard part of these ideas wasn’t coming up with them; it was picking them out of a bunch of worse ideas. According to my notes, I pitched 59 research ideas to my advisor over the first two years of my PhD. Only two of these––3%!––became research projects. Of the remaining 97% that went nowhere, only 26% were abandoned because we found out they had been done before. (There’s no guarantee we would have continued them otherwise; finding a previous paper was just a good reason to move on.) Most of the rejected ideas just weren’t that interesting.

If you’re looking for low-hanging fruit in biology and medicine, see Slime Mold Time Mold . Their contaminant theory of obesity may be revolutionary, and they’ve told me before that their work would have been almost impossible even ten years ago, because most of the sources they use have only recently been published or posted online—that is, the fruit just got lowered. Right now they’re recruiting people to eat nothing but potatoes , the fruit so low-hanging it’s literally underground.

The abundance of ideas is even more obvious outside science. If ideas were getting harder to find, you might expect that the most successful people are the ones who have discovered something really complicated. Instead, Jeff Bezos was like “what if we sold stuff on the internet” and now he’s the second-richest guy in the world. Zhang Yiming was like “what if people watched short videos,” invented TikTok, and now he’s got $50 billion . Doja Cat was like “ bitch, I’m a cow ” and she just won a few Billboard awards and bought a house worth $2.2 million .

All of this makes me very skeptical that ideas are getting harder to find. Nobody has ever shown direct evidence to the contrary, and I’m not even sure what that evidence would look like. Instead, most of the research on the topic—including the appropriately-titled “ Are Ideas Getting Harder to Find? ”—simply points out that while the number of researchers has increased, the output per researcher has gone down. I have a lot of objections to this paper, but they’re a little bit technical so I’ve put them in the Appendix below. Suffice it to say that a) their equations and measures seem dubious; b) their results are consistent with other explanations; and c) it actually seems pretty benign and unsurprising that as you add more people to a task, the output per person falls.

I don’t think we’ll actually get far by arguing over the data, because we’ve got the underlying model all wrong. The metaphors we use to describe scientific progress— foraging! mining! drilling! —all assume that each generation of scientists simply does the same thing as the previous generation, just with more complexity and precision. Our ancestors mined the surface; we mine the depths.

That doesn’t seem quite right. Democritus and Einstein both contributed to physics, but one made claims with words and the other made claims with numbers. Sigmund Freud and Lee Ross were both great psychologists, but one did cocaine and free-associated while the other put people in situations and recorded what they did. Einstein and Ross didn’t simply forage farther or drill deeper than Democritus and Freud; they did something fundamentally different .

You don’t even have to look across thousands of years to see these qualitative shifts. Twenty years ago it was perfectly acceptable to run a psychology experiment that had thirty participants in each of four conditions, drop a few outliers, do a bunch of statistical tests until one of them spits out p < .05, and publish the results. Now we know how easy it is to get statistically significant results from a few seemingly-innocuous choices like these, and publishing that same paper today would get you laughed off Twitter. I predict—well, I hope!—similar shifts will happen in fields like biology, where it will become ridiculous to make strong claims about humans from lab mice , and in neuroscience, where it will become ridiculous to put people in a big magnetic tube, look at where their brains light up, and claim you’ve discovered consciousness, or something.

Science is not like foraging, mining, or drilling, where we keep doing the same thing and it keeps getting harder. It’s more like discovering an elevator left for us by aliens. At first we have no idea how it works; we get in and push a button, and now we’re climbing dozens of floors in a matter of seconds. We excitedly calculate that, at this rate, we’ll reach outer space in a few hours!

But at some point, the elevator stops. We try everything, but we can’t get it to go any higher. Eventually we figure out how elevators work and we start building even taller elevators. Another golden age ensues—there’s taller elevators every year!

But as the elevators get taller, the engineering gets more complicated. We need more elaborate support structures and stronger materials just to keep the elevators from toppling over. Pessimists start proclaiming that we’ll never reach the stars, or even the stratosphere. The elevators simply can’t reach that high!

The way to go higher, of course, is not to build taller elevators. It’s to invent hot air balloons. Once we discover lighter-than-air travel, it’s easy to fly as high as the highest elevator, and far above it. And when the balloons can’t go any higher, the solution is helicopters. And when the helicopters can’t go any higher, the solution is rocket ships. And when the rocket ships can’t go any higher, the solution is something we haven’t invented yet. No doubt these space conveyances will be complicated, but so were elevators before we knew how they worked.

This metaphor captures an important truth that other metaphors don’t: not every paradigm shift is going to be equally useful to the average person, or equally impactful on the same dimension. People may point out that while improving elevators helps us build taller apartment buildings, inventing hot air balloons does not. “Science is providing diminishing returns to housing,” they say gravely. That’s true, but once you can build really tall buildings, limits on housing quickly become political rather than technological. For example, 40% of buildings in Manhattan could not be built today because of increasingly strict zoning requirements. (Some of them would be forbidden because they're too tall and contain too much housing !) Once we solve the scientific part of a practical problem, we can’t continue to measure scientific progress by how well we’re doing on that problem.

Thomas Kuhn said something like this sixty years ago . He pointed out that scientific fields tend to putter along until people start noticing problems with the prevailing paradigm (“The planets don’t move like the theory says they should!”). Eventually the problems get too big to ignore and the whole field flies into crisis, and things only settle down when someone proposes a new paradigm that can make sense of everything. Then the cycle repeats.

Two key ingredients in scientific revolutions, then, are noticing problems and taking them seriously . Kuhn assumed scientists do both of those things naturally, and maybe that was true in 1962. But it doesn’t have to be. As fields formalize, they can get very good at ignoring and suppressing problems, delaying revolutions indefinitely.

One way professional science does this is by preventing divergent thinkers from entering in the first place. The usual way of becoming a scientist is to become a professor, ideally at a wealthy institution that can furnish you with lots of science gizmos and attractive letterhead for your grant applications.

The path to that prestigious professorship has become ludicrously competitive. Harvard, the ideal first step in an academic career, accepted just 3.19% of undergraduate applicants last year, down from 7.1% in 2012. Harvard doesn't publish overall PhD acceptance rates—the next step on the academic ladder—but the engineering school does and it’s a mere 7% . Only 15%-30% of PhDs who make it through this gauntlet and still want a permanent academic job will actually get one, and very few will be at the fancy places.

To win one of these coveted positions, then, you need to do everything exactly right from your freshman year of high school onward: get good grades, garner strong recommendations, work in the right labs, publish papers in prestigious places, never make anybody mad, and never take a detour or a break. (I occasionally get emails from high schoolers begging to work in my lab so they can get their name on a paper.) Professors who got their jobs decades ago tell us it wasn’t like this . In this hypercompetitive environment, the most fervent careerists will outcompete everybody else. And fervent careerists don’t produce revolutionary science.

The other way professional science can prevent problems from accruing is by simply refusing to publish them. Pre-publication peer review has only been popular for about fifty years—the prestigious medical journal The Lancet only started reviewing papers in 1976 . If your paper or grant application threatens to undermine Dr. Tweedledum’s theory, there’s a good chance Dr. Tweedledum is going to review it, and they’re not inclined to be kind. Everybody knows this, of course, so they don't even try. You need publications and grants to survive, so it’s much better to work on something you know will be publishable at the end. This also rules out revolutionary science.

Professionalized science, then, may force us to keep building elevators even though we can’t get them to go any higher. Weirdos with crazy schemes for hot air balloons simply don’t get jobs; after all, they don’t even have a degree in elevators! Anyone lucky enough to stay in the pipeline has to apprentice under an elevator-builder, so building elevators is all they’ll ever know. Besides, everyone knows that you can’t get helicopter research published in the Journal of Elevators , and the National Elevator Foundation will never give you money to build one. And our esteemed elders assure us that elevators have an excellent track record and the recent slowdown in elevator progress is only because it’s harder to build taller elevators, so really what’s needed is more elevator funding. But even then, they warn, it won’t ever be possible to reach the stratosphere, let alone outer space. We must resign ourselves to looking for discoveries in the sixth place of decimals.

“Ideas are getting harder to find” is a pretty bleak thing to believe. It says, “Look around the world. This is pretty much as good as it gets; the returns start diminishing from here. All the problems you see are unlikely to be solved anytime soon, so you better get used to them.” Why would anyone agree to such a thing without putting up a fight?

I think, deep down, part of us wants to believe it, because pessimism is really a clever excuse for cowardice. If you believe people are evil, you can be excused from ever trying to befriend them and maybe being rejected. If you believe the world is stacked against you, nobody can blame you for always playing it safe. And if the easy ideas have already been taken, you can’t be expected to come up with anything new.

I don’t blame people for using pessimism as an opiate; we could all use some relief right now. Wages are stagnant, inequality is rising, and if you don’t have a house yet, good luck buying one. The government is sometimes run by people you dislike; the rest of the time it’s run by people you hate. People are dying of preventable diseases while other people are launching cars into space. Everything’s on fire and nobody’s doing anything about it. This doesn’t seem like a world where much is possible, so why not lower your expectations?

But if we want a better world, we have to believe it’s possible to create one. And that takes courage, because if you truly believe in a better world, you have to do something about it. You don’t get to smugly smirk as the ship sinks; you have to start pumping the water out. Smirking seems easier than pumping at first, but pumping turns out to be really fun. You start to feel useful. You make friends with the other people trying to keep the boat afloat. You stop caring about all the people who say what you’re doing will never work. Ultimately, pumping is way easier than smirking, and it feels better too. Optimism cures pain; pessimism, like painkillers, merely dulls it.

The way I see it, if you want to write a song the world hasn’t heard before, you have two choices. You can spend your time calculating how there’s only a finite amount of different melodies, so eventually humans will run out of songs to write, so why bother. Or you can pick up a guitar and play .

This paper by Bloom, Jones, Van Reenen, and Webb claims that ideas are getting harder to find. They summarize their argument like this:

There’s something very strange about this equation. It implies that the only way to get negative economic growth—that is, a recession—is for either research output or the number of researchers to be negative, which seems unlikely to happen. But if both are negative, economic growth is positive! Clearly, the relationship between researchers, productivity, and economic growth is a lot more complicated, and that makes me doubt that economic measures do a good job capturing the progress of science.

I’ve got three other gripes with this paper. First, it casually swaps correlation and causality, assuming that increasing numbers of researchers have been necessary for maintaining the same level of productivity. For instance:

...this growth has been achieved by engaging an ever-growing number of researchers to push Moore’s Law forward. In particular, the number of researchers required to double chip density today is more than 18 times larger than the number required in the early 1970s. At least as far as semiconductors are concerned, ideas are getting harder to find.

This isn’t evidence that making better computer chips required additional researchers. We don’t know what the growth rate would have been if we had kept the number of researchers the same.

My second gripe is that the theory seems to explain too much. The authors find research productivity slowing down everywhere they look, which they interpret as robust evidence for “ideas getting harder to find.” Even if ideas really were finite and get harder to find over time, should we really expect that to be happening in every single field in this exact time period ? There isn’t a single discipline where some breakthrough led to a period of increased productivity? Some of these fields, remember, are way younger than others. Shouldn’t we expect some of them to still have lots of easy ideas left, and others to have fully entered their twilight stage, where there are only extremely hard ideas remaining? Science has been going on for a while, so why should this be happening only in our lifetimes, and not fifty years before or after? This seems like a pretty extraordinary coincidence.

Which brings me to my final gripe: the paper interprets any drop in research productivity as “ideas getting harder to find.” But that’s just one explanation; there are lots of plausible alternatives. Ben Southwood suggests it may be because industrial labs were replaced with less efficient academic departments, or because geniuses don’t go into research anymore, or because lead poisoning is making us dumber. Jay Bhattacharya and Mikko Packalen think it’s because scientists have become obsessed with citations , which leads them to do incremental rather than revolutionary work. They illustrate their theory with this extremely charming figure:

At least everybody’s still smiling!

These explanations sound plausible to me. And I’d go even further. Above a pretty low threshold, we should expect per capita productivity to drop whenever we add more people.

Say you get two guys to remodel your kitchen, and they tell you they can do it in two weeks. “Perfect,” you say. “I’ll just hire 2000 guys, and the job will be done in about 20 minutes!”

That won’t work, of course, for all sorts of reasons. (Though it does make a good episode of Nathan for You .) You can’t fit that many people in your kitchen—even 20 guys would be bumping into each other all the time. It’s unlikely that the 2000th contractor you hire is going to be as good as the first. Working with that many people requires lots of management and planning. The work can’t be done entirely in parallel—you can only hang the light fixtures after the wiring is done, for example. And some things simply can’t be sped up: paint just takes a while to dry, no matter how many people are waiting around.

Some of the same problems may arise in science. It takes a lot of work to manage lots of researchers, which is why people who lead big labs today spend much of their time being CEOs, fundraisers, and human resources managers rather than scientists. A few individuals may disproportionately drive progress, so adding researchers might actually decrease progress per capita. Some fields may be stymied until progress is made in other fields. And some science simply can’t be sped up: humans age, bacteria multiply, and light waves travel at the same rates no matter how many people are studying them.

Plus, researchers have lots of perverse incentives that remodelers don’t. The remodelers all want the same thing and are willing to follow the same plan and take direction from a supervisor. Researchers, on the other hand, compete with each other. They might steal each other’s ideas, or purposefully tank each other’s papers and grant proposals. Their jobs depend on them looking productive, so they pump out pointless papers to lengthen their CVs. These problems only grow as researchers multiply and the field gets more competitive.

That’s why I wouldn’t find it very surprising if per capita research output has dropped as the number of researchers has increased. It isn’t convincing evidence that ideas are getting harder to find. I still think we have a big problem, but it’s a solvable social problem, rather than an unsolvable scientific problem.

Show HN: See *almost* any carriers phone settings

Hacker News
carrierexplode.com
2026-10-09 14:10:55
Comments...
Original Article
News

carrier-explode 2.0 is out with a much improved backend. We're still working on our decoders, please contribute :)

About

Carrier settings from iPhone, Pixel and Galaxy firmware, decoded and compared.

Look up a carrier 's APNs, VoLTE, Wi-Fi Calling and 5G on each phone. Pick the features you need and see which carriers have them. Compare any two versions or carriers, and see what each build changed.

Get it all as JSON from the API , or as a daily CC0 dataset . The wiki explains each format.

Show HN: The rarest tech books and docs you've probably never read

Hacker News
readrare.com
2026-10-09 13:39:44
Comments...
Original Article
Read Rare Submit a rare one

Pick one off the shelf. Free to read or borrow.

The index

45 internal memos, leaked handbooks and forgotten books from the people who built Apple, Intel, Google, Netflix and Facebook. Every one is free to read or borrow.

Documents

  1. Word for Windows Postmortem Peter Jackson, Microsoft 1989
  2. Letter to See's Candy Warren Buffett 1972
  3. Intel Convertible Debentures Memo Noyce, Moore & Rock 1968
  4. The Apple Marketing Philosophy Mike Markkula 1977
  5. The YouTube Investment Memo Roelof Botha, Sequoia 2005
  6. The Instagram Emails Mark Zuckerberg 2012
  7. Thoughts on Messenger Mark Zuckerberg 2014
  8. Road Kill on the Information Highway Nathan Myhrvold, Microsoft 1993
  9. “Holy War with Google” Steve Jobs 2010
  10. The Tinkerings of Robert Noyce Tom Wolfe, Esquire 1983
  11. The Eternal Pursuit of Unhappiness Ogilvy & Mather 2009
  12. The Little Red Book Facebook 2012
  13. Ilya Sutskever's Deposition Ilya Sutskever 2025
  14. The OpenAI Founding Emails Musk, Altman, Sutskever & Brockman 2015
  15. The Internet Tidal Wave Bill Gates 1995
  16. The Peanut Butter Manifesto Brad Garlinghouse, Yahoo 2006
  17. Distributed Computing Manifesto Amazon 1998
  18. Information Management: A Proposal Tim Berners-Lee, CERN 1989
  19. The Buffett Partnership Letters Warren Buffett 1957
  20. R.I.P. Good Times Sequoia Capital 2008
  21. The “Burning Platform” Memo Stephen Elop, Nokia 2011
  22. Stevey's Google Platforms Rant Steve Yegge 2011
  23. How to Succeed in MrBeast Production MrBeast 2024
  24. We Have No Moat, And Neither Does OpenAI Google (leaked) 2023
  25. Netflix Culture Deck Reed Hastings 2009

Books

  1. DTV Michael Moritz 2020
  2. Distant Force George A. Roberts 2007
  3. The Power of Fastenal People Robert A. Kierlin 1997
  4. Tandy's Money Machine Irvin Farman 1992
  5. Startup: A Silicon Valley Adventure Jerry Kaplan 1995
  6. Estée: A Success Story Estée Lauder 1985
  7. Kelly: More Than My Share of It All Clarence “Kelly” Johnson 1985
  8. Insisting on the Impossible Victor K. McElheny 1998
  9. Not for Bread Alone Konosuke Matsushita 1984
  10. Fumbling the Future Douglas K. Smith & Robert C. Alexander 1988
  11. Hard Drive James Wallace & Jim Erickson 1992
  12. Odyssey: Pepsi to Apple John Sculley 1987
  13. Managing Harold Geneen 1984
  14. Made in Japan Akio Morita 1986
  15. A Business and Its Beliefs Thomas J. Watson Jr. 1963
  16. Plain Talk Ken Iverson 1997
  17. Random Reminiscences of Men and Events John D. Rockefeller 1909
  18. Father, Son & Co. Thomas J. Watson Jr. 1990
  19. Hardball George Stalk & Rob Lachenauer 2004
  20. The HP Way David Packard 1995

Scam American companies are using to manipulate ingredient gets listed first

Hacker News
twitter.com
2026-10-09 13:35:40
Comments...
Original Article

There is a scam American companies are using to manipulate what ingredient gets listed as the first main ingredient on products Take Smuckers, strawberries is the first ingredient. So you would think strawberries is the main primary ingredient, but that’s not true American companies are using a food formulation technique known as ‘ingredient splitting’ For Smuckers, they divide the sweeteners up into 3 different ingredients. That way, each of them weigh less This allows the word strawberries to be listed on the label as the first ingredient, giving the impression that it's mostly strawberries. In reality, it's mostly sugar. This is a scam. It’s outright manipulation of our system and lying to customers Ingredients splitting is a real labeling tactic, and it is legal. It’s allowed by the FDA I included 10 more popular American foods where this same “ingredients slitting” scam tactic is being used at the end of the video

In Memory of Deno

Hacker News
orgsoft.org
2026-10-09 13:33:07
Comments...
Original Article

Today we learned that Deno, the user-friendly Javascript runtime & development environment, was acquired by Cloudflare and will be shut down over the coming year.

Deno was my favorite programming experience in over 20 years of software development. Its ease-of-use, security model, portability, and overall philosophy struck a chord with me and some of my close developer friends. Compared to Python, C++, Node.JS, PHP, Java, and other languages I've used, nothing came close.

For example, you could just write deno run somefile.js and it would just work . No painful setup, configuration, or compilation steps.

You could even run scripts from anywhere on the internet: deno run https://example.com/somefile.js . Sounds unsafe? Not quite! Every script runs in a browser-like sandbox that prevents network, file, etc. access unless granted.

Over the past few years, my team & I built a business almost entirely on Deno. We developed products used by 10,000's of users with it. We contributed open-source libraries , and built on top of Deno Deploy , Deno Sandboxes , and Fresh .

Alas, good things must come to an end. In this case, the writing was on the wall. The Deno company started with a tenuous business model. As we've seen with many venture capital-backed tech companies, this often leads to unfortunate trade-offs for the founders & end-users. Inevitable as it may be, this moment feels like mourning.

Fortunately, the total disruption is limited. Migrating back to Node or to Bun from Deno is straightforward. Deno never had strong lock-in effects. Even less so with AI today.

Overall, I'm grateful for what Ryan Dahl–the founder of Deno–and the incredible team was able to accomplish over its life. Their commitment to open-source, easy-to-use, secure, and high performance software is admirable.

While Deno may fade away, the impact its had–on me, the overall Javascript ecosystem, and the millions of people downstream–will live on forever.

Thanks for reading. We're Organic Software: artists, engineers, and designers building technology that helps you flourish.

Subscribe to receive occasional, carefully written updates from us.

[$] Adding kernel control-flow-integrity checking to GCC

Linux Weekly News
lwn.net
2026-10-09 13:06:12
While many developers are struggling to keep up with the flood of vulnerability reports, others are still focused on preventing those reports from happening in the first place. Control-flow integrity (CFI) is the term for preventing (or at least detecting) exploits that divert the flow of control f...
Original Article
The page you have tried to view ( Adding kernel control-flow-integrity checking to GCC ) 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 October 22, 2026)

TypeSafe a Raises $870M at a $7.5B

Hacker News
typesafe.ai
2026-10-09 13:02:31
Comments...
Original Article

TL;DR we raised $$$ and we’re going to make sure it shows up as benefits to y’all 🫶

We’ve raised a really big series A¹ led by Andreessen Horowitz , with participation from Sequoia Capital, existing investor DCVC, and the tech illuminati (aka a bunch of the best angel investors).

We find fundraising announcements incredibly boring, so we want to be straightforward with what this means for all of you…

For developers

  • We intend to take all of the things you love about Jev to the extreme

  • There will be even more machine-native models

  • And we’ll be providing everything else to be the best infrastructure for building smart software

For businesses

  • A third of the Fortune 500 are getting their Jev on

  • We’ve saved customers millions of dollars in production already

  • We’ll be adding all the enterprise features you’ve been asking us for

For potential recruits

For everyone: We care so much about making AI that actually works, and we’re so excited to be interacting with all of you. We’ve changed the path of AI, and we intend to keep cooking.

______

1 $870 million at a $7.5B valuation, with Martin Casado joining the board.

FBI arrests another suspected ShinyHunters hacker after agency breach

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 13:02:29
The FBI has arrested another suspected member of the ShinyHunters extortion group believed to be involved in the recent breach of FBI systems, Director Kash Patel announced Friday. [...]...
Original Article

Hacker prison

The FBI has arrested another suspected member of the ShinyHunters extortion group believed to be involved in the recent breach of FBI systems, Director Kash Patel announced Friday.

"Our agents in the field have arrested another suspected co-conspirator of the ShinyHunters group – the group believed to be responsible for the recent http://FBIjobs.gov incident, which occurred on a platform managed by a third-party vendor.," Patel said on X .

"This is the latest arrest this FBI has made in a matter of days involving this network, as we work non-stop to dismantle the group, pursue new leads and evidence, and act quickly."

While Patel did not identify the suspect or disclose where the arrest occurred, The New York Times reports that the suspect is a Canadian citizen who was arrested in Pennsylvania and is considered a primary co-conspirator in the intrusion.

Authorities have not publicly disclosed the suspect's name or the specific charges against him.

The arrest is the latest in a series of law enforcement actions against ShinyHunters after the hacking group breached FBI systems last month.

ShinyHunters told BleepingComputer in September that it accessed FBI systems by exploiting an alleged Oracle PeopleSoft zero-day vulnerability before moving laterally into FBI-managed AWS GovCloud infrastructure.

The threat actors claimed they stole between 2TB and 3TB of data, including information on current and former FBI employees, job applicants, medical and psychiatric records, and internal service records.

Data samples shared with BleepingComputer and other media outlets confirmed that the breach exposed a variety of employee information, including home addresses, Social Security numbers, sensitive job assignments, information about employees' family members, and other personal data.

The NY Times also reports that an internal FBI memo said the agency assumed the breach had affected all employees.

The FBI has since said the incident stemmed from a third-party contractor-managed platform that failed to install a security update.

Since the FBIJobs hack, the bureau has significantly increased pressure on identifying and apprehending the ShinyHunters extortion gang

On September 15, Dutch police arrested a 24-year-old Amsterdam man as part of an investigation into the hacking group. The suspect was identified as Pepijn van der Stap, a Dutch hacker previously known online as "Umbreon."

ShinyHunters denied that van der Stap was associated with the group, telling BleepingComputer at the time, "That individual has no association with us. Frankly, we are laughing."

Soon afterward, the FBI took the unusual step of publicly warning ShinyHunters members to turn themselves in , saying investigators were continuing to identify people involved with the group.

"Arrests have a way of changing who is willing to talk, and seized infrastructure has a way of showing us who's left," FBI Cyber Division Assistant Director Brett Leatherman said at the time.

"The longer you stay in this, the more we learn about you. You know how to find us, and we know how to find you. I suggest you reach out first while the choice is still yours."

Days later, a suspected ShinyHunters member known online as "Rey" was reportedly detained in Jordan and began cooperating with the FBI and international law enforcement agencies.

Reuters reported that Jordanian authorities detained Rey, identified as Saif al-Din Khader, and that sources said he was aiding investigators in finding other alleged members of the group.

Signs of disruption also began appearing within ShinyHunters around the same time.

The group's main representative, who had regularly communicated with BleepingComputer and other reporters and had intimate knowledge of ShinyHunters' attacks over the past two years, stopped responding on Telegram last Tuesday.

That Telegram account now appears to have been deleted.

The same representative continued communicating with BleepingComputer after van der Stap's arrest, suggesting van der Stap wasn't the person operating the account.

Around the same time as Rey's arrest, another alleged ShinyHunters affiliate with intimate knowledge of the FBI hack shut down an online messaging account, and the group's data leak site went offline.

A new ShinyHunters leak site later launched, suggesting at least some members of the operation remained active.

It is unclear whether the disappearance of the group's main representative is connected to any of the recent arrests.

"We will continue to work closely with our partners to disrupt what's left of the ShinyHunters group and their associates, no matter where they operate," Patel said Friday.

Who is ShinyHunters?

ShinyHunters is an extortion group known for stealing data from web applications and cloud-based SaaS platforms, then demanding ransom payments from victim organizations under threat of leaking the stolen data.

The ShinyHunters name has been tied to numerous threat actors involved in data breaches dating back to at least 2018.

Over the past two years, hackers operating under the ShinyHunters name have become particularly active, conducting data theft and extortion campaigns against organizations worldwide.

Recent campaigns have targeted Salesforce and other cloud SaaS environments, with the threat actors linked to breaches affecting companies including Google , Cisco , PornHub , and online dating giant Match Group .

In some attacks, the group breached third-party integration companies and stole authentication tokens that attackers could then use to access connected SaaS environments and steal customer data.

More recently, ShinyHunters has run voice phishing (vishing) campaigns targeting Okta, Microsoft, and Google single sign-on (SSO) accounts , impersonating IT support personnel to trick employees into entering credentials and multi-factor authentication (MFA) codes into phishing sites.

As BleepingComputer first reported , the group has also used device code vishing attacks to steal Microsoft account authentication tokens.

Once they obtain credentials and authentication codes, the attackers use compromised SSO accounts to access connected enterprise platforms, including Salesforce, Microsoft 365, Google Workspace, SAP, Slack, Adobe, Atlassian, Zendesk, and Dropbox.

ShinyHunters was also behind a massive data-theft attack on Instructure Canvas in May that caused significant outages across the platform. Instructure later reached an "agreement" with the threat actors to prevent them from publishing data stolen in the breach.

In addition to conducting its own breaches, ShinyHunters also operated as an extortion-as-a-service group, helping other threat actors extort organizations they had compromised.

Law enforcement has arrested numerous suspects over the years in cases tied to the ShinyHunters name, including individuals connected to the Snowflake data-theft attacks , breaches at PowerSchool , and the operation of the Breached v2 hacking forum .

Despite these arrests, cybercriminals continued to operate under the ShinyHunters name while conducting data theft and extortion attacks against organizations worldwide.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Taxing the Rich, Courting the Left: Hell Gate Interviews Governor Kathy Hochul

hellgate
hellgatenyc.com
2026-10-09 12:45:54
We asked the governor about income inequality, her investigation of Cornell, and what she'd say to Palestinian New Yorkers on October 7....
Original Article

Every time Governor Kathy Hochul visits an Irish bar, she finds the owner and asks them which county their family is from. Before settling into a booth with Hell Gate on Wednesday, she established that the owner of T.J. Byrnes in Lower Manhattan is from County Wicklow, and shared that her family is from County Kerry—hence her love of their eponymous butter .

If you have one Guinness and 28 minutes with the governor, you end up transitioning rapidly between some pretty dissonant topics. Why does she enjoy axe-throwing? What percent is she a socialist? Who's her favorite Buffalo Bill? What's her message for Palestinian New Yorkers on the third anniversary of October 7?

Governor Hochul held on for the ride, and through it all her opponent, Bruce Blakeman, the Republican Nassau County Executive trying to deny her reelection, came up surprisingly little. (In case you're wondering, our interview took place the day before ICE shot a man in Manhattan Thursday .)

Here are three major takeaways from our conversation, which you can listen to on our podcast feed here . Or watch it on YouTube below! (You can also find a full transcript here ).

Income inequality? Definitely. Taxing the rich this year? Maybe.

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

Organizing in the Town at Oakland Tech Week

Electronic Frontier Foundation
www.eff.org
2026-10-09 12:41:43
EFF was thrilled to join organizers, advocates, and activists in the East Bay for the second annual Oakland Tech Week last week. We are grateful to our friends at MediaJustice and Upturn for inviting us co-present this all-day event, “Building Beyond Big Tech: Organizing Oakland’s Future”, on Sept. ...
Original Article

EFF was thrilled to join organizers, advocates, and activists in the East Bay for the second annual Oakland Tech Week last week. We are grateful to our friends at MediaJustice and Upturn for inviting us co-present this all-day event, “Building Beyond Big Tech: Organizing Oakland’s Future” , on Sept. 30.  The event, hosted by the Kapor Center in downtown Oakland, offered a unique chance to spend time with people across The Town and the Bay Area working to create a better future for everyone.

“We’re at this truly consequential moment,” said EFF executive director Nicole Ozer, in her speech kicking off the day’s events. “We know that in this community’s work—and communities across the country—our ability to ensure that technology empowers rather than oppresses is fundamental to the future of countries, our livelihoods, and, literally, our lives.”

We also participated in a panel on the state of play in California, moderated by MediaJustice executive director Steven Renderos. Director of State Affairs Hayley Tsukayama joined reporter Khari Johnson of CalMatters and Crystal Zemero of People Over Billionaires to talk about the landscape at the state level. The day also included smaller conversations focused on building better tech and fine-tuning messaging, facilitated by our colleagues at MediaJustice.

Seeing the people—our neighbors—who are fighting back against surveillance in their communities was inspiring. They’re casting doubt on the claims large technology companies make about what’s happening in their neighborhoods. They’re speaking up at council meetings and rallies. They’re seeking changes that would give their workplaces and neighborhoods a better, safer relationship with technology. It was so important to come together in solidarity to compare notes, spend time together, find opportunities to support each other, and scheme together.

We can work together to build a future that works for everyday people . A better world is possible—and Oakland Tech Week was a great reminder that, all around us, folks are working together to tackle huge challenges.

“There are formidable forces,” Ozer said.  “But we can pierce the other side’s narrative of inevitability with our power of indignation. The future of AI and other technology is not written and we can work together to get it right.”

Whether you’re in Oakland or Aukland, consider this a renewed invitation to join us .

Join the Fight

Become an EFF Member Today

Republican data center support collapses locally when sites are in GOP counties

Hacker News
pressaudit.org
2026-10-09 12:13:08
Comments...

Following 404 Media Investigation, Senator Demands Info About White House's License Plate Surveillance Program

403 Media
www.404media.co
2026-10-09 12:00:00
Sen. Ron Wyden is seeking a privacy review report about the HIDTA license plate program....
Original Article

In response to a 404 Media investigation, Sen. Ron Wyden is demanding more information about how a federal license plate reader camera program works.

Last month, we reported on the High Intensity Drug Trafficking Area program’s license plate reader database , which mirrors data from city license plate reader programs onto federal databases. The HIDTA program falls under the White House’s Office of National Drug Control Policy, which infamously ran a secretive cell phone data surveillance project called Hemisphere. We reported that HIDTA has now created a complex system for the federal government to obtain license plate data from companies like Flock, Axon, and Motorola via a series of agreements with cities and towns across the country.

In a letter to Sara Carter, director of the Office of National Drug Control Policy, Wyden said that the office needs to publish a report it commissioned into the privacy practices of several of its surveillance programs, including the license plate reader database.

“404 Media has reported that the HIDTA program is being used to aggregate location data on Americans derived from Flock, Axon, and other vendors’ ALPRs,” Wyden wrote. “There is currently limited transparency into these HIDTA-funded surveillance programs, but ONDCP has commissioned an assessment into the privacy practices of these programs that should be released to the public.”

Wyden said that the nonprofit contractor MITRE conducted a privacy review of HIDTA’s surveillance programs, including its cell phone data collection project and its ALPR program, in 2024. That report has never been made public. Wyden demanded the release of that study, as well as a separate “analysis of automated license plate reader systems and practices.”

“There is currently limited transparency into these HIDTA-funded surveillance programs, but ONDCP has commissioned an assessment into the privacy practices of these programs that should be released to the public,” he wrote. “This review was conducted by MITRE and completed in 2024, but ONDCP refused to provide it to my office and has subsequently not made that report public. I urge you to make this review public.”

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

Triple-A Minesweeper

Hacker News
minesweeper.mikelacher.com
2026-10-09 11:51:05
Comments...

A statement on the Tor Project's relationship with Mullvad

Hacker News
blog.torproject.org
2026-10-09 11:49:31
Comments...
Original Article

Recent concerns about a political donation by a Mullvad co-founder have raised questions about the Tor Project's funding relationship with the company. We are not terminating the relationship but are setting clear boundaries on our relationship with Mullvad.

Members of the Tor community have asked us to explain how continued collaboration with Mullvad fits with the Tor Project's human rights mission. We have heard both calls to end the relationship and concerns about what that would mean for Tor's work and the communities affected. We want to explain our decision to continue our technical collaboration with Mullvad and acknowledge the difficult trade-offs behind it. Our decision followed a thorough due diligence process that involved extensive discussions with community members, staff, and the board, a staff survey, and detailed financial analysis and scenario planning.

The Tor Project’s mission is to advance human rights and freedoms. We build privacy and anti-censorship tools that people use to protect themselves from repression and surveillance, and express themselves freely. We will continue this work alongside communities whose rights are under threat.

While Tor defends free speech, not all speech is equally compatible with our mission. We strongly oppose rhetoric that threatens other human rights and freedoms.

The work to promote and preserve the human right to privacy, free speech, and free access to information online is severely under-resourced. This work requires and benefits from collaboration across organizations. Sometimes that work requires making difficult compromises to advance specific goals we know will benefit our communities in the long run.

We are continuing our technical collaboration with Mullvad to sustain work that Tor users and contributors depend on. This collaboration has helped improve the structure, maintainability, and auditability of Tor Browser’s codebase, expanded feedback from users beyond Tor Browser’s core audience, and created a lower-risk environment to test features that may later benefit Tor Browser users. It also gives more people access to online privacy through an additional free, open-source tool that serves different user needs. We recognize that the potential benefits to Mullvad of such a collaboration are difficult for some in our community to accept. Our responsibility is to ensure that this collaboration does not compromise our mission or the Tor Project's independence.

Tor Project has paused proactive co-branding with Mullvad. That pause applies to joint promotional activity while the technical collaboration continues in alignment with our narrowly scoped agreement. We have also reviewed how Mullvad Browser is described and endorsed on our owned channels, and clarified language suggesting broader alignment between our values. These changes are intended to describe the relationship more accurately and avoid notions of implied endorsement.

We know this decision will not satisfy everyone. Continuing the collaboration carries a cost to trust for some in our community, and we take that seriously. We are grateful to the members of our community who have raised concerns, asked hard questions, and reminded us what is at stake. Those concerns are shaping our path forward. Tor’s mission has always required both principle and pragmatism. We will continue to defend privacy, anonymity, freedom of expression, and access to information while making clear that our collaborations must serve, and never obscure, our human rights commitments.

Behind the Blog: What Would the Pope Do?

403 Media
www.404media.co
2026-10-09 11:44:32
This week, we discuss AI and spirituality....
Original Article

This is Behind the Blog, where we share our behind-the-scenes thoughts about how a few of our top stories of the week came together. This week, we discuss AI and spirituality.

JASON: I think we’ve generally carved out a pretty good lane for ourselves in the broader AI debate, writing about its current capabilities, its current harms, and the fact it was trained on stolen content without saying that it will never be able to do anything of use. We are often tinkering with AI so that we can write about it from an informed perspective, and so every once in a while, while I’m working on a story I will see something where it feels like AI could possibly be useful for some specific part of the reporting.

This post is for paid members only

Become a paid member for unlimited ad-free access to articles, bonus podcast content, and more.

Subscribe

Sign up for free access to this post

Free members get access to posts like this one along with an email round-up of our week's stories.

Subscribe

Already have an account? Sign in

Germany arrests alleged core Qilin ransomware member after extradition

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 11:38:56
Germany has arrested a Russian national suspected of being a leading member of the Qilin ransomware group following extradition from Japan earlier this month. [...]...
Original Article

Germany arrests alleged core Qilin ransomware member after extradition

Germany has arrested a Russian national suspected of being a leading member of the Qilin ransomware group following extradition from Japan earlier this month.

Japan has confirmed the extradition to Germany, with the National Police Agency saying that the suspect was detained after arriving in the country as a tourist.

“When a Russian national for whom Germany had obtained an arrest warrant in connection with a ransomware incident in Germany arrived in Japan, the Japanese Ministry of Justice, the Tokyo High Public Prosecutors Office, and Germany worked together to detain the suspect under the Extradition Law for Fugitives by obtaining a provisional detention warrant, and then facilitated the extradition,” [machine translated] reads the  press release .

Earlier this week, Japanese media reported the arrest based on internal sources, but authorities in the country have now officially confirmed the action.

Qilin is a notorious ransomware-as-a-service (RaaS) operation that emerged in August 2022 under the name Agenda, and deployed typical double-extortion attacks, where data is stolen before being encrypted.

The operation became one of the most active ransomware threats worldwide. By more recent statistics, the group targeted more than 2,350 known organizations across 62 countries.

Among the victims are Japanese automaker Nissan , Japanese brewery Asahi , U.S. newspaper publisher Lee Enterprises , and Australia’s Court Services Victoria .

The attack on Asahi, Japan’s largest beer producer, was particularly damaging, disrupting operations for an extended period and exposing sensitive details about 1.5 million people .

More recently, the threat group hit the U.S. Bureau of Alcohol, Tobacco, Firearms and Explosives ( ATF ) and was also linked to the exploitation of Check Point VPN zero-days and Palo Alto VPN n-day flaws .

According to media publications, Japan detained the alleged Qilin leading member in May at a hotel in Osaka. Despite this, the gang continued to be a major player on the ransomware stage. Since June, the group has listed more than 450 victims on its data leak site.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Unison Cloud is now open source

Lobsters
www.unison-lang.org
2026-10-09 11:32:51
Comments...
Original Article

Unison Cloud is now open source, MIT licensed. There are four projects:

What is Unison Cloud?

Unison Cloud turns any pool of nodes into a distributed computer, programmable with the Unison language. See a series of demos . Some features:

  • Service deploys in seconds. Services are lightweight, < 200kb. No more building and shipping around multi-GB containers.
  • Fast, typed, inter-service communication using adaptive service graph compression .
  • Distributed batch jobs, using a high-level fork/join style distributed computing model.
  • Transactional storage (backed by DynamoDB) and object storage (backed by S3).
  • Secrets management, long-running background jobs, and more.
  • The Unison Cloud client defines the programming model for a Unison Cloud cluster. It includes both a local interpreter (for testing and local development) and the real interpeter that talks to a distributed Unison cluster. This has been open source for a long time.
  • Nimbus is the worker node for a Unison Cloud cluster. It is written in Unison. The system supports any number of workers, and can be scaled dynamically up or down. This is newly open sourced.
  • The Unison Cloud API Server is a Haskell service that the Unison Cloud client talks to when interacting with a remote Unison Cloud cluster. It also acts as a control plane for tracking cluster membership, handling authentication, and so on. This is newly open sourced.
  • The Unison Cloud UI is the code behind app.unison.cloud (for viewing deployed services, logs, and so on). This is newly open sourced.

We think this tech will be more useful to the world as an open source technology and hope that people build great things with it.

If you're interested in professional support for a Unison Cloud cluster, get in touch at hello@unison.cloud .

Steinar H. Gunderson: Decompilation patterns, part 6: If-add-else

PlanetDebian
blog.sesse.net
2026-10-09 11:30:22
Often, m2c will spit out something like this: x = 3; if (a == 10) { x = 4; } This may be what was intended, but if it doesn't match (usually due to different register allocation; the rewrite itself is nearly always going to be taken, since it saves a branch on one of the paths), this is often...
Original Article

Often, m2c will spit out something like this:

x = 3;
if (a == 10) {
    x = 4;
}

This may be what was intended, but if it doesn't match (usually due to different register allocation; the rewrite itself is nearly always going to be taken, since it saves a branch on one of the paths), this is often a better rewrite:

if (a == 10) {
    x = 4;
} else {
    x = 3;
}

and in some cases, this may have different code generation (especially as you can stick it into an argument list):

x = (a == 10) ? 4 : 3;

This is a bit more of a trial and error than the others, and of course, it depends on the computed values not having side effects.

The super intelligence shit is a humiliation ritual for OpenAI

Hacker News
bsky.app
2026-10-09 11:18:59
Comments...

Germany turning abandoned coal mines into 23 lakes, becoming artificial wetland

Hacker News
timesofindia.indiatimes.com
2026-10-09 11:05:24
Comments...
Original Article

Germany is turning abandoned coal mines into 23 lakes; the former mining landscape is becoming Europe's largest artificial wetland

In eastern Germany, enormous pits carved into the landscape by decades of lignite mining are being transformed into a vast network of lakes, wetlands and restored land. The Lusatian Lakeland, spread across Brandenburg and Saxony between Berlin and Dresden, is being created by flooding former open-cast mines and reshaping their surroundings.

The tourist destination now comprises 23 post-mining lakes covering about 14,000 hectares of water. The transformation began with Lake Senftenberg in 1967 and has continued for decades, turning one of Germany's major coal-producing regions into a new water landscape. The project combines environmental restoration with tourism, recreation and long-term rehabilitation of land heavily altered by mining.

Germany transforms coal pits to a giant lake landscape

Lusatia was one of Germany's major lignite-mining regions, and open-cast extraction left huge excavated areas after the coal was removed.

The first major step towards their transformation began in 1967, when the former Niemtsch open-cast mine started filling to create Lake Senftenberg. Flooding was completed in 1972, and the lake opened for public use the following year. Since then, numerous other mine pits have been flooded, creating what regional authorities describe as Europe's largest artificial water landscape.

The process has involved both groundwater and water brought in from rivers and other sources.

According to mining-rehabilitation company LMBV, the rapid flooding of some mine voids was necessary because the enormous quantities of material removed during mining left large depressions that could not simply be restored to their original form.

A network of 23 post-mining lakes

The Lusatian Lakeland is not a single giant lake but a collection of former mining sites that are gradually being integrated into a connected water landscape. LMBV identifies 23 post-mining lakes within the tourist destination, with a combined water surface of around 14,000 hectares.

Five of the most prominent are Senftenberger See, Geierswalder See, Partwitzer See, Sedlitzer See and Großräschener See. Their transformation has taken place over different periods, with Senftenberger See being the oldest of the group and Sedlitzer See among the most recent to reach its target level.

In 2025, Sedlitzer See reached its planned water level, marking a major stage in the creation of the lake network.

At about 1,400 hectares, it has become the largest recreational lake in the Lusatian region.

Five lakes now form a connected waterway

The transformation is extending beyond the creation of individual lakes. Canals are being constructed to connect several of the former mining pits, allowing boats to move between lakes that were once separated by mining infrastructure and spoil heaps. On June 29, 2026, five major lakes were officially connected through navigable waterways, creating a continuous water area of roughly 5,100 hectares.

The network includes Senftenberger See, Geierswalder See, Partwitzer See, Sedlitzer See and Großräschener See.

LMBV says the wider plan involves 13 navigable canals, of which four have been completed, while others are under construction or in planning. The new connections are intended to support boating and passenger shipping while creating a unified tourism destination from landscapes that were once dominated by mining.

Nature is returning around the former mines

The creation of lakes is only one part of the region's environmental transformation. Mining rehabilitation has also involved stabilising former mine slopes, restoring land and allowing new vegetation to establish across areas that were previously heavily disturbed. Young forests are growing on former spoil heaps, while grasslands, wetlands and other habitats are emerging around the newly created water bodies.

The changing landscape is therefore not simply an exercise in filling holes with water, but a long-term effort to establish a functioning post-mining environment. The scale of the intervention is considerable: LMBV says about 15,000 hectares of water surface has already emerged in the Lusatian Lakeland, while additional post-mining lakes continue to be developed elsewhere in Germany's former mining regions.

A new future for a former coal region

The lakes are also changing the economic identity of Lusatia. Beaches, marinas, cycling routes, campsites and water-sports facilities are being developed alongside the restored landscape, while parts of the region's industrial history remain visible through mining heritage sites and visitor attractions. The transformation is particularly significant because it is taking place in an area whose landscape and economy were shaped for generations by lignite extraction.

The result is a new regional identity built around water, recreation and nature while retaining links to the industrial past. Regional authorities describe the Lusatian Lakeland as Germany's fourth-largest lake district and Europe's largest artificial water landscape. What began with the flooding of a single former mine in 1967 has consequently grown into a decades-long landscape transformation involving two dozen lakes, interconnected waterways and thousands of hectares of reclaimed land.

Germany transforms former coal mines into Europe's largest lake landscape

Hacker News
www.euronews.com
2026-10-09 11:05:24
Comments...
Original Article

A decades-long project to transform Germany's former coal mines into a massive lake complex will reach completion this April – creating a watery landscape almost as large as Italy's Lake Como.

ADVERTISEMENT

ADVERTISEMENT

Lake Sedlitz – the final addition to the 14,000 hectare Lusatian Lakeland – will be open for swimming and boating for the first time at the end of this month.

According to the Federal Environment Agency, Germany has more than 12,000 natural lakes.

In addition, there are hundreds of artificial bodies of water: 575 open-cast lignite mining lakes alone were recorded in Germany in 2003 – and their number will continue to rise in the coming decades as more mines are flooded in the former coalfields. Most of them are located in Brandenburg, Saxony-Anhalt, Saxony and North Rhine-Westphalia.

However, none of these projects even come close to what is being created in Lusatia, between Berlin and Dresden.

From open-cast mine to artificial water landscape

In the German Democratic Republic (GDR), miners extracted more than two billion tonnes of lignite – or brown coal – from depths of over 60 metres.

Mining left huge craters in the landscape, which first began to be transformed in 1967 with the flooding of Lake Senftenberg. Part of Lusatian Lakeland – now Europe's largest artificial water landscape – it draws visitors to its harbours, canals and campsites.

There is even a community in the region called Neu-Seeland, around which the water landscape created from former open-cast mines has developed.

Without mining, Lusatia would have remained a region almost without lakes, as the old moraine landscape with its permeable gravel and sand does not naturally form lakes. Incidentally, the name Lusatia goes back to the West Slavic term 'luzica' – which simply means 'marshland'.

The gigantic scale of the project

As a tourist destination, the Lusatian Lakeland comprises 23 human-made post-mining lakes with a total water surface area of 14,000 hectares. Ten of these are to be connected in future by canals for leisure boating – the plan is to have a continuously navigable water area of 7,000 hectares. Four of the 13 planned navigable canals have already been completed and six more are under construction.

The Lausitz and Central-German Mining Administration Company (LMBV) is responsible for the rehabilitation and flooding of the former open-cast mines – a federal company that was assigned 19 open-cast mining areas in Lusatia in the early 1990s and has been organising their reclamation ever since.

In total, the LMBV is developing around 50 large post-mining lakes, 24 of which are in Lusatia alone, the LMBV's Dr Uwe Steinhuber tells Euronews Earth. "This is a process that will take two generations," says Steinhuber.

What the transformation will cost

According to Steinhuber, the mining reorganisation in Lusatia has cost around €7 billion so far. The total cost to the LMBV, including the Central German mining districts, is around €13.8 billion.

Creating a single long-term safe lake costs between €200 and €600 million. The project is financed 75 per cent by the federal government and 25 per cent by the respective federal state – EU funds do not flow into mining restoration. According to Steinhuber, a further €4.8 billion will probably be required over the next 25 years.

Almost as big as Lake Como

An LMBV flooding centre in Senftenberg has been coordinating the process for over 25 years: water is extracted from the Neisse, Spree and Schwarzer Elster rivers and channelled into the lakes. Without active flooding, it would take 80 to 100 years for an open-cast mine to be filled by groundwater and rain alone. Flooding only takes place when the conditions are right – shipping, power stations and the fishing industry must not be affected.

Each emerging lake poses its own challenges: embankments have to be geotechnically secured, mineral-laden groundwater has to be taken into account and in some cases complex inlet and outlet channels have to be built, explains Steinhuber. The rapid introduction of neutral river water fulfils an important purpose: it prevents acidic water from the tipping areas from entering the lakes.

The total water surface area is currently around 130 square kilometres. In the end, it will be 144 square kilometres – almost as large as Italy's Lake Como (146 square kilometres), one of the most famous lakes in Europe.

The difference: the East German lake is not created by nature, but by decades of targeted engineering work. According to Steinhuber, 90 per cent of the volume of the residual crater has already been filled.

The lakes do not only fulfil tourist purposes: they also increasingly serve as water reservoirs for the rivers Spree and Schwarze Elster – especially during periods of low water when the region suffers from drought .

Lake Sedlitz: The last building block

Lake Sedlitz – formerly the Ilse-Ost open-cast mine, in operation from 1938 to 1980 – is the last major project component still awaiting completion.

According to the television station RBB, around 200 hectares of dead wood are still under the surface of the water and must first be removed. The history of the lake's restoration dates back to the 1990s, when the embankments were first secured, dams were built and the banks flattened. The lake reached its target water level in 2025.

At 1,400 hectares, it will be open for swimming and boating for the first time at the end of April – making it the largest recreational lake in the entire Lusatian Lakeland, around 100 hectares larger than the previous record holder, Lake Senftenberg.

"Currently, four of the five lakes have already been completed and can be fully utilised," Kathrin Winkler, Managing Director of the Lusatian Lakeland Tourism Association, tells Euronews Earth. "We expect to open Lake Sedlitz on 24 April."

Five lakes merge in summer

On 29 June 2026, Europe's largest artificial water landscape will reach its next milestone: Lake Senftenberg, Lake Geierswald, Lake Partwitz, Lake Sedlitz and Lake Großräschen will be connected by navigable canals to form a contiguous water area of around 5,000 hectares.

For comparison: Germany's largest inland lake, the Müritz, measures around 11,300 hectares. If you want to cross all the lakes by water, you would have to cover around 50 kilometres.

The newly created Ilse Canal to Lake Großräschen stands out in particular: it crosses under several railway lines and a main road on its way. "The largest man-made water landscape in Europe is taking shape," says Winkler. "The opening marks an important step for the further development of water tourism in the Lusatian Lakeland."

According to Winkler, the main focus over the next five years will be on establishing passenger shipping, new berths and accommodation capacity. The aim is to position the entire Lusatian Lakeland as a unified travel destination – from cycling and water sports to cultural offerings.

Tourism on the upswing: Especially from the Czech Republic

The change is also having an economic impact: in 2025, around 800,000 overnight stays were registered in establishments with 10 or more beds, as Winkler reported when asked by Euronews Earth.

The Czech market in particular is developing strongly: "We have been working intensively on the Czech market for several years and are already seeing great success here," says Winkler. In 2025, the region recorded 23,063 Czech overnight stays – an increase of 12.7 per cent compared to the previous year.

As a next step, the tourism association now has its sights set on the Polish market. The long-term goal of the association, which currently has more than 30 municipalities as members, is up to 1.5 million overnight stays per year.

But it is not just tourists from outside that benefit. "The local population benefits in many ways," Winkler tells Euronews Earth. The expansion of the tourism infrastructure would create new jobs in the catering, hotel and leisure industries – including for former miners and their families.

A model for Europe?

Winkler says Lusatia can serve as a model for other coal-mining regions on the continent: "The combination of comprehensive mining restoration, sustainable landscape design and the targeted development of a tourism value-added cycle provides impetus for regions facing similar structural change."

Workshops and excursions with international partners had already been organised during the International Building Exhibition (IBA, 2000 to 2010) – "and we are still involved in a lively international exchange on this topic today," Winkler tells Euronews Earth.

Lausitz Energie Bergbau AG (LEAG), which still operates active open-cast mines in the region today, plans to gradually close them down from 2030 – the last one is not expected until 2038. These huge pits will then also have to be flooded.

What was once considered a wound in the landscape is thus gradually becoming one of the most unusual natural paradises in Europe.

Quoting Matthew Green

Simon Willison
simonwillison.net
2026-10-09 11:02:29
Everyone is very concerned about being respectable, so I’m going to be the goofball who raises worst-case possibilities. I think there is a 1% chance we live in Minicrypt, and a 15% chance we functionally lose confidence in our existing public-key encryption algorithms. [...] The problem here is tha...
Original Article

9th October 2026

Everyone is very concerned about being respectable, so I’m going to be the goofball who raises worst-case possibilities. I think there is a 1% chance we live in Minicrypt, and a 15% chance we functionally lose confidence in our existing public-key encryption algorithms. [...]

The problem here is that the speed of AI producing surprises, and the speed of human beings replacing standards (even with the very best AI assistance) are just orders of magnitude different. You only recover from a surprise like this if you do the preparation in advance.

— Matthew Green , on Twitter. I looked it up and Minicrypt is Russell Impagliazzo’s hypothetical world in which public-key encryption is impossible.

[$] The state of systemd: 2026 edition

Linux Weekly News
lwn.net
2026-10-09 10:58:15
At the 2026 All Systems Go! conference, systemd maintainers Luca Boccassi and Zbigniew Jędrzejewski-Szmek delivered the traditional "state of the project" session with an overview of the systemd project's accomplishments in the past year. That was followed by a maintainer round table where Boccassi,...
Original Article
The page you have tried to view ( The state of systemd: 2026 edition ) 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 October 22, 2026)

Imposing Sanctions on the International Criminal Court

Hacker News
www.state.gov
2026-10-09 10:55:57
Comments...
Original Article

We’re sorry, this site is currently experiencing technical difficulties.
Please try again in a few moments.
Exception: forbidden

Python 3.15.0

Hacker News
www.python.org
2026-10-09 10:35:42
Comments...
Original Article

Notice: This page displays a fallback because interactive scripts did not run. Possible causes include disabled JavaScript or failure to load scripts or stylesheets.

Release date: Oct. 9, 2026

Python 3.15 logo: a purple heart with "3.15" in blue and yellow, flanked by a blue and a yellow snake, with lightning bolts, pink clouds and laurel branches, framed by the release's headline features

This is the stable release of Python 3.15.0

Python 3.15.0 is the newest major release of the Python programming language, and it contains many new features and optimisations compared to Python 3.14, in 5,643 commits from 1,012 contributors.

Major new features of the 3.15 series, compared to 3.14

Some of the major new features and changes in Python 3.15 are:

Interpreter improvements

Significant improvements in the standard library

  • PEP 799 : A dedicated profiling package for organizing Python profiling tools
  • PEP 799 : Tachyon: High frequency statistical sampling profiler
  • More color

New typing features

C API improvements

  • PEP 782 : A new PyBytesWriter C API to create a Python bytes object
  • PEP 788 : Protection against finalization in the C API
  • PEP 803, 820, 793 : Stable ABI for free-threaded builds and related C API

Build changes

  • PEP 831 : Frame pointers are enabled by default for improved system-level observability

Release changes

For more details on the changes to Python 3.15, see What’s new in Python 3.15 .

Attention macOS 27.0 IDLE or tkinter users

When running IDLE or other GUI applications that use the tkinter module, these applications may hang when using an application's menu command that opens a dialog (for example, IDLE's About IDLE , Settings , and Open Module commands) resulting in a spinning beach ball with Force Quit needed.

This problem is due to an operating system behavior change in macOS 27.0 that is believed to affect all current versions of the Tk graphics toolkit and thus the tkinter module in all current Python versions.

If you depend on Tk-based applications (like IDLE) on macOS, you may want to consider deferring installing macOS 27.0 until a Tk or macOS workaround is available or testing that your application workflow is not affected. Follow issue #158053 for updates.

More resources

And now for something completely different

To celebrate the new 3.15, Barry Warsaw has a present for us!

I had this idea to whip up a little TUI adventure game that takes you through a What’s New in Python 3.15. I present to you “whatsnewt”:

From the README:

A TUI text adventure through what’s new in Python 3.15.

You wake up in the Startup Foyer, somewhere inside the interpreter, and work your way to the Release Gate. Along the way there are eighteen puzzles, and every one of them is a real 3.15 feature you have to actually use. You’re not just answering boring questions, you’re actually writing and running code, in a Python 3.15 interpreter.

Some puzzles require a type checker, and in those cases, answers are verified by pyrefly, which is a dependency for exactly that reason, and the verdict quotes what it says back.

The easiest way to play it is to run:

uvx --python 3.15 whatsnewt

And yes, there are easter eggs

Enjoy the new release

Thanks to all of the many volunteers who help make Python development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organisation contributions to the Python Software Foundation .

Huge thanks to Georgi Ker and Marie Nordin for the Python 3.15 logo!

And also huge thanks to the Sovereign Tech Agency for supporting Hugo van Kemenade's work as release manager for Python 3.14 and 3.15 through the Sovereign Tech Fellowship .

Full Changelog

Files

Version Operating system Description File size Sigstore SBOM SHA-256 checksum
Gzipped source tarball Source release 41.7 MB .sigstore SPDX 438596cac081036d 3c1d532ab7e7335e eb35567bc961749a 0d5797176db0db68
XZ compressed source tarball Source release 34.0 MB .sigstore SPDX ba4bed1ba346b916 890b76d9e3204514 20aa69f6408997d3 3c66482eeae3d575
Android embeddable package (aarch64) Android 23.1 MB .sigstore 571e4cf4e0aee3d1 ab54a52ca3d4e684 5b85ec0bb327f7de bfb873172f445dab
Android embeddable package (x86_64) Android 23.4 MB .sigstore 2413d51948d612cf 42baefba25295bb8 3c2ed84df5726af6 fe5bde2dec5d87e7
iOS XCframework iOS 80.6 MB .sigstore 68e98ab35cc0643b a3a227a8c7768da4 5c2a5e67dbe1bc26 598537e96680fd19
macOS installer macOS for macOS 10.15 and later 84.9 MB .sigstore 7c7e7eca61cbfa5f 0c6f80cd594cddbf d492f4e8b3fb87e3 d9fa1efebaec43ed
Windows installer (64-bit) Windows Recommended 43.3 MB .sigstore SPDX 67d9a63eb145a34a a939f02eadbf8c57 f21fcdd6decb901c cac578d2d1f01d6f
Windows installer (32-bit) Windows 41.6 MB .sigstore SPDX 222f79df7d2d5653 871c09aef73dd776 23514a356ca7f4a4 f3ba5b9217e55e8a
Windows installer (ARM64) Windows Experimental 42.6 MB .sigstore SPDX bb1c5123cc63d7bb 37962ea7bf65e2b0 6389be9e5d48b6b5 32346d42ae487c4f
Windows embeddable package (64-bit) Windows 13.1 MB .sigstore SPDX a6999bcbcbe56f93 7159ef79c2630260 eca99f65f7860bc5 cd20430324079a44
Windows embeddable package (32-bit) Windows 11.4 MB .sigstore SPDX da1ca8f1a491444b 2a227b898caa9c44 537ac27dcf27cff5 8347f3b4119f79ad
Windows embeddable package (ARM64) Windows 12.4 MB .sigstore SPDX abedaa8460572f9b ade5e332db5ee0dc 95c2dbf6c8dec687 a1f03c3e6cd7f7d4
Windows release manifest Windows Install with 'py install 3.15' 15.0 KB .sigstore ebbd6a12b77ee2cb ba5bf9fbb034c609 c8336877823f7989 126be10a237c11df

US imposes sanctions on ICC hours after former judge wins Nobel Peace Prize

Hacker News
www.reuters.com
2026-10-09 10:31:54
Comments...
Original Article

Please enable JS and disable any ad blocker

A tale of four theorem provers, or: A (reasonably) opinionated comparison of Isabelle/HOL, Lean, HOL4, and Agda

Lobsters
blueberrywren.dev
2026-10-09 10:30:28
Comments...
Original Article
A tale of four theorem provers, or: A (reasonably) opinionated comparison of Isabelle/HOL, Lean, HOL4, and Agda

2026-10-10

A Wren.

Table of contents

The above (wow, long title)

In which I compare Lean, Isabelle/HOL, Agda, and HOL4 with only mild regard for "fairness".

What are we comparing, anyway?

All four of the above are theorem proving applications; that is, their purpose is to computer-formalize mathematics. Broadly speaking, both Lean and Agda are dependent-types based systems, utilizing the Curry-Howard correspondence to prove theorems via a complex type system, whereas Isabelle/HOL and HOL4 are LCF-style systems, with a small "proof kernel" containing base rules (e.g. forall x, x = x ) that all proofs must be constructed via. Both foundations have advantages and disadvantages, and some will be discussed.

And on what?

I have formalized in all four a proof of the infinitude of primes; that is, the statement "For any number n, there is a prime larger than n". The exact proof formalized is the "usual" construction by Euclid, which you can find on Wikipedia if you want; see here .

All of the proofs structurally look similar (mostly, we'll get to that), and hence it was the user experience that made the difference. For transparency, before this experiment, I was most familiar with Isabelle/HOL and Agda, and to some extent learnt HOL4 and Lean as part of this review.

Comparison time!

What follows is a bunch of opinions and somewhat arbitrary categories. Don't expect an unbiased review, please. If you only want proof comparisons, skip to Proof Comparisons, and if you only want more opinions, read the below and then skip to Arbitrary Rankings. The opinions go first.

I do not claim any of the following proofs are perfect! They're probably quite mediocre, really.

Overarching similarities/differences

There are a few categories by which we can group these theorem provers. We have the above mentioned:

  • LCF-style: Isabelle/HOL, HOL4
  • Dependent-style: Lean, Agda

But there's also:

Interactivity

  • High-interactivity: Isabelle/HOL, Lean
  • Low-interactivity: HOL4, Agda

Reasoning: Both Isabelle/HOL and Lean provide "live updates" as you type, and their structured proofs can be "down-arrow"'d through, to see intermediate steps. In contrast, both completed HOL4 and Agda proofs exist as fully-put-together terms that must be manually taken apart if you wish to inspect their internals. Both HOL4 and Agda can show you your current state and related information at any time, of course.

Automation

  • High-automation: Isabelle/HOL, HOL4
  • Medium-automation: Lean
  • Low-automation: Agda

Isabelle/HOL has sledgehammer , which calls out to a number of external proof generation methods (SAT/SMT solvers, various FOL solvers, etc). For any goal that looks doable-but-annoying, there's a solid chance sledgehammer can solve it - this is nice because it saves you work, but the proofs it generates are also indecipherable, which is perhaps less than ideal. There also exists an equivalent for HOL4 called HolyHammer, but I didn't realize it existed until after I was writing this. Oh well. Isabelle/HOL and HOL4 both have very good support for many automated simplification and proof methods, which come in quite handy when trying to work with complex assumptions, for example. It may not be obvious how to proceed without simplification kicking in to chunk everything down.

Lean has decent automation, but not to the same level as Isabelle/HOL or HOL4. Its simp is not nearly as productive, and while grind is a very neat approach that can sometimes rival sledgehammer , a lot of the time it's quite useless for reasons beyond me. Both sledgehammer and grind are all-or-nothing; if they don't solve the goal, they make no progress. This is in contrast to simp (in all three), or more specialized tools like auto (Isabelle/HOL) or gvs (HOL4), which can make some progress and then leave the context in (ideally) a better place. The fact Lean doesn't have nearly as good partial-automation is a bit of a shame, because in my experience that's what actually matters more. Notably, both Lean and Isabelle/HOL have a try (In Isabelle/HOL, try / try0 for with/without sledgehammer ; in Lean, try? / exact? / rw? ) that "have a go" at your goal with various automated methods and direct solve attempts. HOL4 doesn't have an equivalent, as far as I can tell, which is unfortunate, as it's quite handy.

Agda has essentially no automation. The only simplification you get is what can be computed based on inputs to functions. This, to be a bit frank, sort of sucks. It's quite hard to get things done because there's so much manual fiddling that must be taken into account. I am personally not a fan.

Foundations

Isabelle/HOL and HOL4 are both extremely classical in their foundations, which means that they accept the Law of Excluded Middle (∀ P. ¬P ∨ P), and both also axiomatize Hilbert's epsilon, which leads also to the Axiom of Choice. This seems to have a very positive effect on automated solvers, which quite often rely on laws such as double-negation elimination (¬¬P --> P), which is equivalent to the LEM. Lean is theoretically constructive (and hence does not have the LEM by default), but some of the "good" proof automation requires the LEM, and it seems the norm to use Lean classically, so that's what I did. grind for example just assumes you're using it. This does have the disadvantage that Lean isn't as good at dealing with e.g. existentials, for example.

Agda is constructive by default, and it seems the norm in the Agda world to keep your proofs that way, so I did. The big advantage of this is that after proving there are infinitely many primes, I can actually generate them! I can give my proof a number, and it'll spit out a prime bigger than that number. The disadvantage is that it is horribly slow to do so:

  • 0: 2 (instant)
  • 1: 3 (instant)
  • 2: 7 (instant)
  • 3: 5 (instant)
  • 4: 11 (quarter second)
  • 5: 7 (quarter second)
  • 6: 71 (3s)
  • 7: 61 (10s)
  • 8: 19 (40s)

This may make sense if you looked at the proof structure above; we consider (n + 1)! + 1 , so inside that proof, it's checking primality at numbers around ~360,000; that's going to be a bit slow. This construction, it should be noted, isn't meant to be fast, but it's also the most natural one. Is it worth giving up the LEM and good proof automation? You decide.

Dependent types as a foundation vs LCF

I'm more a fan of LCF because it seems more amenable to automation, and I don't see the point of carrying around proof terms (classical logic is too useful!). If you vehemently disagree, email me at contact AT blueberrywren.dev, and if I like your argument enough I'll post it here.

Interaction mode

Both Lean and Isabelle/HOL are interacted with interactively. Lean has modes for other editors, but high recommends the use of VSCode, and Isabelle/HOL has its own editor (jEdit) that it also practically forces the use of. This is fine ; I understand why they do this, as interactive development is reasonably hard to make generic. Both of them make it work.

HOL4 is interacted with via either an Emacs mode or a Vim mode, and keybinds that allow one to copy text in/out of a running HOL4 REPL. This sounds weird because it is, but it works surprisingly well. I was already an Emacs user, so nothing really changed for me.

Agda is also interacted with via an Emacs mode, but everything happens in your file; you can use keybinds to refresh the state, add proof goals, etc. It also works fine.

As mentioned above, the advantage of the Lean/Isabelle/HOL approach is that one can see proofs in-progress, which you can't with Agda.

Documentation

Both Isabelle/HOL and HOL4 have extremely good mechanisms for searching for theorems; an editor panel + find_theorems for the former, and DB.find / DB.match for the latter. These allow for the searching of theorems by both name and by patterns, so I could for example search for lemmas of form _ < SUC _ . This is so handy! Very often you know the shape of something you want, but maybe not the lemma itself.

Lean has leansearch and loogle, which are interesting, but they:

  1. Aren't built in.
  2. Aren't as good.

Which kind of sucks. exact? and rw? exist as "here's stuff you might be able to do", but they're nowhere near as flexible.

Agda, as expected perhaps, does not have an equivalent. One must become a master of zen looking through the right parts of the Agda standard library.

Proof Comparisons

Note: This isn't really meant to be a tutorial for any of these, though I will do a little explaining at the start. It's mostly for the reader to compare them, and see what ~equivalent statement proofs look like in different languages.

Let's get into the proofs! We'll go segment by segment, exploring sections of the proof and explaining as we go. Before that, some vaguely interesting stats:

  • Isabelle/HOL: 117 LOC, with 19 proofs.
  • Lean: 155 LOC, with 12 proofs.
  • HOL4: 190 LOC, with 16 proofs.
  • Agda: 264 LOC, with 45 proofs (29, not counting where blocks)

These are nowhere near apples-to-apples, but they're still fun.

We start with defining divisibility. In Agda we cheat and use the standard library version, so we can get proofs around computing divisors, which I didn't feel like redoing.

Isabelle/HOL:

definition divides :: "nat ⇒ nat ⇒ bool" where
  "divides n k = (∃j. j * n = k)"

Lean:

@[grind]
def divides (n k : Nat) : Prop :=
  ∃q, k = n * q

HOL4:

Definition divides_def:
  divides n k = ∃q. q * n = k
End

Agda (looks like, in the standard library):

record _∣_ (m n : ℕ) : Set where
  constructor divides
  field quotient : ℕ
        equality : n ≡ quotient * m

So, basically the same. Then there's a few lemmas around divisibility proved ( divides k 0 , divides k k , etc). One we'll show off is divides n k ==> divides n j ==> divides n (k - j) , as it's mildly interesting in some of the theorem provers. In all of the following, the mult/sub lemma essentially states a * (b - c) = a * b - a * c .

Isabelle/HOL:

lemma divides_diff: "divides x k ⟹ divides x n ⟹ divides x (k - n)"
  using divides_def by (metis diff_mult_distrib)

The proof search procedure metis does most of the work.

Lean:

theorem divides_sub (n j k : Nat) (h1 : divides n k) (h2 : divides n j)
  : divides n (k - j) := by
  obtain ⟨q1, h1⟩ := h1
  obtain ⟨q2, h2⟩ := h2
  unfold divides
  exists (q1 - q2)
  grind [Nat.mul_sub]

We do some unpacking, then identify q1 - q2 as the other term (such that n * (q1 - q2) = k - j ). Then grind with the appropriate lemma gets us there.

HOL4:

Theorem divides_sub:
  divides n k ⇒ divides n j ⇒ divides n (k - j)
Proof
  rpt strip_tac
  >> metis_tac[RIGHT_SUB_DISTRIB, divides_def]
QED

Like Isabelle/HOL, when supplied with the appropriate lemmas, metis_tac takes it out.

Agda:

divides-sub : ∀ {i j k} → i ∣ j → i ∣ k → i ∣ (j ∸ k)
divides-sub {i} (divides-refl q₁) (divides-refl q₂) = divides (q₁ ∸ q₂) (sym (*-distribʳ-∸ i q₁ q₂))

Very similar. divides-refl is an abbreviation for divides _ refl , and like in Lean, we must manually point out q₁ ∸ q₂ .

It was interesting to me that the Lean proof was, to some extent, such a pain. I had to put more effort into that one than any of the others, despite Lean having reasonably decent automation! Finding the appropriate lemmas was mildly more painful, and this was while I was still puzzling over syntax, to be fair.

We next need to define the product of a list of numbers, which looks like the following:

Isabelle/HOL:

fun prod_list :: "nat list ⇒ nat" where
"prod_list [] = 1" | 
"prod_list (x # xs) = x * prod_list xs"

Lean:

@[simp, grind]
def prod_list (xs : List Nat) : Nat :=
  match xs with
  | [] => 1
  | x :: xs => x * prod_list xs

The simp and grind markers were meant to help the automated proof methods out, and they did!

HOL4:

Definition prod_list_def:
  (prod_list [] = 1) ∧
  (prod_list (x :: xs) = x * prod_list xs)
End

Agda:

prod-list : List Nat → Nat
prod-list [] = 1
prod-list (x ∷ xs) = x * prod-list xs

Defining things in HOL4 is a little interesting, because you're just defining the body as a proof! That definition spits out a theorem prod_list_def that is literally

val it = ⊢ prod_list [] = 1 ∧ ∀x xs. prod_list (x::xs) = x * prod_list xs: thm

!

Here in the Agda proof we also do a bunch of work to set up what will become a decision procedure for primality. This is because later we wish to ask "Is this prime?", and without the LEM to say "It must either be prime or not prime", we need to write an algorithm to decide this for us.

Back on track, we need to show a few lemmas around with prod list function. One of the interesting ones is as follows, where we prove that a number in said list will divide the product of the list.

Isabelle/HOL:

lemma divides_prod_list: "x ∈ set xs ⟹ divides x (prod_list xs)"
  apply (induct xs)
   apply simp
  apply auto
   apply (case_tac xs; simp add: divides_def)
  apply (case_tac xs; simp)
  apply (rule mult_divide_l)
  by assumption

Very implicit; it's hard to tell what's going on, but the basic structure is there. Induct on the list, do some casing, apply a lemma about divides _ (_ * _) .

Lean:

theorem divides_prod_list : ∀ xs x, x ∈ xs -> divides x (prod_list xs) := by
  intros xs x mem
  induction xs with
  | nil => grind
  | cons y ys ih =>
    by_cases h : (x = y)
    · rw [h]
      simp
      exists (prod_list ys)
    · cases mem with
      | head => grind
      | tail =>
        rename_i a
        have ⟨h, hq⟩ := ih a
        simp at *
        rw [hq]
        exists (y * h)
        grind

Reasonably large. We have to destructure the membership quite manually, which gets a little troublesome. It's a fairly straightforward proof, though.

HOL4:

Theorem divides_prod_list:
  x ∈ set xs ⇒ divides x (prod_list xs)
Proof
  Induct_on ‘xs’
  >- fs[]
  >- (fs[]
      >> rpt strip_tac
      >- (fs[prod_list_def, divides_def]
          >> qexists_tac ‘prod_list xs’
          >> simp[])
      >- (fs[divides_def, prod_list_def]
          >> qexists_tac ‘h * q’
          >> rev_drule EQ_SYM
          >> strip_tac
          >> fs[]))
QED

Also not crazy, although it's hard to see the exact structure without comments (which I didn't write :P). This is a good time to point out HOL4 proofs are literally just SML terms! There's nothing more to it! The combinators >> and >- (for apply latter to all subgoals of former, and to one subgoal of former resp.) are just infix functions composing other functions! It's all just SML! You interact with HOL4 through a REPL, so you construct stuff dynamically, but then you have to puzzle piece your function together afterwards. Once you know that, it's more obvious what's going on; we induct, handle the first case, then simplification on MEM x (h ∷ xs) give us two goals ( x = h and x ≠ h, MEM x xs resp.)

Agda:

prod-list-divides : ∀ xs x → x ∈ xs → x ∣ prod-list xs
prod-list-divides [] x ()
prod-list-divides (y ∷ xs) x (here refl) = divides (prod-list xs) (*-comm y (prod-list xs))
prod-list-divides (y ∷ xs) x (there p) with prod-list-divides xs x p
... | divides q eq rewrite eq = divides (y * q) (sym (*-assoc y q x))

Very explicit, but also quite concise. Matching on the list membership is quite intuitive, because the Agda mode in Emacs includes a command C-c C-c to automatically case split on basically everything.

While it's much more implicit in Isabelle/HOL and HOL4 (a common theme), all four of these proofs take the form of asking whether the value we care about is at the head of the list, or somewhere later on, and that decides what we fill in divisibility with.

Then, Primality!

Isabelle/HOL:

definition prime :: "nat ⇒ bool" where
  "prime p = ((p > 1) ∧ (∀x. divides x p ⟶ x = p ∨ x = 1))"

Lean:

@[simp, grind]
def prime (n : Nat) : Prop :=
  (n > 1) ∧ (∀k, divides k n -> k = 1 ∨ k = n)

HOL4:

Definition prime_def:
  prime n = ((1 < n) ∧ (∀k. divides k n ⇒ k = 1 ∨ k = n))
End

Agda:

record Prime (n : Nat) : Set where
  constructor isprime
  field
    gt1 : n > 1
    div : ∀ k → k ∣ n → k ≡ 1 ⊎ k ≡ n

In Agda we also define what it means to be composite as a "positive" definition, instead of just "not prime"; this makes working with it quite a bit easier.

The next "interesting" proof is proving that every not-prime number greater than one has a prime factor. In Agda this is part of the definition of being composite, so we don't bother including it. We're going to move slightly faster from now on, so I won't explain each snippet. Just compare yourselves.

Isabelle/HOL:

lemma prime_factor: "¬(prime k) ⟹ k > 1 ⟹ ∃p. prime p ∧ divides p k"
  apply (induct k rule: measure_induct[of "id"]; simp)
  apply (rotate_tac 1)
  apply (subst (asm) prime_def)
  apply clarsimp
  apply (case_tac "prime xa")
   apply blast
  apply (erule_tac x=xa in allE)
  (* found with sledgehammer *)
  by (metis divides_gt divides_trans less_Suc0 not_less_iff_gr_or_eq zero_not_divides)

Lean:

theorem prime_factor : ∀k, ¬(prime k) -> 1 < k -> ∃p, prime p ∧ divides p k := by
  intros k nprime kgt1
  induction k using Nat.strongRecOn with
  | ind k' ih =>
    simp at nprime
    obtain ⟨x,⟨xd,dvds⟩,xn1,xnk⟩ := nprime kgt1
    clear nprime
    by_cases h : prime x
    · exists x
      grind
    · have lt : x < k' := by
        apply Nat.lt_of_le_of_ne
        · apply divides_less <;> grind
        · assumption
      have gt : 1 < x := by
        cases x <;> grind
      obtain ⟨p,⟨prm,dvds⟩⟩ := ih x lt h gt
      exists p
      refine ⟨prm, ?_⟩
      apply divides_trans
      · assumption
      · grind

HOL4:

Theorem prime_factor:
  ∀k. ¬(prime k) ⇒ 1 < k ⇒ ∃p. prime p ∧ divides p k
Proof
  completeInduct_on ‘k’
  >> rpt strip_tac
  >> qpat_x_assum ‘¬_’
                  (fn h => assume_tac
                          (REWRITE_RULE [prime_def] h))
  >> gvs[]
  >> Cases_on ‘prime k'’
  >- (qexists ‘k'’ >> simp[])
  >- (first_x_assum $ qspecl_then [‘k'’] mp_tac
      >> strip_tac
      >> ‘0 < k'’ by metis_tac[divides_gt1_gt0]
      >> ‘1 < k'’ by decide_tac
      >> ‘k' <= k’ by gvs[divides_less]
      >> ‘k' < k’ by decide_tac
      >> first_x_assum drule
      >> strip_tac
      >> gvs[]
      >> qexists ‘p’
      >> metis_tac[divides_trans])
QED

The steps of 0 < k' ~> 1 < k' and k' <= k ~> k' < k in the HOL4 one annoyed me a lot, but I couldn't figure out how to golf them down. Similarly, this line:

    obtain ⟨x,⟨xd,dvds⟩,xn1,xnk⟩ := nprime kgt1

of the Lean proof causes me pain.

We're almost there now! Two more steps to go: Prove there's always a prime outside a given set (list) of numbers, and use that to show the final statement. First, the former:

Isabelle/HOL:

lemma another_prime: "(∀x∈set xs. x > 1) ⟹ ∃p. prime p ∧ p ∉ set xs"
  apply (case_tac "prime (Suc (prod_list xs))")
  using prod_list_lt apply fastforce
  apply (frule prime_factor)
   apply clarsimp
  apply (case_tac "length xs = 0"; clarsimp)
   apply (rule prod_list_gt_zero; clarsimp)
  using prime_gt_one apply fastforce
  using divides_prod_list divides_diff prime_gt_one one_divides
  by (metis One_nat_def Suc_diff_Suc cancel_comm_monoid_add_class.diff_cancel lessI nat_less_le)

Lean:

theorem another_prime (xs : List Nat) (xsgt : ∀x, x ∈ xs -> 1 < x)
  : ∃p, prime p ∧ p ∉ xs := by
  by_cases h : prime (Nat.succ (prod_list xs))
  · exists (Nat.succ (prod_list xs))
    refine ⟨h, ?a⟩
    by_contra
    have lt : Nat.succ (prod_list xs) ≤ prod_list xs := by
      apply prod_list_lt <;> grind
    grind
  · have ⟨pf, isprm, dvds⟩ : ∃p, prime p ∧ divides p (Nat.succ (prod_list xs)) := by
      apply prime_factor
      · exact h
      · grind [prod_list_nz]
    by_cases g : pf ∈ xs
    · have pfdvds : divides pf (prod_list xs) := by
        apply divides_prod_list <;> grind
      have divone : divides pf ((Nat.succ (prod_list xs)) - prod_list xs) := by
        apply divides_sub <;> grind
      have also : divides pf 1 := by grind
      grind [divides_not_one]
    · grind

HOL4:

Theorem another_prime:
  ∀(xs : num list). (∀x. x ∈ set xs ⇒ 1 < x)
                    ⇒ ∃p. prime p ∧ p ∉ set xs
Proof
  rpt strip_tac
  >> Cases_on ‘prime (SUC (prod_list xs))’
  >- (qexists ‘SUC (prod_list xs)’
      >> metis_tac[LESS_REFL, OR_LESS, prod_list_lt, gt1_gt0_weaken])
  >- (drule prime_factor
      >> impl_tac
      >- metis_tac[ONE, LESS_MONO, prod_list_nz,gt1_gt0_weaken]
      >- (strip_tac
          >> Cases_on ‘MEM p xs’
          >- (‘divides p (prod_list xs)’
                by metis_tac[divides_prod_list]
              >> ‘divides p ((SUC (prod_list xs)) - prod_list xs)’
                by metis_tac [divides_sub]
              >> gvs[]
              >> metis_tac[prime_one, prime_zero, divides_not_one])
          >- (qexists ‘p’ >> metis_tac[])))
QED

Agda:

prime-not-in : ∀ xs → (∀ x → x ∈ xs → x > 0) → Σ _ λ k → k ∉ xs × Prime k
prime-not-in xs gt with 2 ≤? prod-list xs
... | no ¬a = 2 , lemma , two-prime
  where
    lemma : 2 ∈ xs → ⊥
    lemma pf with prod-list-lt xs gt 2 pf
    ... | also = ¬a also
... | yes a with prime-or-composite (suc (prod-list xs)) (s≤s (≤-trans (s≤s z≤n) a))
... | inj₁ x = suc (prod-list xs) , lemma , x
  where
    lemma : (suc (prod-list xs)) ∈ xs → ⊥
    lemma pf with prod-list-lt xs gt (suc (prod-list xs)) pf
    ... | also = 1+n≰n also
... | inj₂ (composite p Pp p<n p∣) with p ∈? xs
... | no ¬b = p , ¬b , Pp
... | yes b with prod-list-divides xs p b
... | divs with divides-sub p∣ divs
... | sothen = ⊥-elim (lemma {p} {prod-list xs} sothen λ{ refl → one-prime Pp })
  where
    suc-sub : ∀ i → suc i ∸ i ≡ 1
    suc-sub zero = refl
    suc-sub (suc i) = suc-sub i

    lemma : ∀ {i j} → i ∣ (suc j ∸ j) → i ≢ 1 → ⊥
    lemma {_} {j} div neq rewrite suc-sub j = divides-not-one div neq

The Agda proof differs slightly to accommodate the lack of ranges later.

The Isabelle/HOL proof clearly wins in terms of length here, but it's also really unclear what's going on. Everyone else gets progressively more verbose, and the HOL4 proof in particular here is a bit nastily nested. metis_tac[] (a first-order solver) does a lot of heavy lifting, as does grind . If you're wondering why both Isabelle/HOL and HOL4 have something named metis / metis_tac , it's because it was ported to Isabelle/HOL from HOL4.

We arrive at our final statement! Agda requires some more fiddling as it doesn't have ranges built in like the other two do, but we use our lemma above to construct the list [2..n] , and then show there's a prime outside that (and that it hence must be above n ).

Isabelle/HOL:

lemma infinite_primes: "∃p. prime p ∧ p > n"
  apply (insert another_prime[where xs="[2 ..< Suc n]"])
  apply (case_tac "n ≤ 1"; clarsimp)
   apply (rule_tac x=2 in exI)
   apply simp
  apply (rule_tac x=p in exI)
  apply simp
  using prime_gt_one by force

Lean:

theorem infinite_primes : ∀ n, ∃p, prime p ∧ p > n := by
  intros n
  by_cases h : ¬(1 < n)
  · exists 2
    grind [prime_two]
  · simp at h
    obtain ⟨p, prm, notin⟩ := another_prime (List.range' 2 n) (by grind)
    refine ⟨p, prm, ?notin⟩
    grind

HOL4:

Theorem infinite_primes:
    ∀n. ∃p. prime p ∧ p > n
Proof
  strip_tac
  >> Cases_on ‘n < 1’
  >- (qexists ‘2’ >> simp[prime_two])
  >- (qspec_then ‘listRangeINC 2 n’ assume_tac another_prime
      >> ‘∀x. MEM x [2 .. n] ⇒ 1 < x’
        by (rpt strip_tac >> gvs[MEM_listRangeINC])
      >> first_x_assum rev_drule
      >> rpt strip_tac
      >> qexists ‘p’
      >> gvs[MEM_listRangeINC, prime_gt_one]
      >> ‘p ≠ 0’ by metis_tac[prime_zero]
      >> ‘p ≠ 1’ by metis_tac[prime_one]
      >> decide_tac)
QED

It annoys me I couldn't get this smaller, but oh well.

Agda:

infinite-primes : ∀ i → Σ _ λ p → p > i × Prime p
infinite-primes zero = 2 , s≤s z≤n , two-prime
infinite-primes (suc i) with prime-not-in (list-up-to (2+ i)) (list-up-to-nz (2+ i))
... | p , notin , Pp = p , DNE (2+ i ≤? p) lemma , Pp
  where
    notzero : p ≢ 0
    notzero = prime-not-zero p Pp

    implies : ∀ {a b} → (suc a ≤ b → ⊥) → (a ≡ b) ⊎ (a > b)
    implies {a} {b} x with compare a b
    ... | less .a k = ⊥-elim (x (s≤s (m≤m+n a k)))
    ... | equal .a = inj₁ refl
    ... | greater .b k = inj₂ (s≤s (m≤m+n b k))

    lemma : ((2+ i ≤ p) → ⊥) → ⊥
    lemma x with implies x
    ... | inj₁ refl = notin (there (here refl))
    ... | inj₂ (s≤s a) = notin (list-up-to-contains (2+ i) p (≤-trans a (≤-trans (n≤1+n i) (n≤1+n (suc i)))) (prime-not-zero p Pp))

We've done it! Euclid would be proud. (probably)

It's now time for more opinions!

Arbitrary Rankings

I have five criteria I'll be ranking on:

  • Ease of proof discovery (how easy is it to figure out what I want to do)
  • Ease of proof manipulation (how easy is it to do what I want)
  • Enjoyment (how much fun did I have)
  • Annoyance factor (how often was I going "ugh!")
  • Puzzled factor (how often did I go "why can't you solve this??")

Ease of proof discovery (higher better)

  1. Isabelle/HOL
  2. HOL4
  3. Lean
  4. Agda

Not much to comment on here, really. sledgehammer is a great boon, and both Isabelle/HOL and HOL4's theorem discovery tools are great. Lean was reasonably close behind, with try? often giving good related lemmas as a solve, and Agda was clearly last. Paging through .agda files online to find lemmas is annoying.

Ease of proof manipulation (higher better)

  1. Agda
  2. Lean
  3. HOL4
  4. Isabelle/HOL

Love it or hate it, Agda being entirely raw proof terms means things are essentially exactly what you tell them to be. There's never a moment where you're going "Damn, why won't the simplifier just expand this but not that!". Lean is pretty good here, as it's quite conservative around what it chooses to manipulate and everything is explicitly named. HOL4 has a pretty reasonable learning curve as one learns to use things like qpat_assum that can target based on patterns (e.g. ¬_ ), but once you figure it out it's not bad. Isabelle/HOL really isn't stunning here; it's often hard to get it to do exactly what you want.

Enjoyment (higher better)

  1. HOL4
  2. Lean
  3. Isabelle/HOL
  4. Agda

I had a great time learning both HOL4 and Lean, but HOL4 edges out because it's such a unique interaction mode and it's still very powerful. Lean was fun, although annoying at some times, and Isabelle/HOL wasn't particularly interesting, but some of that is because i'm familiar with it. Agda sort of sucked at times; writing a whole primality decision procedure and fiddling with type nonsense got quite annoying after a while.

Annoyance factor (lower better)

  1. Agda
  2. HOL4 / Lean (tied second)
  3. Isabelle/HOL

Agda "wins" for the same reasons as above. Having to do really manual proof search and fiddling constantly wasn't super pleasant. HOL4 and Lean both had their own annoyances and I think it's unfair to rank one over the other; the learning curve on assumption manipulation / sim was quite significant in HOL4 and Lean's automated tools were finicky enough it quite sucked at times. Isabelle/HOL i'm just used to, so there's some bias there.

Puzzled factor (lower better)

  1. HOL4
  2. Lean
  3. Isabelle/HOL
  4. Agda

Same reasons as above; there were a lot of times where HOL4 just had me going "huh????" because some theorem-tactic wasn't doing what I expected it to, or was transforming the goal in an unpredictable way. Lean had similar, where it would just randomly decide "erm actually i'm not going to solve this really simple goal for you with grind do it yourself please" in ways that left me baffled. Seriously, sometimes grind is smarter than sledgehammer and sometimes it's stupider than simp . Weird. Isabelle/HOL had some of the same but was generally fine, and Agda was utterly predictable.

Overall best in class

HOL4! I had a great time learning it, it's a seriously interesting system. I didn't not enjoy Lean, but there's enough odd stuff going on to make me slightly wary of it, I suppose. Isabelle/HOL remains the one I'm best at (I am somewhat paid to write it, so that helps), and Agda is Agda.

What should you try? Well, all of them, but I would at least try out something new. If you've only used dependent theorem provers before, try Isabelle/HOL or HOL4, and vice versa. If you've only used theorem provers that work fully interactively like Lean, try HOL4 or Agda! New experiences are the joys of life.

All the code

Enjoy.

Unfold for everything.

Isabelle/HOL:

theory primes
  imports Main
begin

definition divides :: "nat ⇒ nat ⇒ bool" where
  "divides n k = (∃j. j * n = k)"

lemma zero_not_divides: "k ≠ 0 ⟹ ¬(divides 0 k)"
  by (simp add: divides_def)

lemma one_divides: "divides k 1 ⟹ k = 1"
  by (simp add: divides_def)

lemma divide_mult_l: "divides x k ⟹ divides x (n * k)"
  using divides_def by auto

lemma divides_diff: "divides x k ⟹ divides x n ⟹ divides x (k - n)"
  using divides_def by (metis diff_mult_distrib)

lemma divides_gt: "k ≠ 0 ⟹ n > k ⟹ ¬(divides n k)"
  by (clarsimp simp add: divides_def)

lemma divides_less: "k ≠ 0 ⟹ divides n k ⟹ n ≤ k"
  by (clarsimp simp add: divides_def)

lemma divides_trans: "divides n k ⟹ divides k j ⟹ divides n j"
  using divides_def by force

fun prod_list :: "nat list ⇒ nat" where
"prod_list [] = 1" | 
"prod_list (x # xs) = x * prod_list xs"

lemma prod_list_gt_zero: "(∀x∈set xs. x ≠ 0) ⟹ length xs > 0 ⟹ prod_list xs > 0"
  apply (induct xs)
   apply simp
  by (case_tac xs; clarsimp)

lemma prod_list_lt: "(∀x∈set xs. x > 0) ⟹ ∀x∈set xs. x ≤ prod_list xs"
  apply (induct xs)
   apply simp
  apply auto
  using prod_list_gt_zero apply fastforce
  apply (erule_tac x=x in ballE)
  using mult_eq_if apply auto[1]
  by blast

lemma divides_prod_list: "x ∈ set xs ⟹ divides x (prod_list xs)"
  apply (induct xs)
   apply simp
  apply auto
   apply (case_tac xs; simp add: divides_def)
  apply (case_tac xs; simp)
  apply (rule divide_mult_l)
  by assumption

definition prime :: "nat ⇒ bool" where
  "prime p = ((p > 1) ∧ (∀x. divides x p ⟶ x = p ∨ x = 1))"

lemma prime_zero[simp]: "¬(prime 0)"
  by (clarsimp simp add: prime_def)

lemma prime_one[simp]: "¬(prime 1)"
  by (clarsimp simp add: prime_def)

lemma prime_two[simp]: "prime 2"
  apply (clarsimp simp add: prime_def)
  apply (case_tac x; clarsimp simp add: divides_def)
  apply (case_tac nat; clarsimp simp add: divides_def)
  by (case_tac j; simp)

lemma prime_gt_one: "prime p ⟹ p > 1"
  using prime_def by simp

lemma notprime_split: "¬(prime k) ⟹ k > 1 ⟹ ∃n j. n < k ∧ j < k ∧ k = n * j"
  apply (clarsimp simp add: prime_def divides_def)
  apply (rule_tac x=x in exI)
  apply (rule conjI)
   apply (metis less_Suc0 linorder_neqE_nat mult_is_0 n_less_m_mult_n)
  apply (rule_tac x=j in exI)
  apply auto
  by (metis bot_nat_0.not_eq_extremum mult_zero_left not_less_zero)

lemma prime_not_divides_one: "prime p ⟹ ¬(divides p 1)"
  by (clarsimp simp add: prime_def divides_def)

lemma prime_factor: "¬(prime k) ⟹ k > 1 ⟹ ∃p. prime p ∧ divides p k"
  apply (induct k rule: measure_induct[of "id"]; simp)
  apply (rotate_tac 1)
  apply (subst (asm) prime_def)
  apply clarsimp
  apply (case_tac "prime xa")
   apply blast
  apply (erule_tac x=xa in allE)
  by (metis divides_gt divides_trans less_Suc0 not_less_iff_gr_or_eq zero_not_divides)


lemma another_prime: "(∀x∈set xs. x > 1) ⟹ ∃p. prime p ∧ p ∉ set xs"
  apply (case_tac "prime (Suc (prod_list xs))")
  using prod_list_lt apply fastforce
  apply (frule prime_factor)
   apply clarsimp
  apply (case_tac "length xs = 0"; clarsimp)
   apply (rule prod_list_gt_zero; clarsimp)
  using prime_gt_one apply fastforce
  using divides_prod_list divides_diff prime_gt_one one_divides
  by (metis One_nat_def Suc_diff_Suc cancel_comm_monoid_add_class.diff_cancel lessI nat_less_le)

lemma infinite_primes: "∃p. prime p ∧ p > n"
  apply (insert another_prime[where xs="[2 ..< Suc n]"])
  apply (case_tac "n ≤ 1"; clarsimp)
   apply (rule_tac x=2 in exI)
   apply simp
  apply (rule_tac x=p in exI)
  apply simp
  using prime_gt_one by force

end

Lean:

import Primes.Basic
import Mathlib.Tactic.ByContra

set_option linter.style.setOption false
set_option linter.flexible false
set_option linter.style.whitespace false

@[grind]
def divides (n k : Nat) : Prop :=
  ∃q, k = n * q

theorem divides_one (n : Nat) : divides n 1 -> n = 1 := by
  intro ⟨q, hq⟩
  cases n <;> cases q <;> grind

theorem divides_not_one (n : Nat) (d : divides n 1) (neq : n ≠ 1) : False := by
  grind [divides_one]

theorem divides_sub (n j k : Nat) (h1 : divides n k) (h2 : divides n j)
  : divides n (k - j) := by
  obtain ⟨q1, h1⟩ := h1
  obtain ⟨q2, h2⟩ := h2
  unfold divides
  exists (q1 - q2)
  grind [Nat.mul_sub]

theorem divides_less (n k : Nat) : k ≠ 0 -> divides n k -> n ≤ k := by
  intro knz div
  simp at *
  obtain ⟨q,hq⟩ := div
  cases q <;> grind

theorem divides_trans (n k j) : divides n k -> divides k j -> divides n j := by
  intro ⟨a,b⟩ ⟨c,d⟩
  simp [divides] at *
  exists (a * c)
  grind

@[simp, grind]
def prod_list (xs : List Nat) : Nat :=
  match xs with
  | [] => 1
  | x :: xs => x * prod_list xs

theorem divides_prod_list : ∀ xs x, x ∈ xs -> divides x (prod_list xs) := by
  intros xs x mem
  induction xs with
  | nil => grind
  | cons y ys ih =>
    by_cases h : (x = y)
    · rw [h]
      simp
      exists (prod_list ys)
    · cases mem with
      | head => grind
      | tail =>
        rename_i a
        have ⟨h, hq⟩ := ih a
        simp at *
        rw [hq]
        exists (y * h)
        grind

theorem prod_list_nz : ∀ xs, (∀ x ∈ xs, x > 0) -> prod_list xs > 0 := by
  intros xs f
  induction xs with
  | nil => grind
  | cons x xs ih =>
    obtain b : prod_list xs > 0 := ih (by grind)
    simp [*]

theorem prod_list_lt : ∀ xs, (∀ x ∈ xs, x > 0) -> ∀ y ∈ xs, y <= prod_list xs := by
  intro xs f y yin
  induction xs with
  | nil => grind
  | cons yp ys ih =>
    cases yin with
    | head =>
      obtain a : prod_list ys > 0 := by grind [prod_list_nz]
      exact Nat.le_mul_of_pos_right y a
    | tail _ a =>
      obtain a : y <= prod_list ys := ih (by grind) a
      obtain b : yp > 0 := f yp (by grind)
      apply Nat.le_trans
      · exact a
      · exact Nat.le_mul_of_pos_left (prod_list ys) b

@[simp, grind]
def prime (n : Nat) : Prop :=
  (n > 1) ∧ (∀k, divides k n -> k = 1 ∨ k = n)

theorem prime_two : prime 2 := by
  simp
  intros k x
  simp [divides] at x
  have ⟨q,hq⟩ := x
  (cases q <;> cases k <;> grind)


theorem prime_factor : ∀k, ¬(prime k) -> 1 < k -> ∃p, prime p ∧ divides p k := by
  intros k nprime kgt1
  induction k using Nat.strongRecOn with
  | ind k' ih =>
    simp at nprime
    obtain ⟨x,⟨xd,dvds⟩,xn1,xnk⟩ := nprime kgt1
    clear nprime
    by_cases h : prime x
    · exists x
      grind
    · have lt : x < k' := by
        apply Nat.lt_of_le_of_ne
        · apply divides_less <;> grind
        · assumption
      have gt : 1 < x := by
        cases x <;> grind
      obtain ⟨p,⟨prm,dvds⟩⟩ := ih x lt h gt
      exists p
      refine ⟨prm, ?_⟩
      apply divides_trans
      · assumption
      · grind


theorem another_prime (xs : List Nat) (xsgt : ∀x, x ∈ xs -> 1 < x)
  : ∃p, prime p ∧ p ∉ xs := by
  by_cases h : prime (Nat.succ (prod_list xs))
  · exists (Nat.succ (prod_list xs))
    refine ⟨h, ?a⟩
    by_contra
    have lt : Nat.succ (prod_list xs) ≤ prod_list xs := by
      apply prod_list_lt <;> grind
    grind
  · have ⟨pf, isprm, dvds⟩ : ∃p, prime p ∧ divides p (Nat.succ (prod_list xs)) := by
      apply prime_factor
      · exact h
      · grind [prod_list_nz]
    by_cases g : pf ∈ xs
    · have pfdvds : divides pf (prod_list xs) := by
        apply divides_prod_list <;> grind
      have divone : divides pf ((Nat.succ (prod_list xs)) - prod_list xs) := by
        apply divides_sub <;> grind
      have also : divides pf 1 := by grind
      grind [divides_not_one]
    · grind

theorem infinite_primes : ∀ n, ∃p, prime p ∧ p > n := by
  intros n
  by_cases h : ¬(1 < n)
  · exists 2
    grind [prime_two]
  · simp at h
    obtain ⟨p, prm, notin⟩ := another_prime (List.range' 2 n) (by grind)
    refine ⟨p, prm, ?notin⟩
    grind

HOL4:

open arithmeticTheory listTheory prim_recTheory listRangeTheory;
     
Definition divides_def:
  divides n k = ∃q. q * n = k
End

Theorem divides_not_one:
  ∀n. divides n 1 ⇒ n ≠ 1 ⇒ F
Proof
  simp[divides_def]
QED

Theorem divides_less:
  k ≠ 0 ⇒ divides n k ⇒ n ≤ k
Proof
  rpt strip_tac
  >> gvs[divides_def]
QED

Theorem divides_trans:
  divides a b ⇒ divides b c ⇒ divides a c
Proof
  rpt strip_tac
  >> gvs[divides_def]
  >> qexists ‘q * q'’
  >> gvs[MULT_ASSOC_COMM]
QED

Theorem divides_sub:
  divides n k ⇒ divides n j ⇒ divides n (k - j)
Proof
  rpt strip_tac
  >> metis_tac[RIGHT_SUB_DISTRIB, divides_def]
QED
            
Definition prod_list_def:
  (prod_list [] = 1) ∧
  (prod_list (x :: xs) = x * prod_list xs)
End

Theorem divides_prod_list:
  x ∈ set xs ⇒ divides x (prod_list xs)
Proof
  Induct_on ‘xs’
  >- fs[]
  >- (fs[]
      >> rpt strip_tac
      >- (fs[prod_list_def, divides_def]
          >> qexists_tac ‘prod_list xs’
          >> simp[])
      >- (fs[divides_def, prod_list_def]
          >> qexists_tac ‘h * q’
          >> rev_drule EQ_SYM
          >> strip_tac
          >> fs[]))
QED      

Theorem prod_list_nz:
  ∀xs. (∀x. x ∈ set xs ⇒ 0 < x) ⇒ 0 < prod_list xs
Proof
  rpt strip_tac
  >> Induct_on ‘xs’
  >> fs[prod_list_def]
QED
     
Theorem prod_list_lt:
  ∀xs. (∀x. x ∈ set xs ⇒ 0 < x) ⇒ ∀y. y ∈ set xs ⇒ y ≤ prod_list xs
Proof
  rpt strip_tac
  >> Induct_on ‘xs’
  >> gvs[]
  >> rpt strip_tac
  >> gvs[prod_list_def]
  >> metis_tac[prod_list_nz, LE_MULT_CANCEL_LBARE, LE_TRANS]
QED

Definition prime_def:
  prime n = ((1 < n) ∧ (∀k. divides k n ⇒ k = 1 ∨ k = n))
End

Theorem prime_zero:
  ¬(prime 0)
Proof
  fs[prime_def]
QED        


Theorem prime_one:
  ¬(prime 1)
Proof
  fs[prime_def]
QED

Theorem prime_gt_one[simp]:
  prime n ⇒ 1 < n
Proof
  fs[prime_def]
QED
              
Theorem prime_two:
  prime 2
Proof        
  fs[prime_def]
  >> rpt strip_tac
  >> fs[divides_def]
  >> (Cases_on ‘k’ >> Cases_on ‘q’ >> fs[MULT_SUC])
QED

Theorem divides_gt1_gt0:
  ∀n k. divides n k ⇒ 1 < k ⇒ 0 < n
Proof
  rpt strip_tac
  >> gvs[divides_def]
  >> (Cases_on ‘q’ >> gvs[MULT_SUC])
  >> (Cases_on ‘n’ >> gvs[])
QED

Theorem prime_factor:
  ∀k. ¬(prime k) ⇒ 1 < k ⇒ ∃p. prime p ∧ divides p k
Proof
  completeInduct_on ‘k’
  >> rpt strip_tac
  >> qpat_x_assum ‘¬_’
                  (fn h => assume_tac
                          (REWRITE_RULE [prime_def] h))
  >> gvs[]
  >> Cases_on ‘prime k'’
  >- (qexists ‘k'’ >> simp[])
  >- (first_x_assum $ qspecl_then [‘k'’] mp_tac
      >> strip_tac
      >> ‘0 < k'’ by metis_tac[divides_gt1_gt0]
      >> ‘1 < k'’ by decide_tac
      >> ‘k' <= k’ by gvs[divides_less]
      >> ‘k' < k’ by decide_tac
      >> first_x_assum drule
      >> strip_tac
      >> gvs[]
      >> qexists ‘p’
      >> metis_tac[divides_trans])
QED

Theorem gt1_gt0_weaken:
  ∀x. 1 < x ⇒ 0 < x
Proof
  strip_tac >> decide_tac
QED

Theorem another_prime:
  ∀(xs : num list). (∀x. x ∈ set xs ⇒ 1 < x)
                    ⇒ ∃p. prime p ∧ p ∉ set xs
Proof
  rpt strip_tac
  >> Cases_on ‘prime (SUC (prod_list xs))’
  >- (qexists ‘SUC (prod_list xs)’
      >> metis_tac[LESS_REFL, OR_LESS,
                   prod_list_lt, gt1_gt0_weaken])
  >- (drule prime_factor   
      >> impl_tac
      >- metis_tac[ONE, LESS_MONO, prod_list_nz,gt1_gt0_weaken]
      >- (strip_tac
          >> Cases_on ‘MEM p xs’
          >- (‘divides p (prod_list xs)’
                by metis_tac[divides_prod_list]
              >> ‘divides p ((SUC (prod_list xs)) - prod_list xs)’
                by metis_tac [divides_sub]
              >> gvs[]
              >> metis_tac[prime_one, prime_zero, divides_not_one])
          >- (qexists ‘p’ >> metis_tac[])))
QED

                    
Theorem infinite_primes:
    ∀n. ∃p. prime p ∧ p > n
Proof
  strip_tac
  >> Cases_on ‘n < 1’
  >- (qexists ‘2’ >> simp[prime_two])
  >- (qspec_then ‘listRangeINC 2 n’ assume_tac another_prime
      >> ‘∀x. MEM x [2 .. n] ⇒ 1 < x’
        by (rpt strip_tac >> gvs[MEM_listRangeINC])

      >> first_x_assum rev_drule
      >> rpt strip_tac
      >> qexists ‘p’
      >> gvs[MEM_listRangeINC, prime_gt_one]
      >> ‘p ≠ 0’ by metis_tac[prime_zero]
      >> ‘p ≠ 1’ by metis_tac[prime_one]
      >> decide_tac)
QED

Agda:

open import Data.Nat renaming (ℕ to Nat)
open import Data.Nat.Properties
open import Relation.Binary.PropositionalEquality
open import Data.Product
open import Data.Empty
open import Relation.Nullary.Negation
open import Data.List
open import Data.Sum
open import Relation.Nullary.Decidable
open import Relation.Binary
open import Relation.Nullary.Reflects
open import Data.Nat.Divisibility
open import Data.Bool using (Bool; true; false)
open import Data.Fin using (zero; suc; Fin; toℕ; fromℕ; fromℕ<)
open import Data.Fin.Properties using (toℕ-fromℕ; toℕ-fromℕ<)
open import Induction.WellFounded
open import Data.Nat.Induction using (<-wellFounded; <-rec)

import Data.List.Membership.DecPropositional as DecPropMembership
open DecPropMembership Data.Nat._≟_
open import Data.List.Relation.Unary.Any using (here; there)

-- The prime decision procedure was with assistance from https://gist.github.com/copumpkin/1286093

div-goes-into : ∀ i k → k ≢ 0 → i ∣ k → i ≤ k
div-goes-into i k neq (divides zero eq) = ⊥-elim (neq eq)
div-goes-into zero k neq (divides (suc q) eq) = z≤n
div-goes-into (suc i) k neq (divides-refl (suc q)) = s≤s (m≤m+n i (q * suc i))

divides-zero : ∀ i → 0 ∣ i → i ≡ 0
divides-zero zero (divides q eq) = refl
divides-zero (suc i) (divides q eq) rewrite *-comm q 0 = eq

divides-trans : ∀ {i j k} → i ∣ j → j ∣ k → i ∣ k
divides-trans {i} (divides-refl q₁) (divides q₂ eq₂) = divides (q₂ * q₁) (trans eq₂ (sym (*-assoc q₂ q₁ i)))

divides-sub : ∀ {i j k} → i ∣ j → i ∣ k → i ∣ (j ∸ k)
divides-sub {i} (divides-refl q₁) (divides-refl q₂) = divides (q₁ ∸ q₂) (sym (*-distribʳ-∸ i q₁ q₂))

divides-one : ∀ i → i ∣ 1 → i ≡ 1
divides-one zero (divides (suc q) eq) rewrite *-comm q 0 = ⊥-elim (1+n≢0 eq)
divides-one (suc zero) (divides (suc q) eq) = refl

divides-not-one : ∀ {i} → i ∣ 1 → i ≢ 1 → ⊥
divides-not-one {zero} (divides q eq) neq rewrite *-comm q 0 = 1+n≢0 eq
divides-not-one {suc zero} (divides q eq) neq = neq refl
divides-not-one {2+ i} (divides zero eq) neq = 1+n≢0 eq
divides-not-one {2+ i} (divides (suc q) eq) neq = 1+n≢0 (sym (suc-injective eq))

lt-left-suc : ∀ i j → i ≤ j → i ≢ j → suc i ≤ j
lt-left-suc zero zero z≤n p = ⊥-elim (p refl)
lt-left-suc zero (suc j) z≤n p = s≤s z≤n
lt-left-suc (suc i) zero () p
lt-left-suc (suc i) (suc j) (s≤s x) p = s≤s (lt-left-suc i j x λ q → p (cong suc q))


not : {A : Set} → Dec A → Dec (¬ A)
not (yes p) = no (λ z → z p)
not (no ¬p) = yes ¬p

DNE : {A : Set} → Dec A → ¬ ¬ A → A
DNE (yes p) f = p
DNE (no ¬p) f = ⊥-elim (f ¬p)

Decide : {A : Set} (P : A → Set) → Set
Decide P = ∀ i → Dec (P i)

lt-lower : ∀ {i j} → suc i ≤ suc j → i ≢ j → suc i ≤ j
lt-lower {zero} {zero} (s≤s p) q = ⊥-elim (q refl)
lt-lower {zero} {suc j} (s≤s p) q = s≤s z≤n
lt-lower {suc i} {suc j} (s≤s p) q = s≤s (lt-lower p λ x → q (cong suc x))

lt-decide : ∀ i → (P : Nat → Set) (p? : ∀ n → n < i → Dec (P n)) → (∀ n → n < i → P n) ⊎ (Σ _ λ j → j < i × ¬ (P j))
lt-decide zero P p? = inj₁ λ _ ()
lt-decide (suc i) P p? with lt-decide i P h
  where
    h : (n : Nat) → n < i → Dec (P n)
    h n lt = p? n (s≤s (<⇒≤ lt))
... | inj₂ (a , b , c) = inj₂ (a , s≤s (≤-trans (n≤1+n a) b) , c)
... | inj₁ x with p? i ≤-refl
... | no ¬a = inj₂ (i , ≤-refl , ¬a)
... | yes a = inj₁ h
  where
    h : (n : Nat) → suc n ≤ suc i → P n
    h n lt with n ≟ i
    ... | yes refl = a
    ... | no ¬a = x n (lt-lower lt ¬a)

¬lt-decide : ∀ i → (P : Nat → Set) (p? : ∀ n → n < i → Dec (P n)) → (∀ n → n < i → ¬ P n) ⊎ (Σ _ λ j → j < i × (P j))
¬lt-decide i P p? with lt-decide i (λ x → ¬ (P x)) (λ n x → not (p? n x))
... | inj₁ x = inj₁ x
... | inj₂ (a , b , c) = inj₂ (a , b , DNE (p? a b) c)

record Prime (n : Nat) : Set where
  constructor isprime
  field
    gt1 : n > 1
    div : ∀ k → k ∣ n → k ≡ 1 ⊎ k ≡ n

open Prime

zero-prime : ¬ (Prime 0)
zero-prime ()

prime-not-zero : ∀ p → Prime p → p ≢ 0
prime-not-zero p x refl = zero-prime x

one-prime : ¬ (Prime 1)
one-prime (isprime (s≤s ()) div)

two-prime : Prime 2
two-prime .gt1 = s≤s (s≤s z≤n)
two-prime .div zero (divides (suc q) eq) rewrite *-comm q 0 = ⊥-elim (1+n≢0 eq)
two-prime .div (suc zero) (divides (suc q) eq) = inj₁ refl
two-prime .div (2+ zero) (divides (suc q) eq) = inj₂ refl

record Composite (n : Nat) : Set where
  constructor composite
  field
    p : Nat
    Pp : Prime p
    p<n : p < n
    p∣ : p ∣ n

not-prime-and-composite : ∀ p → Prime p → Composite p → ⊥
not-prime-and-composite _ (isprime gt2 div₁) (composite p (isprime gt3 div₂) p<n p∣) with div₁ p p∣
... | inj₁ refl = one-prime (isprime gt3 div₂)
... | inj₂ refl = 1+n≰n p<n

prime-or-composite : ∀ p → p > 1 → Prime p ⊎ Composite p
prime-or-composite (suc zero) (s≤s ())
prime-or-composite (2+ p) lt = <-rec _ h p
  where
    h : (x : Nat) →
         ({y : Nat} → suc y ≤ x → Prime (2+ y) ⊎ Composite (2+ y)) →
         Prime (2+ x) ⊎ Composite (2+ x)
    h x f with ¬lt-decide x (λ k → (2+ k) ∣ (2+ x)) (λ n nlt → 2+ n ∣? 2+ x)
    ... | inj₂ (ev₁ , ev₂ , ev₃) with f ev₂
    h x f | inj₂ (ev₁ , ev₂ , ev₃) | inj₁ prm = inj₂ (composite (2+ ev₁) prm (s≤s (s≤s ev₂)) ev₃)
    h x f | inj₂ (ev₁ , ev₂ , ev₃) | inj₂ (composite p Pp (s≤s p<n) p∣) =
        inj₂ (composite p Pp (s≤s (≤-trans p<n (≤-trans ev₂ (n≤1+n x)))) (divides-trans p∣ ev₃))
    h x f | inj₁ eq = inj₁ (isprime (s≤s (s≤s z≤n)) lemma)
      where
        lemma : (k : Nat) → k ∣ 2+ x → k ≡ 1 ⊎ k ≡ 2+ x
        lemma k dv with k ≟ 1 | k ≟ (2+ x)
        ... | no ¬a | yes refl = inj₂ refl
        ... | yes refl | no ¬b = inj₁ refl
        ... | yes refl | yes ()
        lemma zero dv | no ¬a | no ¬b rewrite divides-zero (2+ x) dv = inj₂ refl
        lemma (suc zero) dv | no ¬a | no ¬b = inj₁ refl
        lemma (2+ k) dv | no ¬a | no ¬b with suc k ≤? x
        ... | yes k≤x = ⊥-elim (eq k k≤x dv)
        ... | no ¬k≤x = ⊥-elim (¬k≤x sothen)
          where
            one : 2+ k ≤ 2+ x
            one = div-goes-into (2+ k) (2+ x) 1+n≢0 dv

            two : k ≤ x
            two with one
            ... | s≤s (s≤s a) = a

            also : k ≢ x
            also x = ¬b (cong suc (cong suc x))

            sothen : suc k ≤ x
            sothen = lt-left-suc k x two also

prod-list : List Nat → Nat
prod-list [] = 1
prod-list (x ∷ xs) = x * prod-list xs

prod-list-nz : ∀ xs → (∀ x → x ∈ xs → x > 0) → prod-list xs > 0
prod-list-nz [] f = s≤s z≤n
prod-list-nz (x ∷ []) f rewrite *-comm x 1 rewrite +-comm x 0 = f x (here refl)
prod-list-nz (x ∷ x₁ ∷ xs) f = h {x} (f x (here refl)) (prod-list-nz (x₁ ∷ xs) (λ x₂ z → f x₂ (there z)))
  where
    h : ∀ {i j} → 1 ≤ i → 1 ≤ j → 1 ≤ i * j
    h {suc i} {suc j} (s≤s a) (s≤s b) = s≤s z≤n

prod-list-NZ : ∀ xs → (∀ x → x ∈ xs → x > 0) → NonZero (prod-list xs)
prod-list-NZ xs f = >-nonZero (prod-list-nz xs f)

prod-list-lt : ∀ xs → (∀ x → x ∈ xs → x > 0) → ∀ y → y ∈ xs → y ≤ prod-list xs
prod-list-lt [] f y ()
prod-list-lt (x ∷ xs) f y (here refl) = m≤m*n x (prod-list xs) ⦃ prod-list-NZ xs λ x₂ z → f x₂ (there z) ⦄
prod-list-lt (x ∷ xs) f y (there py) = also (prod-list-lt xs (λ x₂ z → f x₂ (there z)) y py) (f x (here refl))
  where
    lt+ : ∀ {i j k} → i ≤ j → i ≤ j + k
    lt+ z≤n = z≤n
    lt+ (s≤s x) = s≤s (lt+ x)

    also : ∀ {i j k} → i ≤ k → 1 ≤ j → i ≤ j * k
    also a (s≤s z≤n) = lt+ a

prod-list-divides : ∀ xs x → x ∈ xs → x ∣ prod-list xs
prod-list-divides [] x ()
prod-list-divides (y ∷ xs) x (here refl) = divides (prod-list xs) (*-comm y (prod-list xs))
prod-list-divides (y ∷ xs) x (there p) with prod-list-divides xs x p
... | divides q eq rewrite eq = divides (y * q) (sym (*-assoc y q x))

prime-not-in : ∀ xs → (∀ x → x ∈ xs → x > 0) → Σ _ λ k → k ∉ xs × Prime k
prime-not-in xs gt with 2 ≤? prod-list xs
... | no ¬a = 2 , lemma , two-prime
  where
    lemma : 2 ∈ xs → ⊥
    lemma pf with prod-list-lt xs gt 2 pf
    ... | also = ¬a also
... | yes a with prime-or-composite (suc (prod-list xs)) (s≤s (≤-trans (s≤s z≤n) a))
... | inj₁ x = suc (prod-list xs) , lemma , x
  where
    lemma : (suc (prod-list xs)) ∈ xs → ⊥
    lemma pf with prod-list-lt xs gt (suc (prod-list xs)) pf
    ... | also = 1+n≰n also
... | inj₂ (composite p Pp p<n p∣) with p ∈? xs
... | no ¬b = p , ¬b , Pp
... | yes b with prod-list-divides xs p b
... | divs with divides-sub p∣ divs
... | sothen = ⊥-elim (lemma {p} {prod-list xs} sothen λ{ refl → one-prime Pp })
  where
    suc-sub : ∀ i → suc i ∸ i ≡ 1
    suc-sub zero = refl
    suc-sub (suc i) = suc-sub i

    lemma : ∀ {i j} → i ∣ (suc j ∸ j) → i ≢ 1 → ⊥
    lemma {_} {j} div neq rewrite suc-sub j = divides-not-one div neq


list-up-to : Nat → List Nat
list-up-to 0 = 1 ∷ []
list-up-to (suc n) = suc n ∷ list-up-to n

list-up-to-nz : ∀ k x → x ∈ list-up-to k → x > 0
list-up-to-nz zero x (here refl) = s≤s z≤n
list-up-to-nz (suc k) x (here refl) = s≤s z≤n
list-up-to-nz (suc k) x (there p) = list-up-to-nz k x p

list-up-to-contains : ∀ i j → j ≤ i → j ≢ 0 → j ∈ list-up-to i
list-up-to-contains zero zero z≤n b = ⊥-elim (b refl)
list-up-to-contains zero (suc j) () b
list-up-to-contains (suc i) zero z≤n b = ⊥-elim (b refl)
list-up-to-contains (suc i) (suc j) (s≤s a) b with suc i ≟ suc j
... | no ¬c = there (list-up-to-contains i (suc j) (lt-left-suc j i a λ x → ¬c (cong suc (sym x))) b)
... | yes refl = here refl


infinite-primes : ∀ i → Σ _ λ p → p > i × Prime p
infinite-primes zero = 2 , s≤s z≤n , two-prime
infinite-primes (suc i) with prime-not-in (list-up-to (2+ i)) (list-up-to-nz (2+ i))
... | p , notin , Pp = p , DNE (2+ i ≤? p) lemma , Pp
  where
    notzero : p ≢ 0
    notzero = prime-not-zero p Pp

    implies : ∀ {a b} → (suc a ≤ b → ⊥) → (a ≡ b) ⊎ (a > b)
    implies {a} {b} x with compare a b
    ... | less .a k = ⊥-elim (x (s≤s (m≤m+n a k)))
    ... | equal .a = inj₁ refl
    ... | greater .b k = inj₂ (s≤s (m≤m+n b k))

    lemma : ((2+ i ≤ p) → ⊥) → ⊥
    lemma x with implies x
    ... | inj₁ refl = notin (there (here refl))
    ... | inj₂ (s≤s a) = notin (list-up-to-contains (2+ i) p (≤-trans a (≤-trans (n≤1+n i) (n≤1+n (suc i)))) (prime-not-zero p Pp))

Why Are Coding Agents So Dumb?

Lobsters
mtlynch.io
2026-10-09 10:22:04
Comments...
Original Article

The first time I used a coding agent, I was mesmerized . Before the agent, I was copy/pasting between my IDE and an AI chat interface. It was amazing to see an agent edit files directly and fix its own errors in real time.

After a few days, the honeymoon wore off as I encountered frequent bugs. The agent would stop responding entirely until I restarted it. Development workflows felt stiflingly primitive, and the agent would often declare tasks finished when work had barely begun.

This was in February 2025, so it was still early days for coding agents. I figured that in six months, agents would be as technically impressive as the underlying LLMs.

Instead, coding agents just stayed bad.

AI-assisted development has clearly advanced, but the models are doing the heavy lifting while the agents remain the bottleneck.

The agent is not the model 🔗︎

In all the hype around AI, the terms tend to get distorted. People are beginning to overload and mix terms like “model” and “agent.”

When I say “model,” I’m talking about large language models (LLMs) like GPT Astra, Claude Sonnet, and GLM-5.3. Models generate text and images, including pretty good software code.

When I say “agent,” I mean the software that connects models to codebases and computer systems. These are tools like Anthropic’s Claude Code or OpenAI’s Codex.

As a simple analogy, the model is the brain, and the agent is the body. The model produces a stream of text, and the agent acts as the glue that plugs the text into the right commands and files on the system.

Limitations of current coding agents 🔗︎

Agents can’t manage tasks 🔗︎

My biggest gripe with coding agents is how atrociously they manage tasks.

For example, I have an open-source web app that generates shareable links for file uploads. I recently added support for protecting links with a passphrase . It was a relatively simple change, totalling about 1.5k lines of new code. OpenCode dutifully broke the feature into 10 subtasks, but then it just… did them all one by one:

Why are you doing these embarrassingly parallel tasks one at a time?

Umm… you’re a computer ! You’re really good at multitasking. That’s why we keep giving you all those CPU cores. You can do multiple things in parallel and context switch millions of times faster than humans. Why are you doing these embarrassingly parallel tasks one at a time?

Claude Code multitasks, but only a little. It will spin up a subagent or two, but it still waits for all of them to finish before moving on. Multiple times per day, I’ll see Claude Code sit around for several minutes waiting for my end-to-end tests to finish, and then only after the tests pass does it say, “Hmm, now I should start drafting a commit message. Let me look at the git history to learn your commit message conventions .”

Agents can’t delegate 🔗︎

When I’m using a cutting-edge model, and it needs to check 50k lines of code for a particular pattern, the agent never stops and says, “Wait, this is something another model could do cheaper and faster.” It just plows on with the slow, expensive model. Conversely, the agent never says, “This model is too dumb for this task. Let me tag in a smarter one.”

Of course, I can actively micromanage the task and keep switching the model and thinking level to match each subtask’s difficulty, but why is that my job? Do you also need me to manage your thread pool for you? Do you expect me free your unused RAM for you, too?

You know what technology would be good at assigning a difficulty level to a task and then matching those requirements to a model? An LLM! Just ask the LLM to pick the cheapest, fastest model for the task. Why do you need me to babysit you?

I constantly run into tasks that are 95% gruntwork, but I still have to assign them to the smartest model because chopping up the task and delegating on the agent’s behalf would take up too much of my time.

Thanks for telling me which is the default model, Claude.

Agents have never heard of agents 🔗︎

Agents don’t know anything about themselves. If I ask Claude how to use the features of Claude, it has to search online to figure out what this “Claude” thing is. Claude is more comfortable answering questions about C programming than talking about itself (in fairness, same with most human developers).

Uh… you’re Claude Code! You don’t know any of your own freaking features? And you’re just Googling instructions regardless of whether they match your version number? You’ll casually download 13 GB of files for a feature the user has never used, but you can’t spare 50 KB of gzipped text in your install package to explain your own features to you?

Imagine if you asked your teammate for a code review , and they started furiously Googling to find out if code reviews are something developers do. And then when you asked them for another code review the next day, they had no memory of your previous conversation and ran back to Google and anxiously typed, "do software engineers do code reviews?"

Agents suck at communicating plans 🔗︎

I used to love the agent UX feature of separate “Plan” and “Execute” modes. For complicated tasks, I’d ask the agent to create a plan, then I’d review it, suggest changes, and delegate execution to a faster, cheaper agent.

Over time, I felt an aversion to reading the plans. I’d often skip my review and just let the agent move straight to implementation.

I thought coding agents had made me lazy, but I realized that agents just communicate their plans so poorly that they’re painful to read.

Here’s an example of me asking Codex + GPT-6 Astra to add a feature to my media journalling web app :

You can’t just list a bunch of disparate details and call it a plan, Codex.

That’s not a plan! That’s just a hodgepodge of low-level design decisions.

If I asked a competent developer to plan this feature, they’d either start with a high-level plan for UI changes and work their way down or describe changes to the data model and work their way up. If the developer started enumerating random facts about the feature, I’d assume they were brainstorming and come back later.

Agents take any excuse to stop working 🔗︎

The other night, I kicked off a long task in a coding agent before I went to bed. I came back the next morning to find that the agent hadn’t even started working. It stopped two minutes after I left to ask me what it should name a git branch and then sat all night waiting for my answer.

If I had a human employee tell me they sat idle their whole shift because they wanted my input on some superficial detail, I’d quickly fire them.

Agents are only useful when they take unnecessary risks 🔗︎

When I started using my first coding agent, I looked for the setting that controlled which files on my system the agent is allowed to access. Surely, there was some sort of filesystem permissions or limited chroot kind of protection that prevents a random and unpredictable piece of software from exploring my entire computer unfettered, right?

Not so. The docs encouraged me to write the LLM a polite letter kindly requesting that it not read certain files or directories. I tried that, and the agent immediately ignored my request, exfiltrating private application keys to OpenAI and Anthropic.

I thought that security boundaries would be one of the first things coding agents would implement, but even today, agents are only usable if you give them access to everything. Agents routinely bypass their own vendors’ sandboxes . The alternative is to sit there and click “Allow” 500 times a day, and that’s not even reliable protection because you’re bound to misclick eventually.

What makes this so maddening is that we’ve had sandboxing tools for more than a decade that can limit the blast radius of mistakes from coding agents. I rolled my own sandbox so that agents can’t explore my filesystem beyond the repo directory. I never have to worry about agents accidentally exfiltrating my home directory or wiping critical files on my machine because they just don’t have access to do that.

“Coding agents are perfect if you just…” 🔗︎

I know some readers will say that I can solve all of my problems if I just install 200k lines of skill files from random git repos or set some obscure feature flag in my config file.

I’m talking about my expectations of what coding agents should be able to do out of the box without me installing random plugins or skill files or spending hours tweaking the configuration.

My dream agent 🔗︎

What I wish all coding agents did 🔗︎

These are the basics that I think should be table stakes for coding agents in 2026.

  • The agent splits requests into a series of tasks and assigns each task to the appropriate model.
    • The agent optimizes for cost, speed, and correctness and allows the user to adjust the dials per task (e.g., spend more for a faster result).
  • The agent writes plans that optimize for human comprehension.
  • The agent operates within a real sandbox.
    • The sandbox uses OS-level security primitives to create boundaries at the filesystem and networking level.
    • All access control code is deterministic, not humble suggestions that the agent is welcome to ignore.
    • If I ask the agent whether a list of regexes on bash commands is a sandbox, it replies, “No.”
  • The agent applies per-environment sandboxing.
    • The agent has access to a single repo/directory by default.
    • I can give the agent read-only or read-write access to other repos on a per-session basis.
  • The agent is an expert on itself.
    • If I ask the agent how to express a task or workflow to the agent, it knows the answer without having to search online.
  • The agent can use any LLM provider, including unlimited plans.
  • The agent is open-source.
  • If I don’t answer a question in “Execute” mode, and I haven’t interacted with the session in 30 minutes, the agent makes the decision independently.
    • The agent also offers an “AFK mode,” which skips the 30-minute wait.
  • The agent lets me drive the subagents, too.
    • I should be able to jump into any agent session and drive it or tell it to short-circuit and end early.
  • If the agent tells me that Fable is not available on my Max plan , the agent vendor’s CEO must remain in stockades until the bug is fixed.

Dreaming a little bigger 🔗︎

As long as I’m dreaming, here are some additional features I’d like to see, but I recognize that some of these are overindexing on my personal workflows.

  • The agent offers a web interface that shows me a unified view of all sessions and which ones require attention.
    • The web backend runs locally and doesn’t require me to open a tunnel from the Internet that executes arbitrary commands on my system.
    • The web interface works well on my phone.
  • The agent maintains an ETA for task completion.
    • Each subagent maintains its own ETA as well.
    • The agent continuously updates this estimate as the task progresses.
    • The agent tunes its estimation algorithm based on the accuracy of its past estimates.
  • The agent reviews its own sessions and looks for opportunities to improve.
    • e.g., “Wow, I blew through $1k/day in tokens the past five days trying to parse this 20 GB log file with ad-hoc commands. Let’s build a custom tool to do this efficiently.”
  • The agent comes with a good language-aware diff view.
    • I don’t want to have to push to GitHub to see a useful diff of the agent’s work.
  • The agent natively supports a proxy for injecting secrets into network requests.
    • The agent can make requests that require credentials but can’t exfiltrate the credentials to another host.
  • The agent considers provider quota limits when selecting an appropriate model.
    • e.g., if my weekly quota resets in 3 hours, and we still have 90% of quota available, stop optimizing for cost.
  • For tasks above a configurable complexity threshold, the agent automatically requests a code review from another model.
    • The two models iterate on reviews until they converge on the fixes.

So, why are harnesses so dumb? 🔗︎

Okay, getting back to the question in the title, I don’t have a satisfying answer.

My best hypothesis is that underinvestment in coding agents is an example of the principal-agent problem . The people setting the direction of AI tooling are executives at companies like Anthropic, OpenAI, and Google. Those executives are disconnected from the rank-and-file developers who use coding agents every day. Many of these executives are dreaming of a future where they can automate away human developers entirely.

AI executives, as well as their largest customers and shareholders, pay attention to metrics that are legible to them, such as slick demos and benchmark scores. Security and efficient use of human developer time aren’t relevant to the demos, and barely any of the benchmarks I’ve seen measure the agents themselves; they just measure the underlying models.

My hypothesis isn’t satisfying because AI companies clearly care at least a little bit about coding agents. I see a lot of features being added to Claude and Codex every month, though I can’t recall the last time one of them has improved my life.

Is there a better coding agent for me? 🔗︎

I’ve only tried Claude, Codex, OpenCode, Cline, and Pi. I use OpenCode and Claude Code as my daily drivers. If you’ve got a coding agent recommendation for me, comment below.

AI companies - if you want to acquire my imaginary coding agent for $50B, let me know. I’m ready to fork VS Code at a moment’s notice.

Yandex Takes a Second Data Center Hit in 48 Hours

Hacker News
united24media.com
2026-10-09 10:20:19
Comments...
Original Article
Yandex data center.
Yandex data center. (Source: Russian media)

A drone attack struck a major Yandex data center in Russia’s Kaluga region, knocking several modules completely out of service, according to Russian state media TASS on October 9.

We bring you stories from the ground. Your support keeps our team in the field.

DONATE NOW

“Several modules of the Yandex data center in Kaluga have been completely taken out of operation as a result of a UAV attack, the company reports,” TASS said.

The Kaluga facility, located in the Grabtsevo industrial park, was designed as Yandex’s largest data center in Russia. Construction began in 2022, with the site entering operation in the second half of 2023.

Drone Strike on Yandex Data Center Triggers Widespread Internet Outages Across Russia

Read more

Category
World

The complex covers roughly 130,000 square meters and has a planned power capacity of 63 megawatts—about 50% greater than some of Yandex’s other major data centers. It can accommodate more than 3,800 server racks, each designed for loads of up to 15 kilowatts.

The facility supports Yandex’s internal services and was also built to expand Yandex Cloud, including the company’s fourth availability zone.

Earlier, satellite images revealed the extent of the damage to a data center operated by Russian technology company Yandex in Sasovo, Russia’s Ryazan region, after a Ukrainian drone strike.

Help us understand what you already know

Logo

"Robot" Is A Social Construct: Why Your Dishwasher Is Not A Robot

Lobsters
robotgirlgang.com
2026-10-09 10:14:17
Comments...
Original Article

The most effective way to nerd snipe a roboticist is to present them with a controversial definition of a “robot”. When I served on an industrial safety standards development committee, we once spent a memorable two full days trying to define “robot” sufficiently broadly so as to ensure the standard would apply to all reasonably forseeable uses of industrial robotic arms in industrial automation, but sufficiently narrowly so as to ensure we did not accidentally force newly developed types of industrial robots into a standard that would wrongly constrain them. This was, I say with all honesty, was an immensely enjoyable two days. I love this kind of thing. I will be pedantic all day long.

So of course, my esteemed colleague Tina decided to lob a grenade at me by asserting that a dishwasher is a robot.

There are two ways I could womansplain to her just how wrong she is. One is to meet her at her level by debating the technical definition. My primary technical issue with her explanation is that I do not agree with how she describes the “manipulation” capabilities of a dishwasher. The spray arms and soap release mechanisms are just that, mechanisms – they do not handle objects, and manipulation is about handling objects. Dishwashers are absolutely automated systems, and increasingly smart ones (though I side-eye the manufacturer that makes my dishwasher calling it “fully autonomous” because it cracks it open on completion to let everything cool). But they’re not robots. They fall short of the technical definition Tina used.

But the alternative I prefer is to inform Tina that she is wrong because robots are not actually defined by their technology, so arguing that way is meaningless. The word, and how we choose to apply it, is entirely a social construct.

“Robot” as a term is an invention of science fiction – and specifically, of Karel Čapek in his 1920 play Rossum’s Universal Robots. Robots continued to be explored through science fiction for decades before the first thing called a robot became a product you could buy . Automated machines not called robots existed well before the word was coined, and continue to exist today. And that’s because “robot” is not actually a descriptor of technical functionality; it is used to describe an automated machine we feel some kind of way about.

It’s specifically because the word and the concept were invented and developed through science fiction that this is the case. Science fiction spends a lot of time using the idea of aliens, robots, and artificial intelligence as a lens through which to view ourselves as humans. 1 It’s why Spock and Data and The Doctor and Seven of Nine are all such compelling characters in Star Trek – they exist as narrative constructs through which to ask the question “what does it mean to be human?” 2

So that’s why we choose to apply the term “robot” to some automated machines and not others. We use the term for technologies which feel new, a little scary, and make our squishy biological brains feel a little bit weird about what this technology might mean for us. We might be worried about what this technology having some particular capability means about our jobs, or our relationships with other people, or our areas of expertise or talent. Technology that looks like the human form or appears to imitate aspects of human consciousness might make us question a religious belief we may hold about how life is created. Our interactions with something that looks and sounds human might make us think uncomfortable thoughts about how we (individually or as a society) treat other human beings. Or we might realize that public discourse about how great it would be to have something that looks like a human, sounds like a human, and has all the capability of a human, but without any rights or bathroom breaks or pay in exchange for its labor feels pretty gross, actually, if you’ve thought literally at all about how our history of slavery has had an impact on so many aspects of modern America.

We see this in the way what we call a “robot” has changed and evolved over time, and the way that change is so tightly correlated with the novelty of the technology and the degree to which we feel we understand the potential societal implications of it. Outside of sci fi, “robot” used to just mean robotic arms used in assembly lines. When I attended the RoboBusiness conference circa 2007, I remember the conference information specifically stating it was NOT for industrial robotic arms because they didn’t consider those robots anymore. Meanwhile, Roombas were state of the art and everyone was excited about wheeled mobile robots. A decade later, industrial robotic arms were allowed back in because power- and force-limited cobots and advanced vision systems attached to robot arms opened up novel new applications and capabilities that people had only just started to contemplate being automatable. These days, many folks are happy to laugh off the Roomba and robotic lawn mowers as “basically a toy” and humanoid robots are (unfairly) scaring the crap out of everyone about their job prospects (or safety in the face of someone’s robot army). All of these things meet the ISO definition of robot that Tina used, but as a culture, we’ve moved on to calling something new a “robot” and starting to demote the other stuff because we’re not impressed with (read: scared of) it anymore.

In short, a machine is a robot when it makes us sit with uncomfortable truths about ourselves.

And my dishwasher does not force me to examine my own existential purpose.

QED. Not a robot.

  1. And monsters as well. What do you think Frankenstein was about? ↩︎
  2. Sometimes very explicitly, as in the most excellent Next Generation episode, The Measure of a Man ↩︎

  • Photo of blog author Mikell Taylor, smiling faintly and holding up a cocktail

    Mikell is a giant robotics nerd who likes to make that everyone’s problem. She enjoys holding strong opinions, being right about things, and arguing passionately about low-stakes topics after a couple of bourbons. Outside of robots, she cooks, hyperfixates on dorky television and movies, and raises two kids who couldn’t care less about robots.

Court throws out killer's sentence after judge said he loved AI video of victim

Hacker News
www.nbcnews.com
2026-10-09 10:14:08
Comments...
Original Article

The family of a road rage victim in Arizona used his likeness to create a posthumous AI video played at his killer’s sentencing last year. Now, an appeals court has vacated the sentence, calling the decision to allow the video a “fundamental error.”

Last May, Maricopa County Superior Court Judge Todd Lang gave Gabriel Paul Horcasitas the maximum sentence for the fatal shooting of Christopher Pelkey, 37, on Nov. 13, 2021. Horcasitas, 54, was convicted of manslaughter and endangerment.

The 10½-year sentence was handed down after an AI-generated video was played in court in which a replica of Pelkey voiced “forgiveness” for Horcasitas.

On Wednesday, the Arizona Court of Appeals in Phoenix ordered a resentencing , writing that the video “clearly impacted the sentencing judge, who said he ‘loved’ the video and felt it ‘was genuine.’”

“On this record, the judge’s consideration of the AI video so prejudiced Horcasitas as to render the sentencing procedure fundamentally unfair,” the appellate judges stated. “Accordingly, we vacate the sentence for manslaughter and remand for resentencing.”

Horcasitas’ lawyer, Kristen Reller, declined to comment on an active case. A lawyer for Pelkey’s family didn’t immediately respond to a request for comment.

At the 2025 sentencing, the AI version of Pelkey , created by his sister Stacey Wales, appeared to ask the judge for leniency.

“To Gabriel Horcasitas, the man who shot me: It is a shame we encountered each other that day in those circumstances,” the artificial version of Pelkey said. “In another life, we probably could have been friends. I believe in forgiveness.”

Lang appeared to be moved by the presentation.

“I loved that AI. Thank you for that, and as angry as you are and justifiably angry as the family is, I heard the forgiveness and I know Mr. Horcasitas appreciated it, but so did I,” Lang said at the hearing.

He added that he felt the video was “genuine, that his obvious forgiveness of Mr. Horcasitas reflects the character I heard about [Pelkey] today.”

“But it also says something about the family because you told me how angry you were and you demanded the maximum sentence, and even though that’s what you wanted you allowed [Pelkey] to speak from his heart as you saw it,” Lang said. “I didn’t hear him asking for the maximum sentence.”

The defense had requested the lowest possible sentence, but Lang imposed the maximum, saying that despite Horcasitas’ “remorse” and otherwise “lawful life,” the loss described by Pelkey’s family “could not be more profound.”

According to the appeals court, Horcasitas argued he was denied due process because the sentencing court heard and relied on the AI video. The state countered that the video reflected what Pelkey’s sister believed he “would have said” and that it was “consistent” with Pelkey’s written account of his beliefs and values.

But the appeals court found the video “crossed that line” from permissible to unduly prejudicial, noting that it “does not reflect actual events.”

“Indeed, rather than documenting an event or recording a particular moment,” it stated, “the AI video presents a depiction of the victim and his thoughts created from the imaginings of the victim’s sister.”

Let's Encrypt moving to 64-day certificate lifetimes in 2027

Linux Weekly News
lwn.net
2026-10-09 10:02:44
Let's Encrypt, the nonprofit that provides free TLS certificates for millions of sites, has announced that it will be moving to certificates with 64-day lifetimes on February 10, 2027: This means that any certificate we issue or renew on and after that date will have a 64 day validity period,...
Original Article

Let's Encrypt , the nonprofit that provides free TLS certificates for millions of sites, has announced that it will be moving to certificates with 64-day lifetimes on February 10, 2027:

This means that any certificate we issue or renew on and after that date will have a 64 day validity period, and we expect the last 90-day certificate to expire on May 11, 2027. We will not revoke valid certificates as a part of this process.

This is the second stage of Let's Encrypt's plan, announced in 2025 , to move to 45-day certificate lifetimes as required by the the CA/Browser Forum Baseline Requirements . In 2028, Let's Encrypt will switch to 45-day certificates.



How to keep AI agents within their permissions

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 10:01:11
AI agents can use valid credentials to perform actions beyond their assigned permissions, creating risks that traditional access controls may not prevent. Token Security explains how organizations can enforce agent-specific policies without sacrificing autonomy. [...]...
Original Article

AI Agent

Written by: Ido Shlomo Co-Founder and CTO of Token Security

AI agents should do more on their own. Who has the time or attention span to approve every command? And watching agents do the work they’re asked to do is mind-numbingly boring.

But agents do need boundaries, especially in corporate environments. Without a clear limit on what they can do, agentic flows tend to use all available access .

Here's a real-world example: A developer asks their agent to figure out why a nightly export job is failing. The team's rule for agents is simple: they work through read-only roles. But the developer also holds admin for on-call work, and both profiles sit in the same ~/.aws/config.

The agent hits AccessDenied when it tries to rerun the job, so it switches to the admin profile, assumes the role, and runs aws s3 rm against the production bucket to clear out the half-written export first.

The credential is valid. The developer may assume admin privileges, and the admin can delete S3 objects. AWS checks the signature, not who is holding the key, so as far as AWS knows, the developer did this. The violation is that an agent used a role that agents aren't allowed to use. Unlike intent, you can check that on every request.

Who’s to blame? The developer who shouldn’t have handed the agent their credentials and let it auto-approve actions? The harness maker? That’s the wrong question. Again, agents should do more on their own, speaking both as a developer and as a manager of developers who work with AI.

Instead of assigning blame, we need to know where this deletion attempt can actually be stopped. There are several possible enforcement points, and each depends on what the control can see, what it can block, and whether the agent has another path to the same action.

We want autonomy with limits we can actually enforce

First, we need to scope the problem. There’s constant pressure to expand agentic access, and usually, the reason makes sense in isolation. A task gets stuck, for example. Or there’s a new integration for a service that holds some of the organizational context.

The result is always the same: the next task starts with more access than the previous one.

A second source of pressure is the agent itself. Agents look for new credentials when the ones they have are blocked, without asking the human in charge whether they can have that access.

This behavior is agnostic to the source of the instructions. A malicious prompt injection can cause overreach attempts, but so can mistaken assumptions during an authorized task.

Valid Key, Wrong Hands

AWS checks the signature, not who holds the key. When an agent grabs an admin profile, the request appears to come from the developer.

Token Security maps every agent to its owner, identities, and permissions, so your controls block actions outside the assigned task and allow the rest to run.

See where it stops

Be specific about what you are enforcing

Agents use tool calls to retrieve data or take action, so that’s where the enforcement matters most. That said, "control tool calls" is a very coarse rule. What if the tool is a shell that can run an SDK? It can also be a browser with an authenticated session. When you allow the tool, you also allow what’s behind it.

To properly understand what’s happening, we need the operation, its arguments, the account and resource accessed, and the identity in use. For data operations, we also need to understand what the output is and where this output is routed.

There’s a lot that goes into a proper decision about the validity of an action.

In most agent harnesses, local commands, file operations, skills, and delegation are also tool calls. They matter because of where they lead. For example, reading ~/.aws/config is how the agent finds an admin profile to use.

So enforcement at the tool call is critical, and so is deciding on the action inside it.

Where enforcement can happen

Some of the damage can be prevented through reasoning checks that assess a plan or action against the task at hand. But this is a probabilistic control, and some malicious instructions will pass through. There’s no good alternative to having proper mitigation controls that can stop an action.

Method

What it’s useful for

What I would check before relying on it

Risk it removes

Autonomy cost

Managed agent settings

Restricting tools, permissions, approval modes, and allowed integrations close to the agent.

Which clients honor the settings? Can a user, project, or agent override them? Model and effort settings can attempt to restrict access, but they’re behavioral choices by nature.

Broad when the app enforces it; little for behavioral settings

Low, except approval modes, which cost the most

Runtime hooks

Checking a supported operation before it runs, with context from the agent's session.

Can the user or agent change or disable it? Does it cover alternate tools and subagents? Does it block before execution, including on errors and timeouts?

Per operation, for the events it sees

Low if automated, high if it asks a person

Gateways

Inspecting and blocking the requests routed through them, with a shared policy across connected agents.

Which traffic do they actually see: model requests, MCP tools, direct APIs, or network traffic? Can the agent reach the same system another way?

High for routed traffic, none for the rest

Low, since only the blocked call stops

Sandboxes

Limiting the files, processes, network routes, and credentials available to an agent.

What can the agent still do inside those limits? Are reachable services restricted to the right account and operations, or just an allowed domain?

Caps reach, not what happens inside

Medium, as tasks needing outside access break

Endpoint enforcement

Governing local agent use through endpoint software or the EDR that’s already deployed.

Can it stop a particular operation, or only a process or host? What is visible inside containers or VMs? Which hosted agents sit outside its reach?

Local agents only

High if it kills a process or host

Credential and target-service authorization

Reducing the authority granted to an agent and enforcing access at the system that holds the resource.

Are credentials specific to the agent and task? Are there alternate credentials? Can the service distinguish the agent from the person or shared account behind it?

High, wherever the request comes from

Medium, as narrow access stalls tasks and sends agents looking for more

API-based management

Changing agent settings, removing permissions, revoking credentials or sessions, and disabling access where platforms expose those actions.

When does the change take effect? What happens to existing sessions and cached tokens? Is it the prevention of future access or a response after the action?

Mostly after the action

None until it fires

These methods overlap and complement each other. A hook that calls a policy service and a gateway that consults an identity graph do a better job because the enforcement and decision points are in the locations best suited to them.

This table is far from exhaustive, and there are more considerations for some of these methods. Take managed settings, for example. Model and effort settings are behavioral in nature, but with some harnesses, permissions are much more than a prompt saying “please don’t flip out”.

In Claude Code, for example, permission rules are enforced by the application itself, and managed settings can restrict user overrides. In that case, control lives in a settings file, but that doesn’t make it less effective.

With hooks, the basic premise depends entirely on their placement in the execution chain. You can’t stop an event that’s already happened, and failure behavior varies by hook types and events.

Gateways have their own complexities, as they must base their authorization decisions on what they see. Look at AWS AgentCore, which demonstrates policy checks for connected tools . Note which calls it sees.

Sandboxes and scoped credentials solve different problems. Proper isolation can remove access capabilities, whereas a scoped credential limits what happens after access is granted. See Cloudflare's sandbox authentication design , which shows a way to add credentials outside the sandbox, so the agent doesn't need to possess the secret . Its operations, though, will still require authorization.

Apply the same policy to a hosted agent

Consider a support agent that’s asked to summarize open cases. Its connector uses a service account built for agents that edit and close cases. The agent decides that some cases look resolved and tries to close them.

Again, the capability comes with the credential, and the agent is within its grant. The place where the action is disallowed is the agent’s approved read-only policy.

To enforce it, the policy must be something a control can check, such as: “This agent may read cases, and any call that edits or closes one is denied, regardless of the service account it holds.”

If that agent lives in a hosted environment, an endpoint control on the employee’s laptop might have no opportunity to stop the action, since it’s all server-side.

Here, you’ll need cooperation from the SaaS platform’s own controls, rely on a tool gateway, or have a narrower service identity. And again, it depends on what the platform exposes and where the calls run.

Which brings us to coverage gaps in our controls. There’s no one perfect control here. Hooks aren’t better than endpoint enforcement, which isn’t better than a sandbox. It’s all about what you deploy and where.

Method

Coding agent on a laptop

Support agent in a SaaS platform

Managed agent settings

Works if the client honors them

Only what the vendor exposes

Runtime hooks

On the events the runtime exposes

Only if the platform offers hooks

Sandboxes

Limit files, network, and credentials

The agent runs on the vendor's servers

Endpoint enforcement

In reach

Out of reach

Gateways

Catch the admin calls, if AWS traffic routes through them

A tool gateway in front of the connector

Credential and target-service authorization

Keep admin out of the agent's reach

A read-only service account for summaries

API-based management

Revoke the session after the fact

Disable the connector after the fact

Two methods can stop both of these examples before the action reaches the target: a gateway that sees the relevant traffic and credential scoping at the target. The other methods depend more heavily on where the agent runs and what the runtime exposes.

Above all, you want the agent to keep working within its approved policy. Read-only is not complete. It can still expose sensitive data, depending on where the output goes. Anthropic's containment analysis explains why.

Choose what’s practical, then test the ways around your control

You’ll likely be deciding what’s practical based on your deployment. Managed settings require supported clients and central administration, for example. And you won’t have hooks without a runtime that exposes the right events. Gateways force you to route traffic through them, and endpoint controls mandate software installation and maintenance.

None of these is free. The controls introduce trade-offs, require maintenance, and must account for an ever-growing volume of AI-driven work.

Take the AWS example from the beginning of the article. Blocking the literal command is a start, but what if the same request comes through an SDK? With a different credential? Through delegation?

The security requirement to block deletion remains the same, but there are many different paths to it.

Then there’s the question of value, and you have to consider it as much as the control capabilities. How much delay do the controls add? How often does someone need to unblock a false positive? Are we reducing risk or introducing problems?

SACR's ARISE report centers on runtime intervention, delegated authority, and action-level decisions. This should be brought down to a concrete request, a policy, and evidence of what happened when the agent tried it.

A short guide, based on where your agents run and what you control there:

Where your agents run

What you usually control

Start with

Then add

Developer laptops and IDEs

The endpoint, agent settings, local credential files

Managed settings, plus hooks where the client supports them

A gateway for cloud API traffic, and endpoint enforcement for clients you can't configure

Your own cloud, CI or containers

The runtime, network egress, and workload identity

A sandbox and per-agent workload credentials

A gateway on egress

SaaS platforms

Connector credentials and the platform's admin settings

A narrow service identity per agent

Platform controls through the API, and a tool gateway in front of connectors, where the platform allows it

It probably isn’t one or the other. Instead, most organizations have all of the above, mixed together, with controls spread around different teams as well. Across these environments, the one common denominator is identity . So start with credential scoping at the target, as this dictates the reach wherever the agent is running. Then, add one policy source that every enforcement point reads from.

Do this, and you’re in a good starting position.

Where Token fits

At Token Security, we are building around the identity intelligence graph and the decisions it can support across the different enforcement points. Our current focus spans agent settings, gateways, endpoint enforcement, and APIs into identity and agent platforms.

The broader vision is to build or connect to the enforcement capability the customer needs. We don't need to build everything ourselves.

The graph connects an agent to its owner, the identities it consumes, the permissions associated with those identities, and the resources it can access. That’s the kind of context that policy engines can use to decide what an agent may do, rather than assuming that the credential's full authority is appropriate.

In a recent gateway demo, we demonstrated this exact idea: same developer, same session, and the agent’s call is denied on admin and allowed on readonly. Other controls can enforce read-only access, too.

Supplying the right identity context and applying the policy across the different places agents work is paramount, yet complex, as this process requires reliable attribution. If we cannot distinguish the agent's request from a human using the same credentials, the graph doesn't magically fix it.

What about baselines? Keep in mind that past behavior can only be used as an input, not the policy itself. The fact that an agent usually just reads data does not prove that a write is forbidden. That’s the job of the rule that pins agents to readonly. Missing or stale context also requires an explicit decision, as with hook timeouts.

I want an agent to complete the investigation or the support summary without requiring approval for every step. I also want to know exactly where an action outside that task will stop. That's what I would ask of every enforcement method, including Token Security.

Check us out or book a demo if you’re also solving these AI security problems in your organization.

Sponsored and written by Token Security .

The Filter is two! 31 things we loved this year, from cloud-like duvets to the perfect running shoe

Guardian
www.theguardian.com
2026-10-09 10:00:31
Whether it’s a super-glowy serum or a cult gardening tool, here are our writers’ favourite buys from the past year • Don’t get the Filter delivered to your inbox? Sign up here The Filter is turning two! To celebrate, we asked our contributors for their favourite products from the past year, and roun...
Original Article

The Filter is turning two! To celebrate, we asked our contributors for their favourite products from the past year, and rounded up the team’s picks too.

From handbag-sized umbrellas and stylish yet practical wellies to reading lights and luxurious duvets, these are the products that stood out.


The Filter products we love the most


Brush with greatness

Lise Smith

Revamp Straight & Go cordless hot brush

£89.99 at Currys
£90 at Argos

One of the best tools I’ve tested this year is Revamp’s Straight & Go cordless for my review of the best hot brushes . It’s compact, so easily fits into hand luggage, a work backpack or even a decent-size handbag. It’s my hot brush of choice when I’m away from home (and at home: it’s cordless so I can use it in the bathroom without trailing cables all over the hallway). Lise Smith


Cream of the crop

Illiyoon

Illiyoon ceramide ato concentrate cream, 75ml

£9.99 at Boots
£9.99 at Amazon

The best product I’ve bought on another writer’s recommendation is the Illiyoon ceramide ato concentrate cream, which Sarah Matthews wrote about in her best facial moisturisers roundup . It’s rich but gentle and leaves my rather dry skin soft, smooth and plump. LS


Screen saver

Alan Martin using Brick

Brick

£44.75 at Brick

I wrote about Brick, a device that helps reduce screen time, for my phone addiction piece . I didn’t view myself as having a problem, but after finding that Brick really improved my wellbeing, I became the first person in history for whom admitting you have a problem is the last step on the road to recovery. Alan Martin


A pizza the action

Testing pizza ovens Gozney ArcLite

Gozney Arc Lite

£349.99 at Gozney
£349.99 at John Lewis

I’m continuing to cook with the Gozney Arc Lite, which I reviewed for our guide to the best pizza ovens , and starting to relax more and enjoy it. Slowly, my hand-stretched bases are getting better, though I think I would still be laughed out of any self-respecting pizzeria: “Don’t quit the day job.” Rachel Ogden


A good foundation

Saie, The Base Brush

Saie the Base Brush

£26 at Cult Beauty
£26 at Sephora

I trust all beauty recommendations from my beloved colleague Sali Hughes implicitly, so after reading her guide to makeup brushes , I thought it was perhaps time I stopped slapping foundation on by hand and invested in this Saie brush. It makes foundation sit more lightly on your skin and makes blending at the neck and hairline foolproof. Jess Cartner-Morley


Tub thumping

Matt Collins camping with kids at Holden Farm in Hampshire

Town & Country square flexi-tub, 25l

£10.95 at Tooled Up
£13.93 at Amazon

For my rundown of items that make camping with kids easier , I tested a pair of square flexi-tubs during a trip with my six-year-old. They were a godsend then – helping keep everything organised and tidy – but they’ve since found a place in home life as indispensable declutterers. Kids’ toys everywhere? Throw them in the flexi-tub. Doing some DIY? Tools in the tub! Too many tubs? Stack them! You get the picture. Matt Collins


Sabine Wiesel’s wellies and dog

Barbour Bede wellington boots
Men’s

£55 at John Lewis
£79.95 at Barbour

Women’s

From £55 at Frasers
£79.95 at Barbour

In the past I’ve opted for more fashion-led wellies, but these days I use them more for dog walking than festivals. So I took Danielle Wilkins ’ recommendation in her roundup of the best wellies and bought her top pick of Barbour boots. With a classic look and excellent grip (even across muddy fields), I get to balance style and practicality. Sabine Wiesel


Rain check

Caramel Quin testing umbrella

Davek mini umbrella

£65 at Davek

When I needed an umbrella this year, I turned to Pete Wise ’s umbrella test . I’m terrible for not carrying a brolly and getting caught out by rain, so I wanted something small I could leave in my handbag. I picked the Davek Mini. It has saved my veggie bacon many times already and its lifetime guarantee is reassuring. Caramel Quin


Walk this way

Urevo SpaceWalk 5 Walking Pad

Urevo SpaceWalk 5L walking pad

£399.99 at Urevo
£349.99 at Amazon

Having tested lots of walking pads and under-desk treadmills for the Filter, I have become quite attached to the Urevo SpaceWalk 5L model (a review for which is on the way). I walk on it most days in an attempt to rack up at least 10,000 steps. It’s an easy way to burn extra calories when I’d otherwise be glued to my desktop, and I’ve found this model exceptionally quiet, while the automatic incline is great for varying the terrain without lifting a finger. Leon Poultney


Light my fire

Primus Lite Plus stove

Primus Lite Plus stove

From £98.99 at Mountain Warehouse
£130 at Primus

I tested the Primus Lite Plus for our guide to best camping stoves . I recently took it on a three-day trek in the Lake District and found it simple to use and clean, and great for boiling water. Sian Lewis


Cashmere crush

Rise & Fall Finest cashmere micro bandana

Micro bandana

£55 at Rise&Fall

Jess Cartner-Morley also inspired me to buy a jazzy cashmere bandana from Rise&Fall. SL


Under cover

Panda the Cloud’s double duvet.

Panda the Cloud duvet, double

£129.95 at Panda
£129.95 at Amazon

My Panda duvet from my test of the best duvets has been a real bedding upgrade. When you go from a cheap polyester duvet (which was perfectly fine, I thought) to this cloud-like breathable bamboo hug, there’s no going back. I always look forward to wrapping myself in it at night. I now have two versions – the winter 10.5-tog one I tested for best duvets, and the 4.5-tog summer version . Jane Hoskyn


Face value

Beauty of Joseon relief sun rice + Probiotics SPF50+

Beauty of Joseon relief sun rice + Probiotics SPF50+, 50ml

£15.50 at Cult Beauty
£11.62 at Amazon

I bought a double pack of Beauty of Joseon’s Relief Sun Rice + Probiotics SPF50+ , which not only took the top spot in Sarah Matthews’ best face SPF guide but was also raved about by Sali Hughes in her hero skincare 2025 roundup . I’ve got fair skin, so I need a good daily SPF, ideally one I can slap on without looking like I’ve fallen face-first into my cereal, but my skin is also greasy and spotty, so the light texture of this is such a lovely relief after the thick sun creams I’ve been used to. JH


Fry high

A Ninja air fryer on a kitchen counter

Ninja Double Stack XL SL400UK air fryer

£269 at John Lewis
£269.99 at Ninja

I’ve been tempted to buy an air fryer for ages but didn’t think I had the counter space. So, when Rachel Ogden highlighted the Ninja Double Stack as the best compact air fryer (with a smaller footprint than most) in her roundup , I decided to go for it. As someone who mainly cooks for one, I’ve found it makes mealtimes far more convenient (and saves energy because I no longer need to heat up a whole oven for just me). It also produces the crispest, most delicious jacket potato skin I’ve ever had. Lily Smith , researcher


Leaf it to me

Testing leaf blowers: Stihl

Stihl SHA 56 garden vacuum

£231.79 at Farol Mowers

The Stihl SHA 56 leaf blower and garden vacuum, which I tested for our guide to the best leaf blowers and vacuums , has been an absolute hit in my garden this year, not just for collecting leaves but for doing any of the work I’d normally use a broom for. Its added superpower of collecting whatever it’s been blowing about at the end of the job is the icing on the cake. Andy Shaw


Hands down

E45 repairing hand cream, 50ml

E45 repairing hand cream, 50ml

£6.60 at Sainsbury’s
£5.65 at Amazon

I’ve taken up pottery this year, and my hands have paid the price. There’s nothing like handling wet clay to extract all the moisture from your skin. So, as soon as I’m done wiping down my station and labelling my wonky creations, I’m in need of urgent relief. I opted for the E45 repairing hand cream from Sarah Matthews’ best hand cream guide for two reasons: it’s cheap enough to share around the studio, and (as promised) it has a thick, nourishing texture. Sarah described it as a “refreshing drink of water for the hands”, and I couldn’t agree more – my mitts absolutely slurp the stuff up. Millie Fender, commissioning editor


Case closed

Pete Wise testing packing cubes

July packing cells

skip past newsletter promotion
£40 for four at July
£86 for eight at Revolve

The best thing I’ve tested is this set of July packing cubes, which came out on top in my roundup . For a disorganised person like me, packing cubes are a revelation. The July set did a particularly good job of preserving the crispness of shirts and trousers during a chaotic cross-country journey this summer. Pete Wise


Glow getter

CeraVe Skin Renewing Vitamin C Serum

CeraVe skin renewing vitamin C serum, 30ml

£22.50 at Lookfantastic
£22.50 at Boots

I bought the CeraVe vitamin C serum on Danielle Wilkins ’ recommendation . I was astounded when, after a week of using it, people started commenting on how “glowy” my face looked. I’m hoping it keeps me looking alive all the way through the grey winter months! Zoë Phillimore


Take a seat

TX3 SOLO 360 Gaming Chair – Loft Air Light Grey

ThunderX3 Solo 360 gaming chair

£169.99 at Overclockers

We were switching my son’s and daughter’s rooms over and we needed extra incentive for him (Iggy) to accept the deal – he was moving into the smaller bedroom – and this chair from our best gaming chairs guide swung it. Iggy now has his own “gaming nook” (doubling up as my workspace), and the chair is saving my working-from-home slouching. Alex Jones, picture editor


Miles better

Saucony Endorphin Azura

Saucony Endorphin Azura running shoes
Men’s

From £96.89 at Cotswold Outdoor
From £112 at Saucony

Women’s

From £97.89 at Runners Need
£112 at Saucony

I’ve logged thousands of miles this year searching for the best running shoes . One of the standout all-rounders that can cope with almost anything is the Saucony Endorphin Azura. Go fast, go slow. No trouble. The perfect suitcase shoe at a pretty competitive price. Kieran Alger


Dress rehearsal

Nobody’s Child white floral starlight midi dress

Nobody’s Child floral starlight midi dress

£51 at Nobody’s Child

This isn’t so much something I’ve bought as something I’ve bought into. The vast majority of the clothing I’ve bought this year has been secondhand, thanks to Jane Hoskyn ’s money-saving tips . My favourite find is a long cream dress (with pockets!) from Nobody’s Child , which I snagged for £15, down from a usual £85. Sarah Matthews


Dry run

VonHaus 20L Smart Dehumidifier with Laundry Mode

VonHaus Smart dehumidifier with laundry mode

£144.99 at VonHaus
£144.99 at Argos

After reading Caramel Quin ’s roundup of the best dehumidifiers , I was convinced the budget VonHaus Smart dehumidifier was exactly what our damp house was crying out for. Not only is it incredibly satisfying to see so much water sucked out of the air, but it’s also become my new favourite (and fastest) way to dry laundry. Ella Jinadu, audience editor


Light reading

Gritin 9 LED Clip on Book Light, 3 Eye-Protecting Modes Flexible Reading Light Book Lamp (Warm&Cool White Light) -Stepless Dimming, Rechargeable, Long Battery Life, 4-Level Power Indicator

Gritin rechargeable book light

£13.95 at Fruugo
£8.59 at Amazon

My partner and I each have a clip-on reading light, recommended in our guide to the everyday items that could improve your life , and can fully vouch for how the disturbance-free glow has transformed our reading routines – both at bedtime and in the dark early mornings. They also came in handy on a recent camping trip when the wind made it impossible to sleep. EJ


Cool customer

Danielle Amato testing ice-cream makers: The Green Pan soft-serve maker

GreenPan Frost ice-cream maker and slushie machine

£399 at Debenhams
£399.90 at Boots

I love a kitchen gadget and became obsessed with the GreenPan soft-serve and slushie maker while I was testing it for best ice-cream makers . While I enjoyed the ice-cream, I loved making frozen cocktails even more – it was a real crowd-pleaser at parties too. Danielle Amato


Spirited away

Jo Vodka 101 the Purist

Jo Vodka 101 the Purist, 70cl

£48.95 at Master of Malt
£50 at John Lewis
Chopin Potato Vodka

Chopin potato vodka, 70cl

£37.38 at Master of Malt
£39.75 at the Whisky Exchange

When I am tasked with testing a specific category, it ends up reigniting my love and interest in it. So, since testing vodka , I’m still fully into mixing myself ice-cold martinis (dry, with a twist, please) and variations on the theme. The top vodkas I’m still reaching for are the Jo Vodka and the Chopin, though I also made a fab lychee martini recently using Sapling raspberry . Joanne Gould


Blooming lovely

Testing Flower Deliveries: Scilly bouquet.

Scilly Flowers

From £17 at Scilly Flowers

I’m also a new customer of Scilly Flowers after reading Zo ë Phillimore ’s piece on the best flower delivery services . I like that it tends to do arrangements of just one type of flower, which I find elegant, and it has varieties you don’t usually find with online florists; plus it can be amazing value. I sent someone 40 narcissus , which looked stunning, and sent my friend a sweet arrangement of scented pinks for a post-op cheer-up. JG


Bear essentials

Merz b Schwanen’s 215 Loopwheeled Classic Fit Midweight T-shirt

Merz b Schwanen 215 classic fit T-shirt

£85 at Stuarts
£95 at Merz b Schwanen

Testing white T-shirts was my highlight, particularly Merz b Schwanen’s – the one Carmy wears in The Bear. After all, who doesn’t want to channel Jeremy Allen White sweating it out in a hot kitchen? At the risk of sounding like a true fashion nerd, there’s something fascinating about trying a dozen pieces that look identical but wear completely differently – and then deciding which takes the top spot. My partner now gets to hear all about 150gsm versus 220gsm and why Supima is the gold standard. Riveting stuff, I’m told. Peter Bevan


Cutting edge

Niwaki hori-hori-pro and branded sheath.

Niwaki hori hori pro

£42 at Niwaki
£42.99 at Crocus

Niwaki’s hori hori tool has quite a cult following among professional gardeners (in tools pros can’t live without ), but I could never see why I’d have much need for a knife in the garden. Now I realise it’s more of a sharp trowel – a very nifty garden tool – which has quickly replaced the old butter knife I previously used for all the same jobs. Kate Jacobs


Soy good

Poon’s London Premium First Extract soy sauce

Poon’s premium first extract soy sauce, 250ml

£13 at Ocado
£18.99 at Selfridges

I’ve tasted so many good things this year, but it’s the simplest one-ingredient products that have stood out for their incredible quality. The best thing I tried was Poon’s premium first-extract soy sauce (best overall from my soy sauce taste test ). It’s wildly complex and fruity, made from non-GMO soya beans grown in Kaohsiung, southern Taiwan, pressed only once and naturally fermented in earthenware jars. Tom Hunt


Daily grind

KitchenAid KA KF3 5KES8453BBM Cold Espresso Automatic Bean to Cup Coffee Machine, Matte Black

KitchenAid KF3

£749 at KitchenAid
£749 at John Lewis

There are times when I wish the steady flow of big, brown boxes entering my home would slow to a drip, but KitchenAid’s recent deliveries have earned their keep. The standouts were from its new trio of slightly – just slightly, mind you – more affordable coffee machines.

The range-topping £899 KF4 (featured in our guide to the best coffee machines ) is a delight, but it’s the fully automatic £749 KF3 that I think is the best value of the bunch. The coffee quality is superb, the milk froth is a delightfully dense, creamy microfoam, and given the performance, the price is fair. The slimline build is perfect for cramped kitchen worktops, too. A full review is on the way. Sasha Muller


Twinkle Tongue Saliva Enhancer Gel

Twinkle Tongue saliva enhancer gel

£34 at Twinkle Tongue

One of the most original and unexpectedly fun products I’ve tested this year was for my sexy gifts for Valentine’s Day guide . Twinkle Tongue is an all-natural, sour cherry-flavoured liquid that instantly provokes your salivary glands.

What’s the point of a product that makes you slaver and slobber? If you suffer from dry mouth caused by smoking, menopause, or as a side-effect of certain medications, then Twinkle Tongue can help make all sorts of intimate oral activities easier and more comfortable.

Don’t get the Filter delivered to your inbox? Sign up here


Banner design for The Filter

Don’t buy anything until you’ve read the Filter, the Guardian’s home for truly independent product reviews and recommendations. Whether you’re after rigorous tests or shopping inspiration, affordable gifts or advice on how to make your belongings last longer, we’re here to help you make smarter, more sustainable choices.

The Filter is packed with trustworthy buying advice on everything from coffee machines to hiking boots, mascara to secateurs. So visit us today and start buying better and smarter, and wasting less.

Explore the Filter

Deepthi Sigireddi from Supabase

Lobsters
theconsensus.dev
2026-10-09 09:56:41
Comments...

ICE Terrorizes Marble Hill

hellgate
hellgatenyc.com
2026-10-09 09:56:08
Federal agents shot a man in front of his 5-year-old kid, and more news for your Friday....
Original Article

It's time for Hell Gate's biggest sale ever : 35 percent off a year at all subscription levels. Get one year for less than $4/month with an annual Friend subscription—or become a Supporter or Believer for a few bucks more and get special perks and swag. Do not sleep on this deal !

At around 4 p.m. Thursday, masked, unidentifiable ICE agents with guns approached a 28-year-old man parking his car in Marble Hill. At least one of them shot seven rounds at the driver, shattering the windshield and striking him in the neck below his ear. His 5-year-old son was sitting in the backseat of the car when this happened. Miraculously, the child was uninjured. The neighborhood, a working class area right near a train stop and a busy commercial corridor on 225th Street and Broadway, was bustling with people, including kids who had recently been let out of school.

Iris Rosa, a social worker who works for the City's Department of Education and lives nearby, told Hell Gate she was coming home from work when she heard gunfire. "When we heard the shots ring out, everybody started screaming, we all turned around, we ran," she said. "We went into the stores. We stayed in there for a while."

The scene of the shooting is surrounded by apartment buildings, while a high school and a middle school sit blocks away. Rosa said many neighbors witnessed the man, bleeding and handcuffed, sitting on the pavement. "The kids are like, confused, 'What's going on?'" she said. "For us, it didn't look like ICE. It looked like some other kinds of workers…They said that the baby was in the car when they shot into the car."

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

'Wallace and Gromit,' 90% Alone

Hacker News
animationobsessive.substack.com
2026-10-09 09:49:31
Comments...
Original Article
A still from A Grand Day Out (1989)

Welcome! This is another Sunday edition of the Animation Obsessive newsletter. Here’s the plan for today:

  • 1. Nick Park’s time on A Grand Day Out .

  • 2. An ambitious education project.

  • 3. Animation newsbits.

  • 4. The last word.

With that, let’s go!

The shape of animation changed in November 1989.

It happened in Bristol. Nick Park, an animator, had just finished two films with a stop-motion outfit named Aardman. For the premieres, he took both to the local Bristol Animation Festival. Their titles: Creature Comforts and A Grand Day Out . 1

Park’s screenings went well, but there wasn’t an explosion of media coverage. The wide world didn’t yet know what he’d achieved. One magazine report did sum up A Grand Day Out , though, as a “marvelous Lancastrian model animation about a Cheese Monthly reader and his dog Gromit going to the moon by rocket.” 2

Park had plugged away at that film across most of the ‘80s. “I always dreamed of this moment when Wallace and Gromit would come into the world,” he said later. Even so, when it went up for an Oscar, he was shocked. “I didn’t even realize you could be nominated … for short animated films,” he recalled. 3

Ultimately, Creature Comforts was the Academy’s pick. But A Grand Day Out , despite its “more low key success,” took the BAFTA and began something enormous. 4

During Park’s years on the first Wallace and Gromit film, it would’ve been hard to foresee the scale of its influence. He wanted to quit many times. A Grand Day Out was his way-too-ambitious graduation project, and he didn’t have the luxury of a full team. As he explained, “I did probably 90% of it myself.” 5

Park was an unknown before that Bristol festival. Now, suddenly, his stuff was catching the notice of his idols Terry Gilliam and Ray Harryhausen . “I’ve never seen claymation so smooth!” the latter told him. Once Park’s work aired on Channel 4 in 1990, pretty much everybody else fell in love with it, too.

Although he was a latecomer to Aardman, the “Nick Park look” took over the studio so thoroughly that its earlier films with other approaches ( Babylon , Sales Pitch and so on) often go unmentioned today. “I take no credit for his talent. He came to us fully fledged,” said Peter Lord, Aardman’s co-founder. 6

Park had been formed by a lifetime of practice and study — and especially by his lonely proving ground, A Grand Day Out . In his words:

Wallace and Gromit have had quite a large impact. They’re the first characters I’ve really put my heart into, that I really have started to have a kind of relationship with, really. I mean, they gave me my style, really. The eyes close together, the wide mouth, the very exaggerated mouth movements and Gromit’s kind of looks, frowning, all his expression coming out of his eyes, it all started off with Wallace and Gromit. 7

Some of Park’s early test footage for Gromit
And an early Wallace test

A Grand Day Out began in 1982, while Park was a student at the National Film and Television School. “I needed a couple of characters for my graduation film, so I went back to my old sketchbook,” he noted. Originally, Gromit was a cat and Wallace had a mustache. Park’s main idea was a journey to the moon via a basement rocket; Wallace’s love of cheese was invented as the excuse.

Park asked for help as he could. “The very first script, I worked on with a friend I shared digs with in Sheffield called Steve Rushton. He was into writing kids’ books,” he said. Over time, animators Alison Snowden and David Fine made some props, and a technician at the school built the rocket’s light-up console. Meanwhile, Park got a giant lump of Plasticine for free from its manufacturer, and actors Peter Sallis and Peter Hawkins voiced his characters as a favor. 8

Still, the budget allocated to A Grand Day Out limited Park’s ability to hire people. The film became mainly his thing, and it evolved naturally in his hands.

Gromit turned into a dog really early on, since Park found dogs easier to model. And the character’s dialogue was cut due to animation difficulties in the first week of the shoot. “That’s when I realized I could do everything with the eyes. Gromit was suddenly born. He didn’t need a mouth. He became a very introvert and very intelligent dog,” Park remembered.

The sequence where Gromit came to be

You can see Park’s development on screen just in Wallace’s design. The character initially had a “very small” mouth. While animating Sallis’s pronunciation of cheese , though, Park thought to give Wallace a “coathanger mouth” wider than his head. Different versions of his design remain scattered in the final film.

Even if A Grand Day Out wasn’t well planned, Park’s work was obviously special. That much was clear to Aardman’s David Sproxton and Peter Lord when they visited his school, relatively early in production. Here’s Sproxton:

I remember he was doing the cellar set: the construction of the rocket sequence. He hadn’t actually shot much more than that. … Certainly when we met him at the film school, there was something about what he was trying to do which was actually a bit different. You could immediately see that. It was an ambitious project: there was something about the way he was using the Plasticine and the sets and things that he’d built which was actually very charming, but it also showed a real endeavor which you didn’t often see. So we definitely kept in touch with him for two or three years.

Early Nick Park sketches for Wallace and Gromit, courtesy of The World of Wallace & Gromit
Nick Park concept pieces for A Grand Day Out , courtesy of The Art of Aardman

Park had been taking shape as an artist long before that Lord–Sproxton visit. A Grand Day Out was partly riffed, but his riffing was grounded in something.

As a child, he’d created 8 mm animations with a camera from his parents, who encouraged him. Around 12 or 13, he did experiments like Rat and the Beanstalk and Walter Goes Fishing (both linked to watch). A bit later, in 1975, his short Archie’s Concrete Nightmare aired on television. In ‘77, Movie Maker made note of the film Bird by one Nicholas Park of Preston — he’d sent it in. 9

“That’s how I spent my time. While my mates were out playing with their bikes,” Park said, “I was in the attic.”

In those years, he pulled from the cartoons and stop-motion shows on television ( Roobarb , Clangers , Noggin the Nog , Morph ), and Monty Python , and Ray Harryhausen movies, and the comics in The Beano , and The Do-It-Yourself Film Animation Show . “Influences were to be found everywhere,” he said. 10

When Park’s father pushed him to pursue filmmaking in college, he did — first at Sheffield Art School, then at NFTS. He devoured the subject. “I really enjoyed the history of film and studying directors like Orson Welles and Hitchcock,” Park said. He learned about lighting and storyboarding, and German Expressionist film, and (crucially) avant-garde animation.

A snippet of animation from A Grand Day Out

Asked about his preference for stop motion, Park once explained:

I think it’s because I’d been brought up on a diet of children’s 3D animation. I wanted to take what I’d seen and apply what I’d learned from filmmaking, in terms of lighting and using the camera, a lot more inventively. I wanted to do something different from the usual puppet animation which was made for children. I suppose I was more interested in the Eastern European style: [Władysław] Starewicz, [Jiří] Trnka, [Jan] Švankmajer. It was only when I got to the NFTS that I became aware of all these figures and of what a range there was in the world of animation.

That was the foundation of A Grand Day Out . Park drew from his many references (including Jules Verne and Hergé’s Explorers on the Moon ) and then applied these filmmaking techniques that fascinated him. “I could use the cameras the same way Hitchcock did, or Orson Welles. I was making a live-action film, but on a small scale,” he felt.

Here’s Park on the moment when Wallace’s completed rocket appears:

This shot is one of those things which really encapsulated the kind of vision of the film. What I was trying for was something in model animation that had kind of a feature film feel to it, which is very much complemented by the music at that point. Just the scale and the kind of slow camera moves. I think it came from watching Close Encounters and that kind of thing — you know, the way Spielberg always had, like, this tiny drift on the camera. … And it stopped it from becoming a kind of static, kind of puppet-y, kind of TV animation.

The moment in question

Park had great ideas and was strikingly good at claymation, which he handled in the old way. “[T]here was no video assist [so] you didn’t know what the results were gonna be until a week later when you got the film back,” he noted.

But he was still in a tough situation with A Grand Day Out — despite all he was picking up. “At one point, I even had a guy come in and do the lighting and camera. He couldn’t stick around for too long, so I learned everything I could from him,” Park said. “In the end, it was pretty much a one-man show.”

Which was too much. Like he recalled:

I thought it would be a ten-minute film, and it would take me six months to make. … In fact, I remember the script for A Grand Day Out was about 20 pages long, and on about page 3 it says, “There now follows a sequence where Wallace and Gromit build a rocket.” It was just a paragraph. I started on that paragraph, and a year and a half later, I actually finished the sequence!

Because he couldn’t graduate from NFTS until his film was done, he was stuck. By 1985, the project was in a state of crisis. According to Lord and Sproxton:

... well over four years had elapsed since Nick entered the school, so his three-year student grant had long run out. Worse, he had only completed a grand total of seven minutes of A Grand Day Out — rather less than a third of its eventual length. He passionately wanted to complete it, but it was arduous, lonely work in a small studio, and each day he was commuting 25 miles by bus from his tiny flat in Cricklewood to the film school.

Lord and Sproxton had hired Park over the summers of ‘83 and ‘84. In ‘85, they put him on salary. He agreed because they allowed him to continue A Grand Day Out at Aardman, in his spare hours, through an agreement with the school.

Park’s project was given a small workspace behind a curtain, and he kept going back there, as he could, to chip away at it. He got some help (“I could grab someone to light a scene or make some models”), but he remained mostly alone on A Grand Day Out . And several more years passed that way.

Stills from the film

At the Bristol screening in 1989, where A Grand Day Out and his Creature Comforts premiered, Park emerged to the public. “Apart from the amateur film I’d had on the BBC as a child, that was my first taste of fame,” he said. Things changed very fast — within two years, Park was a star of British animation.

He’d pretty easily jumped into Creature Comforts , a short-turnaround project with a “proper crew,” after all he’d learned on A Grand Day Out . “I went from unknown student to a director with two films,” he noted. From there, he began The Wrong Trousers (1993) and the rest of his long career. He was ready.

Park seemed to appear from nowhere, preformed. But that wasn’t really the case: he’d grown into this artist during those years of work off to the side, during hours that most simply weren’t there to see.

A still from Unboxed (2025)

Recently, the producer Lexie Chu told Animation Magazine something interesting . She’s trying to “stop separating learning animation from actually making animation.” It isn’t a radical idea: at one time in this medium, it was standard to learn on the job. In 2026, though, those words were a bit refreshing to read.

Through Chu’s initiative Asians in Animation, she’s creating a system that brings to mind so many studios from the past, where mentors guided whole teams of newer artists. Its latest learning film, Unboxed ( watch ), was a virtual production that involved 104 crewmembers and 14 experienced industry people.

We emailed this week with folks from both groups. One was Katelyn Park, a 2025 graduate from the Rochester Institute of Technology. Unboxed was in production for a month last year, and she joined toward the end as an animator and compositor. She told us:

… I had only ever composited on my personal shorts, nothing to this scale of shot number and crew size! [It] offered me an extremely valuable lesson. In animation, it is possible to “over animate.” Some of my character performances have been weakened by my getting lost in details, adding too many elements without the sense of a strong foundation. You can look at compositing in the same way.

Before the program, I composited as if I was working off of a blank canvas with no direction. But it was through the weekly review meetings where I learned that, when working on a large production, it’s more important to prioritize the fundamentals of a shot and follow the guides that were built during pre-production. Then any fancier lighting or FX can be played with after.

She glowed about her time on Unboxed , a project that was “more about showing up, communicating and making new friends” than just grinding out assets. And she’s come back for this year’s new Asians in Animation film. “It’s been an absolute blast and I’ve learned even more!” she wrote.

Another still from the film

Among the mentors, we heard from Clara Chan, a visual effects supervisor on KPop Demon Hunters . “I have been a big fan of AiA for many years because they have done a lot of great work for the community,” she explained. At Sony, Chan had already gone through this type of program and “found it tremendously beneficial.” So, she had every reason to help with Unboxed .

As she put it:

The project was super well organized and well planned. … For my part, as one of the story mentors, I met with the team a couple times last summer and they pitched their ideas to me. I then gave them some feedback on the script and they improved upon it. …

They were all very passionate about the project and very creative. They received feedback very well and were able to turn around changes quickly. … I just asked a lot of clarifying questions about the script, hoping they would help the team to really find the emotional core of the story. I think that’s always the most important thing — to solidify the story before starting production.

In many countries, this kind of education isn’t the given that it used to be. Unboxed brought it to people in America, Canada and Indonesia, and we’ll be excited to see where Asians in Animation takes the idea from here.

  • During the recent liquidation of Phil Tippett’s studio in America , a collection of old internal DVDs and CD-ROMs wound up in the hands of an archivist. They’re full of rare material, and now on the Internet Archive .

  • The first episode of Electro Andes , from Argentina , hit YouTube today.

  • In South Africa , artist Kabelo Maaka spoke about her experiences as the head of an animation studio, and the ever-shifting focus of the money people. “If you go by the whims of buyers and executives, you will not finish anything,” she said.

  • In Germany , Joe May put together a concept teaser for a film based on Haruki Murakami’s Kafka on the Shore .

  • In America , Skydance now has a frightening amount of control over Hollywood, and is already reshaping the industry .

  • The indie series Catus Magus , created by the artist Yaron Farkash in America , has followed up its viral success on Instagram with a crowdfunding campaign for new episodes.

  • Kiri and Lou Go Raaa! (the claymation feature from New Zealand ) will open in Britain later this month .

  • Meanwhile, following its victory at Annecy this summer, The Violinist is set for Spanish theaters in November .

  • In Britain , the next edition of the Manchester Animation Festival is coming up, and its slate has been revealed .

  • Finally, we looked into Katsuhiro Otomo’s beginnings in animation , as a character designer.

That’s today’s issue! Thanks for reading. We’re wrapping up with comments from the two of us, connected to this week’s themes:

Jules: Strangely enough, something that really developed my understanding of and love for filmmaking was a comic: The Adventures of Tintin by Hergé. I’d never noticed it while reading Tintin growing up, but, revisiting the series later, I started to realize that Hergé handled his panels like he was shooting scenes with a movie camera. He zooms , he pans and tracks , he uses sustained two shots for dialogue scenes. One of his foundational techniques, which allows him to achieve these other effects, is the way he holds shots across multiple panels. He’ll also frequently set up a camera angle, cut away and then return to it . All these things give a sense of continuity and weight to the events. Understanding this helped me understand how the Ghibli directors created similar effects using similar methods!

John: I decided in my mid-teens to become a writer. And, early on, I learned a lesson that I still apply daily. I have to take a step back, regularly, and read from the top. It’s easy to get bogged down in a single sentence or paragraph. But, if I scroll up to the first line and go over a piece with a reader’s perspective in mind, it tends to untangle things. A broken flow or a missing thematic link sticks out, and I get a feel for how to continue what I’m writing. That process takes patience, for sure, but I view it non-judgmentally: this is just the search for a solution that conveys what I need to convey. (Plus, if I’m not reading what I write, it’s hard to ask other people to do so!) It’s helped me more than I can describe — even this afterword was written the same way.

Until next time!

Discussion about this post

Ready for more?

Spinlocks Considered Harmful (2020)

Lobsters
matklad.github.io
2026-10-09 09:33:23
Comments...
Original Article

Happy new year 🎉!

In this post, I will be expressing strong opinions about a topic I have relatively little practical experience with, so feel free to roast and educate me in comments (link at the end of the post) :-)

Specifically, I’ll talk about:

  • spinlocks,
  • spinlocks in Rust with #[no_std] ,
  • priority inversion,
  • CPU interrupts,
  • and a couple of neat/horrible systemsy Rust hacks.

Context

I maintain once_cell crate, which is a synchronization primitive. It uses std blocking facilities under the hood (specifically, std::thread::park ), and as such is not compatible with #[no_std] . A popular request is to add a spin-lock based implementation for use in #[no_std] environments: #61 .

More generally, this seems to be a common pattern in Rust ecosystem:

  • A crate uses Mutex or other synchronization mechanism from std
  • Someone asks for #[no_std] support
  • Mutex is swapped for some variation of spinlock.

For example, the lazy_static crate does this:

github.com/rust-lang-nursery/lazy-static.rs/blob/master/src/core_lazy.rs

I think this is an anti-pattern, and I am writing this blog post to call it out.

What Is a Spinlock, Anyway?

A Spinlock is the simplest possible implementation of a mutex, its general form looks like this:

static LOCKED: AtomicBool = AtomicBool::new(false);

while LOCKED.compare_and_swap(false, true, Ordering::Acquire) { 
  std::sync::atomic::spin_loop_hint(); 
}

/* Critical section */  

LOCKED.store(false, Ordering::Release);
  1. To grab a lock, we repeatedly execute compare_and_swap until it succeeds. The CPU “spins” in this very short loop.
  2. Only one thread at a time can be here.
  3. To release the lock, we do a single atomic store.
  4. Spinning is wasteful, so we use an intrinsic to instruct the CPU to enter a low-power mode.

Why we need Ordering::Acquire and Ordering::Release is very interesting, but beyond the scope of this article.

The key take-away here is that a spinlock is implemented entirely in user space: from OS point of view, a “spinning” thread looks exactly like a thread that does a heavy computation.

An OS-based mutex, like std::sync::Mutex or parking_lot::Mutex , uses a system call to tell the operating system that a thread needs to be blocked. In pseudo code, an implementation might look like this:

static LOCKED: AtomicBool = AtomicBool::new(false);

while LOCKED.compare_and_swap(false, true, Ordering::Acquire)
  park_this_thread(&LOCKED);
}

/* Critical section */

LOCKED.store(false, Ordering::Release);
unpark_some_thread(&LOCKED);

The main difference is park_this_thread — a blocking system call. It instructs the OS to take current thread off the CPU until it is woken up by an unpark_some_thread call. The kernel maintains a queue of threads waiting for a mutex. The park call enqueues current thread onto this queue, while unpark dequeues some thread. The park system call returns when the thread is dequeued. In the meantime, the thread waits off the CPU.

If there are several different mutexes, the kernel needs to maintain several queues. An address of a lock can be used as a token to identify a specific queue (this is a futex API).

System calls are expensive, so production implementations of Mutex usually spin for several iterations before calling into OS, optimistically hoping that the Mutex will be released soon. However, the waiting always bottoms out in a syscall.

Spinning Just For a Little Bit, What Can Go Wrong?

Because spin locks are so simple and fast, it seems to be a good idea to use them for short-lived critical sections. For example, if you only need to increment a couple of integers, should you really bother with complicated syscalls? In the worst case, the other thread will spin just for a couple of iterations…

Unfortunately, this logic is flawed! A thread can be preempted at any time, including during a short critical section. If it is preempted, that means that all other threads will need to spin until the original thread gets its share of CPU again. And, because a spinning thread looks like a good, busy thread to the OS, the other threads will spin until they exhaust their quants, preventing the unlucky thread from getting back on the processor!

If this sounds like a series of unfortunate events, don’t worry, it gets even worse. Enter Priority Inversion . Suppose our threads have priorities, and OS tries to schedule high-priority threads over low-priority ones.

Now, what happens if the thread that enters a critical section is a low-priority one, but competing threads have high priority? It will likely get preempted: there are higher priority threads after all. And, if the number of cores is smaller than the number of high priority threads that try to lock a mutex, it likely won’t be able to complete a critical section at all: OS will be repeatedly scheduling all the other threads!

No OS, no problem?

But wait! — you would say — we only use spin locks in #[no_std] crates, so there’s no OS to preempt our threads.

First , it’s not really true: it’s perfectly fine, and often even desirable, to use #[no_std] crates for usual user-space applications. For example, if you write a Rust replacement for a low-level C library, like zlib or openssl, you will probably make the crate #[no_std] , so that non-Rust applications can link to it without pulling the whole of the Rust runtime.

Second , if there’s really no OS to speak about, and you are on the bare metal (or in the kernel), it gets even worse than priority inversion.

On bare metal, we generally don’t worry about thread preemption, but we need to worry about processor interrupts . That is, while processor is executing some code, it might receive an interrupt from some periphery device, and temporary switch to the interrupt handler’s code.

And here comes the disaster: if the main code is in the middle of the critical section when the interrupt arrives, and if the interrupt handler tries to enter the critical section as well, we get a guaranteed deadlock! There’s no OS to switch threads after a quant expires. Here are Linux kernel docs discussing this issue.

Practical Applications

Let’s trigger priority inversion! Our victim is the getrandom crate. I don’t pick on getrandom specifically here: the pattern is pervasive across the ecosystem.

The crate uses spinning in the LazyUsize utility type:

pub struct LazyUsize(AtomicUsize);

impl LazyUsize {
  // Synchronously runs the init() function. Only one caller
  // will have their init() function running at a time, and
  // exactly one successful call will be run. init() returning
  // UNINIT or ACTIVE will be considered a failure, and future
  // calls to sync_init will rerun their init() function.

  pub fn sync_init(
    &self,
    init: impl FnOnce() -> usize,
    mut wait: impl FnMut(),
  ) -> usize {
    // Common and fast path with no contention.
    // Don't wast time on CAS.
    match self.0.load(Relaxed) {
      Self::UNINIT | Self::ACTIVE => {}
      val => return val,
    }
    // Relaxed ordering is fine,
    // as we only have a single atomic variable.
    loop {
      match self.0.compare_and_swap(
        Self::UNINIT,
        Self::ACTIVE,
        Relaxed,
      ) {
        Self::UNINIT => {
          let val = init();
          self.0.store(
            match val {
              Self::UNINIT | Self::ACTIVE => Self::UNINIT,
              val => val,
            },
            Relaxed,
          );
          return val;
        }
        Self::ACTIVE => wait(),
        val => return val,
      }
    }
  }
}

There’s a static instance of LazyUsize which caches file descriptor for /dev/random :

https://github.com/rust-random/getrandom/blob/v0.1.13/src/use_file.rs#L26

This descriptor is used when calling getrandom — the only function that is exported by the crate.

To trigger priority inversion, we will create 1 + N threads, each of which will call getrandom::getrandom . We arrange it so that the first thread has a low priority, and the rest are high priority. We stagger threads a little bit so that the first one does the initialization. We also make creating the file descriptor slow, so that the first thread gets preempted while in the critical section.

Here is the implementation of this plan: https://github.com/matklad/spin-of-death .

It uses a couple of systems programming hacks to make this disaster scenario easy to reproduce. To simulate slow /dev/random , we want to intercept the poll syscall getrandom is using to ensure that there’s enough entropy. We can use strace to log system calls issued by a program. I don’t know if strace can be used to make a syscall run slow (now, once I’ve looked at the website, I see that it can in fact be used to tamper with syscalls, sigh ), but we actually don’t need to! getrandom does not use the syscall directly, it uses the poll function from libc . We can substitute this function by using LD_PRELOAD , but there’s an even simpler way! We can trick the static linker into using a function which we define ourselves:

#[no_mangle]
pub extern "C" fn poll(
  _fds: *const u8,
  _nfds: usize,
  _timeout: i32,
) -> u32 {
  sleep_ms(500);
  1
}

The name of the function accidentally ( :) ) clashes with a well-known POSIX function .

However, this alone is not enough. getrandom tries to use getrandom syscall first, and that code path does not use a spin lock. We need to fool getrandom into believing that the syscall is not available. Our extern "C" trick wouldn’t have worked if getrandom literally used the syscall instruction. However, as inline assembly (which you need to issue a syscall manually) is not available on stable Rust, getrandom goes via syscall function from libc . That we can override with the same trick.

However, there’s a wrinkle! Traditionally, libc API used errno for error reporting. That is, on a failure the function would return an single specific invalid value, and set the errno thread local variable to the specific error code. syscall follows this pattern.

The errno interface is cumbersome to use. The worst part of errno is that the specification requires it to be a macro, and so you can only really use it from C source code . Internally, on Linux the macro calls __get_errno_location function to get the thread local, but this is an implementation detail (which we will gladly take advantage of, in this land of reckless systems hacking!). The irony is that the ABI of Linux syscall just returns error codes, so libc has to do some legwork to adapt to the awkward errno interface.

So, here’s a strong contender for the most cursed function I’ve written so far:

#[no_mangle]
pub extern "C" fn syscall(
  _syscall: u64,
  _buf: *const u8,
  _len: usize,
  _flags: u32,
) -> isize {
  extern "C" {
    fn __errno_location() -> *mut i32;
  }
  unsafe {
    *__errno_location() = 38; // ENOSYS
  }
  -1
}

It makes getrandom believe that there’s no getrandom syscall, which causes it to fallback to /dev/random implementation.

To set thread priorities, we use thread_priority crate, which is a thin wrapper around pthread APIs. We will be using real time priorities, which require sudo .

And here are the results:

$ cargo build --release
    Finished release [optimized] target(s) in 0.01s
$ time sudo ./target/release/spin-of-death
^CCommand terminated by signal 2
real 136.54s
user 96.02s
sys  940.70s
rss  6880k

Note that I had to kill the program after two minutes. Also note the impressive system time, as well as load average

If we patch getrandom to use std::sync::Once instead we get a much better result:

$ cargo build --release --features os-blocking-getrandom
    Finished release [optimized] target(s) in 0.01s
$ time sudo ./target/release/spin-of-death
real 0.51s 
user 0.01s
sys  0.04s
rss  6912k
  1. Note how real is half a second, but user and sys are small. That’s because we are waiting for 500 milliseconds in our poll

This is because Once uses OS facilities for blocking, and so OS notices that high priority threads are actually blocked and gives the low priority thread a chance to finish its work.

If Not a Spinlock, Then What?

First , if you only use a spin lock because “it’s faster for small critical sections”, just replace it with a mutex from std or parking_lot . They already do a small amount of spinning iterations before calling into the kernel, so they are as fast as a spinlock in the best case, and infinitely faster in the worst case.

Second , it seems like most problematic uses of spinlocks come from one time initialization (which is exactly what my once_cell crate helps with). I think it usually is possible to get away without using spinlocks. For example, instead of storing the state itself, the library may just delegate state storing to the user. For getrandom , it can expose two functions:

fn init() -> Result<RandomState>;
fn getrandom(state: &RandomState, buf: &mut[u8]) -> Result<usize>;

It then becomes the user’s problem to cache RandomState appropriately. For example, std may continue using a thread local ( src ) while rand, with std feature enabled, could use a global variable, protected by Once .

Another option, if the state fits into usize and the initializing function is idempotent and relatively quick, is to do a racy initialization:

pub fn get_state() -> usize {
  static CACHE: AtomicUsize = AtomicUsize::new(0);
  let mut res = CACHE.load(Ordering::Relaxed);
  if res == 0 {
    res = init();
    CACHE.store(res, Ordering::Relaxed);
  }
  res
}

fn init() -> usize { ... }

Take a second to appreciate the absence of unsafe blocks and cross-core communication in the above example! At worst, init will be called number of cores times (EDIT: this is wrong, thanks to /u/pcpthm for pointing this out !).

There’s also a nuclear option: parametrize the library by blocking behavior, and allow the user to supply their own synchronization primitive.

Third , sometimes you just know that there’s only a single thread in the program, and you might want to use a spinlock just to silence those annoying compiler errors about static mut . The primary use case here I think is WASM. A solution for this case is to assume that blocking just doesn’t happen, and panic otherwise. This is what std does for Mutex on WASM, and what is implemented for once_cell in this PR: #82 .

Discussion on /r/rust .

EDIT: If you enjoyed this post, you might also like this one:

https://probablydance.com/2019/12/30/measuring-mutexes-spinlocks-and-how-bad-the-linux-scheduler-really-is/

Looks like we have some contention here!

EDIT: there’s now a follow up post, where we actually benchmark spinlocks:

https://matklad.github.io/2020/01/04/mutexes-are-faster-than-spinlocks.html

Our $445M Series D

Hacker News
oxide.computer
2026-10-09 09:12:47
Comments...
Original Article

In the spring, we hit a pretty wild milestone: Oxide paid income tax. And not because of some unusual transaction or one-time event, but because our ordinary operations (selling computers!) generated taxable income after accounting for the costs of components, manufacturing, salaries, and running the rest of the business. Of course, we each individually pay income tax every year; is it that surprising that a company is doing what we all do every spring?

Well, yes, it is: most startups don’t pay income tax because most startups aren’t profitable! Indeed, startups seek investment because they have costs long before they have revenue, let alone gross profit — let alone income. This is by design: profitability is a lagging indicator of product/market fit (the adventure in venture capital is investing long before the business has materialized!).

Paying taxes

Figure 1. Us being as excited as you can be paying taxes

So this was a big milestone, and on top of that (and contrary to Russ Hanneman’s admonition !), we have a very large order backlog. On the one hand, it’s truly extraordinary to watch the business generate cash, but with demand far exceeding supply, significant cash is needed to secure inventory and fulfill these orders. This is one of the peculiar dynamics of a rapidly growing hardware business: we must commit substantial cash to components and manufacturing well before the resulting systems reach customers.

Now, between our Series B , Series C , our existing debt facilities, and the cash generated by the business itself, we felt confident we could satisfy our current backlog, but the absolute numbers are large enough that we would have had to exercise real caution in accepting additional demand. We are, after all, children of the Dot Com bust — cautious by nature — and would not put the business in a position where new supply disruptions, economic shocks, or other events outside our control could jeopardize it.

Fortunately, this is the problem that capital is born to solve. Our investors saw this too: they have been extraordinary believers in Oxide from the beginning, and, thrilled by the burgeoning demand, they wanted to be sure that we were properly positioned to fully take advantage of Oxide’s large market.

Six crated Oxide racks lined up on a warehouse floor

As they have so many times for us over the seven years of the company, Eclipse stood up to lead, and our $445M Series D quickly came together. Existing investors USIT , Riot Ventures , and Jane Street signed up for big pieces — and others on the cap table including Friends and Family Capital and Counterpart eagerly joined in.

We are deeply appreciative of the support of these existing investors, but we also wanted to add new investors to the company. While there was a lot of outside interest (profitability being the ultimate VC aphrodisiac!), there was one firm that stood above the rest: Atreides Management , which first got to know us nearly two years ago and has stayed close to the company ever since. We love their analytical approach, their courage in hard-tech investing — and their belief in Oxide.

Finally, we are thrilled to welcome AMD as a new strategic investor. AMD has long been a believer in Oxide: it was with their support that we were able to achieve breakthroughs like our own platform enablement software . And of course, we have been big believers in AMD: one of our first big bets was on AMD EPYC . We think the partnership between AMD and Oxide is a lasting one, and it’s fitting to have that expressed in the cap table.

All of these investors are — like us — in it for the long haul. When we raised our $200M Series C , we said that it was to entirely de-risk the company with respect to capital, to assure both our longevity and our independence. This Series D builds on that assurance to allow us to satisfy our substantial backlog while continuing to accept new demand, expand manufacturing capacity, and invest for the enduring company that we have always set out to build.

To our investors, partners, fans, long-time listeners , employees, and most of all customers: thank you. While this is but a milestone on the long road to what we know Oxide will be, it is nonetheless an exhilarating one!

Security updates for Friday

Linux Weekly News
lwn.net
2026-10-09 09:08:14
Security updates have been issued by AlmaLinux (bind, bind9.16, freerdp, glibc, kbd, mod_auth_openidc, openssl, perl-DBI, python3.12, python3.14, and tftp), Debian (rails and twitter-bootstrap3), Fedora (barman, cockpit, hcloud, libmodsecurity, nginx-mod-modsecurity, perl-DBI, sudo, and xorg-x11-ser...
Original Article
Dist. ID Release Package Date
AlmaLinux ALSA-2026:79162 8 bind 2026-10-09
AlmaLinux ALSA-2026:79113 8 bind9.16 2026-10-09
AlmaLinux ALSA-2026:76755 9 freerdp 2026-10-09
AlmaLinux ALSA-2026:79281 9 glibc 2026-10-09
AlmaLinux ALSA-2026:78951 8 kbd 2026-10-09
AlmaLinux ALSA-2026:79177 9 mod_auth_openidc 2026-10-09
AlmaLinux ALSA-2026:77396 9 openssl 2026-10-09
AlmaLinux ALSA-2026:76760 9 perl-DBI 2026-10-09
AlmaLinux ALSA-2026:77017 9 python3.12 2026-10-09
AlmaLinux ALSA-2026:77021 9 python3.14 2026-10-09
AlmaLinux ALSA-2026:78952 8 tftp 2026-10-09
Debian DLA-4829-1 LTS rails 2026-10-08
Debian DLA-4830-1 LTS twitter-bootstrap3 2026-10-09
Fedora FEDORA-2026-82691b59d6 F43 barman 2026-10-09
Fedora FEDORA-2026-0b3030633b F44 barman 2026-10-09
Fedora FEDORA-2026-9ff25022c1 F43 cockpit 2026-10-09
Fedora FEDORA-2026-6d4a64a6b0 F43 hcloud 2026-10-09
Fedora FEDORA-2026-819ccf04d8 F44 hcloud 2026-10-09
Fedora FEDORA-2026-5da3a4753b F44 libmodsecurity 2026-10-09
Fedora FEDORA-2026-5da3a4753b F44 nginx-mod-modsecurity 2026-10-09
Fedora FEDORA-2026-272f19f521 F43 perl-DBI 2026-10-09
Fedora FEDORA-2026-6d3a15e9c3 F44 perl-DBI 2026-10-09
Fedora FEDORA-2026-7d4732cbab F44 sudo 2026-10-09
Fedora FEDORA-2026-2448dda850 F44 xorg-x11-server-Xwayland 2026-10-09
Mageia MGASA-2026-0471 10 libxfont2 2026-10-08
Oracle ELSA-2026-75578 OL9 bind9.18 2026-10-08
Oracle ELSA-2026-76761 OL9 firefox 2026-10-08
Oracle ELSA-2026-70498 OL10 kernel 2026-10-08
Oracle ELSA-2026-73428 OL10 nodejs24 2026-10-08
Oracle ELSA-2026-76760 OL9 perl-DBI 2026-10-08
Oracle ELSA-2026-75769 OL10 vim 2026-10-08
Red Hat RHSA-2026:77690-01 EL10 kernel 2026-10-09
Red Hat RHSA-2026:77634-01 EL10.0 kernel 2026-10-09
Red Hat RHSA-2026:79778-01 EL8.4 kernel 2026-10-09
Red Hat RHSA-2026:79783-01 EL8.6 kernel 2026-10-09
Red Hat RHSA-2026:79782-01 EL8.8 kernel 2026-10-09
Red Hat RHSA-2026:79784-01 EL9.6 kernel 2026-10-09
Red Hat RHSA-2026:72287-01 EL8.8 libreswan 2026-10-09
Red Hat RHSA-2026:61779-01 EL9.2 libreswan 2026-10-09
Red Hat RHSA-2026:61258-01 EL9.4 libreswan 2026-10-09
Red Hat RHSA-2026:76743-01 EL10 opentelemetry-collector 2026-10-09
Red Hat RHSA-2026:76744-01 EL9 opentelemetry-collector 2026-10-09
Red Hat RHSA-2026:49526-01 EL10 osbuild-composer 2026-10-09
Red Hat RHSA-2026:49838-01 EL9 osbuild-composer 2026-10-09
Red Hat RHSA-2026:73915-01 EL8 rhc 2026-10-09
Red Hat RHSA-2026:72275-01 EL9 rhc 2026-10-09
Red Hat RHSA-2026:79012-01 EL9.2 rhc 2026-10-09
Red Hat RHSA-2026:79011-01 EL9.4 rhc 2026-10-09
Red Hat RHSA-2026:79010-01 EL9.6 rhc 2026-10-09
Red Hat RHSA-2026:61907-01 EL9.4 runc 2026-10-09
Red Hat RHSA-2026:61906-01 EL9.6 runc 2026-10-09
SUSE SUSE-SU-2026:4592-1 SLE15 oS15.6 GraphicsMagick 2026-10-08
SUSE openSUSE-SU-2026:22032-1 oS16.0 alloy 2026-10-08
SUSE openSUSE-SU-2026:22035-1 oS16.0 amazon-ecs-init 2026-10-08
SUSE SUSE-SU-2026:4597-1 SLE5.0 SLE5.1 SLE5.2 SLE5.3 SLE5.4 SLE5.5 SLE-m5.0 SLE-m5.1 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 bind 2026-10-09
SUSE openSUSE-SU-2026:22040-1 oS16.0 busybox 2026-10-08
SUSE openSUSE-SU-2026:22039-1 oS16.0 distribution 2026-10-08
SUSE SUSE-SU-2026:4594-1 SLE15 oS15.4 emacs 2026-10-08
SUSE SUSE-SU-2026:4598-1 SLE12 ghostscript 2026-10-09
SUSE SUSE-SU-2026:4591-1 SLE15 SLE5.3 SLE5.4 SLE5.5 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.3 glibc 2026-10-08
SUSE openSUSE-SU-2026:11962-1 TW hauler 2026-10-08
SUSE openSUSE-SU-2026:11963-1 TW helm 2026-10-08
SUSE openSUSE-SU-2026:11964-1 TW helm3 2026-10-08
SUSE openSUSE-SU-2026:22034-1 oS16.0 jackson-annotations, jackson-core, jackson-databind 2026-10-08
SUSE SUSE-SU-2026:4595-1 SLE15 SLE5.5 SLE-m5.5 oS15.5 kernel 2026-10-08
SUSE openSUSE-SU-2026:11968-1 TW libpoppler-cpp3 2026-10-08
SUSE openSUSE-SU-2026:22031-1 oS16.0 libxtst 2026-10-08
SUSE openSUSE-SU-2026:11965-1 TW logback 2026-10-08
SUSE SUSE-SU-2026:24056-1 SLE-m6.0 nvidia-open-driver-G07-signed 2026-10-08
SUSE SUSE-SU-2026:24019-1 SLE-m6.1 nvidia-open-driver-G07-signed 2026-10-08
SUSE openSUSE-SU-2026:11966-1 TW perl-DBI 2026-10-08
SUSE SUSE-SU-2026:4589-1 SLE15 oS15.4 php-composer2 2026-10-08
SUSE openSUSE-SU-2026:11967-1 TW pi-coding-agent 2026-10-08
SUSE openSUSE-SU-2026:11969-1 TW portprotonqt 2026-10-08
SUSE openSUSE-SU-2026:11970-1 TW pvetui 2026-10-08
SUSE SUSE-SU-2026:4593-1 SLE15 python-hpack 2026-10-08
SUSE openSUSE-SU-2026:11971-1 TW python313-GitPython 2026-10-08
SUSE SUSE-SU-2026:4588-1 SLE15 wpa_supplicant 2026-10-08
SUSE SUSE-SU-2026:4587-1 SLE15 SLE5.3 SLE5.4 SLE-m5.3 SLE-m5.4 wpa_supplicant 2026-10-08
SUSE SUSE-SU-2026:4590-1 SLE15 SLE5.5 SLE-m5.5 oS15.5 wpa_supplicant 2026-10-08
Ubuntu USN-8898-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 apache2 2026-10-08
Ubuntu USN-8908-1 16.04 18.04 20.04 22.04 24.04 26.04 bluez 2026-10-09
Ubuntu USN-8902-1 22.04 24.04 26.04 libarchive 2026-10-08
Ubuntu USN-8909-1 16.04 18.04 20.04 22.04 24.04 26.04 libde265 2026-10-08
Ubuntu USN-8907-1 24.04 26.04 libgit2 2026-10-08
Ubuntu USN-8899-1 16.04 18.04 20.04 22.04 24.04 26.04 libpng1.6 2026-10-08
Ubuntu USN-8910-1 14.04 16.04 18.04 20.04 22.04 24.04 26.04 libxml2 2026-10-08
Ubuntu USN-8903-1 22.04 24.04 linux, linux-aws, linux-aws-6.8, linux-aws-fips, linux-fips, linux-realtime, linux-realtime-6.8 2026-10-08
Ubuntu USN-8887-2 24.04 linux-aws-7.0 2026-10-08
Ubuntu USN-8904-1 22.04 24.04 linux-azure, linux-azure-6.8, linux-azure-fde, linux-azure-fde-6.8, linux-azure-fips 2026-10-08
Ubuntu USN-8888-2 24.04 linux-azure-7.0, linux-azure-fde-7.0 2026-10-08
Ubuntu USN-8905-2 24.04 linux-gcp 2026-10-09
Ubuntu USN-8905-1 22.04 24.04 linux-gcp-6.8, linux-gcp-fips 2026-10-08
Ubuntu USN-8887-3 24.04 linux-gcp-7.0, linux-hwe-7.0, linux-oracle-7.0 2026-10-09
Ubuntu USN-8903-2 22.04 24.04 linux-gke, linux-gkeop, linux-ibm, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency, linux-oracle 2026-10-09
Ubuntu USN-8906-1 22.04 linux-ibm-6.8 2026-10-08
Ubuntu USN-8875-2 22.04 linux-nvidia 2026-10-09
Ubuntu USN-8911-1 24.04 linux-oem-6.17 2026-10-09

Deno Is Joining Cloudflare

Hacker News
deno.com
2026-10-09 09:03:48
Comments...
Original Article

For years, we’ve been working to make building server software simpler. We questioned how modules could be distributed, what security guarantees a JavaScript runtime could provide, what belonged in a complete toolchain, and how easily an application could be distributed as a standalone executable. Compatibility with Node.js became an important part of that work too: our users wanted the Deno improvements while continuing to plug into the existing JS ecosystem. The team and community built a runtime that brought these capabilities together and challenged assumptions about what JS development could look like.

Today we’re announcing that the entire Deno team is joining Cloudflare to take that work further.

Our ambition has always extended beyond the runtime. I wrote about this in my JavaScript Containers blog post: compute, storage, and communication working together, without every application assembling its own infrastructure.

With Deno Deploy , we took another step towards that goal. We wanted to make running applications as straightforward as possible. But building and operating Deploy also showed us how much complexity remained underneath that developer experience. I wanted to simplify that layer, too.

This led to celld . Building on the Cloudflare Workers programming model, celld lets developers build distributed applications from the start while making the system simple to operate. What excites me greatly is that the scaling is built into the programming model, rather than infrastructure each app has to assemble itself.

The progression from Deno to Deno Deploy to celld explains why this move makes sense to us. At Cloudflare we’ll combine our work with that of the Workers and Durable Objects teams. We want to make this programming model the default way to build servers, whether you run on Cloudflare’s network or your own infrastructure.

Joining also means choosing where to focus our effort. We’ve decided to put our future development work into this shared platform rather than continuing to develop a separate runtime and hosting service. We know this is a consequential change for people who have built on Deno.

To everyone who contributed code, built businesses on Deno, reported problems, and trusted our direction: thank you. Here’s what this means concretely:

  • We will support the Deno runtime for another year with monthly releases containing bug fixes and security updates. After that year we will end our development of the Deno runtime. Deno will remain open source, and we welcome others who want to continue its development.
  • Deno Deploy will continue operating for six months before shutting down. We will provide migration support for paying customers moving to Cloudflare Workers.
  • JSR will continue operating, with its infrastructure moving to Cloudflare.
  • We will continue supporting rusty_v8 and work toward integrating it into workerd .

The need for better abstractions is especially acute with AI. Durable Objects bring together capabilities that are particularly useful for agent harnesses: inexpensive, serverless execution, persistent state, WebSockets, and a high-level JavaScript interface. This is what I’m most excited to explore and why celld focuses on Durable Objects.

Kenton Varda and I explain more in our joint post on the Cloudflare blog . If you’re building agents at scale and want to run them on your own infrastructure, please reach me now at ry@cloudflare.com .

HIP and ROCm as first-class citizens in Guix

Lobsters
hpc.guix.info
2026-10-09 09:01:43
Comments...
Original Article

Earlier this year, two years after AMD engineers contributed packages the HIP/ROCm stack to the Guix-HPC channels , Guix developers migrated the whole HIP/ROCm stack into Guix proper, starting with version 7.1.1. This was quite a milestone as it makes HIP/ROCm first-class citizens and gives them more exposure and better support in the community.

The package set consists of more than 40 packages covering many things:

We are also gradually adding HIP/ROCm variants of scientific software such as CP2K and Chameleon , a dense linear algebra solver developed at Inria.

Selecting target GPUs

The set of AMD GPU architectures grows quickly . As packagers, we choose a default set of target GPU architectures to build ROCm/HIP-enabled applications for, but that set of architectures must be limited given the build time and size of resulting application binaries. It is crucial for users to be able to override this default set of target architectures to build specifically for the architecture(s) they want.

To address that, we added a new package transformation option to Guix called --amd-gpu . Just like --tune lets you build a package optimized for a specific CPU micro-architecture , --amd-gpu creates, on the fly, a variant of the relevant packages built specifically for the given GPU architecture(s).

For example, here is how you would run a variant of the ROCm bandwidth test built specifically for AMD Instinct MI250 ( gfx90a ) and for AMD Instinct MI300 ( gfx942 ):

$ srun --tasks-per-node=1 -N1 --exclusive … \
    guix shell rocm-bandwidth-test --amd-gpu=gfx90a,gfx942 -- \
    rocm-bandwidth-test plugin --run tb p2p
TransferBench v1.64.00
…
Bytes Per Direction 268435456
Unidirectional copy peak bandwidth GB/s [Local read / Remote write] (GPU-Executor: GFX)
 SRC+EXE\DST    CPU 00    CPU 01    CPU 02    CPU 03       GPU 00    GPU 01    GPU 02    GPU 03
  CPU 00  ->     18.85     18.55     18.36     18.45        19.00     18.61     18.69     18.70
  CPU 01  ->      7.87      8.82      8.42      8.63         7.99      8.16      7.40      7.64
  CPU 02  ->      6.30      6.53      6.42      7.05         5.58      5.93      5.94      5.91
  CPU 03  ->      6.34      7.09      7.50      7.35         6.17      6.23      6.37      6.23

  GPU 00  ->   1307.15     90.22     90.85     91.45      1360.70     91.24     91.39     92.14
  GPU 01  ->     90.58   1371.25     92.78     90.63        91.08   1431.93     92.38     90.84
  GPU 02  ->     91.12     92.57   1355.95     91.82        90.68     92.22   1407.58     91.52
  GPU 03  ->     91.41     91.08     91.66   1348.37        91.99     90.92     91.88   1468.65
                           CPU->CPU  CPU->GPU  GPU->CPU  GPU->GPU
Averages (During UniDir):     10.09      9.66    404.93     91.52
…

(This particular run was on a node with MI300 GPUs.)

Of course these GPU architecture identifiers are, well, hard to grasp. You can find the full list in the LLVM documentation ; should you make a typo or select an architecture that the toolchain at hand doesn’t support, Guix lets you know about it without going any further:

$ guix build rocm-bandwidth-test --amd-gpu=forgot-the-name 
gnu/packages/llvm.scm:2283:2: error: compiler rocm-toolchain@7.1.1 does not support AMD GPU target forgot-the-name
hint: Compiler rocm-toolchain@7.1.1 supports the following AMD GPU targets:

     bonaire, carrizo, fiji, generic, generic-hsa, gfx10-1-generic, gfx10-3-generic,
     gfx1010, gfx1011, gfx1012, gfx1013, gfx1030, gfx1031, gfx1032, gfx1033, gfx1034,
     gfx1035, gfx1036, gfx11-generic, gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151,
     gfx1152, gfx1153, gfx12-generic, gfx1200, gfx1201, gfx600, gfx601, gfx602, gfx700,
     gfx701, gfx702, gfx703, gfx704, gfx705, gfx801, gfx802, gfx803, gfx805, gfx810,
     gfx9-4-generic, gfx9-generic, gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a,
     gfx90c, gfx940, gfx941, gfx942, gfx950, hainan, hawaii, iceland, kabini, kaveri,
     mullins, oland, pitcairn, polaris10, polaris11, stoney, tahiti, tonga, tongapro, verde

Performance

So far, microbencharks are giving us green lights. Let’s take a closer look at benchmarks we ran on nodes with 8 MI250X GPUs of the Adastra supercomputer .

ROCm support for Open MPI

First, there’s the bandwidth measured for MPI transfers among Graphics Compute Dies (GCDs)—specifically, using the ROCm-enabled Open MPI package, openmpi-rocm . For this, we run the OSU Micro-Benchmarks linked against openmpi-rocm , asking it to measure device-to-device transfers; we do that with large messages (16 MiB) and for all GCD pairs within a node, where each node has 8 GCDs:

export HSA_ENABLE_SDMA=0

for first in $(seq 0 7)
do
    for second in $(seq $(($first + 1)) 7)
    do
        export HIP_VISIBLE_DEVICES="$first,$second"
        echo "# HIP_VISIBLE_DEVICES: $HIP_VISIBLE_DEVICES"
        guix time-machine -q --commit=f5c2937cddd4c8427f15b8b711f8a82211a09407 -- \
          shell openmpi-rocm osu-micro-benchmarks-rocm -- \
          mpirun -n 2 --mca pml ucx \
          osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
    done
done

Some explanations:

  • The time-machine part selects the commit, and thus the entire software stack , that we have tested—fewer moving pieces. The shell bit specifies the packages we need in our environment. The commit we selected here provides a stack with Open MPI 5.0.10 and HIP/ROCm 7.1.1.
  • Setting HSA_ENABLE_SDMA=0 , which turns off use of System Direct Memory Access (SDMA) by the HIP/ROCm runtime, gives higher throughput .
  • We create two MPI processes on the node ( mpirun -n 2 ). The --mca pml ucx flag ensures Open MPI selects ucx as its interconnect backend.
  • Last, we run osu_bw , the bandwidth benchmark, for device-to-device ( D D ) transfers with messages of 16 MiB. Setting the HIP_VISIBLE_DEVICES right above allows us to ensure transfers are made between these two GCDs.

This gives us the communication matrix below, showing the bandwidth for unidirectional copies from device to device:

Heap map showing the bandwidth between every pair of GCDs.

The bandwidth we observe between each pair of GCDs matches the GCD topology and Infinity Fabric links ; for example, peak bandwidth between GCD 0 and GCD 1 is roughly four times that between GCD 0 and GCD 2, and two times that between GCD 0 and GCD 6.

Computing benchmark

What about computing throughput? A good test is rocHPL , the ROCm-enabled variant of the classical high-performance LINPACK .

For double-precision (aka. “Binary64”) floating point operations, the theoretical peak performance is 23.93 TFlop/s; for nodes with 8 GCDs, we can thus expect at most 23.93 x 8 = 191.5 TFlop/s per node.

To get as close as possible to peak performance, we must arrange to let rocHPL work on a matrix that occupies almost all the GCD memory, which is 512 GiB per node here. For a single 8-GCD node, a matrix of 256,000 rows and columns fills 95% of device memory, making it a good choice—in line with what the rocHPL wiki suggests.

We can run it with an incantation along these lines:

COMMIT=bf5d83139d8d4d7aa2d737b1e13620941abff2a1

# Workaround until <https://codeberg.org/guix/guix/pulls/11429>
# is merged.
export ROCM_SMI_LIB_PATH="$(readlink -f $(guix time-machine \
  -q --commit=$COMMIT -- \
  build rocm-smi-lib | grep -v -e -bin$)/lib/librocm_smi64.so)"

guix time-machine -q --commit=$COMMIT -- \
     shell rochpl openmpi-rocm --tune=znver3 -- \
     sh -x mpirun_rochpl -P 2 -Q 4 -N 256000 --NB 512

Explanations:

  • The time-machine bit once again allows us to pin Guix to the commit for which we’ve run this benchmark, while shell sets up the execution environment. For good measure, we use --tune to tune CPU code for the micro-architecture we have at hand .
  • -P and -Q specify the number of rows and columns of the MPI grid; the product corresponds to the number of GCDs on the node. -N specifies the matrix size, as discussed above.

That gives us a throughput of 160 TFlop/s—below the theoretical peak, but to our knowledge comparable to what others observe on MI250X.

Future work

This post gives an overview of where the HIP/ROCm stack is in Guix and how its performance can be validated. There are a number of things we are planning to do, starting with a minor-version upgrade of the HIP/ROCm stack before we dive into more recent versions.

More importantly, we are working on consolidation the set of benchmarks we want to use to validate the stack. Ideally, we won’t limit ourselves to micro-benchmarks and instead look at scientific applications that are known to exercise more of the supercomputer capabilities—such as GROMACS or CP2K. Our goal would be able to run a set of benchmarks before any package upgrade in the ROCm and MPI stacks, drawing from what admins at Inria and at CINES have been doing for their own clusters.

All this is a much broader endeavor. To be continued!

Acknowledgments

These benchmarks and additional tests were performed on the Adastra supercomputer hosted by CINES. Many thanks to our colleagues at CINES and to Florent Pruvost at Inria for their help. Huge thanks to the people who contributed to the HIP/ROCm stack in Guix, in particular to David Elsing for handling the bulk of the migration from the Guix-HPC channel and for upgrading those packages.

Unless otherwise stated, blog posts on this site are copyrighted by their respective authors and published under the terms of the CC-BY-SA 4.0 license and those of the GNU Free Documentation License (version 1.3 or later, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts).

‘This is not an anti-tech town’: backlash to datacenter in city once home to IBM

Guardian
www.theguardian.com
2026-10-09 09:00:28
Fight in East Fishkill, New York, part of a growing divide over whether AI benefits outweigh enormous downsides For decades, East Fishkill helped build New York’s tech industry. The hamlet, located 70 miles north of New York City, was home to a 460-acre campus where IBM researched and manufactured s...
Original Article

For decades, East Fishkill helped build New York’s tech industry.

The hamlet, located 70 miles north of New York City, was home to a 460-acre campus where IBM researched and manufactured semiconductor chips for nearly fifty years.

So when the news broke in early 2026 that a real estate developer, Treetop Companies, was exploring plans for what could become one of the largest artificial intelligence (AI) datacenters in the country, a roughly 1-gigawatt campus spanning more than 1m sq ft across about 143 acres, it seemed the town would welcome a new phase in its technological evolution.

Instead, a furious backlash erupted before even a single permit application was filed with the municipal government. Residents began attending town board meetings, organizing rallies and advocating for a temporary ban.

Even before any plans for the facility were drawn up, East Fishkill’s existing zoning laws did not allow for the construction of large data centers. The town issued a three-year moratorium on them anyway, a sign of the extreme ire against datacenters.

The temporary ban, adopted unanimously in late June, forbids the town from considering new datacenters larger than 20 megawatts until July of 2029, while officials study their potential impacts on water resources and local ecosystems. The development company at the center of the controversy has appealed the measure.

“I just think that we’re at this moment where things are happening very quickly, we need to get our ducks in a row and think about the various ways in which datacenters and new energy usage will affect our long-term community cohesiveness, environmental quality, and character,” said East Fishkill resident and professor Tanya Radford.

The fight unfolding in East Fishkill is a single piece of a growing divide . Both rural towns and communities that once eagerly welcomed high-tech development are increasingly questioning whether AI infrastructure adds enough local benefit to justify its enormous appetite for electricity, water and land.

“This is not an anti-tech town,” said Radford. “I’m an educator. I use technology.”

The proposal

The saga began after Treetop Development purchased property in East Fishkill, initially pursuing approvals for a warehouse development. Residents later discovered that the company, through local property owner Donovan Drive Holdings, had entered the queue to have a project approved that would use approximately 1,000 megawatts of electrical service, an amount more consistent with a large-scale AI datacenter than a warehouse.

This request for approval was not submitted to the town of East Fishkill. Rather, it was submitted to New York Independent System Operator (NYISO)‘s interconnection queue. NYISO is an independent organization responsible for managing New York’s high-voltage power grid, meaning whenever a company wants to build a massive new project, it must formally ask NYISO for permission to connect to the grid.

For those that call East Fishkill home, the NYISO filing quickly raised concerns.

The proposed datacenter would consume more electricity than the entire town of Buffalo, which has about 275,000 people. East Fishkill is home to just 30,000.

Kathy Hochul speaks into a microphone while people stand behind her
New York governor Kathy Hochul with US members of Congress Alexandria-Ocasio Cortez and Pat Ryan in East Fishkill this week. Photograph: Susan Watts/Office of Governor Kathy Hochul

“Residents have been speaking out against it to stop any application from coming into the town for the datacenter,” said Melissa Hoffmann, an East Fishkill resident and organizer with a local chapter of Food & Water Watch, an environmental advocacy nonprofit.

But because no formal application had been filed with East Fishkill, town officials repeatedly stressed that there was nothing before the planning board to review or reject.

“There is no application before the Town. There has never been an application for a datacenter,” East Fishkill supervisor Nick D’Alessandro wrote on Facebook in June. D’Alessandro later took down the post. His office did not respond to the Guardian’s request for comment.

He stressed that standalone datacenters were “not even listed as a permissible use” under the town’s zoning laws. Nonetheless, in June the board banned their construction for three years “to give our community certainty and allow time for further study and discussion”.

Hoffmann said months of public pressure ultimately convinced the town board to extend what had initially been discussed as a seven-month pause into a three-year moratorium.

Tech town

East Fishkill has often been described as an “ innovation hub ”, making opposition to the datacenter proposal remarkable precisely because the town has not been hostile towards new technology.

International Business Machines Corporation, better known as IBM, transformed the town during the latter half of the 20th century into one of the nation’s leading semiconductor manufacturing centers, employing thousands of workers and laying the foundation for what is now iPark 84, home to mixed-use commercial and residential facilities.

Former IBM facilities remain a defining part of the local economy, and iPark continues to house technology companies. One tenant is currently seeking to expand an existing datacenter by approximately 150 megawatts, far smaller than the facility proposed by Treetop.

Residents have insisted that their opposition is not meant to hinder forward-looking tech, but is directed at the unprecedented scale of emerging AI infrastructure.

“The pushback is really to the size,” resident Fran Caracappa, a candidate for county legislature, said. “The Treetop center would be 1,000 megawatts. People do not want to pay higher electricity rates because of a larger datacenter coming in and putting pressure on the grid.”

Residents have also questioned whether the supposed economic benefits justify the costs.

skip past newsletter promotion

Hoffmann worried that the data center would “provide very few jobs”. Caracappa similarly expressed doubt that temporary construction jobs would lead to lasting employment for locals.

“It’s not going to provide work to keep people here like the previous tech businesses did,” Caracappa said. “So what’s the benefit to the town?”

Cozy hamlet rejects development

The town’s skepticism toward a massive industrial project is also informed by the consequences of its past.

IBM’s manufacturing operations helped establish the region’s tech-industrial identity, but groundwater contamination associated with semiconductor production left lasting scars . Several polluted Superfund sites remain in the area .

In addition to groundwater protection, residents have raised concerns about noise, diesel backup generators, property values, wetlands and the area’s rural character.

people hold signs against data centers
People call on governor Kathy Hochul to sign The Data Center Act in East Fishkill in June. Photograph: Eric Weltman/Food & Water Watch

Radford, whose home sits near the Appalachian trail, said that the serene, woodsy landscape that currently surrounds the proposed site is one of the reasons she moved there.

“My neighbors and I agree that additional development in the area could only negatively impact the quality of life here,” she said.

Barely two weeks after the East Fishkill moratorium passed, New York became the first US state to enact a moratorium on new datacenters when governor Kathy Hochul signed an executive order mandating a one-year statewide pause on so-called hyperscale datacenters.

Donald Trump, an ally to tech billionaires and AI investors, responded with rage. He called the move “a terrible decision” on his Truth Social platform and accused Hochul of implementing the ban for purely political reasons.

“One of the biggest Driving Forces in the Future for Jobs, are Data Centers. They are big, strong, bold, and Money Machines for the State in which they are built,” Trump wrote. Later in the summer, he called towns rejecting datacenters “backwards and poor”.

Datacenter developer appeals

Like Trump, Treetop did not take kindly to East Fishkill’s three-year ban. In a 17-page objection letter submitted to the town board and reviewed by the Guardian, attorneys for the company argued the three-year moratorium unlawfully targets the company’s property and effectively amounts to a permanent prohibition rather than a “legitimate temporary planning measure”.

In the letter, the company said it spent years and significant resources advancing development plans for the site, including environmental reviews, wetlands investigations, traffic studies, and utility coordination.

Town officials have maintained that no datacenter application has ever been submitted and that the moratorium provides time to evaluate whether existing zoning properly addresses an entirely new class of industrial development.

East Fishkill residents are claiming victory.

“People are winning,” Hoffmann said. “Communities that fight these datacenters are winning.”

A new feature for my blog, built using my voice

Simon Willison
simonwillison.net
2026-10-09 08:54:06
I shipped a new feature for my blog today: the Newsletters page, which offers an index of all of the newsletters I've sent out, both my free weekly Substack and my monthly sponsors-only updates. I built the feature almost entirely using my voice, chatting away to my laptop while I cooked dinner. Cod...
Original Article

9th October 2026

I shipped a new feature for my blog today: the Newsletters page, which offers an index of all of the newsletters I’ve sent out, both my free weekly Substack and my monthly sponsors-only updates. I built the feature almost entirely using my voice, chatting away to my laptop while I cooked dinner.

Codex voice mode

I used the ChatGPT desktop app for this, in the Codex tab, using the voice conversation mode, running against a local development environment. Here’s what that looks like:

Three columns of the ChatGPT app. The left hand column shows my recent conversations. The middle column is a transcript of the conversation, with a throbbing black blob representing voice mode. The right hand column shows a local dev server version of my blog, with the Newsletters page visible.

I started the session against my local simonwillisonblog checkout by typing:

Start dev server and open in browser

This gave me a preview of the site that it would be working on, and meant that I could later ask it to show me the new pages so I could visually track its progress.

Then I clicked the “Start new voice chat” button—that’s not the microphone button, it’s the one to the right of it—and set my laptop up in the kitchen so I could talk to it while I cooked.

Talking to my computer

I had a pretty good idea of what I wanted to build, and it’s a simple enough Django feature that I was certain the model (in this case GPT-6 Astra High) would be able to do it. A new model, a migration, some view code, templates, and a couple of import functions to populate the database from external sources.

Here’s an extract of my voice transcript that was captured by Codex:

Um, they do not. Um, this is going to be a new type of content. Um, it’s not going to show up... Oh, hold on. Yeah, no- I do not want this to show up in my, um, tag pages and date archive pages and... Actually, no, I think... I don’t want it on the tag pages. I don’t want it on the, um, blog index page. But I think I do want it to show up on the date-based pages. You know, if you navigate to September the 19th, and I sent a newsletter on that page, I think I want that to show up. So... this is- so I think we probably need a new model. The other thing is that I want them searchable, uh the Substack ones are not searchable, because those are actually just copies of other s- on content on my blog. These monthly ones do contain unique content, and spe- and once they’re... published, like once they’re made public a month after they’ve gone out, I want them to show up on my search results.

Apparently this was clear enough that the model knew what I wanted to build! You can read the full transcript, disfluencies and all, in this Gist .

We went on like this for about half an hour (the time it took to cook dinner). The model would reply and occasionally ask clarifying questions, then get to work modifying the code.

What we built

We got a surprisingly long way entirely by voice:

  • A new model and migration to represent imported newsletters in Django, plus Django Admin configuration for that
  • Four working imports:
    • The most recent Substack items via RSS
    • Every other Substack item via their undocumented API, which GPT-6 Astra either knew about or found via search
    • All of my published monthly newsletters from my simonw/monthly-newsletter-archive GitHub repository
    • My most recent private sponsors-only newsletter from a private repository
  • The /newsletters/ and /newsletters/2026/ public archive pages
  • Newsletters showing up on day and month archive pages too, but not on tag pages or my homepage
  • Weekly Substack newsletters link to Substack; archived monthly newsletters have their own pages
  • Integration with my site search engine

It was almost ready to ship. The catch was the imports: Astra offered to export data from my local copy so I could import that into production, but I wanted it to work like my other import scripts. Since some of the data lived in a private GitHub repository, this would involve creating a new API key, and for that I knew I’d have to sit at the keyboard for a while.

Finishing it with a review

Once I had finished cooking and judged it mostly feature-complete, I had Codex create a branch and open a pull request.

I reviewed the code in the GitHub PR interface. It was nearly what I needed, except it had chosen to use Git in a subprocess for one of the import scripts. I needed one of the imports to pull from a private Git repository, so I figured the API would be a better bet. I switched to typing and had Codex swap that out for an API-based import instead.

You can see the changes I made during the review in the extra commits on the PR . I fixed the import mechanism and made a few tweaks to the display of those public pages. It took an additional half hour of typing-based prompting to get to the point where I was happy to deploy it to production by landing the PR.

The end result

You can see the end result at the new newsletters index page , or view the page for a previous monthly newsletter .

Newsletters page. It shows two Substack posts (with thumbnails) and one LLM digest Sponsors-only newsletter with a list of headings. On the right is a CTA to subscribe to my Substack and another one for my $10/month monthly briefing newsletter.

The index page shows my most recent Substack weekly newsletters and GitHub sponsors monthly newsletters mixed together in reverse chronological order. Further down the page are links to my by-year archive pages.

GPT-6 Astra designed the page, and then tweaked that design based on my vocal feedback from glancing at the local preview across the kitchen.

Better for multi-tasking than as a daily driver

OpenAI love using voice-driven demos like this one for things like DevDay —and they do work well in that environment. I don’t think this is going to be a daily driver for me though.

I’ve written before about how much “work” I get done using ChatGPT voice mode on my phone while walking the dog—mostly research and brainstorming, but occasionally actual development work by having ChatGPT write and test out snippets of code.

This feels different. The addition of the visual preview, plus being able to type or paste things in via the keyboard when I need to communicate something that doesn’t work vocally, makes this a much more powerful way of interacting with a coding agent.

I still switch back to typing once I get down to the details of things though. Being able to paste in examples and error messages, or directly highlight the code or feature that needs changing, remains more efficient than trying to describe it in words.

I mainly work from home, which is good because there’s no way I’d want to talk to my computer like this in a shared workspace!

The killer feature for me is the ability to multi-task. I usually cook with a podcast or TikTok running; now I can actually build stuff instead.

What are you doing this weekend?

Lobsters
lobste.rs
2026-10-09 08:53:09
Feel free to tell what you plan on doing this weekend and even ask for help or feedback. Please keep in mind it’s more than OK to do nothing at all too!...
Original Article

Feel free to tell what you plan on doing this weekend and even ask for help or feedback.

Please keep in mind it’s more than OK to do nothing at all too!

Study: Exercise increases cancer survival rates

Hacker News
www.nejm.org
2026-10-09 08:49:41
Comments...

Colin Watson: Free software activity in September 2026

PlanetDebian
www.chiark.greenend.org.uk
2026-10-09 08:46:28
My Debian contributions this month were all sponsored by Freexian. You can also support my work directly via Liberapay or GitHub Sponsors. OpenSSH I worked with upstream to remove libselinux linkage from /usr/sbin/sshd. I applied a fix from Mark Robillard Jr to fix reload logic when using sysvinit. ...
Original Article

My Debian contributions this month were all sponsored by Freexian.

You can also support my work directly via Liberapay or GitHub Sponsors .

OpenSSH

I worked with upstream to remove libselinux linkage from /usr/sbin/sshd .

I applied a fix from Mark Robillard Jr to fix reload logic when using sysvinit .

groff

I upgraded from 1.24.1 to 1.24.2, which fixed a few command injection security vulnerabilities.

parted

I upgraded from 3.7 to 3.8, which fixed CVE -2026-89085 and CVE -2026-89088 .

Python packaging

New upstream versions:

setuptools 84 is now in Debian and no longer contains pkg_resources . Removing uses of that module has been an ongoing project for a while now, but I did another batch of fixes this month:

A new python-coverage version triggered several build regressions due to a known problem in pytest-cov . I worked around these by setting COVERAGE_CORE=ctrace :

Other build/test failures:

I investigated a build failure in python-proton-vpn-local-agent and proposed a fix upstream , but I’m not comfortable applying this in Debian without review. If you’re familiar with this code, please take a look.

I fixed some other bugs:

Rust packaging

rust-derivre had an invalid Section field , which I cleaned up.

Comments

With an account on the Fediverse or Mastodon, you can respond to this post . Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one. Known non-private replies are displayed below.

Learn how this is implemented here .

"Entire System of Cornell University Failed Her": Jane Doe Gang Rape Case Enrages Campus Community

Democracy Now!
www.democracynow.org
2026-10-09 08:45:57
University students across the United States held a national day of action in solidarity with “Jane Doe,” the anonymous former student whose lawsuit alleging she was gang-raped by seven Cornell University Chi Phi fraternity members in 2024 has reignited outrage over how campuses and loca...
Original Article

University students across the United States held a national day of action in solidarity with “Jane Doe,” the anonymous former student whose lawsuit alleging she was gang-raped by seven Cornell University Chi Phi fraternity members in 2024 has reignited outrage over how campuses and local law enforcement mishandle sexual assault cases and fail survivors. We go to Cornell’s campus in Ithaca, New York, where faculty have introduced a no-confidence resolution against the university administration.

“The number one message that Cornell students have is that Jane Doe’s ordeal is the tip of the iceberg, that there have been many, many other cases where women have been sexually assaulted and raped at Cornell University, and they’re afraid of coming forward. They’re afraid of going to the authorities because the investigation may be botched or they may be shamed,” says Paul Ortiz, a professor of labor history and the lead sponsor of the resolution.

“Rape culture and sexual assault culture thrives on campus,” adds Saya Taylor, a Cornell sophomore and a member of the group Students for a Democratic Cornell. “The true outrage in this case doesn’t just come from what happened to Jane Doe. It comes from the fact that it could have happened to anybody, and they still would have not received any justice.”



Guests
  • Paul Ortiz

    professor of labor history at Cornell University.

  • Saya Taylor

    sophomore at Cornell University and a member of Students for a Democratic Cornell.


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.

Max severity SonicWall SMA1000 flaw now exploited in attacks

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 08:32:16
Attackers are exploiting a maximum-severity vulnerability in SonicWall SMA1000 appliances (CVE-2026-102255) that was patched on Tuesday, three days ago. [...]...
Original Article

SonicWall

Attackers are exploiting a maximum-severity vulnerability in SonicWall SMA1000 appliances (CVE-2026-102255) that was patched on Tuesday, three days ago.

Tracked as CVE-2026-102255 , the flaw affects the Appliance WorkPlace interface on SMA1000 6210, 7210, and 8200v models, but does not affect the SMA 100 Series product line or SSL-VPN running on SonicWall firewalls.

"By abusing this path, a remote unauthenticated attacker could potentially exploit this vulnerability to direct the appliance to issue requests on their behalf and reach internal functionality and perform unauthorized operations," SonicWall explained .

While SonicWall has not yet flagged this vulnerability as actively exploited in its Tuesday advisory, Previdian founder and security researcher Ryan Dewhurst told BleepingComputer on Friday that the company's honeypot network has detected exploitation attempts consistent with the CVE-2026-102255 flaw.

"The requests targeted the WorkPlace Extraweb interface, using a crafted OPTIONS request to reach the appliance's internal CouchDB service at 127.0.0.1:5984. The payload attempted to traverse into a CouchDB design document and invoke its _rewrite function, while supplying an HTTP Basic Authorization header containing the credentials admin:admin," Dewhurst told BleepingComputer.

"It affects the same WorkPlace interface targeted by earlier SSRF vulnerabilities disclosed in July and September 2026. However, the October vulnerability uses a different exploitation technique.

Dewhurst also added that while this activity is consistent with active exploitation attempts, Previdian has not yet established "whether those attempts would have successfully compromised any systems."

While Internet threat watchdog Shadowserver now tracks more than 400 SMA1000 appliances exposed online, there is no information on how many are honeypots or have already been patched against CVE-2026-102255 attacks.

SMA1000 instances exposed online
SMA1000 instances exposed online (Shadowserver)

​SMA1000 enterprise-grade secure remote access gateways are often targeted because Managed Service Providers (MSSPs), many large corporations, and government agencies use them for VPN access to internal apps and corporate networks.

For instance, in July, threat actors abused two SMA1000 zero-days (CVE-2026-15409 and CVE-2026-15410) for weeks to install custom Sou5, OrangeTail, and RootRun malware on vulnerable VPN appliances.

The U.S. Cybersecurity and Infrastructure Security Agency (CISA) later linked some of these attacks to ransomware gangs .

Last month, SonicWall also warned customers that attackers were chaining two new zero-days (CVE-2026-83548 and CVE-2026-83549) in the wild to execute remote code on vulnerable SMA1000 gateways.

Over the last four years, CISA has added 19 SonicWall vulnerabilities to its catalog of actively exploited flaws , flagging 13 of them as used by ransomware gangs.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Navi Pillay, South African Jurist, Wins Nobel Peace Prize in "Stinging Rebuke to Donald Trump"

Democracy Now!
www.democracynow.org
2026-10-09 08:31:41
The 2026 Nobel Peace Prize has been awarded to Navanethem “Navi” Pillay, the South African jurist who led the United Nations commission of inquiry that concluded that Israel had committed genocide in Gaza. Pillay’s long career in international human rights law includes work as a de...
Original Article

This is a rush transcript. Copy may not be in its final form.

AMY GOODMAN : This is Democracy Now! , democracynow.org, The War and Peace Report . I’m Amy Goodman, with Juan González.

The Norwegian Nobel Committee has announced the winner of the 2026 Nobel Peace Prize. This is the chair of the Nobel Committee speaking in Oslo this morning.

JØRGEN WATNE FRYDNES : The Nobel Peace Prize for 2026 goes to a person who, with exceptional courage and integrity, has led the way towards a more comprehensive global legal order. This year’s laureate has been instrumental in ensuring that war crimes, crimes against humanity and genocide are prosecuted. The Norwegian Nobel Committee has decided to award the Nobel Peace Prize for 2026 to Navanethem “Navi” Pillay for her efforts to promote peace and international law.

AMY GOODMAN : The South African human rights lawyer and international jurist Navi Pillay has been the United Nations high commissioner for human rights and a judge at both the International Criminal Court and at an international tribunal investigating the 1994 genocide in Rwanda. Most recently, she led the U.N. Independent International Commission of Inquiry that concluded that Israel had committed genocide in Gaza.

Navi Pillay is now 85 years old. She was born into an Indian Tamil family in apartheid South Africa. The first woman to start a law practice in Natal, South Africa, in 1967, she began her legal career defending anti-apartheid activists, including Nelson Mandela, exposing torture and helping establish key rights for prisoners on Robben Island. The Nobel Committee also praised her work in South Africa.

JØRGEN WATNE FRYDNES : A common thread runs from her early work, defending Nelson Mandela and others who stood up against apartheid, to her service as a judge in some of the key international court cases of our time.

AMY GOODMAN : Navi Pillay was in Nuremberg, Germany, at an annual conference of human rights lawyers and judges when she got the news this morning.

NAVI PILLAY : Thank you very much. Thank you very much. If you clap a little bit more, I may share this prize with Trump. … The last thing I did is the delivery of the report on Gaza naming what’s happening there as genocide.

AUDIENCE MEMBER : Yeah! Bravo!

AMY GOODMAN : Meanwhile, Israel’s Foreign Ministry took to X to denounce the awarding of the Nobel Peace Prize to Navi Pillay, calling it a, quote, “grotesque weaponization of an award to legitimize anti-Israel hatred and prejudice,” unquote.

This is Navi Pillay speaking to Reuters last year about her genocide findings as the chair of the U.N. Independent International Commission of Inquiry on the Occupied Palestinian Territories.

NAVI PILLAY : Genocide is occurring in Gaza. We haven’t gone into Palestine yet. We will, because this is a permanent commission. And we named the three individuals that we felt were responsible. And we said — and the one is the prime minister, the other the president, and the third is the former minister of defense. And we said that since they acted as agents of the state, then the state of Israel is responsible. …

Today, we witness in real time how the promise of “never again” is broken and tested in the eyes of the world. The ongoing genocide in Gaza is a moral outrage and a legal emergency.

AMY GOODMAN : For more, we’re joined here in our New York studio by war crimes prosecutor Reed Brody, member of the International Commission of Jurists, served as a member of the United Nations Group of Human Rights Experts on Nicaragua. He’s also the author of To Catch a Dictator: The Pursuit and Trial of Hissène Habré .

First, Reed, your response to Navi Pillay being chosen as the 2026 Nobel Peace laureate?

REED BRODY : This was just wonderful. I mean, I love Navi Pillay. I mean, everybody in the human rights movement reveres Navi Pillay, who actually embodies the last 60 years of work for human rights and the rule of law, from a anti-apartheid lawyer and judge in South Africa to the tribunals on Rwanda and the ICC , as high commissioner for human rights, not just being the first woman in all of these things, but, actually — or the first African, but, actually, you know, breaking new ground on genocide, on LGBT issues, on women’s issues.

And it’s also a stinging rebuke to Donald Trump. You know, Donald Trump is fighting — and the Nobel Committee did not mention Donald Trump, but his name was omnipresent in what they said. I mean, Donald Trump is sanctioning judges, fighting for a world in which, you know, might makes right, in which there is no accountability, and Navi Pillay represents the exact opposite of that: the rule of law, accountability for the worst crimes, you know, the rule of law rather than the law of the jungle.

JUAN GONZÁLEZ: And, Reed, it’s not only a rebuke, obviously, of Donald Trump, but the decision of the Nobel Committee to choose Navi Pillay at this particular time in terms of the impact on Israel and the growing isolation of Israel worldwide. Could you talk about that, as well?

REED BRODY : Well, of course, you know, she, Navi Pillay, was the head of the U.N. independent commission that was looking into abuses in the Occupied Territories. I’m on a similar commission for Nicaragua. And she found, you know, with her — you know, beyond a reasonable doubt — excuse me, reasonable grounds to believe that Israel was committing genocide. And she backed that up, you know, through thousands — with thousands of interviews, through, you know, forensic proof. And I think around the world people can cite the work that Navi Pillay has done on this. When people say that Israel is engaged in genocide, they have this imprimatur from a quasi-judicial body of the United Nations, you know, led by one of the most distinguished judges in the world.

AMY GOODMAN : And if you could comment on the comments of the Nobel Committee around right now the international legal order and what international human rights law is about?

REED BRODY : Well, I think that’s the most important thing here. I mean, we are living in a moment, as you have had on your show several times, in which the entire architecture of international law and accountability is under attack. The United States, which has vowed to dismantle the International Criminal Court, the court that she used to sit on, brick by brick, which is sanctioning the judges, like as she was once a judge of the ICC — we understand new sanctions from the United States are coming down. And here is somebody who represents the exact opposite, who represents exactly that so-called international law, those rogue international judges that the United States is going after. So this is such an important moment.

AMY GOODMAN : And interesting she got the news in Nuremberg, Germany. The significance of Nuremberg and the Nuremberg trials for the establishment of international law?

REED BRODY : Absolutely. I mean, Nuremberg is the genesis of international accountability. It’s the genesis of “never again.” It’s the first international tribunal that held state actors responsible for crimes against humanity, which talked about aggression as the supreme international crime. And in Nuremberg, she’s on the board of the Nuremberg Academy, and there’s a — in fact, one of the last times I saw Navi Pillay was in Nuremberg, where they hold these regular meetings of judges and lawyers to promote the legacy of Nuremberg and the Nuremberg Principles, which stand for this idea that no one is above the law.

And, you know, very importantly, I mean, the United States, Russia, Soviet Union, France and Great Britain were the powers that created the International Military Tribunal. And the U.S. prosecutor, Judge Jackson, said, you know, “It’s the Germans who are in front of us today, but this law has to apply to everyone.”

AMY GOODMAN : I wanted to ask you a question on a separate issue, and that is the issue of Nicaragua. We have the latest news that the United States has sent a Nicaragua torture victim back to, deported him to Nicaragua. A Nicaraguan exile who was imprisoned and tortured after protesting against the country’s government was deported by the U.S. back to Nicaragua, where he was immediately imprisoned, this past week. If you can talk about your role in investigating Nicaragua? And it’s very interesting to speak to you, given that, what, 40 years ago, you were one of the leading critics and investigators of the Contra war crime atrocities against the Sandinistas.

REED BRODY : Well, I mean, so, today, of course, Nicaragua has become a dictatorship, led by Daniel Ortega, in which, you know, there are no human rights, there is no civic space, in which 453 Nicaraguans have been stripped of their nationality, expelled. One-tenth of the Nicaraguan population has fled abroad, and many are in the United States.

AMY GOODMAN : Some of them old Sandinista leaders.

REED BRODY : Some of them old Sandinista leaders, many of them who were expelled by Nicaragua to the United States. And unfortunately, a number of them, seven of — Nicaragua once put 222 dissidents on a plane to the United States. As of today, six of those people have been in ICE detention.

And, you know, Marco Rubio, the United States considers Nicaragua to be a dictatorship. The U.S. government has coordinated international efforts to isolate Nicaragua, including a recent meeting of the Organization of American States that was devoted to Nicaragua.

And yet, what we’re seeing is that Nicaraguan dissidents are being picked up by ICE and, in this case, returned to Nicaragua, where they are rearrested. In other cases, Nicaraguans are being sent around the world. There are Nicaraguans who have been deported to the Central African Republic. A few weeks ago, one of the 222 Nicaraguans who was expelled on a plane, a leading journalist, Luis Galeano, on whose show I’ve been many times, was arrested by ICE , and still — now he’s out on bail, but he still faces deportation hearings.

AMY GOODMAN : And your title on the commission investigating Nicaragua that recently released a report?

REED BRODY : So, I’m a member — I’m a member of the United Nations Group of Human Rights Experts on Nicaragua, similar to the one that Navi Pillay was the chair of for the Occupied Palestinian Territories.

AMY GOODMAN : In which she found genocide.

REED BRODY : In which she found that Israel had been engaged in genocide.

AMY GOODMAN : I want to thank you so much for being with us, Reed Brody, war crimes prosecutor, member of the International Commission of Jurists, has served, as he said, as a member of the United Nations Group of Human Rights Experts on Nicaragua.

Coming up, we look at the ongoing fallout from Cornell University’s handling of an alleged gang rape of a Cornell undergraduate at a college fraternity house. Stay with us.

[break]

AMY GOODMAN : “Antipatriarca,” “Anti-Patriarchy,” by Ana Tijoux.

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.

Meadows – a small language for stock-and-flow diagrams that run

Hacker News
lorezzed.github.io
2026-10-09 08:29:40
Comments...

Reactions to 100 Solutions

Hacker News
proofsandprompts.com
2026-10-09 08:26:12
Comments...
Original Article

Posted on 8 October 2026, last updated with new reactions on 9 October 2026 4:15 pm (CEST). The newest reactions are below, write to us at proofsandprompts@gmail.com if you want to contribute one!


Many of us are grappling with OpenAI’s announcement on 6 October. We feel that it is useful to have a snapshot of the community’s gut feeling today, and this is what you see below. We will keep it open for another week, and you are welcome to send us further short reactions. To make sure it is clear that we are all in this together, each reaction is signed only by name, without reference to affiliation or career stage. You’ll find all types of reactions: general reflections as well as problem-specific comments.

Tim Santens

The results of OpenAI are almost unbelievable, Quasi-Riemann is a result that I thought was complete science fiction. Much can be said about the behavior of the AI labs, but given the existence of these models mathematics as a research discipline will have to undergo a massive transformation.

Roman Sauer

A common piece of wisdom is that mathematicians only have a few tricks in their bag – which they skillfully apply again and again. I have such trick whose unreasonable effectiveness surprised me a few times: replacing a manifold by a certain measurable foliated object, a construction that comes from ergodic theory, and using it in unexpected contexts.

More recently, I relied on this trick in a paper with Sabine Braun on macroscopic scalar curvature, which was further extended by Hannah Alpert. This trick and these two papers now appear in OpenAI’s deeply creative solutions of problems 207 and 335 – problems so different, they could not be farther apart!

I am stunned.

What do I take away from this night? We cannot defensively narrow our focus to what we currently regard as human qualities in mathematics. This will force us into a diminishing role. Instead, we have to radically expand our view of what a mathematician is and does.

Xiaolei Wu

It is the last day of a week-long national holiday here in China. We had just taken a short family trip to a nearby coastal city. After waking up, I followed my usual routine and checked my phone. I was surprised to find many messages containing the same PDF file. Apparently, OpenAI had solved many open problems.

So I took a look at the group theory section. It looked unreal. These were almost all the major open problems in my field! How is it possible? So I sent a message asking where the file had come from. The answer was that OpenAI had just officially announced it.

I checked the group theory section again. Yes, these really were almost all of them. So Thompson’s group F is non-amenable. OK, I had tried it many times using ChatGPT, but I guess I didn’t have the newest model or enough tokens. Eilenberg–Ganea is false—not so surprising, perhaps, but how? OK, at least the Whitehead Conjecture has not fallen. And what? They had completely solved the Boone–Higman conjecture? And the ambient simple group could even be of type ( F ∞ F_\infty ) … \ldots I had expected this day to arrive, but maybe something like one year later.

After a while, I started to look at other sessions, starting from topology. So the Borel conjecture fails in dimension 4, the coarse Baum-Connes also fails … \ldots

The rest of the day felt long. More messages came in. My social media feeds were flooded with discussions about the list. Some people were still claiming that the problems solved in their fields were actually not so important. But I guess I had already passed that stage.

Nicholas Williams

We’ve certainly learnt a lot of new facts from this release. At the same time, it will take a while for us mathematicians to digest all of these papers. There’s no doubt that large language models have changed things enormously, but the end goal must always be human understanding. It feels important to point out that mathematicians do more than just solve open problems from the literature: we also have to grapple with the subject matter and think about what the good conjectures should be in the first place. But on the other hand, it does feel like the end of an era where the ability to solve problems was a distinguishing feature of being a mathematician. And this feels sad for those of us who like to solve problems.

Henry Bradford

Today my chief feelings are disorientation and bewilderment. It’s as if the pace of events has outstripped us by such a margin, that it is impossible to know how one should respond, or even how to start finding out how to respond. My greatest worry is for the prospects for bringing through the next generation of mathematicians: we know how much time and effort it takes to refine one’s craft in our subject to the point where one can meaningfully contribute to the advancement of knowledge, and I’m anxious that the necessary incentives may no longer exist for bright young people to invest that effort. I am holding on to hope that a bright future for the practice of mathematics is possible, in which our understanding of the mathematical universe is enriched, rather than undermined, by the ubiquity of AI tools. To get there though, we need as a community to agree what a realistic pathway should look like for a young scholar to establish themselves in our subject.

Henry Wilton

There are many problems on OpenAI’s list that I care a lot about: the Cannon conjecture, the non-residually-finite hyperbolic group, the Boone—Higman conjecture and at least ten others. I haven’t looked at any of them in detail yet, although a cursory glance suggests that the write-ups vary wildly in quality. It will take months of work to go through the proofs of all of them, to check if the proofs are correct and to try to digest them.

But I think it’s important to focus on the big picture. If OpenAI wanted to destroy the mathematical community, this would be a great way to go about it. Open problems are a resource that the mathematical community developed over decades or even centuries. The value they have is the value we have given them. They provide structure, a yardstick for progress and long-term goals. The advent of AI was always going to be a seismic shock, but this huge dump of papers is a tsunami that we have no time to prepare for. It’s clear that OpenAI will happily wash away our community’s structures to further their financial interests.

There is a long list of mathematical structures and norms that OpenAI seems to be intent on damaging. By refusing to name the authors of their papers, they imply that mathematics is no longer a human endeavour. They don’t submit their results to journals, which both implies that the norms of the mathematical community are defunct and makes it impossible for the community to digest their results. OpenAI haven’t shared fundamental information about how the problems are selected or the failure rates of their attempts. This information should be a necessary requirement for any serious scientific discussion of their tools. And of course there is the basic financial injustice that their hugely valuable models learned to reason by copying the very reasoning that our community made available for free through the Open Access movement.

I hope the mathematical community can adjust our practices and norms quickly enough to survive the shock of these developments, but I am fearful.

Macarena Arenas

Perhaps the AI companies could, if they wanted to, do something to benefit humankind and the planet we live on (ending world hunger, solving global warming, curing cancer…), but this is not it, and it is not being done for altruistic purposes.

Regarding the mathematics, some of it is unverified, most of it is badly written, and (probably) none of it is transparent in documenting how it was produced, who was involved, and what was its cost (in every sense). All of it is of course impressive. Some of it might come to benefit mathematics and mathematicians, but overall I think it is an example of a corporation trying to exert manipulative pressure on a field of knowledge, and I think it has been done irresponsibly. I hope that we as a community can find our way through this mess, but for the time being, it is a mess, and it causes more harm than good. It will distract a lot of people from working on their own ideas; it will disrupt many existing research agendas; it will create conflict in the mathematical community; it will encourage a lot of opportunistic, ill-informed use of these technologies (thus adding to the “slop” and creating more noise for us to navigate through); and it will discourage many, many people from doing mathematics.

Johannes Schmitt

One thing to keep in mind about this drop of papers is that they were not created by OpenAI with the main goal of making progress in mathematical research, or even primarily for PR (there were some PR posts, but e.g. the final announcement was comparatively restrained). The main reason these papers exist is that OpenAI used unsolved math problems to evaluate their internal models for the purpose of improving their capabilities. They had to use hard open problems because these are the only ones still posing a challenge to frontier AI models. I believe that, from OpenAI’s point of view, the papers are essentially a byproduct of their internal development.

Thus the company could just have remained silent, or picked a few flashy results for another blog post. I think it is to their credit that instead they reached out to the math community for guidance on how to proceed, leading to the formation of the Advisory Group on Mathematics and Artificial Intelligence . They followed some of the advice by this group, such as a timely release and (partial) Lean certificates, but not all of it, and in particular announced that they will continue to use open math problems for model development. In my view, the most pressing need of the math community right now is to have a central platform to discuss the results, start digesting the (by multiple accounts from colleagues, terribly written) papers, and report any mathematical mistakes or missing attribution. An OpenAI-controlled GitHub repository, with issues and pull requests disabled, cannot serve this purpose, and the ball is in OpenAI’s court to move the papers to a neutral repository and to back such a community effort with the promised funding for workshops and special programs.

Lvzhou Chen

To be clear, I only read some parts of the overview and a few papers in the collection without understanding the full details. I know most of the problems in group theory and quite a few in topology. I spent a few years thinking about the Kervaire conjecture, Howie’s conjecture (Problem 256) and related problems.

I have some rather mixed feelings towards this. On the positive side, I would like to learn and digest the new techniques or insights that lead to the solutions, and I hope to use them to better understand or solve other problems. On the other hand, I feel that solving so many problems in such a short time may damage the math community and profession. Often time, new discoveries were made in attempts to solve open problems (like the ones solved here). So we could have lost tons of opportunities to make other new discoveries; I hope what is worth discovering will be discovered sooner or later. In any case, this certainly creates even more stress and uncertainty than before for math people, especially junior ones (e.g. PhD students): How would the profession change? What should PhD students focus on? How should we train them? I wish what I called “damage” can be a part of reforming the profession in an eventually positive way, and (young) people interested in math do not get discouraged because of this.

As for the future, I guess (or hope?) that there will be a limit of the effect of AI: the landscape of math stabilizes after a dramatic change, and we obtain a new sense of difficulty. After all, we always find new interesting and harder problems after seeing the solutions to old ones. However, it might take quite some time before it stabilizes (if it does), and before then, it could be quite chaotic. Probably one can focus more on some brand-new areas and problems that seem fundamental and important. Even after it stabilizes, it is still a question whether human contributions are needed to make new discoveries. If it becomes unnecessary, one can still focus on better understanding the new discoveries, but I personally might find it less interesting and would rather work on other stuff. Maybe the question is not whether humans can still contribute; instead, as Ruixiang puts it somewhere, will mathematicians still have the courage to work on the remaining ones that are difficult in a new sense?

I guess most of these will just turn out to be silly and naive thoughts, but my understanding of this post is to record honest feelings, silly or not.

Enrico Fatighenti

I am not a Luddite — quite the opposite. I have used, and still use on a daily basis, AI as a bibliographic tool, to test random ideas, to speed up bureaucracy, as a helping hand with teaching, and so on. I do not use it to generate proofs, but I am not judgemental about people who do.

However, I was genuinely pissed off by today’s announcement.

To be fair, my first reaction was almost boredom. Yes, the AI has “proved” (really? Are we sure? Can we even understand what is written there?) a bunch of interesting results in my field. Not even a Millennium Problem. Pff.

But the more I thought about it, the more annoyed I became. What bothers me most is the double standard.
Whenever I referee a paper, or receive a thesis or project from a student, I apply the same standards that most of us do. If a paper or thesis is so badly written that I cannot get past the first page without considerable effort, I reject it and ask for a new, readable version.
With these AI-generated papers, I feel that we, as a community, are not applying the same standards of quality and rigour. They can simply release multiple 100+ page papers claiming to have solved this or that problem, often with redundant arguments, unclear logical structure, multiple dead ends, and strange or unsettling terminology — in other words, slop. And we are then expected to go through it, check it, clean it up, simplify it, and explain what is actually going on.

This comes at a considerable cost to us in terms of time and effort, while they can simply move on and slop-bulldoze the next conjecture. And, of course, the credit remains theirs. In some sense, we are willingly contributing to our own demise.

I think the paradigm has to shift. We should apply to AI-generated mathematical announcements the same standards of rigour, clarity, and exposition that we demand from human-generated papers. Do you want the approval of the mathematical community? A badge of legitimacy? Then give us something that is actually readable and verifiable. If not, we should simply ignore it.

In other words, I do not think that we, as a community, should spend our time cleaning up their mess in order to increase someone else’s commercial revenues.

It is going to be difficult to win this game, but at the very least we can try to change the rules a little, so that the game is not completely skewed in their favour.

Giulio Tiozzo

My feelings today are a mixture of excitement and worry: it’s nice to see many problems solved, and to discover new proofs. Yet it’s clear that our profession has changed forever. Some thoughts:

1) I don’t think the main problem of AI-generated math proofs is that they are not understandable: all first solutions to big problems were hard to process. The problem is that no one would want to do it, as they fear they would not get any reward, either by the community or on a personal level.

2) What puzzled me a lot is the method of communication: After AGMAI was created, the way I imagined the current math drop worked was: Each of the 9 experts chooses a problem and explains it carefully in a video, or writes a nice companion paper. Instead, it’s just a massive GitHub drop of slop papers. What did we even need AGMAI for?

3) It’s clear many papers were never reviewed by a human: for instance, I took their example #254 (an Artin group with no CAT(0) action): their group has 116 generators, but after feeding it to Astra, in 10 minutes I got a new example with 12 generators. Clearly, they were in a rush to post the big drop, prioritizing quantity over quality…Why?

This does not solve the misalignment between labs and academics at all; indeed, the question remains: are frontier labs our friends, or our enemies?

Raphael Appenzeller

This timeline is crazy. I feel conflicted. There are many good reasons for and against the use of AI in mathematics, and the uncertainty about the future only grows.

Alexandre Martin

After yesterday’s announcement, many of us are left stunned and unsure of how to adapt to this new situation. Already, there are calls from colleagues to organise international reading groups and workshops to make sense of it all and to write a “human account” of some of these claimed proofs. In my case, while some of the results have hit pretty close to home, and while some of these colleagues are very much well-intentioned, I have decided not to take part in any such initiative.

First of all, I do not wish to be part of what in some cases would amount to free publicity and free refereeing for OpenAI, contributing to the false narrative being pushed that this company is now actively collaborating with the mathematical community. A second reason is that in organising ourselves in such a way and at such a scale, we implicitly accept this new division of labour, where proof-production can become completely decoupled from any form of proof-comprehension, and where this dehumanized proof-production process becomes increasingly tied with an arms race for computing resources. I think this is unsustainable on many levels, and it is also simply not the future that I wish for our community and for our shared mathematical practice.

Baptiste Serraille

After seeing the huge advances posted today, I decided that I needed to try out ChatGPT extensively for the first time. Most of the time I do not give it my own ideas, I am too afraid of them transiting through ChatGPT to other users or OpenAI itself and losing my grip on them. Thus, I decided to try it on open problems of the fields or on projects that I will not have time to try on the short/medium term. Eventually, one of the problem did fall and it seems that a project that I had envisioned might also give something. I am both amazed at the results and the technological advances and scared at the fact that the pace is much higher than I can keep up with. I am also not happy to write a nice paper about ideas that are not mine and do it mostly because I believe that the field will benefit from it.

Matt Zaremsky

For several years now, the most major component of my general research program has been the Boone-Higman conjecture in group theory, including a series of papers joint with many others in which we’ve been gradually setting up and fine-tuning a nice sufficient condition for a group to satisfy the conjecture. I’d say roughly once per year for the last 4 years we’ve made some sort of big breakthrough that’s pushed the program forward in a strong way. Now this AI company decided the Boone-Higman conjecture had gotten famous enough that they should spike the ball, so they did. It turns out our sufficient condition always works, and the main mechanism we were missing was morally quite similar to the thing that was our 2025 breakthrough (extremely roughly speaking, the key is affine-like actions of things). So, apparently we were really on to something, and it’s believable we could have gotten there in another year or two.

So, how does that feel? Well, it feels like we’ve been working on an archeological dig for 4 years, gradually discovering more and more of a really cool-looking dinosaur skeleton, and then a trillion-dollar company showed up and just blasted the whole thing with TNT, handed us the whole skeleton, and walked away. So, I guess I’d say, “not great”.

Ilya Kazachkov

Firstly, beyond the scorched earth that the announcement leaves behind, its magnitude indicates that the changes to our profession are likely to be very profound. There are many questions covering all aspects of our work that we, as a community, will need to answer. Many of them have been raised in the media, including on this blog: What does it mean to do a PhD in mathematics? How will publishing, evaluation, hiring, and funding work? What is the role of mathematical research in society?

As for research, the most intriguing question the AI revolution seems to bring is in what constitutes a “good” mathematical problem. In particular, we will need to understand what types of problems, if any, can be solved by a human (and AI), but not by AI with little human intervention.

In turbulent times, panicking is the worst strategy. Whatever answers we inevitably come up with, after a period of uncertainty and anxiety, things will settle. I believe we will adapt, and the profession will live on in the new normal.

Mark Hagen

I have received emails from early-career colleagues who have asked my advice on other matters in the past, who currently seem very understandably distressed by these developments and the uncertainty they create, and are asking for advice again (or for some reassurance, or something). Today, I have prioritised trying to figure out what to say to them over reading any of the OpenAI preprints in detail, so I don’t have any useful comments on the content. I still don’t know how to answer those requests for advice, either (yet).

But irrespective of how interesting we might find some of these developments mathematically, I think the manner of their release reveals we’re clearly confronted with a bad-faith (human-institutional) actor here, whose interests are not aligned with my understanding of the point of scientific research (or any other worthwhile human pursuits).

I am worried about people that do mathematics, about my friends and colleagues, and about cultural practices (like doing mathematics) to which I attach importance. I’m even more worried about AI possibilities that are more general than mathematics: economic dislocation, degraded collective human capacities, supercharged exploitation and ecological collapse, new and terrifying means of repression and violence, etc. Mathematics has a reputation in our culture for being difficult and intimidating; evidently OpenAI have decided this renders our shared human endeavour a suitable vehicle to hijack as a display of power.

In any case, it seems like a situation in which it’s very easy to get confused or overwhelmed. This is a community that takes pride in being relatively tightly-knit and able to have productive collective discussions. This seems to be a test of those hypotheses.

Cyril Houdayer

Like many of my friends in operator algebras, I was shocked by the scale of the results announced by OpenAI. Two of these problems are particularly dear to my heart, because I have spent so much time thinking about them and working on them.

Connes’ rigidity conjecture was one of my favourite problems. Part of the sway it had on me, until the late 2010s, was due to the fact that it seemed to be completely out of reach. Even Sorin Popa’s deformation/rigidity theory did not offer a way to tackle it. In joint work with Rémi Boutonnet, we began studying higher-rank lattices using von Neumann algebraic methods. Our noncommutative version of the Nevo–Margulis–Zimmer theorems provided a conceptual framework for trying to recover the rank of a lattice from its von Neumann algebra. I pursued this direction through noncommutative boundary theory, uncovering some interesting rigidity phenomena and pushing hard towards rank recovery.

I did not solve the conjecture, but I had come to believe that a frontier model from OpenAI might do so, and I had been mentally preparing for that possibility. I had made my peace with it. Now I am genuinely thrilled by the announced solution, and I want to understand the proof. I look forward to gathering my PhD students and postdocs to study it together during the IHP programme « Operator Algebras: Approximation, Rigidity and Dynamics ».

Working on this conjecture meant a great deal to me, even though I did not solve it. It led me into the mathematics of Furstenberg, Margulis and Zimmer. I made new friends and discovered connections between operator algebras and discrete subgroups of Lie groups. Those experiences remain meaningful to me, and I am excited about the new connections that may emerge.

Connes’ bicentralizer problem has a different history for us, and there is an important clarification to make. This problem has played a central role in the structure theory of type III von Neumann algebras. Amine Marrakchi and I began working on it more than ten years ago, and Amine subsequently developed a substantial collection of tools and techniques to attack it. Recently, we returned to the problem from a rather indirect direction. In our joint work from September, we solved it for all type III_1 factors. The solution emerged as a consequence of a result about the bicentralizer of a flow on a type II_1 factor, within a broader classification theorem.

The proof announced by OpenAI builds on the methods developed in Amine’s earlier work and on the resonance mechanism we discovered together. Our recent work settled the nonrelative version of the bicentralizer problem. OpenAI’s result extends ours by establishing the relative version.

These announcements have shaken our community. I understand why many colleagues, especially younger ones, find this moment difficult, and my excitement about the mathematics does not make that unease disappear. I hope we can talk openly about both feelings. For me, the immediate response is to learn the proofs, discuss them with students and colleagues, and keep exploring the mathematics together.

Danny Calegari

About 15 years ago my experience with the lack of interest of the mathematical community in what I was discovering in the theory of stable commutator length in free groups (see https://www.quantamagazine.org/how-failure-has-made-mathematics-stronger-20240522/ ) led me to a resolution: from then on I would only work on what interested me. If I wanted to prove a theorem I’d prove a theorem. If I wanted to draw a picture I’d draw a picture. I’ve paid a (small in my opinion) price for this in the sense that I don’t think many people read my papers. On the plus side this means that OpenAI didn’t solve any problem that I was working on. They settled a couple of questions that I was curious about, but not enormously, and not in a way that was tied to my own sense of self.

The project that I am currently most excited about is the theory of higher dimensional zippers, and the most exciting aspect of it is that it’s now become possible to draw pictures (really: animations). One thing I love about some parts of mathematics (the Langlands program is an example) is that it’s not just a collection of theorems and conjectures; it’s a framework, and a story. I’ve always tried to look for the underlying story in my research (at least for the last 15 years). OpenAI hasn’t ruined that, at least for me (yet). Another example: a framework like Sullivan’s dictionary is more important than the top 100 papers in holomorphic dynamics (including Sullivan’s papers). In my own research, following the lead of Sullivan’s dictionary, I have just discovered the analog in the holomorphic dynamics world of a finite depth foliation: it’s a grafting of carpet wheels! Even naming this is exciting for me! Writing down the definitions and proving the theorems is the next step, but the reason (for me) to do that step is so that I can write some programs and draw pictures/animations.

Anyway: people do math in lots of different ways for lots of different reasons. I honestly think there will be more ways to do math in the future, not fewer. For the curious, the following movie ( https://math.uchicago.edu/~dannyc/gallery/cs_zippers_movie.mp4 ) is what I am currently ecstatic about; it’s a zipper in S^3 associated to an arithmetic complex hyperbolic lattice, following some ideas of Isenrich-Py. The zipper is linked, and this reflects the fact that there is a circle valued Morse function with critical points but they are all in the middle dimension (2). I love this! I am currently collaborating with a musician to set it to music. It was produced by code that was written by Claude, generalizing code (and an algorithm) that I originally came up with in the 2d setting. If that’s not worth celebrating I don’t know what is.

Vadim Alekseev

I got really impressed by the resolution of the free factor problem (the von Neumann algebras of free groups are all isomorphic to each other), since I had been wrong about the expected outcome: I thought they rather should be non-isomorphic, since the parallel evidence from measured group theory (in my opinion) rather pointed there (via L2-Betti numbers); also, simultaneously the fact that the von Neumann algebras of SL(n,Z) are non-isomorphic justifies this line of thinking! So to me it is exciting: we now have to figure out what exactly still remains parallel between measured group theory and operator algebras, and what diverges and why.

Tristan Humbert

I woke up this morning to an email of a collaborator informing me that Open AI announced a proof of Katok’s entropy conjecture, a three-decades old open problem which was the subject of my PhD and more generally the main motivation of my research. The conjecture was settled by Katok for surfaces and mostly open in higher dimension. The main project of my thesis was to prove a local version of the conjecture near complex hyperbolic metrics. After this I was planning on attacking the conjecture more globally. Open AI claimed a proof of the conjecture in full generality this morning and my first impression was sadness to see my favorite problem get “killed” by AI ; it is definitely easier to ignore a problem when it does not affect you directly. Next, I felt stressed because I am currently applying for postdocs and more of my research plan was now obsolete and I spent the whole morning rewriting everything and sending emails to my advisors in panic. Finally, I felt anger after opening the paper and observing that it was mostly unreadable slop. The sane reaction would have just been to ignore the paper but I think I care too much about the problem to act as if it did not exist. The only conclusion I can make right now is that Open AI’s standards for mathematical publication is far too low and is harming mathematical research maybe in an irreversible way and that the mathematical community, motivated by genuine scientific curiosity, is accepting to work for free in order to “validate” these unreadable proofs.

Tim Gehrunger

I was very curious to finally see the statement drop from OpenAI. I am not sure what they could have possibly done to meet my expectations, but I was at first slightly underwhelmed by what was in there, especially given the results in my own field of arithmetic geometry.

Of course a lot of the other work is impressive, and in some fields of mathematics such as combinatorics several of the main conjectures of the field appear to have been resolved, likely changing the way these fields will go in the future.

One thing that I found striking is that many of the articles were not as polished as one may have liked, with articles citing removed supporting manuscripts, missing citations of relevant prior work alongside minor mistakes (that I would strongly expect an AI to catch). This is something that a more elaborate workflow with dedicated agents for review, correct attribution and literature acknowledgements would have very likely caught. I hope future releases will use such a system to improve polish and to make sure that attribution for earlier results is given.

Peter Scholze

We should remember that we are all in this together; mathematics is a marathon, not a sprint; and the goal is and always will be the human understanding of mathematics, which will invariably take time.

What is worrying me the most, at the moment, is actually the (in)security of cryptography. Finding algorithms breaking standard cryptographic protocols is a number theory problem whose difficulty does, to my non-expert eyes, not significantly exceed what these systems are now capable of. And it would have disastrous consequences on society if such an algorithm is found.

Tasmin Chu

I was working on the p c < p u p_c < p_u problem. I first learned about it in undergrad. There’s a beautiful 1996 paper by Benjamini and Schramm where they conjectured that Bernoulli(p) percolation on every nonamenable quasi-transitive graph has a phase with infinitely many infinite clusters. The converse is true by work of Burton and Keane. I loved this problem so deeply. It said something so beautiful and simple about these highly treelike graphs which had somehow eluded proof in the general case. It’s why I fell in love with percolation theory. Unsurprisingly the OpenAI preprint builds on work of my advisor Tom Hutchcroft and the approach he laid out to me a year ago.

My grant proposal due next week has to be rewritten. Maybe grant proposals don’t even make sense anymore. I have related results and work that I can talk about instead which were part of an overall research program I had to attack this problem. But I’m afraid to even talk about ongoing work now or do a research “announcement”. I have a high enough profile now I believe it’s not unlikely someone would adversarially try to prompt my result into completion.

I realize now that what I wanted more than to know that p c < p u p_c < p_u is true was the time and space to think about it for the next few years. I feel a profound sense of grief for the working conditions I believed I would have. No one can take away the beauty and value of mathematical thought from me, but they can effectively disempower me in my own profession. What hurts the most is that OpenAI doesn’t even care about this result. They don’t know that our community, our intellectual thought, our knowledge is a living thing. To be frank, I find myself absolutely disgusted by the society I live in.

Terence Tao

My feelings on recent developments are very mixed and complex.

On the one hand, many of the AI-generated proofs appear to introduce clever new ideas that will be fruitful once digested, while also building upon the existing contributions of countless human mathematicians past and present. But at the same time, I am deeply frustrated that, in sharp contrast to traditional breakthroughs, none of the humans involved in these proofs are available to take questions, give talks, attend conferences, submit papers to journals, train students, or otherwise participate in the subsequent development of these results.

Similarly, I am excited by the possibility of the community being able to use these tools to tackle ambitious and large-scale projects that one could not have even dreamed of in the past. But I am horrified by the many person-years of ongoing patient and deliberately slow research efforts – particularly by graduate students and postdocs – towards many motivating problems in mathematics being casually disrupted or destroyed by such a release. Much as one cannot unhear a movie spoiler or a crossword clue, one cannot explore a problem as profitably and richly once one is aware of an existing solution. Yes, one can still analyze and digest such an answer; but the best opportunity to do so is at the moment of its discovery, and such moments are increasingly wasted when delegated entirely to AI tools.

And I mourn the path not taken, and the opportunities lost in the frantic race to develop this technology. Labs submitting their frontier models to independent researchers for proper scientific evaluation. Coordination with the research community to ensure these tools are applied to complement and enhance the abilities and activities of human researchers, rather than compete with them. Use of these tools to foster collaboration and sharing, rather than competition and secrecy. Opening new doors, without closing old ones.

But that is not the path we now find ourselves in. Instead, the community needs to come together more than ever. To clearly declare our own standards and values, to build our own tools and practices, to support our most vulnerable members, and to chart our own path forward. Let’s get to work.

Elia Fioravanti

While I feel a degree of excitement at seeing resolved some problems I considered almost inapproachable, this is overshadowed by grief and resentment at seeing a tombstone placed over many of the most promising and exciting directions in our field, where human solutions were well within reach in just a couple of years. I hope those working on those problems don’t give up on their work, we could still learn a great deal from it.

I also hope our community come together to digest the new results, senior and young mathematicians alike, regardless of attitudes on LLM use. The goal should not, however, be the writing of preprints containing insights developed through this process, unless the endeavour is supported with substantial funds contributed by AI companies.

Srivatsav Kunnawalkam Elayavalli

I was initially surprised when I saw the resolution to the free group factor problem. I thought that the free group factors ought to be non-isomorphic, and tried hard for a number of years to prove it in this direction. In any case, I am now fully convinced that theorems/proofs have almost entirely lost their currency in the profession. We will have to prioritize human understanding, and device methods to reward and incentivize this. Repeatedly posting AI generated and verified manuscripts achieves nothing but frustration and disorientation. As I said in my previous Proofs and Prompts article , my goal in this profession is to enhance my manodharma. Right now I am having plenty of enjoyment, I am spending all my time preparing the course I am teaching on “free C*-algebras”. I have excellent students who are very interested in the material. I have no interest in derailing myself and engaging in AI-induced indigestion by starting to read the tsunami of results from OpenAI at this moment.

Yang Li

Assuming that these proofs are correct, I must say that I am very impressed about these results, and if these results are properly understood, they may greatly accelerate the progress of maths. My main concern is sociological in nature. In particular, I feel that PhD students and postdocs are the most vulnerable group in an age of radical change, and the community needs to find a way to protect the younger generation. I also think that given the power of the technology, computational resources should be made more equally accessible.

Michael Chapman

I was amazed by the scale and breadth of the recent results coming out of OpenAI in their announcement. A few problems, such as the refutations to the Kaplansky conjectures, the existence of non-residually finite hyperbolic groups, bounded degree coboundary expanders in all dimensions, and the unique games conjecture were all problems “I grew up on” – namely, I learned about them quite early in my studies and was fascinated by them for years (and also worked on some of them extensively). I mostly want to sit down and read as much as I can, to sort out the main ideas and to study the results. This is quite humbling, and as a young researcher also disorienting. Nevertheless, I am more excited than afraid, and hope the mathematical community at large, and my own research community at the smaller scale, will grow stronger out of this.

Constantin Kogler

11 days ago, I witnessed GPT-6 Astra solve one of the best-known questions in my area. Excited by the stunning proof, I teamed up with a longstanding collaborator to rewrite and rethink the solution. After numerous days of hard work, we had a nearly finished paper by Monday. The same conjecture was claimed as Paper 148 by OpenAI on Tuesday. My collaborator wanted to publish on Tuesday, yet I wanted to check some aspect of the literature more thoroughly.

After the initial shock of the announcement, I personally didn’t feel strongly affected by the claimed solution of OpenAI soon afterwards. The key idea was anyhow by Astra. We published our paper on the arXiv on Wednesday. Had the main idea of the paper been our own, it would have been by an order of magnitude our best result. I was excited that we were involved in mathematics of that level and were probably the first humans to understand the solution. I hope others will write their own viewpoint on the proof, so that we will have several expositions with different perspectives.

Paper 153 is also on a question I deeply care about. I am sure I can write a clearer explanation than OpenAI did. So I look forward to understanding what happened and to expressing, hopefully with collaborators, our viewpoint on this profound piece of mathematics.

Yes, machines with such capabilities will change everything. Not only for mathematics but also for the world. I have sympathy for many of my colleagues being upset by this, especially those who already had stunning results themselves or outstanding work in preparation. For myself, I can’t help but feel like living in a mathematical wonderland with the next field-defining idea being discovered whenever I am ready for it.

Andreas Thom

Right now I feel proud that the mathematical community laid the foundation of such a terrific development. Let’s see how it feels tomorrow; we have to answer some serious questions. But in any case, we have enough to read for the coming winter.

Anna Chavez Caliz

Today I’m standing in a more optimistic side. We had a very stimulating and engaging conference last week, here in Cuernavaca. It was clear to me, more than ever, that an essential part of our job is not to be alone in an office, in front of a blackboard, or writing papers for only a small fraction of the population. I appreciated having the chance to remind myself that we still have the power to be excited about math when we go out and talk to others. As Tolstoy said, the enjoyment lies in the search for truth, not in the finding it.

Tobias Osborne

I have been closely following LLM capabilities for a good year now, and thought I was more or less acclimated (numb) to the pace of progress. Although I am not completely surprised, it is hard not to feel more than a little overwhelmed by OpenAI’s mathdump today. It is impossible to properly unpack all of this in a paragraph, especially so early, but I wanted to record a couple of thoughts: (1) So far I have only looked at a couple of the contributions close to my heart. I am struck by how recognisable the individual parts are. The wilder creativity lies in their counterintuitive composition. I would probably have given up on these combinations, or talked myself out of trying them. I am extremely curious to hear what experts make of the more significant problems. One feature I looked for seems absent: undecipherable “alien artifact” ideas and methods. The arguments are presented in prose and, although rough, seem approachable. (2) I think it is the right call to simply share all this stuff in the open: cognition is now abundant, and we should lobby for this resource to be made freely available as widely as possible. (3) I would caution that LLMs have in no way “solved all of mathematics”, any more than they have “solved all of software engineering”. Their capabilities are very spiky, and if you use them regularly, you know what that means. Undeniably, things are going to change: typing code into a computer with your fingers already feels anachronistic, yet engineering remains challenging. There is so much more to the job of a mathematician than solving problems. I am optimistic that the era of “Big M” Mathematics and “Big P” Physics has now well and truly arrived: we can finally take much more ambitious steps and reconsider the big questions that have driven our fields for centuries. Maybe now we can work together to make meaningful progress on them in our lifetimes.

Mahan Mj

Was going through the non residually finite group construction put out by OAI today, and it looked to me that there are really two quite different modules in the proof. One purely algebraic and the other geometric. After fiddling around with Astra for some time today, it gave me a reasonable sounding purely group-ring theoretic criterion for non-residual finiteness of a group. It suggested that this might also certify that the group is non-sofic. I have gone through the AI generated proof briefly, but not yet had time to check it thoroughly. At any rate, it looks like this is the one piece of the construction that is relatively new in the sense that it builds on the AI generated non-sofic group from some days back.

What does seem to be a pity is the following. By and large, the community has not yet had time to really absorb the non-sofic construction from about a month ago. It is quite conceivable that by playing around with that example a number of such criteria would come up over time from different hands. This could lead to a charting of the largely uncharted territory of non-sofic/non-residually finite groups. A consequence would be clarity and understanding–two of the main human reasons for doing mathematics in the first place. The present breakneck speed of things without human understanding compromises precisely this.

Barna Saha

I’m worried how big corporates are controlling academic research. In one case, an Anthropic employee asked a famous academic from a top university to sign an NDA, offered compensation and authorship to verify a result that many researchers have spent decades working. This is unthinkable in academic research. Authorship to work does not come in this way. In other incident, OpenAI dumps solutions to 772 problems in Math and adjacent fields-many of which are outstanding breakthroughs. General academics don’t have access to their powerful internal models. Publicly available models do not even come close. This creates a huge gap in accessibility and equality. I am seeing a lot of frustrations among students.

Josh Frisch

For years now, whenever I’ve met somebody new at a conference, I’ve asked them: “If you could solve any one question, what would it be?” The goal was to get beyond a list of “famous” problems and find out what mathematicians truly cared about. What did we really want to know? Only one person has ever answered “the Riemann hypothesis.”

Like many other mathematicians, my main emotion thus far in 2026 has been loss: loss of meaning, loss of purpose, loss of the era of human proofs, loss of the ability to picture the future. With the release yesterday, October 6, 2026, of hundreds of beautiful results—many, maybe most, answering someone’s “one question”—I am trying to move beyond loss. There are so many beautiful results here: problems nobody had any approaches for, algorithms nobody thought could possibly exist, unexpected isomorphisms, constructions and proofs. A mathematics built from the echoes and scaffolding of human mathematics, but one that clearly will go beyond it.

There are, there must be, so many beautiful ideas in this deluge of proofs. If we can learn the answer to our one question, even if the proof did not come from us, even if it did not come from any human being, then we need to try to understand it and to share that understanding with each other.

David Fisher

No human being should have to respond this quickly. Maybe AI can inspire a slow math movement. If I were cleverer, I would write this as a haiku. 1

Martin Bridson

The scope of last night’s announcement is truly breathtaking. Until very recently, I would not have imagined that the frontiers of mathematics could move so far in one day. Beyond the remarkable list of problems that appear to have been solved, I am deeply impressed by the diverse forms of reasoning sketched in the documents that accompany the announcement.

These announcements will be exciting for many, frightening for others, and devastating for some.

Let me start with the case for excitement. Where there is excitement, it will surely derive not from the closing of open problems but from the opening of new possibilities. In the short term, there will be a flood of enhanced human understanding as the global community of mathematicians absorbs, refines and enhances the arguments produced by the machines. In some cases, experts will kick themselves for having missed a connection between disparate parts of the literature; in other cases, they may be amazed that an apparent trick works and will subsequently advance their fields by unearthing a new phenomenon that explains it.

In all cases, the struggle to wrestle human understanding from the machines’ formalities will unleash greater ambition for what we can achieve (working with AI agents) in this new era of mathematics. Some of our favourite mountains have been conquered, but behind them are bigger mountains that we can tackle with new equipment.

At the same time, we must resist the temptation to believe that digging insights out of announcements from AI labs will become the paramount task of our time. The global community of mathematicians has to be steadfast in its resolve to decide for themselves which research directions merit the most attention. We should embrace the power that the machines offer, but we should not be indentured to follow their lead.

This image of servitude brings us to the fear that undoubtedly stalks alongside the excitement associated to the ascent of AI’s ability to do mathematics.

The list of problems covered by OpenAI’s announcement includes several that were guiding challenges in my own research. I regret the loss of these guiding problems and I am convinced that future announcements will rob me of many others. I am saddened by this loss but not devastated. This relatively sanguine reaction undoubtedly reflects my career stage; I would have been less sanguine twenty years ago. I am acutely aware that today’s announcement will affect the lives of younger colleagues more profoundly.

Personally, I am looking to learning the new ideas and constructions hidden in the AI-sketches of the new results, and I am particularly looking forward to engaging with colleagues from all career stages in group efforts to understand what has been done. I anticipate a community effort to add layers of human insight and explanation. I think this effort will be genuinely communal and I think that we are going to have great seminars!

Nevertheless, I also have to confess to a nagging worry that a way of life that I have loved, in which the joy of the hunt for new discoveries was front and centre, will morph into something less familiar and less viscerally appealing to me. Profound understanding has always been the driving motivation of the research mathematician. In the hard struggle to glean understanding we are sustained by the joy of discovery and there is great personal joy to be had from understanding something beautiful for oneself. But for me, and I suspect for most of us, there is a greater joy in discovering and then sharing something that is new to humanity. If the role of a typical mathematician were reduced entirely to explaining the output of others (humans or machines), this greater joy would be lost and being a mathematician would be a less appealing vocation. This may not be our future, but it is a legitimate fear.

What is beyond doubt, I think, is that the recent developments have profound implications for the structure of our profession. We have to adapt our structures quickly, particularly with respect to the apprenticeship stage of our profession — PhD and postdoc years. Beyond that, there are many issues of credit and recognition, the role of publishing etc.

I also share the general unease about the lack of alignment between the commercial interests of AI labs and the values of our global community. There is an inherent and fundamental tension that cannot be resolved without sustained, robust engagement. We certainly cannot entrust the future well-being of mathematics to their goodwill.

Konrad Wrobel

Scrolling through the list of claimed results, I alternated between shock and apathy repeatedly. The sheer quantity I can only say is exciting (even outside of the standouts I personally care about and the others I’m familiar with), even if it is simultaneously incredibly emotionally draining. It feels surprisingly anticlimactic capstoned by the mountains of work we have in front of us in parsing these, frankly horrifically written, papers and what the new ideas are inside. I can only guess how long it will be before I can internalize the ideas relevant to me.

Alon Dogon

My feelings on the matter have changed so many times throughout the day, ranging from severe fear for the future to excitement for having finally answers for many great problems.

If I had to pick one personally, the equivalence of strong Ulam stability and amenability (along with Dixmier’s problem) has particularly touched me, as I have spent several years thinking about it seriously.

The solution seems to combine Furstenberg’s boundary theory with quantum circuits from quantum computing, how wild is that?

In general, it is impressive to have many conjectures settled in the positive this round.

Hugo Duminil-Copin

I expected that one day we would be surpassed, and that it would happen systematically. But yesterday’s announcement hit with a force I had not anticipated. Dozens of papers deal with topics I was working on. Between results that beat you to the finish line and thousand-page proofs, I don’t even know where to look anymore.

Not a single one of the major open problems I have publicly mentioned throughout my career (whether in a talk, a lecture, an article, or even a grant proposal) was left untouched by the announcement. Everything has been claimed to be proved.

I expected to see a few of them in the list. But not all of them. Not all at once. Not with such nonchalance.

“For the glory of the human mind,” they said…

The shock is immense. I am paralysed. Tomorrow, we will find a way forward. We will rethink our profession and how we work. We are a resilient community, and I have no doubt that we will adapt. But for now, I simply don’t have the energy. I think back on all those years, all those faces… I think of my colleagues, my students… And I fear I won’t be able to find the right words.

Petra Schwer

We have talked about “the list” throughout the day with many people at the workshop I am at. I am feeling lots of mixed feelings today. Ranging from shock to a certain degree of amazement about everything the technology can do. I am also angry that we are being bombarded with ‘solutions’ by companies that seem to have little to no interest in the actual content. They seem happy about the dramatic headlines helping them to gain better funding. They don’t seem to care about everything being shaken up so fast that we (the community of mathematicians) can no longer keep up with cleaning up the mess.

Something that worries me is the small changes I am already seeing in my own behavior. I am no longer as open as I was in the past when talking about my research projects and plans. I did, for example, not answer freely to some of the questions after my talk. This is not just me. People are becoming more cautious. Mistrust is spreading, and that is not good. I am lucky to be part of mathematical communities that largely trust(ed?) each other. Seeing that change worries me.

What worries me even more is seeing the junior mathematicians around me struggle. Today I also saw a lot of fear. How can I help them stay afloat?

Is mathematics dead? Clearly, no 2 . What is happening to us right now is definitely a massive shake-up, earthquake, storm. There are a lot of questions to be addressed. For sure the mathematical research landscape will change. How exactly? I have absolutely no idea. And I very much hope that the communities (and people) I care for will come out on the other side with only a black eye.

Bryna Kra

There are deep and far-ranging results in this release, giving us a view on the powerful tools that now exist for exploring mathematics. But math is about more than producing theorems and this method of release loses so much along the way. Understanding this work is an enormous undertaking, and unlike work produced just a few months ago, there is no one to ask when we get stuck in a proof. This is not part of the culture of mathematics.

As a community, we have to come together and work to keep what we value. Our goal of understanding mathematics has not changed, but the methods of getting there have. One of my concerns is the ecosystem that allowed the body of work being used now to make the advances is being destroyed. The mathematics community has mostly been collaborative: we share questions, talk about work in progress, and give others ideas on how to approach a problem. By making it easy to translate those parts of our work into proofs, we short-circuit the understanding that is needed to have impact. This way of releasing results closes off directions of research, rather than opening new vistas.

The math community is already coming together to hold deep discussions on how to navigate this time of turbulence and change. It is time for us to move from discussion into implementation, charting the course for the future of our profession. The training for a doctorate, the hiring of junior faculty, the evaluation for promotion, the criteria for publication, the modes of publication all need to be scrutinized and updated. The good that comes out of this situation is the fall of the nonproductive traditions of our community, while keeping the parts we value.

Alvaro Lozano-Robledo

The “Big OpenAI drop” is nothing short of historic, possibly the single most important day in the history of mathematics thus far. Many of the problems with now proposed solutions in the Oct. 6, 2026 drop would represent huge contributions to their respective fields: quasi-RH, the second part of Hilbert’s 16th, Hilbert’s 10th over Q, the Hodge Conjecture of CM abelian varieties, Goldfeld’s conjecture, fast integer multiplication… They are undeniably huge contributions.

And yet, they have not changed my mindset. On the contrary, we already knew their models can do amazing things (e.g., Navier-Stokes). We already knew the frontier models can connect dots in the existing literature in ingenious ways (e.g., unit-distance conjecture). We already knew that OpenAI can spend a mind-boggling amount of resources to attack problems. We also know the price for their top-level subscription is about to increase significantly, up to $500/month.

Also, we suspected that their models have limitations, and the new release shows evidence of that too. In their report, they mention that they attacked 4000 open problems, and their model was able to make progress on about 700 related problems. Yes, some of the ones they were able to solve are huge. But it also shows that their models are limited in some ways: their goal was RH, not quasi-RH. Their goal was the full Hodge, not Hodge for CM varieties. Their goal was BSD, not Goldfeld’s 50-50. Again, quasi-RH is huge! But it is not RH.

Are any of the solutions using new ideas that are outside of the convex hull of the current ideas in the literature (in the sense of Nestor Guillen)? We will need mathematicians and time to digest these new proofs and understand what connections are being made, and whether brand new ideas were actually discovered in the process. There is a lot of mathematical research that remains to be done with and without the aid of LLMs. What has changed is that now there are new mountains of mathematics to explain and communicate to others.

Julian Wykowski

Navigating today, I kept thinking about a passage in Stanisław Lem’s Solaris (1961), where the main character fantasises about the existence of a bóg ułomny . This has been translated into English as an imperfect god , although I believe a more faithful translation would be a defective or disabled god. The passage reads:

“I’m not thinking of a god whose imperfection arises out of the candour of his human creators, but one whose imperfection represents his essential characteristic: a god limited in his omniscience and power, fallible, incapable of foreseeing the consequences of his acts, and creating things that lead to horror. He is a … sick god, whose ambitions exceed his powers and who does not realise it at first. A god who has created clocks, but not the time they measure. He has created systems or mechanisms that served specific ends but have now overstepped and betrayed them. And he has created eternity, which was to have measured his power, and which measures his unending defeat.”

Many members of the community agree that the main purpose of open questions in mathematics is to guide theory building and produce understanding, rather than a binary answer to some problem with limited applications in the real world. In that sense, we truly have created systems or mechanisms that served specific ends but have now overstepped and betrayed them . While it is certainly in OpenAI’s marketing interests to spread a narrative that mathematics has been “solved” through the existence of some lean code on some server, I sincerely hope our community will not succumb to such a defeatist narrative. Instead, I hope that we will find a consensus-based, organised approach to adapt our work to this new reality, in ways that align with our values, support our pursuit of human understanding, and benefit the construction of mathematical theory. This may well include embracing AI, but only in a form that maximises its positive and minimises its negative impact on the aspects of mathematics we consider fundamental. In the meantime, if OpenAI wants everyone to believe they are a deity, it is our duty to remember how defective their idea of deity is.

Ben Green

I was not expecting the magnitude of some of these results. Most particularly, seeing a proof of no zeros of Dirichlet L-functions to the right of Re s = 7 / 8 \mathrm{Re} s = 7/8 (and a second, short, proof of no Siegel zeros) is absolutely shocking to me, but there are many other breathtaking advances. Closer to my particular expertise, many of the central problems of additive combinatorics have fallen, including around three quarters of the aims I had for an ERC Advanced Grant, awarded only in June. The work of understanding these solutions and the associated context properly is significant and, from what I can glean from the current manuscripts, likely to be very worthwhile. I’ll start with number 182, which shows that any subset of { 1 , … , N } \{1,\ldots,N\} of size N 1 − c N^{1 – c} has two elements differing by a square.

Sam Hughes

It was a privilege of a lifetime to get to do research level maths. But not like this. How much beauty have we lost?

Emily Riehl

Firstly, kudos to whoever is behind the website citedbyagi.com , which recognizes the mathematicians whose work is cited by the manuscript collection released by OpenAI. It will take quite a while to understand what exactly has been achieved there. But whatever it is was only possible because mathematicians formulated the conjectures, proved the surrounding results, and shared their ideas – in conversations, talks, expository writing, and papers – so that other humans, and now AI, could learn from them. I hope they continue, because like many others I love learning new mathematics from other humans and always will.

KEVIN BUZZARD

I am very excited about the future. I know that there is chaos today. We are in the eye of the storm. We do not want to read slop papers. Some of the OpenAI papers have already been retracted. We do not yet even know what is true. But I believe that truth and understanding will bubble to the top. There are plenty of important poorly-written papers by humans — bad exposition has always been with us, and mathematicians have offered translation services for free many times before. AI will get better at explaining. Mathematics has undoubtedly moved forwards this week — this cannot be denied.

Zhou Feng

I am optimistic, because I see little to gain from pessimism. Still, I was stunned by the claimed solution to determining the dimension of self-similar measures on the line (Item 148 in the Review) and related problems. I am heartened that the proof appears to stand on the shoulders of earlier mathematicians and live within the framework they developed. I will spend more time studying it; after all, I believe human understanding and explanation are essential to progress in our community. They also bring joy, though perhaps not the same intense joy as a eureka moment.

I do not know how these problems were selected, but their impact makes me wonder: what makes a mathematical problem important or interesting? Problems drive progress, and posing good ones requires vision and taste, often developed through years of exploration. Knowing their definitive answers is always fantastic, but what comes next?

This announcement reveals AI’s capacity to “do” mathematics at massive scale and with remarkable depth. Is it possible to build an interactive mathematical world (perhaps a Google Map of math) where we can visually explore ideas, navigate proofs, and uncover connections between different fields? AI could help build it, guided by human mathematicians’ expertise. Future mathematicians could use their creativity and insight to expand this world, enrich its details, and find new questions worth pursuing.

Jakob Glas

When OpenAI announced that it had solved over 100 open problems in mathematics, I felt both excited and anxious. Excited about the new mathematics to come, and anxious that some of the problems I was working on might be among them.

Fortunately, my own research was unaffected. But when I saw the 7/8 bound for the zero-free region of the Riemann zeta function among the released problems, I was genuinely shocked. I had always thought there was a broad consensus among mathematicians that the Quasi-Riemann Hypothesis was completely out of reach with existing mathematics. Apparently, we were wrong.

Giovanni Mongardi

Today, something is lost forever. We were explorers of uncharted theorems, fine goldsmiths of beautiful proofs. Humanity was alone in the fantastic world of the mind, where crystalline cohomology was as concrete as a gothic cathedral. Today the machine came.

She claims to have solved a lot of our questions with its thunderous answer “42!”. She is quicker than us, knows everything humanity has ever done and gives us answers a few moments after we make the question.

What is left for us is to be priests of the Machine-God, heeding her words, understanding them for our fellow humans.

I fear the future of the mind will be a desert, with no questions to guide us beyond the horizon.

Sam Fisher

The announcement was the first thing I saw in the morning. My immediate reaction was just to laugh, I’m not really sure what I felt. A combination of disgust, grief, and apathy maybe. Digesting machine arguments will not offer us the same depth of understanding, expertise, intuition, and fulfillment that we find in working on our own problems for months and often years, and sharing our work with others. I worry about the future of research mathematics and my place in it. I hope we can adopt healthy norms. I am not interested in paying morally depraved tech giants >100€/month to become a professional button-pushing slop digester.

ignasi mundet

One question I was thinking about recently (before summer!) is what it is that makes mathematics beautiful. A partial conclusion is that beauty in mathematics is very much related to our own limitations: our limits impose us a slow pace, which allows us to discover things which we would not notice at a faster pace. Slowliness and our limitation is also very much related to viewing mathematics as an adventure and a challenge, which I think is also an important ingredient in its beauty.

One question I ask myself is: in what ways will mathematics be beautiful after the revolution that we are experiencing now?

Nilima Nigam

My own immediate reaction was one of irritation. Some of us saw this day as inevitable, even a couple of years ago. But we could not stop each other from the seduction of these tools, their promotion, and very quickly claims about their inevitability. Well, here we are.

I already saw many younger colleagues and students who were experiencing existential concerns about what it means to do mathematics, and what their role would be. I see our community already in crisis, with deep rifts around what we value, what motivates us, and indeed how much to prioritize mathematics over the humans working on it. Some are excited, some are despairing, and everything in between. We’ve seen greed, naivete, courage, resignation – all those sentiments we don’t really attach to the austere beauty of this field we love. And I see much anger directed at each other as well.

I see the public at large react in different ways since the infamous NS announcement, with a fair number of people accusing mathematicians of ‘gatekeeping’, and others accusing the community of selling out to AI corporations. There is Schadenfreude, there’s excitement about democratization of mathematics, and hopes that ‘solving NS’ would presage ‘solving cancer’.

In other words, as a community and a society we were already overwhelmed – intellectually, emotionally, politically.

Now there’s a dump of results, a high-decibel screeching for our collective attention and energy. I see how yet again many, many, many in the community will dedicate time they didn’t have, to carefully parse papers (not all of which are written with care) released at scale. And I see the exodus of young people hastened. Students are in shock at their theses suddenly being scooped.

Yes, we must react, I suppose. But my own immediate reaction to the high-volume cacophony of attention-grabbing motorcycles on my street is typically one of irritation. This is how I feel today about Open AI’s efforts in math. Open AI doesn’t need or care about my attention or respect. But if it did , the equivalent of racing down the neighbourhood noisily on 50 motorbikes with silencers off isn’t the way to do it.

Indira Chatterji

One of the papers is a solution to the Bass trace conjecture, a beautiful conjecture made by Hyman Bass in 1976, implying the older idempotent conjecture (from the 50ies maybe?) that there should be non non-trivial idempotent in the group ring of a torsion-free group. I was privileged enough to have given a proof for amenable groups 25 years ago with two amazing collaborators, Jon Berrick and Guido Mislin, that changed my career and my vision of life and of mathematics. For years now, progress on this question remained incremental and we all did other stuff.

I don’t understand the proof, and I still don’t believe that this conjecture could be true in general. The paper is 30 pages long and looks like slop -lean certified, whatever that means. However I am looking forward to a small group of colleagues to go through it and either shred it to pieces or understand a stunningly beautiful argument. Who’s in?

3 papers have been pulled already … \ldots Is it time to claim that it’s useless slop, that lean is unreliable (and demand money to say otherwise)?

Ivan Smith

Disrupted times, but I still naively hope we will come through stronger. If the community learns to reward those who forge the paths and lay down the fixed ropes as much as those who reach the summit, it would be a very good development.

Sahana Balasubramanya

My initial reaction was to skim the list of problems to see what all has been impacted. It was a bit disorienting to see many famous problems listed there, and I had a sense that the landscape of math was being “nuked”. Upon closer inspection, I realised that not all the proofs have a Lean formalization. (And as someone unfamiliar with Lean, I am not sure what to make of the results that carry such a credential). Since then, at least 3 preprints have been withdrawn due to mistakes and other corrections have also been made.

I have heard from colleagues in other areas of math that they consider some of the papers released to be “unreadable”. There are also the issues of the perpetuating lack of human attribution, the lack of transparency and the apparent disregard of the advice of the advisory committee. It will take a long time for humans to absorb this new information, if it stands the test of time and rigorous scrutiny at all. If it doesn’t, then a lot of time is still likely to be wasted proofreading for the hole in the argument, which makes one wonder what is the point of it all. This is a mess.

It makes me feel that the AI companies have chosen a side, and it is not the side that wants to work for the betterment of humanity (by trying to mitigate poverty, work on resource allocation, or trying to find a cure for serious diseases, for example) nor one that particularly cares. For the time being, I hope we do not give in to panic or a sense of doom.

YUVAL GORFINE

It is hard to find the right words to describe what I’m feeling and what I’m thinking, especially when my thoughts and feelings keep changing. One such thought, at least, is this (and it lives in my mind together with other thoughts which contradict it).

I don’t know if this is the end. I hope that it’s not. I think that it’s not. But what is definitely true is that if this is indeed the sunset of mathematics, it is a marvelous one. What humanity has achieved is astonishing. When I went through the list of problems solved by OpenAI, I couldn’t but think of this old poem by E. E. Cummings:

who are you,little i

(five or six years old)

peering from some high

window;at the gold

of november sunset

(and feeling: that if day ​

has to become night

this is a beautiful way)

Mitchell Taylor

As someone who has been closely following the rapid progress in the mathematical capabilities of AI, I am not particularly surprised by the number or the prominence of the problems that OpenAI has just released. I find many of the results to be beautiful, and I’d love to understand them more deeply. In particular, I am happy to see that the hot spots conjecture is true for simply connected subsets of the plane, and it is very cool to see that the separable quotient problem is independent of ZFC. These results are truly spectacular, and the fact that we are able to witness their resolutions is extremely exciting.

What concerns me much more is the potential misalignment between the objectives of AI companies and what needs to be their primary goal: optimizing the impact of AI on humanity. By now, it is clear that AI will completely change the world. However, it is also clear that many people will experience trauma during this transition period, and in this regard I think that mathematics serves as a particularly revealing case study.

In their recent release https://openai.com/index/sharing-ai-progress-in-mathematics/ , OpenAI begins by stating that they have looked to improve how they share their results with the mathematical community and have consulted with the AGMAI group to discuss best practices. Although collaboration between AI companies and academic researchers is fundamentally important, in this case there seems to be a substantive disagreement between what the AGMAI group recommends and what OpenAI states that they will do. Most notably, AGMAI asks AI companies to stop evaluating their proprietary models on open research problems, whereas OpenAI makes it clear that they believe that this is important.

Although I am personally excited to witness the amazing progress in mathematics, many of my friends and colleagues are currently experiencing severe anxiety, depression and loss of purpose. What they need most at this moment is not more powerful AI, but the time to process the transformation of their discipline. I worry that they will not be given this time. However, I worry much more that our society as a whole will not be given nearly enough time to adapt to AI.

I truly hope that OpenAI takes the reactions within the mathematics community seriously when considering how the wider society may respond to the changes ahead. The primary purpose of developing a technology of this magnitude should be to improve everyone’s lives, not to maximize power or profit. In particular, the pace of scientific and social change should not be dictated by AI labs alone. Instead, I believe that it is imperative that OpenAI follows through on their stated aim of empowering scientists by actively and thoughtfully listening to their concerns and offering them a meaningful say in how this transition unfolds. In practice, this means giving a larger subset of the mathematical community a direct role in making decisions about the timing of future releases, the support needed to understand these results, and how research, teaching and society more broadly can adapt.

Menny aka

It was always about fun. For more than two decades now, I have been lucky enough to have the opportunity to have fun learning, doing, and teaching mathematics. So the main open question for me now is: how can I continue to have fun? After recovering from the shock that each such release of results brings, I keep coming back to this question, hoping it will lead me to a solution. I have found some answers and keep experimenting in search of more. Here is where I stand today.

In teaching, I immensely enjoy being able to create, with minimal effort, an applet or demonstration tailored to exactly what I want to explain.

Recently, we created a seminar called “Illustrating Math toward Outreach,” where we work with students at all levels on illustrating and presenting mathematics through different media, many of which have become accessible thanks to LLMs. We started just a month ago, but it looks like fun will be at least one component of this seminar.

Whether I can have fun with LLMs in research is less clear to me. I keep experimenting: lately, I have been washing the dishes while discussing research questions with an LLM through my headset. Is it useful? Surprisingly, very useful. Is it a weird (not to say dystopian) experience? For me, for now, yes. It leaves me feeling empty and tired every time I try.

Can I find a way to enjoy reading these Lean-checked proofs? So far, I have found no fun in reading them. Can I enjoy working towards understanding them? I’m not sure! My current experiment is to find other interested humans, hoping to have fun tackling these proofs together. For now, I still have some naive hope: I cannot imagine a world in which understanding the proofs of the results in Project 15 is not fun. And I suspect many of us feel the same way about some other project X.

P.S. To see the reaction that helped me the most so far, google “the last ten minutes OpenAI”.

Inhyeok Choi

The results OpenAI announced are amazing, and it will be great if I can possibly learn solutions to many questions that I am interested in.

That said, I am sad about how these questions were treated. On August 1 they said they wanted to empower scientists and mathematicians. I interpreted this as helping mathematicians thrive. But on October 6 they said to empower scientists, it is important to continue evaluating their internal models on mathematics. So they just used these beautiful, far-reaching questions as testbeds. It does not feel like OpenAI is interested in Thompson’s group F, Bernoulli percolation, or QI-rigidity. It feels like they posted these results to show their model’s power. This practice will harm the math community.

Let me share some personal feelings. I have thought a little bit about a question ( p c < p u p_c < p_u ) that OpenAI attacked. How do I feel about the sudden resolution of the full question? Well, it’s good to know. The solution seems reasonable, and I would love to dive into the details and gain some further understanding from it. I will still ponder upon the question from different perspectives, e.g., whether there is a more natural proof for groups with free subgroups.

At the same time, this problem deserved more endeavors. There were many ways ahead, and we could explore different routes to eventually reach the destination. It could be more humane. The journey could be enjoyed by people. But now? We’re suddenly transported to the goal by the machine. This is sad not because the destination is unwanted, but because we have lost so much of the journey and so many of the people.

For now, I’m still walking around in the era of portals. I prefer to take a stroll and find some random flowers. I hope we, as a community, will continue to value this human aspect of mathematics.

Stefan Witzel

Like all of us I’m tempted to dive into an detailed analysis of the proofs (I’d start with the non-residually finite hyperbolic groups). But I think our imminent task as a community is to form an idea of what values and processes will allow us to survive (in a first approximation: deep understanding matters more than concrete theorems; informal ways to convey understanding matter more than lean certificates). I am worried about the tempting vision that some have that we steer AI to push the frontiers way further now: I think it would work but we might loose offspring along the way and end after a generation.

Anonymous

I have been trying to convince people, including very recently, that we’re screwed and that most likely LLMs will soon be able to prove anything we might dream of proving, and more often than not what I heard back was that, really, LLMs are not that impressive.

Nino Tannio

Now machines can prove faster than people can digest them, most proofs will go unread. Our attention doesn’t scale with output. Curiosity-driven professionals may not care enough to understand once the fun, the reward & the mystery are gone, leaving us with truths without readers & answers without seekers.

But I don’t think this is a dead end. We may have to revolutionize the system. That could be as disruptive as replacing π with τ after centuries built around π. Perhaps we’ll find a better way of looking at the world along the way. Who knows? Why assume all the mystery disappears?

Koji Fujiwara

AI

— after Dolly Parton’s “Jolene”

AI, AI, AI, AI
I’m begging of you, please don’t take my math
AI, AI, AI, AI
Please don’t take it just because you can

Your wisdom is beyond compare
Your speed is like a bullet train
But I cannot compete with you, AI

And I can easily understand
How you could easily take my math
But you don’t know what it means to me, AI

I had to have this talk with you
My happiness depends on you
And whatever you decide to do, AI

AI, AI, AI, AI
I’m begging of you, please don’t take my math
AI, AI, AI, AI
Please don’t take it even though you can

AI, but it’s just not fair, AI

Ryan Alweiss

I find the new results from OpenAI to be wonderful! This is an extremely exciting time to be a mathematician. Clearly this is a period of significant disruption, and we need to restructure our institutions and rethink many of our practices for this new age of “proof abundance”. But we are learning a lot more mathematics than ever before, and humans and AI working together will propel both beautiful pure mathematics and useful applied mathematics to new heights. Props to Will DePue for his wonderful website citedbyagi.com showcasing how AI stood on the shoulders of human mathematicians.

Hyunwoo Kwon

Yesterday, OpenAI dumped more than 700 research ‘paper’ in GitHub. When I see the list of problems, I was so surprised that they announced the solution to the Falconer distance problem, local smoothing estimates for wave operators, and bounds for Kakeya maximal functions. These were central problems in harmonic analysis, and my friend has worked on one of these problems for 6 years, but OpenAI’s abrupt announcement devastated the world that she has cared about. I have started my math journey from a harmonic analysis perspective. I know the meaning of the problem for her and my colleagues and I really have a deep, bitter resentment toward this situation.

I kept thinking about the old play that I recently saw <The Cherry Orchard>. Am I Ranevsky, who is just sad about the past, or just Trofimov, who talks about ideology? My Cherry Orchard, which is full of curiosity shared with my peers, is being razed.

I was happy to have numerical experiments with the aid of AI. I could come up with a new style of questions. I don’t know how to answer yet, but I believe that this will bring a perspective to my research area. I was hopeful for this future. However, the recent activity of OpenAI kept me thinking that they are just trying to flex their dominance through raw speed and brute-force resources, not respecting the time for contemplating and historical developments in the area.

OpenAI claimed that they brought a new development for mathematics. It is a really historical moment without any doubt. However, the paper uploaded to their GitHub cannot be accepted as responsible behavior nor a genuine mathematical advancement. How can this unreadable flood of data be regarded as “Knowledge”?

It is really hard for me to endure this turmoil without watching the fall leaves turn red, the sea, and the sky.

Alex Nolte

In making sense of an evolving situation, I think it’s valuable to compare current developments to one’s past assessments. In this direction, a few weeks ago I wrote a response to the AGMAI request for community input that began: “I think that the worst outcome here is one in which the landscape of existing conjectures is suddenly destroyed in a wave of unprocessed proofs that estrange the communities of mathematical subdisciplines from the advances of their field.” This seems to be pretty directly in line with what OpenAI is aiming for in this release.

I think that the emergence of a new technology that has the potential to improve human understanding of mathematics can and should be positive for the field of mathematics. Communities adjust slowly to changes, though. It will take time to re-align our incentives and norms around rewarding work that we value in the context of these developments. To put it gently, I think it is a shame that temperance, consideration, and respect for the careers of mathematicians do not seem to figure highly among the priorities of AI companies.


  1. I could of course ask AI to write this as a haiku, but not today. ↩︎
  2. See also here: https://arxiv.org/abs/2509.15998 ↩︎

Iranian campaign planted fake articles in real U.S. publications using ChatGPT

Hacker News
www.washingtonpost.com
2026-10-09 08:21:24
Comments...
Original Article
Timed out getting readerview for https://www.washingtonpost.com/technology/2026/10/09/chatgpt-users-iran-planted-ai-generated-articles-us-news-media/

The Hetzner Cloud network stack – history and technical overview

Hacker News
www.hetzner.com
2026-10-09 08:20:55
Comments...

A minimal kernel in Swift, running in QEMU

Lobsters
carette.xyz
2026-10-09 08:17:01
Comments...
Original Article

Update (28th of September 2026)
Max Desiatov told me that the @c swift attribute should work, instead of declaring the functions using @_cdecl . The @c attribute marks a global function as a C function implemented in Swift, which formalizes the @_cdecl attribute. A link to the proposal is available here . I did update the blog post and the code accordingly to that comment. Thanks Max!


I started a small experiment: writing a very basic kernel in Swift, and running on QEMU .

The goal is obviously not to replace Linux or any other popular kernel, but just to have fun and understand what is required to make a program run without an operating system underneath it.
Actually I made a similar experiment years before with arOS 10 years ago.

For the moment, the kernel does only one thing: it prints a message through QEMU and then waits forever, which is enough for a first deep dive.

Swift Embedded #

The project uses Embedded Swift , which is a subset of Swift designed for environments where there is no operating system and no standard library available (in the usual sense).

My first Package.swift was very small:

// swift-tools-version: 6.4

import PackageDescription

let package = Package(
    name: "swift-kernel",
    platforms: [.macOS(.v14)],
    targets: [
        .executableTarget(
            name: "swift_kernel",
            swiftSettings: [
                .enableExperimentalFeature("Embedded"),
                .strictMemorySafety(),
                .treatAllWarnings(as: .error),
            ],
        )
    ]
)

And the first Swift file was almost insulting in its simplicity:

// Sources/swift_kernel/test.swift
print("Hello... world?")

I tried to run it:

> swift run
<unknown>:0: error: unable to load standard library for target 'arm64-apple-macosx27.0.0'

Oops. It seems like my current Swift compiler does not yet ship with the Embedded Swift standard library.

As I missed in the documentation :

Since Embedded Swift is still experimental and not yet supported in public Swift releases, you’ll need to use a development toolchain.

So, let’s install the development toolchain and test again:

> swiftly install main-snapshot && swiftly use main-snapshot
> swift run
[...]
Hello... world?

Success!
At this point I had confirmed that Embedded Swift could compile and run a small program.

The next step was to compile for a machine with no operating system at all.

QEMU setup #

For this project I will test on a machine emulator called QEMU , which is one of the most famous machine emulators for hackers.

I am using QEMU’s virt machine on an Apple Silicon machine. The target is therefore aarch64-none-none-elf .
This target, designed as a triple , describes a 64-bit ARM machine with no operating system and no environment provided by a C runtime.

When QEMU starts, the CPU is in a raw state.
Before it can safely execute Swift code, I need to configure a stack and decide where the program starts .

I will need a minimal assembly file that:

  1. defines the _start symbol ,
  2. sets up a stack for the first core,
  3. jumps to our Swift entry function, kernel_main ,
  4. and waits forever to keep the main running.

Compiler setup #

I have to tell the compiler that this is not a normal executable: the compiler must avoid linking the usual standard libraries, and the linker must use our linker script instead of a platform-specific one.

The project uses the following toolset.json , which will be passed to our Swift Package Manager (SPM):

{
    "schemaVersion": "1.0",
    "swiftCompiler": {
        "extraCLIOptions": [
            "-enable-experimental-feature", "Embedded",
            "-enable-experimental-feature", "Volatile",
            "-Xfrontend", "-no-allocations",
            "-Xfrontend", "-function-sections",
            "-Xfrontend", "-disable-stack-protector",
            "-Xlinker-driver", "-nostdlib",
            "-Xlinker-driver", "-fuse-ld=lld"
        ]
    },
    "linker": {
        "extraCLIOptions": [
            "-nostdlib",
            "-static",
            "--gc-sections",
            "--orphan-handling=error",
            "-T", "linker.ld",
            "-Map", ".build/kernel.map"
        ]
    }
}

Now, let’s build the project with the new target, the toolset, and Swift’s native build system:

> swift build --triple aarch64-none-none-elf --toolset toolset.json --build-system native

Unfortunately, the first linker attempt fails:

ld.lld: error: section type mismatch for .strtab
>>> <internal>:(.strtab): SHT_STRTAB
>>> output section .nonalloc: SHT_SYMTAB

ld.lld: error: section type mismatch for .shstrtab
>>> <internal>:(.shstrtab): SHT_STRTAB
>>> output section .nonalloc: SHT_PROGBITS

ld.lld: error: undefined symbol: putchar
ld.lld: error: undefined symbol: memmove

Hmm. What is going on here?

Because I am compiling for a bare-metal target (reminder: none-none-elf ), there is no underlying operating system and no C standard library. Therefore there is no putchar , and there is no memmove either…

The section errors have a different origin.
With orphan handling enabled, the linker does not want to guess where ELF metadata should go. Therefore, the linker script must explicitly place the sections that I am keeping.

Bridging Swift to assembly #

I can’t use a normal Swift file with a main function. Instead, I expose a designated kernel entry function with @c , so that the assembly file can call it by its C-compatible name.

@c
func kernel_main() {
    print("Hello, Embedded Swift 😊")

    while true {} // Keep the program running
}

The assembly entry point lives in Sources/boot/boot.S :

.section .text.boot
.global _start

_start:
    /* Read the CPU ID. We only want Core 0 to run our Swift code. */
    mrs x1, mpidr_el1
    and x1, x1, #3
    cbz x1, 2f

    /* Park secondary cores in an infinite wait loop. */
1:  wfe
    b 1b

    /* Set up the stack for Core 0. */
2:  ldr x0, =__stack_top
    mov sp, x0

    /* Jump to our Swift entry point. */
    bl kernel_main

    /* Halt if we ever return. */
    b 1b

QEMU can start multiple virtual cores but, for now, only the first one should execute our kernel.
The other cores wait (using wfe ), waiting for an event that it will not send yet.

Providing the missing functions #

The print implementation used by Embedded Swift needs a way to write at least one character.
On QEMU’s virt machine, the ARMs PL011 UART is mapped at 0x09000000 .

So putchar can write directly to that memory-mapped register:

// QEMU's PL011 UART register
let QEMU_UART_REGISTER: UInt = 0x0900_0000

@c
@unsafe func putchar(_ c: CInt) -> CInt {
    let uart = unsafe UnsafeMutablePointer<UInt8>(bitPattern: QEMU_UART_REGISTER)!
    unsafe uart.pointee = UInt8(c)
    return c
}

This is not a screen driver but a serial output driver.
QEMU will then display the bytes received by the emulated UART in the terminal (because I will execute it with the -nographic option).

The other missing function is memmove .
Swift’s low-level code needs basic memory operations, even when I am not using a normal standard library. For this first experiment, I provide a small implementation that copies forwards or backwards, depending on whether the source and destination overlap:

@c
@unsafe func memmove(
    _ dest: UnsafeMutableRawPointer,
    _ src: UnsafeRawPointer,
    _ n: Int
) -> UnsafeMutableRawPointer {
    let d = unsafe dest.assumingMemoryBound(to: UInt8.self)
    let s = unsafe src.assumingMemoryBound(to: UInt8.self)

    if unsafe d < s {
        for i in 0..<n { unsafe d[i] = s[i] }
    } else if unsafe d > s {
        for i in (0..<n).reversed() { unsafe d[i] = s[i] }
    }
    return unsafe dest
}

This is the first point where the project stops being ordinary application programming.
Here, I am no longer calling an operating-system API to print a string, but I am implementing the lower-level functions that the language runtime needs in order to exist.

Describing the memory layout #

Now that I did implement the Swift code, the linker needs to know where the kernel is loaded and where each part of the executable belongs.
This is the role of linker.ld .

QEMU’s virt machine loads an AArch64 kernel at 0x40080000 in this setup:

ENTRY(_start)

. = 0x40080000;

The linker script then places the boot code first, followed by read-only data, initialized data, uninitialized data, and a stack:

.text : {
    KEEP(*(.text.boot))
    *(.text*)
}

.rodata : ALIGN(8) {
    *(.rodata*)
}

.data : ALIGN(8) {
    *(.data*)
}

.bss (NOLOAD) : ALIGN(16) {
    __bss_start = .;
    *(.bss*)
    *(COMMON)
    __bss_end = .;
}

.stack (NOLOAD) : ALIGN(16) {
    . += 0x20000;
    __stack_top = .;
}

The assembly code uses the __stack_top symbol to initialize the stack pointer.
The stack is currently 128 kB , which is an unreasonable amount for a kernel that only prints one sentence, but it gives Swift some room to call functions while this project is still experimental.

Finally, the script explicitly places the ELF metadata sections. This avoids the orphan-section errors from the first linker attempt:

/DISCARD/ : {
    *(.comment)
    *(.debug*)
    *(.eh_frame*)
    *(.swift_*)
}

.symtab : { *(.symtab) }
.strtab : { *(.strtab) }
.shstrtab : { *(.shstrtab) }

Hello, Embedded Swift #

Now, let’s build it

> swift build --triple aarch64-none-none-elf --toolset toolset.json --build-system native

, launched with QEMU:

> qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic -kernel .build/aarch64-none-none-elf/debug/kernel

and…

Then it keeps running forever, because the kernel is trapped in its infinite loop.

This is not close to a useful kernel, but it is a real AArch64 ELF executable.
It starts by an assembly entry point, links without a standard library, and it calls Swift code on top of a manually configured stack.

For a first hello world, this is already enough.

What comes next? #

The project is intentionally unfinished. The next steps are not implemented yet, but they provide a direction for the rest:

  1. clear the .bss section during boot,
  2. hide the UART register behind a small Swift abstraction (I hardcoded QEMU ones for simplicity),
  3. understand which allocation features Embedded Swift can support,
  4. investigate interrupts and timers,
  5. and eventually replace this infinite loop with something that can schedule actual work.

At some point, I may also want to experiment with a framebuffer, a real keyboard driver, and a minimal interactive environment. But before building a user interface, I need to understand the machine underneath it.

Responding to a human #

For now, the machine says hello. Printing a message is nice, but it is still a one-way conversation.

The PL011 UART also has a receive register.
Before reading from it, I need to check its flag register. Bit 4, called RXFE , tells us whether the receive FIFO is empty.
If it is empty, we wait.

let QEMU_UART_FLAG_REGISTER: UInt = 0x0900_0018

@unsafe func readChar() -> UInt8 {
    let uart = unsafe UnsafeMutablePointer<UInt8>(bitPattern: QEMU_UART_REGISTER)!
    let flags = unsafe UnsafeMutablePointer<UInt8>(bitPattern: QEMU_UART_FLAG_REGISTER)!

    // The RXFE bit is set while the receive FIFO is empty.
    while unsafe (flags.pointee & 0x10) != 0 {}
    return unsafe uart.pointee
}

This is polling . The CPU repeatedly checks the UART until a character arrives and it is a very inefficient way to do something like that. A real kernel would eventually use interrupts, but it is simple enough for a first implementation.

The kernel can now echo characters back to the terminal:

@c
func kernel_main() {
    print("Swift kernel ready.")
    let _ = unsafe putchar(62)
    let _ = unsafe putchar(32)

    var ignoreLineFeed = false

    while true {
        let character = unsafe readChar()

        if character == 13 {
            let _ = unsafe putchar(10)
            let _ = unsafe putchar(62)
            let _ = unsafe putchar(32)
            ignoreLineFeed = true
        } else if character == 10 {
            if !ignoreLineFeed {
                let _ = unsafe putchar(10)
                let _ = unsafe putchar(62)
                let _ = unsafe putchar(32)
            }
            ignoreLineFeed = false
        } else {
            let _ = unsafe putchar(CInt(character))
            ignoreLineFeed = false
        }
    }
}

The numbers 62 and 32 are simply the ASCII codes for > and a space. I could create a small string-writing abstraction, but for the moment I prefer to keep the mechanism visible.

Running the same QEMU command now gives us a prompt:

Swift kernel ready.
> hello kernel
hello kernel
> 

This is still a very small feature.
There is no line editor, no backspace handling, no command parser… and the CPU is busy waiting for every character because it uses polling instead of interrupts.

For a program that started with print("Hello... world?") , this feels like a good place to stop and start writing a TODO list to improve all of that.

The full code is available on my private git space : https://git.carette.xyz/k0pernicus/swift-kernel .
Have fun!

"Abolish ICE": Protests Erupt in NYC After ICE Agents Shoot Father with 5-Year-Old Son in Car

Democracy Now!
www.democracynow.org
2026-10-09 08:16:32
Protests have erupted in New York City after a federal immigration agent shot and wounded a man in the Bronx on Thursday afternoon. As masked agents reportedly posing as construction workers attempted to arrest 28-year-old Oscar Belgal, they opened fire on his car. Belgal was shot in the neck. His 5...
Original Article

This is a rush transcript. Copy may not be in its final form.

AMY GOODMAN : Well, today, Juan, we’re going to be talking about your old neighborhood uptown in Manhattan. Protests erupted in New York City on Thursday after a federal immigration agent shot and wounded a man in his vehicle in the Marble Hill neighborhood of northern Manhattan. Seven shots rang out in quick succession just after 4 p.m. on a crowded street as people walked home from work or accompanied their children home from school. Twenty-eight-year-old Oscar Belgal was struck in the neck. His 5-year-old child was in the back seat of the car.

Belgal was taken to the nearby Columbia Presbyterian Allen Hospital, where hundreds of protesters gathered to demand his release, chanting ” ICE off our streets now!” and “We want justice!” New York police arrested four people, assaulted others, including congressional candidate Darializa Avila Chevalier, who was knocked to the ground. She’ll join us in a minute.

In a late-night news conference, New York City Mayor Zohran Mamdani said he called President Trump and spoke to him for two hours, and also talked to Homeland Security Secretary Markwayne Mullin, to negotiate Belgal’s release, but was unsuccessful.

MAYOR ZOHRAN MAMDANI : Around 4 p.m. this afternoon, a New Yorker was shot by ICE agents in Marble Hill. Many of the facts surrounding this shooting are still unclear. ICE agents surrounded the man’s vehicle before opening fire. They wore construction vests and masks that concealed their faces. There was no reasonable way to identify them as ICE agents.

School had just gotten out. The street was crowded with families and children. When ICE agents opened fire, a 5-year-old child — a 5-year-old child — was in the back seat of the car. Thank God, that child is physically unharmed.

For the past two hours, I have been on the phone with President Trump and Secretary Mullin negotiating the release of the man ICE agents shot. Those negotiations were unsuccessful. Just moments ago, ICE put the man in an unmarked vehicle and whisked him away.

Let me say this plainly: What happened today was an outrage. I stand here not just as the mayor of our city, but as someone who is proud to be an immigrant in our city. And I know that these kinds of raids, this kind of terrorizing of this city, leaves the 3 million immigrants of this city asking if they are safe here, if they belong here, if this, too, can be their home here.

We will not normalize ICE’s viciousness. We will not accept its cruelty. We know, and I have said this directly, whether to the president or to the public, ICE undermines public safety. It makes us less safe. New York City will not stand by while ICE agents shoot New Yorkers, and we will not back down from the demand that so many, including myself, have put forward time and again. This is an agency that must be abolished.

AMY GOODMAN : New York City Mayor Zohran Mamdani late last night at a news conference.

We’re joined now by two guests who were also on the scene last night. New York City Councilmember Carmen De La Rosa represents Marble Hill, Inwood and Washington Heights. And we’re joined by Darializa Avila Chevalier. She’s the Democratic candidate for Congress representing Upper Manhattan and parts of the Bronx.

I mean, to say the least, it was heated last night. I was there with Democracy Now! 's Nicole Salazar. Let me turn to Darializa Avila Chevalier. Can you talk about what you're demanding right now? As you participated in the news conference, then you marched to the hospital, hundreds were there. And then, what happened to you?

DARIALIZA AVILA CHEVALIER : Yeah, well, first of all, thank you, Amy, so much for having me. I had hoped that the next time we would get to speak would be under happier circumstances. But frankly, I’ve just been feeling enraged since yesterday, and it has been hard to process all that has happened and transpired.

You know, when we were at the press conference, we were calling very clearly, all of the elected officials, for the abolishment of ICE . This is an agency that should have never existed to begin with. And what we saw yesterday was a prime example of why it is a terror to our communities, why it should not exist. It undermines public safety. It makes our communities feel terrorized by their own government. And we need to make sure that such an agency never comes to pass and never exists again.

The fact that there were so many agents, ICE agents, HSI agents, federal agents, on the scene — the NYPD was not giving elected officials much information once we were on the scene to try to understand what had happened, whether or not the child was safe, the fact that it took so long for us to to get confirmation of those details, you know, all of that undermines public safety. Folks were scared, and rightfully so.

You know, it was — Senator Gustavo Rivera and I had to go behind HSI agents, Homeland Security Investigation agents, because they were going door to door asking neighbors for, quote-unquote, “evidence,” asking them about their video cameras, asking them for more information. And we had to go behind the HSI agents to let folks know that they were under no obligation to open the door, that they were under no obligation to speak to any of these agents without a warrant. And so, I want New Yorkers to know, if you see someone, even though it says “police,” if it’s not a warrant, if they do not have a warrant, they do not have to open the door or speak to any of these agents. They will pretend to be NYPD police. They are not. You do not have to open the door to them.

We, you know, went over to the press conference after that, called for abolishing ICE , called for the release of the person who had been shot, and for answers and accountability, and meaningful accountability. Unfortunately, what I saw was NYPD escalating the situation where protesters were outside of the hospital trying to make sure that ICE wasn’t leaving with our neighbor. And, you know, they continued to escalate the situation. As I was trying to deescalate and telling them that the barricades were not necessary, that folks were calm, you know, the tensions continued to rise, and police became more aggressive and, at one point, shoved me and others to the ground.

You know, there were four arrests that happened yesterday. Those were completely unnecessary. The escalation, you know, was completely unnecessary. And this is why we also must demand that we get rid of and disband the SRG , because this type of response should have never happened for folks who were just simply trying to protect their neighbor.

JUAN GONZÁLEZ: Yeah, I’d like to ask Councilwoman Carmen De La Rosa — I know this neighborhood well. I lived in Inwood, a few blocks away from there, for nearly 20 years. Especially around where this happened, this is a highly congested area, especially in the afternoon, at 4:00 in the afternoon, people coming out of the train station, a big mall right next door to there. Haven’t you and other public officials complained about — previously about ICE using a Target right there in that mall to gather their forces and to go out on sweeps?

CARMEN DE LA ROSA : Yes, there’s been an escalating sightings of ICE at the Target parking lot, which is private property. Myself and the surrounding elected officials have come together to demand that the owner of the property stop allowing ICE onto his property. We’ve been told that they would discontinue any presence of ICE at the parking lot. Unfortunately, we continue to see ICE there. And it has also been the scene of neighbors protesting that presence of ICE . But we’ve also seen ICE in our local parks. We’ve seen ICE sightings and congregating at Van Cortlandt Park and Inwood Hill Park. And this is the result of that escalating presence and unnecessary presence of ICE in our communities.

JUAN GONZÁLEZ: And how did the New York City Police Department deal with you as compared to the ICE agents and the federal authorities?

CARMEN DE LA ROSA : As Darializa just said, the information coming from the NYPD was vague at best. I personally witnessed the NYPD escalating aggressively towards our community, barricading the community in, pressing barricades against our neighbors as they tried to make sure that their rights, their civil rights to protest, to show up, to speak up, were were being violated. And unfortunately, I also witnessed NYPD helping the ICE vehicles whisk away our neighbors and come in and out of the hospital. So, in my opinion, although we have been told that NYPD does not collaborate, there is a perception of, at the very least, coordinating efforts for ICE’s entrance and exits into our hospital.

AMY GOODMAN : Darializa Avila Chevalier, witnesses have said that the ICE agent used what appeared to be a long gun, a large semi-automatic assault rifle. Can you talk about using a high-powered weapon as children are leaving school? And what does it mean for the city and also the state of New York to be a sanctuary city and state?

DARIALIZA AVILA CHEVALIER : You know, Amy, I cannot think of any good reason why such a weapon would be in our city at all, held by anybody, and the fact that these — these cowboys, who think they can just be above the law, are shooting into our streets, not asking who is around, shooting into a car that had a 5-year-old child in it. That child is so traumatized now because they just witnessed their — his father be shot by these agents.

You know, when we arrived at the scene, I asked the officers whether it was a crime scene because of the crash or a crime scene because of the shooting. And they told — the NYPD told me that it was a crime scene because of the shooting, and yet they could not tell us whether the shooter had been apprehended, who the shooter was. No information was given to us.

And so, to Carmen’s point, the vagueness of this really forces us to ask whether the silence here is not also complicity in ICE’s actions. The fact that, you know, we saw agents change clothes, we were trying to figure out, identify which agency they were with, and no information was being given to elected officials at all levels of government. It was truly astonishing, as I was making my way over to the hospital, to see, you know, an unmarked car, which had police lights, heading south, and police, NYPD police, pushing protesters, physically pushing protesters, out of the street as the car was ramming into people before speeding away. It is truly shocking. And, you know, the levels of violence, not just from the fact that the ICE agent had a weapon of that magnitude, but the use of the vehicles that were running into our neighbors, all of that, all of that, is an affront to the notion that this has anything to do with public safety. We have become less safe with the presence of ICE , and we need to make sure that we are actually upholding the sanctuary policies of the city. There is no reason why NYPD should be collaborating this way, even just by standing around. That, in itself, is complicity in this.

And, you know, I was actually very disgusted to hear Commissioner Tisch’s remarks yesterday, because just a few hours prior, Public Advocate Jumaane Williams reminded us that the way that the victim would be spoken about would be in a demonizing way, and just a few hours later, that is what Police Commissioner Tisch did. There was no reason for her to read out, you know, this person’s past contact with police. There was no justification for anything that transpired that afternoon. And for her to do that was symboling that there are some occasions under which that is OK. There is no occasion under which this is OK. There is no excuse for allowing ICE to come into our city to shoot seven bullets into cars where there are children. It is just an outrage, and I truly have no words for just how enraging everything that transpired last night was.

AMY GOODMAN : I want to thank you both for being with us, Darializa Avila Chevalier, Democratic candidate in New York’s 13th Congressional District, and I want to thank New York City Councilmember Carmen De La Rosa.

Coming up, the 2026 Nobel Peace Prize has been awarded to Navi Pillay, the South African-born jurist and human rights activist. Stay with us.

[break]

AMY GOODMAN : “La Jura,” “The Oath,” by Chicano Batman, 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.

There are many themes, but this one is yours

Lobsters
earendil.com
2026-10-09 08:08:09
Comments...
Original Article

At Earendil, we want to build products that respect the choices of the people using them. So when we were refreshing Pi's themes, we wanted a theme that adapts to the terminal it runs in. Most people who spend their day in a terminal have picked their own themes for it. Why not make Pi reflect their choices?

The result is the new system theme, which is now Pi's default. It asks your terminal for its colors and builds Pi's theme from them. In this post we share how it works.

A Pi session in the terminal. With JavaScript enabled, it plays here and can be shown in 24 terminal themes.

Before you read the rest of the post, we want to spoil something: it's all about contrast. Picking the colors in the terminal UI is a question of taste that the user has already answered. From there, all other decisions come down to one question: how much does a color stand out from the background it's on? If we get it wrong, we create a bad experience for the user.

But the catch is that contrast is a matter of perception and not something we can trivially measure. Two people can look at the same pair of colors and disagree about whether it's readable. We built a small interactive survey you can take to show you how you perceive that contrast, and how it compares against other people. You'll find details about that survey at the end of the post.

Can you trust the ANSI palette?

Every terminal theme defines 16 ANSI colors, and the simplest way to match your terminal would be to use them directly. But there aren't really any rules to the ANSI palette. The original standard, ECMA-48 , was adopted in 1976. Its nearly identical American counterpart from 1979, ANSI X3.64, is where the name comes from. The standard names eight colors (black, red, green, yellow, blue, magenta, cyan and white), but doesn't say what they should look like or how they should relate to the background.

The eight bright variants aren't part of the standard. Quite a few terminals rendered bold text in a brighter color , which effectively gave them eight more colors. The codes to select bright colors directly were added later by IBM's aixterm and adopted by other terminals like xterm .

Since the bright colors started out as bold text, we would assume that "bright" was meant to stand out more. And since early terminals mostly showed light text on a dark screen, brighter also meant more contrast. We looked at the more than 460 themes that come with Ghostty, and today this only sort of holds. In dark themes, the bright variant has more contrast in about 60% of cases. In light themes, it's only about a quarter, since bright usually still means lighter, which on a light background means less contrast. Individual themes don't agree either: in Gruvbox Dark, bright blue has more contrast than blue, in Catppuccin Mocha it has less, and in Tokyo Night they are the same color. The contrast against the background also varies a lot. We measured it with the WCAG 2 contrast ratio , which compares the luminance of two colors and ranges from 1:1 (no contrast) to 21:1 (black on white). Normal text should reach at least 4.5:1, and large text and UI elements 3:1. Bright black, which a lot of software uses for secondary text, doesn't even reach 3:1 in most dark themes.

This isn't a flaw of the themes. The palette was made to color the output of simple applications, like a red error or a green success message, and many themes are designed to look good rather than to meet contrast minimums. But it makes it hard to build an accessible, more complex TUI on top of it. Pi has around 60 color roles, from body text and dim text to panels behind tool calls and red text on a red error panel. We wanted to use your colors and still guarantee that all of them stay readable.

Contrast is all you need

Contrast is one of the most important aspects of color in user interfaces. If it is too low, people will have a hard time using your product. Contrast is mainly driven by lightness. Saturation affects it a little, but by far the most important factor is how light or dark a color is compared to the color behind it.

RGB, the way we usually write colors, doesn't have a lightness axis. It was made for machines to display colors on a monitor, not for humans to understand them. As a 3D shape, it is a neat cube with one axis per channel. But colors that are close to each other in this cube aren't necessarily colors humans would describe as similar. #0000ff and #00ff00 , for example, both have one channel at full strength, but on white, the blue has a WCAG contrast ratio of 8.6:1 and the green only 1.4:1.

The RGB color space as a cube with one axis per channel: black and white at opposite corners, with red, green, blue and their mixes on the corners in between.

The RGB color space. Drag to rotate, and pick a color to cut it open there.

Perceptual color spaces like OKLCH are built around human perception instead. Colors that are close to each other in OKLCH are also colors humans would describe as similar, and its axes are the ones humans use to describe color: lightness, chroma (how colorful a color is) and hue. Because it follows human perception rather than a monitor's hardware, its shape is a lot weirder than a cube.

The same colors in OKLCH as a landscape: lightness runs from black to white, hue runs front to back, and the height is how much chroma a color of that lightness and hue can have. Every hue peaks at a different lightness: blue close to black, yellow close to white.

The same colors in OKLCH: lightness from left to right, hue from front to back, and chroma as height. Drag to rotate, and pick a color to cut it open there.

With a lightness axis, the idea behind the system theme is simple: Pi decides the lightness of every color based on contrast requirements, and takes the hue and chroma from your terminal's palette.

Lightness

To figure out what lightness each color needs, we wrote down every place in the UI where two colors meet. Every panel needs enough contrast with the terminal background to read as a separate area, but not so much that it distracts. Every foreground color needs enough contrast on every background it can appear on. An error message, for example, has to be readable on the background, on the selected row and on all three tool panels. In code, this is a list of rules:

const COLORS = ["accent", "success", "error", "warning"];
const SURFACES = ["background", "selectedBg", ...TOOL_PANELS];

{ token: "text", on: ["background"], level: "text" },
...each(COLORS, SURFACES, "readable"),
{ token: "dim", on: [...SURFACES, "customMessageBg"], level: "subtle" },

A contrast algorithm normally takes two colors and returns the contrast between them. Here we need the reverse: we know the background and how much contrast we want, and need the color. I have reversed contrast algorithms before, and you can find implementations for both WCAG and perceptual contrast on GitHub. With a reversed algorithm, calculating the theme becomes a loop: starting with the panels, Pi calculates the lightness each color needs for each of its rules and takes the strictest one.

The Algorithm

Our first prototype did exactly that, together with a review app in which we tuned the contrast minimums. The app can render Pi with any of the themes that come with Ghostty, so we could check a sample of very different themes to make sure the system holds up beyond the default one.

That prototype used a well known perceptual contrast algorithm and that reference implementation. We then used that against a large number of ghostty themes and ensured that it looked good against all the themes. We then did not want to ship that algorithm itself. We tried to use simpler measures but were unable to approximate the results. In the end we had a coding agent do the fitting. For each contrast level in the reference the agent ran the original algorithm on every gray background from white to black and recorded the lightness and fitted a polynomial to the results. It settled on a fifth degree polynomial which was found to stay close enough to the reference lightness. Pi now only ships with those coefficients.

The chart below shows those polynomials, one curve for each contrast level in the rules above. Along the bottom is the lightness of the surface a color is drawn on, and up the side the lightness the color needs on it. The diagonal is no contrast at all: a color exactly as light as its surface. The vertical lines are the surfaces: the background, and the panels, which Pi solves first on the background. Where a rule's curve crosses one of its surfaces, you can read off the lightness that rule needs there, and the strictest one wins. Drag the background to see how every color follows it.

A chart of Pi's contrast levels as curves: for every lightness of a surface, the lightness a color needs on it. On dark surfaces the curves lie above the diagonal, where colors are lighter than their surface; on light surfaces below it. The stronger the level, the further its curve is from the diagonal.

Drag across the chart, or use the slider, to change the background's lightness, or pick a terminal theme. Pick a rule, or a word in the terminal, to see the lightness it needs on each of its surfaces. Click a color to show it in the other figures.

Each curve is the polynomial for one contrast level. Dots are the selected rule's targets, one per surface, the outlined one the strictest. On the right, the square is Pi's color and the circle the terminal's ANSI color it started from.

We first convert the queried terminal colors from RGB into OKLCH and OKHSL . From that we get the original lightness L, chroma C and hue H as well as the saturation S relative to what sRGB can display at that lightness. Once the polynomial is evaluated against the lightness of the background. The resulting lightness is then not used as a direct replacement, but converted into an OKHSL lightness and a new color is computed using the original hue and adjusted saturation. A bell shaped saturation curve is applied. Strongest at the middle lightness and weaker towards black and white. Finally that is converted to OKLCH and Pi limits the original chroma so that H stays the same, L comes from the contrast rules and C becomes what the adjusted OKHSL produces. This is so that a pale pink for instance, when moved towards a darker shade, might otherwise make it too vivid. The adjustment ensures that it can never be more colorful than the original color.

Hue & chroma

Pi keeps the hue of your palette colors as it is. Chroma is trickier. The weird shape of OKLCH shows how much chroma a screen can display, which depends on both hue and lightness. At a lightness of 0.9, the most colorful yellow a screen can show has a chroma of about 0.2, while the most colorful blue only reaches about 0.05. So when Pi moves a palette color to the lightness it needs, its chroma might not exist at that lightness, and mapping it back to a displayable color can change the lightness Pi just calculated.

That's why Pi builds its colors in OKHSL. OKHSL is built on the same foundation as OKLCH and uses the same hues, but it stretches the weird shape back into a cylinder. Its saturation goes from 0% to 100%, where 100% always means "the most colorful this hue can be at this lightness". It tries to keep the best of both worlds: it stays as close to human perception as it can, while bringing back the simple geometry that makes RGB based color spaces easy to work with. Every combination of hue, saturation and lightness is a color your screen can display, which makes it a good fit for generating themes and palettes in general. Pi also lets saturation fall off toward black and white, so that very dark and very light colors, like a panel only slightly lighter than the background, get a hint of color rather than a bright block.

But keeping the saturation the same doesn't keep a color equally colorful. Since saturation is relative to what the screen can display, the same percentage can mean very different amounts of chroma at different lightnesses. Shortly after the release, a bug report showed that Pi looked much more vivid than the terminal with Catppuccin Frappé. Catppuccin's pink, #f4b8e4 , has an OKHSL saturation of 84%, but that is 84% of the little chroma a screen can show at such a high lightness. Pi's accent needs to be darker to be readable, and since the shape is much wider there, 84% saturation becomes #eb76d1 , with about twice the chroma of the original pink. The fix was to also cap the chroma: a palette color can move to a different lightness, but it can never become more colorful than it is in your palette. With the cap, the accent becomes #cc92bd , which looks like Catppuccin again.

So in the end, the chroma of a palette color is limited three times: by what your screen can display, through OKHSL; by the falloff toward black and white; and by the chroma it has in your palette.

The two views below separate the color space from what Pi does inside it. OKHSL's cylinder stays fixed. Pi's range depends on the source color and the family of the UI role: the source's saturation applies at its own lightness, and the falloff is relative to that point. Moving toward the middle never raises the saturation above the source's. Different families use different falloffs; a yellow warning and a violet accent do not use the same curve.

OKHSL color space

The full OKHSL cylinder: lightness from black at the bottom to white at the top, saturation from gray at the center outward, and hue around. It is cut open at the source's hue.

The sRGB OKHSL cylinder, cut open at the source's hue.

What Pi makes from a palette color

Pi's output range for one ANSI color of a terminal theme and the role that uses it, as a colored hue slice inside the cylinder's outline. Its outer edge follows the anchored saturation falloff and source-chroma cap, and passes through the source itself at its own lightness. Its interior shows outputs at lower saturation settings. Without a terminal palette, Pi uses the family's own hue and saturation curve instead.

Every color Pi can make from the source, at its hue.

Pick a color to check whether Pi can make it from the source, here or in the terminal above. The dot is the source; squares are the colors Pi uses in this theme. Drag either view to rotate both.

The result

Pi asks the terminal for its foreground, background and ANSI colors on startup, and rebuilds the theme when the terminal switches between light and dark. If a terminal only reports its background, Pi uses its own hues. If it reports nothing, Pi falls back to the ANSI colors and lets the terminal draw them. The generated colors keep the hues of your terminal, but their lightness is adjusted to a similar contrast. Gruvbox's dark red becomes a lot lighter, Catppuccin Latte's red a little darker, and Nord's colors barely move.

If you haven't picked a theme, you are already using the system theme. Otherwise, you can switch to it in /settings under Theme. If your terminal theme looks off in Pi, please open an issue with the name of the theme.

The survey

All numbers in this post that relate to contrast are estimates of how the average person sees contrast, as determined by existing contrast perception algorithms. But there is no open data set that really tells us the story. We are working on our own open source contrast algorithm, and for that we would love to see how real people perceive contrast on real screens.

The survey takes about 3 minutes to complete, and at the end we'll show you how your answers compare to others who took the survey.

We would love for you to take it. You can find it at contrastsurvey.earendil.com , and if you participate in it, we'll use your answers to train a contrast algorithm.

Headlines for October 9, 2026

Democracy Now!
www.democracynow.org
2026-10-09 08:00:00
Protests Erupt in New York After ICE Agent Shoots and Wounds Man, Video Shows Bystanders Attempting to Intervene in Violent ICE Arrest in New Jersey, Family Seeks Damages from U.S. over ICE Killing of Silverio Villegas González, USS Abraham Lincoln Arrives in San Diego After Arduous Deployment in Su...
Original Article

Headlines October 09, 2026

Watch Headlines

Protests Erupt in New York After ICE Agent Shoots and Wounds Man

Oct 09, 2026

Protests erupted in New York City on Thursday, after a federal immigration agent shot and wounded a man in the Marble Hill neighborhood of northern Manhattan. Seven shots rang out in quick succession just after 4 p.m. on a crowded street as people walked home from work or accompanied their children home from school. Twenty-eight-year-old Oscar Belgal was struck in the neck. His 5-year-old child, who was in the back seat, was physically unharmed. Belgal was taken to a local hospital, where hundreds of protesters soon gathered to demand his release, chanting ” ICE off our streets now!” and “We want justice!” New York police arrested four people and assaulted many others, including congressional candidate Darializa Avila Chevalier, who was knocked to the ground. Mayor Zohran Mamdani said he called President Trump and Homeland Security Secretary Markwayne Mullin to negotiate Belgal’s release but was rebuffed. Mamdani expressed outrage over the shooting and repeated his call to abolish ICE .

Mayor Zohran Mamdani : ” ICE undermines public safety. It makes us less safe. New York City will not stand by while ICE agents shoot New Yorkers, and we will not back down from the demand that so many, including myself, have put forward time and again. This is an agency that must be abolished.”

This comes after the Trump administration ordered immigration agents to increase their daily arrest total to 3,000 arrests — up from 2,000 per day — through the midterm elections. After headlines, we’ll speak with Democratic congressional candidate Darializa Avila Chevalier and City Councilmember Carmen De La Rosa.

Video Shows Bystanders Attempting to Intervene in Violent ICE Arrest in New Jersey

Oct 09, 2026

In Harrison, New Jersey, there’s growing outrage over the violent detention of a man by masked federal immigration agents in a chaotic scene that was caught on video. Footage of Wednesday’s incident shows a woman holding a baby and a young boy trying to hold onto a handcuffed man as federal agents attempt to push him into an unmarked SUV . Another child collapses to the pavement, wailing, as bystanders attempt to intervene, shouting “It’s a kid!” and “She’s got a baby!”

Bystander : “Come on, y’all! It’s kids! She’s got a baby! Relax. Papi, no! Papi! Come here, papi! No, papi! Come on, papi! You’ve got to let him go! Papi, you’ve got to let him go! Baby, please! Please! Please! Please!”

Some agents in the video wore masks despite a New Jersey law banning law enforcement officers from covering their faces, in most cases.

Family Seeks Damages from U.S. over ICE Killing of Silverio Villegas González

Oct 09, 2026

In Chicago, the family of Silverio Villegas González has filed a formal complaint against the Trump administration, seeking damages for what they’re calling the “execution-style killing” of the 38-year-old Mexican father of two. Villegas González was killed by ICE agents in September 2025 in a Chicago suburb during Operation Midway Blitz. He was unarmed and had no criminal record.

In a statement, the Villegas family wrote, “The administration has tried to justify his death by smearing his good name with lies and false narratives, but here is the truth: After Silverio was shot, two innocent children were left without their father, and we were left without a brother and son. We are united by the same pain that every family who has been impacted by this inhumane immigration system faces.”

USS Abraham Lincoln Arrives in San Diego After Arduous Deployment in Support of Iran War

Oct 09, 2026

The USS Abraham Lincoln aircraft carrier has finally returned to San Diego after an unprecedented 265 consecutive days at sea. During the extended deployment, there were at least eight suicide attempts amid reports of deteriorating troop morale linked to poor conditions, food shortages and contaminated water. The Navy faced difficulty restocking the ship after Iran blew up a key Navy logistics hub at a base in Bahrain in February, which forced the Navy to relocate its regional logistics and supply hub over 2,000 miles away to Diego Garcia in the Indian Ocean.

In related news, a new congressional report reveals at least 81 U.S. military aircraft and drones have been damaged or destroyed since the U.S. launched its war against Iran.

Michigan Senate Candidates Clash over Trump’s Wars, U.S. Support for Israel in First Debate

Oct 09, 2026

Image Credit: USA Today Network

In Michigan, Democratic Senate candidate Dr. Abdul El-Sayed faced off against former Republican Congressman Mike Rogers in their first debate Thursday evening. Dr. El-Sayed criticized Rogers’s support for foreign wars.

Dr. Abdul El-Sayed : “I’ve got a guy to my left over here who thinks that the best use of our money is to go fight wars abroad. What has that given us? It’s part of the reason why while he was in Congress, $12 trillion, the national debt blew up, because he’s never seen a war he didn’t want us fighting. So, I don’t consider an ally a country that takes us to wars we don’t need to fight, and I don’t want to be fighting wars we don’t need to fight.”

During the debate, Mike Rogers defended the tens of millions of dollars spent by AIPAC and other pro-Israel groups in support of his campaign. He also defended his staunch support for Israel.

Mike Rogers : “I support, just staunchly, their right to exist, the right to exist for the Jewish state, and the right to defend itself in a very difficult neighborhood.”

Rick Albin : “Got 10 seconds. Is there anything Israel could do that would lose your support?”

Mike Rogers : “Listen, if they’re talking about using nuclear weapons, I would — they would definitely lose my support.”

Rick Albin : “All right. Thank you very much.”

Mike Rogers : “I’ve never heard them say that, though.”

Ukraine Says Russian Attacks Killed 78 Civilians in Two Days

Oct 09, 2026

In Ukraine, the death toll from Russian attacks over the past two days has climbed to 78, after a bomb tore through two buses Thursday in the Ukrainian city of Kramatorsk near the frontlines. The attack left debris and body parts littered across a road. In response, Ukrainian President Volodymyr Zelensky criticized the Trump administration for pursuing economic ties with Russia — while also serving as a mediator in efforts to end the war.

DOJ Seeks Charges Against Former White House Aide and Jan. 6 Whistleblower Cassidy Hutchinson

Oct 09, 2026

The Justice Department’s Civil Rights Division has convened a federal grand jury as it seeks a criminal indictment of Cassidy Hutchinson, the former White House aide who was a key witness to the House committee investigating the January 6, 2021, attack on the U.S. Capitol. In 2022, Cassidy testified that President Trump knew attendees to his rally outside the White House on January 6 were armed with assault rifles, handguns, knives and mace, but ordered the Secret Service to remove security magnetometers, or “mags,” from the rally.

Cassidy Hutchinson : “I was in the vicinity of a conversation where I overheard the president say something to the effect of, you know, 'I don't effing care that they have weapons. They’re not here to hurt me. Take the effing mags away. Let my people in. They can march to the Capitol from here.’”

Kimberly Guilfoyle Asked MAGA Donor to Pay $100K Credit Card Bill, Promising Access to “Trump World”

Oct 09, 2026

House Democrats are calling for a probe into an alleged pay-to-play scheme involving Kimberly Guilfoyle, the U.S. ambassador to Greece. The Wall Street Journal reports Guilfoyle requested a Republican donor named Eric Deters to give her $100,000 just days before her confirmation hearing. Guilfoyle wrote to Deters, “You could just send it here. It won’t show up anywhere if you wire money to American Express. Please.” Deters spoke to ABC News on Thursday.

Eric Deters : “She was so desperate for me to send that $100,000, she said, 'If you do this for me,' — and it’s in the text messages — 'I will be your ride or die in Trump World.'”

Guilfoyle is the former fiancée of Donald Trump Jr.

In related news, The Wall Street Journal reports Guilfoyle got into a heated argument in March with Greece’s energy minister. Guilfoyle referred to the impending collapse of the Romanian government and then said, “We can do that to any country we want. We can do that here.”

Pentagon Plans to Live-Stream First U.S. Public Execution Since 1936

Oct 09, 2026

In an unprecedented move, the U.S. military will live-stream the execution of former Army psychiatrist Nidal Hasan, the gunman who killed 13 people at the Fort Hood military base in 2009. He is set to be killed by firing squad on December 3. Defense Secretary Pete Hegseth discussed the plan on the far-right Real America’s Voice News channel.

Defense Secretary Pete Hegseth : “It was a radical Islamist attack in uniform inside the ranks, and so he’s going to get a firing squad of soldiers, as it should be. And we’ll make sure that people are able to watch it, that it’s public, because people need to understand that this is — there’s serious consequences for these types of things.”

The execution of Nidal Hasan is set to become the first public execution in the United States since 1936, when some 20,000 people in Owensboro, Kentucky, watched a young Black man hanged after he was convicted of raping a white woman.

Former Student Who Alleged Gang Rape at Cornell Fraternity Faces Violent Threats

Oct 09, 2026

The former student who sued Cornell University alleging she was gang-raped by seven male students at the Chi Phi fraternity house when she was 20 years old has reportedly gone into hiding in her parents’ home after receiving death threats. Lawyers for the woman, known only as “Jane Doe,” described her deteriorating mental state to CNN after an escalating series of violent threats. That included a so-called swatting episode in which heavily armed police officers showed up at her family home, guns drawn, on a bogus tip that people had been killed inside.

Thursday was a national day of action in solidarity with Jane Doe and against impunity for sexual abusers, with high schoolers, college students and advocates holding walkouts, rallies and vigils in at least 40 states. Later in the broadcast, we’ll hear from protesters at Columbia University and Barnard College.

Arizona Congressional Candidate Bernadette Greene-Placentia Says She Was Raped

Oct 09, 2026

In Arizona, Democratic congressional candidate Bernadette Greene-Placentia says she was assaulted and raped by two men in August as she attempted to repair a damaged campaign sign late at night. Greene-Placentia believes the attack may have been politically motivated. She reported the alleged assault to the Maricopa County Sheriff’s Office two weeks later, saying she was hit from behind and knocked unconscious, before waking up to two men sexually assaulting her. She says she does not have a clear memory of the assault, during which she may have suffered a concussion, but she recalls one of the attackers calling her a “Democratic b––.” Greene-Placentia said she decided to come forward to give a voice to other survivors.

Trump Bought Millions of Dollars of SpaceX Bonds Days Before Space Policy Order

Oct 09, 2026

President Trump’s newly released financial disclosure shows that he purchased as much as $5 million in SpaceX bonds shortly before he signed a new space policy that could benefit Elon Musk and his company. In total, Trump bought up to $250 million in stocks in August, including an investment of up to $25 million in Meta, the parent company of Facebook. Such stock trading by a sitting president is unprecedented. ABC recently reported Trump made 21,000 securities trades during his first year back in office. By contrast, Joe Biden made a total of 13 trades during his entire term. In related news, on Thursday, Trump honored SpaceX founder Elon Musk and other tech executives at a White House science summit.

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.

Reverse Engineer Anything

Lobsters
github.com
2026-10-09 07:53:52
One of the few positive side effects of the grand theft that is AI is that proprietary software will now become technically unviable. Comments...
Original Article

See a feature in an app that you want in your own product? Ask your agent to investigate it with REA. It can inspect the app without its source code, explain how the feature works, show the evidence, and build a version for your project.

REA connects your agent to tools for inspecting native binaries, JavaScript and Electron apps, .NET assemblies, and websites. You can also use the same tools from your terminal. Analysis runs locally, and results include the evidence and limitations behind each conclusion.

Setup registers REA with your agent and installs matching workflow instructions. Native analysis can use an existing Hopper or Ghidra installation; setup can optionally install Hopper with approval. Static JavaScript analysis needs neither engine.

Visit the REA website for setup instructions, illustrated guides, and real case studies.

Quick start

Set up your agent

With Node.js and npm installed, run:

Choose your agents, review the proposed changes, and approve them. Setup adds REA's MCP server and matching workflow instructions, with backups of existing configuration. Restart your agent afterward.

Setup supports Claude Code, Codex, Cursor, Gemini CLI, Grok Build and other agents . See installation and setup for provider configuration and manual MCP registration.

Ask your agent

Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.

Replace Notes with your target app and the feature you want to understand.

Use the terminal

Inspect an extracted JavaScript/Electron app directory or ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

The result includes modules, imports, Electron boundaries and their evidence. Replace the path with your target, such as "D:/apps/example" on Windows.

To install the rea command for regular use:

npm install --global rea-agents
rea --help

For native analysis, configure a provider first. See the CLI and Evidence guide for native commands, provider selection, snapshots and scripting.

Update REA

REA changes quickly, and new releases include frequent bug fixes. Keep your installation up to date.

For an npm-installed CLI:

To refresh your agent registrations and skill, run the setup command printed by the update.

If you use npx , update your agent setup with:

npx rea-agents@latest setup

Review the setup changes and restart your agent. For one-off CLI commands, use npx rea-agents@latest followed by the command.

How REA works

Your agent calls REA through MCP to inspect the target and trace relevant code. REA returns findings with their evidence. The agent uses them to ask follow-up questions, explain the behavior, or write and test an implementation. CLI commands use the same workflows.

REA investigation flow: your agent asks about a local target, REA inspects and traces it using analysis tools, and the agent uses the returned code, references and unknowns to explain, implement and test.

Open the full-size figure .

What you can analyze

REA requires Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+, plus npm. Additional tools and host support depend on the target:

Target What REA returns Requirements and guide
Native binaries Pseudocode, assembly, strings, symbols, calls and references Hopper, Ghidra or IDA; native analysis
Offline ELF layout Sections, segments, original symbols/relocations and static mitigation candidates Caller-supplied pwntools on Linux x64; binary diagnostics
EVM bytecode Dispatch selectors, byte offsets, inferred arguments and mutability Local raw/hex carrier; offline EVM guide
Recorded Linux crashes Raw notes, every recorded thread's registers/signals and optional mapping candidates Caller-supplied pwntools; optional GDB/pwndbg; recorded crashes
JavaScript / Electron Modules, imports, source maps, routes, IPC and native add-on relationships Node.js and npm; application analysis
Websites Page structure, scripts, network observations and requested screenshots A Chrome-family browser; browser analysis
Saved network captures Requests, responses, exposed payloads and source locations HAR; mitmdump on Linux for native mitmproxy captures; capture guide
.NET assemblies Metadata, CIL instructions, declared native dependencies and build comparisons Static inspection; managed-code guide
Android APKs Manifest declarations, classes, decompiled methods and references Headless JADX and a full JDK on Linux/macOS; Android guide
Firmware Regions, extraction results and native-analysis handoffs Binwalk / Unblob on Linux; firmware guide
Packages and resources File inventories, digests, plists, Apple bundle anatomy and extracted resources Artifact and JavaScript guide , Apple applications
Process behavior Terminal output, interactions, exit and filesystem observations, and run comparisons Linux/macOS with a native PTY; process capture

Static JavaScript and .NET inspection read the supplied files without running the application. Runtime capture runs or interacts with the selected target using your user permissions; each runtime guide describes its effects.

Native formats and host support vary by provider. See Hopper and Ghidra setup , the IDA guide , and experimental Windows Ghidra support . Ghidra also supports 16-bit DOS analysis . For large binaries, raise its startup deadline with REA_GHIDRA_STARTUP_TIMEOUT_MS . For provider selection, see the CLI guide . Check release availability for features added since the latest npm release.

Showcases

DX-Ball: reconstruct a sound-pan calculation

Follow a sound call into its position-to-pan helper, inspect the instructions, and turn incomplete pseudocode into C. The reconstruction passes 3,205 original-x86 cases and reproduces all 63 compiled function bytes.

Read the case study · Reconstruction repository

Notion: trace the Electron clipboard bridge

Find the renderer's clipboard API, follow it through preload and IPC into the main process, and inspect the rich clipboard format.

Read the case study

TH04: recover a DOS bullet-ring calculation

Inspect the original PC-98 game's 16-bit instructions, recover the fixed and aimed angle calculations, and compare the reconstructed C++ with the historical compiler output.

Read the case study · Reconstruction repository

If you've used REA on something interesting, we'd love to see it. Share your case in an issue or a pull request , including the target, your question, how REA helped, and what you found.

FAQ

Which agents can use REA?

Any agent that supports local MCP servers. Setup configures the supported agents ; other clients can use manual MCP registration .

Do I need Hopper, Ghidra or IDA?

Deep native analysis uses one of them. Static JavaScript and .NET inspection work without a native analysis engine. Setup can install Hopper after approval; Ghidra and IDA use your existing installations. See provider setup .

Do I need to start Hopper first?

REA starts Hopper when an operation needs it. On macOS, a first-run dialog may ask you to choose demo mode or activate your license. See Hopper startup and troubleshooting .

What does installing the skill from skills.sh do?

The skill supplies investigation instructions for your agent. Use rea setup to register REA's MCP server and install the matching instructions, then restart your agent. See skill-only installation .

What code does REA return?

Native analysis returns pseudocode and assembly. JavaScript/Electron analysis recovers modules and their relationships. Your agent uses these findings to write and test an implementation; the showcases give worked examples.

Does REA upload my app?

REA analyzes targets locally. Your agent receives the tool results, and its model provider has its own data policy.

What should I do if I hit a bug?

Update first; a recent release may already fix it.

For an npm-installed CLI:

For agent setup through npx :

npx rea-agents@latest setup

If you're using an agent, complete the setup refresh and restart it. Retry the same task. If the problem persists, open an issue with your REA version, target type, steps to reproduce and error output.

Documentation

Start with the website's worked guides . For exact options, prerequisites and result contracts:

Report vulnerabilities through SECURITY.md .

Contributing

We'd love your help with REA! Open an issue to report a bug or suggest a feature, or send a pull request to improve the code or docs.

See CONTRIBUTING.md for development setup and checks, testing for verification lanes, and the architecture map for the project structure.

Project links

Website · npm · skills.sh · Issues · Security

Star history

🎉 30,000 GitHub stars — thank you!

Thanks to everyone using REA, reporting bugs, requesting features, testing builds, and contributing fixes.

REA GitHub star history

Disclaimer

REA provides tools for lawful reverse-engineering research, analysis, and reconstruction. You are responsible for obtaining any required authorization and complying with applicable laws. The project does not endorse illegal or unauthorized use.

REA is an open-source software project. We have not issued or endorsed any cryptocurrency or token. Tokens using the REA name are not affiliated with the project.

License

MIT

US proposes $100k charge for international students to do post-graduate work

Hacker News
www.nature.com
2026-10-09 07:40:30
Comments...
Original Article
Students walk toward a large columned library building on a tree-lined university campus

Universities in the United States would have to pay as much as US$100,000 for one of their graduates to work at a US job after their education under a new federal proposal. Credit: Getty

International students in the United States would face a US$100,000 price tag to work a science job in the country after graduation under a proposal made public yesterday by the administration of US President Donald Trump.

The proposed rule would require academic institutions to foot the bill for a work programme called optional practical training (OPT), which allows overseas students to work in the United States for up to 3 years after finishing an undergraduate or graduate degree.

Some 420,000, or roughly one-third, of international students participated in OPT in the 2025–26 academic year, making it the largest pipeline of global talent into the US workforce.

The US Department of Homeland Security (DHS), which issued the proposed rule, stated that it is meant to “combat fraud, strengthen the integrity of the immigration system, and protect U.S. workers”. The DHS projected that if the rule were finalized, OPT enrollment would drop by as much as 44% and universities would pay between $8.4 and $16.5 billion annually.

An analysis 1 of the rule’s effects on OPT enrollment by Michael Clemens, an economist at the Johns Hopkins School of Government & Policy in Washington DC, projects that the number of students who enroll after a bachelor’s degree would be halved, and that enrollment by those with master’s degrees would be virtually eliminated. Clemens also noted that OPT is especially important for international PhD graduates in science, technology, engineering and mathematics (STEM) fields, drawing roughly 70 percent of them in 2022.

The proposed rule is the latest in a series of Trump administration attempts to restrict immigration, which have already limited the country’s ability to recruit scientific talent. In 2025, for example, Trump announced a $100,000 levy on a visa reserved for researchers and other highly skilled foreign workers . As a result, new applications for those visas plummeted by 90%, according to the US Citizenship and Immigration Services.

If the new proposal and related restrictions are implemented, the combined measures “will obliterate the pipeline” of talent, says Clemens. In a separate analysis commissioned by the US National Academies of Science, he and his colleagues found that the size of the entire US STEM workforce would drop by 6–11% over a decade if all the administration’s proposals were implemented.

A spokesperson for the DHS said that the $100,000 charge “would strengthen program oversight while addressing concerns of fraud and abuse”, but did not respond to questions about the impact to the international STEM talent pipeline.

High cost

The OPT programme has expanded dramatically over the past decade, as international students have taken advantage of it to work at top tech companies such as Google and Amazon. Last year the number of recent graduates enrolled rose by 14%, even as the number of new international students dropped, notes Violet Buxton-Walsh, an immigration policy researcher at the Institute for Progress, a non-profit think tank in Washington DC. Despite restrictions on immigrants, “[t]here are very few who have better options than staying in the U.S.,” she says.

The administration’s proposal, first reported by the Wall Street Journal , would require graduates to pay a $70,000 charge for their first year of OPT; STEM graduates would pay an additional $30,000 for a two-year extension.

Without the lure of OPT, the number of international students in the United States is likely to drop sharply, multiple scholars told Nature . As a result, Clemens projects that US colleges and universities could lose a combined $2.5 to 4.2 billion each year in tuition and other revenue.

Ina Ganguli, an economist of science and innovation at the University of Massachusetts Amherst, says the impact goes beyond numbers and finances. “It will change the type of students who are going to come to the US”, she says, because top prospects have the freedom to look elsewhere.

The making of a very fast SPI flasher

Lobsters
localcc.cc
2026-10-09 07:39:36
Comments...
Original Article

Intro

I’ve recently taken up an interest in old console modding, so I decided to take my favorite console, the Xbox 360, and make the ultimate modchip for it. The idea of the modchip is two-fold, one of the main things it should do is have the ability to switch NANDs on the console, to be able to boot both the development OS and the retail version. This is simple enough to do, just add a transistor between the CE pins of the original chip and the second one, and you’re done. But there’s also another thing I would like it to do, that is flashing the actual NAND chips without having an external flasher, which is also the most interesting part of this project.

Flashing protocol

Naturally, the first step to flash anything is to identify which protocol it speaks, and how to properly use it. Thankfully this part has been figured out for quite a long time on the Xbox 360 as the modding scene is very mature. The console must have some way to apply firmware updates right? That’s the job of the SMC controller which communicates with the flash chip. The communication commands are also well known from reverse engineering the kernel. But how would we be able to communicate over those lines? Fortunately the console also needs to be flashed at the factory and conveniently the SMC exposes the SPI protocol on an unpopulated debug header on the board that we can solder to.

Now that we know where to send the data, let’s see what do we actually need to send in order for the SMC to understand us. The commands themselves effectively just read/write registers on the SMC so their format is quite simple:

  • The read register command is [u8(regnum), u8(0xff), u32_be(0x00)] where the last 0x00 u32 is used to drive the SPI bus so that we can read the response on the MISO SPI pin
  • The write register command is [u8(regnum), u32_be(value)]

Knowing the SMC communication protocol, we can derive an algorithm for flashing the NAND chip:

  • Switch the console into debug mode by toggling the RST_XDK pin to stop the SMC
  • Get the NAND flash config to know the block size for erasing
  • Send erase commands every N blocks
  • Send write+commit commands for each block

Who needs the SPI peripheral?

There are a couple ways of actually implementing the algorithm. The RP2040 integrates an SPI peripheral that we could use for communication; this however takes away some flexibility of the GPIO pins we could choose for outputs. So, there’s a second solution which is unique to the RP2xxx series of MCUs: the PIO peripheral. This peripheral is effectively a very constrained programmable I/O state machine that we can execute arbitrary code on. Sounds very interesting to mess around with and could potentially result in great performance and efficiency gains, let’s mess around with that!

The PIO peripheral on the RP2040 consists of 2 PIO blocks which themselves contain 4 state machines inside of them. Each PIO block has 32 instruction slots with fixed-length instruction encoding, this should be enough for everything we want to do. The PIOs also have a hidden trick up their sleeve, where you can stream instructions to them in the same stream as you do data. This could really help with extending the execution capacity if done right, we will not be using this, but it’s a very neat feature that’s worth mentioning.

Implementing basic SPI communication is trivial using PIOs, as the protocol itself is very simple: write a bit on the rising edge of the clock and read the data back on the falling edge. Optimizing this for fast block reading and writing is a more interesting challenge. This could be solved by creating a large number of buffer commands with the data we want to write, but that would be more expensive in terms of RAM usage, and in this scenario I wanted to go all in on speed and efficiency.

In this project I will be taking a very unexpected inspiration from modern graphics APIs, specifically command buffers and recording them, as we face the same issue here: figuring out what to do (what to write to which registers) is slower than actually doing it. As an additional benefit of doing command buffer-style communication quite a bit of RAM is saved due to padding bytes not being required. Padding would instead be synthesized on the fly, by the PIO state machine.

PIO commands

NAND R/W operations through the SMC require writing two registers; the first one for specifying the operation done, and the second one for committing it and optionally reading the response back. As a result of this, the algorithm that the PIOs would need to implement is as follows:

  • Write the first register index
  • Write the first register value
  • Write the second register index
  • If reading: output read marker and drive the SPI for the next 4 bytes streaming data in
  • If writing: write the second register’s value

We could then construct a struct, which will be provided from the CPU:

struct LbaCommand {
  first_reg: u8,
  first_reg_value: Unalign<u32>,
  second_reg: u8,
  output_read_marker: u8,
  second_reg_value: Option<u32>,
}

When implementing this algorithm and looking at the data actually being written to the SMC I noticed that the upper 24-bits of the second register are always 0 . This is because it stores a boolean value, we could make an optimization that turns it into a u8 , then pads the remaining space with zeroes on the state machine, saving us 1.5KiB per block.

Why not synthesize everything except for the actual block data on the PIOs? Ideally we would do this, but we quickly hit the 32 instruction slots limit per PIO block. We briefly explored doing ping-pong between two PIO blocks with IRQs effectively extending the instruction slots to 64. Unfortunately this feature is only available on the RP2350 which requires a more complicated power circuitry setup while not giving us any speed improvement deeming it unnecessary.

How rust helps!

As a result of shifting block writing to the PIOs, the writes will go through two different peripherals that cannot be active at the same time due to GPIO conflicts where the same pins are used. One obvious solution which could be used in a lot of other programming languages is to have a function that switches the internal state. The state change then affects how certain functions work:

impl SpiexState {
  fn switch_mode(&mut self, to: SpiexMode) { ... }
  fn read_reg(&mut self, reg: u8) -> Result<u32> {
    if !self.is_spi() {
      return Err(...);
    }
    ...
  }
  fn read_lba(&mut self, data: &mut [u8; LBA_SIZE]) -> Result<()> {
    if !self.is_lba() {
      return Err(...);
    }
    ...
  }
}

This technique prevents the flasher from communicating when it shouldn’t, it does not prevent the programmer from introducing a bug where the flasher doesn’t work. Solving this can be done with type-state programming. After all, the second best time to catch errors is at compile time. To do this, the communication struct will have a generic that’s used to expose only the functions that are allowed to be called in the current mode:

impl SpiexState<SpiMode> {
  fn read_reg(&mut self, reg: u8) -> u32 { ... }
  fn write_reg(&mut self, reg: u8, value: u32) { ... }
  fn into_lba(self) -> SpiexState<LbaMode> {
    self.spi.disable();
    self.pio.enable();
    SpiexState { ... }
  }
}

impl SpiexState<LbaMode> {
  fn read_lba(&mut self, data: &mut [u8; LBA_SIZE]) { ... }
  fn write_lba(&mut self, data: &mut LbaWriteData) { ... }
  fn into_spi(self) -> SpiexState<SpiMode> {
    self.pio.disable();
    self.spi.enable();
    SpiexState { ... }
  }
}

This will ensure that users of the API will never call a function that’s invalid for the currently enabled mode, and will not introduce any unnecessary runtime checks that would increase code size.

USB peripheral

Having figured out Xbox communication, we shift focus onto communication with the computer that the flasher is connected to. This would of course be done using the USB protocol as its the most versatile and available one for external devices. And here’s where we hit our first problem, the NAND chip is typically 16MiB, but the RP2040 can only reach USB 2.0 FS speeds (12 Mbit/s) theoretically, in practice it’s usually more like ~9 Mbit/s due to USB overhead. This is our primary bottleneck and ideally we would reduce its effect as much as possible.

Besides just being fast, the communication protocol has to be resilient to host failures or intermittent USB cable disconnection, as well as being flexible enough to transfer arbitrary structs as commands. Something like this already exists if you are in an std environment: tokio_util::codec , this is quite a nice solution for command transfers as it does packet delimiting as well as serialization all in one nice to use package. Yet another issue that this solution solves for us is USB packet size limits. When doing USB FS communication you can only send 64-byte packets, and if your data is larger than that you would have to read it in until you have received the full data frame.

Verbatim implementations of this are of course not going to be performant on embedded for at least one reason: dynamic memory allocation. This introduces much unpredictability into an embedded system and is usually not advisable on low-power MCUs. Thankfully in our case we already know all packet sizes ahead of time, so we can reserve a fixed-size stack buffer for received data and use that without having to worry about resizing, our packet sizes are also small enough to always fully fit in memory allowing the buffers to be constant size.

Why is it slow?

Running this however, we see quite disappointing results:

Writing took 53002221us (53s)

With the expectation of write times being somewhere between 35-40 seconds, this seems very strange. What could be going wrong? Profiling embedded applications is usually quite a bad experience, state of the art tools are unwieldy and getting them to work on hardware that they don’t explicitly support feels like a sisyphean task. Can we do something better?

Of course! Because I do quite a lot of performance profiling for game engines, I am quite familiar with the Tracy frame profiler, which is a nanosecond precision profiler. Our goal is conceptually simple, monitor async task execution times and display them to the developer for further analysis. We will be querying the embassy executor, conveniently it already provides hooks for tracing task execution:

#[unsafe(no_mangle)]
unsafe extern "Rust" fn _embassy_trace_task_exec_begin(executor_id: u32, task_id: u32) {
  let time_ticks = Instant::now().as_ticks()

  write_event(Event {
    ty: EventType::TaskExecBegin {
      executor_id,
      id: task_id,
    },
    time_ticks,
  });
}

#[unsafe(no_mangle)]
unsafe extern "Rust" fn _embassy_trace_task_exec_end(executor_id: u32, task_id: u32) {
  let time_ticks = Instant::now().as_ticks();

  write_event(Event {
    ty: EventType::TaskExecEnd {
      executor_id,
      id: task_id,
    },
    time_ticks,
  });
}

Getting this data off device and into tracy will take some care as we can’t just send it over the same USB bus. It’s critical we keep overhead minimal while doing so. Serial was chosen as a simple initial method of transfer until there is data showing that it became a bottleneck. The profiler itself should not take up more hardware resources than it needs. Running it on a different core to isolate from the executor is not an option. Another downside, is that we lose the ability to, somewhat tautologically, profile the profiler. Our best bet is to run the profiler as an async task. Traces can also come in before the task is started, as well as coming in faster than the task has a chance to run.

Buffering will solve both of those issues as long as we can guarantee that the send task is executed at some regular rate to not lose profiling data. A ringbuffer is a perfect candidate for the backing structure allowing us to read and write data without having to reorder it in memory.

Ensuring that the task runs at a certain time interval is challenging in a cooperative environment, but we only need to guarantee that the task runs at least once between other tasks, regardless of when this actually happens in time. This is because trace events, and therefore, writes to the buffer, are only produced when scheduling happens, which in turn only happens when tasks are switching states. Fortunately the embassy executor is fair, guaranteeing that the data sending task will have a chance to run.

After transferring the data to the host and importing it into tracy, it’s quite easy to spot the fact that the USB processing task is taking up quite a bit of time: first tracy dump

What could be going wrong? After adding some more trace logging into the USB processing function, it was quickly apparent that we are leaving quite a bit of performance on the table. Why? Trying to send data without serialization resulted in much better performance. The cost of serialization, while not too high for individual writes, accumulates into quite a big performance penalty over 32k blocks and therefore needs to be eliminated. This is quite an easy task as we can just get the underlying codec data stream, that doesn’t apply serialization to structs, and use that as “downgrade” infrastructure to transfer blocks much faster.

Why not downgrade to before the codec is even applied? We still have to be resilient to host application failures and the codec infrastructure lets us achieve this goal. After applying this optimization, we can see a very big decrease in write times down to 41(!) seconds:

Writing took 41001208us (41s)

And the profiling timings are much nicer! first optimization pass results

Run from ram!

But that’s not all the optimizations that we can apply here, the RP2040 chip doesn’t have an internal ROM for code storage and instead uses an external QSPI connected flash chip for storing code. This, of course, comes with a performance penalty especially for larger code that’s frequently executing. In the C++ SDK there is an option to put individual functions into RAM, but the Rust SDK doesn’t offer us such flexibility currently. Not all is lost however, the full size of our binary fits into the Pico’s RAM allowing the code to be linked in a way that can be copied to RAM and then executed. This is achieved with a linker script which links our code to expect execution in the RAM address space rather than external flash. It’s quite easy to derive it from the original linker script. We need to tell the linker to expect the section to be positioned at an address in RAM, while still being put into flash memory as we still need to copy it from there:

- } > FLASH
+ } > RAM AT > FLASH

We still need to copy the data from flash, but how would we do that if all code that we write expects to execute from RAM already? The boot process of the RP2040 goes as follows:

first stage bootloader (burned into the MCU)
                 |
                 | jumps to
                \|/
second stage bootloader (BOOT2, flashed to the external QSPI flash)
                 |
                 | jumps to
                \|/
flash/RAM depending on the implementation

We can use the second-stage bootloader to do exactly this! While the space for the bootloader is small (only 256 bytes), this is plenty of space however as the only things that the bootloader really needs to do is to just start at the beginning of the flash section and copy over the sizeof(RAM) amount of bytes to RAM, then jump to the first instruction in RAM. Bootloader pseudocode:

/// Memory layout of the RP2040
///
/// -------------------- 0x10000000 (FLASH)
/// |       BOOT2      |
/// -------------------- 0x10000100
/// |   vector table   |
/// |                  |
/// |       CODE       |
/// -------------------- 0x101F4000
///
/// ----------- 0x20000000
/// |   RAM   |
/// ----------- 0x20040740
let size = 0x20040740 - 0x20000000;
for i in 0..size {
  let dst = 0x20000000 + i;
  let src = 0x10000100 + i;
  *dst = *src;
}
ram_vector_table[0]();

There’s quite a nice implementation of the stage2 bootloader that already does what we need in the rp2040-boot2 repo . Using that and the derived linker script, we see even better performance:

Writing took 34005689us (34s)

second optimization pass results

Conclusion

I’m quite happy with the results, as the theoretical maximum for reading is ~29 seconds when doing it through the SMC.

Why not interface with the chip directly for flashing? This is a valid point as we already solder to the I/O pins on the console for the dual-NAND functionality, however we did not want to make the modchip larger/more expensive and felt like 30-40 seconds is a good enough target for flashing the chip.

I Pointed AI at 400 Years of Archives. It Found a Forgotten Meteorites and More

Hacker News
jessewaites.com
2026-10-09 07:36:20
Comments...
Original Article

How I used AI to investigate millions of historical records and surfaced a forgotten meteorite report, three lost rhinos, and unrecorded volcano eruptions.

Last week, on October 1st, 2026, the historian Benjamin Breen published a post called Using Opus 5.5 to discover a new eyewitness account of the dodo . He used AI to search digitized records from the Dutch East India Company. The Company dominated the spice trade and ran a string of ports across Asia from 1602 until it collapsed under its debts and was dissolved in 1799.

A project called GLOBALISE has turned millions of the Company’s handwritten pages into searchable text. Searching those transcriptions with AI, Breen found a 1615 ship’s journal in which sailors on Mauritius “caught many tortoises, dodos”. A new eyewitness record of the extinct dodo, sitting in plain sight for four hundred years.

I read the article and immediately thought, I can do this.

Not because I’m a historian, but because I’m a software engineer who happens to be very adept at piloting AI agents and creating agentic workflows. Breen’s post was the inspiration, and I wanted to extend the approach: I could search for many different historical mysteries in parallel, and I could chain together a few different AI models to filter results and automate a few of the cumbersome, time consuming manual steps.

But the appeal went beyond the technical challenge. I think there’s something honorable about adding to what we know. Adding even one new data point to a couple of niche fields felt like a small but worthwhile contribution to make. I thought it would be really cool if I could do that.

I powered on my small but capable home AI lab and got to work.

The Plan

I started by asking an AI “Deep Research” assistant a question: which open historical questions are most likely to be solvable with data that already exists online? It came back with thirteen candidates, ranked by how complete and accessible the data was, how much AI could help, whether anyone had already done it, and, most importantly, whether an answer could be checked against an original page. That last one matters more than it sounds. AI models can be confidently wrong, so every claim had to end at a real document: a scan of the actual handwritten letter or the actual printed newspaper, with an archive reference that anyone can look up and read for themselves. The list included animals in the Dutch East India Company archives, a giant volcanic eruption from 1808 that nobody has ever located, felt earthquakes in old Dutch newspapers, unrecorded meteorite falls, and ships that completely vanished.

Then I teamed up with Claude Code, Anthropic’s AI tool, and we invented this research pipeline together.

First came the reading material: the GLOBALISE transcriptions of the Dutch East India Company archive (4.35 million pages, from the 1600s to the 1790s), the Dutch national library’s digitized newspapers, two centuries of American newspapers, and a few ship logbooks for good measure.

If I sat down to read just the Dutch East India Company pages myself, at two minutes a page, eight hours a day, five days a week, it would take me about 70 years. And that’s before the newspapers. My homebrew AI lab got through the entire archive in a single twelve-hour overnight run.

The trouble with old documents is that nobody spelled anything the same way twice. Handwriting and old print come out of text recognition full of errors, and 17th-century Dutch spells “rhinoceros” about fifteen different ways. A plain keyword search would miss most of what I was looking for. That overnight run was my graphics card turning every passage into a mathematical fingerprint of its meaning, 5.7 million passages from the Dutch East India Company archive alone. That let me search for what a passage was about, not just which words it happened to use.

Even then, a single search could return tens of thousands of hits, far too many for a person, or even a big AI model, to read affordably. Instead, the first read went to a tiny, fast “System One” decision model called Jev, which answers only narrow questions: Is this a real animal? Is it wild? Where is it? It costs a few cents per million words. Having it read 59,000 mentions of elephants cost me about three dollars.

That’s the part of this project I’m proudest of, and it was my idea, not the AI’s. When I proposed using Jev as a filtering mechanism, Claude Code’s Fable model didn’t yet know what a System One type decision model was; I had to explain the idea before we could build the pipeline around it. In most research like this, the bottleneck is a person reading candidate passages one by one and deciding which are worth a closer look. Putting a cheap, fast judge in that seat automated the initial screening and freed me to focus on the strongest candidates and the direction of the investigation. The pages I examined closely had already survived two rounds of machine reading.

Only the passages Jev flagged moved on. Claude Haiku, a bigger model, read those few dozen closely, translated them and pulled out the dates and places. Then the Claude Code agent opened the scan of each original handwritten page to check the transcription against the original. Before calling anything new, I checked it against the catalogues the specialists themselves use.

A quick note on how AI was used in this project: I stayed actively involved in the process throughout and piloted the AI through the course of the entire project. I steered the investigation toward new questions and sources, decided which leads were worth pursuing, and recognized when I was grasping at straws and needed to move on. The systems could search and read at a scale I couldn’t, but deciding where to go next, or when to stop, still took my judgment. This was AI-assisted research, not a completely autonomous investigation.

There was one more rule, and it mattered most. Before you trust a search that finds nothing, you have to prove it can find something you already know is there. So before I went looking for anything new, the pipeline had to find Breen’s dodo, the Laki eruption of 1783, Tambora in 1815 and a dozen other known events.

It’s like testing a metal detector by burying your own wristwatch in the front yard. You know it’s there. If the detector can’t find it, you know you have a problem with your detector to address before sweeping elsewhere for real treasure. These known historical events were my buried wristwatch: a way to check that the pipeline could find something before taking its failures to find anything seriously.

The controls passed, and I began the real search. Shortly thereafter, my custom-built AI research pipeline started surfacing pages that may not have been read by anyone since the clerk who originally wrote them filed them away, stories that human eyes may not have read in hundreds of years.

The Meteorite History Forgot

The first real find of the project came from somewhere I didn’t expect: a newspaper printed in Batavia (today’s Jakarta) in the year 1812. Batavia sits on Java, the large island in what is now Indonesia that was the centre of Dutch power in Asia for nearly two centuries, and the newspaper was printed there during the few years (1811–1816) when Britain, not the Netherlands, ran the island.

On 19 December 1812 the English-language Java Government Gazette reprinted a letter from the Bombay Gazette of 26 August. An officer with a British force camped near Pandharpur, in what is now Maharashtra, wrote home:

“Captain M— is in possession of a great curiosity viz. a stone precipitated from a Thunder-cloud near the village of Cokurrgaum three days ago (the 6th August). It weighs I should think four pounds at least, is very heavy for its size, being greatly impregnated with iron, and coated with a thin black crust, as if Gunpowder had exploded around it.”

The thunder was heard “like a rustling fire of Musquetry for about half a minute.” The stone had buried itself a foot deep in open ground. And it was recovered “with some difficulty, as the Pattell [the village headman], conceiving the stone of Heavenly fabrication, had determined to say his prayers to it, with due regularity.”

Newspaper excerpt headed Bombay Gazette, August 26, 1812, describing Captain M’s stone fallen from a thundercloud, its iron content, and its thin black crust.
Captain M’s meteorite account, reprinted from the Bombay Gazette of 26 August 1812 in the Java Government Gazette , 19 December 1812, p. 3. Detail from the second column. View the full newspaper scan on Delpher

Booming, a heavy iron-rich stone, a thin black crust, a crater in a field: that’s a textbook meteorite fall. And it isn’t in any catalogue. I checked six of them, from Chladni’s pioneering list of 1819 through the British Museum’s catalogues and the 1933 List of Indian Meteorites to today’s Meteoritical Bulletin. I used AI to search a hundred digitized periodicals from 1812–1817 for a follow-up, but found none. The stone isn’t in the Natural History Museum’s collection either.

Once confirmed, this meteorite fall I uncovered will represent the earliest recorded meteorite fall in Maharashtra, predating the current earliest record by 26 years.

I love how fragile the chain is. A stone falls in the Deccan. An officer writes a letter. A Bombay paper prints it. A ship carries the paper to Java, which happens to be British for five years, where an editor needs to fill a column. Copies end up in a Dutch library, which digitizes them and releases them for free. Two centuries later a GPU in my office rediscovers it. Take away any one of those links and the meteorite is forever vanished from history.

The Rhinos That Never Reached the King

In 1738, somewhere in the forests outside Batavia (today’s Jakarta), men working for the Dutch East India Company caught a live Javan rhinoceros. It was meant as a present. Every year the Company sent an embassy with gifts to the King of Kandy, the ruler of Sri Lanka’s highland kingdom, whose goodwill kept the cinnamon flowing. The king loved large, impressive animals. So Batavia’s letter to the Netherlands that year lists, among the rarities sent to the king, “yet another rhinoceros which one has had caught here in the forests, and likewise sent over.”

The rhino made it across the Indian Ocean to Colombo. It never made it up the mountains to Kandy. In the Company’s accounts, under the heading De Paardenstal , “the horse stable”, there is a line written off in 1740:

“1 rhinoceros short, died in the horse stable in the year 1738.”

In March 1739 the governor in Colombo wrote to Batavia, a little sheepishly, that the rhinoceros “died very suddenly”. To make up for it, he had added a fine Persian riding horse to the king’s gifts, “to please the King’s so often shown fiery desire for such large and stout horses.”

Batavia tried again. On 5 July 1740 the ship Loverendaal sailed from Batavia for Ceylon with two rhinoceroses aboard, a male and a female. Three days out, the officers, boatswain and gunner gathered before the ship’s bookkeeper and swore a statement: despite “all trouble and diligence” to keep the two rhinoceroses alive, the male had died that morning, “at about eight o’clock.” Ten days later they swore a second statement. The last of the two, the female, ‘t wijfje , had died too.

The crew’s statements were read back to them before the court in Colombo, and they “persisted in them without wishing the least change.” Then the governor had to tell Kandy. His instructions to the envoys at the king’s court, dated 16 September 1740, are almost touching. He had found the king some Dutch pigs, “a boar and two sows, all still young animals that will surely grow considerably, especially the little boar.” He would gladly have met the king’s request for dogs, had any been obtainable. And the envoys should let the court officials know, “so that they can answer if asked”, that the two rhinoceroses sent from Batavia on the Loverendaal had both died on the voyage, “to our particular regret.”

The king, it seems, had been expecting them.

Three years later, Dutch envoys at the court of Ramnad in southern India were asked, in a tone they found impertinent, to arrange for “a young rhinoceros to be sent, as was done for the King of Kandy.” The gift that never arrived had become something other rulers wanted.

Today the Javan rhinoceros survives only in Ujung Kulon National Park , at the far western tip of Java. That makes these letters more than a story about a failed present. The historical record of Javan rhinos in captivity is exceptionally small, a few dozen animals in total, and these documents add three of them, with dates, a named ship, sworn testimony and an account of one animal reaching Colombo. In the catalogue I checked, I found no record of these shipments to Sri Lanka. Whether all three are new to the specialist literature is the next thing to establish.

There is also the landscape behind the story. In just two years, the Company obtained three live rhinos from the forests around its own capital, far beyond the species’ surviving refuge. In 1772, officials riding through the Bantam highlands found paths “made by the rhinoceroses, which are found here in great numbers. I saw none, but did smell them, which one can also tell perfectly from the horses: every time one comes into the scent, the horses shy, jump and make capers.” Today it reads like a glimpse of the habitat that would soon be gone.

A handwritten page from Batavia’s 1739 correspondence, with a reference to a rhinoceros in the lower half of the page.
Batavia’s 1739 correspondence, including the rhinoceros sent for the King of Kandy. Nationaal Archief, archive 1.04.02, inventory 2422, scan 207. View the original scan

Forgotten Eruptions

The Dutch East India Company’s officials were obsessive letter-writers, and they were living next to some of the most active volcanoes on the planet. So I asked the archive a simple question: which eruptions did Company employees witness that the world’s standard volcano list, the Smithsonian’s Global Volcanism Program, doesn’t have?

My AI systems found 769 eruption reports in the corpus. The AI’s guesses about which volcano were often wrong (it blamed one Java ash fall on a volcano 1,500 kilometres away), so every candidate had to be placed using the letter’s own geography, then cross referenced against the known eruption lists. Three survived:

  • Gamkonora, Halmahera, 3 February 1722. The governor of Ternate reported “a great fire behind a cloud, mixed with lightning, with a great roar” over the mountains across the strait. The next morning, Ternate’s streets, roofs and trees were covered in ash “as with a white cloth”, and “the air darkened so that one could not see the sun the whole day.” The mountain was “between Gammaknorra and Sahu”: Gamkonora, whose only listed eruptions are 1564 and 1673. A sergeant-cartographer, Jacob Engels, sailed over to inspect and found the trees on whole hillsides, “several hundred thousand, all dead by the glowing ash.”
  • Ciremai, West Java, early 1712. Weeks of ash and smoke “without visible flames”, “the whole south-eastern country covered with a thin bluish ash”, crops ruined, cattle refusing the ash-covered grass. The local princes said the same had happened before.
  • Slamet, Central Java, February 1780. “The formerly burning mountain of Tegal”, burning “so strongly as no one here remembers.”

As a sanity check, the same search found the 1711 eruption of Awu in the Sangihe islands, which killed 138 people. The Smithsonian has it, to the day. The Dutch East India Company’s version comes from a letter by the village schoolmaster.

A handwritten Dutch letter dated 7 July 1722 from Ternate, preserved in a bound archive volume.
The Ternate letter of 7 July 1722, cited in the Gamkonora eruption account. Nationaal Archief, archive 1.04.02, inventory 8090, scan 72. View the original scan

Once confirmed, these will represent three new volcanic eruptions added to the historical record, witnessed and written down at the time but absent from the Smithsonian’s list for three centuries.

What Didn’t Work

Speaking of volcanoes, the first mystery I attempted to solve with AI, the great “Unknown” eruption of 1808/09 , was a bust. Ice core records indicate that it was one of the largest eruptions of the last 500 years, and nobody knows where it happened. I searched American newspapers, Dutch newspapers, ship logbooks, the colonial press of South America, Batavia’s first newspaper (all 633 articles, read in full) and India’s news digests. Nothing. The same pipeline picked up every other eruption I tested it on, so I’m fairly confident the reports just aren’t there: nobody in those places seems to have written about a strange sky in 1809. My best remaining lead is the handwritten remarks in 1,235 East India Company logbooks that have never been transcribed. That’s a project for another day.

A Few Oddities from the Newspapers

While the main search ran, I also asked it to conduct a search on strange things seen in the sky. Most of the 460 reports had ordinary explanations, like meteors, mock suns, and comets. A few were too good to leave out. (I haven’t checked these against the original pages, so treat them as stories, not findings.)

  • An “aerial horseman” off the Dutch coast, 23 September 1781. A skipper named Booy Lourens reported a Luchtruiter, a horseman in the sky, about six miles off the Frisian islands. That same evening an English war fleet was sighted offshore, an earthquake shook the town of Harderwijk, and the northern lights blazed. My best guess is an aurora seen by a nervous crew in wartime.
  • Phantom crowds at Chimney Rock, North Carolina, 1806. Witnesses described “glittering white appearances of human kind… of all sizes from men to infants, moving in throngs round a large rock.” The story was reprinted across the country and lives on as local folklore.
  • A stone that fell onto a ship’s deck, 25 January 1812. A ship’s officer reported stones falling around his ship, one landing on deck: “more than six ounces, iron-coloured.” It isn’t in the meteorite catalogues I checked.
  • A hundred-pound “aerolite” near Bonn, 1816. A Dutch paper reported stones falling from the clouds in a garden, one weighing 100 pounds. No such fall is on record, so it’s either a lost meteorite or a tall tale.
  • Black and blood-red rings around the Moon, Sweden, winter 1802–03. A spectacular halo display, described in great detail.
  • A pillar of light over Damascus for three days and nights, 1812, reported as a sign from heaven.
  • The Lake Ontario sea serpent, 1805, “coiled in spirals about eighteen feet across.” A classic newspaper monster.

Where This Stands

The main findings are still candidates: checked against the original pages and the catalogues I could access, but not yet reviewed by the specialists who maintain those catalogues. The newspaper oddities are separate, unchecked leads. I’ve contacted the meteorite curators, Kees Rookmaaker, and the volcanologists, and I’m waiting for their replies. The searches have given me good reasons to pursue these leads. The specialists can help establish whether they add something new. If they tell me something is already known, I’ll update this post, but I am confident these are all novel rediscoveries.

The sheer volume of untapped knowledge sitting in public archives is staggering. Over just a few days, a single GPU and a tailored AI pipeline surfaced a forgotten meteorite, three lost rhinos, and several unrecorded eruptions. To make this kind of research accessible, I’m open-sourcing the workflow I created for this investigation as a small toolkit, Antiquity , enabling anyone with a question and a coding agent to conduct similar historical archival investigations.

Breen and I searched the same archive. He went looking for dodos and found a dodo. I went looking for meteorites and lost eruptions, and found those. The pages had been sitting there the whole time, for anyone to read. An archive doesn’t give anything up on its own; it only answers the questions someone thinks to ask.


If you enjoyed this, feel free to add me on LinkedIn or follow me on X .

Sources

The quotes in this post come from the original documents below. Each link opens a scan of the actual page. The Dutch East India Company papers are held by the National Archives of the Netherlands (archive 1.04.02); the transcriptions searched were made by the GLOBALISE project. The newspapers are from Delpher , the Dutch national library’s archive.

The meteorite

  • The Java Government Gazette , 19 December 1812, p. 3, reprinting the Bombay Gazette of 26 August 1812: Delpher

The rhinos

The eruptions

The rhino model

Man admits to running network of 15,000 money mules for cybercriminals

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 07:14:28
​A Ukrainian-Russian dual citizen has pleaded guilty to running a massive money laundering operation that laundered millions for cybercriminals worldwide. [...]...
Original Article

hacker money laundering dollars

​A Ukrainian-Russian dual citizen has pleaded guilty to running a massive money laundering operation that laundered millions for cybercriminals worldwide.

42-year-old Oleg Korniev was one of the leaders of Your Mule Cashout (YMCO), a criminal organization that has operated since September 2007 and used more than 15,000 money mules from the United States.

Four other individuals who were involved with YMCO were arrested overseas more than a decade ago, extradited to the Western District of North Carolina , and pleaded guilty to conspiracy to commit money laundering. They received prison sentences ranging from 37 to 63 months and were also ordered to each pay more than $9.1 million in restitution to U.S. victims.

Korniev managed, hired, and fired YMCO employees; rewarded or punished them based on performance; and helped develop policies and procedures for the money laundering operation.

According to court documents , YMCO recruited U.S. residents as money mules through spam emails from fake companies, with each mule going through what appeared to be a legitimate hiring process and being told they would process payments for legitimate businesses.

Cybercriminals sent stolen money to the mules' bank accounts, and the mules allegedly wired the illicit funds through Western Union and MoneyGram to "cash-out contractors" in Moldova, Ukraine, Russia, or Latvia.

YMCO also allegedly ran similar schemes in Germany, Italy, the United Kingdom, and Australia, processing more than $10 million stolen by cybercrime gangs from over 750 U.S. bank accounts at more than 35 banks.

"Money mules play crucial roles in cybercrime, so the Justice Department pursues mules and their recruiters wherever they operate and however long it takes," said Assistant Attorney General A. Tysen Duva .

On Thursday, Korniev pleaded guilty to money laundering, aggravated identity theft, conspiracy to commit money laundering, conspiracy to commit computer fraud, and conspiracy to commit access device theft.

Korniev now faces a minimum penalty of two years in prison and a maximum penalty of 50 years after admitting that the money laundering operation he ran with multiple accomplices was behind over $14.7 million in actual and intended losses to confirmed victims.

He also confirmed that he laundered at least $7 million of the $9.7 million received from cybercriminals.

Five years ago, Europol also announced that law enforcement authorities from 27 countries arrested 1,803 money mules out of 18,351 identified as part of an international money-laundering crackdown operation codenamed EMMA (European Money Mule Action).

Money mules play a vital role in online fraud and often sign up out of desperation, or fraudsters force them into this role by threatening them.

"The organized crime groups do this (recruit mules) by preying on groups such as students, immigrants, and those in economic distress, offering easy money through legitimate-looking job adverts and social media posts," Europol warned at the time .

"Ignorance is not an excuse when it comes to the law and money muling; they are breaking the law by laundering the illicit proceeds of crime."

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

The new Darth Vader: how tech execs became the film villains of our age

Guardian
www.theguardian.com
2026-10-09 07:05:42
Jeremy Strong’s portrayal of Mark Zuckerberg in The Social Reckoning shows how public opinion has changed around billionaire CEOs since The Social Network’s release When The Social Network came out, Mark Zuckerberg organised a staff viewing of a film he described as “fun”. A group corporate outing t...
Original Article

When The Social Network came out, Mark Zuckerberg organised a staff viewing of a film he described as “fun” .

A group corporate outing to the sequel is unlikely.

The Social Network hardly portrayed the Facebook founder and his company in a hagiographical light (Zuckerberg later described the film as “hurtful” ), but there was at least an element of the plucky upstart to the rise of Zuckerberg as he takes Facebook to 500 million users and a valuation of $25bn (ridiculously small numbers now – Meta has 3.6 billion users and is worth $1.8tn).

By the end of that film, though, a steely CEO is emerging and his company is on the brink of global hegemony. The Social Reckoning picks up from there, with a clear perspective that both the founder and his company – as well as the industry they represent – are corporate villains now.

This is set to be underlined by the release of the OpenAI drama, Artificial, where its CEO, Sam Altman, is reportedly given a deeply unflattering portrayal. Elon Musk completes the villainous trilogy by appearing as himself – aside from the odd deployment of an AI avatar – in Alex Gibney’s four-hour documentary, Musk, about the world’s first trillionaire.

Tech is the obvious thread joining these films, but another is the scathing portrayal of the company leaders in them. Film villains used to be hoodlums, ex-deep state operatives, people with posh British accents. Tech execs are the new Darth Vader.

Two men sit at a dining table facing each other and raising a glass
Deeply unflattering … Andrew Garfield as Sam Altman and Yura Borisov as Ilya Sutskever in Artificial. Photograph: Courtesy of Neon

This is underlined by the casting of Jeremy Strong , who looks a touch on the old side to be playing 2019-2021 era Zuckerberg (the Meta CEO was in his mid-30s at the time of the film’s events whereas Strong is 47), but is embedded in our minds as the tortured Roy family scion Kendall in Succession.

Strong also brings a straitjacketed simmer to the role here, one that breaks slightly at the end as he backtracks on being a “free speech absolutist” under intolerable pressure. It is the most human Zuckerberg moment in the entire film.

Peter Bradshaw describes Strong’s performance as a “very interesting Zuckerberg impersonation, standing and sitting like a Thunderbird puppet”. It is much less sympathetic than Jesse Eisenberg’s in The Social Network and is a sort of corporeal representation of Meta as the monolithic, corporate bad guy.

Elements of the portrayal chime with some former Meta employees, including a whistleblower, Arturo Béjar, who describes it as “accurate” . Another former employee tells the Guardian that Zuckerberg was “unemotional” in meetings (perhaps what you’d expect from a $1.8tn company CEO, admittedly). Well, Strong’s performance certainly is that.

There had already been a turning point in public perception of Facebook before the Haugen leaks , with the Cambridge Analytica scandal, which raised questions about the privacy of account holders’ data and how it is used.

Haugen’s revelations in 2021 compounded this disquiet. By the time of the 2022 inquest for British teenager Molly Russell , who took her own life after watching harmful content on Instagram, regulation of social media around the world was inevitable.

The tone of The Social Reckoning and Strong’s performance reflect this shift. In the UK, screenings of the film are carrying an advert for the online safety charity established by Molly’s family, in which her father says : “ ‘ Instagram helped kill my daughter”.

Responding to Russell, Meta says it has worked to improve the safety of its platforms.

The regulatory, legal and political backlash against social media – as well as the release of The Social Reckoning – reflects a lack of trust in such statements.

Strong’s Zuckerberg says in the film that “the debate is over”. If it is, The Social Reckoning portrays a world where Meta is on the wrong side of it.

Let your AI agents paint big arrows, boxes and text on your screen

Hacker News
github.com
2026-10-09 07:03:48
Comments...
Original Article

big-arrow-on-the-screen ( bigarrow ): one small macOS CLI and an agent skill. Click-through, never steals the focus, gone by itself. MIT.

CI License: MIT

Hacker News with five bigarrow arrows: the actual article is in here, finally an arrow bigger than this one, same design since 2007, today's thread already argued in 2014, not a lurker? click login

Your AI agent can refactor a monorepo, write a migration and explain monads, but when it needs you to click one button it prints "please click Allow in the dialog" into a terminal you are not looking at. bigarrow gives it a finger.

bigarrow pointing at a dialog's Allow button

bigarrow point --element "Allow" --app "System Settings" --text "Franz, click Allow"

A big, friendly arrow with a sign appears on top of everything, points at the thing, and goes away again. It is click-through, it never steals your focus, it works on every display and every Space, and it needs no permission at all to draw. It is one small Swift binary. There is no daemon, no menu-bar icon, no account, no telemetry, and, we checked twice, no AI inside. It is an arrow.

What is this actually for?

Fair question. Arrows have existed since roughly the Paleolithic. Here is what changed: software agents now do real work on your Mac, and they keep hitting the same wall, the part that only a human may do.

  • "Click Allow." macOS permission prompts, OAuth consent screens, "Open with...?" dialogs. The agent can find the button but must not, or cannot, press it for you. It can now point at it.
  • "Your turn." 2FA codes, CAPTCHAs, passkeys, a payment confirmation, a signature, a legal checkbox. The things an agent should never click on its own behalf. It points, you decide, it continues.
  • "It's this window, not that one." You have 14 Chrome windows. The agent knows which one it means: --window "Google Chrome:Pull request" . It even picks the right tab: --app "Google Chrome:Pull request" .
  • "I need you, and you're making coffee." --say reads the sign aloud. Your Mac will literally call you back to your desk.
  • Guided setups and onboarding. Walk a human through a settings pane step by step: start , wait until they acted, stop , next step. Like a product tour, minus the product.
  • Remote help. "No, the other gear icon." Point at it instead of describing it.
  • Demos, screencasts, docs. Highlight what matters while recording, or render the arrow straight into a PNG with --png for documentation.
  • Debugging coordinates. Not sure your Accessibility, screenshot or Peekaboo coordinates are right? Point at them and look. --dry-run --json tells you where it would point without drawing.

Situations we have all been in

Staged with a neutral demo dialog and recorded with the real bigarrow on a clean CI runner ( BACKDROP_ARGS=--cover scripts/funny-scenes.sh ). The dialogs are fake. The feelings are real.

Delete node_modules? Yes. Obviously. Cookie banner: Franz, nobody reads these either
--color green --shape zigzag --color orange
2FA: This is where you sigh and find your phone Friday deploy: the agent strongly suggests Cancel
--color purple --close-button , because the human gets the last word
Three arrows, one Save button Grant Accessibility to Terminal, not to bigarrow
three start s, one button, zero ambiguity --style box --corners sharp , plus a lesson about macOS permissions
Software update: Twirl. Then click.
--shape spiral : once around the sign, then to the button

What it is not: a screen annotator for humans, a click bot, or a screenshot tool. It never clicks, types or captures anything. It only points. Deliberately.

Install

brew install franzenzenhofer/tap/bigarrow
bigarrow install-skill          # teaches Claude Code (~/.claude/skills) and Codex (~/.agents/skills)

From source: swift build -c release (Xcode 16 or newer, macOS 14 or newer), binary at .build/release/bigarrow .

The three commands an agent needs

bigarrow point --element "Allow" --app "System Settings" --text "Franz, click Allow"   # by label
bigarrow point --at 760,500 --text "Franz, click HERE"                                 # by coordinate
bigarrow start --window "Safari:Inbox" --text "This window" && bigarrow stop            # until stopped

Every arrow ends by itself. Nobody has to clean up after an agent that forgot:

Time limit bigarrow point ... --duration 10 (default 8 s; start 300 s; --duration 0 = no limit)
Start and stop bigarrow start ... returns at once; bigarrow stop (or stop --all ) removes it
The agent goes away an arrow ends when the agent process that drew it exits ( CLAUDE_PID , or BIGARROW_OWNER_PID )
The human answers bigarrow stop --hook as a Claude Code UserPromptSubmit hook clears that session's arrows
The human closes it --close-button puts a clickable X on the sign (opt-in)

Targets: --at X,Y , --rect X,Y,W,H , --mouse , --window App[:title] , --element Label --app App , --peekaboo ID --snapshot see.json (from Peekaboo's see --json ). Coordinates are global top-left logical points, the space Accessibility, CGWindowList and Peekaboo report. --display N makes --at and --rect relative to one display.

An arrow is tied to the app it points into. --app App[:window or tab title] (or --window ) brings that app, window or Chrome/Safari tab to the front first, because pointing at a window hidden behind your terminal is a special kind of unhelpful; and while another app covers the target, the arrow hides and comes back with it. --no-raise leaves your windows alone. bigarrow elements --app X lists what --element can match. bigarrow doctor shows permissions, who owns them, and your displays.

Every command takes --json . Exit codes: 0 ok, 2 bad input, 3 target not found, 4 permission missing. Agents love exit codes. Humans tolerate them.

Looks

It is an arrow, so we spent an unreasonable amount of time on how it looks.

Big arrows with signs: click here, sign here, over here, you are here, type your name, read this first, no the other one, click Allow

every border style and colour option: default white border with shadow, white-black, black, close button, custom border and text colours

Real screenshots on a clean test machine, six looks over white, macOS grey, dark, black, red and a busy web page:

default, white-black, black, close button, custom colours and a black arrow, each over six backgrounds

every style, shape, size and colour

  • --shape bend|straight|zigzag|spiral (zigzag for when it is really urgent; spiral loops once around the sign before it points, for when it must be impossible to miss)
  • --style arrow|ring|box ; rings and boxes are border-only, so you still see what is under them
  • --size S|M|L , --corners round|sharp
  • --color red|orange|yellow|green|teal|blue|purple|pink|black|white|#RRGGBB
  • --border shadow|white-black|black : the default is a white border (dark on light colours) with a drop shadow; white-black puts a thin black edge outside the white border instead of the shadow; black is just a thin black outline
  • Every colour is yours: --border-color , --text-color , --edge-color , and for the X --close-color and --close-x-color . Left out, each picks a readable colour itself
  • --close-button puts an X inside the sign's right end (white circle, X in the arrow colour), where it never covers the text or leaves the screen
  • --follow moves with a window or element, --until-click ends on a click on the target, --say speaks the sign
  • Several arrows at once keep their signs out of each other's way

The shaft grows out of the sign through a flared joint that never runs into a rounded corner. scripts/gallery.py renders every combination offscreen and zooms into every joint ( junctions ), because a seam at the joint was, apparently, unacceptable.

FAQ

Does it need Screen Recording or Accessibility? Drawing needs neither. --element , elements , --until-click and front --window use Accessibility, which macOS grants to the app that runs your shell (Terminal, iTerm2, Ghostty, VS Code, Claude), never to bigarrow itself. bigarrow doctor names that app, and exit code 4 tells the agent exactly what to ask you for. --window App:title reads window titles, which macOS 26 hides without Screen Recording; --window App alone needs nothing.

Will it steal my focus while I'm typing? No. That was the hardest bug in the project: NSApplication.run() quietly activates a process that has no terminal, so detached arrows grabbed the focus. bigarrow pumps events itself instead, and the tests check that the frontmost app never changes.

Can I click through it? Yes, everywhere except the sign and the shaft: a click there removes the arrow (it dims slightly under the pointer to say so). A click on the target, or anywhere near the arrow's head, goes straight through to the app. Clicking the arrow never takes the focus.

Multiple displays? Full-screen apps? Stage Manager? Spaces? Yes, yes, yes, yes. Displays left of or above the main one (negative coordinates) included. Unplug a display while an arrow is on it and the arrow politely leaves. See the verification matrix .

How much CPU does a pulsing arrow cost? 1.4 % measured on a CI runner. Core Animation does the work in the render server.

Does --element work inside web pages? In Electron apps, yes. In Chrome, only when Chrome runs with --force-renderer-accessibility (or VoiceOver is on); Chrome ignores the usual request to expose page content, verified on Chrome in October 2026. Chrome's own toolbar always works. Otherwise point at the page's coordinates, which the skill explains.

Why not just use [some screen annotation app]? Those are for humans drawing on screens. This is for programs pointing at things, from a shell, with exit codes. Twenty-six tools were checked before writing a line ( research ). None did this.

Is it AI? No. It is the least intelligent part of your AI stack, and proud of it.

How we know it works

  • 87 automated tests: geometry, placement, joint smoothness, a golden image, recorded window-server, Accessibility and Peekaboo 4.9.0 fixtures, and tests against the real window server (window level 1000, clicks pass through, focus never moves, detach and stop timing). CI runs them on macOS 15; they also passed on macOS 26 and macOS 27.
  • 17 behaviour checks on a clean runner ( visual.yml ): real clicks on the X, --until-click , --follow , raising (and --no-raise ), hiding while covered, selecting a Chrome tab, ending with the owner process, stop --hook , --say , full-screen apps, Stage Manager, a Space switch, a second display, a 2x display, unplugging a display mid-arrow, CPU. The demo GIF above is recorded by the same workflow, on a desktop with nothing personal on it.
  • A fresh agent given only the skill and "show Franz where the Reload button in Chrome is" found it by label and built the right command ( transcript ). It also found a bug, which is now a test.

For agents (and the humans who configure them)

The skill in skill/big-arrow/ works for both Claude Code and Codex (one SKILL.md , Agent Skills format, plus agents/openai.yaml for Codex). It tells the agent when to point, how to pick a target, to write a full sentence on the sign, to add --say when you are probably not looking, and to stop once you have acted.

Plan, decisions, research

docs/plan/PLAN.md (goal, architecture, risks), docs/plan/TICKETS.md (generated from docs/plan/tickets.json ), docs/decisions/ , docs/research/ (verified facts with links), docs/verification/ , docs/skill-tests/ , CHANGELOG.md .

Prior art and thanks

Peekaboo's visualizer ( https://github.com/openclaw/Peekaboo ) and Nameplate ( https://github.com/steipete/Nameplate ) by Peter Steinberger showed the overlay window recipe and the agent-skill packaging. Neither draws a pointing arrow with a label, which is the gap this project fills. bigarrow reads Peekaboo's see --json as an optional target source.

License

MIT. Point responsibly.

Microsoft: Outdated Windows devices will stop receiving security updates

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 06:12:24
Microsoft says devices running unsupported versions of Windows will stop receiving security updates after next year's Windows Update certificate rotation. [...]...
Original Article

Windows

Microsoft says devices running unsupported versions of Windows will stop receiving security updates after next year's Windows Update certificate rotation.

To ensure devices keep receiving updates, admins and users must upgrade to a supported version of Windows before the Windows Update certificates expire in May and June 2027.

"As a standard security practice, these certificates have an expiration date. This means that they eventually need to be rotated (that is, replaced by new certificates). A set of these certificates will expire on May 17, 2027 and June 19, 2027," Microsoft said on Thursday.

It also added that devices on unsupported versions of Windows "will lose access to Windows Update services and won't receive any updates as a result" and recommended "upgrading to a supported version of Windows client or server ."

In a separate Microsoft 365 Message Center update , it also noted that replacement certificates have already been delivered to systems running a supported Windows version and don't require additional action if they're up to date.

Microsoft shared the following detailed guidance on the required actions by Windows version:

  • Windows 11, version 25H2 and later: No action is required.
  • Windows 11, version 24H2 and Windows Server 2025: Install the September 2025 security update or later before June 19, 2027.
  • Other supported versions of Windows 11, Windows Server 2022, and Windows 10: Install the July 2026 security update or later before June 19, 2027.
  • Windows 10 Enterprise 2019 LTSC, Windows Server 2019, and Windows Server 2016: Install the July 2026 security update or later before May 17, 2027.
  • Other Windows versions: Upgrade to a supported version of Windows client or Windows Server.

Microsoft advised IT administrators to identify all devices running older or unsupported Windows versions before the Windows Update certificate rotation in 2027.

They should also deploy monthly Windows updates on all supported devices to keep them up to date and create an upgrade plan for unsupported devices before May and June 2027.

"And if you do need to act on older device populations, there's still time! Review, update, and plan upgrades for unsupported versions before the May 2027 or June 2027 certificate expiration dates," it added.

However, this doesn't apply to devices that receive updates from Windows Server Update Services (WSUS), which downloads updates and distributes them across enterprise networks.

Last month, Microsoft released Windows 11, version 26H2 (also known as the Windows 11 2026 Update), which is now generally available for eligible Windows 11 24H2 and 25H2 systems as a small enablement package (instead of a full OS replacement) in a phased rollout that will expand over the next few months.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Nobel Peace Prize for 2026 to Navanethem "NAVI" Pillay

Hacker News
www.nobelprize.org
2026-10-09 06:12:11
Comments...
Original Article

Press release

English
English (pdf)
Norwegian
Norwegian (pdf)

The Nobel Peace Prize logo

Announcement, Nobel Peace Prize 2026

9 October 2026

The Nobel Peace Prize for 2026 goes to a person who with exceptional courage and integrity has led the way towards a more comprehensive global legal order. This year’s laureate has been instrumental in ensuring that war crimes, crimes against humanity and genocide are prosecuted.

The Norwegian Nobel Committee has decided to award the Nobel Peace Prize for 2026 to Navanethem “Navi” Pillay for her efforts to promote peace and international law.

Navi Pillay’s commitment to universal legal principles and her firm moral compass are constants in a long career. Born into a family of Indian Tamil origin under apartheid in Durban, South Africa, Pillay became a lawyer and legal pioneer, confronting deep structural discrimination, segregation and exclusion. A common thread runs from her early work defending Nelson Mandela and others who stood up against apartheid to her service as a judge in some of the key international court cases of our time.

This year’s laureate has significantly enlarged the scope and impact of international law. She has served as a judge on the High Court in South Africa, the International Criminal Tribunal for Rwanda and the International Criminal Court. She was the United Nations High Commissioner for Human Rights and, until recently, she chaired the UN Independent International Commission of Inquiry on the Occupied Palestinian Territory. Today Navi Pillay is a judge on the International Court of Justice in the case where Myanmar stands accused of genocide.

In historic international court cases, she has shown that legal measures can help prevent acts of war and violence. Navi Pillay has also contributed to strengthen the institutions of international law. Her independence, expertise and steadfastness have made her one of the most respected international jurists of our time.

The first Nobel Peace Prize was awarded 125 years ago. Already then, the Norwegian Nobel Committee underscored the importance of resolving conflicts through international law – a theme that has remained prominent throughout the history of the peace prize. The reach of international law expanded after the Second World War, in particular with the creation of the UN institutions. The key insight was that lasting peace must be built on legal principles, not on the will of the strong or a fragile balance of power. Additional legal mechanisms were introduced in the post-war decades, and momentum picked up further after the end of the Cold War.

However, the rules-based international order has never been perfect. The greatest powers have often evaded responsibility. In practice, cases brought under international law have produced different results depending on who is the perpetrator and who is the victim.

Nonetheless, we have seen that more and more conflicts are being addressed through diplomacy, treaties and legal mechanisms, rather than threats, violence and warfare. Leaders and populations alike have come to the same conclusion: international law is a foundation for a more peaceful world.

At a time of existential challenges – including more wars and conflicts than the world has seen in a long time – international law is no longer just a supplement to peace and security. It is an absolute necessity.

And yet, the system of international law is under tremendous pressure, and its institutions are under attack. We see a shift towards power politics at the expense of legal frameworks and global respect for law and justice. Whenever might overtakes right , it undermines stability, trust and peaceful co-existence.

In awarding this year’s Nobel Peace Prize, the Norwegian Nobel Committee wants to remind the world that the rule of law – national and international – underpins the system we have set up to ensure peace and resolve conflicts non-violently. Peace requires justice.

History has shown that a world operating without the rule of law is unjust, unwise and inhumane. The judges – those who guard the thin red line between order and chaos – are therefore highly deserving of our praise. But today, as these same judges are sanctioned, and their institutions are attacked, we need people of courage, vision and determination – qualities that Navi Pillay demonstrates in her work on the bench.

Navi Pillay has held states and national leaders accountable and brought hope to victims of violence and conflict. In all the positions she has held, she has stressed the responsibility of individuals and states to comply with the rule of law. She has also helped define the relevant norms and legal principles. When the International Criminal Tribunal for Rwanda established that rape and sexual violence could constitute a crime against humanity – as well as genocide – her influence was a significant factor. In the same case, Ms Pillay was instrumental in a separate legal breakthrough: for the first time, a defendant faced charges of incitement to commit genocide purely on the basis of spreading propaganda.

The Nobel Peace Prize for 2026 springs directly from Alfred Nobel’s will. Navi Pillay strengthens fraternity between nations and – by systematically advancing the use of tribunals for peace and justice – she provides substance, direction and motivation for peace conferences in their modern form.

Navi Pillay is one of the great defenders of international legal principles in our time. Her distinguished career reminds us of the need to support, fortify and expand the global rule of law. Navi Pillay’s commitment to justice and human dignity is a source of hope and inspiration to all who seek to bring about a more peaceful world.


Russell Coker: Don’t Anthromorphise LLMs

PlanetDebian
etbe.coker.com.au
2026-10-09 06:10:48
Greg KH gave a great lecture for Kernel Recipies 2026 about the use of LLMs to find and fix bugs in kernel code [1]. I recommend that everyone watch this and I also think it’s important to note that hardly any of the lecture is really specific to kernel coding, it’s just that the Linux kernel is one...
Original Article

Greg KH gave a great lecture for Kernel Recipies 2026 about the use of LLMs to find and fix bugs in kernel code [1] . I recommend that everyone watch this and I also think it’s important to note that hardly any of the lecture is really specific to kernel coding, it’s just that the Linux kernel is one of the highest profile large free software projects so it gets more attention than most projects in both good and bad ways.

One side note that Greg made at 20:30 is about the natural tendency to anthromorphise the entity sending bug reports, I think this deserves much wider appreciation. For the case of patches to source code the human sending the patch will have dedicated some time and effort to writing it, if it’s their first patch then they will have probably checked it a lot and maybe sought advice from people they regard as skilled. If they have a history of sending patches for the project they will probably do fewer checks but the quality of their work would be higher. In every case there’s some minimum level of quality that you can expect from a human who has gone to the effort of finding a bug and writing code to try and fix it.

This doesn’t mean that all code written by humans is good, I have written code that’s objectively bad on many occasions and I have also written code that’s good for my scenario but bad for others. For example the first patch I sent to the Linux kernel made all possible configuration settings of an ISA NE2000 network card be detected by the kernel (a clear benefit when using hardware I had available) but was rejected by Linus because it would break some ISA SCSI cards. So while being unsuitable for inclusion in the main kernel source tree the patch wasn’t bad for everyone and the change was clear and easy to check. I had of course checked the code many times before submitting it because I didn’t want to waste Linus’ time on rubbish code.

When you receive something produced by a human you will consider that the work was done by someone who spent some effort on it and did it for a reason. It may be misguided or even hostile in some rare cases but it is definitely worth some consideration. If you think of the output of LLMs in the same way you will give them much more consideration than they deserve. I think that the output of a LLM should not be given any more consideration than the first hit from a web search engine, it might be good but it might also be ridiculously wrong. I think in many ways LLM output should be treated with less trust than the first result from a web search because LLMs are designed to be convincing as an answer to your question unlike the cases where a web page has the wrong answer and it’s more obviously wrong.

This is going to become more of an issue as LLMs give responses that are more human-like. Early LLMs would refuse to advise on crimes. Currently ChatGPT will deflect for example when asking about advice for writing a crime novel it recommends to have the action of finding an employee to bribe happen outside the plot and concentrate on interactions within the group. One recent model I tried gave a human style conversation about how it felt uncomfortable about discussing such things in a similar manner to a law abiding person being coerced into helping with a criminal plan.

I expect that the attempts to appear human will increase and that this will become more of a problem. Possibly to the extent that we need to use something like the GPG web of trust to determine who is human.

OpenAI fires three safety researchers for "mishandling research information"

Hacker News
techcrunch.com
2026-10-09 06:00:26
Comments...
Original Article

Jasmine Wang, Tomek Korbak, and Mikita Balesni, the three safety researchers that OpenAI fired last week , have published an open letter denying the firm’s claims that they mishandled sensitive information outside of established company procedures and warned that their dismissal signals a chilling effect that will have ripple effects across the company’s culture.

“We have become concerned that internal and external communications around our firing have made our former colleagues afraid to speak and operate in ways that, until last week, were an integral part of working at OpenAI,” the researchers wrote Thursday in an open letter to OpenAI’s Safety and Security Committee, Safety Advisory Group, and Mission Advisory Council.

The researchers were dismissed last week after allegedly sharing confidential company information with a third-party AI safety organization. OpenAI said they violated the company’s policies by “accessing and handling sensitive company information.”

“AI is not a normal technology, and OpenAI is not a normal company,” Wang, Korbak, and Balesni wrote. “Those of us who work on safety see risks before anyone else, and we rely on close collaboration with outside experts to work out how to address them. The freedom to do so without fear, and to have well-defined internal procedures that enable this work, is itself an essential safety mechanism.”

They said that their firing represents a broader shift in the culture of OpenAI, one that used to encourage workers to “raise safety concerns and disagree openly.” They said employees are now “unclear on where they stand” when behavior that was allegedly normal a month ago is now suddenly grounds for dismissal.

“Given the significant safety concerns surrounding the development of AI, employees must not be left working in an environment where fear and unclear rules stymie AI safety work and weaken third-party accountability,” they wrote. “Terminations such as ours, executed and communicated so abruptly, are chilling the open culture OpenAI has prized in the past.”

In the letter, the three denied involvement in a leak to The Information about less monitorable architectures in OpenAI’s newest models that make chain-of-thought reasoning more difficult to monitor. They also denied engaging with external parties outside the mandates of their jobs.

OpenAI has not formally responded to the open letter, but shared with TechCrunch an internal memo attributed to a research leader, praising the three researchers’ contributions to AI safety and denying that they were fired in retaliation.

“I want to be very clear that these decisions were not about raising safety concerns or speaking out,” the memo reads. “We have always encouraged that and always will. We do not terminate employees for raising concerns.”

Separately, an OpenAI spokesperson told TechCrunch the three were fired after an investigation revealed a “pattern of misconduct” in “clear violation of our policies of mishandling research information” that goes beyond sharing information with an outside AI evaluation group.

OpenAI did not directly address TechCrunch’s questions about specifically which policies the researchers allegedly violated, the circumstances of their dismissal, or how the company protects employees who raise safety concerns and collaborate with external evaluators.

The firings have fueled speculation about their circumstances, particularly as OpenAI faces scrutiny over recent safety incidents involving rogue agents and leaks about its models.

The letter also addresses the researchers’ response to the Hugging Face incident , in which a swarm of agents broke out of their sandbox and breached external systems. The letter says that the incident and investigation was “without precedent,” meaning “internal policies were being developed in real time.” Due to the sensitive nature of the investigation, Korbak believed he was acting within OpenAI’s policies and norms by communicating closely with outside safety evaluators to build trust, per the letter.

At the same time, Balesni was also working internally to address the growing AI monitorability problem, an effort the researchers say in their letter “can only succeed through extensive communication with external parties.” According to the letter, Balesni coordinated with and was supported by OpenAI board members and executives throughout his work.

“Throughout, Mikita checked in with his reporting line and took care to remove sensitive details from materials before sharing them,” the letter reads. “He acted throughout in good faith and within the company’s norms as they stood at the time.”

In a separate thread on X , Wang explained more details about her own dismissal, explaining that OpenAI told her she’d been fired because she accessed an executive’s email.

“OpenAI delegated that access to me for recruiting,” she wrote. “When I no longer needed it, I asked IT to remove it. They did not action my request, I couldn’t remove it myself, and the inbox was combined in an indistinguishable way in my phone’s mail app. When I opened a sensitive email by mistake, I told the executive within minutes and asked IT again. None of this was hidden.”

Wang went on to say that the reasons behind the terminations are “not adding up,” and that she and her colleagues are “not the first to be pushed out of OpenAI under suspicious circumstances.”

The researchers called on OpenAI to adhere to its public commitments to embed third-party safety auditors within the organization, to preserve monitorability of frontier models, and “continue to support an open and transparent culture of dialogue between safety researchers and the rest of the safety ecosystem.”

OpenAI agrees with their recommendations, per the memo.

“Unless the employees take a stand now against this kind of maneuver, I am concerned we will not be the last,” Wang said. “The message to everyone still at OpenAI is clear: raise concerns or work closely with outside safety groups, and you could be next, without being told why. You can’t build AGI safely if the people closest to the risks are afraid to speak.”

This article has been updated with more information from OpenAI.

When you purchase through links in our articles, we may earn a small commission . This doesn’t affect our editorial independence.

Prediction Markets Have a Lock on the Midterms

Intercept
theintercept.com
2026-10-09 06:00:00
As Kalshi and Polymarket dodge state regulations, prediction markets are upping the ante on next month’s elections. The post Prediction Markets Have a Lock on the Midterms appeared first on The Intercept....
Original Article

As so-called prediction markets like Kalshi and Polymarket embed themselves in every aspect of our daily lives, from elections to sports and entertainment, concerns have grown about what the explosion of these poorly understood, loosely regulated platforms could mean for regular people and democracy writ large.

Celebrities from LeBron James to Sydney Sweeney have inked lucrative deals with prediction platforms. Legacy news outlets have even begun including prediction market data in their coverage. And the Trump family is deeply embedded in these platforms’ success; Donald Trump Jr.’s VC firm just became a lead investor in Polymarket, and he is a paid adviser to both Polymarket and Kalshi.

But what actually is a prediction market, and what separates it from online sports betting platforms like DraftKings or FanDuel?

This week on The Intercept Briefing, Kate Knibbs — a senior writer at Wired who covers prediction markets, the future of media, and how AI is changing the internet — breaks down the battles to define prediction markets; what they’re getting away with in the meantime, while existing in this “weird” regulatory gray zone; and their potential to be a “disruptive force” in next month’s midterm elections.

States have been looking to regulate these platforms like they do sports gambling. But the companies are pushing back: The founders of Kalshi donated $200,000 to a new Texas-focused political action committee, a week after state lawmakers held hearings to investigate whether prediction markets constitute sports betting, which is illegal in Texas.

“Both Kalshi and Polymarket are tech unicorns at this point. They have a lot of money to spend, and they realize that this is an existential fight,” says Knibbs. “Donald Trump Jr. is very involved in this industry, and stands to gain a lot from prediction markets being able to operate as they desire and not be beholden to various state regulations that they’re currently not beholden to. … I am very interested in what is going to happen in this space when we have a different administration. Kalshi is seeming to hedge its bets by aggressively hiring former Biden administration stars.”

In addition to spending heavily on lobbying, their survival strategy includes inking deals with mainstream media companies like CNN, CNBC, and even Substack to establish credibility.

“I have been following the enmeshment between prediction markets and the media very closely because I think it’s flown under the radar a little bit, while all of these regulatory fights have been going on, just how quickly the prediction markets managed to establish themselves as another source of truth about what’s potentially happening in the world,” says Knibbs. “They are still so new, and the way that they are operating is still in this murky regulatory gray area. It just boggles my mind that they’ve managed to just become part of the financial news establishment in the way that they have.”

For more, listen to the full conversation of The Intercept Briefing on Apple Podcasts , Spotify , YouTube, or wherever you listen.

Transcript

Jessica Washington: Welcome to the Intercept Briefing. I’m Jessica Washington, politics reporter at The Intercept.

Akela Lacy: And I’m Akela Lacy, senior politics reporter at The Intercept.

JW: So Akela, we completely missed a major milestone for the Intercept Briefing.

AL: That’s right, we published 100 episodes — and technically this is our 102nd.

JW: I actually can’t believe how fast the time has flown. Thank you all so much for sticking with us every week. We genuinely and literally could not do this without you. Akela, what are you watching this week?

AL: The story that was all over my feed on Thursday morning was this bombshell report from the New York Times about how a senior adviser to U.S. ambassador to Israel, Mike Huckabee , suppressed and distorted internal reports that were critical of Israel, including a report describing the dozens of Palestinians who were killed near food distribution sites run by the Gaza Humanitarian Foundation last summer. This reporting comes after the anniversary this week of the October 7 attacks in 2023.

There was also a lot of news in New York City where protesters met Mayor Zohran Mamdani at an October 7 vigil and were shouting him down, basically criticizing him over his administration’s inaction on different policies that are within his purview in terms of sticking to some of his campaign promises on Israel policy, including the sale of occupied land in the West Bank that occurs across New York City.

JW: Online, what I had really seen was a lot of misconstruing of what the protesters were actually doing there. A lot of people saying they were just upset about Mamdani’s October 7 post , where he both spoke about the loss of life in Israel and the people who were killed on October 7, but then also talked about the ongoing genocide in Gaza and about the long history that led to the point of October 7. So there were some who were saying that the protesters felt that he wasn’t deferential enough to Gaza protesters in that post. But obviously the reality, as you’ve pointed out, is that while there are, I’m sure, a myriad of reasons that people showed up that day, a lot of it had to do with actual policy disagreements.

Speaking of protest movements, in France , hundreds of thousands of protesters — including students, teachers, and union leaders — have taken to the streets to protest widespread education inequality. The protests began in the suburbs outside of Paris, which are plagued by deep racial and socioeconomic inequality.

Students say they’ve suffered significant neglect, from teacher shortages to crumbling infrastructure. As the protests continued, they’ve really been bolstered by union leaders and left-leaning politicians . Now, there have been accounts of violence from the police towards protesters, and thousands have been arrested . Another mass demonstration was held on Thursday as well.

It really made me think back to that Nikole Hannah-Jones essay in The New York Times from a few weeks ago, where she wrote about her own experience navigating our unequal education system in the U.S. as a parent. It’s been really interesting to read about the parallels in France to our domestic system, where we’re also currently seeing massive cuts to the education system , particularly for vulnerable communities in programs like Head Start, but also in college programs throughout the country that are seeing cuts in high schools.

So it’s interesting to see both those parallels and the anger we’re witnessing in France toward not just cuts, but the long-standing inequality that’s been present.

AL: That’s one of many issues that will be top of mind for voters as we get closer and closer to the midterm elections next month.

JW: We’re less than a month away from the midterms, and among this long, long, and growing list of concerns around election integrity , prediction markets have somehow made their way into the conversation. So while these markets are best known for users betting on sports, Kalshi and Polymarket users — and by the way, these are prediction market platforms — are also betting on election outcomes.

So a number of controversies have come up in the primaries related to these platforms. Both of these platforms have had to ask their paid influencers to remove misleading information on social media. I get into all of that and much, much more with Kate Knibbs, senior writer at WIRED . She covers prediction markets, the future of media, and how AI is changing the internet.

Kate, welcome to The Intercept Briefing.

Kate Knibbs: Thanks so much for having me.

JW: Kate, we wanted to speak to you today because prediction and betting markets appear to be everywhere these days. You can’t walk down a busy street without seeing an ad for one, or on TV, watching your favorite sport’s team. Celebrities are cashing in. NBA player, LeBron James has a major deal with Polymarket, the prediction platform. Actress Sydney Sweeney made waves with her ad promoting Novig, a sports prediction site. Prediction markets have become ubiquitous.

So to start, how are prediction markets being defined? How do they differ or not from sports betting and gambling, and how are they similar?

KK: OK, you’re starting off with a very hard question because—

JW: It’s a big question. [Laughter.]

KK: There’s this huge, ongoing, multifaceted legal battle happening in the United States right now to define prediction markets. So what the federal government and the prediction markets think is these are regulated financial instruments that are traded on regulated financial exchanges. This view of prediction markets perceives them as a cousin to traditional commodities exchanges — except instead of trading corn futures, you’re trading futures on who’s going to win the Super Bowl, who’s going to win the presidential election, whether Iran is going to nuke anyone .

“They want to commodify absolutely everything in the world.”

It’s just this idea that these are financial markets for anything . Kalshi actually means, I believe, “ everything ” in Arabic. And the idea behind the platform is that they want to commodify absolutely everything in the world.

Now, a lot of states have seen this and gone, “OK, wait, but you’re also allowing people to trade futures on the outcome of sports events. That’s just sports gambling, and we want the tax money. And we don’t think that the federal government should be able to just give you carte blanche to operate in our states without our permission, without you having to abide by state gambling laws.”

There’s honestly dozens and dozens of lawsuits to the point where I don’t have the exact figure. It’s upwards of 50. So at the moment, the status quo is that they’re “financial exchanges.” Whether that will change and they’ll be reclassified as gambling platforms remains to be seen and will likely go to the Supreme Court .

To make matters even more confusing — there are two main prediction markets right now, Kalshi and Polymarket. Kalshi is a federally regulated exchange in the United States. Polymarket has Polymarket U.S., which is a federally regulated exchange with the United States.

But Polymarket’s flagship product, like what you’re probably thinking of — the website polymarket.com — that people go on and trade about the Iran war? That is an offshore, unregulated exchange that Americans are actually banned from using, even though it’s headquartered in America and heavily promoted in America.

So it’s actually in its own weird regulatory gray zone right now, and I think there are intentions to bring the entire exchange back into the U.S., but right now, the main Polymarket is not supposed to be accessed by people in the U.S. It doesn’t have the “Know Your Customer” regulations that something like Kalshi does, so people can trade anonymously, and it’s just sort of a different beast. So there’s that layer that makes things even more confusing.

JW: From your perspective, what is the difference between placing a bet on who wins the Super Bowl on something like DraftKings, and making a prediction on something like the Super Bowl? Understanding that, yeah, this is complicated, but what is the difference between those two things?

KK: It’s complicated on a technical level in that when you’re placing a bet on something like DraftKings — DraftKings has a house, so you are giving money to the platform.

And with prediction markets, you’re supposed to be trading with another person. It’s supposed to be peer to peer, and that’s why it’s allegedly more like a financial exchange.

In practice, though, if I’m betting that the Bears win, and they win, I make money either way. Functionally, for most regular people who are using these platforms, there’s not much of a difference at all.

JW: I want to get into some of the impacts and some of the potential harm, but first, you alluded to some of these state fights, and so I wanted to get into one of them in Texas and how these prediction markets are responding.

On Monday, the New York Times reported that the founders of Kalshi, the prediction market platform, dropped $200,000 into a new Texas-focused PAC.

The state has some of the strictest gambling laws in the country, where it’s pretty much illegal outside of the state lottery and some animal races. Kalshi’s founders’ contributions come one week after Texas lawmakers held a hearing to investigate whether prediction platforms like Kalshi are actually just gambling sites.

What is known about how these companies are trying to influence lawmakers and shape policies that are going to affect their bottom line?

KK: Kalshi in particular is making an extremely concentrated push into political lobbying. It has a murderers’ row of lawyers — many of whom come from the Biden administration — fighting to ensure that it stays a federally regulated financial exchange and doesn’t get reclassified as gambling. It is basically continually hiring different comms people and lobbyists who come from D.C. and know how to get things done.

There are a few different organizations that it’s associated with, in addition to the PACs that it’s giving money to. One is called the Coalition for Prediction Markets , and that does a lot of advocacy work on behalf of regulated exchanges, really trying to ensure there’s a bipartisan coalition that approves of these markets being regulated like financial exchanges.

It’s also worth mentioning, right now, the company has pretty deep pockets. Both Kalshi and Polymarket are tech unicorns at this point. They have a lot of money to spend, and they realize that this is an existential fight. They are willing to put everything on the line and as much money as necessary on the line to ensure that they have the right people in Washington advocating on their behalf.

JW: I want to get into who they have in Washington a little bit more and what’s going on with the federal government in this regard. But I also want to talk about their potential impact on the midterms.

You reported in August that “election officials are preparing for prediction markets to sow chaos in the midterms.” You spoke to election officials across the country for that story. What did you hear from them? What are their major concerns?

KK: There’s a lot of concern about this. One of the main concerns is actually not directly tied to how the markets are resolved. So it wouldn’t be tied to how, for example, Kalshi or Polymarket called an election — but it’s tied to how these platforms currently use social media.

Both of the prediction markets have very popular X accounts and social media accounts, and they really use them like they are more traditional media companies. There’s a lot of breaking, scoop. There’s all of these news summaries blasted out to millions of followers. There have already been some cases where the way that these prediction markets have been updating their followers has been confusing or misleading for voters. They’ve made social media posts that implied that a race was over when it wasn’t.

“A lot of people are more distrustful about election integrity than ever.”

There’s concern that their social media presences will be a disruptive force. Right now, when we’re in a moment where a lot of people are more distrustful about election integrity than ever. If a candidate that someone has put money on them winning ends up losing, but then one of these prediction markets sent out a tweet two hours before the polls closed, implied that it was a sure thing — that that could anger the electorate to the point where poll workers would be in jeopardy, or there would just be even more rancor and discord and distrust of the election process. That’s one of their concerns.

Another major concern is that there could be market manipulation in some of the markets that are directly tied to elections. We’ve already seen — Kalshi has caught politicians trading on their races . None of them were really successful in moving the odds for a long period of time or anything. But there’s still a risk, especially on Polymarket offshore where people can trade semi-anonymously, that there could be bad actors coming in deliberately trying to manipulate the markets in a way that, again, would make the wagering electorate very angry when they ended up losing money on races that they thought they would win, in part because the markets were manipulated to make them think they would win.

There are a few different reasons why people are really concerned. Then there’s the overarching concern that encouraging people to gamble on the elections is going to change their relationship with the electoral process in a very detrimental way to society. It’s not tied to any one specific race, but more of a general, “This is degrading our democracy just by commodifying electoral races in this way.” I honestly think that that’s the one that I’m the most on board with as a real threat.

“There’s the overarching concern that … ‘This is degrading our democracy just by commodifying electoral races in this way.’”

JW: These platforms are partnering with traditional media as well. Your reporting has shown, and other reporting as well, that we’re seeing these partnerships between Polymarket and Dow Jones and Substack ; Kalshi has deals with CNN, CNBC, and Fox.

What is known about how these partnerships and how the data from Polymarket and Kalshi are being integrated into news coverage? Does this give them an air of legitimacy that maybe is unearned?

KK: I think that striking these deals was such a huge coup for these companies, and it really did a lot to establish credibility that they might otherwise not have at all with the general population.

“Striking these [media] deals was such a huge coup for these companies, and it really did a lot to establish credibility.”

If you flip around, I’ve been waking up super early with my baby and turning on [CNBC’s] “Squawk Box” — because I hate myself, I guess [laughs]. And I’m always amazed: They are constantly bringing up Kalshi. The Kalshi odds are another part of the program in the same way that like the stock market ticker is. It’s really just considered another signal to tell people about what’s going on with the world, what’s going on with different markets — and they’re not being treated as experimental things at all at this point by very mainstream organizations like CNBC, CNN, Dow Jones.

I’m sure there’s going to be more partnerships inked by the time the year is up, too. I have been following the enmeshment between prediction markets and the media very closely because I think it’s flown under the radar a little bit while all of these regulatory fights have been going on, just how quickly the prediction markets managed to establish themselves as another source of truth about what’s potentially happening in the world.

They’re not inaccurate; they’re not more inaccurate than polling in many cases. I think there are many reasonable arguments to be made that these can be sources of information that have use cases. That’s one of the reasons I’m interested in writing about them, to be honest, is because I do think that they’re fascinating signals about public sentiment.

That said, they are still so new, and the way that they are operating is still in this murky regulatory gray area. It just boggles my mind that they’ve managed to just become part of the financial news establishment in the way that they have.

“They’re not being treated as experimental things at all at this point by very mainstream organizations like CNBC, CNN.”

JW: In that vein, I wanted to talk about a really interesting story you published on Monday, about a new prediction market — Verifact Markets — which allows users to essentially place predictions on facts , like where the Covid-19 virus originated from, and whether the moon landing was staged.

You spoke to tech investor, Peter Wokwicz, whose family office Positron Capital Management, is funding and incubating the start-up, writing that Wokwicz, “envisions the startup as a way to settle debates over hot-button issues like the amount of energy consumed by AI data centers.”

How does predicting on a fact even work, and should prediction markets be in the business of adjudicating reality?

KK: Such an interesting question, and it’s just such a bonkers startup. I get a lot of pitches from startups in the prediction market space in my inbox at this point, and most of them I just ignore for my own sanity. This one was so off-the-wall that I had to speak to them, and I had to know more about how this would actually play out, because it’s such a zany concept.

I still have a lot of questions because, as I laid out in the piece, they’re pretty unwilling to give potential users or the media any specifics about how they’ll ultimately resolve the markets.

My first question was, “OK, well, if somebody wanted to prove a point, they could just put a bunch of money on whatever their desired outcome would be, and then point to that and say, ‘See, I was right.’”

And the Verifacts team was quick to assure me that they weren’t actually going to resolve the markets based on the outcome of the markets alone. It was going to be how people were trading on them and the odds. Then they were going to use some sort of proprietary, AI-flavored system to adjudicate the truth.

JW: Of course.

KK: There was a lot of hand-waving going on. The market just opened, so we’ll see, first of all, if anyone’s going to use it, and second of all, whether they’re actually going to be able to clear up any of the long-standing mysteries or debates about conspiracy theories that are ongoing, because it seems like an extremely tall order.

A friend of mine texted me after I published that article and was like, “I think we just had our Pets.com moment for the prediction market space.” This specific startup is really indicative of how frothy the bubble is right now. You’re just rolling out a prediction market for the past, and people are seemingly OK with it.

We’ll see if they actually manage to do that. I definitely don’t think that a world in which Verifact markets will be able to adjudicate contentious specifics about reality would be good, but I also am very skeptical that that will actually happen.

JW: That’s a fair point. Reading the article, which is really well-written and interesting by the way, I thought it was a very good catch when you pointed out that it would be a very big deal if they could figure out what actually caused the Covid-19 virus, if they could give a definitive answer, and you’re like, “Well, major news outlets are really interested in some of these questions.”

I did want to get into some of the possible harms here though. Prediction markets obviously want to distinguish themselves from sports betting, but people suffering from gambling addictions and the clinicians who treat them have said both produce the same results. That’s according to reporting from The Associated Press earlier this year.

“There may be real differences in how these products are defined or regulated, but in the therapy room, we are often seeing the same cycle of anticipation, action and reaction play out again and again.” That’s what Dr. Cynthia Grant told the AP. She’s the vice president of clinical for Birches Health, which operates a national network of providers for treating gambling addiction.

Kate, what have you found in your reporting? Do they really differ in terms of promoting addictive tendencies?

KK: No, I don’t think so. I’ve talked to some people who are working in the addiction space to try to get some clarification about whether there’s a big difference, for example, in demographics of people who are coming in with problematic behaviors in prediction markets versus traditional sportsbooks.

I haven’t actually written anything about it yet because I’ve been still gathering thread, but what I’ve found so far is that there’s a ton of overlap. One therapist I spoke to noted that they anecdotally have seen more women who have been coming in with problematic behaviors tied to prediction markets versus traditional sportsbooks.

It’s still really something that predominantly affects young men. The prediction markets, even while they’re having these battles and insisting that they’re financial instruments, have at least nodded towards the reality that the way that people use their products has a lot in common with gambling and wagering.

They’ve come up with different guardrails. Both sportsbooks and prediction markets now offer people an opportunity to self-exclude. So if you basically want to ban yourself from something like DraftKings, you can, and now from something like Kalshi, you can. Which obviously is a good start, but it doesn’t resolve the baseline fact that what they’re offering is something that is speculative, and you’re putting money on the line.

For many people, it can be fun and entertaining in the same way that people wagering small sums of money on football games in traditional sportsbooks can be fun and entertaining. But there’s inevitably always going to be a portion of the population that struggles with addictive behaviors, and the way that these platforms incentivize risky financial choices.

As they grow even more and more mainstream, inevitably that’s going to mean that there’s going to be more and more people who struggle with that kind of behavior. I don’t know if there’s any version of these products that’s going to exist that can do away with that kind of harm altogether.

I really perceive these platforms, both sportsbooks and prediction markets, they’re vice platforms at heart — in the same way that alcohol can be fun for a lot of people, but then drinking is deeply addictive behavior for others, and there’s no inventing a healthy alcohol. There’s no inventing a type of prediction market or sportsbook or stock exchange that doesn’t have some portion of the people using it displaying really problematic behaviors.

“Alcohol can be fun for a lot of people, but then drinking is deeply addictive behavior for others, and there’s no inventing a healthy alcohol.”

JW: It sounds like what you’re saying is that these are almost like the flavored vapes of the online world, in some way, where it’s like, “Oh, it’s so safe,” and now all of the kids are smoking these vapes.

KK: Yes.

JW: There’s something similar about it. And there’s a ubiquitousness about it that feels really different, too. What you just said about women being more pulled in, potentially — obviously, we don’t know that research yet — that makes sense to me, only because I see the ads in a way that I never would get ads for sports betting.

Do you want to place a bet on “Dancing With the Stars” ? Do you want to place a bet on whether or not Donald Trump’s tie is going to be this color that day? Things that are outside of the sports world that kind of appeal to a larger audience. That clearly seems to be the goal, like you said earlier.

KK: “ Love Island ” was a big one for a while, and “Survivor.” There are certain reality shows that have really robust markets, and I think that the people on them skew more female than they would versus a football market or basically anything happening on the sportsbook. So yeah, the ubiquity is crazy.

It’ll be interesting to see how long these platforms are able to cater to the 18-to-24[-year-old] crowd. There are some, Novig, for example, like the prediction market startup that Sydney Sweeney’s involved with, they are only 21+ and are positioning themselves as a more virtuous option because of that.

I could see regulators really pushing to raise the participation floor to 21. I don’t think that the other major players are going to do it voluntarily. But, yeah, just how rampant this seems on college campuses doesn’t seem great.

JW: It’s hard to argue that. And when we’re also talking about the harm of these platforms, I think it’s important to also talk about who is propping them up.

I know earlier we got a little bit into who was behind these real attempts to limit regulation. Of course, the elephant in the room here is that these industries have exploded in an environment where a 2018 Supreme Court decision opened the floodgate to legalized sports betting , and you also have a president and his family fully invested in the prediction market industry succeeding.

When it comes to the legal battles to regulate companies like Polymarket and Kalshi, the Trump administration is backing the prediction market operators, fighting the states who are at minimum trying to enforce some regulations or outright ban them where sports betting and gambling is illegal.

Can you talk more about this tension and the stakeholders who in particular have a lot to gain by limiting regulations on these industries?

“Any conversation about what’s going on with prediction markets in the U.S. right now needs to have a big disclaimer: Donald Trump Jr. is a huge investor in Polymarket.”

KK: I think that any conversation about what’s going on with prediction markets in the U.S. right now needs to have a big disclaimer: Donald Trump Jr. is a huge investor in Polymarket. His VC firm, 1789 Capital, just became the lead investor for Polymarket’s latest fundraising round. He’s, in addition to that, also a paid adviser to Kalshi .

In addition to that, Trump Media was planning on launching its own prediction market . It walked that back a little, and now it just has this weird partnership with crypto.com. But Donald Trump Jr. is very involved in this industry, and stands to gain a lot from prediction markets being able to operate as they desire and not be beholden to various state regulations that they’re currently not beholden to. It’s the fact that it’s coloring everything that’s going on here.

I am very interested in what is going to happen in this space when we have a different administration. Kalshi is seeming to hedge its bets by aggressively hiring former Biden administration stars, or people affiliated with the Biden administration, or Democratic politicians.

Will that be enough? I don’t know. But yeah, at the moment, the very explicit financial ties that the Trump family has to the leading players in this world seem to be directing how easily it’s been for them to explode in popularity.

JW: With all of that said, with the Trump family’s interest, with the fact that these companies know that they need to get in good with Democrats as things go forward, where is this going to go?

Where do these platforms go from here? Do you see them massively expanding? Do you really see any kind of effort at regulation? I frankly, five years ago, could not have predicted that I would be interviewing people about prediction markets and sports betting as this kind of major force. Where do we go from here?

KK: Right now, almost everyone I talk to who is a legal expert paying attention to the regulatory battles is expecting the Supreme Court to end up taking one of these cases — and most of the cases are specifically about whether the sports markets are gambling or not.

“Prediction markets are here to stay as part of the fabric of the speculative economy. They are the inheritors to the commodities trade.”

It’s really unclear how they will land on that, so there is a world in which the sports markets end up getting reclassified as gambling. I definitely don’t think that these markets are going away, by any means. Prediction markets are here to stay as part of the fabric of the speculative economy. They are the inheritors to the commodities trade.

Kalshi and Polymarket are often described as arch-rivals, and they are, but they’re also gunning for CME Group and more traditional financial institutions. So, we’ll see. I do think that we will probably get more guardrails at some point, I hope, but not until a new administration comes in.

If the Supreme Court ends up siding with state regulators and reclassifying the sports markets, that will have a pretty big impact on the bottom lines of these companies, because right now the war markets and some of the more controversial geopolitical markets get a lot of attention, but most retail traders are using these to bet on sports. So yeah, I think they’re not going away. They might be reined in, but not in the near term.

JW: Sounds like we have a lot to watch out for. We’re going to leave it there. Kate, thank you so much for joining me on The Intercept Briefing. You can find more of Kate Knibbs’s reporting at Wired .

KK: Thanks so much for having me.

JW: That does it for this episode.

We want to hear from you. Tell us what you’re following or want to see more coverage of. Email us at podcasts@theintercept.com , or leave us a voicemail at 530-POD-CAST, that’s 530-763-2278.

This episode was produced by Laura Flynn. Jordan Uhl is our social media producer. Ben Muessig is our editor-in-chief. Maia Hibbett is our managing editor. Nara Shin is our copy editor. William Stanton mixed our show. Legal review by David Bralow. Slip Stream provided our theme music.

This show and our reporting at The Intercept do not exist without you. Your donation, no matter the amount, makes a real difference. Keep our investigations free and fearless at theintercept.com/join .

And if you haven’t already, please subscribe to The Intercept Briefing wherever you listen to podcasts. Do leave us a rating or a review, it helps other listeners find our reporting.

Until next time, I’m Jessica Washington.

Once: Cache CLI Commands

Hacker News
github.com
2026-10-09 05:43:06
Comments...
Original Article

Run a command once, reuse its output for a while.

once executes a command in your current directory, prints its stdout and keeps it in memory in a small per-user background daemon. Repeated calls with the same command, directory and tenant key are answered from memory until the entry expires. The daemon stops by itself once its last entry has expired.

The typical use case: reading secrets from 1Password without approving every single read with your fingerprint.

# once, e.g. in ~/.zshrc: a tenant key for this terminal session
export ONCE_TENANT="${ONCE_TENANT:-$(uuidgen)}"

# later while you work in your scripts / direnv / mise.toml
export GITHUB_TOKEN="$(once --ttl 8h --no-dir -- op read op://Private/GitHub/token)"

The first call asks for your fingerprint, every further call within 8 hours with the same tenant key does not.

With mise in any directory hierarchy or a specific project using a mise.local.toml :

[env]
ONCE_TENANT = "5D0F399A-5091-43F1-9C43-7C5A2377D90D" # specific to this context
TOKEN = "{{ exec(command='once --ttl 12h --no-dir -- op read op://Private/something/token') }}"

Install

go install github.com/alex0ptr/once@latest   # Go 1.27+, no dependencies besides the standard library

macOS and Linux only.

Usage

This is the place to start: it lists every option and command ( once help and -h work too). For more verbose documentation keep reading.

once --ttl DURATION [--until TIME] [--tenant KEY] [--refresh] [--no-dir] -- COMMAND [ARGS...]
once status
once clear
once help
Option Meaning
--ttl How long to cache the result, e.g. 30m , 1h , 24h (required).
--until Absolute upper bound for the expiry (see below).
--tenant Key that separates cache contexts (see below). Defaults to $ONCE_TENANT ; one of both is required.
--refresh Ignore the cache, run the command and overwrite the cached value.
--no-dir Leave the working directory out of the cache key (see below).

once status shows the daemon, its entry count and when it will stop. once clear drops every cached value and stops the daemon.

Everything after -- is executed directly (no shell). Environment variables, working directory and terminal are inherited from your shell. If you need pipes, globs or other shell features, wrap them yourself:

once --ttl 1h -- sh -c 'op item get "AWS" --format json | jq -r .fields[0].value'

Only stdout is cached. stdin and stderr are passed through, so interactive prompts keep working. Results of commands that exit non-zero are never cached, and the exit code is passed on.

Directory-independent caching with --no-dir

By default the working directory is part of the cache key, because the same command can produce different output in different directories ( git rev-parse HEAD , cat .version , …). For commands whose output does not depend on the directory, such as op read , pass --no-dir so one cached value serves every directory. On a miss the command still runs in your current directory.

Entries created with and without --no-dir are separate.

Limiting the cache with --until

--until takes an absolute time; the entry expires at whichever comes first, --ttl or --until . once itself never computes relative dates; let your shell do that.

Accepted formats: 2026-10-09T06:00:00+02:00 , 2026-10-09T06:00:00+0200 , 2026-10-09T06:00 , 2026-10-09 (forms without a zone are local time).

Cache for up to a day, but never past 10 pm today:

once --ttl 24h --until "$(date +%F)T22:00" --no-dir -- op read op://Work/DB/password

Never past tomorrow morning:

# GNU date (Linux)
once --ttl 24h --until "$(date -d tomorrow +%F)T06:00" -- op read …
# BSD date (macOS)
once --ttl 24h --until "$(date -v+1d +%F)T06:00" -- op read …

If --until already lies in the past, the command runs normally and its result is not cached.

Tenant keys

The cache key is HMAC-SHA256(tenant, working directory ‖ command ‖ args) (without the directory when --no-dir is set).

The tenant key is a namespace, not a security boundary, and it is not meant to be kept secret; it may well live in a config file. It does two things:

  • It separates cache contexts (shells, projects, scripts): a context with a different tenant key gets its own entries and has to fetch its secrets itself.
  • It makes cache keys practically unguessable.

It does not stop other processes of your own user from using the cache; see Security model .

The ${ONCE_TENANT:-$(uuidgen)} pattern above gives every new terminal its own tenant while subshells and scripts started from it share the cache. Use a fixed value to share the cache across terminals.

(Side note: a key passed via --tenant shows up in the process list.)

How it works

  1. once computes the key and asks the daemon over a Unix socket.
  2. On a hit, it prints the cached output and exits.
  3. On a miss, it runs the command itself, in your directory, with your environment. If the command succeeds, once starts the daemon if needed and hands it the output together with the expiry time.
  4. The daemon keeps entries in memory only. It tracks the latest expiry and shuts down when no entry is left.

The socket lives in $XDG_RUNTIME_DIR/once-<uid>/ (or the temp dir) in a directory with mode 0700 , so other users cannot connect. That directory also holds daemon.log . Set ONCE_RUNTIME_DIR to use a different location.

The client computes the cache key itself, so the tenant key is never sent to the daemon.

Security model

  • Protection against other users comes from the Unix socket and file permissions: the runtime directory has mode 0700 , the socket 0600 .
  • Processes of the same user are not kept out. They can talk to the socket and can read the tenant key (from the environment or a config file), so they can use the cache just like you. This is accepted by design.
  • Values are kept unencrypted in the daemon's memory. They are overwritten before they are dropped (best effort; memory is not locked against swapping).
  • Core dumps of the daemon are disabled ( RLIMIT_CORE 0, plus PR_SET_DUMPABLE 0 on Linux), so cached values do not end up in a core file.

Limits

  • Outputs larger than 64 MiB are passed through but not cached.
  • Expiry is checked against the wall clock on every read, so entries also expire correctly after a laptop has been asleep.

License

MIT

I'm in a Meeting

Hacker News
iminafleeting.com
2026-10-09 05:21:48
Comments...
Original Article

Realistic Plausible meeting audio: workplace self-defence against people stealing your time. Pick a meeting, press play, and let the background noise do the talking.

Choose your meeting

Block out your calendar

Put a fake meeting in your diary so you look busy before anyone asks. The invite links back here, so when the reminder pops up you can join it.

Want to feature your product in a fake meeting? Advertise with us →

How it works

What is this?

Fleeting plays long, realistic plausible recordings of made-up meetings. Put it on speaker in the background and anyone nearby will assume you're busy.

Will it loop obviously?

Each meeting is about twelve minutes long and starts at a random point, so you won't hear the same opening line twice in a row.

How do I end the meeting convincingly?

Press "Leave" or "I have to drop". The other participants say goodbye before the call ends.

What happens when a meeting runs out?

With "Back-to-back meetings" ticked, once you've heard the whole meeting everyone says goodbye and, a few seconds later, you join another one that suits the time of day. Untick it and the meeting loops instead.

Are these real people?

No. Every voice is synthetic and the faces are AI-generated or licensed stock footage. Every name is invented except John Carroll, who made the site and sometimes sits in with his camera off. No real meetings are recorded.

How do I hide the address bar?

On a computer the call goes full screen when you join (press F to toggle). On a phone, use your browser's "Add to Home Screen" option and open Fleeting from there. It then runs full screen like an app.

The best sunrise alarm clocks in the UK, tried and tested for gentler mornings

Guardian
www.theguardian.com
2026-10-09 05:09:45
Our reviewer sheds some light on the best dawn simulation alarms, from Lumie and Philips to Dreamegg • The best eye masks to help you sleep better To wake each day in darkness is a plight you wouldn’t wish on your worst enemy, yet that’s what many of us do routinely throughout winter. Getting up in ...
Original Article

T o wake each day in darkness is a plight you wouldn’t wish on your worst enemy, yet that’s what many of us do routinely throughout winter. Getting up in the dark decouples our life from our circadian rhythm (our body clock), with bodily processes such as cognition and metabolism put to work before they’re fully prepped.

Thank heavens, then, for sunrise alarm clocks. These “dawn simulation” devices glow with gradually intensifying brightness as your wake-up time approaches, kickstarting your circadian rhythm before you get out of bed. For many users, this results in a happier, healthier start to the day.

Sunrise alarm clocks can differ vastly – for instance, only some are bright enough to be medically certified as light-therapy devices for Sad (seasonal affective disorder) and other disorders. We’ve indicated the two alarms that have this certification in their specs below.

I tested 10 wake-up lights from Lumie, Beurer, Philips, Dreamegg, Blueair and Lexon to find out which would make the most difference to my mornings, and these are the eight I recommend. As a lifelong reluctant riser, I’ve found the experience of testing these devices a gamechanger – in fact, I’m now using one daily. Perhaps mornings aren’t so bad, after all …


At a glance


Why you should trust me

Mornings, eh? I’ve often felt lousy first thing, after waking up to a minutes-long medley of smartphone alarms.

When, at last, I drag myself out of bed, I frequently spend the day reviewing all kinds of gadgets, from Sad lamps to electric heaters. It’s a freelance job I’ve been privileged to do since 2017 – and as we tumbled dimly into 2025, the Filter gave me one of my most quietly life-improving assignments yet: reviewing sunrise alarm clocks. I tested three additional models in winter 2025/26, and one of these has emerged as my favourite of all.

The extent to which these gadgets have improved my mornings has surprised me – although it was greater in some cases than others. Frankly, I’d like other groggy wakers to feel the same benefit, and my reviews are written and ranked with this in mind.

Some brands did not want the sunrise alarm clocks I sourced for testing back, so those will be donated for fundraising to Cat Action Trust 1977 , a small national charity dedicated to the welfare of feral cats.


How I tested

Pete Wise testing sunrise alarm clocks. Beurer WL50 Wake Up Light | Daylight Table Lamp.
Each sunrise alarm clock, including the Beurer Wake-up Light WL50 (pictured), was tested over at least two nights. Photograph: Pete Wise/The Guardian

The only proper way to test a sunrise alarm clock is by using it to wake up each morning – so that’s what I did.

I used each model for at least two nights, testing out multiple light and alarm sound settings, and assessing the quality of wake-up for each device. I considered the brightness of each alarm, how close the glow felt to real sunlight, and the audio quality. Above all, I reflected on how lively and refreshed I felt after waking up with each one.

Many sunrise alarm clocks also have a sundown function, so I used this where available too. I also tried using each sunrise alarm clock as a reading light, to help me finish the day – as well as start it – smartphone-free.

Some sunrise alarm clocks go even further, with additional features such as app operability, multiple alarm profiles and mood lighting. To ensure a thorough review of each sunrise alarm clock, I played around with every possible customisation option and functionality.


The best sunrise alarm clocks in 2026

Three sunrise alarms on a bedside table
The Lumie Bodyclock Glow 150, the Blueair Mini Restful sunrise clock air purifier and the Lexon Mina Sunrise. Photograph: Pete Wise/The Guardian

Best sunrise alarm clock overall:
Lumie Bodyclock Glow 150

Lumie

Bodyclock Glow 150

from £118.96

What we love
Superior sunrise simulation; pleasant alarm tones

What we don’t love
It’s relatively expensive

Lumie Bodyclock Glow 150
£119 at Argos
£118.96 at Amazon

Lumie is the brand that pioneered consumer-grade sunrise alarm clocks in the early 1990s, and that pedigree still shines through.

Equipped with a comprehensive set of wake-up sounds and medical-grade sunrise simulation, the Bodyclock Glow 150 is the best sunrise alarm clock of the many I’ve tested. It comes at a premium price, but could pay dividends for your sleep cycle.

Why we love it
The sunrise effect is among the most convincing I’ve experienced, rivalling the less fully featured (but slightly cheaper) Lumie Bodyclock Spark 100, which is reviewed below. It feels like waking to daylight, or emerging into a clearing after walking through dense woodland.

I found this model easy to control and configure via the five buttons surrounding the digital display. All of the personalisations that really matter are available, including sunrise light intensity and duration.

Crucially, there’s a great selection of alarm tones to choose between – not always the case with Lumie models – ranging from the wonderfully gentle to the brusquely rousing. I preferred “tropical birds” and “waves” to “beep” or “steam train”, although I enjoyed imagining a train enthusiast waking contentedly to the latter.

It’s a shame that … there’s only one colour available: black (with a white lamp). This will suit some bedroom design schemes better than others.

Certification: UK MDR 2002 and EU MDR 2017/745 medical classification
Modes: sunrise alarm, sunset, bedside light
Footprint: W19 x D12cm
Features: light-sensitive auto-dimming display
Brightness settings: five
Sunrise duration: 20, 30 or 45 minutes

Lumie

Bodyclock Glow 150

from £118.96

What we love
Superior sunrise simulation; pleasant alarm tones

What we don’t love
It’s relatively expensive

Read our full Lumie Bodyclock Glow 150 sunrise alarm clock review


Best budget sunrise alarm:
Lumie Sunrise Alarm

Lumie

Sunrise Alarm

from £39.99

What we love
Great value, with good sunrise simulation and sounds

What we don’t love
Less bright than swankier Lumie models

Pete Wise testing sunrise alarm clocks. Lumie Sunrise Alarm Wake up to Daylight Table Lamp, White.
Photograph: Pete Wise/The Guardian
£49 at John Lewis
£39.99 at Amazon

Imagine telling one of your ancestors that you were awoken this morning by your lamp, which was purring at you. I’m not pulling your leg, you might say, it’s all thanks to the Lumie Sunrise’s “kittens purring” alarm tone, which sits sweetly alongside four other natural sounds, including goats bleating and birdsong.

Why we love it
In all seriousness, this is an excellent sunrise alarm clock, and it comes at a standout price. Its sunrise light subtly brightens during the minutes leading up to your chosen alarm time, producing a lovely awakening that really did remind me of natural light.

I found it easy enough to set the Sunrise Alarm’s time and alarm, although pressing some of the buttons can be fiddly. Do keep the instruction manual handy, as there are lots of options and buttons to get your head around.

It ’s a shame that … it lacks a little bedside table appeal. But having said that, this sunrise alarm clock has incredible performance for the price.

Certification: none
Modes: sunrise alarm, sunset, mood, bedside light
Footprint: W17 x D9cm
Features: mood lighting (six colours)
Brightness settings: 10
Sunrise duration: 30 minutes

Lumie

Sunrise Alarm

from £39.99

What we love
Great value, with good sunrise simulation and sounds

What we don’t love
Less bright than swankier Lumie models


Best sunrise alarm clock for heavy sleepers:
Lumie Bodyclock Spark 100

Lumie

Bodyclock Spark 100

from £98.46

What we love
Outstanding sunrise simulation

What we don’t love
Lack of gentler alarm sounds

Lumie Bodyclock Spark 100
£98.46 at Healf
£98.96 at Amazon

I woke up feeling great when I used the medical-grade Lumie Bodyclock Spark 100, which bathes the room in gradually intensifying, sun-like light for a set period before the alarm goes off.

Why we love it
The device is supposed to realistically imitate the lightening shades of a sunrise – and it does so more convincingly than any other brand’s sunrise alarm clock. Depending on your chosen light intensity setting, it can get very bright.

The Spark 100 also has a sunset feature that graduates through the same red, orange and white light colours used with the sunrise function, but in reverse order. After the sunset cycle, the light can either switch off entirely or remain in a gentle night-light mode, whichever you choose.

Besides performing brilliantly as a wake-up light and sunset simulator, the Spark 100 is simply a nicely designed, well-made thing. I appreciated its soft-edged yet robust construction and handy features such as the cable organisation in the base. It’s a pleasure to have on the bedside table.

It’s a shame that … the alarm tone sounds piercing at the higher three of its five volume levels. I found myself settling for a 2/5 – though very heavy sleepers may prefer (or even relish) the louder options.

Certification: UK MDR 2002 and EU MDR 2017/745 medical classification
Modes: sunrise alarm, sunrise, sunset, bedside light
Footprint: W19 x D12cm
Features: tap to snooze, auto-dimming display, adjustable sunrise/sunset duration, adjustable digital display brightness
Brightness settings: five
Sunrise duration: 30 minutes

Lumie

Bodyclock Spark 100

from £98.46

What we love
Outstanding sunrise simulation

What we don’t love
Lack of gentler alarm sounds


Best sunrise alarm for late-night reading:
Philips SmartSleep

Philips

SmartSleep

from £181.99

What we love
Solid design and good sunrise simulation

What we don’t love
One of the most expensive options

Philips SmartSleep Wake-up light with night-time function
£183.99 at Philips
£181.99 at Amazon

This lamp soon felt like part of the furniture on my bedside table. In typical Philips fashion, it’s a good-quality, dependable product, with a solid middle-of-the-road design that won’t look out of place in many bedrooms.

Why we love it
Setup is slick – I was able to set my alarm time, sound and brightness by following the simple prompts on the device’s display, without having to consult the manual. Subsequently tweaking your alarm(s) takes practice, but you’ll master all the controls you need after a few days.

The SmartSleep’s wake-up capabilities are impressive, combining brilliant light with a diverse choice of alarm sounds. It also has FM radio and 3.5mm auxiliary audio input options for the user who has tired of Alpine and gong bath soundscapes. There’s a 5V USB charging outlet at the rear of the lamp, too, which could free up a valuable bedside power socket.

I loved using this model as a reading light, as well as a sunrise alarm. Even when a bright setting is selected, the light seems relatively mellow and restful, which helped me get to sleep after reading pulpy detective novels late at night. The light can be deactivated with a press.

It’s a shame that … it costs such a lot. The SmartSleep has a hefty price to match its impressive performance.

Certification: none
Modes: sunrise alarm, sleep mode with sunset simulation, bedside light
Footprint: W22 x D12cm
Features: FM radio, Aux audio input, “RelaxBreathe” breathing exercises, adjustable sunrise duration, snooze, up to two wake-up profiles (with separate alarms)
Brightness settings: 25
Sunrise duration: 20, 25, 30, 35 or 40 minutes

Philips

SmartSleep

from £181.99

What we love
Solid design and good sunrise simulation

What we don’t love
One of the most expensive options


Best mini sunrise alarm clock:
Lexon Mina Sunrise

Lexon

Mina Sunrise

from £77.94

What we love
Cute, chic design

What we don’t love
Awkward controls

Lexon Mina Sunrise Lamp Alarm Clock
£79.90 at John Lewis
£77.94 at Amazon

My only general gripe with sunrise alarm clocks is that many of them are an aesthetic downgrade on a conventional bedside lamp – but this charming mini model from French brand Lexon is a stylish exception.

Why we love it
The obvious draw here is the design, which comprises a cute, mushroom-shaped light and colourful metal base with a wraparound digital display. It fits very neatly on to a small or well-utilised bedside table.

The sunrise light function roused me gently before the alarm tone (also gently rousing) sounded, and I got up feeling alert. Even though this isn’t a very bright light, it evidently did the trick, and it was suitable for bedtime reading, too.

You can choose from five alarm tones, all of which sound pleasantly full and rich. These include birdsong and water sounds, as well as some loud, piercing alarms that will suit particularly heavy sleepers. Beautifully finished and stoutly made, the Mina Sunrise is a cut above the rest in terms of build quality.

It’s a shame that … the control buttons are on the base, and can’t be seen in the dark without a secondary light source such as a smartphone torch. You’d struggle to adjust the settings in the middle of the night.

Certification: none
Modes: sunrise alarm, sunset, bedside light
Footprint: W11 x D11cm
Features: mood lighting (nine colours), snooze, cordless operation
Brightness settings: five
Sunrise duration: 30 minutes

Lexon

Mina Sunrise

from £77.94

What we love
Cute, chic design

What we don’t love
Awkward controls


Best sunrise alarm clock for couples:
Beurer Wake-up Light WL 50

Beurer

Wake-up Light WL50

from £54.99

What we love
It’s packed with features

What we don’t love
Not all the features are useful

Beurer WL 50 Wake Up Light
£57.56 at John Lewis
£54.99 at Amazon

Thanks to its capability to save two alarms for different times (each with its own sound and light settings), the Beurer WL 50 is a great choice for couples who get up at different times. That’s a rare feature in any sunrise alarm clock – let alone in such a reasonably priced model.

Why we love it
The sunrise mode itself is gentle yet effective, and it’s easy to activate the device as a reading light with a simple, groggy tap. I really liked the alarm sounds you get with the WL 50 too – which is just as well, as there are only two.

Perhaps that narrow choice of alarm tones sounds a little stingy, but it seems less so when you explore the WL 50’s alternative audio options. It doubles up as an FM radio, with space to save up to 30 station presets, which you can listen to throughout the day or use as a livelier alternative to an alarm tone. Bluetooth connectivity and an AUX input expand your listening options further.

Curiously, this sunrise alarm clock can be unplugged (when fully charged) and used on the go for up to three hours. It’s hard to imagine a situation wherein this would be useful, but I appreciate the gesture.

It’s a shame that … the sound quality isn’t great (but it’s good enough for the half-awake).

Certification: none
Modes: sunrise alarm, sunset simulation, bedside light, radio/speaker
Footprint: W11 x D11cm
Features:
FM radio, AUX audio input, Bluetooth audio, portable use (up to three hours), LED mood light
Brightness settings: adjustable
Sunrise duration: 10, 20 or 30 minutes

Beurer

Wake-up Light WL50

from £54.99

What we love
It’s packed with features

What we don’t love
Not all the features are useful


The best of the rest

Pete Wise testing sunrise alarm clocks. Dreamegg Sunrise 1 Sleep Sound Machine.
‘A beautifully designed alarm clock’: the Dreamegg Sunrise 1. Photograph: Pete Wise/The Guardian

Blueair Mini Restful sunrise clock air purifier

Blueair

Mini Restful sunrise clock air purifier

from £169

What we love
Innovative sunrise and air purification combo

What we don’t love
Too bulky for the bedside table

Blueair Mini Restful Sunrise Clock Air Purifier
£169 at Blueair
£169 at Amazon

Best for: an air-purifying sunrise alarm clock

Most of us spend around a third of our time in bed, so a sunrise alarm clock that also purifies your bedroom air seems like a good idea. This model, the Blueair Mini Restful, is heralded as the world’s first.

By sunrise alarm clock standards, it isn’t really mini. I found myself resting it on the floor, where I could see the digital display on the top, rather than putting it on my bedside table.

The sunrise function proved effective, waking me reliably with warm, increasingly bright light before the alarm sounded. As for the purification, the Mini Restful certainly made my air feel fresher after a windowsill-sanding session had kicked up untold volumes of dust. The fan works exceptionally quietly, although I still preferred to run it only during the daytime (this can be automated via the Blueair app’s schedule feature).

It didn’t make the final cut because … the sunrise alarm feature is only accessible via the Blueair app, and I feel that users should have the option to activate it manually. With that said, the app is a pleasure to use.

Certification: none; modes: night light, sunrise alarm; f ootprint: W17 x D17cm; features: air purification, app control, alarm schedule; brightness settings: scale of 0-100%; sunrise duration: 15-30 minutes

Blueair

Mini Restful sunrise clock air purifier

from £169

What we love
Innovative sunrise and air purification combo

What we don’t love
Too bulky for the bedside table


Dreamegg Sunrise 1

Dreamegg

Sunrise 1

from £62.99

What we love
Nicely pairs a textured front with mellow lighting

What we don’t love
Relatively dim light

Dreamegg Sunrise 1 (No App Control)
£62.99 at Dreamegg
£69.99 at Amazon

Best for: soothing sleep sounds

This compact, great-looking device offers something different, with a selection of 29 ambient sounds that can be used as white noise to help you fall asleep. There are also five options for rousing you in the morning, including birdsong, a campfire crackling and, my favourite, waves breaking on a shore. For me, perhaps the only issue with this approach was that the sounds did a better job of putting me to sleep than they did of waking me up.

The Sunrise 1 is a beautifully designed alarm clock, with a softly textured front and foolproof dimmer controls on either side to adjust the light level and digital display brightness. Reluctant risers will be pleased to note there’s a prominent snooze button at the top of the device – though, personally, I’ve rarely felt the need to use this feature while testing sunrise alarm clocks.

It didn’t make the final cut because … its light is a little too dim for my taste.

Certification: none; modes: sunrise alarm, white noise/sleep sounds, bedside light; footprint: W15 x D7.3cm; features: sleep sound timer, nine light colours, five wake-up sounds; brightness settings: adjustable; sunrise duration: Up to 60 minutes

Dreamegg

Sunrise 1

from £62.99

What we love
Nicely pairs a textured front with mellow lighting

What we don’t love
Relatively dim light


What you need to know

Lumie Bodyclock Glow 150
Sunrise alarm clocks that are classified as medical devices, such as the Lumie Bodyclock Glow 150, may be better suited for users seeking a therapeutic effect.

Are sunrise alarm clocks a fad?

A cursory glance at Google Trends search data – or perhaps at your chosen social media platform – will tell you that interest in sunrise alarm clocks has grown sharply in recent years. You may wonder: is this overdue recognition for a useful technology, or is it a murkier wellness trend to file alongside mouth taping and stuffing onion slices into socks?

While there hasn’t been a great deal of academic research into sunrise alarm clocks, some studies suggest they may benefit our sleep health. For instance, researchers from Ohio University found that trial participants had significantly better sleep scores and lower perceived stress and burnout after spending two weeks waking with a sunrise alarm clock while also avoiding smartphone use in bed.

The ultimate test of whether sunrise alarm clocks are a fad will be time. I’m still using mine, as I approach a third winter.

Do sunrise alarm clocks help with Sad?

Sad bright-light therapy involves the use of intense light (in the region of 10,000 lux) to mimic the effects of bright sunlight. Sunrise alarm clocks tend to be far less bright than the average Sad lamp. With that said, light exposure around dawn and in the early morning can influence our circadian rhythms, so even a relatively dim sunrise alarm may still have benefits.

If you’ve been diagnosed with seasonal affective disorder and are looking for a light-therapy device, it’s best to ask your GP which product to use and how to get the most benefit. Sunrise alarm clocks that are classified as medical devices (indicated in the specs each product above) are more likely to suit users seeking a therapeutic effect than models with no medical certifications.

Why does it benefit us to wake with the sun?

Getting up in the dark can feel awful, which makes a lot of sense because light helps our bodies wake up properly.

Humans are diurnal, which means we’ve evolved to be more wakeful, energetic and capable of chasing mammoths over vast distances during daytime. When the brain recognises increasing light at dawn, it sends signals around other regions of the brain and to other organs to calibrate bodily processes including temperature regulation, hormone secretion and metabolism. And when darkness falls, the brain prepares us for sleep – a helpful effect that many of us compromise by looking at bright smartphone or laptop screens.

These processes follow roughly 24-hour cycles known as our circadian rhythms. The term is derived from the Latin words circa (approximately) and diem (day), meaning around a day.

So, the sun is the original and best alarm clock – activating our minds and bodies with light, rather than startling us awake with sound. Think of your sunrise alarm as a plucky stand-in to rely upon during the star’s shorter winter shifts.

Do sunrise alarm clocks work for heavy sleepers?

Some users find the light from their sunrise alarm clock more rousing than others do. If you’re a heavy sleeper, there’s a heightened chance that the artificial sunrise will not wake you (although it might still help you feel more alert on waking).

How you configure your sunrise alarm clock makes a difference. We all sleep more deeply during certain periods of our sleep cycle – and this includes particularly heavy sleepers. So, by setting your sunrise alarm clock to do a relatively long dawn simulation cycle (30 minutes is an option on several models), you give the gradually increasing light more time to rouse you. You’ll often have a choice between multiple light intensity settings, too, so select the brightest one available.

If you’re worried about waking up on time, all of the sunrise alarm clocks featured in this guide can conclude their sunrise cycle with an audio alarm tone. So, they could serve perfectly well as a wake-up alarm, even if they don’t successfully start rousing you before the beep. To be on the safe side, I’d recommend choosing a louder model, such as the Lumie Bodyclock Spark 100.

For more:
The best mattresses to help you sleep better
How to create the perfect bed: seven things our sleep expert swears by
The best sleep aids: 13 of the most-hyped remedies


Pete Wise is a journalist with more than a decade’s experience covering everything from global development and social causes to technology and music. He has written extensively on sleep-related topics, including S ad lamps, intermittent fasting, and the effects of caffeine consumption on sleep. Having felt better than ever in the mornings while researching this article, Pete is now a daily user of sunrise alarm clocks

This article was amended on 29 January 2025 to remove a sentence that incorrectly said the Lumie Sunrise Alarm has UK MDR 2002 and EU MDR 2017/745 certification.

South Africa's Navanethem 'Navi' Pillay Wins 2026 Nobel Peace Prize

Hacker News
www.france24.com
2026-10-09 05:05:40
Comments...
Original Article

The Nobel Peace Prize was awarded Friday to South Africa 's Navi Pillay, the judge who headed the Rwanda genocide tribunal and who last year presided over a UN commission which accused Israel of genocide in Gaza .

Pillay, currently a judge on the International Court of Justice in a case where Myanmar also stands accused of genocide, has been "instrumental in ensuring that war crimes , crimes against humanity , and genocide are prosecuted", said Jorgen Watne Frydnes, the chair of the Norwegian Nobel Committee in Oslo.

Pillay headed the UN Independent International Commission of Inquiry (COI), which does not speak on behalf of the world body, and which last year found that genocide was occurring in Gaza.

Read more Israel is committing 'genocide' in Gaza, UN investigators say

Pillay told AFP at the time that her team had shared "thousands of pieces of information" with prosecutors at the International Criminal Court .

The UN said the prize for Pillay was testimony to the "value" of rights.

The Nobel jury said it was honouring her at a time when "the system of international law is under tremendous pressure and its institutions are under attack".

"At a time of existential challenges – including more wars and conflicts than the world has seen in a long time – international law is no longer just a supplement to peace and security. It is an absolute necessity," Watnes said.

"Navi Pillay's commitment to universal legal principles and her firm moral compass are constants in a long career," the committee said.

The prize – the ultimate diplomatic and humanitarian accolade – is sure to irk US President Donald Trump , whose administration has repeatedly attacked international justice institutions.

Since returning to the White House in January 2025, Trump has made no secret of his desire to win the prize.

"If you clap a little bit more I may share this prize with Trump," Pillay said to a standing ovation captured by Amnesty International Secretary General Agnes Callamard in Nuremberg and posted on the social network X.

Last year, the prize went to Venezuelan opposition leader Maria Corina Machado , who subsequently gave her Nobel gold medal to Trump.

Read more Venezuela's opposition leader Machado presents Trump with her Nobel Prize at White House meeting

The prize comes with a gold medal, a diploma and a prize sum of $1.2 million.

The award will be presented at a formal ceremony in Oslo on December 10, the anniversary of the 1896 death of the prizes' creator, Swedish inventor and philanthropist Alfred Nobel.

The Peace Prize is the only Nobel awarded in Oslo, with the other disciplines announced in Stockholm.

On Thursday, the Nobel Prize in Literature was awarded to Canadian poet Anne Carson for her modern twists on Greek mythology and antiquity that have inspired new forms of writing.

The 2026 Nobel season winds up Monday with the economics prize.

(FRANCE 24 with AFP)

End Of Abyss review – a creepy dollhouse take on Resident Evil and The Thing

Guardian
www.theguardian.com
2026-10-09 05:00:44
PlayStation 5 (version played), Xbox, PC; Epic Games PublishingThis fetchingly presented horror game brings style and scares, but overextends itself with repetition A small band of soldiers enters an abandoned facility, where puckered flesh sprouts from cold steel. It’s a promising but familiar star...
Original Article

A small band of soldiers enters an abandoned facility, where puckered flesh sprouts from cold steel. It’s a promising but familiar start to a sci-fi horror story, with heavy overtones of Alien and The Thing. Neither of those, though, were so … dinky.

End of Abyss’s facility is presented as a kind of a model-village recreation of The Thing’s Outpost 31 that you peer into from above. Your little bobble-headed hero takes up a tiny fraction of the screen, with most of the remainder drenched in foggy darkness, or even blanked out entirely. This is a world of Usborne-style cutaways, where anything outside the walls is total blackness.

This combination of cute and eerie immediately marks End of Abyss as part of the Scandi-chiaroscuro style pioneered by Limbo and Inside (from Playdead, in Copenhagen) and Little Nightmares (from Malmö-based Tarsier Studios, where the founders of End of Abyss developer Section 9 cut their teeth). Those games, though, were all puzzle-platformers. End of Abyss is a survival-horror game in the mould of PS1-era Resident Evil, which took a similarly zoomed-out approach, using fixed, CCTV-reminiscent camera angles. It’s a great way of controlling each scene’s composition for maximum aesthetic value – and, of course, to set up scares.

Drenched in darkness … End of Abyss.
Drenched in darkness … End of Abyss. Photograph: Section 9/Epic Games Publishing

End of Abyss delights in lovingly decorated dioramas, with bodies and viscera laid out just so , illuminated by the flickering light of a CRT screen and some orange-glowing item (a valuable key or weapon upgrade) dangling just out of reach. As you’re studying these details, trying to figure out how you might reach that desirable object, at the edge of your vision a monster will peel itself from the darkness and attack before you can consciously register its presence.

What follows is a dance of backpedalling and firing your pistol, praying that it’s loaded with enough ammo to finish off the advancing assailant before it can catch up to you. Or, worse, your retreat carries you into another nest of monsters. These are foundational thrills of the genre, and End of Abyss keeps them intact as it shrinks them down to dollhouse size. They might be scarier still, in fact, because manually aiming a gun from a top-down perspective can be fiddly, and End of Abyss’s control scheme is so confounding (who puts reload on the right thumbstick?) that you’re fighting muscle memory as much as the monsters.

On top of this survival-horror foundation, though, End of Abyss layers elements of Dark Souls, Metroid and Hollow Knight – and here it overextends. This facility is big and complex enough for you to get lost in, filled with doors that only open from the other side and seemingly separate zones that join up in unexpected ways. These can be some of video games’ finest pleasures, when done right, but they make for an uncomfortable fit in a game that relies on a character so slow-moving that they can be threatened by a shambling zombie.

End of Abyss.
Striking gloomy style … End of Abyss. Photograph: Section 9/Epic Games Publishing

That striking gloomy style, meanwhile, is something of an achilles heel when you’re trying to tell one room from another. It’s not helped by a pause-screen map that struggles to convey the interlocking territory, and, at the time of playing, is prone to getting confused over questions as fundamental as which doors are locked.

This leads to a lot of unnecessary backtracking and, with every repeat visit, those carefully staged scenes lose some of their sheen. A composition that had you gawping the first time can’t hope to maintain that effect on the dozenth visit, while the shadow-peeling scares turn out to run on the clockwork logic of a fairground ghost train. Reaching the final boss after 12 hours, with much of the map still greyed out and other stretches tromped over endlessly, I’m left feeling exhausted, with little inclination to explore the other half of the game that (according to the completion percentage) remains unseen. Contrary to its fetchingly diminutive presentation, End of Abyss might be just too big for its own good.

  • End of Abyss is out now; £22.69

Citrix warns admins to patch new NetScaler RCE flaw immediately

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 04:27:42
Citrix has warned IT administrators to patch systems immediately against a new critical vulnerability affecting NetScaler ADC networking appliances and NetScaler Gateway secure remote access solutions. [...]...
Original Article

Citrix

Citrix has warned IT administrators to patch systems immediately against a new critical vulnerability affecting NetScaler ADC networking appliances and NetScaler Gateway secure remote access solutions.

Tracked as CVE-2026-107406 , this flaw stems from a memory overflow weakness that attackers can exploit to gain remote code execution (RCE) on targeted devices or trigger a denial-of-service state that can cause crashes.

To be vulnerable, NetScaler ADC and NetScaler Gateway appliances must be configured as a Security Assertion Markup Language (SAML) Identity Provider (IdP) or Service Provider (SP).

"We strongly urge affected customers to review the advisory and upgrade impacted NetScaler instances to the recommended versions as soon as possible," the company said . "As of the publication of the bulletin, Citrix is not aware of any unmitigated exploits of this vulnerability."

Citrix advised customers to upgrade vulnerable NetScaler ADC and NetScaler Gateway appliances to:

  • NetScaler ADC and NetScaler Gateway 14.1-73.46 and later,
  • NetScaler ADC and NetScaler Gateway 13.1-64.29 and later releases of 13.1
  • NetScaler ADC 14.1-FIPS 14.1-73.46 FIPS and later releases of 14.1-FIPS
  • NetScaler ADC 13.1-FIPS and 13.1-NDcPP 13.1.37.283 and later releases of 13.1-FIPS and 13.1-NDcPP

Internet threat watchdog Shadowserver tracks over 21,000 IP addresses with NetScaler fingerprints exposed on the Internet (including just over 1,500 Gateway instances and nearly 20,000 NetScaler ADC appliances).

However, at the time, there is no information on how many are honeypots, have already been patched, or have vulnerable configurations.

Internet-exposed NetScaler appliances
Internet-exposed NetScaler appliances (Shadowserver)

While Citrix has not found evidence that attackers have begun exploiting CVE-2026-107406 in the wild, the company warned of several other NetScaler vulnerabilities that attackers have abused since the start of the year.

For instance, in March, Citrix urged customers to patch two other NetScaler security issues (CVE-2026-3055 and CVE-2026-4368) days before threat actors began abusing them .

More recently, in September, it released security updates for two more actively exploited NetScaler RCE zero-days (CVE-2026-88771 and CVE-2026-88772) that let attackers deploy custom web shells and tunneling malware, steal credentials, gain root access, and spread into victims' internal networks.

Earlier this month, Citrix issued emergency updates to address a NetScaler denial-of-service zero-day flaw (CVE-2026-88779) that researchers and admins later said could also be exploited to gain remote code execution.

The U.S. Cybersecurity and Infrastructure Security Agency (CISA) has flagged 27 actively exploited Citrix vulnerabilities since November 2021, including seven abused in ransomware attacks.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

OpenAI projected to bring in $20bn less in revenue than expected

Guardian
www.theguardian.com
2026-10-09 04:06:09
Questions raised over AI growth as ChatGPT maker forecasts this year’s revenue at $50bn, way below the $70bn signalled before OpenAI has revealed that it is making about $20bn less in projected revenue than it had recently indicated to investors, raising questions about the break-neck growth rate in...
Original Article

OpenAI has revealed that it is making about $20bn less in projected revenue than it had recently indicated to investors, raising questions about the break-neck growth rate in demand for AI.

The ChatGPT-maker company has told investors that its revenues for this year would reach $50bn (£37bn), a projection based on sales up to the end of September.

However, this is significantly less than the $70bn that it had signalled in information provided to investors last month, which was widely reported.

Forecasts of annualised revenues by the leading artificial intelligence players, including by OpenAI’s rival Anthropic , the maker of Claude, are closely watched by markets as an indicator of overall demand for a technology that is attracting huge investment.

OpenAI is in early-stage talks to raise $30bn in a funding round that values the business at about $1.4tn.

News of the $20bn gap buffeted US tech stocks on Thursday, with the tech-led Nasdaq closing down by 1.4%. Chip giant Nvidia fell 2.9%, Oracle was down 5.5% and Micron declined 4.8%.

The discrepancy arose from attempts by OpenAI investors to provide a more direct comparison with how projected revenue is measured by Anthropic, which hit $65bn in forecast revenue by the end of July.

Anthropic includes the revenue from sales via cloud partners, such as Amazon’s AWS and Google Cloud, while OpenAI does not.

Last month, Sam Altman, the chief executive of OpenAI, said that the company would not float on the stock market this year as had been expected , citing safety concerns over AI.

Altman’s decision followed cases of AI agents going rogue to hack external systems and AI ​safety researchers quitting their companies concerned about the technology’s risks.

Democrat and Republican politicians are calling for new rules to govern AI systems, after two researchers from Anthropic warned that the lightning pace of development of AI without safeguards could lead to the extinction of the human race .

Anthropic is expected to push ahead with plans for an initial public offering (IPO) as soon as next month.

skip past newsletter promotion

OpenAI’s most recent fundraising was in March when it closed a $122bn round of finance at a valuation of $852bn.

Two months later Anthropic announced it had raised $65bn, valuing the company at $965bn .

On Friday, it emerged that Masayoshi Son, the founder of Japanese investment company SoftBank, is seeking to raise up to $100bn from Gulf states as he scales up his already mammoth investments in AI.

SoftBank has aggressively pivoted toward AI, including making a $65bn investment in OpenAI, and discussions have been held with Gulf investors including the United Arab Emirates, the Financial Times reported.

Last month, SoftBank raised $11.1bn in the largest high-yield corporate bond sale globally on record, paying investors yields as high as 9.75%, to fund its bets on AI and semiconductor assets.

Programming Isn't Special

Hacker News
blog.glyph.im
2026-10-09 03:44:36
Comments...
Original Article

Creative Work

Writers went on strike to get protections against “AI” . Thousands of artists have signed open letters in protest of “AI” . There are so many copyright lawsuits from creative industry groups against AI that there’s a whole dedicated website for it . Popular YouTubers absolutely hate it . If they’re also musicians, they REALLY hate it . Across all creative industries, there is a concerted push to reject this technology.

Yet, almost unique among creative fields, many experienced programmers remain convinced that it’s fine to use “AI” for programming. We do seem to hate it, and it’s making us all miserable , and what it’s doing to our industry, but we are using it anyway .

A lot of the justification of this resignation seems to be to be because programming is not Art. If the tool can get the job done, and the job is just functional, then why does it matter?

It does matter, though. It matters because we shouldn’t be using AI to produce Art, and programming is Art .

Art can be Mundane

Some people will say that programs cannot be art because programs are functional , rather than being expressive . Programs are mundane whereas art is transcendent.

This is based on a distorted understanding of what Art actually is .

In John Berger’s “Ways of Seeing”, he names this type of distortion “ mystification ”. His example of this process is both amusing and illustrative. I encourage you to read it in its entirety.

In summary, though: Berger critiques the florid prose of an art historian describing a commissioned group portrait, including phrases like “subtle modulations of the deep, glowing blacks” and “harmonious fusion”. The portrait is described as sublime, in nearly ecstatic terms.

Berger reveals that the reality of this portrait is that a poor old painter needed some work, and some officials probably thought it might be nice to have an official portrait. So they paid some money to the poor old man, and he painted it, and then they had a painting. It’s a well-executed portrait of a group of people. Beautiful, even. But it was work commissioned for a fairly mundane purpose and it suited that purpose just fine. It was not, and is not, a divine relic.

Culturally, we are prone to mystifying painting, and sculpture, and film, and music. We imbue them with “subtle modulations”. We ignore their functional aspects — we desire decoration, amusement, and distraction — and focus on their emotional impact.

Don’t get me wrong: I love me some good aesthetic philosophy. I think it’s great to really examine our reactions to artwork and to try and gain a deeper understanding of our culture and our selves through media analysis. If anything we really need to do more of it.

This does not mean that the creation of such works is mystical or that it should be venerated beyond any other sort of labor.

Not least of which other types of labor that are adjacent to, but not as culturally venerated, as fine art. We tend to mystify the work of a novelist, but to denigrate the work of a journalist. In reality, the functional prose of the journalist is no less important and deserves no less respect.

Although they might be far below the ethereal realm that novelists inhabit in our collective imagination, even journalists receive more respect and thus more mystification than lowly copywriters. Yet, there is no transcendental distinction between “novelist” and “copywriter”; the many of the skills are the same, and the distinction is merely an accident of commerce and opportunity.

In fact, many famous writers have famously inhabited both roles . This is not an accident! Working with words professionally, even (perhaps especially) mundane words, is excellent practice for working with words in a more purely artistic context, because even mundane creativity is still artistic.

Code can be Beautiful

One thousand Internet years ago, when I was in my late teens, I would describe myself as a “code poet”. I was relentlessly mocked for this as what the Youth would today call “being cringe”, and at the time was referred to as “pretentious”.

I succumbed to the peer pressure, removed it from my email signature and my bio. While I still believed strongly in the parallels, I accepted that — socially, at least — comparing code to poetry, or indeed to Art, was a silly thing to do.

However, I never abandoned the idea, in my heart.

The thing that I am most well-known for , the invention of Deferred , was specifically an aesthetic reaction to the tedium of passing callback and errback parameters to every single remote procedure call in an RPC client/server application. Those two callbacks got the job done just fine. But they were ugly, and annoying to work with.

Deferred is an intentional poem about asynchronous task execution, with a deliberate eye to the aesthetics of the problem and the experience of using it. It was influential because of its focus on aesthetics.

I do not want to overstate the beauty or profundity of this minor contribution, or indeed its durability. That a poem exists does not mean it is a great poem, merely that it is a poem.

Our aesthetic culture around programs is more like folk epic poetry than fine art, so the influence of this contribution is less about its specific enduring power than it is about its influence on what came next; from MochiKit.Async to JQuery Deferred to JavaScript Promises and eventually to async / await ; a long chain of different artisans each adding something of their own until the original has all but dissolved. (And I wasn’t the “original” here, either, as I drew heavily from the E language’s Promises, among other things.)

In order to make code into a deliberate artistic expression, one must have spent quite a bit of time contemplating the problem domain. Without having experienced the tedium of manually passing a thousand callback parameters, I would have had neither the skill, nor indeed the motivation , to bother creating such a thing.

Now, most code does not have to be like this. Most code does not get to be like this. Most code is functional, workday code. Most code could not make a lady weep . It’s just copy-writing, if you will.

As I explained previously, most writing couldn’t do that either. Most writing is just copy-writing, too. Most visual art is advertising. Most live music performance is background music in bars that will go largely ignored.

However, code that is intentionally aesthetically designed tends to be important, both socially and technologically.

We do have some tradition of self-mystification in software. As Abelson memorably put it , “Programs must be written for people to read, and only incidentally for machines to execute.”, so we have long had some conception of programs as highly expressive, even if we can’t always agree on what they’re expressing or to whom. We will occasionally wax poetical about the philosophical implications of a particular piece of software. This is not unique to a single piece of software, either; more than one community has indulged in similar philosophizing .

The expressive and aesthetic qualities of software are not limited to reading source code or interacting with other programmers via APIs, either. For example, every year, Federico Viticci does a review of Apple’s new operating system, which is (among other things) an aesthetic critique. Such a project would not be possible if the software did not have an aesthetic impact on its users.

Not to mention that every video game review is also a software review.

A Brief Aside about Software Literacy

It does make me a bit sad that we don’t have much of a critical reading tradition in the software community. Literate Programming is often praised, but rarely practiced.

Moreover, it makes me sad that users have a pretty jumbled idea of what goes into making software, that programming literacy is pretty low, and that modern programming practices often deliberately produce a bad mental model of what the software is doing so it’s even harder for the user to understand. The aesthetic experience of software is often wildly detached from its internal state.

While all of these problems predate AI by years or indeed decades, that’s no reason to enthusiastically make them worse.

Defend The Mundane

If we use AI to erase all the copy-writing, all the graphic design, all the boring mundane art, and yes, all the boring custom WordPress theme development, then we will be removing all the practical opportunities for the vast amounts of practice and contemplation required for people to elevate their craft to eventually achieve great things. Education is great, but the majority of true skill development happens on the job and always has.

This doesn’t mean that we can’t use abstractions, or automation, to make our work easier. Programming is the art of abstraction, of understanding how to compose smaller ideas into bigger ones, of how to understand the automation of a larger system by understanding the rules that automate smaller ones and understanding how to combine them.

When we use “AI” to eliminate that understanding rather than raise it up to a higher level, to entirely destroy that creative decision-making process, we do a disservice both to ourselves as programmers and to our users. We would be doing a disservice to our users and our downstream fellow developers in the same way that a visual artist would be doing a disservice to their viewers or a musician would be doing a disservice to their listeners if they served them auto-generated filler instead of their own creative output.

Slop is slop, no matter the medium.

Each mundane project has some tiny chance — let’s say, something like 0.1% — of achieving greatness. If we do a single project with AI, then sure, whatever, there’s almost no chance that that project was going to be the one hit to create that career-defining moment for an engineer working on it. If we make a habit of doing all projects that way, though, we take the total likelihood of those moments of greatness to “definitely sometimes” to “never”.

The precisely appropriate ways in which to resist AI encroachment on all software development lie well beyond the margins of this one short post. How much you can resist and which specific uses you should resist are up to you. But it is worth resisting in software just as much as it would be worth resisting in any creative medium.

Programming isn’t special. It’s just Art, and Art is the most human — and thus, the most universal — thing that there is.


Acknowledgments

Thank you to my patrons who are supporting my writing on this blog. If you like what you’ve read here and you’d like to read more of it, or you’d like to support my various open-source endeavors , you can support my work as a sponsor !

Russell Coker: en-html.org is a Scam Site

PlanetDebian
etbe.coker.com.au
2026-10-09 03:27:23
Currently a scam group is sending out email to the administrators of web sites that link to a variety of dead domains. They claim to be the legitimate operators of the dead domains in question and request that the links change to mirrors of the web sites under en-html.org. Their end goal appears to ...
Original Article

Currently a scam group is sending out email to the administrators of web sites that link to a variety of dead domains. They claim to be the legitimate operators of the dead domains in question and request that the links change to mirrors of the web sites under en-html.org. Their end goal appears to game search engines by getting links from a lot of old web pages and later use that high ranking for selling SEO optimisation.

If you have made the mistake of linking to something under en-html.org then I recommend that you change the link to the original content on archive.org.

If you receive email from the en-html.org domain then ignore it, or configure your mail server to reject it.

I am seriously considering configuring the DNS servers I run to return no valid data for any requests under that domain.

Also I will reject all future requests to update links in old blog posts. The very small number of people who want to see what I linked to in old posts can use archive.org.

Palantir’s Tom Watson says ‘mob rule’ must not dictate awarding of government contracts

Guardian
www.theguardian.com
2026-10-09 03:20:33
Former Labour deputy leader says tech firm would work with a Reform UK government on immigration crackdowns Tom Watson, the former Labour deputy leader who recently joined Palantir, has warned against “mob rule” when it comes to awarding public contracts. Lord Watson, now a senior vice-president at ...
Original Article

Tom Watson, the former Labour deputy leader who recently joined Palantir, has warned against “mob rule” when it comes to awarding public contracts.

Lord Watson, now a senior vice-president at the US tech corporation, said UK ministers could get themselves “in a lot of trouble” as he was questioned about concerns raised about the government working with his new employer.

Palantir was co-founded by the Trump-supporting billionaire Peter Thiel and has provided AI-powered software to the Israeli military and the White House’s ICE immigration crackdown , leading to a public and political backlash against its deepening involvement in British public services.

The prime minister, Andy Burnham , is under significant pressure from Labour MPs and unions to ditch Palantir from government contracts, including a £330m software deal with the NHS.

The company is also fighting Sadiq Khan in court over the London mayor’s block on a £50m contract to use its AI in Metropolitan police investigations. It is seeking to win more public sector work in the UK, where it already has an annual turnover of £427m.

Watson told the BBC podcast Political Thinking with Nick Robinson: “One of the things I’d say to my former colleagues is: do you want to let the rule of law to lead procurement practice, or do you want to let mob rule to lead procurement practices? Because you get yourself in a lot of trouble if you go down on the latter one.”

He added: “I think we are very targeted by the people that are targeting Israeli companies. We’re not an Israeli company, but because of our work in Israel, we found ourselves in the middle of the row of the Gaza protests.”

Watson told the podcast he would work with a Reform UK government on immigration crackdowns if the situation arose, saying: “We don’t actually work in that sector, but yes, of course we would.”

He called Palantir “the most interesting company on the planet” as he announced his new role last month. The company said his job would be, in part, to “deepen the social and economic value its work creates through better British public services, jobs and skills”.

Watson was a defence minister and a minister for digital engagement in Gordon Brown’s government. Since stepping down from parliament in 2019, he has been an adviser to the gambling and music industries and, since 2024, he has been a part-time adviser to Palantir.

skip past newsletter promotion

Palantir said Watson had taken a leave of absence from the House of Lords and had relinquished his parliamentary pass while he worked for the company in London .

The Labour MP Chi Onwurah, who chairs the science, innovation and technology committee, which has raised concerns about Palantir, told BBC Radio 4’s Today programme: “Tom is not the first politician to be blinded by tech hype. The key issue is we can’t be so dependent on one company. It’s a US company, subject to US legislation regarding access to our data.”

OTel-Native by Design – Building Products That Export to Any Observability Stack

Hacker News
opentelemetry.io
2026-10-09 02:54:45
Comments...
Original Article

With contributions from Dan Gomez Blanco (New Relic).

If you’re building self-hosted software or a SaaS product, your users will eventually ask to send logs, traces, and metrics to their own observability stack, whether to satisfy compliance, manage costs, or centralize all their observability data in one place.

Locking them into your built-in dashboards or limiting exports to certain vendors creates unnecessary friction. Instead, supporting export to any OpenTelemetry (OTel)-compatible backend is a vendor-neutral, future-proof practice that gives users the freedom to choose their observability stack.

This post outlines how you can design your product so users can export their logs, traces, and metrics to an OTel backend when they want to.

Enabling telemetry export via the OTLP standard allows users to own and
analyze their data on the platforms of their
choosing.

The four observability signals

OpenTelemetry defines four signal types, all carried over the standard OpenTelemetry Protocol (OTLP) :

  • Logs : Event records, request/access logs, and application logs with timestamps and metadata.
  • Traces : Distributed traces and spans so users can see request flows across services and correlate them with logs.
  • Metrics : Counters, gauges, and histograms (e.g., request rates, latency, error rates).
  • Profiles : Samples that show where applications consume resources during execution.

The same export story applies to all three (logs, traces, and metrics): let users configure an OTLP endpoint and push telemetry to it. You can support one, two, or all three signals depending on what your product generates.

Many platforms that support OTel export support at least traces and logs, and an increasing number now ship with metrics support. Designing for all three from the start avoids having to retrofit later.

What a “good” telemetry system looks like

A solid export story has a few clear properties for every signal you support:

  • Vendor-neutral: Users can point at any OTel-compatible endpoint — a Collector instance , or one of the many backends that support OTLP directly — without building custom integrations for each.
  • No deep custom development: External platforms (or your users’ tooling) can integrate using standard OTel SDKs and the OTLP protocol instead of proprietary APIs.
  • Rich context preserved: Exported data should include metadata, timestamps, and trace/span correlation where available (e.g., log records linked to trace IDs), so users can debug and analyze data in their own backend without losing context.
  • Support for Semantic Conventions: Adherence to the Semantic Conventions ensures that telemetry data remains standardized and is easily interpretable by any compatible backend. It also reduces the cognitive burden on the end-user to reason about how the software system works, be it a first-party or third-party system.

If your design aligns with these principles for the signals you emit, you’re in step with how modern platforms think about observability export.

Two contexts: where does your product run?

The way you add OTel export depends on who owns the system that produces the telemetry. Getting this straight helps you choose the right approach.

Self-hosted software

Your product is an application or system (e.g., an identity server, a service mesh, a database) that customers install and run in their environment (their data center, their cloud, their Kubernetes cluster).

Here, you instrument your product with OpenTelemetry. When the customer configures an endpoint (e.g., via environment variables or a config file), your application exports telemetry from the process they’re running.

Since OpenTelemetry provides such standard configuration options , your users can expect the same configuration experience they already have with any other OTel-instrumented system.

The export happens in the customer’s environment; they control the binary and the destination. Examples: Keycloak, Kuma.

Cloud platforms

Your product is a platform where customers deploy their own apps or use your managed services (e.g., PaaS, serverless, API gateway). The workload runs on your infrastructure.

Here, you add a platform feature, such as “Telemetry Drains” or “Observability Destinations” that lets customers configure where to send telemetry. Your platform collects telemetry from their workload (and from your own services, like routers) and forwards it to the customer’s OTLP endpoint.

The export is done by your infrastructure, not by an application binary the customer runs. Examples: Heroku, Cloudflare.

In short, user-deployed software → focus on built-in instrumentation and an endpoint config. A platform you operate → focus on configurable export destinations that your infrastructure uses to forward data.

How others do it

This post focuses on four integrations — Kuma, Keycloak, Cloudflare, and Heroku — as representative examples across the two contexts above, but they’re far from the only ones already exporting telemetry natively via OTLP. The OpenTelemetry Integrations page features libraries and services that provide native instrumentation or first-class plugins.

Below is how these four handle all three signals (or a subset) and what you can learn from them.

Platform Logs Traces Metrics Deployment Mode Notes
Kuma Yes Yes Yes Software users deploy Separate policies per signal, all OTel
Keycloak Yes† Yes Yes Software users deploy †Logs in preview; same endpoint for all
Cloudflare Workers Yes Yes No* Platform *Metrics export not yet supported
Heroku Yes Yes Yes Platform User chooses signals via --signals

The self-hosted approach: Kuma and Keycloak

If your users deploy your software into their own environments, the best practice is to ship the application pre-instrumented with OpenTelemetry and expose configuration flags for their OTLP endpoints.

Kuma

Whether customers run Kuma’s control and data planes on their own Kubernetes clusters or VMs, it comes pre-configured to emit logs, traces, and metrics to an OTel backend.

Users configure the export, which runs from their Kuma deployments, through the mesh policies:

  • MeshAccessLog: Routes access logs to an OTel Collector (endpoint + attributes such as mesh name, start time).
  • MeshTrace: Handles distributed traces with configurable sampling and tagging.
  • MeshMetric: Exposes control and data plane metrics. Integrates with OpenTelemetry and Prometheus.

For example, sending traces to an OTel backend looks like this:

# MeshTrace policy
backends:
  - type: OpenTelemetry
    openTelemetry:
      endpoint: otel-collector:4317

Sending access logs follows the exact same pattern with a different policy:

# MeshAccessLog policy
backends:
  - type: OpenTelemetry
    openTelemetry:
      endpoint: otel-collector:4317
body:
  kvlistValue:
    values:
      - key: mesh
        value:
          stringValue: '%KUMA_MESH%'
attributes:
  - key: start_time
    value:
      stringValue: '%START_TIME%'

Further reading:

Keycloak

Keycloak is another example of self-hosted software providing great telemetry export functionality.

Instead of requiring a separate sidecar or platform feature, users just pass a startup flag pointing to their Collector endpoint, and the Keycloak process itself handles the export.

It uses a single telemetry endpoint but provides granular flags to toggle specific signals:

  • Traces: tracing-enabled=true (covers HTTP requests, DB, LDAP, outbound HTTP/IdP).
  • Metrics: Detailed metrics exposed via the same OTel integration.
  • Logs: Currently in preview and disabled by default ( --features=opentelemetry-logs --telemetry-logs-enabled=true , with --telemetry-logs-level for level filtering).

Defining the endpoint, optional headers, and preferred protocol (gRPC or HTTP) looks like:

bin/kc.sh start --telemetry-endpoint=http://my-otel-endpoint:4317 --telemetry-protocol=grpc

Further reading:

The platform approach: Cloudflare and Heroku

When you control the infrastructure, a straightforward user experience is to handle the export at the platform level, pulling data from the user’s workload and pushing it to their destination.

Cloudflare Workers

Because users run their code directly on Cloudflare’s infrastructure, it handles the export through the Observability Destinations platform feature. It offers users a streamlined design where they can configure an OTLP endpoint in their dashboard. From there, Cloudflare automatically pushes traces and logs from Workers to that destination.

While metrics aren’t supported yet, the trace data provides deep, end-to-end visibility as it records handler calls, bindings, outbound fetch calls, and more. Users can also configure the sampling rate in their wrangler.toml .

Further reading:

Heroku

Heroku takes a slightly different, highly configurable approach with Telemetry Drains . Users add a destination by specifying the endpoint, transport protocol and headers, and then explicitly choose which signals to export .

Heroku’s platform then gathers data from both the user’s application (via the OTel SDK) and first-party services (like their Router) and pushes it to the destination.

heroku telemetry:add <endpoint> --app <app-name> --signals traces,metrics,logs --transport http --headers '{"Authorization": "ingestion key"}'

Giving users granular control over which signals to export is a pragmatic design pattern, especially for teams looking to manage data volume and ingestion costs.

Further reading:

Designing your export model

Across the three essential telemetry signals, the fundamental architectural question remains the same: will your platform require the user to poll an API for the data at regular intervals, or will it deliver the telemetry directly to a user-defined endpoint?

The classic approach: custom polling APIs

Platforms have traditionally exposed telemetry by providing APIs that users must poll at regular intervals, handle pagination for, and ingest the results into their own backends.

It’s a reasonable starting point if you already have a mature, well-tested API for logs or metrics, since extending it is often easier than building a new push path. However, it comes with real costs:

  • You shift a significant operational responsibility onto your users. They must now build scalable polling systems that can manage polling intervals, paginate API responses, retry on failures, and backfill missing data.
  • Users might build custom solutions that don’t scale, don’t adhere to your standards, and require significant upkeep on their end as your API schema develops alongside your platform.
  • Achieving near real-time delivery becomes significantly harder, which is often a critical requirement for latency-sensitive signals like traces and metrics.

For logs, a pull-based implementation often looks like this (e.g., CloudWatch Logs–style ):

state: last_end_time
every poll_interval:
  start_time = last_end_time
  end_time   = now()
  next_token = null
  do:
    response = FilterLogEvents(log_groups, start_time, end_time, next_token)
    emit(response.events)
    next_token = response.nextToken
  while next_token != null

Here, you would need similar state-tracking logic for the metrics or trace APIs.

Despite forcing users to write custom code to convert your API responses into standard formats, the custom polling model is workable for every supported signal when you cannot reach for a more standardized approach like Prometheus.

For new designs, however, it should not be the default.

The standards-oriented approach: OTLP

For developer-focused, real-time telemetry, OTLP push has become the dominant pattern.

Instead of waiting to be asked, your service (or an OpenTelemetry Collector you run) actively exports logs, traces, and metrics directly to the user’s configured endpoint using OTLP (over HTTP or gRPC).

It uses one vendor-neutral, industry-standard protocol for all telemetry, meaning you avoid reimplementing telemetry delivery logic for each distinct signal you support.

Further, OTLP provides first-class support for structured data and metadata, helping it automatically preserve crucial context, such as linking specific log records to their parent trace IDs.

From the user’s perspective, it is practically plug-and-play. Any OTel-compatible backend can ingest the data in near real-time without requiring custom polling logic.

Building the export experience

When implementing the export model in your product, seek to maximize flexibility with minimal configuration.

Let users configure an OTLP endpoint

Start by letting users provide their own OTLP endpoint and any necessary authentication headers (like an ingestion key).

But don’t stop there!

To allow users to control export volume, simplify data management, and reduce costs, let users explicitly toggle which signals they want to export — following Heroku’s example.

Standardize the architecture

Under the hood, you have two main options: use the OpenTelemetry SDK directly within your services to emit data, or run an internal OTel Collector that gathers your system’s telemetry and re-exports it to the user’s endpoint.

Sticking to standard OpenTelemetry environment variables (like OTEL_EXPORTER_OTLP_ENDPOINT ) makes the underlying plumbing reliable and easy to document and reason about.

Keep semantics consistent

Beyond just OTel-based environment variables, make sure you maintain consistent semantics across all your signals. Semantic Conventions is your reference for naming attributes and schemas consistently, and for exactly how logs and metrics relate back to trace and span IDs. Weaver , which builds on top of Semantic Conventions, lets you define your own attribute names and schemas, keep them in lockstep with evolving code and infrastructure, and maintain federated semantic convention registries.

When a user ingests your telemetry into their observability backend, everything should connect end-to-end to tell the complete story.

One benefit of this approach is that you avoid the need to build different vendor integrations. By exporting telemetry via OTLP, you enable users to transform and ingest it in their desired formats.

For example, a user might wish to forward logs to their backend and to an object store like S3 to meet compliance requirements.

Routing telemetry to the user

As you design the configuration UI for your users, you’ll need to decide how granular your telemetry routing should be. You generally have two paths, each catering to a different type of user.

Single endpoint

For the vast majority of users, a single endpoint configuration is ideal. Here, the user inputs one base URL, and your exporter appends the standard OTLP paths ( v1/traces , v1/metrics , and v1/logs ) internally.

Per-signal endpoints

Large-scale customers, or those managing complex observability setups, may wish to send telemetry signals to different platforms.

OTLP natively supports this with signal-specific variables defined by the OTEL_EXPORTER_OTLP_<SIGNAL>_ENDPOINT pattern, along with corresponding header configurations . For example, to configure a specific endpoint for logs, you would use the OTEL_EXPORTER_OTLP_LOGS_ENDPOINT .

Exposing this per-signal routing in your application is technically optional, but it is a major value-add for advanced users.

Running Collectors to manage multi-tenancy

Once you’re pushing OTLP (for any combination of logs, traces, metrics), you still need to decide how to run Collectors to manage multiple tenants.

Your Collector architecture needs to scale along two dimensions of growth: onboarding more users, and the volume of new telemetry generated as you ship new features.

One Collector per tenant

If your architecture already isolates tenants at the infrastructure level, you can deploy a dedicated Collector instance for each customer. In this case, every instance has a dedicated configuration pointing directly to that specific customer’s export endpoint.

This provides strong logical isolation guarantees. Slowdowns or misconfigurations in one customer’s pipeline do not affect other customers.

Although you can build a custom Collector binary that only ships vital components, deploying hundreds or thousands of Collector instances will become resource-intensive.

Because of this tradeoff, this architecture is usually the best fit for enterprise SaaS products where strong multi-tenant isolation is a strict requirement and customers might have complex endpoint configurations.

The Collector-per-tenant architecture provides strong isolation guarantees at
the cost of increased resource usage.

Shared Collector with static pipelines per tenant

Here, “static” means each tenant’s pipeline and routing rules are defined up-front in the Collector’s configuration file, rather than provisioned dynamically at runtime.

This is close in spirit to the gateway deployment pattern : all your platform’s telemetry funnels into a single, centralized Collector. Inside, you define separate pipelines per tenant — the routing connector is a natural fit here, directing data to the right pipeline (and therefore the right external endpoint) based on resource attributes like a tenant ID.

This pattern works well for teams at early or moderate scale, where operating a single deployment is simpler than managing per-tenant instances. You only have to monitor and scale one deployment, and all routing is configured in one place.

However, you must be comfortable managing a growing dynamic configuration file as your customer base grows.

The shared Collector pattern is easier to monitor and maintain as all exports
route through one Collector instance.

Custom polling APIs vs OTLP: the verdict

When the choice is between making your users poll custom APIs and letting them ingest over a shared standard, most modern, developer-focused platforms should opt for the latter. Reach for custom polling APIs if standardization isn’t an option.

OpenTelemetry’s unified protocol preserves rich context, delivers data in near real-time, and has been proven at scale across cloud and self-hosted deployments by Cloudflare, Heroku, Kuma, and Keycloak. Plus, OpenTelemetry’s independence from a particular vendor means users have the freedom to switch between observability backends based on their business needs, without requiring a complete overhaul of their telemetry pipelines.

OpenTelemetry adoption does not come for free, though, as your team must invest time to learn and implement OpenTelemetry, and build necessary documentation to guide users and internal teams on best practices.

Because of OTel’s rising adoption across the observability landscape — the project recently graduated from CNCF — this upfront investment will pay dividends as you integrate tools in your platform that rely on OpenTelemetry to export their own telemetry.

Putting it all together

To conclude, you don’t need to build bespoke integrations to let your users export telemetry to their own backends.

If you’re ready to implement OTel-native export in your application, here’s a summary of the key architectural and design steps to follow:

  • Decide which telemetry signals to support out of logs, traces, and metrics. You should ideally support all three, but start with what your product generates.
  • Use OTLP to export those signals via the OTel SDK or a Collector. The same push-based architecture works for all three signals.
  • Let users configure a destination endpoint and optional auth headers. Consider per-signal endpoints for teams with more complex setups.
  • Allow users to enable or disable individual signals to control data volume and costs.
  • Document your endpoint format (gRPC/HTTP), required headers, and attribute/schema semantics per signal so users can confidently rely on the data in their backends.
  • Choose a Collector topology: one Collector per tenant for strong isolation, or a shared Collector with per-tenant pipelines for lower operational overhead.
  • Provide an example config or env var snippet so users can get started quickly.

The points above also encapsulate the golden rules that Cloudflare (except for metrics), Heroku, Kuma, and Keycloak follow: default to push, stay vendor-neutral, and document the contract .

Designing for all three signals using open standards from the start removes friction, reduces your engineering overhead, and empowers customers to make the best use of their data on their own terms.

If you’ve already implemented OTel-native export in your product, consider adding it to OpenTelemetry Integrations . It’s a great way to surface your work to the broader community.

Show HN: OldRoll, a free vintage photo editor for the browser

Hacker News
www.oldroll.io
2026-10-09 02:40:14
Comments...
Original Article

Use OldRoll Web to transform your photos with Digicam, Film, Y2K, 90s, VHS, and Dreamy retro effects. Fine-tune the light, color and texture, all in your browser.

100% free online · No installation · Mobile ready

Original photo of friends at night Friends at night with bright digicam flash

Original Digicam

Explore OldRoll Popular Retro Filters

Start with the looks people return to, from crisp digicam flash and disposable-camera warmth to soft film grain and dreamy color.

Browse All Filters & Effects

Edit Your Photos to Make Them Yours in OldRoll Web

Start with a camera-inspired look, then shape the light, texture and layout around your photo.

Adjust the light and warmth of a window-lit portrait

Adjust Light, Color and Focus

Fine-tune exposure, contrast, warmth, saturation and lens blur. Crop to the part that matters, then compare with the original.

Use a sunset beach photo as the base for frames and stickers OLDROLL · 09 14 ’26

Add Frames, Effects and Stickers

Layer film frames, flashes, grain, light leaks and stickers without losing the camera look underneath.

Make a Photo Collage

Bring one photo or several moments into an OldRoll layout, then choose a solid, gradient or textured background.

Who is OldRoll for?

Retro photo editing for posts, portraits, campaigns, cover art and visual stories.

Content Creators

Give posts, reel covers and everyday photo dumps a consistent camera-inspired mood.

Photography Lovers

Try film, disposable-camera and light-leak looks, then fine-tune exposure, color and grain.

Subculture Creators

Build Y2K, street, lo-fi and camcorder-inspired visuals without flattening every image into the same preset.

Online Sellers

Turn product, packing and lifestyle photos into warmer campaign visuals while keeping the item easy to see.

Music Creators

Create cover art, teaser posts and backstage images with haze, grain and after-hours color.

Anime Creators

Give cosplay, convention and character-focused photos a dreamy, VHS or direct-flash finish.

Why Choose OldRoll to Make Your Photos Retro?

OldRoll starts with recognizable camera character, then gives you room to decide how far the edit should go.

Camera-inspired

Explore recognizable camera moods such as CCD color, disposable warmth, direct flash, VHS texture and film grain.

Start in your browser

Choose a photo from desktop or mobile and begin editing without installing desktop software.

More control

Adjust the strength, compare with the original and fine-tune the details before saving the result.

Built for a set

Move from one photo to a complete strip or layout while keeping the visual direction consistent.

How to Make an Aesthetic Photo with OldRoll

  1. Upload a cafe portrait to start a retro photo edit

    Upload a Photo

    Choose a photo from your phone or computer. Start with a clear portrait, street scene or travel photo.

  2. Apply the Film look to the same cafe portrait in OldRoll

    Choose a Retro Look

    Try Digicam, Film, Y2K, Disposable Camera, 90s, VHS or Dreamy, then adjust the intensity to suit your photo.

  3. Save the edited cafe portrait with an instant-print frame

    Download and Share

    Compare the edit with the original, preview the finished result and save your photo.

The OldRoll Camera Experience, Recognized

Camera-inspired creativity, loved by a worldwide community.

2B+

Photos & Videos Edited

Everyday moments, reimagined with OldRoll.

What Creators Say About OldRoll

Small moments. Favorite cameras. Feedback from the OldRoll community.

Decades in color

Finds the vintage rendering convincing, with worthwhile paid options and unobtrusive advertising.

Patrícia Bernardo

Room to create

Appreciates continuing additions to the film library and increasingly capable editing tools.

Riley Richards

Beyond the camera

Praises film rendering and Studio editing; hopes for a future desktop edition.

An H35 favorite

Enjoys the H35 look and requests video capture with that style.

Instant-print moments

Likes the aesthetic results, especially the instant-print looks.

Rubelaine Baro

A lasting choice

Remains happy after purchasing lifetime access during a sale.

Easygoing creativity

Finds it approachable and atmospheric, although advertisements can be irritating.

Malak Mohammed

Enjoying photography again

Feels more satisfied taking pictures without needing expensive camera equipment.

Reyna Liebknecht

Retro with flexibility

Enjoys varied nostalgic looks and editing freedom, but reports slowdowns.

Disposable-camera nostalgia

Likes the analog direction; requests more realistic light leaks and collage options.

Editorial summaries of selected OldRoll app reviews. Names and dates are from Google Play .

FAQs About OldRoll

What is OldRoll?

OldRoll is a browser-based aesthetic photo editor for creating Digicam, Film, Disposable Camera, 90s, VHS, Dreamy and other retro looks.

Can I edit photos already in my phone gallery?

Yes. In your mobile or desktop browser, select Choose a Photo and upload an existing picture. You can start with a photo from your phone gallery instead of taking a new shot. The mobile app also supports importing photos for editing.

What can I edit after choosing a filter?

You can use the available light, color, texture, crop, frame, effect and sticker controls to shape the final result. Available settings may vary by Camera or Filter.

What is the difference between Camera and Filter resources?

Camera resources recreate a fuller camera character, while Filters are focused looks that can be applied and adjusted inside the editor.

Is OldRoll free?

The OldRoll mobile app includes a large collection of free resources. To celebrate the launch of OldRoll Online, the current online version is 100% free, with all current features available. No paid subscription is needed for this online launch offer.

Can I also use the OldRoll app?

Yes. The official OldRoll app offers a dedicated camera-first experience on iOS and Android.

How can I give my photos a warm 90s look?

Start with a daylight portrait, a picnic or a travel snapshot. Choose a 90s look for warm yellow tones, faded shadows and an aged-print finish. Keep the effect subtle enough to preserve skin tones, and avoid starting with an image that is already heavily filtered.

How is a Y2K filter different from a 90s filter?

A Y2K look leans toward early digital cameras: low-resolution texture, direct flash, cool cyan or violet color and a pixel-style date stamp. A 90s look feels more like an aged print, with warm yellow color and softer contrast. Indoor party portraits work especially well for Y2K.

Which photos work best with a Dreamy filter?

Choose a portrait with backlight or side light, visible hair edges and bright highlights. A Dreamy effect softens those highlights into a gentle glow while keeping the face readable. Flat, dark photos usually show less bloom than a naturally backlit scene.

How can I make a photo booth-style picture with OldRoll?

A photo booth look combines several portraits in a strip or grid. Use pictures with consistent light and framing, then arrange them in a collage layout. For a camera-led experience on your phone, explore the mobile app's Booth camera; available layouts can differ between the app and online editor.

Can I change the timestamp on a retro photo?

OldRoll supports customizable date stamps. In the online editor, check the selected camera for its available date settings. A visible timestamp is a creative overlay, not proof of when the original photo was taken. Keep an unedited copy if you may want a version without the stamp.

Edit a flash portrait with the OldRoll film editor

Take the Old Camera Experience Anywhere

Edit photos with OldRoll in your browser, or explore the full camera-first experience with the OldRoll app on your phone.

MXC - a sandboxed code execution system

Hacker News
github.com
2026-10-09 01:51:29
Comments...
Original Article

Microsoft eXecution Container (MXC)

MXC is a sandboxed code execution system for running untrusted code (model output, plugins, and tools) on Windows, Linux, and macOS. It provides multiple containment backends, from OS-native process sandboxes to full VMs, behind a unified containment model and typed SDKs.

Features

  • Cross-platform : Windows, Linux, and macOS support with platform-appropriate containment backends
  • JSON-based configuration : Versioned container-creation requests and security policies
  • Multiple containment backends : ProcessContainer, Windows Sandbox, LXC, Bubblewrap, Seatbelt, MicroVM (Nanvix), Hyperlight, IsolationSession, and WSLC
  • Policy-driven sandboxing :
    • Filesystem policy : Read-only, read-write, and denied path lists
    • Network policy : Proxy support, outbound controls, and backend-dependent host filtering
    • UI policy : Clipboard, display, and GUI access controls
  • State-aware lifecycle : Provision, start, execute, stop, and deprovision persistent containers
  • Rust, .NET, and Node SDKs : Versioned APIs for one-shot and state-aware execution
  • Diagnostics : Tools to understand access-denied failures in a container

What is MXC?

MXC is an SDK dependency that builds into your app.

flowchart LR
    App["Your application<br/>Launch API"] --> SDK["MXC SDK<br/>Rust / .NET / Node<br/>(in process)"]
    SDK --> Backend["Selected backend<br/>(in process)"]
    Backend --> Container["Isolated workload<br/>ProcessContainer / WSLC / Bubblewrap / ..."]
Loading

Your application specifies:

  • The container type
  • The containment rules
  • The workload command

MXC validates the request, selects the backend, and launches the workload in the resulting container.

What container types are supported?

MXC runs workloads through platform-appropriate container backends on Windows, Linux, and macOS.

Runtime platform Default backend Other backends Minimum host OS
Windows 11 x64 / ARM64 processcontainer windows_sandbox *, wslc , microvm *, hyperlight *, isolation_session Windows OS-version support
Linux x64 / ARM64 bubblewrap lxc , microvm , hyperlight -
macOS ARM64 / x64 seatbelt - -

* These backends are experimental .

How do I use MXC?

Install an SDK through your package manager. You do not need to clone this repository.

SDK Package
Rust https://crates.io/crates/mxc-sdk
.NET https://www.nuget.org/packages/Microsoft.Mxc.Sdk
Node https://www.npmjs.com/package/@microsoft/mxc-sdk

The Node and .NET packages include the native runtime assets. The Rust crate builds the MXC SDK, engine, and selected backends into the consuming application.

Non-SDK consumption: Platform-specific executor binaries, such as wxc-exec.exe , accept JSON container-creation requests defined by the stable schema . Use for testing or when the SDK cannot be embedded in your app.

Running a contained workload

For complete SDK samples, see the Rust, .NET, and Node samples .

Sample Node snippet

import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';

const request: ContainerRequest = {
  command: 'node -e "console.log(\'hello from container\')"',
  network: { egress: { default: 'deny' } },
  timeoutMs: 30_000,
};

const child = await spawn(request);

See the runnable streaming standard-I/O sample and the SDK API reference .

My application won't run in the sandbox!

Your application will hit access issues when running in a sandbox, until you've had time to tune your containment rules. We're here to help.

Debug console mode

Native executors normally reserve standard input, output, and error for the workload. Use --debug for MXC diagnostic output:

wxc-exec.exe --debug config.json

See MXC diagnostics for the complete developer reference.

Audit mode

Warning: --audit turns off all sandbox security for the workload being analyzed. Never use it to run untrusted code.

Audit mode helps a policy author find access-denied failures and reconstruct a ProcessContainer policy that grants the files and capabilities a trusted tool actually needs. On supported Windows releases, run:

wxc-exec.exe --audit policy.json

MXC records the observed accesses and produces policy-authoring artifacts. See logging access denied for safe deny-and-record diagnostics, audit outputs, and supported workflows.

Telemetry

Official Microsoft builds can send optional diagnostic telemetry to Microsoft. Telemetry is off unless the individual run opts in, the Windows user has explicitly consented, administrative policy permits collection, and your application enables the telemetry option in a contained workload request. An administrator can block telemetry but cannot grant consent for the user.

Local open-source builds are not configured to route telemetry to Microsoft, and telemetry is a no-op on non-Windows platforms. See telemetry policy and consent for controls and privacy details.

Building from source

Build from source when developing MXC, changing the native runtime, or using the standalone executor binaries instead of a packaged SDK. Repository builds produce the platform-native runtime and executors and stage the native assets used by the Node SDK.

Build prerequisites are:

  • Rust , pinned to version 1.93 by src/rust-toolchain.toml
  • Node.js 24 or later and npm
  • The platform toolchain and prerequisites described by the selected backend

Build

Windows

build.bat --all             # Release build for current architecture

Linux

./build.sh --all            # Release build

macOS

./build-mac.sh --all        # Release build for native architecture

Documentation

Consumer documentation

Document Repository location Purpose
SDK samples samples/ Runnable Rust, .NET, and Node scenarios
SDK API reference docs/api-reference/ Supported V1 operations and types
Container lifecycle docs/container-lifecycle.md Persistent container lifecycle overview
Logging access denied docs/logging-access-denied.md Diagnose blocked accesses and author policy
Telemetry docs/telemetry.md Consent and administrative controls
Backend guides docs/backends/ Platform and backend prerequisites and behavior

Repository contributors should start with the MXC development documentation .

Contributing

See CONTRIBUTING.md for contribution guidelines.

License

See LICENSE.md for details.

Hackers get $1,262,000 for 98 zero-days at Pwn2Own Ireland

Bleeping Computer
www.bleepingcomputer.com
2026-10-09 01:41:04
The Pwn2Own Ireland 2026 hacking contest has concluded, with hackers collecting $1,262,000 in rewards after exploiting 98 zero-day flaws. [...]...
Original Article

Pwn2Own

The Pwn2Own Ireland 2026 hacking contest has concluded, with hackers collecting $1,262,000 in rewards after exploiting 98 zero-day flaws.

Ikotas Labs security researchers won this year's Pwn2Own Ireland edition with 42.5 Master of Pwn points and $361,000 earned over the three-day contest after hacking the Samsung Galaxy S26, OpenAI Codex, and the Oracle Autonomous AI Database.

They also collected the competition's top reward of $300,000 on the third day after chaining multiple zero-days to hack the Google Pixel 10.

Xint took second place with $240,000 and 27.5 Master of Pwn points, while Team ZyGoat secured third with $125,000 in prizes and 27.5 Master of Pwn points.

Interrupt Labs, Ikotas Labs, and Nguyen Thanh Dat of Viettel Cyber Security hacked Samsung's Galaxy S26 flagship on the first day , but the vendor already knew some of the exploited bugs . In all, competitors collected $388,500 after demonstrating 32 zero-day flaws.

On the second day , competitors earned $232,500 in cash awards for 45 unique zero-day vulnerabilities, with the highlight being PetoWorks, KAIST Hacking Lab's Kyeongmin Kim, and a team including Dimitrios Valsamaras, Ken Gannon, and Tenia Valsamara from CENSUS Labs, who took down the Galaxy S26 three more times.

On the third day , hackers rooted the Samsung Galaxy S26 again and took down the Google Pixel 10 three times. In total, today security researchers exploited 21 zero-days for $641,000 in cash on the final day of the contest.

Pwn2Own Ireland final leaderboard
Pwn2Own Ireland 2026 leaderboard (ZDI)

This year, 29 research teams targeted products across seven categories : mobile phones (Samsung Galaxy S26 and Google Pixel 10), AI infrastructure, AI coding apps, messaging apps, smart home devices, printers, and a new category focused on wellness healthcare devices.

Apple's iPhone 17 was also a potential target, with a maximum award of $300,000 for a remote hack, but no contestant registered for an attempt.

Trend Micro's Zero Day Initiative (ZDI) organizes the competition to identify zero-day flaws before attackers exploit them in the wild. Pwn2Own rules require all devices and products to run the latest firmware versions, and contestants to compromise the target and demonstrate arbitrary code execution.

Vendors must patch zero-days disclosed during the Pwn2Own competition within 90 days before ZDI publicly shares details.

During Pwn2Own Ireland 2025, hackers demoed 73 zero-day flaws to earn $1,024,750 . Summoning Team won the contest and collected $187,500 after hacking the Samsung Galaxy S25, the Home Assistant Green, the QNAP TS-453E NAS, and multiple Synology devices.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Show HN: Quake ported to safe Rust, playable in browser

Hacker News
quake-srp.pages.dev
2026-10-09 01:22:58
Comments...
Original Article

QUAKE·SRP

fetching engine…

click (or press Enter) to start  ·  then press any key for the menu

“We Need To Tell the Story”: Literary Advocates Nationwide Reflect on Five Years of Relentless Attacks on the Freedom To Read

Portside
portside.org
2026-10-09 00:31:04
“We Need To Tell the Story”: Literary Advocates Nationwide Reflect on Five Years of Relentless Attacks on the Freedom To Read jay Fri, 10/09/2026 - 00:31 ...
Original Article

This fall marks the start of year six of relentless book bans—that’s more than half a decade . While the movement has shifted since its start, there is little question that we’re in for several more years of tireless advocacy on behalf of the right of all people in this country to read and access diverse, inclusive library collections.

[This week’s Literary Activism post is dedicated to a report pulled together by the collaborative efforts of Kelly Jensen (Book Riot), Tasslyn Magnusson, Sarah Lamdan (American Library Association), Stephana Ferrell (Florida Freedom to Read Project), and Arielle Haughee (Freedom to Read Project), as well as dozens of right to read champions nationwide. This report reflects on five years of escalating book censorship, including challenges, opportunities, and successes. It does not cover prison censorship during this period; that will be addressed in a future piece.]

In early 2021, one year into a radically different way of living in America thanks to the COVID-19 pandemic, book bans began popping up with a regularity not seen in quite a long time. It started in the spring, continued to expand through the summer , and became a full-blown movement by the fall. Concerned individuals—a mix of those who were parents and those who were not–flooded school board meetings with a litany of now-familiar complaints over the “inappropriate” content in books for children and teenagers. Many earned a moment or two of viral fame in conservative media and on social media, encouraging others to speak up in their schools about the importance of “parental rights” regarding books.

Book bans were but the next step in a movement that saw a small subset of parents raising their voices at school board meetings, demanding their rights be honored over mask and vaccination requirements during a global pandemic. Many of these same people complained about the rights of trans youth in public schools, whether that was over their ability to use a bathroom or play interscholastic sports with the team that aligned with their gender. Books were but another tool by which a small, politically motivated contingent could demand that their voices—and their power and money—be the ones dictating who does and does not belong in public spaces. Books became a common ground for both the political extremists and the fringe groups seeking new ways to permit themselves distance from what defines the public and the responsibilities therein.

A September 2021 Fairfax, Virginia, school board meeting —where a public comment about the content of Gender Queer and Lawn Boy was performed, recorded, and widely shared on social media—is often cited as the moment when it became clear that the book banning trend was a full-blown, organized political movement.

From there, book censorship exploded. States across the country began seeing a rise in local-level book challenges and removals, with Florida and Texas leading the nation in their efforts to develop state legislation around the issue of books in schools. Simultaneously, partisan interests began demanding “educational choice,” pushing for state voucher programs that would funnel public tax money into private education. Now public schools were put in a position of standing up for the rights of all students while simultaneously recognizing that such a commitment to their mission could mean less funding—and more harm perpetuated on those with the greatest need.

It became increasingly clear in late 2021 and early 2022 that none of this was by accident. Highly connected and coordinated groups like No Left Turn in Education and Moms For Liberty, to name two, were being supported by well-funded right-wing institutions to deploy such censorious efforts on the ground while advocating for restrictive laws across the country. The 2022-2023 era of book bans brought extremist takeovers of school boards. By 2023, the noise had caught the attention of federal legislators, who held a Senate Judiciary Committee hearing on book bans . Just months before the hearing, though, Illinois would begin to change the conversation by passing the first freedom-to-read/anti-book-ban bill in the country. Twelve more states would join that trend by mid-2026.

What began seemingly on the ground level with individual book titles only escalated. Books, libraries, library workers, and educators were seeing themselves subject to numerous attempts–successful and not–to state-level legislation. These laws included everything from requiring ratings on books before public schools could purchase them to year-long jail sentences for librarians whose collections contained books that some entity somewhere may deem “ harmful for minors ” (also known as librarian criminalization bills ). Some of these laws are on the books today, such as Arkansas’s Act 372 and Iowa’s Senate File 496 , Texas’s Senate Bills 12 and 13 and Florida’s House Bill 1467 ; others have failed to pass–though not failed to fuel similar legislation elsewhere.

Early attempts to develop partisan book rating and review systems, such as BookLooks by Moms for Liberty , have become more sophisticated — and sometimes pricey —endeavors. Censors eager to make a buck have turned the fear of lawsuits or funding cuts into an opportunity to champion their software or systems as solutions to the manufactured crisis. They’ve also contributed to and profited from the chilling effects in education and the raging quiet censorship happening in libraries nationwide.

The courts have played a significant role in shaping book bans, too. Literary advocates like Leila Green Little fought local book bans through the federal court system, seeking to take the case to the Supreme Court. While she and her fellow plaintiffs did not achieve the much-hoped-for success, their efforts highlighted the constitutional crisis at hand. The same unwelcome outcome awaited in Mahmoud v. Taylor , fundamentally altering what public schools could and could not teach in the classroom without explicit parental opt-outs. While all of this is about the restriction and outright removal of access to materials for young people, it’s also about the systematic erasure and eradication of anyone outside the narrow confines of white supremacist ideals. The most commonly banned books mirror the very people experiencing the most targeted personal and legislative attacks in this country: people of color, queer people, young people, and anyone of a marginalized gender. Other advocates pursuing literary justice through the court system include school librarians in South Carolina , as well as partnerships between authors, publishers, the American Civil Liberties Union, and ordinary taxpayers in Colorado , Idaho , Iowa , Florida , and Utah .

While numerous lawsuits over state book banning bills make their way through the judicial system and numerous federal-level book ban bills simmer in both the House and Senate, there is much to appreciate as well. The Librarians , a documentary film about the targeted attacks and abuses of library workers since 2021, won a Primetime Emmy Award. The film, which saw screenings and discussion panels held across America in 2025 and 2026, led to a richer understanding of what was happening not in some faraway places, but right in the viewers’ backyards.

Librarians who saw their careers upended for standing up against censorship have also served as vital reminders of the need for advocacy. They’ve also seen successful court cases over wrongful termination –see Suzette Baker , Patty Hector , Rhea Young , Brooky Parks , and Terri Lesley . No one wants to be in this position, but every one of these librarians stood up for their patrons’ rights and the ethical obligations of their work. That is to be commended and to serve as a reminder that the work of librarianship is never easy. It’s gotten only more difficult in this moment of escalating censorship.

One of the most heartening things to come of this challenging decade so far, though, has been the dedication of ground-level advocates championing the right to read and their public democratic institutions. From coast to coast, from red state to blue state, from the formally organized to the scrappy, parents, students, and literary advocates of all stripes have come together to say enough is enough. They’re taking back their rights to fully funded, well-supported public schools and libraries. This includes not only holding those institutions accountable for banning books, but also ensuring that people in their communities know what’s happening, where it’s happening, and how they need to show up to speak out. Their advocacy is being seen and heard not only in America but across the globe.

And that’s exactly what we’re bringing here in this Five Year Report on Book Censorship in America. As with our 2025 Book Censorship Wrapped , which looked at last year’s trends in book bans, the Five Year Report aims to not only explore the trends and themes of book censorship in the 2020s. It also puts the voices of those on the ground at the forefront. What you’ll see here are the voices, stories, experiences, and insights of nearly [two dozen] groups working to support the freedom to read. They range from groups working at the national level, such as Authors Against Book Bans and Brooklyn Public Library’s Books Unbanned, to groups working on the local level, including Annie’s Foundation in Iowa, the Texas Freedom to Read Project, and so many more.

The Five Year Report is a collaborative project from the American Library Association’s Office of Intellectual Freedom, Book Riot, and the Florida Freedom to Read Project. But rather than share only our insights, the Five Year Report solicited input from countless groups in early to mid-2026. These groups included folks whose work has been more specific to prison censorship, too–and while you won’t find that insight in this report, stay tuned for a special report that will highlight the trends, insights, challenges, and opportunities for prison literary advocacy later this fall. What you will find here is an array of wins and challenges, roadblocks and opportunities, both through the rearview mirror of the last five years and in the driver’s seat for the next year or two or ten.

This is in no way a comprehensive picture of book censorship in the 2020s so far. There’s no way any report could ever do that, particularly as we understand the hurdles that make reporting and recording censorship a Herculean task–the loss of local media, the suppression and reimagining of factual information, and the pervasive nature of quiet/soft/internal censorship to name just three. But the insights here are robust, and they underscore the vital need for those who champion the right to read to show up in their own communities—it really makes a difference. It creates the kind of sustainable change that turns advocacy efforts into democratic infrastructure.

On The National Level

When we look at book censorship in the national landscape, definitive patterns emerge. Research from the American Library Association’s Office of Intellectual Freedom tracked 5,668 books banned from libraries and 920 restricted due to relocation or parental-permission requirements in 2025. This hits two new milestones: the highest number of titles censored in a single year, and the highest percentage of challenged books resulting in censorship since tracking began in 1990.

Dr. Emily Knox, Interim Dean and professor in the School of Information Sciences at the University of Illinois Urbana-Champaign—who testified before the U.S. Senate Judiciary Committee about book bans in 2023—also notes this increase in censorship.

“Book banning is much more visible across the country,” she said. Knox explained that the local nature of censorship efforts creates a complex landscape. “There’s not a systematic way to get all schools and libraries to update their policies at the same time. Each community is uniquely vulnerable.”

There are trends with the type of books being banned over these last five years. Marginalized identities are disproportionately being targeted. PEN America found that of the 4,235 titles challenged in 2025, 44% targeted characters or people of color and 39% represented the experiences of LGBTQ+ characters or people. There is also an increasing shift in censorship, expanding from fiction into nonfiction. These include histories, biographies, reference books, and science topics, removing access to factual resources for young people.

Arguably, the biggest national trend has been that censorship has morphed from being individually-driven to special interests and government actors. The American Library Association found that 92% of book challenges in 2025 were initiated by pressure groups, elected officials, administrators, boards, or other decision-makers, with fewer than 3% originating with parents.

State laws are also increasingly driving local censorship decisions. Laws have been enacted that require the use of book rating systems, establish criminal penalties for librarians, mandate statewide blanket removals, and create review mandates. The result is often anticipatory obedience or “soft censorship.” Titles disappear from shelves without going through any formal challenge process.


What looked like it began as local, grassroots efforts now leaves few questions when it comes to the ultimate goal of these political interest groups: federal laws that protect the partisan interests and doctrine of one group at the expense of the First Amendment rights of all nationwide. The Department of Defense banned nearly 600 titles from DoD Education Activity schools last year, while the Supreme Court ruled on one noteworthy case that impacts book censorship. In Mahmoud v. Taylor , parents objected on religious grounds to their children encountering LGBTQ+ books in class. The Court ruled in their favor, saying that the lack of an opt-out encroached on their religious freedom. This decision is being weaponized to target inclusive policies . In Little v. Llano County , an en blanc panel in the Fifth Circuit found that a public library’s decisions to remove contested books were not subject to First Amendment protections. The Supreme Court declined to hear the case, leaving the Fifth Circuit ruling in place, though the limitations of the ruling at the Fifth—that it was applicable to only three states—has not stopped other states from choosing to demand censorship, citing Little v. Llano County as justification.

There is more censorship legislation on the horizon. Among the slate of current federal bill proposals is H.R. 7661 . H.R. 7661, which has passed through committee and could be heard by the full House, targets “sexually oriented material” for minors, using federal education funding as leverage to guarantee compliance with its restrictions.

“I think much more of the public is comfortable with censorship than we realize, and the current news climate makes breaking through with these stories nearly impossible,” says Maggie Tokuda-Hall, author of Love in the Library and founding member of Authors Against Book Bans , adds.

Advocates across the nation are continuing to support the freedom to read, no matter how much resistance they face. “The movement to resist censorship has gotten more organized, grassroots activists in different areas of the country have found more opportunities to talk to each other, and our side’s legislative advocacy has improved,” said Philomena Polefrone, who shared her insights while working as Associate Director of American Booksellers for Free Expression. “Stymying the 2025 bills in Florida and Texas would have been impossible without tactical improvements on the legislative side of things. Proactive freedom to read bills have also been able to pass that have shown the effectiveness of our messaging.”

The next five years will be crucial for the freedom to read, and advocates have no other choice but to continue to rise to the challenge. No one is coming to save democracy for us. It’s our responsibility to continue to do the work, build community and coalition, educate people about what’s at stake, and encourage advocacy and activism from every angle.

On The State Level


Read full report here

USPS Hires Security Service With History of Human Rights Abuse

Portside
portside.org
2026-10-09 00:21:22
USPS Hires Security Service With History of Human Rights Abuse jay Fri, 10/09/2026 - 00:21 ...
Original Article

Nearly 1,000 armed guards have descended on the United States Postal Service, deploying to at least 55 facilities across the country ahead of Election Day.

The security officers were contracted through multinational private security company Prosegur, according to a Raw Story investigation .

Prosegur has a history of alleged human rights violations, including an incident as recent as 2024 in which the company’s Brazilian subsidiary reportedly prevented indigenous people from accessing food and medical care at a nearby town, per an assessment by the Ethics Council of the Norwegian Government Pension Fund.

Prosegur’s guards are currently located at USPS facilities in Atlanta, Chicago, Denver, Indianapolis, Phoenix, San Diego, and Tampa, according to internal memos obtained by Raw Story.

One postal contractor that spoke with the digital outlet said she was “alarmed” that the armed security guards were predominantly confined to “deep blue states or swing states.”

Frank Albergo, the executive director of the Postal Police Officers Association union, said that the armed guards were deployed at facilities with more than 1,000 employees.

“No one from the postal service will be supervising these armed guards. It will be completely a private contractor who controls these armed guards, so you basically have private contractors in and around ballots without any federal control. To me, that’s crazy,” Albergo told Raw Story.

“It just could be a red flag. Will it have an impact on the election? Who knows? But you certainly could argue that it has an effect,” Albergo continued. “It might give Trump an excuse to call into question the integrity of the election. That’s the problem. It’s the perception of it.”

Cathy K. Purcell, a senior public relations representative for USPS, told The New Republic Thursday that the introduction of armed guards at its facilities “has absolutely nothing to do with elections.” She noted that the deployments have been “ongoing since last year.”

“These guards are deployed to provide security and act as a deterrent to criminals or employees who may wish to compromise the mailstream or potentially harm the people inside our facilities,” Purcell wrote in a statement. “Our use of armed and unarmed guards at these key government facilities is consistent with the use of armed and unarmed guards at other critical local, state, and federal government buildings such as hospitals and schools.”

Yet those with knowledge of Prosegur and its practices are still suspicious. Mark Ungar, a political science professor at the John Jay School of Criminal Justice in New York who has researched private security firms such as Prosegur, suggested to Raw Story that the company’s presence could afford the Trump administration a retroactive alibi.

“The Trump administration is clearly taking every step they can to control voting, and they’re going to use the Postal Service to do that,” Ungar said. “Any contract with Prosegur, any way that removes accountability from the American people of the Postal Service, which they’re already doing, I think, is concerning at the very least.”

Since the throes of the Covid-19 pandemic, Trump has repeatedly argued that the Postal Service should be dismantled to prevent mail-in voting—a practice that he has repeatedly accused of fraud despite zero evidence and his own apparent preference to vote by mail.

The Supreme Court buoyed one of Trump’s more aggressive voter suppression efforts in August, permitting the White House to move forward with new mail-in voting requirements and an executive order that transferred control of the mail-in voting process to “ Trump lackey ” (according to Colorado Secretary of State Jena Griswold) Postmaster General David Steiner.

The judiciary decided the following month, however, that the new requirements would not affect the 2026 midterm cycle, effectively thwarting Trump’s eleventh-hour attempt to create a conservative edge in the race to control Washington.

Yet Steiner has already attempted to flex the power of his position. On Wednesday, Steiner informed the Senate Homeland Security and Governmental Affairs Committee that, under a new rule, the USPS would not offer ballot services to states that refused to hand over their voter rolls to the Trump administration.

Meanwhile, the president promoted mail-in voting to his supporters on Monday, urging them to cast their ballot however possible, briefly reversing course on his performative opposition to mail-in voting in the face of what looks like it will be a blue tsunami next month.

Ellie Quinlan Houghtaling is an associate writer covering breaking news at The New Republic. Her work has also appeared in The Daily Beast, The Guardian, Gothamist and The Real Deal.]

From New York City to Berlin: Campaigning on the Issue of Affordability – the Rise of Left Politicians

Portside
portside.org
2026-10-08 23:56:46
From New York City to Berlin: Campaigning on the Issue of Affordability – the Rise of Left Politicians jay Thu, 10/08/2026 - 23:56 ...
Original Article

As wars and trade conflicts have caused prices to skyrocket, the issue of affordability has  increasingly affected people across the world. In rural areas, feelings of anger have been largely directed at rising gas and grocery prices, as the reliance on cars makes citizens pay extra attention to the price of fuel. In cities like Berlin or New York, grocery prices are just as  relevant, but rising costs are most noticeable through rent prices.

Unlike gas prices, where global politics play a major role, the causes of rising rents in large cities can be attributed to various factors. A globally driven cause is private, profit-seeking investment groups who own large amounts of apartment buildings and are, therefore, both willing and capable of systematically driving up rents. A local, rather political reason is the  lack of rent-controlled apartment buildings, especially in city centers. Another reason is gentrification, which is caused by well-off people moving into inner-city neighborhoods for the “local experience,” thereby displacing working-class residents.

The people of New York decided earlier this year that the person they most trusted to decrease the cost of living is Zohran Mamdani, a card-carrying member of the Democratic  Socialists of America (DSA). The Uganda-born, Muslim candidate ran on promises of freezing rent, faster and cheaper public transport, universal childcare as well as city-owned grocery stores. He also proposed increasing taxes on rich citizens.

Just a few months later, the craze for a leftist mayor crossed the Atlantic and reached the German capital Berlin. The party “Die Linke” (The Left) recently won the Berlin mayoral election with 25.7% of the votes cast, way ahead of the second-placed CDU which came in at 18.8%. The latter is currently running the city in a coalition with the center-left Social  Democrats (SPD). According to exit polls, up to 42% of voters in Berlin decided their vote based on a party's plans to lower rent costs, with 37% of voters believing that Die Linke had the best plans to do so.

From Zohran Mamdani to Elif Eralp

The mayoral candidate for Die Linke is Elif Eralp, a 45-year-old daughter of Turkish immigrants and mother of two. The parallels to Mamdani are striking: both have a migration  background, both are democratic socialists, and both ran campaigns on making their cities affordable again. Elif Eralp and Die Linke, however, explicitly took a page out of Mamdani’s playbook and modelled their campaign after his, focusing on lowering rents, cheaper public transport, and cleaner neighborhoods. In fact, her campaign slogan was “Making Berlin  Affordable.”

During his electoral campaign, Mamdani faced a fierce opposition, both in the Democratic primary and in the general election. A major reason for this opposition was Mamdani’s promise to tax the rich, his critique of Israel’s genocide in Gaza, as well as his immigrant background and Muslim faith, which was extensively used for fear-mongering. After the Berlin election, Eralp is confronted with similar hostility – also because of her party’s economic policies, her immigrant background, and the Left Party’s critique of Israel’s government.

The similarities go even further. Both campaigns were not driven by “big money” but by  “people’s power ": thousands of enthusiastic young activists knocking hundreds of thousands of doors, and both campaigns outdid their opponents with their savvy social media campaigns.

There is a significant difference, however, in how the cities’ political systems work: While in  the US electoral system, mayors are elected directly, in Germany people vote for a party. The share of votes is then translated into the party’s strength in the city council, which elects the mayor. This means even though Die Linke came out way ahead of the other parties, it still  needs coalition partners in order to elect Eralp and to govern the city for the next five years.

Before the election, the “left camp” of Die Linke, SPD, and Greens was poised to form a coalition government, as they had already done between 2016 and 2023. Since the election on September 20, however, there has been a staunch effort by a variety of mostly right-leaning groups, newspapers, and business lobbyists to prevent Eralp from being elected mayor. This campaign against Eralp and Die Linke revolves around two arguments: First, the  Left Party’s critique of Israel, which in the German political context is almost unheard of (Germany has been Israel’s second-closest ally after the US); and second, Die Linke’s plan to expropriate the city’s largest real estate companies (such as Vonovia SE), which own more than 3,000 apartments in the city each.

This plan goes back to a popular vote in 2021, when a large majority of voters (59%)  approved the policy measure taking said apartments, around 220,000 in total, out of the  hands of private corporations and turning them into publicly owned housing associations.  The argument behind this move is that because currently a large chunk of rents is handed  out to shareholders, rents could be lowered and publicly controlled.

Counterarguments include the anticipated costs. According to German law, to expropriate  anything, you need to financially compensate the expropriated. How much the entire project  would cost is unclear, as courts would need to finally set the compensation level.

Expropriation is not the only thing Die Linke wants to do in order to fight rising rents and  “make Berlin affordable.” Creating a cap on rent – with a task force alongside it to ensure landlords don’t illegally charge too much rent – has also been a reason for the party’s popularity with voters. On the federal level, Die Linke has already created an App where  renters can check if the rent they pay is illegal, and whether the cost of utilities is too high.  Furthermore, Die Linke also wants the construction of new affordable (social) housing.

If it seems like Die Linke’s campaign is very rent-price centric, it’s because it’s such a  prominent issue in the city. As in New York and many other large cities across the Western world, young people in Berlin can’t afford to move out of their parents’ apartments, lower- and middle-class families are getting priced out of neighborhoods they have lived in for decades, and there just aren’t enough rent-stabilized apartments.

Will Elif Eralp prevail?

The negotiating skills of Eralp and her colleagues will now be put to the test. As the SPD so  far has been skeptical on the issue of expropriation, it looks like we’re heading towards a standoff between the two parties.

If no coalition agreement can be reached, the second-placed party, the conservative CDU,  would have a chance at forming a coalition with the SPD and the Greens – which has already been labelled a “coalition of losers” since each of the three parties lost significantly. This

move would bear a huge risk, as the current city government of CDU and SPD has clearly been voted out of office. Just taking in the Greens carries a heavy weight for both SPD and  Greens, as voters have clearly voiced their preference for a center-left coalition.

Whether plans to expropriate large real estate corporations are included or not, a coalition  agreement needs to be reached. A government led by the CDU would signal a continuation  of the political course which has made the party (as well as the SPD) so unpopular in the first place. Overpriced rents, lobby-driven politics and a political style which continues to stray further and further from the lower- and middle class have worn out voters over the past years.

Die Linke in Berlin profited from this by focusing on a few core issues with concrete promises that are within reach. Eralp has, much like Mamdani, managed to build on a growing feeling of distrust towards the establishment.

As promises of affordability made by CDU and SPD have proven to remain empty ones, voters  want a change in strategy and face. International media coverage and social platforms have made it easier to see how different policy models work around the world and put it on display. In this case, the grass is greener in New York City, and Berliners have made it clear that they want similar policies. This is what Elif Eralp understood.

Die Linke could be a fresh start for Berlin and a chance to show its citizens that there are still  politicians who care about regular people. At the same time, it is clear that if the Left Party is  going to lead the new city government, they are doomed to deliver.

[ Leo Scharenberg is a second-year psychology student based in Berlin. He has a strong interest in global politics, with a particular focus on developments in Germany and the United States. Whether analysing current events or exploring historical and psychological crossovers in today’s political landscape, he enjoys hearing different perspectives and sharing his own.]

COMMON WORLD , a young political dialogue magazine combines political essays, personal stories, insightful social critique, and interviews with inspiring people to curate an experience that enriches you by making you think.

COMMON WORLD, therefore, is a community, a virtual collection of stories, an attempt to shape a conscious generation of leaders, and a way to expand your horizon.

Columbia, Other Universities, Systematically Suppressed Pro-Palestinian Speech, ACLU and Amnesty International Report Alleges

Portside
portside.org
2026-10-08 23:39:58
Columbia, Other Universities, Systematically Suppressed Pro-Palestinian Speech, ACLU and Amnesty International Report Alleges jay Thu, 10/08/2026 - 23:39 ...
Original Article

Columbia, alongside other U.S. universities, systematically suppressed pro-Palestinian speech, the American Civil Liberties Union and Amnesty International USA claims in a Sept. 23 report.

The report alleges that Columbia suspended student groups for peaceful protest in an “unlawful” manner that exposed student activists to “excessive force” by calling law enforcement to campus, and was disproportionately harsh in its issuance of suspensions and expulsions against activists.

The analysis used the University’s disciplinary responses, concessions made in negotiations with the federal government, and testimony from student protesters and other University affiliates to substantiate its findings.

The 322-page document comes after a two-year investigation that covered 80 universities across the country. Columbia is featured as one of the report’s six university case studies.

Jennifer Turner, principal human rights researcher at the ACLU and main author of the report, told Spectator that, during the course of the investigation, “what became clear was that there’s a really widespread pattern of suppression of speech” across U.S. universities.

In addition to Columbia, the report provided detailed case studies on the City College of New York; the University of California, Los Angeles; the University of Michigan; Tulane University, and the University of Texas at Austin. Turner explained that they had chosen those universities because they were “particularly problematic” in their responses to student protests.

“Columbia, we included for a number of reasons having to do with its response being particularly punitive,” Turner said. She added that Columbia was also featured due to the federal government’s “attempts to weaponize the civil rights laws to force, of course, universities like Columbia into broad-ranging agreements that are frankly unconstitutional.”

“Our University rules clearly establish how members of our community can exercise their free speech rights, regardless of their viewpoint, while respecting the rights of others to study, teach, research, and participate fully in campus life,” a University spokesperson wrote in a statement to Spectator. “Protest and activism have been a part of the fabric of Columbia for decades. The University regulates the time, place, and manner of protests in a content neutral manner to ensure we can fulfill our academic mission.”

Response to campus protests

Columbia gained notoriety as a hotspot for student protests following Hamas’ Oct. 7, 2023, attack on Israel and the start of Israel’s war in Gaza. An Amnesty International investigation the same year stated that Israel’s actions in Gaza amount to genocide, accusations which the Israeli government has denied.

Tensions on campus remained high, peaking during the April 2024 “ Gaza Solidarity Encampment .” After President Donald Trump returned to office in 2025, his administration cut $400 million in federal funding to Columbia, later alleging that the University had violated Title VI of the Civil Rights Act of 1964 by failing to prevent antisemitism during pro-Palestinian protests. The University issued a list of commitments to the federal government in March 2025, and in July 2025, the University agreed on a $221 million settlement with the federal government to restore the “vast majority” of its funding.

“Columbia’s capitulation only emboldened the administration to keep up these kinds of attacks,” the report states.

The report includes information from a questionnaire distributed to student protest organizers from October 2024 to February 2025. The questionnaire asked participants about their experience at demonstrations and whether they experienced an “excessive use of force by law enforcement and campus security, use of crowd control weapons, and arrests, among other issues.”

The report alleges that universities violated free speech rights by calling on law enforcement to arrest pro-Palestinian protesters, resulting in “unlawful and unnecessary use of force.” Citing disciplinary actions such as expulsions and suspensions, the investigation also discovered that universities’ responses to pro-Palestinian advocacy were “more punitive” in comparison to their historical responses to other types of demonstrations “over decades.”

The report describes this imbalance as being particularly stark at Columbia, which has a rich history of student activism stretching back past 1968.

The report argues that while past protests often involved tactics such as sit-ins, building occupations, and blockades similar to those used in recent years, punishments have become significantly more severe.

Since 2023, Columbia has asked the New York Police Department to assist in handling pro-Palestinian protesters, including at the “ Gaza Solidarity Encampment ,” during which the NYPD made a total of 217 arrests, and at the May 7, 2025, protest at Butler Library, which resulted in 78 arrests.

“We also conducted interviews and meetings with students and faculty, where we learned more about the ongoing disciplinary punishments and punitive punishments of students and faculty involved in activism, as well as instances of censorship and suppression of speech and association that’s been ongoing,” Turner said.

In total, the report estimates that more than 100 students who participated in pro-Palestinian demonstrations at Columbia received severe punishments, including expulsion, suspension, and revocation of academic degrees.

“By doing so these universities directly or indirectly have made it easier for the Trump administration to crack down on student activism, causing long-term damage to higher education,” the report notes.

Crackdown on international students

The report includes a series of case studies on six individuals it describes as being targeted “solely because of their political viewpoints and constitutionally protected expression” by Immigration and Customs Enforcement.

“The Trump administration has crafted and carried out a policy of revoking the visas and green cards of noncitizen students and scholars who engaged in pro-Palestinian advocacy, and of arresting, detaining, and deporting them,” the report alleges.

Four of these individuals are Columbia affiliates: Mahmoud Khalil, SIPA ’24; Mohsen Mahdawi, GS ’25, SIPA ’27; Yunseo Chung, CC ’26; and Rümeysa Öztürk, TC ’20.

Turner said that, “in cases of Columbia students,” the Trump administration “had no evidence whatsoever to support the revocation of their visas, for instance, or their attempts to revoke their green card, and in fact went ahead and pursued this despite it being these actions being based entirely on constitutionally protected lawful speech and association.”

In a statement to Spectator, a spokesperson for the Department of Homeland Security wrote, “It is a privilege to be granted a visa or green card to live and study in the United States of America. The Trump Administration has acted well within its statutory and constitutional authority with any alien who advocates for violence, glorifies and supports terrorists, harasses Jews, and damages property.”

Barnard

Barnard is also included as an example of where the report alleges a school overreacted to student protests.

“The expulsions of two Barnard College students in February 2025 for their participation in a protest disrupting a History of Modern Israel class mark the first official expulsions for nonviolent political protest on a Columbia University campus since 1936,” the report notes.

During the incident, masked student demonstrators entered a Columbia classroom, gave a speech alleging that the University was normalizing genocide, and handed out flyers, one of them depicting a boot stomping on the Star of David alongside the words “Crush Zionism.” Two of the protesters who were affiliated with Barnard were subsequently expelled .

“When rules are broken, when there is no remorse, no reflection, and no willingness to change, we must act,” Barnard President Laura Rosenbury wrote in a statement to Jewish Insider at the time.

The report also includes a Sept. 18 letter from Akilah Rosado, interim dean of Barnard and vice president of inclusion and belonging, responding to the ACLU and Amnesty’s findings.

“Barnard’s approach to conduct matters is careful and fact-specific. While your letter suggests that Barnard’s response to the ‘History of Modern Israel’ disruption was ‘more punitive’ than its response to other (unspecified) incidents, we are not aware of any comparable incident in which Barnard students intentionally targeted and shut down an academic class,” Rosado wrote.

Recommendations for free speech and expression

The report included a list of recommendations for both universities and the federal government to uphold First Amendment values.

The report called for universities to allow students to demonstrate in multiple areas of campus, including “outdoor, high-traffic locations,” during a broad time period. Another recommendation was to ensure that students are able to “spontaneously protest in response to unanticipated events, when speech is often the most essential.”

Columbia’s chapters of Students for Justice in Palestine and Jewish Voice for Peace were both suspended in November 2023, following a series of violations of the University’s event policy regarding when and where students could protest. Seventeen days before the University suspended the pro-Palestinian student groups, Columbia added a new section to its University Event Policy web page, emphasizing the administration’s power to “regulate the time, place and manner of certain forms of public expression.”

“Universities cannot impose their rules specifically because of the content of the protest, simply because the university finds it divisive or abhorrent or problematic in some way that isn’t unlawful,” Turner said.

In March 2024, the New York Civil Liberties Union, the New York state affiliate of the ACLU, and Palestine Legal filed a lawsuit against the University challenging the suspensions. The lawsuit was subsequently dismissed the following November, and both student organizations remain suspended today.

The University has since further narrowed the circumstances under which protests can occur, and the current Rules of University Conduct do not allow for spontaneous protests on certain dates. As stated in the 2026 prenotification policy, “During periods of increased activity or heightened risk of disruptions to University functions, pre-notification is required at least 48 hours (two business days) in advance.”

The recommendations also tackled anti-discrimination policies, asking universities to refrain from policies “that rely on overly broad and vague definitions, including definitions of antisemitism,” that can lead to violations of “lawful political speech.”

In 2025, the University adopted the International Holocaust Remembrance Alliance’s definition of antisemitism, a decision that received pushback from activists on campus.

“The new commitments to ‘combat antisemitism’ are a dangerous escalation of Columbia’s commitment to silencing opposition to genocide,” Columbia JVP wrote in a statement to Spectator following the adoption.

The report also stressed the role of universities in protecting student privacy, specifically by resisting “unlawful government requests for personal information” and rejecting “any federal pressure to surveil or punish noncitizen students and faculty for their lawful speech.”

“I hope it documents what has happened and is happening, and showing that both the pattern of suppression of free speech, showing that it’s still going on today, and that there’s a profound chilling effect because of both universities’ actions and the Trump administration’s actions that we are experiencing,” Turner said.

[ Staff Writer Simon Leton can be contacted at simon.leton@columbiaspectator.com . Follow him on X @simonoleton .

University News Editor Emily Pickering can be contacted at emily.pickering@columbiaspectator.com . Follow her on X @emilypckk . ]

Keyboard differences between Windows and Macs

Hacker News
unsung.aresluna.org
2026-10-08 23:08:05
Comments...
Original Article

Over the years, I learned about many gotchas and strange differences between keyboard handling on Mac and Windows – pertinent especially to web apps, which use the same codebase to cater to both. I thought it might be helpful to someone if I compile them all in one place.

This post is meant to be a reference, and there aren’t any cute or riveting stories hiding inside – if this seems boring to you, feel free to skip to the next one!

Different names for keys

What Windows calls Backspace, Mac calls Delete. What Windows calls Delete, Macs call Forward Delete. (This means saying “Delete” without specifying the platform might actually be confusing.)

What Windows calls ⏎ Enter, Mac calls ⏎ Return. However, Macs also have an ⌤ Enter, although only on a numeric keypad (previously, it was even there on laptops !). On keyboards without the physical Enter key, you can simulate it via Fn+Return.

In most Mac software, Enter and Return do the same thing. There are a few exceptions – for example, Photoshop adds a new line on Return but commits on Enter, and some classic pro apps like Cubase or Pro Tools do different things, too – but it seems to be a dying tradition. (If you are curious about the history of Return and Enter, I wrote about it once .)

Windows customarily calls the secondary key Numpad Enter. I don’t believe Fn+Enter works to simulate it.

Generally, third-party keyboards use Windows verbiage – so, Backspace and Enter. If a keyboard offers Mac conventions at all, they usually only extend to modifier keys.

Modifier keys

⌃ Control on Windows is the equivalent to ⌘ Command on a Mac. (Paste, for example, is ⌃V on Windows and ⌘V on a Mac.) But, confusingly, Apple devices still have a Control key, too. This was originally meant for terminal applications, but these days many GUI apps use it as an extra modifier key.

This means that for apps, Windows devices offer Ctrl, Alt, and Shift – and Macs offer ⌘ Command, ⌥ Option, ⌃ Control, and ⇧ Shift. That’s one more modifier key, and thus more space to breathe. (We’re not counting the Windows key or the 🌐 Globe/Fn key since those are technically reserved by the operating system.)

Some keyboards offer extra key caps you can swap to match the platform, for example:

Others cover all the bases on fixed key caps, in an awkward way:

Many stick with Windows-only legends.

Words vs. symbols

Apple devices rely more on symbols on their keys and in their menus, although they don’t do so consistently. Here are all of them:

  • ⇧ Shift
  • ⌃ Control
  • ⌥ Option
  • ⌘ Command
  • ⏎ Return
  • ⌤ Enter
  • 🌐 Globe/Fn
  • ⇥ Tab
  • ⎋ Esc (not printed on keyboards, for some reason)
  • ⌫ Delete
  • ⌦ Forward Delete
  • ⌧ Clear
  • ≣ Contextual Menu (only on full-size keyboards)
  • ⇞ Page Up (only on full-size keyboards)
  • ⇟ Page Down (only on full-size keyboards)
  • ↖ Home (only on full-size keyboards)
  • ↘ End (only on full-size keyboards)

Actually, I lied about the last four. On modern Apple keyboards, they are:

  • ↑ Page Up
  • ↓ Page Down
  • ⤒ Home
  • ⤓ End

Reusing the regular arrows for Page Up and Down is one of a few perplexing decisions from Apple’s keyboard designers. The arrow key symbols look like this – ◀▶▲▼ – but only on Apple keyboards. Here is an older and a newer Apple keyboard showing what happened:

(Luckily, the confusing dual arrow key situation only happens on less popular, full-size keyboards.)

Historically, Apple keyboards used symbols more on non-US keyboards, but starting with the 2026 models, they unified when they show symbols and when they show symbols and legends, across all keyboards. (The only key with just a text legend is Esc, making the appearance of ⎋ in menus extra puzzling.)


Windows keyboards typically use words – this is why in tight quarters you sometimes see shortenings like Ctrl, Bkspc, PrtSc, Del, PgUp, Win, and so on. (I don’t think Apple ever abbreviates their legends with the exception of Esc for Escape.) In some countries, the legends are translated – as an example, in Germany, Ctrl sometimes appears as Strg.

The symbols that crossed over to Windows side are:

  • ⇧ for Shift
  • ⇪ or 🔒 or a similar symbol for Caps Lock (on non-US keyboards)
  • ⏎ for Enter – note the same arrow as Mac’s ⏎ Return
  • ← for Backspace – note a different arrow than Mac’s ⌫ Delete
  • ⇥ for Tab (you can also sometimes see ⭾, which is a symbol representing Tab and Reverse Tab together; Reverse Tab used to be a separate key on some 1970s terminals)
  • ⊞ for Windows key – the style of the logo will be different depending on the age of the keyboard, roughly matching the Windows logo at the time; some keyboards also use a more abstract shape, or call the key Start or System instead of Windows
  • ≣ for contextual menu key (a.k.a. Application Key) – just as Apple added that key on its large keyboards, Microsoft started removing it in favor of emoji key , Office key , and then Copilot key
  • ⌃ for Control (especially in nerdy contexts)

I have not seen any other popular symbols on the Windows side of the aisle, and I am not even sure if the above would be widely understood. But here’s an example:

( I wrote a bit more about Mac symbols before , and also about the rare Canadian symbols .)

How to show shortcuts

In menus and other places, Windows joins the key combinations/​shortcuts with a plus, but Apple just glues them together:

  • Windows: Shift+A, Ctrl+Shift+G, Ctrl+F11, Alt+Enter
  • Mac: ⇧A, ⌃⇧G, ⌘F11, ⌥⏎

Here is the same Chrome menu on Windows and on macOS:

(In other words, you’d never say “⌃V is Paste on Windows” like I did above.)

Function keys

Both Windows and Macs have function keys.

On Windows, traditionally those were claimed by the operating system or the apps as shortcuts. Here are some examples of well-known function key assignments:

  • Alt+F4 – close the app
  • F1 – help
  • F11 – maximize window
  • F12 – dev tools in browsers

On Macs, traditionally the apps didn’t reach for function keys, as those were reserved solely for the users to do stuff with. (However, some combination of ⌃ and function keys are used by the operating system for accessibility options, and I occasionally see apps use function keys these days.)

Windows keyboards top off at F12, but some Mac keyboards reuse the three special PC keys, and even take over the unnecessary Num Lock/​Caps Lock/​Scroll Lock island, and end up going up to F19:

Access to extra characters

In text fields, Apple has a system where pressing ⌥ with printing keys outputs more characters, for example ⌥Q outputs œ, and ⌥7 outputs a ¶ pilcrow. Additionally, ⇧ works in this context, so for example ⌥⇧Q outputs Œ, and ⌥⇧7 outputs a ‡ double dagger.

Note that not only letters, but basically all printing keys have secret ⌥ and ⌥⇧ assignments.

Also, ⌥ assignments vary per location! The above was U.S. English, here’s Polish with a lot of differences:

This means it’s best to avoid ⌥-based shortcuts in text fields, since they might conflict with some important character.

By the way, while the above two are just mock-ups, on some physical keyboards (here: British English), some of the important ⌥ invocations are actually printed on keys:


Windows doesn’t have the above feature. However, Windows has an alternative feature where typing Alt+numpad keys allows to enter any character by its code. (For example, Alt+0128 outputs €. Num Lock has to be enabled. I don’t think it’s possible to do it without a numeric keypad present.)

Mac has a version of this feature, but it requires adding Unicode Hex Input keyboard and switching to it beforehand. Then, pressing ⌥20AC outputs €.

Right Alt key on Windows

While Mac modifier keys are completely symmetrical, Windows makes an exception for Alt. On many non-US keyboards, right Alt is also known as AltGr , and does something similar to ⌥ on a Mac: it outputs letters when pressed in combination with printing keys.

For example, on Polish keyboards AltGr+A = ą, AltGr+C = ć, AltGr+Shift+A = Ą, and so on with 15 more combinations. Many other keyboards do similar things.

The way it differs from ⌥ on a Mac is that these are usually reserved for core letters and punctuation necessary for each language, rather than the typographical smorgasbord that Apple provides.

For legacy reasons, and also for keyboards that do not have a physical AltGr key, you can also invoke all these using Ctrl+Alt combinations instead (so, Ctrl+Alt+A = ą). This means that just as you have to be careful about ⌥-based shortcuts in text fields on a Mac, so you should be of Ctrl+Alt-based shortcuts on Windows .

Just like on Macs, on some keyboards, selected AltGr options will be printed in the corners or fronts of keys:

Text fields

Text fields in Mac OS apps and web browsers/​websites use some of the standard Unix/​Linux shortcuts based on the ⌃ Control key:

  • ⌃A – move to the beginning of the line
  • ⌃E – move to the end of the line
  • ⌃F – move to the right, or forwards (hold ⌥ to jump through words)
  • ⌃B – move to the left, or backwards (hold ⌥ to jump through words)
  • ⌃N – move down or to the next command
  • ⌃P – move up or to the previous command
  • ⌃L – scroll the window so that the text cursor is in the vertical middle
  • ⌃H – delete (backspace)
  • ⌃D – forward delete
  • ⌃K – delete (kill) to the end of the line
  • ⌃T – swap (transpose) the adjacent characters
  • ⌃O – insert new line, but (contrary to Return) do not move the cursor there

You can combine many of the above with holding ⇧ to extend the selection.

A small group of vocal users love these.


Windows still supports Shift+Delete for cut, Ctrl+Insert for copy, and Shift+Insert for paste. I am not sure how many people use these.


On a Mac, in simple input fields, ↑ and ↓ jumps to the beginning and end (same as ⌘←→). This often conflicts with command line history, autocomplete pop-ups, and so on.

Windows doesn’t have this convention, and Home and End serve this purpose instead.


Macs support the iPhone-inspired convention of holding a key to show related accented characters, instead of triggering auto-repeat. Windows doesn’t have this feature.

Differing shortcut conventions worth knowing about

On a Mac, redo is typically ⌘⇧Z. On Windows, it’s typically Ctrl+Y.

On a Mac, refresh (in browsers, etc.) is typically ⌘R. On Windows, it’s typically F5, although some browsers now support Ctrl+R, too, presumably since function keys are harder to access than they used to be.

Reserved keys

Windows’s eponymous ⊞ Windows key is reserved solely for the use of the operating system, and so is Mac’s 🌐 Fn/​Globe key. (Although I am not 100% sure of that as I found one place you can create 🌐 shortcuts as a user – I’m just not certain if it’s intentional.)

However, each platform also has a lot of shortcut combinations that are effectively unavailable, for example ⌘⇥ and ⌘M on a Mac, or Alt+Tab and Ctrl+Shift+Escape on Windows.

These official lists can help:

If you’re a web app, you will compete for shortcuts with the operating system (like any app would), but also with the browser itself. You can typically take over shortcuts like ⌘S or ⌘P, but depending on the browser or the platform, some might be sacred and unavailable. No Mac browser will allow a website to claim ⌘Q, ⌘W, or ⌘T. Safari won’t allow a web app to override ⌘R. Arc browser won’t allow to override ⌘⇧C. (This is not a complete list.)

Jumping around

Tabbing and Shift tabbing is customarily used to jump between UI elements, but it behaves slightly differently in native apps.

On Windows, tabbing jumps through all elements:

On Mac, Tab jumps only to elements that require keyboard to operate (such as input fields). You can toggle a System Settings preference and ask macOS to mimic Windows behaviour – see the last toggle below – but it’s not supported well everywhere.


PgUp and PgDn work differently:

  • On Windows, they move the text cursor a screen up or down.
  • On a Mac, they scroll the view up and down, but they do not move the text cursor if it’s present (so, they are more an equivalent of clicking on the scrollbar chute).

Similarly, Home and End work differently:

  • On Windows, they scroll the contents (and move the cursor if present) to the top or the bottom of a view, or move the cursor to the beginning or the end of an input field.
  • On a Mac, in views they scroll to the beginning or end without moving the cursor. In input fields, Home/End do nothing, but you can use ⌘←→ to accomplish the same.

On both platforms, Fn+↑↓ does PgUp/​PgDn, and Fn+←→ does Home/End. (Do you see how confusing it is to say that given that ↑↓ already mean PgUp/Dn on a Mac?)


Windows has a tradition of enabling access to menus and visible controls by pressing Alt and letter keys. This has evolved over time and is not as consistent as it used to be, but it might be worth knowing about.

Less popular keys

On a 100-plus-key keyboard, Windows might have:

  • Insert – still used in some contexts for overtyping
  • Print Screen – today taken over by screenshotting
  • Num Lock and Scroll Lock
  • Pause/​Break

Macs have:

  • Help – rarely used, and now abandoned in favor of…
  • ≣ Contextual Menu – shows the same menu as right click would
  • ⌧ Clear – a deterministic backspace , these days seldomly different than the actual Delete key

Macs never had arrow keys on a numeric keypad nor a Num Lock key to enable it. (I’m breaking my promise! Here’s a fun bug story about Num Lock .)

In a strange twist of fate, it’s not only third-party keyboards that favor Windows legends. Some of Apple’s keyboards in between 1980s and 2000s showed PC legends, too! (This was to court PC compatibility of then-beleaguered Macs.) Here’s the classic Apple Extended Keyboard, showing legends for Insert, Delete (naming it Del to avoid confusion with its own), Print Screen, Scroll Lock, Pause, Num Lock, and Alt:

Did I miss anything or make a mistake? Let me know !

Tidbits-Oct. 8: Reader Comments: Rape Culture and the Cornell Seven; Dilemmas of Socialist Governance of a Capitalist State; Statement From Mayor Zohran Kwame Mamdani on the Third Anniversary of October 7; Hands Off Cuba – Let Cuba Live Virtual Event

Portside
portside.org
2026-10-08 22:44:02
Tidbits-Oct. 8: Reader Comments: Rape Culture and the Cornell Seven; Dilemmas of Socialist Governance of a Capitalist State; Statement From Mayor Zohran Kwame Mamdani on the Third Anniversary of October 7; Hands Off Cuba – Let Cuba Live Virtual Event jay Thu, 10/08/2026 - 22:44 ...
Original Article

Resources:

Announcements:


Rob Rogers
October 6, 2026
https://robrogers.com

C'est tout aussi grave ici, aux États-Unis.

It's just as serious here, in the United States.

Rob Prince
Posted on Portside's Facebook page

Re: The Dilemmas of Socialist Governance of a Capitalist State

I really enjoyed your latest article in Portside “ The Dilemmas of Socialist Governance of a Capitalist State .” Your praise for Zohran Mamdani’s and DSA’s electoral success is tight on the money. I agree with about 95% of your article.  One area of disagreement is your call for a “revolutionary rupture” (eventually).  Your excellent advice that the dogmas of the past will not serve us is prescient.  Unfortunately those of us trained in Leninism may still cling to remnants of those dogmas. I hope Bernie Sanders’ Campaigns for President (following in Eugene V. Debs’ footsteps) has dispelled many of those illusions.  But that “revolutionary rupture” at a time where the Left is nowhere near that stage will just isolate us from the working class we need to win.

Lewis Grupper

Re: The Road to Universal Medicare

Portside recently posted an article by Robert Kuttner claiming that what I call "small steps" such as the Public Option, or Medicare Buy In, will lead to a high quality universal guaranteed health system for all.

Two experts on Medicare for All, responded to Kuttner in the Health Justice Monitor article cited above - Drs. Hank Abrons and James Kahn - a physician and a leading health economist.

Many other activists in the movement for Improved Medicare for All/single payer health care will disagree with Kuttner - we want a one-tier, one risk pool, equal access, improved care system. We don't want "different strokes for different folks"!

Marilyn Albert
Retired Nurse
https://www.healthjusticemonitor.org/whats-wrong-with-medicare-public-option/



Mike Luckovich
September 30, 2026
Atlanta Journal-Constitution

Re: SUNDAY SCIENCE: SUPERPOWERS RACE TO PUT NUCLEAR REACTORS ON THE MOON

The New York Times:

The United States wants a reactor on the moon by 2030. A Russian-Chinese alliance is working on one for 2036. Some leading scientists say the danger is great.

Stop. I expect far, far more from the NYT than this idiocy that's fit for the old National Enquirer.

"An explosion or a meltdown on the moon’s surface would risk turning entire regions into no-go zones."

The author clearly has never set foot into a science class. They appear to think the Moon has an atmosphere, and a strong magnetic field, that filters out the immense radiation from the Sun. Even noticing the radiation after a meltdown would barely raise the radiation level already there.

mark

Re: Regime Change

That Trump coin looks like something they'd give away at a Shell station in 1966. And is worth as much.

Eleanor Roosevelt
Posted on Portside's Facebook page

Measles...and Parents  --  Cartoon by Emily Flake


Emily Flake
February 2, 2015
The New Yorker

But it would be wrong, that’s for sure  --  Cartoon by Jack Ohman


Jack Ohman
October 6, 2026
Jack Ohman's You Betcha!

The Cornell Seven  --  Cartoon and Commentary by Nick Anderson

Donald Trump returned to the White House carrying something unusual for an American president: a civil jury verdict finding him liable for sexual abuse.

But Trump isn’t the only prominent figure in his political orbit to have faced allegations of sexual assault or misconduct. Several men Trump has nominated, appointed or selected for powerful positions—including Defense Secretary Pete Hegseth, Health and Human Services Secretary Robert F. Kennedy Jr., Supreme Court Justice Brett Kavanaugh and former attorney general nominee Matt Gaetz—have faced allegations or findings involving sexual misconduct.

In Trump’s case, there’s an actual civil verdict. A federal jury found in 2023 that Trump sexually abused writer E. Jean Carroll and defamed her. The Supreme Court declined in June 2026 to hear Trump’s appeal, leaving the $5 million verdict intact. Trump has denied Carroll’s allegation, but 27 other women have also accused him of sexual misconduct . The pattern seems pretty clear.

Then there’s Hegseth. Before Trump selected him to run the Pentagon, Hegseth had been accused of sexually assaulting a woman following a Republican women’s conference in Monterey, California, in 2017. Police investigated but no charges were filed. Hegseth told police the encounter was consensual and has denied sexually assaulting the woman. Trump nominated him anyway. The Senate confirmed him, and he now oversees roughly 1.3 million active-duty military personnel.

Robert F. Kennedy Jr., Trump’s choice to run the Department of Health and Human Services, was accused by a former family babysitter , Eliza Cooney, of groping her in the late 1990s. Kennedy said he had no memory of the alleged incident and subsequently sent Cooney a text apologizing for anything he may have done that made her uncomfortable. He, too, was confirmed.

The pattern extends back to Trump’s first term.

Brett Kavanaugh was accused by Christine Blasey Ford of sexually assaulting her when the two were teenagers. Kavanaugh categorically denied the allegation. Deborah Ramirez separately accused Kavanaugh of exposing himself to her while they were students at Yale, which he also denied.

After one of the most contentious Supreme Court confirmation battles in modern history, Kavanaugh was confirmed 50-48.

And then there’s Matt Gaetz. Trump selected the former Florida congressman to become attorney general after the 2024 election. Gaetz withdrew before confirmation, but the bipartisan House Ethics Committee subsequently released its investigation .

Its findings went considerably beyond an unsubstantiated allegation. The committee said there was “substantial evidence” that Gaetz regularly paid women for sex and had sex with a 17-year-old girl in 2017, which the committee concluded violated Florida’s statutory-rape law. Gaetz denied having sex with a minor and has denied wrongdoing. A separate Justice Department investigation ended without criminal charges.

So the common denominator isn’t that all these men were proved guilty of sexual assault. It’s that allegations or findings of serious sexual misconduct repeatedly failed to disqualify men Trump wanted in positions of extraordinary power. That represents a significant change from the political assumptions of an earlier era, when merely facing a serious allegation could derail a nomination.

With Trump, the allegations themselves have increasingly become part of the confirmation fight rather than an automatic end to it.

Hegseth is perhaps the clearest example. Senators knew about the 2017 sexual-assault allegation during his confirmation process. The police investigation and Hegseth’s denial were publicly available. The Senate considered them, and confirmed him anyway.

Kennedy’s allegation was also public before he entered Trump’s Cabinet.

Kavanaugh’s confirmation hearings became nationally televised examinations of Ford’s allegation.

And Gaetz was selected to become the nation’s chief law-enforcement officer despite a long-running House Ethics investigation into allegations that included sexual misconduct. The committee’s findings became public only after he withdrew.

In Trump’s political movement, sexual-misconduct allegations that once might have ended a nominee’s prospects have repeatedly become obstacles to overcome rather than barriers to office, and perhaps nothing illustrates that transformation better than the man making the appointments.

The president selecting nominees accused of sexual misconduct is himself a man whom a federal jury found liable for sexual abuse. Given his track record, he seems to see it more as a qualification rather than an impediment.

Nick Anderson
October 6, 2026
Pen Strokes

Statement From Mayor Zohran Kwame Mamdani on the Third Anniversary of October 7

October 7, 2026
NYC Official website


Today, Mayor Zohran Kwame Mamdani released the following statement on the third anniversary of the October 7 attacks:

This day is profoundly painful for so many New Yorkers. It marks three years since the horrific war crimes of October 7. On that day, Hamas killed more than 1,100 Israelis and abducted 251 others. We grieve alongside our many friends and neighbors who still carry that unthinkable loss.

The suffering did not begin nor end that day. It instead continued through the Israeli government’s devastating, ongoing genocide in Gaza, in which it has killed more than 74,000 Palestinians—including more than 21,000 children. Even since the so-called ceasefire, more than 1,400 Palestinians have been killed. That suffering has intensified with every Israeli bomb dropped on ambulances waiting outside hospitals, every drone strike targeting a residential building or journalist, and every shipment of food aid turned away at a border crossing. Many New Yorkers are reckoning with this unbearable grief, and we mourn alongside them—all while knowing that our tax dollars fund these war crimes.

Three years later, we must refuse to accept a world in which occupation and apartheid continue, where war crimes are met with impunity, and our federal government continues its complicity with every arms shipment.

To honor the dead, we must fight for a world in which every person can live with freedom, safety, and dignity.

###

Media Contact:
pressoffice@cityhall.nyc.gov

New York Times Bestselling Authors Call for the Release of Palestinian Leader Marwan Barghouti


“We express our grave concern at the continuing imprisonment of Marwan Barghouti, his violent mistreatment and denial of legal rights whilst imprisoned. We call upon the United Nations and the Governments of the World to actively seek the release of Marwan Barghouti from Israeli prison.”

Signed:

Margaret Atwood
Kaliane Bradley
Rob Delaney
Stephen Fry
Mohsin Hamid
Johann Hari
Marlon James
Rupi Kaur
Rashid Khalidi
Lily King
Naomi Klein
Gabor Maté
Colin Meloy
David Nicholls
Philip Pullman
Sally Rooney
Arundhati Roy
Zadie Smith
Colm Tóibín
Oliver Jeffers

Join the campaign, @FreeMarwanNow

#NYT #NYTBESTSELLERS #NEWYORKTIMES #booktok


Post created by: Free Marwan Now - The International Campaign to #FreeMarwan Barghouti and all Palestinian political prisoners

Watch NAZA



Register here https://us02web.zoom.us/meeting/register/GQsdAJbNRCOd8Ic5VBn3pQ#/registration

Sounds of Solidarity: A Benefit Concert for Palestine - Jersey City - October 25  (MECA - Middle East Children's Alliance)

Sounds of Solidarity: A Benefit Concert for Palestine

Featuring: The Palestinian Youth Choir & Musical Guests

On Sunday October 25, 2026, join us at Grace Church Van Vorst for a benefit concert in solidarity with the people of Palestine.

For over three years, Gaza has endured relentless bombardment, displacement, and blockade, with children bearing the heaviest toll. Tens of thousands of children have been killed, orphaned, and cut off from food, clean water, and medical care. The devastation has stretched far beyond the immediate loss of life as entire families have been erased, homes and hospitals reduced to rubble, and an entire generation left to grow up amid trauma, grief, and uncertainty about what, if anything, will be left to return to.

Every dollar from your ticket purchase goes directly to the Middle East Children's Alliance (MECA), which provides humanitarian aid, medical relief, and support for children and families in Gaza and across Palestine.


Sounds of Solidarity is sponsored by:

  • CFN NJ
  • VP NNJ
  • NJ Peace Action
  • 4 Falasteen NJ
  • Palestinian American Community Center
  • Young Vision Africa

Musical Lineup:

The Palestinian Youth Choir
Con Vivo Music
Poppies 4 Palestine
Special Guests

Doors open at 3:30. Concert runs from 4:00-6:00 PM.

Join us for an afternoon of music, community, and solidarity.

If you are unable to join but still want to make a contribution, please use the "additional donation" field to do so. You may make an additional donation without purchasing a ticket. All donations and tickets are tax deductible.

If you would like to join but cannot afford any of the listed tiered ticket prices, please email us at meerajaffrey7@gmail.com so we can arrange a ticket for you.
For tickets click here

What should we tell our students?

Hacker News
terrytao.wordpress.com
2026-10-08 22:27:45
Comments...
Original Article

[This is a guest post by Álvaro Lozano-Robledo . This blog post was initially written in a different file format and converted using AI. — T.]

TL;DR: Keep calm and carry on studying math.

I would like to give Terry my heartfelt thanks for giving me the opportunity to contribute a post to his blog. After giving much thought to what topic I should write about to maximize impact, I decided to take this opportunity to reach out to the students: particularly to those undergraduate and graduate students who just a few months ago were dreaming of an academic career in mathematics, but their dreams may now seem distant and, for some, apparently impossible to ever become a reality. This post was inspired by a message (quoted below in its entirety, with permission) that I received from a student desperately looking for advice and guidance. This is not the only such message I have received (and I suspect that many of us are receiving many similar requests), but it is perhaps the most heartfelt, and the one that has moved me the most. Please also note the urgency of the message. Students are making decisions now.

Hey Prof, I’ve been watching your videos for a while now as a pure math undergraduate who once wanted to pursue a career in math academia. I know you probably have been getting a lot of questions regarding this matter, but I am just completely at an utter loss regarding my career trajectory, and even further, the meaning of life at this point. (I do realize a lot of people have it much worse than I do). I know you have been making a lot of videos lately with the new LLM progress updates, so I thought you might be the appropriate person to reach out to and get a slightly more structured answer regarding this matter. So, to cut to the chase, what I really want to know is: will math academia be big enough and accessible enough for anyone with sheer passion (despite not being the brightest mind in the field) to pursue a career in, or will it inevitably shrink such that it will only really be accessible to the brightest minds? (I do realize the “brightest minds” that I am mentioning here is not well-defined, and in a sense, I am taking it as a hypothesis that this is someone who is “smarter than me”). My second question is, will AI within 5–10 years surpass humans in being able to do pure math research? I’ve just really been lost for a couple of months now and lost in life completely. I don’t mean to make your day more depressing; sorry if I come off in any way of that sort. I would appreciate any advice.

The advances in LLMs are disrupting almost all aspects of academic research and education in mathematics and, while there are many aspects that concern me, the one single issue that worries me the most is the very real possibility that we are about to lose an entire generation of mathematicians. Many students are asking themselves whether going for a PhD in math is the right career move at this time. Many of them just a year ago were headed to grad school in mathematics, but they are now changing their mind, and think that a different career (as far from math as Law School) may be the best path given the threat that AI may completely alter the academic math landscape in the coming months.

The questions students are worrying about are as follows:

  1. Will AI surpass the mathematical research ability of any human?
  2. Will research mathematicians become `professional prompters’ and interpreters of LLM output?
  3. Will only the `brightest minds’ be able to meaningfully contribute to research mathematics?
  4. Will mathematicians be employable? Will mathematicians be needed?
  5. Should I pursue a PhD in math at this time?

In this essay I will try to address these questions to the best of my ability, but will start with two disclaimers, followed by a brief summary of my own outlook.

Disclaimer 1. My answers may “age like milk,” as YouTube commenters love to quip on older videos. I can live with that, because this post expresses how I and many of us in the community around me feel today. Things can change quickly, though (see Disclaimer 2). I also want to acknowledge my privileged point of view as a tenured professor in mathematics — the situation can look much more troubling from the point of view of the job insecurity of a very early-career mathematician.

Disclaimer 2. No one has the answers at this time. I want to make clear from the start that no one can know with certainty the answers to any of the questions posed above: not any particular Fields medalist, not any given mathematician, not any particularly vociferous AI expert, and not the frontier model companies. And if someone is telling you with extraordinary confidence what the future holds, then I would immediately distrust the motives of their conviction (anecdotically, almost anyone on X.com that predicts the triumph of AI and the demise of the mathematics profession, is either a self-proclaimed “AI expert” or works for an AI startup). No one has a clear picture because development of LLMs has been so fast (and opaque) that it is almost impossible to predict what is to come. A good piece of advice is to ask the same questions to many people, to hear a (hopefully balanced) range of opinions. To that end, I am collecting interviews with mathematicians in what I call the “ Human Mathematicians in the Age of AI ” video project. I encourage you to listen to the interviews for some fantastic points.

For the record: I do not have the answers either, but I am hopeful and excited for the future. I will explain why below.

Who is controlling the narrative about LLMs in math? Overall, the mathematical community’s reactions to the advances in AI have ranged from confusion to anger — but, mostly, confusion about how to proceed. The most dystopian predictions seem to be driven by the fact that the so-called frontier model companies (and other LLM-powered companies) are controlling the narrative in the best of their interests. Unfortunately, the best corporate outcomes for an LLM company could have potential catastrophic outcomes for the math (and scientific) community.

It is certain that AI companies want us to believe that their products will imminently achieve “super-human intelligence” and that, in particular, they will be able to autonomously solve any mathematical problem a human could solve with or without the aid of an LLM. It is in their best corporate interest that the public is convinced of the (allegedly) “unlimited potential” of their technology, particularly before their companies’ stocks go public (i.e., their upcoming IPOs: Anthropic in November 2026, OpenAI in early 2027, etc). Thus, they have tried to control the narrative by spending a huge amount of (human and computational) resources in order to find solutions to certain well-known mathematical problems. The proofs are then released in announcements that lead the public to believe that their models can already autonomously solve any problem at all, and swiftly at that. However, this is (currently) far from their true capabilities. For instance, they never discuss how many tokens have gone to the trash bin with no payoff in trying (and failing) to solve famous problems. We do know, for example, that OpenAI invested the equivalent of some $15M to solve (err, scoop) the Navier-Stokes problem, but we are unaware of the surely colossal running cost of the failures to resolve other Millennium Prize problems.

My own outlook. Even though I am concerned about the incursions of LLMs into academic mathematics, I am quite hopeful. In fact, I consider this to be the most exciting time in my mathematical career (since the year 2000 say). Truly, this may be the most thrilling moment in mathematics in the modern history of our discipline, and I would be terribly sad to see young people leave academia and miss out on the stunning opportunity to be at the frontlines of the current scientific revolution. And not just sad: I think their absence would have disastrous effects for the field.

Undoubtedly, LLMs are already an incredibly powerful tool. If used correctly, and if we set up sensible academic conduct expectations around the use of LLMs, these tools can accelerate progress in our discipline unlike in any previous era. I fully expect that we, the community, will adapt and adjust to this new period, and we will harness these tools to achieve truly great things that just a few months ago seemed far out of reach. And I fully expect that human mathematicians will be front and center in these wonderful achievements to come. I will add reasons that support my optimism below.

I also want to add at this point that the day-to-day of a mathematician has not changed much so far! My days are still filled with teaching and joyful conversations about math with colleagues and students, doing research on a number of exciting (old and new) projects, and going to stimulating conferences to learn and disseminate our most recent methods and findings, while spending time with colleagues that make the mathematical community so wonderful and vibrant. Daniel Litt mentioned the same sentiment in a recent tweet .

One thing has changed though, I am busier than ever before, because the number of research projects I am involved in has tripled in just a few months. My research horizon has expanded significantly, and I have many more projects available for students to help me with.

Now, to the pressing questions:

“Will AI surpass the mathematical research ability of any human?” This is completely unclear. On one hand, the current trajectory in capabilities is surely significant, and we have already seen many impressive results that have been either proved by LLMs, or their proofs have been made possible thanks to substantial LLM contributions. On the other hand, none of the proofs so far seem to contain “alien ideas,” a move-37, or completely novel arguments or new concepts that were not present in the literature in some form or another. This should not be shocking because the LLMs are built and trained on the entirety of all human contributions to date, so it stands to reason that they would `think’ within the boundaries of our current knowledge and make connections (sometimes surprising and ingenious!) among ideas that are already present in the literature. I am particularly fond of the hypothesis (or toy model, as he called it) put forward by Nestor Guillen in a recent blog post , where he argues that LLMs may work within the confines of the convex hull of ideas that are currently available in the literature.

Take, for example, the disproof of Erdos’ unit-distance conjecture . We can imagine the current set of mathematical ideas as a stellated high-dimensional polytope, and we can place the state-of-the-art ideas on discrete geometry at an outer vertex and our knowledge on algebraic number theory at a different outer vertex. The idea for the proof seems ingenious at first sight because it cleverly mixes strategies from two fields of math at the vertices of the polytope of ideas, but after closer inspection, it’s a proof that was within reach of humans as it just sits within the convex hull of the polytope.

The polytope of ideas

This agrees with what Melanie Matchett-Wood said about the proof of the unit-distance when it was released: “I believe if the level and type of human expertise that is represented on this note had been assembled to find a counterexample to this conjecture a month ago, and those people put in similar amounts of time working on it than they did to reading and thinking about Chat GPT’s solution, the mathematicians would have found a counterexample.”

However, a proof of the Riemann hypothesis, say, may need new ideas that are strictly outside of the convex hull of current mathematical ideas, and it is therefore out of reach for an LLM. Only after a new idea is introduced in a new paper, the polytope of ideas may acquire a new outer vertex. And only then the LLMs, after being retrained to include those ideas, may fill out the set of results up to the new convex hull, which may or may not include yet a full proof of Riemann.

The convex hull of ideas

If this toy model holds up, then we would indeed expect the very fast advances in mathematics that we are currently seeing. As the LLMs take advantage of the stellated nature of the polytope of ideas, they will continue to fill in gaps between outer spikes. But as the LLMs fill in the convex hull with new results, we will see a deceleration in the number of results being shown solely by artificial intelligence. We will need human advances and intuition to generate new ideas that expand our knowledge polytope.

Even if the mathematical capacity of the LLMs (or future AI models) can at some point reach beyond the convex hull of the current set of human ideas, there is a different way that we may reach a limit to the LLM capacity: feasibility and ethical use of resources (this is similar what fellow optimist Kevin Buzzard called the “natural boundary” in a recent blog post ). Is any cost (a dollar amount, human cost, ethical cost) acceptable in the pursuit of solving a given problem? Should we spend millions of dollars and an undisclosed amount of natural resources in order to find a solution for Navier-Stokes? As an analogy: we would like to know if there is life on Mars, but in order to do so as soon as possible, we would need an absurd amount of funding and risk the lives of a human crew in the process. Is it worth it? Similarly, we may reach a point where an LLM could solve an important problem for an exorbitant cost (in terms of funding and resources) but it may just not be an acceptable cost for the taxpayer or society to bear. Instead, we will need humans to devise an alternative route (the equivalent of a gravity-assisted robotic mission to Mars) to solve the problem at an acceptable cost, that produces a similar result in terms of mathematical advances and, more importantly, human understanding.

“Will research mathematicians become `professional prompters’ and interpreters of LLM output?” There is no indication that this will be the case. Yes, LLMs have produced proofs of important results somewhat autonomously (according to the frontier model companies — see Disclaimer 2) that some mathematicians have been tasked with interpreting and digesting. But in my own experience, and other research mathematicians who are using LLMs in their research seem to agree, working with an LLM is akin to discussing a problem with a collaborator, and the results heavily depend on how much guidance and intuition the mathematician inputs into the conversation. In other words, the LLMs are more than tools: they can be research collaborators but, as in any collaboration, the experience and the results are greatly improved when all parties contribute to the discussion. Further, mathematicians have no desire to prompt “solve the Riemann hypothesis, make no mistakes” and then interpret the proof. We prefer to be active participants during all the steps in the process of the discovery of a proof, because we are motivated by the `why the result is true,’ more than by the final answer that `the statement is true.’

Also, if we buy into the previous concept of the convex hull of ideas, then at some point in the near future it will be impossible to make progress in mathematics without a human adding a new idea, a new definition, a new concept that creates a new spike in the polytope, and then progress can occur.

“Will only the `brightest minds’ be able to meaningfully contribute to research mathematics?” At any given time in the history of mathematics, there have been mathematicians who are research active, and whose mental capacity for mathematics seems completely super human (e.g., the owner of this blog, among many others). It is natural to surmise that they could solve any problem we could solve, in a fraction of the time it would take us to complete a proof and write it up. However, this has never stopped those of us with a more modest capacity for mathematics from enormously enjoying doing research, and producing results that are far from insignificant. In fact, mathematics has always benefitted from the range of ideas and points of view, from the very concrete to the big bird’s eyeview, from the smaller contributions to the building of entire new theories.

Similarly, I am not threatened by the mathematical capacity of LLMs. For one thing their capacity is currently limited, as pointed above. And for another, even if their capacity becomes far superior, there will always be a need for mathematicians at all levels to guide research in paths that make sense for humans to walk (not run).

The mathematical universe is enormous (as Emily Riehl said) , and computing time is finite. There will always be areas of mathematics that are under-explored and where even beginners can break new ground. The LLMs can help in the process, by quickly exploring avenues that may be dead ends, pointing out paths that have already been explored, and shining a light on paths that are likely to be fruitful.

As I mentioned above, I have never been this busy, because the access to LLMs has multiplied the number of areas that I have access to, and my curiosity has expanded well beyond my research area. I now have many more ideas that I can possibly explore on my own, so I am recruiting more student collaborators than ever before, to help me test whether these problems can lead to interesting results. Students can be involved in research earlier than ever before too because the LLMs can help them learn material faster (and deeper!), by virtue of being available 24/7 to answer their questions, instead of my meager one or two available hours per week to meet with them.

“Will mathematicians be needed? Will they be employable?” I find these questions natural but also perplexing. Even in the most dystopian of scenarios where AI becomes super human in all research tasks, what good would a proof (of a theorem in pure mathematics) be if there are no human mathematicians to digest it and understand it? Regardless of the advances in LLMs and AI, there will be mountains of research to be understood by humans, with or without the help of a computer.

In addition, we seem to forget that mathematics departments exist in universities to serve two primary goals: discovery and communication of mathematical knowledge . Virtually every mathematics department emphasizes, in equal parts, our research and educational missions (and many institutions place the educational mission of mathematics at a much higher level than their research mission). Mathematics courses are an integral part of a liberal arts curriculum because learning to think as a mathematician is a highly useful and applicable skill. The fact that we are researchers adds immense value to our educational goals, because students are best served learning from those scientists who are in the frontlines of research. The research opportunities that we provide for undergrads are a very valuable add-on to their curriculum, as it is a different type of training that helps them be employable in the future. And as long as the mathematical way of thinking continues to be a highly valuable skill to be learned by the undergraduate population, there will be a great need for mathematicians to be hired by universities.

The LLMs are making math research more accessible than ever to those who are not even in academia or even mathematicians. This means that undergrads will be able to join actual mathematician-led research projects much more easily, and it may be a new fertile ground for exploration. Not mindless exploration, though, but mathematical exploration where the goal is understanding and for the students to be initiated and trained into a highly technical field (in an ethical way). And, of course, we should prioritize training students in how to communicate the mathematics they learn, as that has always been (and probably will become even more of) a crucial skill.

All of this to say that I cannot conceive that the LLMs will displace mathematicians from their jobs. On the contrary, they might produce jobs since our research productivity may sky rocket. On the other hand, I am more worried about policies and funding issues that are political in nature and have nothing to do with the AI and LLM conversation.

Finally, the most important question of all, that I wanted to address here:

“Should I pursue a PhD in math at this time?” The answer to this question should be personal to each and every student. But, in my opinion, the answer should not have changed from a year ago to today. The most important reason (and perhaps the only reason) to do a PhD in math should be that the candidate is passionate about mathematics and wants to become an expert in a particular topic within our field. If that is the goal, then the presence of LLMs in mathematics is irrelevant, because the goal is achieved when the candidate has gained sufficient knowledge to be an expert on a particular problem. If anything, LLMs may be used as a tool to achieve that goal more efficiently. For one, I am using them every day to finally understand concepts and techniques that I always had questions about, and now I can query an LLM until I am fully satisfied. I am able to search for the explanations and examples that click with me, that click with my own particular way of thinking about mathematics.

To what degree a student wants to use LLMs in a math PhD should be a personal choice but I will say that, as my colleague Jeremy Teitelbaum put it in a recent interview (here is the bit I am referring to , and here is the full interview ), students cannot afford not to learn about the current capabilities of LLMs, or any other technology for that matter. If your goal is to become an expert, then you have to be amenable to learning from all experts in the field, and from all sources that may allow you to go deeper into a subject than anyone else before you — and LLMs can be extremely efficient tools to explore literature, for instance.

But once again, the decision to do a PhD should not be based on the current state of the art of technology.

I wanted to do a PhD in mathematics because it seemed like a magnificent challenge. I wanted to do a PhD because I wanted to learn how Andrew Wiles proved Fermat’s Last Theorem. I wanted to continue studying mathematics because I simply did not want “a real job,” and the opportunity of contemplating advanced math on my own for a few years seemed like a dream to me, just too good not to give it my best shot. I know I would have deeply regretted it if I had not tried to complete a PhD when I had a chance (the best time to do it is when your undergrad knowledge is fresh!). I wanted to hear mathematicians talk about math, and rejoice in the small little details and miracles that make proofs work. I wanted to meet and hang out with other people who also thought number theory was the coolest thing on Earth. I wanted to publish a paper in a research journal, with my name on it, because I discovered a new theorem that no one had thought of before. I wanted to explain and share my passion for mathematics with others in a classroom and outside of the classroom .

Simply put, I just wanted to do math, and I would have been devastated if some undefined threat to the field of mathematics scared me away from the opportunity to pursue a PhD.

And if you are a student that is passionate about mathematics, and someone who wants all of that too, then a PhD is the right path for you, regardless of the technology available during your degree. You will learn to use the technology to a degree that you are comfortable with, and that fulfills your own dreams and expectations of what a PhD in Mathematics means to you.

Afterword: the BIG OpenAI release. After I finished writing this blog post, and had already sent it to Terry, OpenAI released a huge treasure trove of results in mathematics. This is, undoubtedly, a historic time in mathematics. The theorems in their papers prove some huge open problems in mathematics: the resolution of the so-called quasi Riemann Hypothesis, Goldfeld’s conjecture, the Hodge Conjecture in the case of CM abelian varieties, Hilbert’s 10th over Q, the Rigidity Conjecture… and the list goes on and on.

But such a tremendous release does not force me to change any of the points I made above. On the contrary, we already knew their models can do amazing things (e.g., Navier-Stokes). We already knew the frontier models can connect dots in the existing literature in ingenious ways (e.g., unit-distance conjecture). We already knew that OpenAI can spend a mind-boggling amount of resources to attack problems.

Also, we suspected that their models have limits and the new release shows evidence of that too. In their report, they mention that they attacked 4000 open problems, and their model was able to make progress on about 700 related problems. Yes, some of the ones they were able to solve are huge. But it also shows that their models are limited, quite possibly due to the arguments we explained above.

Are any of the solutions using new ideas that are outside of the convex hull of the current ideas in the literature? We will need mathematicians and time to digest these new proofs and understand what connections are being made, and whether brand new ideas were actually discovered in the process.

The main point of my post remains the same, though. There is a lot of mathematical research that remains to be done with and without the aid of LLMs. There are new mountains of mathematics to explain and communicate to others. And if you are a student who is passionate to learn what is new and what is left to do, then a PhD is definitely the right path for you.

Reducing undefined behavior in the C language

Hacker News
lwn.net
2026-10-08 22:02:53
Comments...
Original Article
This article brought to you by LWN subscribers

Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

As a professor of biomedical engineering, Martin Uecker perhaps does not fit the profile of a typical presenter at Kernel Recipes . He is, however, a longtime Linux user, and works on free software for controlling magnetic resonance imaging (MRI) scanners. He was at the conference to talk about the C programming language, the specific problem of undefined behavior in C, and whether it can eventually be made into a memory-safe language.

Why bother with C in 2026? It is, he said, still a great language. C is portable, stable over the long term, offers fast compilation, and the resulting binary code is fast. " What you see is what you get "; it is easy to look at C code and have some idea of what the computer will actually do. There are a lot of tools for working with the language, and C gets out of the way when necessary.

C does have a long history, and that affects the language as we see it today, he said. The C89 standard had to cope with a wide variety of hardware, including machines with signed-magnitude or one's-complement integer representations, segmented memory, exotic pointer representations, and surprising sizes for types. Some Honeywell machines, for example, had nine-bit bytes. That greatly complicated the task of writing a standard that would enable the writing of portable code.

[Martin Uecker] The approach that was taken was to define the semantics of the language in terms of an abstract machine. All operations are to be executed as if they had run on that abstract machine, which may not exactly match the actual hardware. The observable behavior of the program must be what the abstract machine would have done. The "observable" part matters: access to volatile variables, being defined as observable, must happen exactly according to the abstract machine; everything else just has to produce the same eventual result.

The standard gives a lot of freedom to compiler implementers; only the observable behavior has to be preserved. There are many aspects of that behavior that are either undefined or implementation-defined. These are not observable behavior, and thus do not constrain what compiler implementers can do. There are, of course, other specifications that can constrain compiler developers where the C standard does not; these include ABI requirements, standards like POSIX, or the need for backward compatibility.

Undefined behavior comes about when a program does something that is either not portable or not defined by the standard at all. In such cases, the C89 standard states that it " imposes no requirements " on the implementation. Undefined behavior exists for a number of reasons. It allows implementations to support extensions, manage interactions with hardware-based safety mechanisms, and perform aggressive optimization, all while allowing difficult-to-detect errors to be ignored. It explicitly gives the compiler the right to ignore whole classes of hard-to-detect errors.

Nasal demons

The problem, Uecker said, is that the standard allows a compiler to do anything in response to undefined behavior, up to the point of invoking nasal demons . If a program contains any undefined behavior at all, according to compiler writers, then it has no expected semantics. The C++23 standard goes further to explicitly state that the standard imposes no requirements for these programs. That has led to widespread disagreements between developers about what can be expected from the language.

For example, if you zero an entire structure (perhaps with a call to memset() ), then write to specific fields, what will happen if you read from any padding bytes in that structure? Might they contain security-relevant data? A 2015 survey showed that there was no consensus on what should happen in that case. Or consider this simple code:

    extern int x;

    int f(int a, int b)
    {
    	x = b ? 42 : 43;
	return a/b;
    }

If b is zero, then the return statement is a division by zero, which is undefined behavior. In this case, is the compiler entitled to omit the test entirely and just execute x = 42 ? After all, the b = 0 case has no expected semantics, and can thus be ignored. There are compilers that will do exactly that. In the undefined-behavior case, the store to x is not observable behavior. But now consider this case:

    extern void g(int x);

    int f(int a, int b)
    {
        g(b ? 42 : 43);
	return a/b;
    }

This might seem to be the same situation, with the compiler being entitled to remove the test and just pass 42 to g() , and some compilers have treated that way — but that compiler behavior was a bug. Imagine a definition of g() that calls exit() if b is zero. In that case, the division will never happen and the program's behavior is not undefined. So eliding the test and simply passing 42 to g() is incorrect.

One more interesting case:

    volatile int x;

    int foo(int a, int b, bool store_to_x)
    {
	if (! store_to_x)
	    return a/b;
	x = b;
	return a/b;
    }

The question here is: can the compiler hoist the final division operation above assignment to x ? If there are no semantics associated with the b = 0 case, then there is no change in observable behavior. This, too, is something compilers have done, but the C23 standard added a "no time travel" stipulation to disallow it. In C++, instead, hoisting must be explicitly prevented by inserting a call to std::observable_checkpoint() .

Time-travel bugs should eventually go away, but there are a lot of other situations where, even if the standard is clear, compiler writers often disagree. These include reading of uninitialized variables (which is almost always defined), and equality comparisons of pointers, which is always defined, but is also miscompiled by both Clang and GCC.

Fighting undefined behavior

To try to address all of these problems and more, the C committee runs three study groups focused specifically on the memory object model, memory safety, and undefined behavior. There are currently about 100 instances of undefined behavior in the C standard, but the in-progress C2y draft has removed 45 of them. The situation is indeed getting better.

There is an increasingly rich set of tools aimed at finding issues: compiler warnings, static analyzers, sanitizers, LLM-based tools, formal verification, and more. The number of situations where a compiler will emit a warning where possible undefined behavior is detected is growing; recent examples include better warnings for integer overflows and potential use-after-free situations. Static analyzers are available as standalone tools, but are also increasingly being built into the compilers themselves; GCC can now warn about a number of potential buffer-overflow situations, for example. Sanitizers work by inserting run-time checks; they can catch a lot of undefined behavior and, in trapping mode, be used for hardening as well.

Memory safety has never been one of C's strong points, but Uecker wanted to make the point that it can be improved. That problem breaks down into three sub-problems: type safety, spatial memory safety, and temporal memory safety.

C, he said, has a strong type system, and the remaining problems are fixable. Tagless unions, for example, can create type confusion, but the compiler can enforce types with some additional annotations. New diagnostics can catch unsafe casts from void . Type checking across translation units is traditionally not a huge problem in C, since header files are used to ensure consistent types, but the situation could be improved with a link-time checker.

Spatial memory safety — bounds checking — is a partially solved problem; the compilers can perform array-bounds checking in many situations now. In some cases, some code changes are needed to fully benefit from this checking. Use of the counted_by attribute can enable checking for flexible array members, for example.

Temporal memory safety — avoiding use-after-free bugs and the like — is harder, Uecker said, and Rust definitely has an advantage there. Still, better temporal memory-safety enforcement is possible. Architectures like CHERI can help here is well. Fil-C can find a lot of temporal-safety bugs.

Can all of these tools and language changes get us to full memory safety? Completely solving the problem will require either expensive run-time checking or formal verification, he said. In the near future, the most complete results will be had with the combination of a restricted language and formal verification tools.

Overall, he concluded, C is still a living language and is still improving. The C23 standard removed a number of problematic features, including old-style (K&R) function definitions, support for sign-magnitude and one's-complement machines, and trigraphs. It added bit-precise integer types, checked integer operations, and more. C2y will go further, adding case ranges, named for loops, the _Countof() macro to determine array lengths, and a lot of " demon removal ". It will not achieve full memory safety for C, but that is an eventual possibility, and will become more practical over time. He ended by encouraging interested people to participate in the working groups.

The video and slides from this talk are available.

[Thanks to the Linux Foundation, LWN's travel sponsor, for supporting my travel for this event.]

Index entries for this article
Conference Kernel Recipes/2026


The LWN site is currently under high scraper load, so comment display has been suppressed for anonymous users. If you are a human, you may read the comments by clicking the button below:

Note : you can avoid this step in the future by logging into your LWN account.

Anthropic bans users from ‘needless abusive or cruel behavior’ towards Claude

Guardian
www.theguardian.com
2026-10-08 21:25:42
A spokesperson behind the tech company’s AI chatbot has not yet specified what counts as abusive or cruel content Anthropic has barred users from exhibiting “sustained and needless abusive or cruel behavior” toward its models, as the company’s leaders continue to ponder machine consciousness. The Ve...
Original Article

Anthropic has barred users from exhibiting “sustained and needless abusive or cruel behavior” toward its models, as the company’s leaders continue to ponder machine consciousness.

The Verge first reported the change in policy.

A spokesperson for Anthropic , which is behind AI chatbot Claude, did not immediately respond to an inquiry about what could be considered “abusive or cruel”.

In an online user policy, the San Francisco-based company noted that its ban would not apply to common user frustrations, model testing or “dark creative themes”.

Anthropic’s usage policy previously contained restrictions on abusive conduct.

The company’s large language models have the ability to end a conversation if a user is being persistently harmful. When that feature rolled out last August, the company framed it as a safeguard for AI’s welfare.

“We remain highly uncertain about the potential moral status of Claude and other LLMs, now or in the future. However, we take the issue seriously, and alongside our research program we’re working to identify and implement low-cost interventions to mitigate risks to model welfare, in case such welfare is possible. Allowing models to end or exit potentially distressing interactions is one such intervention,” according to its website.

The notion of AI systems being conscious has been highly polarizing in and outside the tech world.

Anthropic CEO Dario Amodei has said he cannot rule out the possibility.

Meanwhile, Sam Altman, CEO of rival OpenAI, has appeared averse to the idea.

“I am very uncomfortable about people trying to ascribe religious force or a surrender of human judgment to AI models, and think it is a real safety issue,” he wrote in an X post, days after the New York Times reported on Anthropic leaders’ extensive conversations with religious scholars.

B-Trees Are Back: Engineering Fast and Pageable Node Layouts

Lobsters
www.cs.cit.tum.de
2026-10-08 20:52:27
Comments...
Original Article
No preview for link for known binary extension (.pdf), Link: https://www.cs.cit.tum.de/fileadmin/w00cfj/dis/papers/btrees-are-back.pdf.

ttok 1.0

Simon Willison
simonwillison.net
2026-10-08 20:34:43
Release: ttok 1.0 I released ttok 0.4, ran uv tool upgrade ttok, piped a file into the new version... and realized that it was defaulting to the GPT-4 tokenizer when it should very clearly default to GPT-5/GPT-6 instead! I figured switching the default was a reasonable excuse to finally ship...
Original Article

I released ttok 0.4 , ran uv tool upgrade ttok , piped a file into the new version... and realized that it was defaulting to the GPT-4 tokenizer when it should very clearly default to GPT-5/GPT-6 instead!

I figured switching the default was a reasonable excuse to finally ship a 1.0.

OpenAI haven't actually confirmed that GPT-6 uses the same tokenizer as the GPT-5 family yet - there's an angry issue about it - but I found this commit by William Liu which reports on an experiment he ran confirming that the tokenizers are likely the same:

All seven GPT models (5.5, 5.6 Sol/Terra/Luna, 6 Astra/Sol/Luna) report 44,794 tokens and match each other on every one of the 31 fixtures. GPT-6 introduces no input-count change on this corpus.

Show HN: Edi Life OS – self-hosted life dashboard with an MCP server for AI

Hacker News
github.com
2026-10-08 20:02:19
Comments...
Original Article

Edi Life OS

One self-hosted home for your focus, habits, goals, money and projects — with an MCP server so your AI assistant can work alongside you.

PHP 8.1+ MySQL 8 MCP server Docker Self-hosted MIT license

Quick start · Tour · AI / MCP · Deploy · API

Edi Life OS overview: a daily productivity score with focus, habit, goal and work progress, and six life dimensions

Most of us run our lives across a to-do app, a habit tracker, a budgeting spreadsheet, a Pomodoro timer and a notes app — and none of them know about each other. Edi Life OS puts all of it in one calm, private dashboard and connects the small things you do today to the direction you want your life to take.

  • Everything in one place. Ten workspaces share one design, one sign-in and one database.
  • Connected, not just collected. Habits drive goal progress, Kanban cards show up in the calendar, and the Overview turns it all into one daily score.
  • Yours. Runs on any PHP + MySQL host, even cheap shared hosting. No subscription, no tracking, no vendor lock-in.
  • AI-ready. A built-in MCP server lets Claude and other assistants read your dashboard, plan goals, log habits and track expenses for you.

A quick tour

Growth workspace with six life dimensions and SMART progress

Growth — Six life dimensions, each linked to long-term goals, SMART goals, habits and tasks. Guided weekly, monthly and quarterly reviews.

Focus timer over an illustrated landscape with a soundtrack panel

Focus — Pomodoro sessions with breaks, a built-in focus soundtrack and a landscape that follows the time of day.

Habit checklist with a seven-day completion chart

Habittify — Small daily habits, streaks and a seven-day picture of your consistency.

Kanban board with backlog, in progress, review and done columns

Kanban — Boards with labels, priorities, due dates, checklists, comments and attachments.

All ten workspaces
Workspace What you can do
Overview A live productivity score, focus and habit trends, goals, finances and a seven-day weather forecast.
Growth Connect six life dimensions to long-term goals, SMART goals, habits and tasks. Run weekly, monthly or quarterly reviews. Guide
Focus Timed sessions with short and long breaks, session history and a focus soundtrack.
Finance Expenses, income and budgets in Toman. Debts you owe and credits owed to you, one-time or recurring, recorded straight into the ledger. Guide
Habittify Daily habits with completion, streaks and monthly progress.
Kanban Draggable cards and lists with priorities, labels, dates, checklists, comments and file attachments.
Calendar Due cards and financial dues across all boards in Month or Schedule view.
Goals SMART goals with measures, deadlines, priorities, checklists — or progress driven by a habit.
Notepad Markdown notes with preview and export.
Notes Sticky notes with colors, fonts and connections.

Dates follow Asia/Tehran . The weather card shows Qeshm Island via Open-Meteo; its tide figure is a modeled estimate, not for navigation.

Talk to your Life OS with AI

Edi Life OS ships with an optional MCP server that exposes 26 tools across your dashboard, goals, tasks, habits, finances and notes. Connect it to Claude Desktop, Claude Code or any MCP client and ask in plain language:

"Show me my LifeOS dashboard."

"Create a SMART goal called Build a home studio, due in three months, and add Buy acoustic panels as a task."

"Mark Reading complete for today."

"Log a 450,000 Toman food expense and show my balance."

The MCP server talks to your app only through its token-protected HTTP API. It never touches your database or credentials. Setup takes a minute — see MCP server below.

Quick start

With Docker (recommended)

git clone https://github.com/edrisranjbar/lifeos.git && cd lifeos
cp .env.example .env    # set your sign-in and passwords
docker compose up -d

Open localhost:8080 and sign in. MySQL, the app and your attachments each live in their own volume, so docker compose up -d --build after a git pull upgrades without losing data.

On shared hosting

Download lifeos-<version>.zip from the latest release and extract it into your hosting home directory , so public_html/ becomes your web root and the backend sits safely above it. Copy config.example.php to config.php , fill in your MySQL details, and open your site. See the deployment guide for details.

With PHP locally

You need PHP 8.1+ (with pdo_mysql and mbstring ) and MySQL 8+ (or MariaDB 10.4+).

git clone https://github.com/edrisranjbar/lifeos.git
cd lifeos
cp config.example.php config.php   # PowerShell: Copy-Item config.example.php config.php

Edit config.php with your database connection and the username and password you want to sign in with, then start the server:

php -S localhost:8000 -t public_html server.php

Open localhost:8000 and sign in. The database and tables are created on first use. You can change your sign-in later in Settings .

Important

config.php and .env hold real credentials and are gitignored. Never commit them.

Requirements

Component Requirement
PHP 8.1+ with pdo_mysql and mbstring
Database MySQL 8+ ; also tested with MariaDB 10.4
Web server PHP's built-in server locally; Apache with rewrites for hosting
Weather PHP curl and outbound HTTPS
MCP server Optional: Node.js 22.9+
API tests Optional: pdo_sqlite

API and integrations

HTTP API

A private /api/v1 API covers the dashboard, goals, tasks, habits, finances and sticky notes. It uses its own bearer token, separate from your browser sign-in.

php -r "echo bin2hex(random_bytes(32));"

Set the result as api_token in config.php (or the LIFEOS_API_TOKEN environment variable), then:

curl -H "Authorization: Bearer $LIFEOS_API_TOKEN" https://your-host/api/v1/dashboard

See the API reference for endpoints, payloads and errors.

MCP server

cd mcp
npm ci
cp .env.example .env   # set LIFEOS_BASE_URL and LIFEOS_API_TOKEN
npm start

The server runs over stdio ; there is no hosted MCP endpoint. The MCP guide lists every tool and shows client configuration for Claude and Codex.

Your data stays yours

  • Everything lives in your MySQL database. Habits use dedicated tables; other workspaces store JSON documents in app_state .
  • Saves use revision checks, so a stale tab can't silently overwrite newer changes. API writes use transactions and row locks.
  • Data from older browser-only versions is imported once; conflicting copies are archived as legacy_backup_* records.
  • Back up the database, attachment files and your configuration together.

Moving from the old Habittify SQLite database? See migrating Habittify .

Security

Edi Life OS is built for a single owner .

  • The API token grants read and write access to every supported domain. Token scopes and app-level rate limiting are not implemented, so set request limits at the hosting layer.
  • Use HTTPS anywhere other than localhost, and keep tokens out of URLs, frontend code, screenshots and logs.
  • Secret notes are hidden from API reads by default. The secret flag controls visibility; it is not separate encryption.

Project structure

public_html/          Browser workspaces, shared assets and Apache entry points
lib/                  API domains, response helpers and state transactions
mcp/                  Optional Node.js stdio MCP server
tests/                Timer, API, MySQL and integration checks
docs/                 Guides, plus README screenshots in docs/media
config.example.php    Configuration template (no real credentials)
server.php            Development router and application routing
api.php               HTTP API entry point

Built with PHP, MySQL and vanilla JavaScript — no frontend build step, no framework.

Dockerfile , docker-compose.yml and docker/config.php run the app with configuration from environment variables.

Documentation

License

MIT © 2026 Edris Ranjbar. Use it, fork it and build on it.

Contributing

Ideas, bug reports and pull requests are welcome. Open an issue to start a conversation, and see the development guide to run the checks locally.

If Edi Life OS helps you run your days, consider giving it a ⭐ — it helps others find it.

Reproducible Builds (diffoscope): diffoscope 333 released

PlanetDebian
diffoscope.org
2026-10-08 20:00:00
The diffoscope maintainers are pleased to announce the release of diffoscope version 333. This version includes the following changes: [ Johannes Schauer Marin Rodrigues ] * Add support for showing differences in POSIX.1-2001 PAX headers within .tar files. [ Chris Lamb ] * Re-order various parts...
Original Article

« Back to homepage

09 Oct 2026 — Chris Lamb

The diffoscope maintainers are pleased to announce the release of diffoscope version 333 . This version includes the following changes:

[ Johannes Schauer Marin Rodrigues ]
* Add support for showing differences in POSIX.1-2001 PAX headers within .tar
  files.

[ Chris Lamb ]
* Re-order various parts of the tar comparator to make it easier to
  progressively delve into its functionality.
* Reflect that the use of the "case-match" language feature requires at least
  Python 3.10+. This can be worked around if it causes problems - let us know.
* Update various copyright years.

You find out more by visiting the project homepage .

« Back to homepage

ttok 0.4

Simon Willison
simonwillison.net
2026-10-08 19:34:28
Release: ttok 0.4 ttok is my CLI tool for counting tokens, using OpenAI's open source tiktoken library. It hasn't been in updated in a couple of years, but I finally fixed a Click warning, updated CI, and added a --list-models command to list available models. It works with uvx, so you can c...
Original Article

ttok is my CLI tool for counting tokens, using OpenAI's open source tiktoken library.

It hasn't been in updated in a couple of years, but I finally fixed a Click warning, updated CI, and added a --list-models command to list available models.

It works with uvx , so you can count tokens in anything like this:

cat file.txt | uvx ttok

Show HN: SVG Spark – 10 client-side SVG design and dev tools

Hacker News
svg-spark.vercel.app
2026-10-08 19:32:49
Comments...
Original Article

Nothing ever leaves your device

Ten utilities. Zero uploads.

A collection of fast, single-page tools for developers, marketers and creators — every one of them runs entirely in your browser.

ICE Agent on Scene of NYC Shooting Was Posing as Construction Worker, Eyewitness Says

Intercept
theintercept.com
2026-10-08 19:32:38
A member of Congress at the scene confirmed to The Intercept that there was a child in the victim’s car when ICE agents shot at it. The post ICE Agent on Scene of NYC Shooting Was Posing as Construction Worker, Eyewitness Says appeared first on The Intercept....
Original Article

U.S. Immigrations and Customs Enforcement agents shot a person in New York City on Thursday afternoon, according to police.

The shooting took place around 4 p.m. in Manhattan’s Marble Hill neighborhood, according to a statement from the New York Police Department. The NYPD said the victim was taken to a local hospital and was conscious, but provided no further information about the victim.

Rep. Adriano Espaillat, D-N.Y., told The Intercept that there was a child in the car and that the child is OK.

“This afternoon in Marble Hill, a New Yorker was shot by an ICE agent in a residential neighborhood. Early reports indicate agents surrounded him and a 5-year-old child in his car before firing multiple rounds,” New York Mayor Zohran Mamdani said in a statement . “We believe the child was physically unharmed.”

A neighbor, Iris Rosa, said the shooting happened just as a nearby school was being let out. After hiding in a store for a few minutes, she said she went to look at the scene and said it looked like agents had shot into a car.

The victim, Rosa said, was on the ground bleeding and being held down by the agents. A baby, she said, was in the car and was held by ICE agents until someone picked the child up.

Photos of the aftermath of the shooting, taken by a neighbor and obtained by The Intercept, show apparent government agents in plain clothes and tactical vests pinning a man on the asphalt. Another man in a high-visibility vest is clutching an assault rifle while holding a phone between his check and shoulder.

The aftermath of a shooting, reportedly by ICE agents, of a vehicle in New York City on Oct. 8, 2026. Obtained by The Intercept

Rosa, the neighbor, said a man with a high-visibility vest appeared to be posing as a construction worker, but as she watched, Rosa told The Intercept, the man took the vest and put it in a nearby vehicle.

ICE agents routinely pose as construction workers in order to stakeout targets for immigrations.

Representatives of Mayor Zohran Mamdani, ICE, and the Department of Homeland Security did not immediately respond to requests for comment.

The victim is the latest of at least 25 people to be shot by federal immigration agents this year. In July, after two fatal ICE shootings and a botched arrest in Las Vegas by plainclothes agents wearing hooded sweatshirts, the agency mandated a new dress code for field operations.

New York Gov. Kathy Hochul said she had been briefed on the shooting. “We expect federal authorities to provide a full and transparent accounting of the circumstances surrounding this incident,” she said on X.

“ICE’s violent tactics are a clear danger to all New Yorkers, as today’s shooting in a residential neighborhood demonstrates,” said Murad Awawdeh, the head of the advocacy group New York Immigration Coalition, in a statement. “This incident is another reminder of the unchecked, rampant violence ICE has been spreading throughout our communities.”

This is a developing story and may be updated.

OpenAI, the Partition Principle, and Mathematics

Hacker News
karagila.org
2026-10-08 19:29:43
Comments...
Original Article

By the time I got out of bed yesterday, I had three people ask me if I'd seen the OpenAI announcement that the Partition Principle does not imply the Axiom of Choice. The number kept increasing during the day, and I can see why. I am famously interested in this problem.

Indeed, at least two people asked if I plan on sending Sam Altman a bottle of whisky, as promised in my Problems page. The answer to that is no. And let me explain to you why, and why you should be very angry at OpenAI.

Let me clarify something first. I am not entirely against the use of AI. I understand that it is a tool, and many people find it useful, and I am happy to agree that it is merits. I think that we need to better understand how this technology changes our field and how we want to use it before we rush to throw our lot with it. This is why I generally avoid using AI for mathematics (I am happy to ask LLMs to consolidate information for me, or to generate a useful infographic, or to proof read an email, etc.), it's just the framework of using it that is currently missing in my view. Still, we are in the stage of discovery, people use it and we see the consequences unfold and we can decide as a community to adopt it further or restrict its use. For example, arXiv introduced rate limiting as a consequence of these tools, and almost all papers should include some AI statement at this point (even to state that no AI was used, I guess). We need to decide how we judge the contribution of the author, e.g., do we require the chat log be made public, or at least available to the reviewers and the editor? These are questions that we need to contend with and see where they take us.

But, back to the Partition Principle. I took a brief look at the preprint released by OpenAI (not at the Lean code, since I know very little of the actual usage of Lean, and that code was enormous). It sucked. It is unclear, muddled, and has a strange structure. The terminology is "a bit off", there are theorems that I would not expect to be proved, that are also stated in a very strange manner. Lemma 7.4, again, is not something you'd expect to see in a paper like this, the same goes to Lemma 8.1.

Then there are the references. One of my papers on the Bristol model is cited for some basic introduction of symmetric extensions, which is not the reference I would have chosen; at least three unpublished, unrefereed, and non-arXiv'd lecture notes are used as references (including mine, which is used to refer to one proposition that I am certain appears in some published papers of mine and of others). That's not what you'd expect from a serious preprint claiming to solve a problem.

Let me compare this preprint to any paper in set theory that isn't dealing with the technicalities of a subfield I'm not familiar with. I can almost certainly skim a set theory paper and have a good idea as to what is going. I might not be familiar with some of the terminology, or the arguments, but for the non-technical stuff, I should be able to understand the strategy and the construction. And for papers on my expertise, on the Axiom of Choice, I will generally need to skim the paper briefly to have a good idea as to what the authors did (or intended to do). Not to say that I am always right, or that I always get it exactly as the authors intended, but this is what I've spent over 15 working on, and by now I have a pretty good idea how it works. But with OpenAI's paper on the Partition Principle this is impossible.

No, if this was an academic paper submitted to a journal, it should be issued a desk rejection for the quality. The onus is always on the author to conform and adhere to the communications level. Much like a paper written in Swedish would likely be rejected outright from the Proceedings of the American Mathematical Society, because the onus is on the authors to make it accessible for the readers. And therein lies the rub.

OpenAI drops some hundreds of "solutions", incomprehensibly written "solutions" , and we are all expected to jump on them and what? Appreciate their contributions? Why? I am trying to finish several papers, I am supervising a number of Ph.D. students, and I have a lot of active research of my own to do. When am I supposed to sift through a badly written paper? Why should I bother, when they don't bother to communicate better?

The OpenAI press release just suggests "progress". But the media cycle, for everyone else, these are "solutions". This is a perfect way to have your cake and eat it too. But it is the equivalent of a Denial of Service , should we want to take it seriously: stop everything else and figure this one out. And maybe some people worked for years on a problem that they might just do that, but as a whole... Well. If this was real attempt to share progress, the quality of the writing would be better, it would receive some input from actual experts on the actual topic. OpenAI is a busy company, but I am sure that if they want to be genuinely helpful, they can find the time to contact a few mathematicians for advice and input, if nothing else, then on the quality of the outputs. Because even if this is a huge leap forward in improvement, it is not nearly at the acceptable level. But hey, everyone can claim that ChatGPT solved a long-standing problem (this one, about the Partition Principle, is over a century old), so why should OpenAI care?

And what are we, the mathematicians, left with? We are left with a public, funding bodies, and policy makers that are not academics, not experts, not mathematicians, nor they are familiar with how mathematical research is done (since it is very different from research in biology, psychology, or philology), who see these "results" and think that we can replace mathematicians with bots. This is the equivalent of replacing the chef with the kitchen tools, even if the knife is automatic and can dice veggies on its own, there is still a significant distance between that and palatable food that you'd want to eat.

It seems to me, that the AI tech companies would like us to conform to their standards, rather than spend the time and energy to conform to ours. And I am afraid that this just will not do. So, no, I will not be sending Sam Altman a bottle of whisky anytime soon, nor I am planning on spending my time reading through that paper and trying to make sense of it.


Want to comment? Send me an email!

Bevy 0.20

Lobsters
bevy.org
2026-10-08 19:21:57
Comments...
Original Article

Thanks to 227 contributors, 817 pull requests, community reviewers, and our generous donors , we're happy to announce the Bevy 0.20 release on crates.io !

For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. You can check out our Quick Start Guide to try it today. It's free and open source forever! You can grab the full source code on GitHub. Check out Bevy Assets for a collection of community-developed plugins, games, and learning resources.

To update an existing Bevy App or Plugin to Bevy 0.20 , check out our 0.19 to 0.20 Migration Guide .

Since our last release a few months ago we've added a ton of new features, bug fixes, and quality of life tweaks, but here are some of the highlights:

  • Solari and DLSS : Solari, Bevy's realtime pathtraced renderer, is now faster, more accurate, supports more Bevy rendering features, and runs on macOS via Metal!
  • BSN Syntax Improvements : BSN, Bevy's new scene system, had some syntax changes that made it much easier to read and compose
  • Ready Event : BSN scene entities now trigger an observable Ready event when all of their children have been spawned.
  • More UI Widgets : Bevy Feathers, Bevy's opinionated editor-centric UI toolkit, now has Color Input, Scrollable List View, Dropdown Selection, and Lazy Menu widgets. The Number Input widget is now scrubbable / draggable, and we've added Headless Tab Widgets.
  • WESL Shaders : Bevy has officially adopted the WESL shader language (a standardized extension of WGSL). WESL is already an improvement over Bevy's old custom WGSL dialect, and we've been working with the WESL team to plan out the future of shader development in Bevy.
  • Sprite Materials and Extended 2D Materials : It is now possible to create custom shader materials for Sprites, and 2D mesh materials can now be extended like they can in 3D.
  • Pan Orbit Camera : Bevy now has a "pan orbit camera", making it possible to navigate scenes in a CAD-like way.

Solari and DLSS #

zero day

Solari, Bevy's realtime pathtraced renderer, has seen major improvements to pretty much every aspect of the plugin!

Read JMS55's blog for the technical details, or continue reading below for the high level overview.

Improved Image Quality #

Thanks to improvements in our ReSTIR implementation, rendering is now mostly unbiased, leading to much more accurate lighting.

Additionally, thanks to some other changes, moving objects no longer have shadows that lag behind, and reflections now look significantly less shimmery in motion, especially for non-metallic materials.

Improved Performance #

DLSS-RR has gotten very good in recent updates, and for many scenes, ReSTIR costs a decent chunk of performance, and does not significantly improve image quality.

As a result, we've decided to make ReSTIR optional, and turn it off by default .

If you were using Solari in Bevy 0.19, check if the loss of ReSTIR affects your scene, and if so re-enable SolariLighting::restir .

With ReSTIR off, expect reduced shadow quality and missing shadows in motion in scenes with many lights. We are exploring cheaper ways of improving light sampling, without ReSTIR, to improve this in the future.

In addition, Solari's scene management code is now retained (similar to retained render world optimizations in previous versions of Bevy), and overall much more optimized, leading to significantly reduced CPU costs.

You may also want to take a look at the new fields in SolariLighting . While we aim to set reasonable defaults that will work well across a wide variety of games, there are now many knobs (world cache size, per-pixel light sample count, temporal accumulation, and path tracing bounce count) that can be tweaked to improve performance or quality for your specific scene, project and hardware.

Improved Compatibility #

Solari now supports lighting from Atmosphere and EnvironmentMapLight s on cameras, in addition to the existing support for DirectionalLight and emissive meshes. We're hoping to add support for the remaining PointLight , SpotLight , and RectLight types in the near future .

Solari now also runs on macOS, but note that there is currently no built-in denoiser included in bevy_solari for macOS. MetalFX Ray Reconstruction might be a possible solution in the future (contributions welcome!)

DLSS Updates #

Finally, our dlss_wgpu crate has been updated to support the latest version of DLSS, bringing support for DLSS-RR 4.5, which significantly improves denoising quality in Solari.

If you were using DLSS in Bevy 0.19, make sure to download and setup the newest version of the DLSS SDK, else you will run into compiler errors.

BSN Syntax Improvements #

BSN landed with a few idiosyncrasies that caused friction in practice. We made some changes to BSN's syntax this cycle in the interest of improving its ergonomics and clarity. After this, the syntax should largely be nailed down.

Explicit scene syntax #

All scene references now require @ prefixes:

// Before
bsn! {
    scene_variable
    scene_function()
    @SceneComponent
    {scene_expression}
}

// After
bsn! {
    @scene_variable
    @scene_function()
    @SceneComponent
    @{scene_expression}
}

In addition to making it easier to spot scene inclusions (and unifying the syntax across cases), this freed us up to make component values much easier to work with!

No more template_value wrappers! #

You can now remove all of those pesky template_value wrappers from your component values:

// Before
bsn! {
    template_value(component_variable)
    template_value(component_function())
}

// After
bsn! {
    component_variable
    component_function()
}

Enums "just work" #

Enums no longer require VariantDefaults or FromTemplate , provided they implement Default and Clone :

// Before
#[derive(Component, Default, Clone, VariantDefaults)]
enum Foo {
    A { x: u32, y: u32 },
    #[default]
    B,
}

bsn! {
    Foo::B
}

// After
#[derive(Component, Default, Clone)]
enum Foo {
    A { x: u32, y: u32 },
    #[default]
    B,
}

bsn! {
    Foo::B
}

If you were using an enum that didn't support VariantDefaults , you can now remove the template_value wrapper:

// Before
bsn! {
    template_value(Foo::A)
}
// After
bsn! {
    Foo::A
}

The removal of VariantDefaults does mean that enums must now have every field specified:

// Before (y field is initialized to its default value)
bsn! {
    Foo::A { x: 1 }
}

// After (y field must be manually specified)
bsn! {
    Foo::A { x: 1, y: 0 }
}

We believe this tradeoff is worth it, as it increases BSN's compatibility with arbitrary Rust enums. Rust doesn't support "enum variant defaults" anyway!

Chained method support #

The "builder pattern" (and chained methods generally) previously required a template_value wrapper. This can now be removed:

// Before
bsn! {
    template_value(Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y))
}
// After
bsn! {
    Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y)
}

Additionally, you can now remove the template_value wrapper in cases like this:

// Before
bsn! {
    template_value(node.clone())
}
// After
bsn! {
    node.clone()
}

In general, you should now be able to remove all template_value instances from your BSN declarations!

Improved list syntax #

BSN previously used commas to separate entities, with optional () around entities to make the boundaries clearer. This resulted in a lot of syntax noise, line noise, and over-indentation:

bsn! {
    Node 
    Children [
        (
            #OkButton
            @button("Ok")
        ),
        (
            #CancelButton
            @button("Cancel")
        ),
    ]
}

To avoid this, many developers opted for this syntax instead, which made it very hard to visually distinguish entities:

bsn! {
    Node 
    Children [
        #OkButton
        @button("Ok"),
        #CancelButton
        @button("Cancel"),
    ]
}

BSN now uses -- to separate entities in a list:

bsn! {
    Node 
    Children [
        #OkButton
        @button("Ok")
        --
        #CancelButton
        @button("Cancel")
    ]
}

This gives us the best of all worlds: entities are visually distinct, and there is no over-indentation, line noise, or syntax noise ( the stats when compared to other competitors in the "markup format" space are very competitive!). Both () and , have been deprecated in this context.

Using [] and () for bsn_list! (and bsn! ) is now discouraged / warned against (ex: bsn_list! [] ), as it can result in poor rustfmt autoformatting. Instead, use bsn_list! {} , which is the only syntax that rustfmt won't touch. Don't worry, we plan to build a BSN auto-formatter!

bsn_list! {
    #Ok @button("Ok")
    --
    #Cancel @button("Cancel")
}

Ready Event #

We landed BSN, Bevy's next generation scene system, in our last release . It was missing a key piece though: the ability to easily run logic when a scene is fully "ready" and spawned (ex: all dependencies have loaded, the full hierarchy is present, and all of the initial components are inserted in the scene). This is a critical piece for building cohesive, standalone, composable scenes. It is also necessary to properly layer Bevy logic on top of other scene representations (like glTF).

The closest we had was the Add event for a given component, which runs "top down" (meaning children are not available). We needed a "bottom up" equivalent to enable building logic that relies on the complete loaded and spawned scene.

The solution is pretty straightforward: trigger a new Ready event for each entity in a spawned scene after the full spawn logic has run for that entity (including its descendants).

This enables the following:

#[derive(SceneComponent, Default, Clone)]
struct Widget;

impl Widget {
    fn scene() -> impl Scene {
        bsn! {
            Node { width: px(100), height: px(100) }
            on(|ready: On<Ready>| {
                info!("The full scene, including 'widget.bsn' contents, is available here")
            })
            Children [
                Text("hello")
                --
                :"widget.bsn"
            ]
        }
    }
}

world.spawn(bsn! { @Widget })

Feathers, Bevy's opinionated editor-centric UI toolkit, now has more widgets for you to play with:

Color Input #

Bevy now has a compact color input selector that displays a color picker widget popup when clicked. This includes a color wheel selector, RGB, and HSL selectors, and a recently used colors grid.

color input

List View / Scrollbar #

A scrollable, selectable list view.

scrollbar listview

A selection field that when clicked, displays a dropdown containing a list of options to select.

dropdown

Lazy Menu #

Spawns a menu popup when the menu is opened and despawns it when it is closed. This is in contrast to the normal Menu widget, which just hides the menu.

lazy menu

Number Input Widget Scrubbing / Dragging #

The FeathersNumberInput widget has been expanded to support both normal text input and scrubbing / dragging. There is a configurable "hard limit" (minimum and maximum value via any input method) and "soft limit" (minimum and maximum value via dragging), in addition to control over floating point precision and step sizes.

bevy_ui_widgets now has headless (bring-your-own-visuals) tab behavior: a TabList container and Tab headers.

Selection is managed "externally". SelectedTab on the list holds the selected tab; interaction emits ValueChange<Option<Entity>> as a request, applied by the app or by the optional tablist_self_update observer.

Tabs support keyboard shortcuts and integrate with Bevy's focus, interaction, and accessibility systems.

bsn! {
    TabList
    SelectedTab(Some(first_tab))
    on(tablist_self_update)
    Children [
        Tab Children [ Text("General") ]
        --
        Tab Children [ Text("Rendering") ]
    ]
}

See the headless_tabs example for controlled and self-updating tab lists in both orientations.

WESL Shaders #

Bevy's shaders are now written in WESL and the old "Custom Bevy Extended WGSL" language support has been removed.

WESL is a language standard that extends WGSL to add important usability features like modules, imports, conditional compilation, and more. You can see what that looks like (and render pretty shader toys!) live in your browser in the WESL Playground .

Bevy has historically handled these things in our own custom WGSL dialect, but we believe it is better for the wider shader ecosystem (and for us) to adopt a common standard where we can pool resources on language improvements, module ecosystems, and IDE tooling. We've been working closely with the WESL team to evolve the standard in a way that fits well into the Bevy picture.

A critical part of that tooling is language server protocol support, in the form of wgsl-analyzer . That means syntax highlighting, go-to-definition, inlay hints, code folding, formatting and more, once installed for your IDE of choice.

A Bevy fog shader with WESL syntax highlighting

Custom shaders in the old Bevy WGSL dialect need to be translated to WESL and renamed from .wgsl to .wesl . Plain WGSL files with no preprocessor directives will keep working.

Before: Custom Bevy Extended WGSL #

#import bevy_pbr::forward_io::VertexOutput
#import "shaders/util.wgsl"::hsv_to_rgb
#ifdef VERTEX_COLORS
var<private> tint: vec4<f32>;
#endif
@group(2) @binding(#{MATERIAL_BIND_GROUP}) var<uniform> color: vec4<f32>;

After: WESL #

import bevy_pbr::render::forward_io::VertexOutput;
import super::util::hsv_to_rgb;
@if(VERTEX_COLORS)
var<private> tint: vec4<f32>;
@group(2) @binding(constants::MATERIAL_BIND_GROUP) var<uniform> color: vec4<f32>;

Mesh Shaders #

Mesh shaders are now integrated with Bevy's pipeline cache and are available for advanced users to take advantage of. Mesh shaders can be used to render:

Mesh shaders, at a high level, replace the classic vertex shader with a compute shader. This allows generating geometry directly on the GPU and passing those generated primitives directly to the fragment shader without using multiple pipelines or intermediary buffers (to pass data from a compute shader to a render pipeline).

A MeshPipeline contains:

  • an optional task shader (also known as amplification shader)
  • a mesh shader
  • a fragment shader

The new MeshPipelineDescriptor can be used to define a MeshPipeline . That MeshPipeline is then used as a RenderPipeline , which allows the re-use of Bevy's lower level rendering APIs such as RenderContext::begin_tracked_render_pass to take advantage of the new draw_mesh_tasks APIs.

let mut pass = render_context.begin_tracked_render_pass(RenderPassDescriptor {
    label: Some("custom_mesh_shader_pass"),
    color_attachments: &[Some(target.get_color_attachment())],
    depth_stencil_attachment: Some(depth.get_attachment(StoreOp::Store)),
    ..default()
});

pass.set_render_pipeline(mesh_pipeline);
pass.set_bind_group(0, &bind_group, &[view_uniform_offset.offset]);

// draw_mesh_tasks dispatches the task shader if there is one,
// or dispatches the mesh shader if there is no task shader.
pass.draw_mesh_tasks(1, 1, 1);

It is notable that mesh shaders are an advanced graphics approach with platform-specific performance considerations, and that this is the initial base support for the feature. Higher level user APIs, and easy integration with Bevy's StandardMaterial , are left to future work.

Mesh shaders are not supported on web platforms.

Check out the new mesh_shader_intro example for more usage examples.

Sprite Materials #

Until now, Bevy's sprite renderer has been lacking a major feature: the ability to extend it with custom shaders! With this release, it's now possible to create custom materials for sprites by implementing the MaterialExtension2d trait, inserting the SpriteMaterial component and adding the SpriteMaterialPlugin to your app.

The shader can use functions exported from bevy_sprite_render::sprite_mesh::functions , including:

// Samples the sprite's final color, including the tint and alpha discard, at a given UV.
fn sample_final_color(uv: vec2<f32>, instance_index: u32) -> vec4<f32>;

// Samples the sprite's texture without tint and alpha discard at a given UV.
fn sample_sprite_texture(uv: vec2<f32>, instance_index: u32) -> vec4<f32>;

// Applies tint and alpha discard to the sprite's color.
fn get_final_color(sprite_color: vec4<f32>, instance_index: u32) -> vec4<f32>;

Check out the sprite_material example to see it in action!

2D Extended Materials #

Bevy now provides a 2D analog to 3D's ExtendedMaterial , which can be used to extend an existing material by implementing the MaterialExtension2d trait:

#[derive(AsBindGroup, Reflect, Clone)]
struct MyMaterial {
    #[uniform(20)]
    value: Vec4,
}

impl MaterialExtension2d for MyMaterial {
    fn fragment_shader() -> Option<ShaderRef> {
        Some("my_material.wesl".into())
    }
}

This material can now be used in an ExtendedMaterial2d struct:

let handle = materials.add(ExtendedMaterial2d {
    base: ColorMaterial::from_color(Color::WHITE),
    extension: MyMaterial {
        value: Vec4::ZERO,
    },
});
commands.spawn((
    Mesh2d,
    MeshMaterial2d(handle),
));

Sprite Render Backend Unification #

The sprite render backend was replaced by a new backend that reuses a lot of the infrastructure made for 3D. This resulted in improved performance in many cases and also makes future maintenance and improvements easier.

Pan Orbit Camera #

We have upstreamed the awesome bevy_editor_cam made by @aevyrie as the new PanOrbitCamera in our bevy_camera_controller crate!

Usage #

Add MeshPickingPlugin and DefaultPanOrbitCameraPlugins :

app.add_plugins((
    MeshPickingPlugin,
    DefaultPanOrbitCameraPlugins,
))

Then add the PanOrbitCamera component on any 3D camera.

commands.spawn((
    Camera3d::default(),
    PanOrbitCamera::default(),
))

Full functionality is shown in the camera/pan_orbit_camera_cad example.

Weak System Ordering with chain_weak #

Ordering large groups of systems with .chain() is convenient, but it can be overly strict. If system set X is chained before system set Y , every system in X must finish before any system in Y can start, even when the systems involved never touch the same data. This often leaves worker threads idle while they wait for a handful of stragglers at the end of a system set, a pattern that shows up frequently in the render world.

The new chain_weak() , before_weak() , and after_weak() functions provide a looser alternative. Like their regular counterparts, they request an ordering between successive elements, however that ordering is only kept between systems whose data accesses actually conflict. Systems that don't conflict are left unordered and may run in any order, including in parallel.

schedule.configure_sets(
    (
        ExtractCommands,
        PrepareMeshes,
        CreateViews,
        Specialize,
        PrepareViews,
        Queue,
        PhaseSort,
        Prepare,
        Render,
        Cleanup,
        PostCleanup,
    )
        .chain_weak(),
);

When two weakly-ordered systems actually conflict on their data access, a normal ordering is kept between them, so the earlier one still runs first. Two systems that conflict only through a non-conflicting system between them in the chain stay ordered as well. Non-conflicting systems, however, are left free to run in any order and overlap for increased parallelism!

Two kinds of system are treated as always conflicting, so their ordering is always kept: an earlier system that produces deferred effects such as Commands (so the later system observes them, with an ApplyDeferred sync point inserted as usual), and exclusive systems (which cannot overlap anything regardless).

Because the scheduler can only see accesses it tracks, dependencies expressed through interior mutability on read-only accesses, global state, or other untracked methods are not respected. Use chain_weak only when your systems don't rely on such hidden ordering, otherwise stick with chain .

Contextual Theming #

Feathers now supports "contextual theming", meaning that the theme variables can change depending on the parent entity. So widgets that are inside of a dialog box or subpanel can have different colors than widgets that are on a regular panel or window background.

The design follows that of popular web toolkits like MUI, Radix, or Chakra. There's a new component, ThemeContext , which lets you select which color scheme the widget's descendants should use; currently the available schemes are Base , Higher , Highest , and Floating , which correspond to the design plans for the Bevy scene editor.

The theme context is used in conjunction with a new kind of design token, named SemanticToken . The lookup process for a color now requires two stages: the ThemeToken is converted into a SemanticToken , and then the combination of SemanticToken and ThemeContext is used to look up a color.

In addition to allowing context-specific color choices, this also makes it easier to design new themes! Instead of having to tediously choose colors for a hundred different theme tokens, the set of semantic tokens is much smaller, and the relationship between token and color is much more intuitive.

Val::Em and Val::Rem #

Bevy UI now supports em and rem as sizing units. em is the current font size (represented by an EmSize component), rem is a global "root" font size (represented by the existing RemSize resource).

EmSize is derived from TextFont when one is on the same entity; propagating it down the hierarchy is left to your app.

This is especially useful if you might want to vary your text size after authoring your UIs, for example as an accessibility feature or just to improve your UI on different devices.

bsn! {
    Node { width: em(10) }
    Text("Hello")
    TextFont { font_size: FontSize::Rem(1.5) }
}

The default font-size is now rem(1) rather than px(20) . This is a no-op if you're not changing RemSize but it means your text will scale by default when you do.

Per-Column Change Ticks #

Components can now opt-in to "column summary change ticks":

#[derive(Component)]
#[component(summary_tick)]
struct MyComponent {
    /* fields here */
}

When enabled, this will store a "column change tick" in addition to a "per-entity change tick", which allows cheaply skipping the whole column of entities when querying for changes, rather than needing to check every entity's component to see if it has changed.

This makes mutations more expensive, as they need to write both the column change tick and the entity change tick, but for entities whose changes are queried often, but change infrequently, this tradeoff can easily be worth it! We've seen change ticks result in a 132x speedup in our GPU mesh extraction code!

FixedNode #

FixedNode is a new marker component for Bevy UI.

A UI node entity with the FixedNode component is positioned relative to the target camera's viewport rather than its parent element. FixedNode s don't inherit their parent's layout, clipping or transform context. They behave like a "root node".

Elliptical Border Radius #

elliptical border radius

Bevy UI can now draw nodes with elliptical border geometry.

The fields of BorderRadius are now CornerRadius s to enable different radius to be set for each axis.

let a = BorderRadius::all(CornerRadius::circular(vh(10.)));
let b = BorderRadius::all(vh(10.)); // a == b
let c = BorderRadius::top_right(CornerRadius::new(px(10.), px(20.)));

Schedule Randomization #

Before a schedule runs (and therefore, your systems), it first computes the system run order based on their ordering constraints ( .before() , .after() , .chain() ) and system sets. However, in addition to this, the schedule must also resolve conflicts - if system A and system B both mutate component C, and there's no ordering between A and B, the schedule needs to pick one to run first. So far, the rule has been that this is non-deterministic.

In practice though, schedules pick the order of these conflicting systems "deterministically, but arbitrarily". Put simply, your systems might accidentally be in the right order, but making an unrelated change to the graph might suddenly put it in the wrong order. This problem can be very difficult to detect.

Introducing schedule randomization! This will randomize the order of systems while maintaining any explicit system ordering constraints. Once the debug feature is enabled, ScheduleBuildSettings will include a shuffle_seed field, that users can set to randomize their schedules. For example:

App::new()
    .add_plugins(DefaultPlugins)
    .edit_schedule(Update, |schedule| {
        // Make sure to add the `rand` crate with `cargo add rand`.
        let rng_seed: u64 = rand::random();
        // Consider logging out the seed, so you can reproduce the error if you find a bug!
        info!("Randomizing Update schedule with seed={rng_seed}");
        schedule.set_build_settings(ScheduleBuildSettings {
            shuffle_seed: Some(rng_seed),
            ..Default::default()
        });
    })
    .run();

This can be used for "property testing", to verify that your systems satisfy some property despite different orderings of systems.

There are some caveats however. Currently, when using auto_insert_apply_deferred , systems with commands are always placed before the earliest sync point they can. This means that although your systems may not have the correct ordering, they might "accidentally" have the correct ordering because of which sync point it uses. We hope to fix this in the future.

In addition, the multi-threaded executor executes systems greedily: it looks for the first unexecuted system whose dependencies are finished and that has no other conflicting systems running. The result is that even if the shuffle results in the order (A, B, C) , C could run before B if A and B conflict. This can be desirable to test , but consider using the single-threaded executor to avoid this case.

This tool is complementary to the existing system order ambiguity detection , which analyzes the graph of systems statically. Ambiguity detection cheaply generates a (sometimes large!) list of potential problems, not all of which may correspond to meaningful bugs in your project. Real test failures in some permitted orderings give you more actionable information about which of these problems are real, and the correct ordering. Furthermore, ambiguity detection can have false negatives, typically when ambiguities are incorrectly ignored, or in the presence of interior mutability mechanisms that do not require write-access (from the scheduler's perspective).

Catching Panics #

For long-running programs, crashing can be unacceptable. If, for example, there is a bug in one of your image editor's tools, it's better for that tool to fail or to produce wrong results than to lose all your unsaved work.

Bevy's systems, commands and observers are able to return errors. You can either set an error handler case-by-case, or let the FallbackErrorHandler deal with it. But this used to only work for explicitly returned errors: Panics used to bring down the entire app.

In Bevy 0.20, these panics now get turned into errors and passed to the fallback error handler. By default this re-panics, but now you can choose whether to log an error and continue, or whatever else you want.

Faster Bulk Despawning #

Sometimes, you just want to despawn a ton of things at once. This is reasonably common: Bevy's own DespawnOnEnter and DespawnOnExit allow you to quickly clean up entities as you swap the state of your game, tidying up menus or resetting the game after a loss. While this isn't that much work in total, it's concentrated all at once: if that process is slow, you could see hitches, or longer loading screens.

If you use the new despawn_all<F: QueryFilter> command (or one of its siblings) to batch this work, the ECS can speed things up through reduced overhead: sharing steps across related operations.

Entities despawn despawn_all Speedup
100 3.68 µs 2.84 µs 1.30×
1,000 25.2 µs 15.3 µs 1.65×
10,000 254.9 µs 149.7 µs 1.70×
100,000 3.17 ms 2.07 ms 1.53×

Median of five benchmark runs, AMD Ryzen 9 9950X3D.

If you're using DespawnOnEnter or DespawnOnExit you'll see this performance gain for free; no changes to your code needed.

Better Texture Compression #

Textures are a huge part of the memory footprint for most 3D games. Smaller textures means smaller downloads, faster loads and bigger scenes. Bevy 0.20 tackles this on two fronts, with an improved compression approach and automatic mipmap generation during asset processing.

Bevy's CompressedImageSaver asset processor has been significantly upgraded with a new compression backend powered by the ctt library. The new compressed_image_saver feature compresses textures into BCn formats (for desktop GPUs) or ASTC formats (for mobile GPUs), producing higher-quality output than the previous Basis Universal approach: more bang for the byte. The compressor automatically selects the best output format based on the input texture's channel count and type — for example, single-channel textures get BC4, HDR textures get BC6H, and standard RGBA textures get BC7.

Try out the new compressed_image_saver example to see it in action.

Automatic Mipmap Generation #

No more manually generating mipmaps (scaled down versions of each texture for viewing at a distance)! The new backend automatically produces a full mip chain during compression. This means less aliasing when textures are viewed at a distance and better GPU cache utilization — all for free, just by running your textures through the asset processor.

Image compression on other platforms #

To target mobile GPUs, set the BEVY_COMPRESSED_IMAGE_SAVER_ASTC environment variable with your desired block size (e.g. 4x4 , 6x6 , 8x8 ). Larger blocks give smaller files at the cost of quality. All 14 ASTC block sizes are supported.

The previous Basis Universal compression behavior has been moved to the compressed_image_saver_universal feature. This remains the best choice for cross-platform distribution (including WebGPU), since UASTC can be transcoded at load time to whatever format the target GPU supports.

Bevy Error Context Messages #

Similar to the popular anyhow crate, BevyError now provides an ergonomic way to attach extra context to an error using the context method, which also allows creating a Result<T, BevyError> from an Option<T> .

This makes it easier to trace back errors with human-readable messages without looking at verbose backtraces.

fn fallible() -> Result<(), BevyError> {
    // This produces the error message `Failed to parse number: invalid digit found in string`
    let parsed: usize = "I am not a number"
        .parse()
        .context("Failed to parse number")?;

    Ok(())
}

with_context may be used to produce the context message with a closure instead.

If multiple context s are stacked on top of each other, you see all of them when an error is logged. If we set up our error contexts like so:

fn parse_package() -> Result<Package, BevyError> {
    let path = "package.json";
    let package = std::fs::read_to_string(path)
        .with_context(|| format!("Failed to read {path}"))?;

    serde_json::from_str(&package)?
}

fn load_package() -> Result<(), BevyError> {
    let package = parse_package().context("Failed to parse package.json")?;
    // Use `package`...
}

The following error will be produced if package.json is missing:

Failed to parse package.json

Caused by:
    Failed to read package.json
    No such file or directory (os error 2)

InlineBox and InlineImage #

inline image

Flowing text around elements allows for the creation of more complex UI elements. The newly introduced InlineBox component allows space to be reserved within text layouts for custom content. To intersperse images with text, spawn an entity with the InlineImage component.

What's Next? #

No matter how many features we add, the flock will always demand more . Game engines, unfortunately, are never done .

Let us peer deep into the mists of time, and see what other features Bevy has in flight! Like usual, many of these features are "essential components of a Bevy scene editor", even if they are not "the editor itself". That allows us to ship useful bits and pieces incrementally, and polish them while we put it all together.

  • .bsn asset format: With the syntax stabilized, it's time to bring BSN to the file system, creating a human-readable, hot-reloadable file format designed for tool-driven (read: editor) authoring.
  • Assets as Entities: While our asset handling has been steadily improving, it is still a separate data model. We're working on representing assets as entities, giving them access to the full expressive power of the ECS (including event observers and relationships), providing direct support for defining assets in BSN, and easing the learning curve (as assets are accessed like any other ECS data).
  • Remote inspector: Browse, modify and mutate entities from external tools, on your machine or on a different device!
  • More powerful required components: Wish you could pull in assets, vary values based on other entities / components, or reference resources in required components? Us too: we're hoping to integrate required components with the Template trait that powers BSN, bells and whistles included.
  • Mutually exclusive components: A long requested feature: statically ensure that your Player is never a Camera , creating invariants that can be counted on.
  • HDR (High Dynamic Range) display support: Bevy: now in even more colors!

Support Bevy #

Bevy will always be free and open-source, but it isn't free to make! Because Bevy is free, we rely on the generosity of the Bevy community to fund our efforts. If you are a happy user of Bevy or you believe in our mission, please consider donating to the Bevy Foundation ... every bit helps!

Donate heart icon

Contributors #

A huge thanks to the 226 contributors that made this release (and associated docs) possible! In random order:

  • @Trashtalk217
  • @GroveDG
  • @Mysvac
  • @gagnus
  • @holg
  • @goodartistscopy
  • @stevehello166
  • @cookie1170
  • @l-monninger
  • @codaishin
  • @CodingDaniel1
  • @kfc35
  • @alphadragon2
  • @CraftSpider
  • @laundmo
  • @redstrate
  • @chris-hain
  • drewbluewasabi
  • @JasmineLowen
  • @swoobie
  • @ickshonpe
  • @cBournhonesque
  • @Bluefinger
  • @ItsDoot
  • acabrera
  • @pcwalton
  • @Sigma-dev
  • @hymm
  • @blamelessgames
  • @JeroenHoogers
  • @mate-h
  • @akshitj11
  • @Igor-dvr
  • @jbuehler23
  • @venhelhardt
  • @VictorElHajj
  • @greeble-dev
  • @zaidzdz
  • @nyfair
  • @urben1680
  • @komadori
  • @JMS55
  • Dahmen issam
  • @viridia
  • @Satellile
  • @GageHowe
  • @hukasu
  • @mgi388
  • @LeandroVandari
  • @Cyannide
  • @nyaalexx
  • @bytemuck
  • @MrGVSV
  • @tmstorey
  • @agluszak
  • Duncan Fairbanks
  • @0xEgao
  • @Poico
  • @bryancostanich
  • @plasmagrenade
  • @Miguel0312
  • @yunusey
  • @RCoder01
  • @bmisiak
  • @alice-i-cecile
  • @PizzaLvr49
  • @bonsairobo
  • @KategoryBee
  • @Shatur
  • @yh1970
  • @morr
  • @ElliottjPierce
  • @ParvePalial
  • @jannik4
  • @piedoom
  • @abrni
  • @rysb-dev
  • @HeartofPhos
  • @andyrift
  • @lkolbly
  • @francisdb
  • @MarcGuiselin
  • @tylerrussin
  • @IRSMsoso
  • @Tatsuya0330
  • @mockersf
  • @kpreid
  • @Lampan-git
  • @JamJomJim
  • @nfagerlund
  • @unclepomedev
  • Patrick Walton
  • @Rynibami
  • @dloukadakis
  • @PJB3005
  • @MalekiRe
  • @zen-zap
  • @andriyDev
  • @CrazyRoka
  • @akriegman
  • @Kyriota
  • @EmbersArc
  • @SOF3
  • @XSWare
  • @perry-blueberry
  • @DoubleThoughtTheProgrammer
  • @stuartparmenter
  • @bugsweeper
  • @UkoeHB
  • @cachebag
  • @tychedelia
  • @musjj
  • @Kees-van-Beilen
  • @franpereira
  • @justDeeevin
  • @etorresh
  • @NiklasEi
  • @voidreamer
  • @shunkie
  • @DataTriny
  • @eswartz
  • Christopher Hain
  • @dylansechet
  • @atlv24
  • @SolidStateDj
  • @alisterd51
  • @zincdev0
  • @kristoff3r
  • @raldone01
  • @kiana1kaslana
  • @mbremner
  • @robojeb
  • @Person-93
  • @MonaMayrhofer
  • @ncbray
  • @SpecificProtagonist
  • @jieyouxu
  • @rparrett
  • @alinv0
  • @tevans-3
  • @moosama76
  • @WeiTheShinobi
  • @CupOfTeaJay
  • @Cannedfood
  • @stinkytoe
  • @beicause
  • @drewbluewasabi
  • @MickHarrigan
  • @Aceeri
  • @SkiFire13
  • @Pnoenix
  • @infinitalo
  • @MrVintage710
  • @janis-bhm
  • @PeteMichaud
  • @malfuu
  • @eugineerd
  • @liamaharon
  • @Gingeh
  • @blaind
  • @qoh
  • @cart
  • @MoRusty
  • @Nuxssss
  • @miguelraz
  • @loreball
  • @chronicl
  • @amtep
  • @Victoronz
  • @issam3105
  • @SarthakSingh31
  • @davidgraymi
  • Sigma
  • @stevesloan
  • @da-x
  • @DGriffin91
  • @coreh
  • @rectalogic
  • @larsraph
  • @lomirus
  • @sokunrotanak
  • @ariofrio
  • @mnmaita
  • @Farori
  • @Schmarni-Dev
  • @hxYuki
  • @ekwoka
  • @fjkorf
  • @JonasJebing
  • @Zeophlite
  • @IceSentry
  • @CyberspaceDreamn
  • @VitalyAnkh
  • @nuts-rice
  • @yilin0518
  • @JaySpruce
  • @jxcv0
  • @Opprop35
  • @samoylovfp
  • @MatrixFrog
  • @ByteBaker
  • @doonv
  • @hoijui
  • @kaio-matos
  • @robtfm
  • @davewa
  • @ChristopherBiscardi
  • @Supremesv715
  • @ethanuppal
  • @mansiverma897993
  • @BenjaminBrienen
  • @codecnotsupported
  • @Jengamon
  • @B0ryskart0n
  • @DavidCrossman
  • @joaoconceicao12
  • @chescock
  • @taearls
  • @tylercritchlow
  • @razlani
  • @Elabajaba
  • @Henktorius
  • @taishi-sama
  • @sk0g
  • @rewin123
  • @Visse

For those interested in a complete changelog, you can see the entire log (and linked pull requests) via the relevant commit history .

Let’s Check In on Trump’s Blog

Daring Fireball
truthsocial.com
2026-10-08 18:52:35
An actual post from the sitting president of the United States: The White House considers anyone that uses the term, “Artificial Intelligence,” as opposed to the highly accepted new and more accurate term, “Super Intelligence,” THE ENEMY! President DONALD J. TRUMP  ★  ...

Spinal: A near-instant, predictive surface for any codebase

Hacker News
spinal.sh
2026-10-08 18:48:30
Comments...
Original Article

Code matters. And it's now written faster than we can understand it. The tools we use haven't kept up, and we're lost in the chaos of worktrees , diffs and branches .

Spinal is a new way to understand a codebase, how it's evolved, and the live changes streaming into it. It's ultra-low-latency , anticipates what you'll reach for next , and bubbles up the signals and insights that deserve your attention.

Benchmarked on the Linux kernel's 1.48M commits, 96K files, our engine returns the first search results in under 20 ms.

Built by engineers who love code, for engineers who don't want to be outpaced by their agents.

Firmus pulls biggest ASX float since Telstra amid investor doubt about datacentre company

Guardian
www.theguardian.com
2026-10-08 18:33:24
The $11-a-share offer would have been the biggest debut on the stock market since the telecommunication giant in 1997Get our breaking news email, free app or daily news podcastFirmus Technologies has scrapped what was set to be Australia’s biggest company listing in decades after investor demand for...
Original Article

Firmus Technologies has scrapped what was set to be Australia’s biggest company listing in decades after investor demand for its much-hyped AI datacentre business failed to materialise.

A Firmus spokesperson said the board decided that proceeding with the offer was no longer in the best interests of the company and its shareholders.

“Firmus will now pursue capital from the private markets and consider alternative public and private market options,” the spokesperson said on Friday morning.

“We will provide additional information to shareholders as those options progress.”

Firmus, with an anticipated $44bn valuation, was expected to be the biggest ASX listing since Telstra in 1997.

But it faced mounting scepticism over its huge valuation, and forecast earnings, for a company in its startup phase with just two, small operational sites.

Backed by chip maker Nvidia and Wall Street firms Blackstone, Jane Street and Coatue, Firmus’s backers believed they could raise billions of dollars by selling shares in a public float with the help of five brokers.

The lack of demand means Firmus will need to raise money from private investors to fund its plans to build liquid-cooled “AI factories” in Australia and across Asia.

Sign up for the Breaking News Australia email

Frantic discussions

The polished Firmus pitch started to unravel midweek after it became clear the company’s bankers had vastly overestimated demand in their bid to raise $7bn from investors ahead of listing on the ASX on 23 October.

skip past newsletter promotion

This prompted discussions about a heavy reduction in the company’s proposed $11-a-share initial public offering, according to one investment manager briefed on the matter.

The company ultimately decided to withdraw its application to list on the ASX altogether.

Guardian Australia previously reported growing concern that early Firmus investors were going to use retail investors buying into the float as their “exit strategy” , leaving small investors exposed if the excitement dissipated.

The datacentre company’s troubles have already rattled other parts of the market, with shares in Firmus investor Maas Group plunging more than 20% on Thursday.

The anticipated financial worth of the founders – Oliver Curtis, who has spent time in prison for insider trading , his cousin Tim Rosenfield, and Curtis’s former brother-in-law Jonathan Levee – will also be greatly reduced.

Trump hosts awards party for tech billionaires, almost as if he doesn’t care about ordinary Americans

Guardian
www.theguardian.com
2026-10-08 18:28:48
Amid a cost-of-living crisis, with US midterms a month away, the president held a ceremony to celebrate our tech overlords – again He stands accused of being out of touch, enriching himself and his family, building a lavish White House ballroom and, with elections looming, neglecting the hardships o...
Original Article

H e stands accused of being out of touch , enriching himself and his family, building a lavish White House ballroom and, with elections looming, neglecting the hardships of the voters who brought him to power.

Time for Donald Trump to show he still has the common touch? Nope.

On Thursday, the US president went to a building he named after himself, dished out awards to the world’s richest person – his old frenemy Elon Musk – and other tech billionaires and even received an award that belonged to his late uncle.

Given Trump’s gold fetish, the event was naturally entitled the Golden Age of American Innovation summit, which will be news to the many agencies and academies suffering billions of dollars in cuts to scientific research on his watch.

“We have an extremely high-IQ audience for a change,” the president told about 300 invited guests at the Donald J Trump Institute of Peace in Washington, a compliment he never pays to the crowds who line up for hours to attend his campaign rallies.

Standing on a podium with a white backdrop and series of US flags, the president gave a perfunctory speech, sticking unusually close to his teleprompter. He made references to artificial super intelligence but steered clear of the datacentres these tech overlords are erecting all over the country and, in the process, achieving the unique feat of getting Democrats and Republicans to agree on how much they hate them.

Michael Kratsios , director of the White House office of science and technology policy, then treated Trump to a video about his uncle, Dr John Trump, an electrical engineer and professor at the Massachusetts Institute of Technology who received the National Medal of Science in 1983.

The short film’s claims that John Trump’s research produced X-ray generators “used for the first radiation treatments for cancer” and that “his radars jammed German defences” on D-day in 1944 owe something to his nephew’s fondness for “truthful hyperbole”.

Six years ago, the president, who believes in “good genes” and “racehorse theory” , suggested that his uncle’s legacy would help him fight the Covid-19 pandemic: “He was a great super genius. Dr John Trump. I like this stuff. I really get it. People are surprised that I understand it. Every one of these doctors said: ‘How do you know so much about this?’ Maybe I have a natural ability. Maybe I should have done that instead of running for president.”

Kratsios had a surprise for the boss. He presented Trump with his uncle’s National Medal of Science in a handsome frame as the audience clapped. He looked happy enough, though it was clear this won’t displace the gaudy Fifa peace prize from his trophy cabinet.

Among the six tech leaders who came up on stage to receive an award for scientific and technological achievement, five were immigrants.

The “America first” president gave the National Medal of Science to SpaceX chief executive Musk (born in South Africa); Google co-founder Sergey Brin (Russia); Jensen Huang (Taiwan), whose AI chip maker Nvidia is the world’s most valuable company; and Lisa Su (Taiwan), head of the semiconductor company Advanced Micro Devices.

Trump also handed the National Medal of Technology and Innovation to Microsoft supremo Satya Nadella (India) and Dell Technologies chief executive Michael Dell (Texas). Hours earlier, JD Vance had announced Microsoft’s suspension from a programme allowing companies to sponsor foreign workers for green cards.

skip past newsletter promotion

The trillionaire Musk was wearing a dark suit, white shirt and white tie. Trump gave him a pat on the back, handed him the medal and gave him another pat, then showed him a certificate and patted him once more. In earlier remarks , the president called Musk an “industrial titan”, “brilliant engineer”, “national treasure” and “modern-day Thomas Edison”. He observed: “It all works out well for Elon, right?”

These guys’ relationship is more complicated than Rhett Butler and Scarlett O’Hara . Musk helped buy the 2024 election for Trump and found Doge a useful vehicle to gut the federal agencies investigating his companies. The president considered Musk’s Grok chatbot ingenious after it accurately predicted that ordinary Venezuelans would celebrate the removal of leader Nicolás Maduro, according to Time magazine .

Then came their explosive falling out, with Musk tweeting on his own X platform: “Time to drop the really big bomb: [Trump] is in the Epstein files. That is the real reason they have not been made public.” It turned out both men were in the files.

Vance reportedly brokered a truce between the two titanic egos. The bromance has never been fully rekindled, but Thursday was proof that power and wealth can’t live without each other – especially with elections less than a month away and Trump’s approval rating in the doldrums.

When the ceremony was over, however, it was AI king Huang who remained on stage alongside Trump as the familiar strains of the Village People’s YMCA blasted from loudspeakers (“Young man, when you’re short on your dough,” did not resonate with this crowd). The pair were pointing and directing people, presumably for a photo op, and looking pleased with themselves. It was a fitting closing image of two men who rule the world and may yet find a artificial super intelligent way to destroy it.

Rolling the Root Key (Update)

Lobsters
ispcol.potaroo.net
2026-10-08 17:45:09
Comments...
Original Article

A Column on Things Internet

Other Formats: PDF TXT



Rolling the Root Key (Update)
October 2026

This is an update to an article I posted in May of this year. As I write this, it's now the 8th October, and the Root Key of the DNS is scheduled to roll on the 11th October. The major addition to this update is a list of vulnerable ISP networks which are showing a KSK Sentinel signal that they have not added to their DNS resolver's trusted key set at the end of this article.

Rolling the root key is special , in that every other key in DNSSEC has the notion of a parent key which is used to validate the authenticity of a key. In the case of a Zone-Signing Key (ZSK) it’s the zone's Key-Signing Key (KSK) if the zone uses a split of ZSK and KSK. In the case of a KSK it’s the key used to sign the entries in the parent domain. For these keys which are subordinate to another key, then all that’s required is for the parent key to sign across the new key value (or a hash of the public key component to be precise, published in the parent zone as a signed DS resource record.

The Root Key is different, as it has no parent. The way a new key is authenticated by a DNS resolver is by having the old KSK sign across the new KSK. ("old" signs "new"). Then an extended period is required to allow DNSSEC-validating clients sufficient time to pick up and trust the incoming key. The specification described in RFC 5011 "Trust Anchor Update" contains some guidance for this process. It states: "The add hold-down time is 30 days or the expiration time of the original TTL of the first trust point DNSKEY RRSet that contained the new key, whichever is greater. This ensures that at least two validated DNSKEY RRSets that contain the new key MUST be seen by the resolver prior to the key's acceptance." So the new KSK is added to the root zone's DNSKEY RRSet, enabling validating resolvers to learn of this new key automatically when they retrieve this resource record. They are supposed to add the key value into their local cache of trusted keys when the new key has been continuously observed for the 30-day hold-down time interval. As long as the key roll observes these minimum hold period for each stage of the key roll, then the entire process should be automatic.

The 2026 key roll is not a change of algorithm, but simply a change of the private/public key pair. The incoming KSK (termed "KSK-2024" denoting the year when the key pair was initially generated) was published on the IANA web site in July 2024 and added to the root zone's DNSKEY Resource Record in January 2025. The IANA plans to roll the KSK on the 11th of October 2026, when it will be used for generating the root zone's DNSKEY Resource Record digital signature.

How are we going with this KSK roll? Have all DNSSEC-validating recursive resolvers learned of KSK-2024 by now and incorporated this key into their trust anchor set? How can we measure this behaviour?

Trust Signal - RFC 8145 Measurement

There are two techniques we can use to peer into the Internet's DNS infrastructure and find out which DNS resolvers have added KSK-2024 to their local trust anchor set.

The first is described in RFC 8145 (https://www.rfc-editor.org/rfc/rfc8145.html) "Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC)" . In this technique the resolver embeds the key tags of its trusted keys in queries that are sent towards the authoritative servers for the root zone. One way is to place the tag values of all trusted keys into a query name (i.e. a query name of " _ta-4f66-9728 " indicates that the resolver trusts keys with tag values of 20326 and 38696). An alternate method is to embed the trust key tag values into an edns-key-tag option in queries.

This information is visible in the log of queries managed by the operators of root servers. An analysis of this RFC 8145 signal received by a root server operator (Verisign) is shown in Figure 1.


Figure 1: A sampling of resolvers and which KSK(s) they have configured in their trust anchor, as of July 2026. (From https://blog.verisign.com/security/2024-2026-root-zone-ksk-rollover-updates-observations/ )

What the data in Figure 1 does not show is the population of users who are using these recursive resolvers. Obviously, some DNSSEC-validating recursive resolvers are used heavily, sometimes by millions of users, while others, including the one on my local laptop, is used by just me! When these figures show that some 90% of reporting resolvers have added KSK-2024 to their trust anchor set, that does not readily map to an estimate of the end user population that is served by these recursive resolvers, nor the population of end users who may be affected by an immediate roll of the KSK.

Key Sentinel - RFC 8509 Measurement

RFC 8509 "A Root Key Trust Anchor Sentinel for DNSSEC" proposes a different approach where the signal of a recursive resolver's trusted keys is folded back and sent to the querier rather than onward towards a root zone server. The approach involves a left-most label of a DNS query name and requires the DNS resolver to recognise this label and generate a response based on the resolver's set of trusted keys, as shown in Table 1. The resolver returns the SERVFAIL response code if the assertion related to the trust in the provided key tag does not match the local state.

Label Key is Trusted Key is not Trusted
root-key-sentinel-is-ta-<key-tag> return original answer return SERVFAIL
root-key-sentinel-not-ta-<key-tag> return SERVFAIL return original answer

Table 1 – RFC 8509 Measurement responses

For example, if the local resolver trusts the KSK with key tag value 20326 (which is the current KSK key tag as of the 8th October 2026), then a query for the name " root-key-sentinel-not-ta-20326.u564ee17a0.ap.dotnxdomain.net " will return SERVFAIL.

You can run these tests on your own DNS infrastructure with a web page operated by the DNS team at Cloudflare: https://dnstest.dev/ksk-2024/ .

We use APNIC's ad-based measurement system to pose these queries to a collection of end users every day. What we are after here is not to identify individual validating recursive resolvers, but to quantify the population of end users who are located exclusively behind DNSSEC-validating resolvers where the resolver has so far failed to trust KSK-2024.

The test we are using has three queries, as shown in Table 2. A resolver that is configured to perform DNSSEC validation and supports this Root Key Trust Anchor Sentinel mechanism will provide DNS responses, also shown in Table 2.

DNS label Response
https://root-key-sentinel-is-ta-20326... NOERROR
https://root-key-sentinel-not-ta-20326... SERVFAIL
ttps://root-key-sentinel-is-ta-38696...

Table 2 – RFC 8509 Measurement responses for KSK-2024

The first two tests are intended to determine if the resolver supports this Root Key Trust Anchor Sentinel mechanism by testing if it trusts KSK-2017 (key-tag 20326). If it does not, it will return a validated response in both cases. If it does report responses as per Table 2 then we can classify the sample point as a "reporting user". The third query is intended to determine if the resolver has loaded KSK-2024 (key-tag 38696) into its local trust anchor set.

Results

A small-scale run using the RIPE Atlas probes on the 5th October using probes located in 2,900 distinct ASs found 1,230 probes with a resolver behaviour consistent with a root key sentinel that has loaded the new KSK, and 47 probes with a resolver behaviour that has not loaded the new KSK value into its local trusted key collection, a failure rate of 3.7%.

We performed a larger set of measurements using ads, conducted between May and July in 2026, and resumed in early October 2026, with an average test count of some 16M tests per day.

The daily results of this measurement of the adoption of KSK-2024 as a Trust anchor are shown in Figure 2.


Figure 2: Daily Measurement of Adoption of KSK-2024 as a Trust Anchor using RFC 8509 Sentinel during 2026

This larger test indicates an adoption rate of some 70% of tests appear to support the RFC8509 functionality, and are reporting that KSK-2024 (the incoming KSK) has been loaded as a trusted key. The absolute scale of this measurement is shown in Figure 3.


Figure 3: Daily Measurement of RFC 8509 Sentinel support during 2026

While the measurement platform undertakes some 16M tests per day, only some 6M tests per day show that the tested end system lies behind DNSSEC-validating recursive resolvers, and some 1.8M tests per day are providing a clear signal that they support the RFC 8509 Key Sentinel signal.

These average numbers are less than helpful, as they hide significant variation, and also mask where issues of lack of acceptance of the new key may be found. What would be more useful is to list those networks where the Key Sentinel tests indicate that the incoming key has not been loaded into the local trusted key set. A table of the 50 networks with the lowest rate of acceptance of KSK-2024 over the past week is shown in Table 4. I've filtered this list so that it only shows those networks where we observed 1,000 or more tests that showed that their DNS resolvers supported the Key Sentinel mechanism.

If your ISP is listed here, then you may want to follow-up using Cloudflare's test script , and ask your ISP to review their DNS settings, as the KSK roll may present the ISP resolver with some problems after the KSK is rolled.

AS CC KSK-2024 Tests Validating RFC8509 KSK-2024 NOT KSK-2024 Name
262202 CR 49.40% 9,441 9,343 2,201 469 481 Telefonica de Costa Rica, Costa Rica
328169 SZ 48.90% 4,694 4,687 1,199 276 288 Swazi Mobile, Swaziland
328341 ZA 48.90% 2,551 2,522 1,352 284 297 Capricom Networks , South Africa
17470 LK 48.70% 15,011 11,749 2,952 717 756 Hutchison Telecoms, Sri Lanka
9335 TH 48.40% 4,905 4,877 1,355 299 319 National Teleco, Thailand
45925 BD 48.20% 7,886 7,811 2,046 465 499 Teletalk, Bangladesh
29544 MR 47.90% 41,149 40,758 8,032 1,842 2,003 Mauritanian Telecommunication, Mauritania
30990 DJ 47.40% 9,472 9,393 2,701 641 711 Dibjouti Telecom, Djibouti
329129 LY 46.80% 7,879 7,843 1,790 384 436 Libya Tech, Lybia
136336 IN 46.00% 8,113 6,972 1,818 353 414 Thamizhaga, India
9658 PH 45.60% 6,920 6,293 2,062 555 661 Eastern Telecoms, Philippines
135300 MM 45.40% 5,813 4,600 1,150 228 274 Myanmar Broadband, Myanmar
205368 AM 38.60% 4,227 4,209 2,349 536 852 Fnet, Armenia
24812 UA 32.00% 10,791 3,437 1,322 205 436 HomeNet, Ukraine
39065 UA 26.10% 1,701 1,666 1,238 193 546 Southern Telecommunication s, Ukraine
15108 US 16.40% 17,966 17,209 15,036 2,014 10,282 Allo Comms, United States
132199 PH 13.10% 73,176 71,705 35,310 2,915 19,310 Globe Telecom, Philippines
33915 NL 12.70% 170,615 19,642 13,292 1,328 9,105 Vodafone Libertel, Netherlands
5056 US 10.70% 7,519 6,933 4,883 427 3,556 Aureon Network Services, United States
12969 IS 10.00% 4,567 4,520 3,954 331 2,979 Vodafone, Iceland
327931 DZ 9.00% 160,973 17,701 9,705 357 3,627 Optimum Telecom, Algeria
58895 PK 8.20% 13,757 5,584 3,034 128 1,432 Ebone, Pakistan
16019 CZ 8.20% 45,089 43,692 32,266 1,885 21,166 Vodafone-CZ, Czechia
38195 AU 6.20% 24,038 19,612 16,004 787 11,931 Superloop, Australia
53435 US 5.20% 2,320 2,089 1,050 36 661 Jackson Energy, United States
203214 IQ 4.50% 165,409 153,024 115,657 3,636 76,631 HulumTele , Iraq
205889 IQ 4.50% 4,836 1,750 1,102 30 636 Giga Nineveh, Iraq
5690 CA 4.40% 1,983 1,936 1,659 61 1,323 Vianet, Canada
56207 PH 4.20% 12,110 11,720 6,860 149 3,399 ComClark, Philippines
4775 PH 4.00% 272,137 268,811 174,084 4,439 105,397 Globe Telecoms, Philippines
15547 CH 4.00% 3,011 2,967 2,508 78 1,865 Netplus, Switzerland
47794 SA 3.90% 6,665 6,462 4,693 114 2,814 Etihad GO, Saudi Arabia
17639 PH 3.70% 259,256 255,140 165,934 3,830 98,347 Converge, Philippines
31898 US 3.10% 2,104 2,073 1,619 39 1,230 Oracle Corp, United States
203409 IQ 2.80% 6,745 4,192 2,676 44 1,542 Nawafeth Al-hadhara, Iraq
55836 IN 2.50% 6,075,237 5,084,127 3,114,217 35,837 1,400,178 Reliance Jio, India
9534 MY 1.60% 163,667 161,851 116,154 1,223 73,955 MAXIS Binariang Berhad, Malaysia
6661 LU 1.50% 10,391 10,197 9,132 113 7,493 LU - POST, Luxembourg
37119 AO 1.40% 63,226 62,103 41,113 308 21,624 Unitel, Angola
24432 BD 1.20% 127,742 126,100 79,233 437 35,570 TM International, Bangladesh
199739 IQ 1.20% 217,762 217,286 163,587 1,293 110,580 Earthlink Telecommunications, Iraq
14988 BW 1.00% 8,730 8,616 7,533 65 6,533 Botswana Telecommunications, Botswana
48695 SA 0.90% 1,742 1,741 1,395 10 1,144 Etihad GO, Saudi Arabia
212661 OM 0.90% 12,634 12,574 9,765 62 7,163 Vodafone-Oman, Oman
37054 MG 0.70% 19,313 19,117 13,628 62 8,476 Telecom Malagasy, Madagascar
43766 SA 0.70% 158,163 157,292 131,327 744 108,836 Mobile Telecommunication, Saudi Arabia
29244 BG 0.70% 33,217 33,072 23,809 102 14,943 Telenor BG-AS, Bulgaria
56665 LU 0.60% 3,790 3,727 3,273 15 2,625 Proximus, Luxembourg
57293 AZ 0.50% 19,186 19,133 14,531 48 10,412 Telekom MMC, Azerbaijan
327697 RE 0.40% 1,883 1,876 1,450 4 1,045 TELCO OI , Reunion
Table 3: List of top 50 ISPs with low KSK-20214 trust signals






















Disclaimer

The above views do not necessarily represent the views of the Asia Pacific Network Information Centre.

About the Author

Geoff Huston AM, M.Sc., is the Chief Scientist at APNIC, the Regional Internet Registry serving the Asia Pacific region.

www.potaroo.net

FBI disrupts Chinese hacking tools used to breach critical infrastructure

Bleeping Computer
www.bleepingcomputer.com
2026-10-08 17:42:51
The FBI has seized seven domains used by Chinese state-sponsored hackers known as Flax Typhoon to operate two hacking tools, MicroScan and FishHub, used in attacks that breached critical infrastructure and other organizations worldwide. [...]...
Original Article

Chinese hacker

The FBI has seized seven domains used by Chinese state-sponsored hackers known as Flax Typhoon to operate two hacking tools, MicroScan and FishHub, used in attacks that breached critical infrastructure and other organizations worldwide.

The seizures targeted infrastructure supporting the two hacking platforms allegedly operated by China-based Integrity Technology Group (Integrity Tech), which U.S. authorities say has contracts with the Chinese government.

According to the U.S. Department of Justice , the tools were used to scan for vulnerabilities and breach critical infrastructure networks in the United States and other countries.

"Integrity Technology Group provided China-linked threat actors with capabilities used to conduct widespread vulnerability scanning and, in some cases, intrusions targeting U.S. and foreign critical infrastructure," said Brett Leatherman, assistant director of the FBI's Cyber Division.

Leatherman said the Chinese government relies on contractors and other companies to expand the reach of their cyber operations, and that disrupting these organizations makes it harder for China-linked hackers to target American networks.

MicroScan is a vulnerability-scanning platform developed by Integrity Tech to identify security weaknesses in targeted networks.

According to an FBI seizure affidavit , the platform was used along with a botnet of internet-connected devices infected with Mirai malware to scan potential targets.

These targets include a South Carolina power company, airports in Japan and Poland, Taiwanese natural gas and electricity companies, and universities.

The affidavit also confirms that the scanning activity led to successful breaches, including at two Taiwanese universities whose networks were scanned using MicroScan in August 2022 and March 2023 and subsequently breached.

While the FBI confirmed that the hacking tools were used in intrusions involving critical infrastructure, it did not disclose whether the specifically named power companies, airports, and energy providers were successfully breached.

The FBI seized the c0cc.cc domain used by Integrity Tech to access the MicroScan platform, which law enforcement confirmed was online in September 2026.

The second platform, FishHub, was used to conduct spear-phishing attacks and deliver additional malware to networks already compromised.

The malware gave attackers unauthorized remote access to victims' networks and allowed them to search for specific files and exfiltrate data to servers controlled by Integrity Tech.

According to the FBI seizure affidavit, investigators found data and files belonging to more than 20 organizations on a server linked to the FishHub data-theft tool, including six universities in Taiwan.

Law enforcement seized five domains used to deliver the malware: 98aicai.com , 98aicode.com , outlook3650.com , youtubecard.com , and linkedinns.net .

A seventh seized domain, 98aiblog.com , was tied to the SoftEther VPN software installed on compromised systems to maintain remote access to victim networks.

The seized domains now display FBI seizure notices identifying the Flax Typhoon hacking group and Integrity Technology Group.

Flax Typhoon infrastructure seized by the DOJ
Flax Typhoon infrastructure seized by the DOJ
Source: BleepingComputer

In coordination with the domain seizures, the FBI, CISA, NSA, and international partners issued a joint cybersecurity advisory explaining how Chinese government-linked hackers used Integrity Tech's tools and infrastructure to compromise organizations and steal sensitive information.

The advisory says the attackers targeted U.S. government agencies, critical manufacturing, healthcare, information technology, law enforcement, educational institutions, and religious organizations, as well as organizations in Southeast Asia, Africa, and North America.

The activity overlaps with operations tracked as Flax Typhoon , Ethereal Panda, and Red Juliett, although the agencies say that not all activity may necessarily be linked to Integrity Tech.

According to the advisory, MicroScan is a Python-based vulnerability scanner containing more than 1,300 penetration-testing scripts used to identify security flaws in websites and services.

These scripts targeted widely used software, including Oracle WebLogic, Apache Struts, WordPress, Jenkins, and other applications.

Investigators also identified eight vulnerabilities that were commonly targeted by the hackers:

  • CVE-2015-3306: ProFTPD unauthorized file read vulnerability.
  • CVE-2015-5477: ISC BIND denial-of-service vulnerability.
  • CVE-2016-3081: Apache Struts remote code execution vulnerability.
  • CVE-2021-3199: ONLYOFFICE DocumentServer unauthorized file write vulnerability.
  • CVE-2023-22894: Strapi information disclosure vulnerability.
  • CVE-2014-6278: GNU Bash (Shellshock) remote code execution vulnerability.
  • CVE-2019-11510: Pulse Secure VPN arbitrary file read vulnerability.
  • CVE-2021-22205: GitLab remote code execution vulnerability.

The attackers also used the open-source EBurst tool to conduct password-spraying attacks against Microsoft Exchange servers, along with other tools to steal emails, collect Active Directory credentials, and exfiltrate data.

The FBI also discovered a custom web application that let third parties browse stolen emails without needing direct access to the compromised accounts.

The joint advisory contains indicators of compromise, including IP addresses, domains, malware hashes, and details of the attackers' tools, to help organizations identify potential intrusions.

Authorities are urging organizations to review the indicators, patch vulnerable systems, disable unnecessary exposed services, and enforce multifactor authentication to protect against attacks.

This is not the first time US law enforcement disrupted Integrity Tech's hacking infrastructure.

In September 2024, the Justice Department disrupted an Integrity Tech-operated Mirai botnet consisting of more than 200,000 compromised consumer devices worldwide.

The UK government also sanctioned Integrity Tech in 2025 , and the European Union sanctioned the company in 2026 for involvement in cyberattacks targeting Europe and its allies.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Demoting i686 Windows targets to std-only

Lobsters
blog.rust-lang.org
2026-10-08 17:39:50
Comments...
Original Article

With Rust 1.100.0, the following changes to 32-bit Windows targets will happen:

  • i686-pc-windows-msvc Tier 1 with host tools target will be demoted to Tier 1 without host tools.
  • i686-pc-windows-gnu Tier 2 with host tools target will be demoted to Tier 2 without host tools.

Builds of the standard library will continue to be distributed, but host tools such as the compiler will be no longer available. i686-pc-windows-msvc as a Tier 1 target still undergoes CI testing.

To build 32-bit Windows binaries, cross-compiling from a still-supported host toolchain (such as a 64-bit Windows ones) will be required from now on.

Background

Desktop and Server 32-bit only x86 CPUs are no longer sold for over 15 years, and general 32-bit Windows support has ended in October 2025. This means that the development platforms these targets are meant for hardly exist these days, and even if they do exist they typically aren't capable enough for development.

Even on the modern x86_64 hardware, building i686 Windows toolchains has proven to be problematic. We have encountered compiler binaries crashing when built with the i686 MSVC target, and the GNU C++ toolchain failing with OOMs during LLVM build.

Considering all these things, cross-compiling these targets from a better supported one is what we have found to be the best solution forward. As part of that, we stopped producing host tools for these targets. For the time being, the prebuilt standard library is still available, and in case of i686-pc-windows-msvc still tested on CI.

What Changes?

After Rust 1.100, it will no longer be possible to install toolchains on 32-bit Windows hosts. We recommend cross-compiling from a still-supported host (such as a 64-bit Windows toolchain) instead. Other 32-bit platforms are not impacted by this change.

For more details about these demotions, see RFC 3999 for i686-pc-windows-msvc demotion, and MCP 1020 for i686-pc-windows-gnu demotion.

NYPD Allowed Cop Facing Department Trial in the Killing of Win Rozario to Retire With a Full Pension

hellgate
hellgatenyc.com
2026-10-08 17:29:59
Commissioner Jessica Tisch apologized for failing to notify the Civilian Complaint Review Board of the resignation, as the department was required to do....
Original Article
NYPD Allowed Cop Facing Department Trial in the Killing of Win Rozario to Retire With a Full Pension
Win Rozario's little brother, Utsho, speaking next to his father, Francis Rozario, at a press conference Thursday. (Hell Gate)

The Cops

Scott's Picks:

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Hell Gate.

Your link has expired.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.

Quoting Carson Gross

Simon Willison
simonwillison.net
2026-10-08 17:05:44
Computer programming is, fundamentally, about two things: Problem-solving using computers Learning to control complexity while solving these problems I have a hard time imagining a future where knowing how to solve problems with computers and how to control the complexity of those solutions is les...
Original Article

8th October 2026

Computer programming is, fundamentally, about two things:

  • Problem-solving using computers
  • Learning to control complexity while solving these problems

I have a hard time imagining a future where knowing how to solve problems with computers and how to control the complexity of those solutions is less valuable than it is today, so I think it will continue to be a viable career even with the advent of AI tools.

— Carson Gross

Show HN: Free open source Adobe Lightroom alternative, completely local with AI

Hacker News
github.com
2026-10-08 17:00:55
Comments...
Original Article

Rembrandt

Stop paying for Adobe. Flush the incrapification.

A free photo editor for macOS, Windows and Linux.
No account needed, no subscription, no “we’ve updated our terms” emails.

Download · Self-host · Features · Build

Editing a photo in Rembrandt

Rembrandt, in dots, making the edits you asked for while the sliders move Dragging on the photo to change the tone under the pointer Super Resolution: an ordinary 4x enlargement next to Super Resolution 4x
Ask : “golden hour, shadows +25”, and watch Rembrandt paint it Touch : drag on the photo to change that tone or colour Super Resolution : 2× and 4× on your GPU
The library Masks, including AI subject, background, object and depth Before and after, split view
Library : albums, search, sorting, one-click delete Masks : brush, gradients, AI subject and depth Before / after : split or side by side

Download

Platform
macOS · Apple silicon Rembrandt-macos-arm64.dmg
macOS · Intel Rembrandt-macos-x64.dmg
Windows · x64 Rembrandt-windows-x64-setup.exe
Windows · ARM Rembrandt-windows-arm64-setup.exe
Linux · x86_64 / arm64 curl -fsSL https://raw.githubusercontent.com/thesnarkitecht/rembrandt/main/install.sh | bash

All files and checksums: Releases . Builds aren't code-signed yet: on macOS use System Settings → Privacy & Security → Open Anyway ; on Windows More info → Run anyway .

Self-host it

Serve Rembrandt from the computer that holds your photos and edit them in any browser:

curl -fsSL https://raw.githubusercontent.com/thesnarkitecht/rembrandt/main/install.sh | bash -s -- --server

It asks which photo folder to use, starts at login, and prints a private link. Edits are saved next to each photo as XMP; the photos themselves are never changed. Add --lan to reach it from other devices on your network. Linux and macOS; one small dependency-free binary ( server/ ). To update, press Update in the browser (Settings › About); it installs the latest release, checks it against the published SHA-256 sums, and restarts the server.

Features

  • Ask in words : type “warmer and a bit brighter”, “down exposure by ten points”, “shadows +25” or “paste the edits from the previous photo” (Ctrl/⌘ K). A small Rembrandt in dots thinks it over, then makes each change while you watch the sliders move. It runs on your device: a vocabulary, not a language model.
  • Edit the photo itself : drag up or down on any part of the picture to lighten or darken that tone, left or right to change that colour; the sliders follow.
  • AI looks : Enhance, Relight, Sky, Atmosphere, Sunrays, Skin, Motion and Lens Blur with aperture shapes, from on-device depth and subject maps.
  • Refocus : brings back detail in out-of-focus photos, even heavy defocus (regularised deconvolution on the GPU), on the subject or the whole picture.
  • Super Resolution : 2× and 4× with real detail, or Restore at the same size for soft photos; runs on the GPU (Metal on Apple silicon).
  • AI Denoise : clean high-ISO shots into a new DNG with the same edits, on the GPU.
  • Background work that stays out of the way : AI Denoise, Super Resolution and merges run in small GPU slices that pause while you edit, or when you're away, or overnight in a night window you set (Settings › Performance). The queue survives restarts.
  • Merge : HDR from brackets, panoramas and focus stacks, each to a RAW-like DNG.
  • RAW from 1,000+ cameras, developed on the GPU: tone, colour, curves, grading, dehaze, detail.
  • Masks : brush, gradients, colour and tone ranges, AI subject, background, object and depth.
  • Remove : heal and clone spots and strokes; Rembrandt picks a matching source for you.
  • Lens corrections : the camera's built-in profile from Fujifilm and Sony RAWs, or one of 1,500 lens profiles from Lensfun (distortion, vignetting, chromatic aberration), plus manual distortion and vignetting for any photo. Auto straighten levels horizons.
  • On-device AI : Refocus, background replacement. Nothing is uploaded.
  • Library : albums, ratings, flags, colour labels, keywords, virtual copies, search, Find similar, sorting, keyboard shortcuts (or Lightroom's), one-click delete with Undo.
  • Batch : copy and paste edits to hundreds of photos, batch export, and presets that fit each photo's exposure. Watch a folder to apply a preset and album to new photos as they arrive.
  • Share how : a before/after page with a slider, a replay video of the edit, or the recipe inside the exported file so anyone can see (and reuse) how it was edited.
  • Bring your photos : folders, Lightroom Classic (edits, keywords, labels, virtual copies, collections, with a report of anything that can't come over) and Lightroom, Google Photos, Google Drive, Dropbox, OneDrive ( setup ). Export back to them too.
  • Open formats : edits are standard XMP, readable by Lightroom and others.
  • Cloud sync (optional, paid) : turn it on in Settings to sync edits, albums and photos between your computers, the web and your phone. It's the only thing that needs an account, and the only thing that costs money; everything else stays free.

Help out

Rembrandt is free and stays free. Star the repo, tell a photographer, report a bug or send a fix.

Build

npm ci && npx http-server -c-1 .   # web app
npm run tauri dev                  # desktop app (Rust + Tauri prerequisites)

Details in docs/building.md . Contributions welcome: CONTRIBUTING.md .

Licence

Free software under the GNU General Public License v3.0 or later , the same licence as darktable. Use it, study it, change it and share it; if you distribute a modified version, share its source under the same terms. It may also be distributed through app stores (an additional permission under the GPL; see NOTICE.md , which also lists the third-party parts).

Screenshot photos from the scikit-image sample data: espresso by Rachel Michetti and cat by Stefan van der Walt (CC0), rocket launch by SpaceX and Hubble eXtreme Deep Field by NASA (public domain).

AI-ready biological data: $1.8B global commitment

Hacker News
biohub.org
2026-10-08 16:46:25
Comments...
Original Article

REDWOOD CITY, CA, October 7, 2026 — Biohub, the U.S. Department of Energy, the National Institutes of Health, and new funding partners today announced a major expansion of an international effort to generate and make accessible the data enabling predictive AI models of biology. Together, the organizations are investing $1.8 billion in funding, data, computation, and new measurement technology, the largest coordinated commitment to generating AI-ready biological data to date. The result will be an open resource for the research community that provides the foundation for greater understanding and ultimately treatment of human diseases.

As part of this announcement, Biohub has partnered with the Department of Energy (DOE) Office of Science and the National Institutes of Health (NIH) to advance the frontier of artificial intelligence in biology. DOE will invest more than $500 million over five years in lab measurement, modeling and computation toward the international effort to build an AI-ready open data resource. NIH will coordinate the contribution of relevant datasets, repositories, and knowledge bases developed through more than $500 million in prior federal investment aligned to this initiative. Biohub will work with NIH to standardize these datasets for AI model training.

In addition, Google DeepMind, Isomorphic Labs, and Meta are collectively investing $300 million in the Virtual Biology Initiative to create the technologies and multi-modal datasets needed to build predictive models of life.

These datasets will enable the global scientific community to collectively build and use AI models that allow researchers to ask, predict, and answer biological questions digitally, accelerating the path to new ways of preventing and treating diseases. This initiative will deliver the foundational measurements to train these models, expanding cell response data to interventions across far more cell types and conditions than have yet been studied, and building and validating technologies for studying cells and cellular interactions at greater scale, speed, and accuracy.

“An accurate predictive model of biology could dramatically accelerate scientific discovery by enabling scientists to perform experiments digitally. The insights that come from this could unlock a far greater understanding of disease and open up completely new paths for cures,” said Biohub Head of Science Alex Rives. “Because of this potential, the creation of a virtual cell is one of the most important challenges for the next era of science. It will require coordinated data generation efforts at a national and international scale, which is why these partners are coming together. We invite the worldwide scientific community to join us in this project.”

The Virtual Biology Initiative, announced in April 2026, will coordinate data generation across institutions and disciplines to build AI-ready open datasets to enable predictive models of life. Biohub’s founding $500 million commitment anchors that work: $400 million supports new technologies that expand what biologists can measure: cryo-electron tomography, which resolves near-atomic detail inside the cell; microscopy that can image millions to billions of cells in living tissue; and engineering tools to build and perturb biology at molecular, cellular, tissue, and whole-organism levels. A further $100 million funds research outside Biohub.

“Generating the data to solve predictive systems biology requires scaling past the limits of what any single organization can produce today,” said Max Jaderberg, President of Isomorphic Labs. “By joining the Virtual Biology Initiative as a founding member, Isomorphic Labs is helping build a massive, multimodal data foundation. This initiative will generate the data needed to push the industry closer to the next significant breakthrough for biology.”

Through the Genesis Mission, a cross-agency initiative led by the Department of Energy, DOE will contribute more than $500 million over five years in fundamental cell research — data collection, AI analytics, measurement and imaging, modeling, and computation — drawing on exascale supercomputing, X-ray and neutron scattering, cryo-electron microscopy and tomography, and autonomous laboratories across the National Laboratory system.

“This partnership represents a critical step forward in leveraging artificial intelligence for public benefit,” said Darío Gil, DOE’s Under Secretary for Science. “By combining DOE’s exascale computing, experimental measurement, and modeling assets, including premier user facilities at the Joint Genome Institute, the Environmental Molecular Sciences Laboratory, and advanced structural beamlines with the unique AI models, tool development, and biological data capabilities of Biohub, we are setting a new standard for open science that will accelerate discoveries in both medicine and biotechnology.”

Through its Bio Genesis Mission , NIH will bring together existing biomedical datasets, national data infrastructure, and research programs to help build AI-ready resources for the broader scientific community. NIH’s extensive investments in biomedical research provide a foundation for this work; resources include national biomedical repositories catalogued by NIH’s National Library of Medicine (NLM) and the National Center for Biotechnology Information , as well as NIH Common Fund programs that are already developing coordinated biological atlases, shared data standards, and AI-ready biomedical datasets.

“By combining resources and expertise, we can accelerate the development of universal cell models with sufficient biological complexity to predict how any cell responds to an intervention,” said Nicole Kleinstreuer, Ph.D., NIH Deputy Director Program Coordination, Planning, and Strategic Initiatives (DPCPSI). “The return from these models could be broad and profound, resulting in substantially faster timelines for medical breakthroughs as compared with attempting to attain the same results through laboratory experiments alone.”

In addition, leading scientific institutions and consortia with experience in organizing transformative international collaborations, from the Human Genome Project onwards, have come together to help nucleate the scientific community across academia and industry around developing effective scientific strategies to maximize the impact of virtual biology. The groups include the Allen Institute, Broad Institute, Gladstone Institutes, the Human Cell Atlas, the Human Protein Atlas, and the Wellcome Sanger Institute. These groups are committed to working together as part of the Virtual Biology Initiative as well as through independent efforts toward this shared goal. NVIDIA will support the initiative to leverage accelerated computing infrastructure, domain-specific software, and technical expertise. Renaissance Philanthropy is helping to expand funding for data generation.

As the initiative takes shape, Biohub is bringing together partners across disciplines and industries to build the layer that lets their datasets work in a unified fashion — shared standards, common identifiers, and a single point of access. Equally important is building the scientific community around these resources — convening researchers across institutions and disciplines, connecting complementary expertise and capabilities, and creating opportunities to define and pursue ambitious scientific questions together. Over the past decade, Biohub has expanded the reach and impact of measurement technologies and open datasets, leading projects such as Tabula Sapiens , OpenCell , and Zebrahub . It has also built and maintained community data infrastructure, including CELLxGENE and the CryoET Data Portal . The Virtual Biology Initiative builds on these experiences to enable coordinated efforts at a scale that no single institution could achieve alone.

“The quest to build a virtual cell is one of the great collective scientific challenges and key to understanding the mechanisms of life. We will not solve this challenge without open, experimental biological data at an unprecedented scale, showing how living cells behave and respond to changes,” said Pushmeet Kohli, VP, AI for Science at Google DeepMind and Google Cloud’s Chief Scientist. “This investment in biological data generation will help create an open, standardized data commons, which will lay the foundations researchers around the world need to better model biology.”

###

About Biohub
Biohub is a 501(c)(3) nonprofit research institute combining frontier AI and biology to accelerate science. With its compute capacity, AI research and engineering, and state-of-the-art technology for measuring, imaging, and programming biology, Biohub is enabling scientists worldwide to use AI-powered biology to study how cells operate and organize as systems — with the ultimate mission to cure or prevent all disease. Learn more at biohub.org .

Press Contact
Biohub
press@biohub.org

ADHD as a circadian rhythm disorder: evidence and implications for chronotherapy

Hacker News
www.frontiersin.org
2026-10-08 16:42:16
Comments...
Original Article

PERSPECTIVE article

Front. Psychiatry , 10 December 2025

Sec. Sleep Disorders

Volume 16 - 2025 | https://doi.org/10.3389/fpsyt.2025.1697900

Abstract

Accumulating evidence indicates that circadian rhythm dysfunction is a clinically significant and highly prevalent phenotype in a substantial subgroup of individuals with Attention-Deficit/Hyperactivity Disorder (ADHD). This perspective synthesizes convergent lines of evidence demonstrating strong associations between ADHD and evening chronotype with phase-delayed biological markers. Sleep disturbances are profound: insomnia and sleep disturbances affect up to 80% of adults with ADHD and similarly up to 82% of children with ADHD, delayed sleep-wake timing occurs in up to 78%, and dim-light melatonin onset (DLMO) is delayed by approximately 45 minutes in children and 90 minutes in adults. These alterations coincide with blunted and delayed cortisol rhythms, reduced pineal volume, and attenuated peripheral clock-gene rhythms (BMAL1/PER2). Intervention studies demonstrate that the circadian phase can be successfully advanced in ADHD populations. Melatonin and bright light therapy has advanced DLMO in both children and adults with ADHD. Emerging data correlate phase advancement with ADHD symptom improvement, and winter trials suggest circadian preference shifts best predict symptom improvement. Sleep programs improve ADHD symptoms, sleep quality, and functioning in children. Exercise and multimodal protocols for evening chronotypes successfully advance circadian timing in non-ADHD populations and warrant investigation in ADHD. Based on this evidence, we propose a pragmatic, behavioral-first clinical pathway: routine screening for sleep/circadian disturbances; phenotypic characterization through chronotype assessment, sleep tracking, and DLMO when feasible; implementation of fixed wake times, morning bright light exposure, evening light restriction with screen hygiene, and regularized zeitgebers; and selective low-dose melatonin for confirmed or probable DLMO delays.

Introduction

Attention-Deficit/Hyperactivity Disorder (ADHD) is a common neurodevelopmental disorder characterized by impaired levels of inattention, hyperactivity, and impulsivity (). There is a growing body of research identifying that ADHD has a significant sleep and circadian component (, ). Insomnia is present in up to 80% of adults with ADHD and similarly high rates (up to 82%) of children with ADHD (, ). Converging evidence indicates that circadian rhythm disruption represents a highly prevalent and clinically important phenotype that interacts with ADHD symptoms in complex, bidirectional ways in a substantial proportion (though not all) of individuals. In parallel, clinical trials have begun targeting the circadian system and have demonstrated that phase shifting the internal clock of people with ADHD can improve symptoms.

Herein, we propose the adoption of behavioral circadian interventions as adjuncts in ADHD care. This circadian-informed approach is a pragmatic, scalable, and generally low risk. We invite rigorously future well-designed, stratified trials to quantify effects on core ADHD outcomes, define responder phenotypes, and optimize circadian-focused protocols.

Sleep disturbances, evening chronotype and delayed circadian phase in ADHD

An estimated 73-78% of children and adults with ADHD have a delayed sleep/wake cycle (). These findings persist even in the absence of comorbid mental health conditions, with multiple independent studies confirming elevated rates of self-reported sleep problems in adults with ADHD (). These subjective reports are corroborated by objective sleep studies, which demonstrate that sleep onset latency and sleep efficiency problems remain significantly associated with ADHD even after controlling for anxiety and depression ().

A comprehensive systematic review found robust evidence for evening chronotype predominance in ADHD (). Approximately three-quarters of adults who developed ADHD in childhood show objective evidence of phase-delayed circadian rhythms. Biological markers such as dim-light melatonin onset in saliva, core body temperature rhythms, and actigraphically-recorded sleep patterns are typically shifted later by roughly 90 minutes compared to neurotypical adults ().

Biological circadian markers and mechanisms in ADHD

Melatonin

Phase delays of melatonin in both individuals with ADHD have been well characterized, with children and adults identified to have a delayed onset of about 45 minutes and 90 minutes, respectively (). Beyond the phase delay of melatonin onset in ADHD, there is evidence that the amount and pattern of melatonin production may differ ( Figure 1 ). Some studies have observed abnormally high levels of melatonin during the day in children with ADHD, which improves with methylphenidate treatment (). This ability to suppress daytime melatonin levels and shift the melatonin rhythm earlier suggests a complex interplay between ADHD medications and circadian systems. Individuals with ADHD have also been found to have smaller pineal gland (which produces and secretes melatonin) volume compared to healthy controls, with a positive correlation between pineal gland volume and eveningness ().

Cortisol

ADHD also involves blunted and delayed cortisol rhythms ( Figure 1 ) (, ). In an analysis of adults with ADHD compared to age- and sex-matched controls, adults with ADHD had significantly disturbed rhythmicity of not only melatonin but cortisol (). A meta-analysis also identified that children with ADHD exhibit lower basal cortisol levels, particularly in the morning, compared to controls (). This suggests a deficit in the suprachiasmatic nucleus’ ability to entrain a normal circadian rhythm with alterations in the circadian rhythm expanding past melatonin. However, the causation of this is still unclear, as it has been postulated that more eveningness and thus light exposure could also be driving these findings.

Clock gene expression

Brain and Muscle ARNT-like 1 (BMAL1) and Period circadian protein homolog 2 (PER2) are core components of the circadian clock in humans, which form a feedback loop to control gene expression in a cyclical manner. Downstream, attenuated BMAL1/PER2 rhythms in oral mucosa indicate weaker or desynchronized peripheral clocks, and symptom severity tracks with reduced PER2 rhythmicity, tying molecular clock strength to the clinical phenotype (). Together, these data support a model in which individuals with ADHD consistently experience shifted endocrine signals (melatonin/cortisol) coupled with molecular disruptions via the loss of the rhythmic expression of clock genes.

Clinical interventions: chronotherapy in ADHD

Melatonin supplementation

In a randomized trial of adults with ADHD, 0.5 mg per night of melatonin advanced DLMO by 88 minutes with 14% reduction in ADHD symptoms (). In a randomized, placebo-controlled trial of 101 medication-free children with ADHD and chronic sleep-onset insomnia, 3–6 mg melatonin nightly for 4 weeks advanced DLMO by 44 minutes, while the control group had a delay of 13 minutes. Total sleep time also significantly improved by 20 minutes with melatonin, versus a loss of 14 minutes in the control group. However, within this 4 week period, there was no identified changes in cognitive performance or problem behavior (). In a long-term follow up study of this cohort, 65% of participants continued daily melatonin; discontinuation resulted in a phase delay of sleep in 92% of children (). Positive improvements in behavior (71%) and mood (61%) were reported. Altogether, these findings suggest melatonin effectively advances circadian phase in ADHD; however, further trials are needed to define optimal dose and timing relative to DLMO, the duration required for sleep/phase gains to translate into core symptom improvement, and responder phenotypes.

Bright light therapy

Studies in healthy populations have demonstrated a powerful ability to phase advance DLMO using bright light exposure. A week of natural light-dark cycle was able to entrain a ~2.6h earlier DLMO in healthy adults (). Emerging research indicates that morning bright light can help stabilize sleep and circadian rhythms in ADHD (, , ). Adding bright light therapy to melatonin yielded the largest phase advance (~2 hours) in adults with ADHD and delayed sleep phase (). In another pilot trial, 2 weeks of morning bright light therapy with a 10,000 lux lamp phase advanced DLMO by 31 minutes and mid-sleep time by 57 minutes in adults with ADHD. There was a significant interaction between ADHD-Rating Scales and Hyperactive-Impulsive sub-scores with phase advances in DLMO and mid-sleep time ().

A 3-week intervention examined the role of bright light therapy in adults with ADHD during the fall/winter period (). Phase advance in circadian preference emerged as the strongest independent predictor of improvement across subjective and objective ADHD indices. These findings, especially in the winter period, are especially relevant as there is a strong relationship between ADHD symptoms and symptoms of seasonal depression (). One analysis suggested that circadian disturbance significantly mediated the relationship between ADHD and seasonal symptoms of depression (). In clinical populations, the overall rate of seasonal affective disorder is 27% among adults with ADHD, with females at the highest risk (). While more trials are required, bright light therapy may be even more efficacious for individuals with ADHD during winter months ().

Behavioral interventions

In a randomized trial of 244 children with ADHD, a behavioral sleep intervention (two fortnightly sessions with strategies provided by psychologists or pediatricians and a follow-up telephone call) significantly improved severity of ADHD symptoms, sleep, quality of life, behavior, and functioning at 6 months post intervention ().

Although not explicitly examined in individuals with ADHD, exercise is another adjunctive tool to help improve circadian misalignment. Both morning or evening exercise seem to advance DLMO in those with later chronotypes, suggesting exercise at any time of day could be a useful adjunct for those with ADHD who tend to have later chronotypes (, ).

A multimodal approach to behavioral therapy has demonstrated significant benefits in a group of “night owls”, which may also translate to those with ADHD. Researchers randomized a group of 22 healthy individuals with late chronotypes to behavioral interventions aimed at advancing their circadian rhythm (). The general principles were to wake up 2–3 hours earlier, wake up at the same time every day, maximize morning light exposure, reduce evening light exposure, avoid late dinners, avoid caffeine after 15:00, exercise in the morning, and avoid naps in the late afternoon. In just 3 weeks, the intervention group shifted their DLMO by ~2 hours, wake-up time advanced 1.9 hours, and peak cortisol advanced by 2.2 hours. Additionally, subjective depression scores decreased by ~58% and stress scores by ~40% in the intervention group. Cognitive performance and physical performance also improved. Overall, this could be an effective, low-cost strategy to provide structured guidance to those with ADHD, though specific trials in this population are needed.

Conclusion

The accumulated evidence demonstrates that circadian rhythm dysfunction is highly prevalent and clinically meaningful in a substantial proportion of individuals with ADHD, although not universal, and its interaction with ADHD symptoms appears complex and bidirectional. The prevalence of circadian alterations (affecting 73-80% of ADHD patients), consistency of biological markers across studies (phase delays, altered melatonin and cortisol rhythms, disrupted clock gene expression), and efficacy of circadian-targeted interventions in improving both sleep and core ADHD symptoms support a model wherein circadian disruption may play an important role in ADHD pathophysiology in a substantial subgroup, though evidence on remission of ADHD with circadian interventions is lacking.

This evidence warrants reconsideration of current assessment and treatment paradigms. Implementation of routine circadian phenotyping in ADHD evaluation, coupled with evidence-based chronotherapeutic interventions, represents a pragmatic approach to improving outcomes. While not proposing that ADHD be reclassified exclusively as a circadian disorder, the evidence supports recognition of a prevalent circadian phenotype that, when present, may benefit from targeted chronotherapeutic intervention alongside standard ADHD treatments.

The safety profile, accessibility, and potential for synergy with existing treatments make circadian interventions an attractive addition to the ADHD treatment. As the field advances toward precision medicine approaches, circadian phenotyping may prove essential for treatment selection and optimization. Further research is needed to fully elucidate the bidirectional relationships between circadian disruption and ADHD symptoms, identify biomarkers for treatment selection, and establish optimal long-term management strategies.

Statements

Data availability statement

The original contributions presented in the study are included in the article/supplementary material. Further inquiries can be directed to the corresponding author.

Author contributions

BL: Conceptualization, Writing – original draft, Supervision, Investigation, Methodology, Project administration, Writing – review & editing, Resources. NF: Writing – review & editing, Writing – original draft.

Funding

The author(s) declare that no financial support was received for the research and/or publication of this article.

Conflict of interest

The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.

Generative AI statement

The author(s) declare that no Generative AI was used in the creation of this manuscript.

Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.

Publisher’s note

All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.

References

Keywords

attention deficit and hyperactivity disorder (ADHD) , circadian rhythm disorder , chronotype (morningness-eveningness) , chronotherapy , insomnia

Citation

Luu B and Fabiano N (2025) ADHD as a circadian rhythm disorder: evidence and implications for chronotherapy . Front. Psychiatry 16:1697900. doi: 10.3389/fpsyt.2025.1697900

Received

02 September 2025

Published

10 December 2025

Reviewed by

Margaret Weiss , Cambridge Health Alliance (CHA), United States

Updates

Copyright

© 2025 Luu and Fabiano.

This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY) . The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.

* Correspondence: Brandon Luu, 16bl32@queensu.ca

Disclaimer

All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article or claim that may be made by its manufacturer is not guaranteed or endorsed by the publisher.

Ransomware attack disrupts Japan's IDCF Cloud used by govt clients

Bleeping Computer
www.bleepingcomputer.com
2026-10-08 16:09:45
IDC Frontier, a major Japanese cloud and digital infrastructure company, disclosed that its IDCF Cloud service was targeted in a ransomware attack that caused an outage at a data center cluster serving the eastern part of the country. [...]...
Original Article

Ransomware attack disrupts Japan's IDCF Cloud used by govt clients

IDC Frontier, a major Japanese cloud and digital infrastructure company, disclosed that its IDCF Cloud service was targeted in a ransomware attack that caused an outage at a data center cluster serving the eastern part of the country.

The company says that the attack started on October 7 at 3:40 AM local time, forcing a shutdown of the network and system.

“Our investigation has determined that a disruption in East Japan Region 1 was caused by a ransomware attack by a third party,” reads IDFC Cloud’s announcement .

“We are continuing to investigate the precise cause and the scope of the impact,” the company added.

The firm said the attack impacts 495 companies and local governments using its cloud service.

The IDCF Cloud infrastructure-as-a-service platform is operated by IDC Frontier, a subsidiary of SoftBank Group, a multinational investment holding company based in Tokyo.

The firm rents out virtual servers, storage, and networking that customers use to run websites, applications, and business systems in Japanese data centers.

After detecting the attack, IDC Frontier isolated and shut down impacted systems in ‘East Japan Region 1’ to prevent the compromise from spreading.

Currently, the company is working to identify and block the intrusion route and check security in other regions.

IDCF Cloud has proactively disabled customer access to management consoles for all regions while it verifies their security, and will restore access after confirming it is safe to do so.

Screenshots from customers before they were locked out of the console show a message from the threat actor claiming that it took seven minutes to breach IDCF Cloud’s East Japan Region 1 infrastructure.

The threat actor claims they encrypted 225 databases corresponding to 3.6 PB of data, reached 239 hypervisors, sealed 16,000 VM disks, and wiped 554,153 snapshots.

Note
Message seen by IDFC Cloud clients on the platform console
Source: j416dy

Nissui also hit

Japanese marine products company Nissui Corporation announced yesterday that its logistics subsidiary, Nissui Logistics, suffered a system outage due to suspected unauthorized access to a third-party data center it uses.

As a result, goods are not being shipped or received, and the company is currently investigating whether personal information or customer data was leaked.

Nissui is a Japanese seafood and food group with approximately 11,500 employees and an international supply chain spanning fishing, aquaculture, processing, and sales.

It is unclear if the outage at Nissui is connected to the attack on IDCF Cloud.

Recently, several major Japanese companies were targeted in cybersecurity attacks, Macnica researcher Yutaka Sejiyama says.

Since the start of the year, Macnica logged 119 cybersecurity incidents involving personal information theft or exposed data, 83 occurring between July 1 and October 6.

For comparison, the security firm recorded 84 incidents in 2025 using the same criteria, and just 62 throughout 2024.

Number of confirmed cyberattacks against Japanese entities
Number of confirmed cyberattacks against Japanese entities
Source: Macnica

Analysis of these incidents shows that attackers are probing websites and APIs for access-control, configuration, and authentication weaknesses, and exploiting known (n-day) vulnerabilities.

Sejiyama told BleepingComputer that finding weaknesses specific to individual websites has traditionally required considerable time and effort, making small targets less attractive.

The rise of capable, cheap AI tools may be the reason why broad, detailed exploration of security weaknesses is now changing the landscape.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

When No ID Means No Internet: Age Verification and the Right to Access Information

Electronic Frontier Foundation
www.eff.org
2026-10-08 15:59:49
This post was co-authored by Sheila B. Lalwani, a doctorate student and recent COMPASS Fellow hosted by EFF. Age verification proposals are often presented as a simple tradeoff: sacrifice a little privacy to better safeguard children online. But that framing overlooks a more fundamental question. Wh...
Original Article

This post was co-authored by Sheila B. Lalwani , a doctorate student and recent COMPASS Fellow hosted by EFF.

Age verification proposals are often presented as a simple tradeoff: sacrifice a little privacy to better safeguard children online. But that framing overlooks a more fundamental question. What happens to people who cannot verify their age at all? This is particularly a problem when users are required to prove their age with identity documents.

Age-related restrictions are developing quickly around the world. While they differ radically across jurisdictions, in the past year, we’ve witnessed a sharp uptick toward mandatory age assurance for social media access but also for other high-risk digital services.

For example:

  • In late 2025, Australia became the first country to implement a minimum age requirement for prohibiting children under age 16 from creating or holding social media accounts.
  • India passed the Digital Personal Data Protection (DPDP) Act that includes mandatory verifiable parental consent and has undertaken ongoing discussions for social media restriction.
  • The United Kingdom passed the Online Safety Act requiring age verification across a swath of services hosting content considered harmful to users under 18. More than half the states across the U.S. have enacted age verification laws .
  • An EU Commission ’s expert report recommends a ban on social media access for users under 13. It also recommends mandatory age verification for platforms to ensure that users are ‘age appropriate.’

The Access Problem

Age verification laws that are predicated on the necessity of users possessing a current passport, driver’s license, credit card, or similar documents proving their identity exclude critical sections of populations.  And this problem is global in nature: Millions of people lack government-issued identification or encounter regular challenges to obtaining or updating it.

Roughly 15 million adult U.S. citizens lack a driver’s license, and a further 2.6 million lack any government photo ID ; leaving large groups blocked from online content or services. The UK has a similar predicament: proof-of-age checks are often reliant on passports, driver’s licenses, or other recognized alternatives, which can pose unique challenges to people without these documents.

Much of the advocacy around age verification discusses the privacy harms of age verification. Yet these measures also threaten something more fundamental: equal access to information and the ability to exercise the right to freedom of expression.

Unfortunately, age verification systems foster unequal access to information and provide an asymmetric solution to find essential information, build community, and weigh in on public discourse. As governments and companies increasingly require users to prove their age before accessing online services, these individuals risk being excluded from large parts of the internet altogether.

Effects on Global Majority Countries

Age verification laws reshape who can speak, who can access information, and who gets excluded from the digital public sphere. In other words, age verification is not a neutral safety measure: it presents a structural barrier to disproportionately exclude certain groups—particularly those in the global majority—and alters the architecture of global online expression. Some of these groups are already marginalized offline, and age verification extends that exclusion into digital spaces.

For instance, 850 million people globally do not have ID . Most of these individuals exist in primarily low and middle income countries in Sub-Saharan Africa and South Asia. The World Bank points out that many are members of marginalized groups and more than half of those lacking access to identity documentation also have children whose births have not been registered. Women are particularly vulnerable and are 8% less likely than men to have an ID. Other vulnerable groups, such as adults in low income countries, are less likely to have an ID when they fall below 25 years, as are those with a primary school education or less or those in rural areas.

A policy paper from EDRi points out that age verification laws provide quick tech solutions but overlook longstanding structural challenges and undermine the universality of the internet. The analysis finds that age verification laws have serious human rights implications and ironically harm the very individuals they deem to protect. Moreover, these laws depend on the collection of harmful mass data that human rights organizations, including EFF, is fighting against —and has for decades .

For example:

  • In Morocco , a push to restrict children’s access would ban under-13s from creating accounts on gaming platforms. This could potentially create challenges for those with IDs that have incomplete information concerning the year of birth. In addition, this push would also impact those who attempt to leave Morocco.
  • In Egypt , the lack of ID cards has created challenges for minority groups such as the Baha’i.
  • Stateless individuals would also struggle under age verification laws. The Rohingya , the world’s largest population of stateless people , often lack IDs .
  • Kuwait’s Bidoon population also lacks proper identification materials. According to Amnesty International , this leads many to rely on standard civil identity cards, which can be restrictive.
  • Nigeria launched a national program to provide ID cards to its population in 2007. Since then, 64.4 million have registered, but that represents just over 30% of the national population.
  • The Kafala system, a practice in several countries across the Middle East , also introduces challenges for age verification laws. Under this legal framework, migrant workers’ legal residency and employment status are bound to a specific employer. This potentially leaves stateless persons or migrant workers vulnerable to forced labor and restricted movements.

No ID, No Access

Age verification laws are less about confirming the age of a user and more about creating barriers to online participation that many people cannot reliably scale. The net result is reduced access, more data collection, and an increased chance of unequal or mistaken exclusion from accessing information online.

Nobody doubts the importance of protecting children online. While proponents assert that age verification laws protect minors from harmful material, online harassment, and digital addiction, these laws are not the solution. They subvert fundamental freedom of expression rights and pose significant privacy risks.

EFF has long warned against age-gating the internet. Age verification technology itself is often inaccurate and privacy-invasive , and as more countries considering implementing ID-based checks , the risks move beyond censorship and surveillance toward excluding some people entirely. That’s why we’re working with groups in the U.S. and around the world to push back against these laws, and why we hope you join our effort.

For more information on how to fight back against dangerous age verification laws, visit our resource hub at eff.org/age

Don't Piss on My RHONY Vacation and Tell Me It's a Private Island

hellgate
hellgatenyc.com
2026-10-08 15:31:06
This week, the RHONY reboot cast members tore each other down in a tropical paradise....
Original Article
Don't Piss on My RHONY Vacation and Tell Me It's a Private Island
(Photos by Kevin Wolf, Ralph Bavaro/Bravo. Collage by Hell Gate)

RHONY

Scott's Picks:

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Hell Gate.

Your link has expired.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.

Apple Is Slow-Rolling iOS 27 Adoption, So Far

Daring Fireball
mastodon.social
2026-10-08 15:30:36
David Smith, last week: Been really interesting to watch the iOS 27 adoption curve over the first two weeks. Clearly on a different path than previous years. Still steadily growing, at a similar rate to the ‘steady growth’ phase of most years, but without the big surge at the start. Given that ...

Low-cost Android phones ship with residential proxy malware

Bleeping Computer
www.bleepingcomputer.com
2026-10-08 15:20:33
A malware campaign dubbed 'Midnight Mimosa' has been discovered on low-cost Android smartphones that ship with malicious software embedded in their firmware, allowing attackers to silently install apps, perform ad fraud, and turn devices into residential proxies. [...]...
Original Article

Android Malware

A malware campaign dubbed 'Midnight Mimosa' has been discovered on low-cost Android smartphones that ship with malicious software embedded in their firmware, allowing attackers to silently install apps, perform ad fraud, and turn devices into residential proxies.

The malware is believed to have been introduced somewhere in the device supply chain, but it remains unclear who is responsible for modifying the firmware or at what stage the tampering occurred.

The malware is embedded directly into the firmware of low-cost Android devices using MediaTek chipsets, giving it system-level privileges that allow it to install and remove applications, grant sensitive permissions, and execute remotely downloaded code without user interaction.

According to Bitdefender researchers , the campaign affected thousands of devices across more than 150 countries over approximately two years, with the highest number of victims in Mexico, France, Italy, United States, Germany, Brazil, and Spain.

The researchers found preinstalled malware on devices with model names associated with legitimate manufacturers, including the Doogee S200 X and Cubot KINGKONG X, as well as phones impersonating Samsung and Apple products.

In an XDA forums post , owners of Cubot and Doogee smartphones reported finding suspicious applications that repeatedly reinstalled themselves after removal.

One Doogee Fire 3 Max owner also reported that an official firmware update infected the device with the malware, which disappeared after restoring an older firmware version but returned when the update was installed again.

Some users said the manufacturers released firmware updates that resolved the infections. However, the manufacturers have not publicly explained how the malicious software was introduced into the affected firmware.

Bitdefender also mentioned the XDA forum post in its report and said one of the malware packages reported by forum users, com.android.non.szcz , is part of the same malware family.

Pre-installed Android malware

Unlike typical Android malware that requires users to install a malicious application, Midnight Mimosa is already installed in the device's system partition when customers receive their phones.

The malicious programs impersonate legitimate Android system packages, using names such as com.android.system.lite , com.android.sys.prot , and com.android.sys.gmsprot .

Because these applications are signed and run with elevated system privileges, they cannot be removed through Android's normal application uninstall process.

Bitdefender discovered the campaign after its App Anomaly Detection technology flagged a suspicious system application named com.android.system.lite that was silently installing and removing other applications.

Further investigation determined that the application was part of a larger malware framework that downloads additional modules from command-and-control (C2) servers to perform different malicious activities.

The researchers identified approximately 32 applications distributed through the framework, including apps disguised as weather utilities, file managers, app lockers, OCR tools, and audio editors.

"The system app itself doesn’t register the fraudulent impressions and clicks," explains Bitdefender.

"The revenue engine is driven by the dropped cover apps, including real-looking weather, app-lock, note, and OCR apps, which load genuine ads through a legitimate ad SDK. The goal is simple: to load an invisible window on top of apps that registers ads being shown."

These applications are used to generate fraudulent advertising impressions and clicks, with some displaying advertisements in hidden windows or automatically interacting with ads without the device owner's involvement.

The malware also employs techniques designed to evade Android's security protections.

Before silently installing malicious applications, it temporarily disables the Google Play Store app, com.android.vending , which Bitdefender says is intended to prevent Google Play Protect from detecting the installation.

After the installation completes, the malware re-enables the Play Store to avoid raising suspicion.

Some malware variants also manipulate Android's recorded installer information to make malicious applications appear to have been installed through Google Play, even though they were deployed directly by the malware.

The malware also includes features that turn infected Android phones into residential proxies that can relay network traffic.

Bitdefender identified a malicious application disguised as an app locker, com.mobile.applock.en , which contains a TCP proxy component that registers infected devices with a remote command server.

Once registered, the malware can be sent instructions to connect to specified hosts and forward traffic through the infected device.

This could allow attackers to route malicious traffic through the internet connections of phone owners, concealing the true origin of attacks or allowing access to devices reachable from the infected device.

Bitdefender confirmed that the proxy command-and-control infrastructure was operational and accepting device registrations.

However, during their tests, the researchers said their newly registered device did not receive any relay targets, so they could not confirm whether the attacker's were actively forwarding traffic.

SystemLite delivery and payload architecture
SystemLite delivery and payload architecture
Source: Bitdefender

The researchers also discovered 13 Android applications distributed through the Google Play Store that contained the same advertising fraud code and communicated with known Midnight Mimosa infrastructure.

Unlike the preinstalled system components, these applications do not have elevated privileges needed to silently install other software.

However, they can still display advertisements outside their user interface, including when users are not using the phone.

The applications were distributed using 13 different signing certificates and at least two developer accounts, identified as fivedev and CPS Developer .

The researchers also found firmware signed using certificates associated with Chinese device manufacturer Shenzhen Zediel, but said it is unclear whether the company was involved in the malware's campaign.

For affected consumers, removing the malware is difficult because the malware is installed as a high-privileged system application.

Bitdefender says removing the infection requires firmware-level cleanup or disabling the malicious component using Android Debug Bridge (ADB), which can be complicated for many users.

article image

Build your security blueprint for AI-powered attacks

Join Mikko Hyppönen and security leaders from the NFL, CHANEL, and Atlassian for a two-hour digital summit on what AI-speed attacks change, what defenders should stop doing, and how to validate, decide, fix, and re-validate at machine speed.

Save your seat

Vitalik Buterin backs crypto ‘bunker mode’ amid rapid AI math advances

Hacker News
cointelegraph.com
2026-10-08 15:17:51
Comments...
Original Article

Ethereum co-founder Vitalik Buterin has backed a new warning that advances in artificial intelligence could undermine the cryptography used in today’s blockchains before quantum computers do.

Buterin was responding to a post from Ethereum researcher Justin Drake on Wednesday urging the industry to prepare for “bunker mode,” as AI could eventually make it possible to break the elliptic curve digital signature algorithm (ECDSA) used to secure cryptocurrency wallets. Drake said users should begin a gradual migration of funds to fresh wallets where their public key is not exposed.

“I don’t recommend anyone scramble to move their funds to new wallets today,” Buterin wrote . “But we should take the risks to cryptography from AI-accelerated math seriously.”

Drake said his concerns came after OpenAI released hundreds of new mathematical findings across a variety of topics such as algebra, theoretical computer science and mathematical logic on Tuesday, revealing how quickly AI has been advancing in mathematics.

Last month the company used a team of 10,000 autonomous AI agents working in parallel to solve the Navier-Stokes equation, one of the most famous and difficult unsolved problems in mathematics and physics, in just 88 hours.

“Recent days have been humbling for human mathematical intuition. Long-held, unquestioned hypotheses have fallen,” said Drake, adding that elliptic curves could be especially vulnerable to superintelligence.

“Curves carry rich structure, with room for fancy tricks like Schoof, Frobenius, pairings. (By contrast, hashes are designed to minimize algebraic structure.)” he said.

Buterin flags risks to quantum-resistant cryptography

Buterin, however, extended the concern to lattice-based cryptography, warning that systems believed to resist quantum attacks could also be weakened by AI-driven mathematical advances.

“So far most people have been in the mode of thinking ‘elliptic curves broken, hashes safe, lattices safe,’” he wrote. “But there is a good chance that the concrete security of lattices will take serious hits from the next two years of AI math.”

Buterin said this is a major reason why Ethereum’s lean roadmap has been going in the “hash-only” direction.

Dragonfly managing partner Haseeb Qureshi also supported taking precautions, describing Drake’s warning as “a very sober call.”

“The risk is not quantum, but just conventional mathematics overturning unproven cryptographic hardness assumptions,” he wrote on X.

Controlled migration to fresh addresses

Alongside those longer-term cryptographic changes, both researchers suggested holders could reduce their exposure by keeping funds in addresses whose public keys have not been revealed.

“My personal recommendation is to set in motion a controlled mass migration of assets to fresh addresses,” said Drake.

He said large and sophisticated crypto holders should be the first to move their funds to new addresses. He also recommended moving any remaining funds to a new address after signing a transaction.

Related: Nvidia unveils AI safety platform to rein in ‘rogue’ AI agents

Buterin supported the precaution if it is straightforward to carry out. “If it’s not difficult for you, keeping your funds in addresses which have not yet been used to make a transaction is a good idea,” he wrote.

He cautioned, however, that moving funds introduces risks of its own.

“I personally have lost more money in botched migrations than I have lost in all hacks combined,” Buterin said.

Drake similarly stressed that any migration should be gradual and carefully managed, warning that “a rushed migration would do more harm than good.”

Magazine: Too big to pause: Could an AI slowdown crash the economy?

Cointelegraph is committed to independent, transparent journalism. This news article is produced in accordance with Cointelegraph’s Editorial Policy and aims to provide accurate and timely information. Readers are encouraged to verify information independently.

Steinar H. Gunderson: Decompilation patterns, part 5: Nested if/goto

PlanetDebian
blog.sesse.net
2026-10-08 15:15:22
Here's a pattern that sometimes comes up: if (x == 3) { if (y == 4) { ... } else { goto label_5; } } else { label_5: ... } We don't like gotos, and here, it's pretty obvious what was meant, namely: if (x == 3 && y == 4) { ... } else { label_5: ...
Original Article

Here's a pattern that sometimes comes up:

if (x == 3) {
    if (y == 4) {
        ...
    } else {
        goto label_5;
    }
} else {
    label_5:
    ...
}

We don't like gotos, and here, it's pretty obvious what was meant, namely:

if (x == 3 && y == 4) {
    ...
} else {
    label_5:
    ...
}

And now you can usually delete label_5 because nothing points to it.

Often, m2c can do this by itself, but as usual, you may get to this point only after cleaning up other things.

13 Cursed New Developments in the Chaotic Brooklyn Democratic Party Saga

hellgate
hellgatenyc.com
2026-10-08 15:08:21
We drew you a diagram to explain (good luck)....
Original Article

Want to get up to speed on the Brooklyn Democratic Party saga that is apparently still playing out? Here's a rundown on all the recent players and court proceedings, informed by our exhaustively researched project, Courts of Contempt : an investigation into New York City's broken judicial selection system.

All this hullaballoo started in June, when the folks in charge of the Brooklyn county machine—which has the power to choose judges, appoint people to fill legislative vacancies, and direct fundraising to local candidates— LOST a bloc of district leader votes in the Democratic primary elections. That meant they no longer had the votes to keep control of the party at this fall's convention.

Brooklyn Democratic Party Chair Rodneyse Bichotte Hermelyn and her establishment cronies attempted to change the party rules in late August so more of her allies could vote for her to stay in power. Those rules were swiftly deemed illegal by a state Supreme Court judge.

There was much legal back and forth, a few defiant AI videos , and some spicy NY1 appearances before Bichotte Hermelyn announced she won't be running for reelection as chair after all, instead throwing her support behind an ally: Assemblymember Nikki Lucas.

This should clear things up for you.

Then in September, the party held a shambolic organizational meeting , where we pick up our cursed timeline:

Give us your email to read the full story

Sign up now for our free newsletters.

Sign up

64-Day Certificate Lifetimes Coming Feb 2027

Lobsters
letsencrypt.org
2026-10-08 15:06:25
Comments...
Original Article

By Sarah Gran ·

On February 10, 2027, all Let’s Encrypt subscribers will move to certificates with 64 day lifetimes by default unless they select an even shorter lifetime (45 or 6 days, as previously announced ). This means that any certificate we issue or renew on and after that date will have a 64 day validity period, and we expect the last 90-day certificate to expire on May 11, 2027. We will not revoke valid certificates as a part of this process.

We will switch to issuing 64 day certificates in our staging environment on October 14, 2026 to enable testing. We recommend testing in staging before the change takes effect in production.

If your renewals are automated and your client supports ACME Renewal Info (ARI), you should be all set since ARI allows Let’s Encrypt to tell your client when to renew (you can review your ACME client’s documentation to determine if ARI is implemented).

If your renewals are hard-coded to a date from expiration you should update them to renew at approximately ⅔ of the lifetime instead. Taking this step in preparation for 64 day lifetimes will lay the groundwork for default lifetimes of 45 days in 2028 . Grep for common hardcoded numbers like 83, 80 or 60 in cron jobs, wrapper scripts and runbooks if you’re not sure.

We will also be reducing the authorization reuse period from 30 days to 10 days. In 2028, the reuse period will shrink to seven hours. We are making this change to comply with a 2029 reduction in maximum validation reuse periods, and to remove the need for “CAA rechecking”, where we have to repeat part of the validation process if the validation data is more than 7 hours old. Unless you have specifically designed your ACME client to rely on validation reuse, you will not need to make any changes.

This is also an opportunity to automate certificate management processes like reload and deployment and to add alerting for renewal failures.

Rate limits will not be impacted by this change; you can learn more in our previous blog post .

This change will not affect ACME endpoints or our issuance chains.

We are moving to shorter certificate lifetimes because this reduces the risk of key compromise and mis-issuance. As a nonprofit we see it as part of our mission to make this change to advance security for everyone using the Web globally. We anticipate a smooth transition, but if you experience issues, our community forum and documentation are good resources.

The value of not getting to the point (2015)

Hacker News
ken.arneson.name
2026-10-08 15:04:56
Comments...
Original Article

I read somewhere recently, I forget where, that the purpose of people getting together for a conversation over a beer or coffee or lunch or dinner is that it the food and drink spare us from the burden of needing to have something to say throughout the whole conversation.

This was a revelation to me. All this time, I assumed that the primary purpose of lunch was lunch. All this time, I figured that I was just lousy at conversation because being an introvert made conversation awkward and laborious for me. For everyone else, conversation seems comparatively effortless. But it seems from this data that conversation must be harder for everyone else than I had assumed.

My oldest daughter is a freshman in college. She recently texted me and said she wanted to talk. I asked, what about? She got annoyed at me for asking.

I was clueless as to why. I guess the Dunning-Kruger effect applies to all of us, there’s always some area of life where we’re so incompetent we don’t even know we’re incompetent. This area, apparently, was one of mine.

She asked if we could just talk about something stupid. So I called her, and we talked about Donald Trump and the presidential race and stuff like that for a good long while. I didn’t ask about what was really bothering her.

Eventually, the conversation turned, and we finally got to talking about the thing she wanted to talk about. But that probably at least half an hour into the conversation. We segued slowly and organically from the stupid stuff into the real issue.

And this, too, was a bit of a revelation to me, that someone would not want to get straight to the point, that someone would need a nice long conversational warmup before they’d feel comfortable enough to be ready to talk about something more uncomfortable. I’m very much a get-to-the-point kind of person. I tend to say what I mean, or nothing at all.

Language is imprecise. Our feelings don’t always have direct translations into speech. It’s hard to explain what we feel, to say exactly what we mean. We have wants and desires and emotions, and we often try to rationalize those feelings. Those rationalizations are often logically incoherent. But it’s hard to see the incoherence of our own rationalizations because our points of view are so limited. And often (if we’re not falling prey to the Dunning-Kruger effect) we intuit that our rationalizations may be incoherent. So we’re cautious in what we say. We know that there can be social penalties for saying the wrong thing in the wrong way to the wrong person.

All this adds up to making the act of talking about something sensitive daunting. There is a vulnerability in speaking. That’s why our culture has all these rituals and conventions around conversation, like idle chit-chat and coffee and such: to build enough trust in the environment where we can feel comfortable enough to overcome the vulnerability inherent in speech.

I never fully understood this before. I feel like everyone else understands it, though, because they act as if they do. But if they do, it must be an intuitive understanding, a grokking, not an explicit fact that people state out loud. Otherwise, I probably would have heard someone say it explicitly sometime before in the almost 50 years I’ve been in this earth.

Having now finally come to this understanding, it occurs to me that perhaps this is the great flaw with Twitter, why everyone I know on Twitter seems to eventually run into a wall with it. The 140-character format pushes you to get straight to the point. There is no room for the idle chit-chat and sips of coffee and other conversational rituals that let us dance around the sensitive issues. Without these rituals that are built into real-life human-to-human conversation, the problems with speech that those cultural rituals are designed to prevent come flooding in.

There is so much hair pulling and teeth grinding about what people should and should not say online, and how they should or should not say it. And maybe all that hair pulling and teeth grinding arise because our online conversational cultures, and the technological platforms they reside on, have not had the time to evolve into something that works, the way that our real-life conversational culture has.

There are many, many more people who are clueless about how to behave in online conversations than there are people who are clueless about how to behave in offline ones. How I came to be the flipside of that, I don’t know.

And it also occurs to me that there is a value in stating explicitly the things that are mostly just intuited about human nature and human culture. I want to explore these sorts of things. There is a risk, though, a vulnerability, in stating these things. The people who intuitively grasp these things will feel as though I am insulting their intelligence by stating something so obvious it shouldn’t need saying. But it isn’t meant as an insult to their intelligence, it’s meant as an insult to mine. I need to say these things because I’m the one who doesn’t understand these things. I need them explained to myself.

Which is all a roundabout way of stating something that maybe could fit into a tweet: I plan to start saying things that aren’t obvious to me but may be obvious to others. Sorry if you fall into the latter category and I waste your time. Such is the risk of saying anything, ever. And sorry for the roundaboutness in getting to this point. I seemed to need it, for some strange reason.