Cover illustration

TheDaily Front

Issue No. #261009 Friday, October 9 2026 #261009 — FRIDAY, OCTOBER 9, 2026
A runtime changes hands, while the rest of the world debates who gets to hold the keys.
Friday, October 9, 2026 The Daily Front No. #261009 — Contents
30stories
9,296points
5,497comments
314kllm tokens
Assembled with 32 model calls — 241,347 tokens read, 72,762 written.

Highlights

Cloudflare acquires Deno

Cloudflare’s acquisition of Deno prompts a hard look at the future of the JavaScript runtime and its ecosystem.

Our $445M Series D

Oxide’s $445 million Series D arrives with an unusual boast for a startup: ordinary, taxable profit.

Nobel Peace Prize for 2026 to Navanethem Pillay

Navi Pillay receives the Nobel Peace Prize for a career devoted to international law, on a particularly fraught day for the ICC.

Python 3.15

Python 3.15 lands with interpreter improvements, a strengthened experimental JIT, and thousands of contributor commits.

No Man Is an Island

A searching essay asks whether AI-assisted work is weakening the human communities that sustain intellectual life.

From the Editor

There are days when the wires hum with deals, launches, and ever-larger figures; this is one of them. Yet the sharper story is about institutions—runtimes, courts, laboratories, and communities—and whether they can retain their purpose when the weather turns.

  1. Cloudflare acquires Deno3
  2. Our $445M Series D4
  3. Nobel Peace Prize for 2026 to Navanethem Pillay5
  4. Show HN: Let your AI agents paint big arrows, boxes and text on your screen6
  5. Keyboard differences between Windows and Macs7
  6. OpenAI fires three safety researchers for "mishandling research information"8
  7. Python 3.159
  8. No Man Is an Island10
  9. MXC - a sandboxed code execution system11
  10. Germany transforms former coal mines into Europe's largest lake landscape12
  11. Programming Isn't Special13
  12. 'Wallace and Gromit,' 90% Alone14
  13. What should we tell our students?15
  14. Ideas aren't getting harder to find (2022)16
  15. Reducing undefined behavior in the C language17
  16. Pointing AI at archives found a forgotten meteorite, lost rhinos, and more18
  17. The Hetzner Cloud network stack – history and technical overview19
  18. Sorry, I'm in a meeting20
  19. Typesafe AI raises $870M at $7.5B21
  20. Microsoft-Decision-1, our model for fast decision-making22
  21. YouTuber Says Cops Visited Him After He Built a Flock-Style Camera to Track Cops23
  22. Yandex Takes a Second Data Center Hit in 48 Hours24
  23. Imposing Sanctions on the International Criminal Court25
  24. A statement on the Tor Project's relationship with Mullvad26
  25. Triple-A Minesweeper27
  26. Show HN: Carrier-Explode: iPhone, Pixel and Galaxy carrier settings decoded27
  27. Show HN: Quake ported to safe Rust, playable in browser27
  28. US imposes sanctions on ICC hours after former judge wins Nobel Peace Prize27
  29. Iranian campaign planted fake articles in real U.S. publications using ChatGPT27
  30. M7.6 Earthquake in Panama27
The Daily Front Page 2 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Runtime Changes Hands
article

Cloudflare acquires Deno

by ilreb·▲ 1,106 points·570 comments·deno.com ↗
Deno is joining Cloudflare.

Deno is joining Cloudflare

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.

The Daily Front Page 3 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Capital for Machines
article

Our $445M Series D

by ahlCVA·▲ 614 points·275 comments·oxide.computer ↗
most startups don’t pay income tax because most startups aren’t profitable

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 most startups 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!

The Daily Front Page 4 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Peace Prize and the Court
article

Nobel Peace Prize for 2026 to Navanethem Pillay

by Anon84·▲ 450 points·231 comments·nobelprize.org ↗
exceptional courage and integrity has led the way towards a more comprehensive global legal order

Announcement, Nobel Peace Prize 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.

The Daily Front Page 5 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Agent at the Screen
show hn

Show HN: Let your AI agents paint big arrows, boxes and text on your screen

by franze·▲ 385 points·169 comments·github.com ↗
draws an arrow and a sign on top of every window

big-arrow-on-the-screen (bigarrow) is a macOS command-line tool, plus a skill for Claude Code and Codex, that draws an arrow and a sign on top of every window. Clicks go through, your keyboard focus stays put, and the arrow removes itself. MIT licensed.

CI License: MIT

A real macOS desktop, Hacker News of 2014-06-10 in Chrome, nine bigarrow arrows in nine colours from every side: same since 2007, already argued in 2014, not a lurker? log in, the article is in here, remember me? (Firefox 30), nothing. nothing changed. (a spiral, going round in circles), 20,000 devs 40,000 opinions, finally a bigger arrow, 12 years later: still no consensus

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: Ghostty may control your Mac"

One transparent window above everything, on every display and every Space. Drawing needs no macOS permission at all. One Swift binary: no daemon, no menu-bar icon, no account, no telemetry, and, we checked twice, no AI inside. It is an arrow.

Real apps, real use cases

Real apps on a real Mac (macOS 27), the real bigarrow, staged by scripts/real-scenes.sh.

macOS Desktop & Dock: stop "click wallpaper to show desktop"

An agent walks a human through the most complained-about Mac setting since 2023: one click on the wallpaper and every window flees; then 1. The apple. Yes, the fruit. 2. System Settings. Where settings go to hide. 3. Desktop & Dock. Not Wallpaper. Not Displays. This one. 4. Scroll. Further. It's always further. 5. 'Show desktop'. Nothing to do with Stage Manager. 6. 'Only in Stage Manager' means 'off'. Obviously. Then the wallpaper click: Nothing happens. Bliss.

"The most annoying change in Mac update history", fixed in six arrows (MP4).

System Settings: grant a permission

System Settings, Device Control and Data Access: a green arrow with a close button, Franz, switch this on: Terminal may control your Mac, and an orange zigzag ring on the plus button: Not in the list? Plus. Then find it.

open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
bigarrow start --element Terminal_Toggle --app "System Settings" \
  --text "Franz, switch this on: Terminal may control your Mac" --from right --color green --close-button
bigarrow start --element Add --role button --app "System Settings" \
  --text "Not in the list? Plus. Then find it." --from bottom-right --style ring --color orange --shape zigzag --size S

Keynote: a three-step how-to

Keynote: a purple ring, 1. Click Animate; an orange box, 2. Add an Effect; a teal zigzag on Play, 3. Press play. Bask in the applause.

bigarrow start --element Animate --app Keynote --role radiobutton --text "1. Click Animate" --from right \
  --style ring --color purple
bigarrow start --element "Add an Effect" --app Keynote --text "2. Add an Effect" --from right \
  --style box --corners sharp --color "#FF9F0A" --shape straight
bigarrow start --element Play --app Keynote --role button --text "3. Press play. Bask in the applause." \
  --from top --color teal --shape zigzag --size S

Print dialog: helping Mom save a PDF

TextEdit print dialog: a pink arrow, Mom, click PDF, then Save as PDF, and a small black one on Cancel: Not this one, Mom

bigarrow start --element PDF --role button --app TextEdit \
  --text "Mom, click PDF, then Save as PDF" --from bottom --color pink --border white-black
bigarrow start --element Cancel --role button --app TextEdit \
  --text "Not this one, Mom" --from bottom-right --color black --size S

Chrome: the right tab out of 14

Chrome, three windows, 14 tabs, a big indigo sign: It's this tab, not the other 13

bigarrow start --app "Google Chrome:Sourdough" --element "Sourdough - Wikipedia" --role radiobutton \
  --text "It's this tab, not the other 13" --from top --shape zigzag --color "#5856D6" --size L

--app "App:tab title" raises the window and selects the tab first.

Finder: "no, the other grid icon"

Finder: a black ring on the icon view button, Not this one, and a green box on the Group button: No, the other grid icon. This one.

bigarrow start --element "icon view" --role radiobutton --app Finder \
  --text "Not this one" --from top-left --style ring --color black --size S
bigarrow start --element Group --role menubutton --app Finder \
  --text "No, the other grid icon. This one." --from top --style box --color green

A real guide: allow screen recording

The guide as a 6-page PDF: page thumbnails on the left, page 1 large on the right, How to allow screen recording on a Mac, step 1 with an arrow at Privacy & Security

The whole guide as a 6-page PDF, every screenshot an arrow an agent drew. Download the PDF or read it here.

Copy & paste

{{value}} in the sign becomes a copy button. Click, paste.

A made-up sign-in page asks for a PIN; a blue arrow with a yellow border points at the empty field: Franz, copy & paste the PIN 482913 here, the PIN on a yellow copy button

The same moment after the click: the copy icon is a check, the PIN 482913 is pasted into the field

bigarrow start --element "PIN code" --role textfield --app "Google Chrome:Acme sign-in" --from right \
  --color blue --border-color yellow --text-color yellow --text "Franz, copy & paste the PIN {{482913}} here"

What is this actually for?

Fair question. Arrows have existed since roughly the Paleolithic. What changed: agents now do real work on your Mac, and sooner or later hit a step only a human may do, or one the human wants to learn.

  • "Click Allow." Permission prompts, OAuth consent, "Open with...?". The agent finds the button but must not, or cannot, press it. It can point.
  • "Your turn." 2FA, CAPTCHAs, passkeys, payments, signatures. It points, you decide, it continues.
  • "Paste this." A code, a URL, a command: on the sign with a copy button.
  • "I need you, and you're making coffee." --say reads the sign aloud. Your Mac will literally call you back to your desk.
  • "Show me how." Ask how to do something in Blender, and the agent points at each control in turn. A product tour, minus the product.
  • Helping someone else. On a parent's Mac or over a screen share, pointing beats "the button at the top, no, the other top".
  • Demos and docs. Highlight while recording, or render straight to a PNG with --png.
  • Debugging coordinates. Point at your Accessibility or Peekaboo coordinates and look. --dry-run --json says where it would point.

Not a screen annotator, not a click bot, not a screenshot tool. It never clicks, types or captures. It only points. Deliberately.

Install

brew install franzenhofer/tap/bigarrow
bigarrow install-skill          # teaches Claude Code (~/.claude/skills) and Codex (~/.agents/skills)

From source: swift build -c release (Xcode 16+, macOS 14+), binary at .build/release/bigarrow. The binary is pure Swift; scripts/ only records screenshots and runs tests.

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 --duration 10 (point 8 s, start 300 s, 0 = no limit) Start and stop start returns at once; stop (or stop --all) removes it The agent goes away the arrow ends with the agent process that drew it (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 (opt-in)

Targets: --at X,Y, --rect X,Y,W,H, --mouse, --window App[:title], --element Label --app App, --peekaboo ID --snapshot see.json. Coordinates are global top-left logical points, as Accessibility and Peekaboo report them; --display N makes them relative to one display.

--app App[:window or tab title] (or --window) first brings that app, window or Chrome/Safari tab to the front, because pointing at a window hidden behind your terminal is a special kind of unhelpful. If another app covers the target later, the arrow hides until it is visible again. --no-raise opts out. bigarrow elements --app X lists what --element can match; bigarrow doctor shows permissions and 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

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, for when it must be impossible to miss
  • --style arrow|ring|box (rings and boxes are outlines, the target stays visible), --size S|M|L, --corners round|sharp
  • --color red|orange|yellow|green|teal|blue|purple|pink|black|white|#RRGGBB
  • --border shadow|white-black|black: white border with drop shadow (default), a thin black edge instead of the shadow, or just a thin black outline
  • --border-color, --text-color, --edge-color, --close-color, --close-x-color; left out, each picks a readable colour
  • {{value}} in --text becomes a copy button; --close-button puts an X inside the sign's right end; --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

scripts/gallery.py renders every combination and zooms into every sign-to-shaft joint (junctions), because a seam at the joint was, apparently, unacceptable.

Creative arrows

Fake dialogs, real bigarrow, clean CI runner (BACKDROP_ARGS=--cover scripts/funny-scenes.sh). The dialogs are fake. The feelings are real.

Delete node_modules: the easiest yes of your life

Delete node_modules? Yes. Obviously.

--color green, because some decisions are easy

Cookie banner: the zigzag of mild urgency

Cookie banner: Franz, nobody reads these either

--shape zigzag --color orange

Software update: one lap of honour

Software update: Twirl. Then click.

--shape spiral: once around the sign, then to the button

2FA: find your phone

2FA: This is where you sigh and find your phone

--color purple

Friday deploy: the agent votes Cancel

Friday deploy: the agent strongly suggests Cancel

--close-button, because the human gets the last word

Save: three arrows, one button

Three arrows, one Save button

three starts, one button, zero ambiguity

Permissions: Terminal, not bigarrow

Grant Accessibility to Terminal, not to bigarrow

--style box --corners sharp, plus a lesson about macOS permissions

Starred by

GitHub stars Nearly 400 stars in the first two days, from people whose GitHub profiles list Apple, NVIDIA, AMD, SAP, Salesforce, ServiceNow, Booking.com, Mercedes-Benz, SUSE, Oxide Computer, Posit, CoreWeave, Weights & Biases, OpenRouter, Metabase, InstaDeep, Benchling, Stainless and Under Armour, plus Stanford, Johns Hopkins, KTH and Oak Ridge National Laboratory.

FAQ

Does it need Screen Recording or Accessibility?

Drawing: no. Some ways of finding the target do:

You use Permission --at, --rect, --mouse, --window App, --peekaboo, --app App none --element, elements, --until-click, --app App:title Accessibility --window App:title (macOS 26 hides window titles) Screen Recording, plus Accessibility to raise (not with --no-raise)

macOS grants these to the app that started bigarrow (Terminal, iTerm2, Ghostty, VS Code, Claude), never to bigarrow itself, so switch on that app. bigarrow doctor names it; a missing permission exits with code 4 and names the app and the settings pane.

It never takes the focus. How is it in front?

On top and focused are two different things on macOS. The arrow sits at screen-saver level, above windows, dialogs and full-screen apps, but never becomes the active window.

Will it steal my focus while I'm typing?

No. That was the hardest bug in the project: NSApplication.run() quietly activates a process without a terminal. bigarrow pumps events itself, 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 under the pointer to say so). Clicks on the target or near the head go straight to the app, without taking the focus.

Multiple displays? Full-screen apps? Stage Manager? Spaces?

Yes, yes, yes, yes. 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 % 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 with help. Chrome needs --force-renderer-accessibility (or VoiceOver on); it ignores the usual request (verified October 2026). Chrome's own toolbar always works. Otherwise point at page coordinates, which the skill explains.

Could an agent use this to trick me?

Say, by covering the Decline button? Not beyond what it can already do. An agent that runs shell commands as you can do far worse, so bigarrow gives it nothing new. Still, each checked by a test: boxes and rings are outlines, so the target stays visible; the sign keeps clear of the target (or overlaps it as little as possible); a click on sign or shaft removes the arrow; every arrow ends by itself. And the skill makes the sign say what your click does.

Why a skill? Is that a lot of tokens?

182 tokens, most of the time. That is the skill's description, the only part the agent always sees. The instructions, 1,398 tokens (Anthropic's token-count API, Claude Opus 5.5), load only when it decides to point; pane ids and look flags (1,008 more) only when it needs them.

Why not just use a 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 first (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

  • 104 automated tests: geometry, placement, joints, a golden image, copy buttons, recorded window-server, Accessibility and Peekaboo fixtures, and the real window server (click-through, focus never moves, stop timing). CI runs macOS 15; also passed on macOS 26 and 27.
  • 18 behaviour checks on a clean runner (visual.yml): clicks on the X, a copy button (the clipboard holds the value, the arrow stays), --until-click, --follow, raising and --no-raise, hiding while covered, Chrome tab selection, owner exit, stop --hook, --say, full-screen, Stage Manager, Spaces, second and 2x displays, unplugging mid-arrow, CPU.
  • 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)

skill/big-arrow/ (Agent Skills format, plus agents/openai.yaml for Codex) teaches the agent when to point, how to pick a target, to write a full sentence on the sign, to --say it when you are away, and to stop once you acted.

Plan, decisions, research

docs/plan/PLAN.md, docs/plan/TICKETS.md (generated from tickets.json), docs/decisions/, docs/research/, docs/verification/, docs/skill-tests/, CHANGELOG.md.

Prior art and thanks

Copy and check icons: Feather (MIT, notice). Peekaboo (https://github.com/openclaw/Peekaboo) and Nameplate (https://github.com/steipete/Nameplate) by Peter Steinberger showed the overlay recipe and the skill packaging. Neither points with a labelled arrow. bigarrow reads Peekaboo's see --json as a target source.

License

MIT. Point responsibly.

The Daily Front Page 6 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Keys Across Two Worlds
article

Keyboard differences between Windows and Macs

by sohkamyung·▲ 325 points·266 comments·unsung.aresluna.org ↗
What Windows calls Backspace, Mac calls Delete.

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 of much lesser significance than Control on Windows.

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.

(Just swapping the key caps is not enough. The keyboard also has to swap the scan codes it sends, since the code for Alt is the same as the code for ⌥, and the code for ⌘ is the same as the code for ⊞.)

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 note some of these are dead keys.)

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 browsers support Ctrl+R, too, and seem to be shifting to that being the default.

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 interactive elements:

On Mac, Tab jumps only to those interactive 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!

The Daily Front Page 7 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Safety Under a Cloud
article

OpenAI fires three safety researchers for "mishandling research information"

by trakkstar·▲ 320 points·204 comments·techcrunch.com ↗
warned that their dismissal signals a chilling effect

The ChatGPT application icon is displayed on a smartphone screen.

**Image Credits:**Samuel Boivin/NurPhoto / Getty Images

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.

The Daily Front Page 8 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Python’s New Number
article

Python 3.15

by ngoldbaum·▲ 290 points·86 comments·python.org ↗
5,643 commits from 1,012 contributors

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

  • PEP 661: Add sentinel built-in type
  • PEP 686: Python now uses UTF-8 as the default encoding
  • PEP 798: Unpacking in comprehensions
  • PEP 810: Explicit lazy imports for faster startup times
  • PEP 814: Add frozendict built-in type
  • PEP 829: Package startup configuration files
  • The experimental JIT compiler has been significantly upgraded, with 7-8% geometric mean performance improvement on x86-64 Linux over the standard interpreter, and 11-12% speedup on AArch64 macOS over the tail-calling interpreter
  • Improved error messages

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

  • PEP 728: TypedDict with typed extra items
  • PEP 747: Annotating type forms with TypeForm
  • PEP 800: Disjoint bases in the type system

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

macOS

Download macOS installer

Windows

Download Python install manager

Source release

Download XZ compressed source tarball

Version Operating system Description File size Sigstore SBOM SHA-256 checksum Gzipped source tarball Source release 41.7 MB .sigstore SPDX 438596cac081036d3c1d532ab7e7335eeb35567bc961749a0d5797176db0db68 XZ compressed source tarball Source release 34.0 MB .sigstore SPDX ba4bed1ba346b916890b76d9e320451420aa69f6408997d33c66482eeae3d575 Android embeddable package (aarch64) Android 23.1 MB .sigstore 571e4cf4e0aee3d1ab54a52ca3d4e6845b85ec0bb327f7debfb873172f445dab Android embeddable package (x86_64) Android 23.4 MB .sigstore 2413d51948d612cf42baefba25295bb83c2ed84df5726af6fe5bde2dec5d87e7 iOS XCframework iOS 80.6 MB .sigstore 68e98ab35cc0643ba3a227a8c7768da45c2a5e67dbe1bc26598537e96680fd19 macOS installer macOS for macOS 10.15 and later 84.9 MB .sigstore 7c7e7eca61cbfa5f0c6f80cd594cddbfd492f4e8b3fb87e3d9fa1efebaec43ed Windows installer (64-bit) Windows Recommended 43.3 MB .sigstore SPDX 67d9a63eb145a34aa939f02eadbf8c57f21fcdd6decb901ccac578d2d1f01d6f Windows installer (32-bit) Windows 41.6 MB .sigstore SPDX 222f79df7d2d5653871c09aef73dd77623514a356ca7f4a4f3ba5b9217e55e8a Windows installer (ARM64) Windows 42.6 MB .sigstore SPDX bb1c5123cc63d7bb37962ea7bf65e2b06389be9e5d48b6b532346d42ae487c4f Windows embeddable package (64-bit) Windows 13.1 MB .sigstore SPDX a6999bcbcbe56f937159ef79c2630260eca99f65f7860bc5cd20430324079a44 Windows embeddable package (32-bit) Windows 11.4 MB .sigstore SPDX da1ca8f1a491444b2a227b898caa9c44537ac27dcf27cff58347f3b4119f79ad Windows embeddable package (ARM64) Windows 12.4 MB .sigstore SPDX abedaa8460572f9bade5e332db5ee0dc95c2dbf6c8dec687a1f03c3e6cd7f7d4 Windows release manifest Windows Install with 'py install 3.15' 15.0 KB .sigstore ebbd6a12b77ee2cbba5bf9fbb034c609c8336877823f7989126be10a237c11df

The Daily Front Page 9 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — No One Works Alone
article

No Man Is an Island

by zetalyrae·▲ 265 points·177 comments·borretti.me ↗
individual intellectual activity can only be sustained in an intellectual community of other humans

Post image.

Detail from Automat, Edward Hopper, 1927.

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.

Why We Underrate Intellectual Community

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.

The Daily Front Page 10 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Container Desk
repository

MXC - a sandboxed code execution system

by nreece·▲ 185 points·83 comments·github.com ↗
★ 2,444⑂ 122 forks Rust

Policy-driven, layered isolation and containment

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
  • Container lifecycle operations: Provision, start, execute, stop, and deprovision persistent containers
  • Rust, .NET, and Node SDKs: Versioned APIs for create-and-run execution and container lifecycle operations
  • 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 / ..."]

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, required version 1.93 as specified 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
docs/glossary.md Plain-English definitions of consumer terms
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.

The Daily Front Page 11 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — From Coal Pits to Lakes
article

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

by ohjeez·▲ 184 points·102 comments·euronews.com ↗
creating a watery landscape almost as large as Italy's Lake Como

In eastern Germany, several lakes merge into one large landscape.

In eastern Germany, several lakes merge into one large landscape. - Copyright Foto: Peter Radke // Tourismusverband Lausitzer Seenland e.V.

Eastern Germany's mega complex of artificial lakes created from disused coal mines will reach a new milestone this summer.

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.

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'.

A former lignite mining area is gradually being transformed into a holiday region.

A holiday region is growing step by step from a former lignite mining area. Foto: Tourismusverband Lausitzer Seenland, Kathrin Winkler

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.

Floating holiday homes on Lake Geierswald.

Floating holiday homes on Lake Geierswald. Foto: Tourismusverband Lausitzer Seenland e.V. Nada Quenzel

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.

In summer, five lakes will be connected by canals and will be navigable throughout.

In summer, five lakes will be connected via canals and will be navigable throughout. Tourismusverband Lausitzer Seenland, Foto: Kathrin Winkler

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.

Aerial view of the future navigable lake network.

Aerial view of the future navigable lake network. LMBV, Steffen Rasche

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.

The Daily Front Page 12 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Case for Craft
article

Programming Isn't Special

by ingve·▲ 180 points·201 comments·blog.glyph.im ↗
Programming isn’t special. It’s just Art

Artists understand that AI is bad for art. Why don’t programmers understand that we are artists?

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 from “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.

The Daily Front Page 13 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Wallace, Gromit, and One Animator
article

'Wallace and Gromit,' 90% Alone

Nick Park’s time on A Grand Day Out

Plus: learning by doing, newsbits.

A still from A Grand Day Out (1989)

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!

1. In the attic

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

Nick Park working on an early scene from A Grand Day Out

Nick Park working on an early scene from A Grand Day Out, courtesy of The Making of a Grand Day Out

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

Some of Park’s early test footage for Gromit

An early Wallace test

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

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

Early Nick Park sketches for Wallace and Gromit, courtesy of The World of Wallace & Gromit

Nick Park concept pieces for A Grand Day Out

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

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

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

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.

2. Animation news

2.1: A new old way to learn

A still from Unboxed (2025)

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

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.

2.2: Newsbits

  • 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.

3. Last word

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!

The Daily Front Page 14 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — A Letter to the Students
article

What should we tell our students?

by sajid·▲ 156 points·236 comments·terrytao.wordpress.com ↗
Keep calm and carry on studying math.

[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.

The Daily Front Page 15 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — The Optimists’ Desk
article

Ideas aren't getting harder to find (2022)

by rafaelc·▲ 127 points·58 comments·experimental-history.com ↗
You can still discover stuff, I promise

You can still discover stuff, I promise

Photo

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.

1. Bias check

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.

2. We’ve been wrong about this before

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:

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

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.

3. Discoveries beget more discoveries

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:

4. New discoveries replace and compress old ones

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.

5. Things change, which means new discoveries to make

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.

6. Lots of the old discoveries weren’t even right!

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.

7. New tools allow us to answer old questions

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.

Do these ideas seem that hard to you?

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.

Science is like elevators

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.

How to stop science

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.

A refuge for cowards

“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.

APPENDIX: the technical objections

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.

The Daily Front Page 16 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Making C Less Perilous
article

Reducing undefined behavior in the C language

by signa11·▲ 124 points·155 comments·lwn.net ↗
whether it can eventually be made into a memory-safe language

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.]

The Daily Front Page 17 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Archives, Searched Anew
article

Pointing AI at archives found a forgotten meteorite, lost rhinos, and more

by piratebroadcast·▲ 117 points·56 comments·jessewaites.com ↗
It Found a Forgotten Meteorite, Lost Rhinos, and Unrecorded Volcanic Eruptions.

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 by my machine assistants) 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.

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 Daily Front Page 18 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Inside the Cloud Network
article

The Hetzner Cloud network stack – history and technical overview

by cnkk·▲ 104 points·27 comments·hetzner.com ↗
all cloud products require versatile and reliable connectivity options

HO-Blog-hcnet-1.webp

TL;DR

All cloud products require versatile and reliable connectivity options, so that our customers and potentially their customers can reach the services running in our network. Since the start of the vServer product, we had different technologies to provide that connectivity, with all of them relying on hosts rather than a smart network. With the launch of Hetzner Cloud and the introduction of network features like Private Networks and Firewalls, we introduced Open vSwitch. We’ve built a custom solution to orchestrate Open vSwitch, and especially the necessary flows to handle traffic. We’ve designed our network stack(s) as solutions we own and can operate ourselves, and to have building blocks, where we can further build upon.

This blog post is the first part of a series covering the evolution of the network stacks behind Hetzner Cloud and their architecture. In this post, we will look into the development we’ve done until today, and how the current Open vSwitch-based network stack works. Although the network stack is similar for Cloud servers and Load Balancers, we will focus on Cloud servers and virtualization hosts (VM hosts), as they are providing more services and features.

For brevity, we will keep the Cloud Control Plane, which manages all servers, Load Balancers, Private Networks, etc. out of scope, and will only look into the network stack on the hosts.

How we roll

All cloud products require versatile and reliable connectivity options, so that our customers and potentially their customers can reach the services running in our network.

At Hetzner, we generally believe in solutions we own and can operate ourselves, and in having building blocks, where we can further build upon. The network, and especially the network connectivity for our cloud offerings, is no different.

Although technologies changed over the years, we’ve always preferred solutions, where the moving parts are on the hosts, rather than having a smart and complex physical network setup. As a result, we designed the setup in a way, that the physical network is providing stable IP connectivity to the hosts, and the hosts offer higher level network functions. These include Firewalls, Private Networks, and auxiliary infrastructure services.

By running these services and network functions on the hosts, we gain a lot of freedom and flexibility when designing and building our product, and are not limited to what hardware vendors offer. This way, we have a clear separation of concerns between teams and technologies, and can contain the blast radius to a single host, in case of (most) errors. This also means that we can and must fully own the solution and adjust it to our needs, but that’s in our DNA anyway.

A bit of history

Historically, Hetzner has been using different technologies to provide connectivity for its cloud products.

In the early days, the Hetzner vServers launched in 2011 started out with HDDs, native Linux bridges, and static routes. It provided dual-stack connectivity with up to 1 Gb/s per host. In the end, there were approximately 25,000 instances running with this setup.

The follow-up product launched in September 2015 with a hyper-converged Ceph-based setup. It switched to dynamic routing via BGP and a Linux bridge setup using 1:1 NAT for IPv4 and fully routed IPv6 prefixes. This enabled better IP mobility and host maintenance without customer impact. In 2016, the links to the hosts were upgraded to 2x 10 Gb/s. This setup lasted until 2018 and grew to about 50,000 instances.

When Hetzner Cloud launched in 2018, we dropped NAT and moved to direct IPv4 routing. In July 2019, we introduced an Open vSwitch-based data plane, and added support for private cloud networks based on VXLAN encapsulation. In November 2020, we started migrating the public network part over to Open vSwitch, allowing us to launch stateful cloud firewalls based on Open vSwitch flows and netfilterin March 2021.

Ingredients of a VM host

We’ve already established, that important parts of the network stack are running on the VM hosts; but what do they have to provide for a cloud server to operate?

For the majority of servers, Internet reachability is required, so the system and its services can be accessed from home or abroad. Some servers use Private Networks, either instead of, or alongside public network , which connect servers, Load Balancers, and possibly dedicated servers via a private and virtual network that only your systems can access. Private network traffic is encapsulated using Virtual eXtensible LAN (VXLAN) and a unique Virtual Network Identifier (VNI) per private network. The host network stack ensures that only members attached to the respective private network can send or receive traffic.

To control access to your services available from the Internet, we provide the cloud Firewall feature. It allows controlling access to certain ports or protocols of the server, or can limit which traffic can leave the server. This should happen as close to the server as possible, hence on the host. Building stateful firewalls centrally, would require additional hardware and network overlays to transport the “clean” traffic to the servers, and add much complexity for highly available, central connection tracking.

By default, our cloud server images are configured to use the Dynamic Host Configuration Protocol (DHCP) for dynamic configuration of IPv4 addresses and routes. Hence, we have to provide a DHCP server, so servers can request their IPv4 networking configuration for public and private network interfaces.

Within most images, cloud-init is used to configure some parts of the system, for example configure IPv6 networking, trigger DHCP for private network interfaces, attach cloud Volumes, etc. For these tasks, cloud-init has to query information about the local system or user-specific configuration bits from our metadata server available at http://169.254.169.254/. Besides cloud-init, the metadata server is used by many integrations, including but not limited to our CSI driver, hc-utils, distribution tooling like Flatcar Linux's Afterburn and Ignition, or Talos Linux.

Both the DHCP and metadata servers are running locally on each VM host for maximum resiliency and availability.

Besides these user-facing services, the VM hosts run a bunch of internal services, which make sure your servers are up and running, the network stack gets the correct information to configure connectivity, and our monitoring knows what’s happening.

In this post, however, we’ll focus on the network stack and will have a deeper look into its inner workings.

Open vSwitch

Most of the network data path is realized by Open vSwitch, or in short OVS, an Open Source multilayer virtual switch. Its data path is included in the Linux Kernel for a long time, and packages for the user space / control plane are available for all major Linux distributions.

It is the default network stack for some virtualization environments, and many off-the-shelf solutions come with OVS support. This includes but is not limited to Proxmox VE, Open Stack, and oVirt, to name a few popular ones. We however, don’t use any of these, but rather manage KVM and all surrounding components using custom-built tooling.

Open vSwitch is a versatile networking solution, offering a vast amount of features, of which we’re only using a subset for our use cases and setup. It uses OpenFlow, an open protocol built to configure the data plane of network devices and denote how packets should be forwarded. For each direction of communication, there has to be a flow specifying how packets should be handled, and where they need to be sent.

This can be exact matches, e.g. for communication with the gateway via ARP, NDP, ICMP, etc., traffic destined for other members of a private network, or connections to a service on the Internet.

Open vSwitch orchestration - Flusskrebs

To provide network connectivity for our servers and Load Balancers, and to configure any Firewall(s) applied to a server, we have to install the required flows for Open vSwitch to provide these connections and features.

A common solution to orchestrate Open vSwitch would be the Open Virtual Network (OVN) control plane project, which was started alongside OVS itself and is intended for maintaining a fleet of nodes running Open vSwitch. It provides an abstraction layer, where one can configure logical routes and switches, which then get translated into OpenFlow.

At the time when Open vSwitch was introduced into the Hetzner Cloud stack, we decided to not go down this road, and rather built our own custom solution called Flusskrebs (literally translates to “river crab” or “flow crab” 🦀). It is written in Python, provides a REST API used by the host-local part of our Cloud control plane, and configures the flows each VM or Load Balancer needs to work properly. This includes flows to implement any Firewall rules configured by the user or our backend, e.g., for blocking egress SMTP by default.

The controller also acts as the central DHCP server for private network interfaces on each host.

VM host network stack

With the general architecture ideas and these building blocks in mind, let's have a look at our VM host network stack in more detail. The following figure shows a simplified overview of the inner working of the network stack of a VM host.

HO-Blog-hcnet_Content-hcnet-vm-host-legacy-Hetzner-Blog.svg

Most hosts are using two 10 Gb/s uplink interface, which are bundled into a link aggregation group (LAG) or bond on Linux using LACP, connected to two physical switches forming a virtual chassis for increased resilience and bandwidth. To increase resilience even further, we’ve started migrating to two native routed uplinks using BGP, connected to two independent switches earlier this year. Note, that the uplink interfaces are not directly connected to the OVS bridge, but the Linux system routes between the uplinks and OVS. This way, the host reachability is independent of OVS, and it eases host installations and maintenance.

A central Open vSwitch bridge acts as the main component delivering network connectivity and features, and all cloud servers on the host are connected to it. Each server can have one public network interface, and additionally up to three private network interfaces. The following templates are used to render flows allowing egress traffic from the server:

# Only process packets with correct source MAC address
table=0, priority=9999, in_port={vm_port_no}, eth_src={mac}, actions=set_field:1->reg0,set_field:{vm_port_no}->reg5,resubmit(,1)
# Only accept packets with an IPv4/IPv6 address associated with the server
table=3, priority=9999, in_port={vm_port_no}, ip_src={ip}, ip, actions=resubmit(,4)
table=3, priority=9999, in_port={vm_port_no}, ipv6_src={ip}/64, ipv6, actions=resubmit(,4)
table=3, priority=9999, in_port={vm_port_no}, arp, arp_op=2, arp_spa={ip}, actions=resubmit(,4)

Ingress traffic towards the server is forwarded using the following flows, one for each IPv4 or IPv6 prefix respectively. The host network stack identifies itself to the VM using a well-known “virtual gateway MAC” which is always d2:74:7f:6e:37:e3.

table=22, priority=9999, in_port={internet_port_no}, ip, ip_dst={ip}, actions=mod_dl_src:d2:74:7f:6e:37:e3,{vm_port_no}
table=22, priority=9999, in_port={internet_port_no}, ipv6, ipv6_dst={ip}/64, actions=mod_dl_src:d2:74:7f:6e:37:e3,{vm_port_no}

Infrastructure services, like DHCP and metadata servers are also connected to Open vSwitch and are running alongside each server inside a dedicated Linux Network Namespace per server.

Note that the udhcpd DHCP server shown in the drawing above is only responsible for any server’s public interface. As described above, the Flusskrebs controller contains a central DHCP server handling all private network interfaces. The flows to connect the public DHCP server are equally straightforward:

table=1, priority=9999, in_port={vm_port_no}, udp, udp_dst=67, actions={service_port_no}
table=1, priority=9999, in_port={service_port_no}, udp, udp_src=67, actions={vm_port_no}

Alongside Open vSwitch, the Linux netfilter connection tracking is being used to realize the stateful cloud Firewall feature. With a global shared connection tracking table, we have to prevent it from overflowing and ensure fair use for all servers and customers. This is done by ctcount, another internal project, which keeps track of connection tracking entries, and enforces the limit of up to 80,000 active, concurrent connections per server. If a server reaches this limit, no additional connections can be opened, until a previous one has been closed.

Status Quo

This Open vSwitch-based data plane has served us well and mostly still does today, even with over a million cloud servers. However, we have reached some limitations and wanted to improve scalability, resiliency, and flexibility with a more specialized network stack. Over the last years, our SDN team has been building said solution that's tailored to our needs while being easy to operate and being a strong foundation for new features, such as IPv6 for private networks.

We’ll cover the next steps of our journey, our latest fully self-built network stack, and how it works, in the next part of this series. So stay tuned!

At Hetzner Summit, we had a session "The new Hetzner Cloud network stack - A technical deep dive into how we deliver your packets", where we talked about our current stack and what we’ve built. The recordings are available on the Summit page.

The Daily Front Page 19 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Automation, Valuation, and Evasion
article

Sorry, I'm in a meeting

by splintersio·▲ 799 points·245 comments·iminafleeting.com ↗

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.

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 Daily Front Page 20 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Automation, Valuation, and Evasion
article

Typesafe AI raises $870M at $7.5B

by tosh·▲ 297 points·225 comments·typesafe.ai ↗

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.
The Daily Front Page 21 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Automation, Valuation, and Evasion
article

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

by lisajaloza·▲ 159 points·56 comments·commandline.microsoft.com ↗

Our new decision-scoring model delivers top performance in latency and quality on structured decision tasks to outperform both LLMs and other decision models.

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 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.

The Daily Front Page 22 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Power, Surveillance, and Access
article

YouTuber Says Cops Visited Him After He Built a Flock-Style Camera to Track Cops

by gumby·▲ 469 points·260 comments·gizmodo.com ↗

It turns out that the gander is not actually super keen on what's good for the goose.

Anthony Sistilli and his unexpected visitors

Anthony Sistilli and his unexpected visitors © Anthony Sistilli / YouTube

In news that will surprise no one, it turns out that police are only too happy to use automatic license plate recognition (ALPR) cameras—the kind made infamous by Flock—to track ordinary citizens, but are considerably less enthusiastic about citizens using the same technology to track them.

While ALPR technology is not new, its use has exploded over the last few years, with Flock at the forefront of both widespread adoption and resultant controversies. There has been story after story about misuse of the data collected by such cameras, whether it’s stalking ex-partners, harassing immigrants, or ruining the lives of completely random people. It’s little surprise, then, that police might be leery of having ALPR devices pointed at them: they know only too well how the data gathered by these devices can be, and is, misused.

This point was demonstrated recently by Canadian software engineer and YouTuber Anthony Sistilli, of Brampton, Ontario, a city that recently spent 2 million Canadian dollars on “high-resolution cameras, along with automated licence plate recognition technology.” A month or so ago, Sistilli built his own ALPR camera and set it up to track the movement of police cars. He posted several videos on TikTok about the camera, explaining how he built it and how it works, describing it as “a personal Flock surveillance camera to Flock the Flockers.”

@anthonysistilli

i built a personal flock surveillance camera to flock the flockers (only tracks police cars)

♬ original sound – Anthony sistilli

Local police got wind of this, because according to a video posted on YouTube earlier this week, two officers from Peel Regional Police allegedly turned up at Sistilli’s front door to ask what his “intentions” were for the data he gathered. In this video, Sistilli points out the rich irony of the situation: “One of [the officers] took the time to specifically mention how scary it would be for them, because people would be able to find out where they lived, when they got on their shift and what they were doing throughout the day, and that that type of powerful information could put them personally at risk [from] any bad apples that might want to track them down.”

Sistilli’s long-form YouTube video uses the visit as a jumping-off point for an extensive discussion of ALPR cameras and their use, looking at how companies like Flock market their products in an aggressive (and, arguably, deceptive) manner to municipalities, whether they actually reduce crime (go on, guess), the lack of transparency about the collection and retention of data, and a bunch of other issues around the technology. It’s well worth watching.

Peel Regional Police did not immediately respond to Gizmodo’s request for comment.

The Daily Front Page 23 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Power, Surveillance, and Access
article

Yandex Takes a Second Data Center Hit in 48 Hours

by ortusdux·▲ 204 points·287 comments·united24media.com ↗

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.

“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.

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.

The Daily Front Page 24 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Power, Surveillance, and Access
article

Imposing Sanctions on the International Criminal Court

by TechTechTech·▲ 170 points·221 comments·state.gov ↗

For decades, Republicans and Democrats alike rejected the idea that the International Criminal Court had the power to prosecute American citizens, military servicemembers, or political leaders. America never joined the court. We don’t need it. And we don’t want it.

But globalist “experts” an ocean away don’t care what American citizens think. They want the ICC to do more, including the prosecution of American citizens. Servicemembers defending their country, Border Patrol agents protecting our nation, and elected leaders ensuring our national security. They want more power, and they want it at our expense.

President Trump will never allow the International Criminal Court to prosecute Americans. That is why, today, the United States is sanctioning the International Criminal Court. We will ban transactions with this rogue court, cutting off their resources and crippling its ability to operate.

We have been clear for over a year as to the basic gestures of good faith we have expected from the court. We exercised discretion and deferred this designation out of respect for our relationships and in hopes that the ICC would change course or would otherwise be restrained by States Parties. However, neither the ICC nor States Parties have yet taken meaningful steps to address our concerns.

Despite their inaction, we hold out hope for a diplomatic solution. We have structured this action to provide an opportunity for States Parties to negotiate and present a solution to address our concerns. If these efforts do not bear fruit, we will continue to adjust accordingly.

Our message is clear: the United States and its people are not subject to the jurisdiction of the ICC. Both parties agree on this, but only President Trump has the resolve to take the action needed to end this threat for good. Either the ICC will end its threats, or we will end the ICC. We expect our allies, many of whom are part of the ICC and that rely on American servicemembers for their defense, to rein in the court.

If they do not, the United States will continue its campaign to dismantle the ICC, brick by brick, until Americans are threatened no longer.

The ICC is being designated pursuant to section 1(a)(ii)(A) of Executive Order (E.O.) 14203.

The Daily Front Page 25 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Power, Surveillance, and Access
article

A statement on the Tor Project's relationship with Mullvad

by runtimewire·▲ 118 points·279 comments·blog.torproject.org ↗

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.

The Daily Front Page 26 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Also on the Front Page
The Daily Front Page 27 of 28
Friday, October 9, 2026 The Daily Front No. #261009 — Colophon

That's the Front for Today

Issue No. #261009 — Friday, October 9, 2026 — went to press 2026-10-10 at 03:40 UTC.

About This Magazine

The Daily Front is a daily digital magazine assembled from the stories that reached the front page of Hacker News on Friday, October 9, 2026. Headlines, points, and comment counts are recorded as they stood at press time. All articles remain the property of their original authors — every piece links back to its source and its discussion thread.

How It Was Made

Fetched, cleaned, and typeset by an automated pipeline. An editor model laid out the pages and chose the highlights; a second read a handful of the day's stories and briefed the cover illustrator — 32 model calls and 314k tokens in total. Set in Jacquard 12, Playfair Display, Source Serif 4, and IBM Plex Mono, all served via Google Fonts under the SIL Open Font License.

The Cover

The cover illustration was commissioned with this prompt:

In a cavernous courtroom transformed into a network operations room, an older South African Indian woman in a judge’s robe stands before a towering rack of servers, holding a heavy ring of keys above an open firewall cabinet. Blue and red Ethernet cables branch through compact switches toward humming virtual-machine hosts, while sealed crates of computer components crowd the benches behind her. On the floor, a narrow path of cables passes through a metal gate she has just unlocked.

Japanese woodblock-inspired cover image in flat, layered carved-print forms with visible paper and wood grain, misty dawn illumination, and a deliberate palette of deep indigo, oxidized vermilion, muted sea-green, warm ivory, and charcoal black; preserve the cavernous courtroom transformed into a network-operations room, the older South African Indian woman in judge’s robes standing before the towering server rack, her heavy ring of keys raised above the open firewall cabinet, blue and vermilion Ethernet cables branching through compact switches toward humming virtual-machine hosts, sealed computer-component crates crowding the benches, and the narrow floor cable path passing through the metal gate she has just unlocked.

Absolutely no text, letters, numbers, readable symbols, or logos anywhere in the image. Keep the main image subject primarily below the upper 10% of the composition, where a title may be overlaid; the scene may extend naturally underneath that title area.

Production Ledger

StageModelCallsTokens InTokens Out
extractgpt-5.6-luna 28 220,954 68,643
layoutgpt-5.6-terra 1 18,568 2,416
covergpt-5.6-luna 2 1,543 331
covergpt-image-2.5-flare 1 282 1,372

The Publisher

Published by Johnny.

Support the Press

If The Daily Front brightens your morning, consider supporting its publisher.

Credits & Contact

All content — articles, posts, comments, and the images within them — belongs to its original authors and is reproduced here to point readers back to the source. Full credit goes to those creators; every item links to its original and its Hacker News discussion.

If you are an author and would like your content removed from an issue, write to hi@johnnys.page and it will be taken down.

Feedback is always welcome at the same address: hi@johnnys.page.

Credit where credit is due.

Every page of this issue began as someone else's work — these are the original sources, linked in full.

  1. Cloudflare acquires Deno by ilreb — deno.com·HN discussion ↗
  2. Our $445M Series D by ahlCVA — oxide.computer·HN discussion ↗
  3. Nobel Peace Prize for 2026 to Navanethem Pillay by Anon84 — nobelprize.org·HN discussion ↗
  4. Show HN: Let your AI agents paint big arrows, boxes and text on your screen by franze — github.com·HN discussion ↗
  5. Keyboard differences between Windows and Macs by sohkamyung — unsung.aresluna.org·HN discussion ↗
  6. OpenAI fires three safety researchers for "mishandling research information" by trakkstar — techcrunch.com·HN discussion ↗
  7. Python 3.15 by ngoldbaum — python.org·HN discussion ↗
  8. No Man Is an Island by zetalyrae — borretti.me·HN discussion ↗
  9. MXC - a sandboxed code execution system by nreece — github.com·HN discussion ↗
  10. Germany transforms former coal mines into Europe's largest lake landscape by ohjeez — euronews.com·HN discussion ↗
  11. Programming Isn't Special by ingve — blog.glyph.im·HN discussion ↗
  12. 'Wallace and Gromit,' 90% Alone by vinhnx — animationobsessive.substack.com·HN discussion ↗
  13. What should we tell our students? by sajid — terrytao.wordpress.com·HN discussion ↗
  14. Ideas aren't getting harder to find (2022) by rafaelc — experimental-history.com·HN discussion ↗
  15. Reducing undefined behavior in the C language by signa11 — lwn.net·HN discussion ↗
  16. Pointing AI at archives found a forgotten meteorite, lost rhinos, and more by piratebroadcast — jessewaites.com·HN discussion ↗
  17. The Hetzner Cloud network stack – history and technical overview by cnkk — hetzner.com·HN discussion ↗
  18. Sorry, I'm in a meeting by splintersio — iminafleeting.com·HN discussion ↗
  19. Typesafe AI raises $870M at $7.5B by tosh — typesafe.ai·HN discussion ↗
  20. Microsoft-Decision-1, our model for fast decision-making by lisajaloza — commandline.microsoft.com·HN discussion ↗
  21. YouTuber Says Cops Visited Him After He Built a Flock-Style Camera to Track Cops by gumby — gizmodo.com·HN discussion ↗
  22. Yandex Takes a Second Data Center Hit in 48 Hours by ortusdux — united24media.com·HN discussion ↗
  23. Imposing Sanctions on the International Criminal Court by TechTechTech — state.gov·HN discussion ↗
  24. A statement on the Tor Project's relationship with Mullvad by runtimewire — blog.torproject.org·HN discussion ↗
  25. Triple-A Minesweeper by robin_reala — minesweeper.mikelacher.com·HN discussion ↗
  26. Show HN: Carrier-Explode: iPhone, Pixel and Galaxy carrier settings decoded by simplyalec — carrierexplode.com·HN discussion ↗
  27. Show HN: Quake ported to safe Rust, playable in browser by ilreb — quake-srp.pages.dev·HN discussion ↗
  28. US imposes sanctions on ICC hours after former judge wins Nobel Peace Prize by poly2it — reuters.com·HN discussion ↗
  29. Iranian campaign planted fake articles in real U.S. publications using ChatGPT by cainxinth — washingtonpost.com·HN discussion ↗
  30. M7.6 Earthquake in Panama by gslin — earthquake.usgs.gov·HN discussion ↗

Browse all issues in the archive →