Cover illustration

TheDaily Front

Issue No. #261007 Wednesday, October 7 2026 #261007 — WEDNESDAY, OCTOBER 7, 2026
Moon software, machine minds, and a web still arguing over the fine print.
Wednesday, October 7, 2026 The Daily Front No. #261007 — Contents
30stories
8,493points
4,413comments
335kllm tokens
Assembled with 34 model calls — 268,401 tokens read, 66,426 written.

Highlights

Margaret Hamilton has died

A remembrance of Margaret Hamilton, whose Apollo software work helped define software engineering itself.

Claude Haiku 5.5

Anthropic presents a faster, cheaper Haiku model for the high-volume work of the AI economy.

Shipping JPEG XL in Chrome

Chrome restores JPEG XL to the browser conversation, with modern compression and HDR in tow.

Navier–Stokes Lost in Translation

A warning from formal methods: a Lean-verified translation is not necessarily the proof its prose claims to be.

Hackers obtain counterfeit TLS certificates for Google and other large services

Compromised country-code registries show how DNS control can become counterfeit TLS certificates.

From the Editor

The day’s wires bring both elegy and acceleration: Margaret Hamilton’s pioneering era meets a fresh barrage of smaller, faster, more pervasive machine intelligence. Elsewhere, the old infrastructure reminds us that every grand system—from certificates to card networks—rests on rather human arrangements.

  1. Margaret Hamilton has died3
  2. Claude Haiku 5.54
  3. GPT‑6 and Intelligent UI for everyone5
  4. Shipping JPEG XL in Chrome6
  5. Strands Decider 2B: a small, open-source, decision model7
  6. Navier–Stokes Lost in Translation8
  7. The Mathocalypse9
  8. Anti-patterns in software blogging10
  9. Push ifs up and fors down: The idiom, its algebra, and its limits11
  10. Nobel Prize in Chemistry 2026 to Henri B. Kagan and Kenso Soai12
  11. AI-assisted proof of optimal packing for 11 squares13
  12. Visa, Mastercard, major banks facing new litigation over 'anticompetitive' fees14
  13. Hackers obtain counterfeit TLS certificates for Google and other large services15
  14. ESP32-C3 Adblock16
  15. God of War on PSP, recompiled to WebAssembly and running in the browser17
  16. Across the Globe, People Increasingly Say Social Media Is Harming Democracy18
  17. Couple was swatted 55 times in 2 years over a post about Norm Macdonald19
  18. The art of defusing a second world war bomb20
  19. Why were Victorian elites so effective?21
  20. Incident with Git Operations, Pull Requests and Actions – Resolved22
  21. Docker Agent23
  22. Show HN: Bigwords.page – Turn any screen into a sign. The URL is the app24
  23. A font recreated from photographs of classic Commodore 64 keycaps25
  24. Animated ASCII Art for Web Pages26
  25. Show HN: A walkable 3D art history museum built from Wikipedia26
  26. Google Playground: Create and play custom games27
  27. Google Playground28
  28. PS5 Jailbreaks Are Escalating at an Unprecedented Pace29
  29. Meta and Microsoft take steps to reduce employee usage of Claude AI30
  30. House with 15m underground tunnels for sale for 300k31
The Daily Front Page 2 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Front Page — A Pioneer Remembered
article

Margaret Hamilton has died

by muglug·▲ 1,052 points·117 comments·news.mit.edu ↗
There was no choice but to be pioneers.

Over two decades at MIT, Hamilton forged new paths in computer science and engineering. Her groundbreaking work included leading the team that programmed the first computers that took humans to the moon.

Portrait headshot of Margaret Hamilton late in life

“Looking back, we were the luckiest people in the world,” Margaret Hamilton said of her time as an MIT software engineer working with NASA’s Apollo program, which aimed to land the first humans on the moon. “There was no choice but to be pioneers.”

Image: Toan Trinh, MIT Technology Review

Collage of 3 grayscale photos of a young Margaret Hamilton standing beside stack of code books that, all together, are about as tall as she is.

A now-famous photo of Margaret Hamilton standing beside listings of the software developed by the Lunar Module and Command and Service Module on-board flight software teams were taken at MIT in 1969. Hamilton led both teams, and more than 400 people, working on Apollo’s software.

Image: MIT News, with photos via MIT Museum

Grayscale photo of Norman Sears, Margaret Hamilton, Phyllis Rye, and Ain Laats conversing at a busy desk in an MIT office in the 1960s.

MIT engineers (left to right) Norman Sears, Margaret Hamilton, Phyllis Rye, and Ain Laats discuss their work on the Apollo 8 mission. On the blackboard is a program for Lunar Command-Module navigation.

Image: MIT Museum

Greyscale photo of a young Margaret Hamilton posing in a mockup of an Apollo capsule

For a publicity photo taken at MIT, Hamilton smiled as she flipped a switch in a mockup of an Apollo 12 command module.

Image: MIT Museum

Barack Obama pins a Presidential Medal of Freedom on Margaret Hamilton while other winners, seated, applaud

U.S. President Barack Obama presents the Presidential Medal of Freedom to Margaret Hamilton during a ceremony in the East Room of the White House on Nov. 22, 2016.

Image: Lawrence Jackson for the White House

Maia Weinstock, Margaret Hamilton, and Tara Wike look at a Lego set prototype in an archival room

In 2017, Lego released its Women of NASA set, which included likenesses of four women in NASA history, including Margaret Hamilton. Here, Hamilton (center) and original set designer Maia Weinstock (left), deputy editorial director of MIT News, view the near-final prototype for the first time, along with Lego designer Tara Wike ’97.

Image courtesy of Lego

Margaret Hamilton, a profoundly influential computer scientist best known for leading the software engineering team at MIT’s Instrumentation Lab during NASA’s Apollo program, died on Sep. 30. She was 90.

A computing pioneer who authored over 130 publications, Hamilton helped to establish software engineering as a dedicated discipline. She worked at MIT from 1959 until the mid-1970s, after which she became a successful computing entrepreneur and CEO.

Her life’s work was recognized with many awards and honors, including the 2016 Presidential Medal of Freedom from President Barack Obama, whose citation noted: “Hamilton defined new forms of software engineering and helped launch an industry that would forever change human history. Her software architecture led to giant leaps for humankind, writing the code that helped America set foot on the moon.”

“To say Margaret Hamilton was a pioneer — to say she was ahead of her time — would be a dramatic understatement. She was a software engineer at a time when that field was in its infancy, and she not only developed advanced code herself but also led a team in using that nascent technology to develop one of the most complex systems humanity had ever achieved,” says Olivier de Weck, the Apollo Program Professor and interim head of the MIT Department Aeronautics and Astronautics.

“The Apollo program still stands as one of our greatest testaments to the power of collaboration, ingenuity, and engineering, and Margaret Hamilton was a fundamental contributor to that program’s success. And for her that was just the beginning! She went on to become an entrepreneur and remained on the cutting edge of systems software throughout an extraordinary career, while acting as an advocate, mentor, and inspiration to millions.”

Early life and projects at MIT

Born in Paoli, Indiana, in 1936, Hamilton began studying mathematics at the University of Michigan in 1955 before transferring to Earlham College, where she earned a BA in mathematics with a minor in philosophy in 1958. She moved to Boston, Massachusetts, in 1959 with her husband while he pursued a law degree.

Hamilton soon found a temporary position in the meteorology department at MIT, working with professor of meteorology Edward N. Lorenz SM ’43, ScD ’48 on weather prediction software. This was her first entry point into computer programming, and her work would go on to inform Lorenz’s future publications on chaos theory.

From there, Hamilton took a role as a programmer at MIT Lincoln Laboratory in 1961, working on the Semi-Automatic Ground Environment (SAGE) project, the United States’ first air defense system. Hamilton wrote software for the prototype AN/FSQ-7 computer (XD-1), used by the U.S. Air Force to search for potentially unfriendly aircraft. During this time, Hamilton began to take an interest in software reliability — a new and largely unexplored concept at the time.

In 1965 Hamilton was preparing to pursue graduate studies when her husband saw an advertisement in the newspaper: The Instrumentation Lab at MIT was seeking people to develop software to “send man to the moon.” The lab had won the contract from NASA to build the onboard flight software for the Apollo program. Intrigued by the challenge, Hamilton applied, and was hired as the first programmer for the Apollo project at MIT, as well as the first female programmer in the project.

Hamilton worked first on the software for the uncrewed Apollo missions and then was promoted into leading the team developing the on-board flight software for the crewed missions. By 1968 she was assistant director in charge of the Command and Service Module team, and more than 400 people were working on Apollo’s software.

“From my own perspective, the software experience itself (designing it, developing it, evolving it, watching it perform and learning from it for future systems) was at least as exciting as the events surrounding the mission,” Hamilton told MIT News in 2009. “There was no second chance. We knew that. We took our work seriously, many of us beginning this journey while still in our 20s. Coming up with solutions and new ideas was an adventure. Dedication and commitment were a given. Mutual respect was across the board. Because software was a mystery, a black box, upper management gave us total freedom and trust. We had to find a way, and we did. Looking back, we were the luckiest people in the world; there was no choice but to be pioneers.”

Video thumbnail

Margaret Hamilton on Software Engineering
Video: Hack the Moon/Draper

“Defensive” programming and priority-driven software take humans to the moon

Hamilton discovered a talent for leadership, as well as a keen instinct for problem-solving and critical thinking that would prove to save Project Apollo several times over.

There was the incident that became known as “the Lauren error”: One day, her daughter Lauren, then four years old, was playing with the command module simulator at the Instrumentation Lab when she somehow activated a pre-launch program, called P01, while the simulator was in midflight — which crashed the simulator altogether. Hamilton created a program add-on in the technical documentation warning users not to launch P01 during flight.

She also proposed a software fix to prevent the error happening during a real mission, but she was overruled on the grounds that the highly trained astronauts were never going to make that same mistake. Yet during the Apollo 8 mission in 1968, that’s exactly what happened: Jim Lovell inadvertently launched P01 during the flight, causing the on-flight navigational data to vanish. Hamilton and her team were called in to solve the error, and after that her proposed changes were integrated into the program. This was an early example of “defensive” programming, the practice of building software that could anticipate or fix errors on its own.

Hamilton’s most famous contribution to the Apollo program came during the pivotal Apollo 11 mission to land on the moon in July of 1969. Moments before the Eagle module was set to land on the lunar surface, the onboard computer raised the alarm. It had detected a 1202 error: The computer was overloaded due to a fault in a hardware switch, and it was possible the system would not be able to handle the complex landing procedure.

But Hamilton and her team had engineered priority-driven software, able to shut down unnecessary background tasks in order to prioritize mission-critical tasks. Houston trusted Hamilton’s software and allowed the mission to proceed, and two men walked on the moon for the first time.

Later career and legacy

Hamilton continued to work at the Instrumentation Lab into the 1970s. As the Apollo program wound down, the Instrumentation Lab spun out of MIT to become the independent Draper Laboratory.

“Margaret left an indelible mark on Draper, and we will be forever grateful,” says Jerry M. Wohletz SM ’97, PhD ’00, president and CEO at Draper. “Through her leadership and contributions to the development of the onboard flight software for NASA’s Apollo Guidance Computer, she helped ensure that Apollo astronauts landed safely on the lunar surface and safely returned home. We will honor her legacy at Draper forever.”

Hamilton went on to create her first software company, Higher Order Software, in 1976. The firm was based on Hamilton’s software engineering approach of error prevention and fault tolerance.

A decade later, Hamilton founded another software company, Hamilton Technologies, “to provide products and services to modernize the planning, system engineering and software development process in order to maximize reliability, lower cost and accelerate time to market.”

Hamilton Technologies’ flagship product is the Universal Systems Language (USL), a systems modeling language and methodology for engineering complex software systems that prioritize error prevention and defensive programming.

Throughout her career, Hamilton worked to achieve recognition for software engineering as a dedicated discipline.

“I fought to bring the software legitimacy so that it — and those building it — would be given its due respect, and thus I began to use the term ‘software engineering’ to distinguish it from hardware and other kinds of engineering, yet treat each type of engineering as part of the overall systems engineering process,” Hamilton told El Pais in 2018. “When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline.”

Among her many awards and honors, Hamilton was recognized with the NASA Exceptional Space Act Award for scientific and technical contributions in 2003; the Computer History Museum Fellow Award in 2017; the Intrepid Lifetime Achievement Award in 2019; and induction into the National Aviation Hall of Fame in 2022.

Later in life, Hamilton become an icon for women in science and technology, especially after a now-famous photo, showing her next to a printout of her MIT team’s Apollo code, began circulating online. In 2015, the Apollo software she helped to develop was added in its entirety to the code-sharing site GitHub. And in 2017, she became an official Lego Minifigure after a set originally designed by MIT science communicator Maia Weinstock, honoring her and several other women of NASA history, became available worldwide.

“Margaret Hamilton has been an inspiration to generations of computer scientists and engineers. Hers was a career dedicated to preventing errors and what she called ‘handling the unknown,’” says de Weck. “She personified leadership by example, and established a practice of software engineering based on problem-solving and systems engineering that we all benefit from.”

Hamilton is survived by her daughter, Lauren Hamilton; her son-in-law, Richard Selesnick; two grandsons; four great grandchildren; and her siblings John, David, and Kathryn. A memorial service will take place in the spring in Cambridge, Massachusetts.

The Daily Front Page 3 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — The New Model Race
article

Claude Haiku 5.5

by sfkgtbor·▲ 764 points·379 comments·anthropic.com ↗
the cheapest, fastest, and most capable small model we’ve ever released.

Introducing Claude Haiku 5.5: the cheapest, fastest, and most capable small model we’ve ever released.

Claude Haiku 5.5 is designed for high-volume, cost-sensitive tasks. It reliably handles quick and repetitive workloads (like summaries, compactions, database queries, and classification requests). It pairs well with Opus 5.5 and Sonnet 5.5 as a subagent on coding work. And, since it’s also our fastest model to date, it works especially well for speed-sensitive tasks like live customer support and browser use.¹

Haiku 5.5 is available at a much lower price than Haiku 4.5. On average, it now costs around 75% less to run.²

Along with this launch, we’re making improvements to the value of our model range. We’re halving the price of Claude Sonnet 5.5’s cache reads, which means Sonnet 5.5 now runs around 20% cheaper on most agentic work. And we’re introducing a new monthly API credit for our Claude Max and Team subscribers, designed to support our users in building new agents and applications that run on the Claude Platform.

Performance

Here’s how Claude Haiku 5.5 performs across a range of benchmarks:

For details on how we run our evaluations, see the Haiku 5.5 System Card.

Haiku 5.5 is our first Haiku-class model to come with an adjustable effort setting. This means that, as with our other models, users can decide whether to optimize for cost or intelligence. The charts below show how Haiku 5.5 performs on three benchmarks at each effort setting:

OSWorld 2.1 measures how well agents can operate a real computer to finish long, multi-step tasks.

Artificial Analysis’s GDPval-AA v2.1 evaluates agents on real-world professional work across 44 occupations.

Humanity’s Last Exam (HLE) is a test of expert-level academic knowledge and reasoning.

In early testing, our customers reported results consistent with the performance and cost improvements shown above. Here’s what they told us about the new model:

“We’re very impressed with Claude Haiku 5.5, particularly its speed. We ran it through our eval suite for AI Teammates, our AI agent product, covering use cases like triaging bugs, setting up projects, and searching large portfolios to surface high-risk or overdue work. Compared with the model we use today, we saw over a 30% reduction in latency for task completions and up to 2.5x faster inference per agent turn. It’s a noticeably snappier experience.”

Asana — Aaron Vinh, Staff Software Engineer

“At HubSpot, we use simulated portals to evaluate new models on CRM tasks like reporting on deals. We mostly test the smaller, more efficient models, and Claude Haiku 5.5 got the best score we’ve seen on this suite yet, at 92.8% averaged over three runs. One CRM audit task asks models to identify stale but ambiguous records. Across all of the models we tested, Haiku 5.5 was fastest to complete the task, and had the highest hit rate and the lowest false positive rate.”

HubSpot — Ze’ev Klapow, Distinguished Software Engineer

“Ask in Document is one of our big sources of spend, doing about 8M calls a week in production. It answers very specific questions on top of one or a few documents. We ran 400 queries, and Claude Haiku 5.5 was a statistically significant improvement over Haiku 4.5: 0.84 vs. 0.76.”

AlphaSense — Daniel Campos, Distinguished Engineer

“Our customers use Box AI across large volumes of their enterprise content. With widespread usage comes the need to manage efficiency and cost, and to find the best model to suit the task at hand. In early testing, Claude Haiku 5.5 scored 11 points higher than Haiku 4.5 at about half the latency. We’d put it to use on analytical work that runs at scale, from cost reports to financial summaries and weekly recurring reviews.”

Box — Yashodha Bhavnani, VP of AI Products

“The short and high-volume work is where Claude Haiku 5.5 fits for us, like quick lookups, subagents, and summaries. While a bigger model builds the deck, a Haiku 5.5 subagent goes into the 10-K and pulls the segment revenue line the deck needs. It’s accurate enough that we’d trust it there, and fast and cheap enough that we can run it a lot.”

Rogo — Alex Wang, Applied AI

“Claude Haiku 5.5 joins the sidekick lineup in Devin Fusion as an excellent option. With Haiku 5.5 as the sidekick, Fusion holds a top-tier FrontierCode score of 66.2 while cutting cost and latency. You can try it today in the Devin CLI with Opus 5.5 as the lead.”

Cognition — Walden Yan, Co-Founder & CPO

Pricing

The table below shows how Claude Haiku 5.5’s pricing compares to our other models. Haiku 5.5 is especially good value when used for tasks with prompts up to 100,000 tokens, which make up around 90% of requests to our previous Haiku model.

Price per 1 million tokens Haiku 5.5 prompts up to / over 100k Haiku 4.5 Sonnet 5.5
Cache reads $0.01 / $0.05 $0.10 $0.10
Cache writes $0.125 / $0.625 $1.25 $2.50
Input tokens $0.10 / $0.50 $1.00 $2.00
Output tokens $0.50 / $2.50 $5.00 $10.00

Safety

Alignment. Claude Haiku 5.5 shows major improvements across almost all of our alignment evaluations relative to Haiku 4.5. In particular, we found far fewer instances of misaligned behavior, and a lower willingness to cooperate with misuse. The model’s system card describes our evaluation process and results in more detail.

Safeguards. Consistent with its capabilities, Haiku 5.5’s cybersecurity safeguards are more restrictive than Haiku 4.5’s, but somewhat less restrictive than those we’ve applied to other recent models. In cybersecurity, they permit a wider range of defensive tasks than our safeguards for Sonnet 5.5, but they still block penetration testing and other techniques more likely to be used by attackers.

Haiku 5.5’s biology safeguards are the same as for Sonnet 5, Sonnet 5.5, and Opus 5. They allow research biology questions but restrict access to requests that we judge as likely to cause harm. Organizations working on wider-ranging biology and cyber activities can apply to our Life Sciences Verification Program and Cyber Verification Program.

Availability

Claude Haiku 5.5 is available now on all platforms, including Amazon Web Services, Google Cloud, and Microsoft Azure. On the Claude Platform, developers can get started with claude-haiku-5-5.

See our migration guide for details.

Further updates

Alongside our new pricing for Claude Haiku 5.5, we’re making further improvements to the value of our models and products.

First, starting today, we’re lowering the price of cache reads on Claude Sonnet 5.5. Cache reads now cost 50% less: $0.10 per million tokens rather than $0.20. Because cache reads make up a large share of models’ token consumption, this reduces the cost of Sonnet 5.5 on most agentic tasks by around 20%.

For instance, here’s what the price cut means for Sonnet 5.5’s performance relative to cost on Terminal-Bench 4.0:

Terminal-Bench 4.0 measures how well a model can complete complex, multi-step professional tasks within a command-line interface.

This chart illustrates an important difference between Haiku 5.5 and our larger models. Sonnet 5.5 and Opus 5.5 remain better choices for complex agentic coding tasks like those measured by Terminal-Bench 4.0. By contrast, Haiku 5.5 is best suited to more narrowly scoped tasks that might otherwise have been cost-prohibitive with previous versions of Claude—like compaction, summarization, or subagent work.

Second, this week, we’ll roll out a new monthly API credit to all Max and Team subscribers for use on the Claude Platform. Max 5x users will get $100 in credits per month, Max 20x users will get $200, and Team subscribers will receive up to $500, pooled across their users. These credits are designed to allow our users to experiment with building tools, apps, and agents that call our API. They can be used on any of our models. For more information, see our Help Center article.

For developers, we’re also updating our Claude Python and TypeScript SDKs to add support for computer use and browser use in beta. Haiku 5.5 is especially well-suited to these tasks, given its combination of speed, capability, and price. You can read more about this in our Claude Platform docs.

Footnotes

1 Claude Haiku 5.5 is our fastest model to date at each model’s standard speed, although it runs less quickly than our Opus models in Fast Mode.

2 Claude Haiku 5.5 is priced 90% lower than Claude Haiku 4.5 for requests up to 100,000 tokens, and 50% lower for requests over 100,000 tokens. On Haiku 4.5, 90% of requests fell into the former category. This calculation also accounts for changes between Haiku 4.5 and Haiku 5.5 in how many tokens are used to complete a given piece of work: Haiku 5.5 has an updated tokenizer (similar to Sonnet 5.5’s and Opus 5.5’s), which means it uses slightly more tokens per task.

The Daily Front Page 4 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Interfaces Become the Answer
article

GPT‑6 and Intelligent UI for everyone

by joshuawright11·▲ 554 points·284 comments·openai.com ↗
fully interactive user interfaces that make everyday answers more visual.

Last month we introduced the first GPT‑6 models for paid customers and today we're bringing that next generation of intelligence to more people with a new GPT‑6 model built for more than 1.2 billion people who use ChatGPT each week.

GPT‑6 in ChatGPT introduces Intelligent UI, a new capability that allows ChatGPT to answer quickly with fully interactive user interfaces that make everyday answers more visual, make learning complex topics easier and that can quickly create a tool to solve a task right in the moment.

Introducing Intelligent UI

We’ve trained GPT‑6 to compose responses using text, visuals and interactive elements, choosing how they fit together based on your question. With Intelligent UI, responses can include graphics, tappable buttons, forms, charts, and interactive experiences you can use directly in your conversation.

The format depends on what you’re asking. A comparison might work best side by side. An explanation might be easier to understand through an interactive diagram. And when a simple text answer is the most useful response, ChatGPT can give you that.

More visual responses to everyday questions

ChatGPT can make a plan easier to follow by showing how it fits together. The timing for a Sunday roast can sit alongside the recipe, or the stops on a road trip can appear on a map, with notes on what’s worth a detour.

Learn complex topics more easily

Visual and interactive explanations let you explore how something works, change an input to see what happens, or work through a problem step by step.

Create interactive experiences just by asking

You can also ask ChatGPT to create a tool for the task at hand, such as a calculator to explore how savings could grow, a bill splitter for dinner with friends, or a game you can play in the conversation.

How Intelligent UI works

With Intelligent UI, we gave GPT‑6 the freedom to create the most useful interface for each question, while keeping the experience fast and familiar across web and mobile.

We built a library of native, streamable components, along with a compiler that processes the interface as the model generates it. The library gives each response a familiar design foundation while leaving the model room to decide how the pieces fit together. The compiler allows the interface to appear progressively as the model generates it, without waiting for the entire response to be complete.

We expanded our training methods to help the model make thoughtful decisions about content, layout, visuals, and interaction. This included evaluating the interfaces it creates for clarity, usefulness, and completeness. GPT‑6 learned to use the component library and make good design decisions, including how to organize information clearly, when to use interactivity, and when a simple text response is enough.

There's still work ahead to improve the model's design judgment and expand what it can create, but Intelligent UI marks a significant shift in how people interact with ChatGPT. Instead of fitting every question into the same conversational format, ChatGPT can combine UI, data, and actions to create entirely new ways for people to explore, understand, and interact with information.

Frontier Intelligence – delivered more quickly

With GPT‑6, we’re also making it possible for ChatGPT to begin answering while it continues to think.

With the introduction of reasoning models, users could get help with much harder problems, but had to wait for the model to finish thinking before getting an answer. Now, ChatGPT can interleave thinking with answering. We trained it to take into account the user’s waiting time and progressively compose an answer using its knowledge and findings up to that point. It learned to build answers across multiple partial responses, each adding useful information without unnecessary filler, while keeping the full answer as cohesive and factual as one written all at once.

In an internal evaluation of high-value, everyday agentic tasks, GPT‑6 Extra High is able to begin answering in the same amount of time as GPT‑5.6 Medium while achieving a better overall score than GPT‑5.6 Extra High.

For questions that need web search, GPT‑6 Instant starts answering 44% sooner, on average, than GPT‑5.6 Instant.

GPT‑6 also improves the quality of answers that require web search. It makes better decisions about when to look something up and more reliably finds information that supports its answer. In an internal evaluation of difficult problems, GPT‑6 correctly addressed the key aspect of the user’s question more often than GPT‑5.6.

Deploying GPT‑6 safely

As we bring more intelligent AI to more people, we work to improve how it recognizes real-world risks, how honestly it responds, and how well it respects the limits that people set. GPT‑6 makes progress in each of these areas, building on several of Astra’s safety advances to better resist attempts to bypass its safety training, follow safeguards, and be clearer about what it can and can’t do relative to GPT‑5.6 Sol. We updated its safety training based on lessons from real-world use to strengthen protections against high-risk misuse involving cyberattacks, biological threats, and violence. In adversarial testing, GPT‑6 showed stronger resistance to attempts to bypass its safety training, particularly attacks that adapt across multiple turns. GPT‑6 is also trained to respond safely in higher-risk scenarios while avoiding unnecessary refusals of harmless requests. This includes using conversation history and relevant context to recognize risks that may not be apparent from a single prompt.

We ran alignment evaluations throughout training, assessing honesty and responses to safety restrictions. GPT‑6 is better at recognizing and communicating the limits of its own capabilities, including when it lacks the information or tools needed to answer. More detail on the results and our review is available in the system card.

Availability

GPT‑6 with Intelligent UI starts rolling out globally to ChatGPT Plus, Pro, Business and Enterprise tiers today in the Chat tab. Starting tomorrow, the rollout expands to Free and Go tiers. Enterprise availability depends on workplace admin settings.

GPT‑6 in ChatGPT is powered by GPT‑6 Sol for Plus, Pro, Business, and Enterprise tiers, and GPT‑6 Luna for Free and Go tiers. Both are tuned for everyday conversation.

This update applies to the Chat experience in ChatGPT. The models powering Work and Codex are not changing as part of this release.

What comes next

Our mission is to deliver the benefits of artificial general intelligence safely to all of humanity. GPT‑6 brings our latest advances in intelligence to the more than 1.2 billion people who use ChatGPT every week.

Intelligent UI is a step toward a ChatGPT that can shape an interface around what you’re trying to do.

Over time, we want ChatGPT to create more of the interfaces people need for everyday tasks. You should be able to describe what you want to accomplish and work with an experience built around it.

For decades, people have had to learn how to use software, navigating fixed interfaces designed around particular tasks. We believe the future will be different. Instead of people adapting to software, software will adapt to people.

The Daily Front Page 5 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Pictures, Better Packed
article

Shipping JPEG XL in Chrome

by AshleysBrain·▲ 510 points·346 comments·developer.chrome.com ↗
It offers 30-50% better compression than JPEG.

We're excited to announce that Chrome is shipping decoding support for the JPEG XL (.jxl) image format starting from Chrome 155. JPEG XL is a next-generation image format designed to meet the needs of modern web developers and photographers. It offers 30-50% better compression than JPEG, lossless compression, built-in HDR support, lossless JPEG transcoding, and more.

In general, we recommend trying both AVIF and JPEG XL to get the best results. We expect that JPEG XL is most helpful for high-fidelity or lossless compression, especially of photographic images or in cases in which fine-grained progressive decoding is preferred.

In this post, we share why we brought JPEG XL to Chrome, how we used Rust to ensure memory safety first, the extensive performance work that makes it fast, and what the journey tells us about developer feedback and the web standards ecosystem.

Safety first: Reimplementing the decoder in Rust (jxl-rs)

Image decoders are one of the most critical and targeted attack surfaces in any modern web browser. They process complex, untrusted binary structures directly from the network and run inside the renderer process. Historically, decoders written in memory-unsafe languages like C++ have been prone to vulnerabilities such as out-of-bounds reads, heap overflows, and use-after-free bugs.

Our security model relies on sandboxing and defense-in-depth, guided by the rule of two. However, sandboxing is a secondary layer of defense. To eliminate these security risks at the source, we have integrated jxl-rs, a pure Rust implementation of the JPEG XL decoder.

Design for speed, without compromising safety

Memory safety is crucial, but a memory-safe decoder that is approximately as fast as the best non-memory-safe alternative is a much more obvious choice than a choice with a significant performance compromise.

A fundamental part of the performance of modern codecs is making full use of the SIMD hardware available on modern devices. To do so safely, target_feature_11 Rust feature had to be stabilized, which allowed the use of SIMD instructions without requiring unsafe code.

The next step was to build a SIMD abstraction layer (jxl_simd), inspired by the C++ Highway library (itself originally developed for libjxl, the C++ reference implementation of JPEG XL). Together, those developments allowed writing a multi-platform library that doesn't compromise on SIMD performance optimizations, while restricting unsafe operations to a small number of highly-vetted locations.

Performance optimizations in jxl-rs build on those in libjxl. This includes a generic processing pipeline for steps crossing region borders, while minimizing data copies to maximize hardware performance. We've been tracking the performance of the Rust reimplementation across different hardware platforms on the jxl-rs performance dashboard.

We verified the jxl-rs implementation with various state-of-the-art techniques, including fuzzing and AI review of the code, and have not found any memory safety bugs throughout the entire implementation history, providing yet another validation of the huge improvements that Rust brings to memory safety.

Developer feedback and the Interop Project

The Chrome team considers web developer feedback from a wide range of channels, such as bugs, surveys, the Developer Signals Project, and the Interop Project. Our decision to ship JPEG XL was based on consistent feedback and requests from web developers, most visible in the Interop Process, where it was a popular proposal in 2026 and several years prior.

To ensure the format is interoperable across browsers, we have participated in the Interop 2026 JPEG XL Investigation to ensure there is test coverage for all of JPEG XL's features in browsers, and that those tests pass in Chrome.

Try it out

With JPEG XL officially landing in Chrome, the web becomes faster, richer, and safer. We encourage developers, content creators, and platform owners to start using .jxl images and animations in their pipelines.

Try it out, file bugs, and help us continue building a faster and safer web for everyone.

Acknowledgements

We'd like to thank all the people who contributed to jxl-rs or its integration in Chrome, and especially Helmut Januschka for the substantial contributions both to the Chrome integration and jxl-rs, and Martin Bruse, Zoltan Szabadka, Sami Boukortt and Wonwoo Choi for their substantial contributions to jxl-rs itself.

The Daily Front Page 6 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Small Models, Local Decisions
article

Strands Decider 2B: a small, open-source, decision model

by gmays·▲ 275 points·78 comments·strandsagents.com ↗
a small, open source, decision model optimized for fast experimentation.

Strands Decider 2B is a small, open source, decision model optimized for fast experimentation, local development, and innovation.

Earlier this year, we announced strands-labs, a place to get hands-on with state-of-the-art approaches to agentic AI. Today, we’re excited to add Strands Decider 2B: a small decision model optimized for fast experimentation, local development, and innovation.

Strands decider is one of a new class of decision models or system one models, a type of model that has been gaining a lot of attention since TypeSafe AI’s launch of Jev earlier this month. Unlike LLMs that can generate arbitrary output, decision models are designed to pick between sets of options (e.g. “Is the string ‘turn on the lights’ about the coffee machine? Yes or no.”, “What language is the phrase ‘sihamba ngokushesha’ in? English, Zulu, or Dutch.”) and assign simple numerical scores (e.g. “Is the phrase ‘this is the best doc I’ve ever read’ a positive sentiment? Between 0 and 1.”).

In exchange for this reduction in flexibility, decision models are faster and more capable at a given size, always produce an answer from the selected options, and can run with very low latency.

The flip side is that this approach (generating all outputs in a single parallel pass) makes it significantly worse at solving complex problems than reasoning models, and its lack of ability to generate text makes it unsuited for coding, chatbots, document summarization, and other common LLM tasks.

In addition, decision models give each decision a high-quality reliability score (i.e. “how sure can I be that this yes/no is correct?”), which is not available through frontier LLM inference APIs. They also make it highly efficient to ask multiple questions about the same prompt. This combination of properties makes them perfect for driving the types of agentic workflows we see many developers building with the Strands Harness SDK, and the recently launched Strands harness. We expect that this class of model is going to lead to a lot of interesting innovation in agentic AI over the next few weeks, months, and years.

Strands Decider 2B is our first contribution to that innovation. It’s a 2 billion parameter model, suitable for running on a local CPU or GPU, which can return answers to meaningful questions in tens of milliseconds. Its accuracy and calibration is competitive with the other models we know of in this class. We’ve released strands-decider-2b as open source on GitHub, with the weights on Hugging Face, including all the training data and scripts we used to build the model, making it a great place to start on your own innovation journey.

Model Architecture

The core idea is that we take a pre-trained LLM torso (Qwen3.5-2B), and remove the LM head, taking away its ability to generate text. The LM head is replaced with a pointer head which scores the answers offered by the torso for each option. It does this by scoring the hidden state at each option position against the hidden state at the <answer> position. This head is pretty small, just over a million total parameters. The torso is fine-tuned with a rank-16 LoRA adapter.

Strands Decider 2B model architecture

Figure 1: The Strands Decider 2B architecture.

As you browse through the repo, you’ll find that this is the second major iteration of the architecture. The first one was similar, but used a slot head that we found performed significantly worse. In fact, the model we’re releasing today is v19, with lots of iterations under the covers. Everything we changed in each version is covered in the repo, and you can follow along with the work we did.

How does it perform?

For models of this type, we’re interested in three performance targets: accuracy (how well it answers questions), calibration (how trustworthy its confidence scores are), and latency (how quickly it can make decisions). We’ve been measuring the first two together: accuracy on JevBench’s public set, and calibration using the Brier score on the same set. We’ve found that strands-decider-2b performs well on accuracy and calibration (3rd of 33 in the 2B class, and 1st of 30 excluding the just-over-2B models). As we’ve evolved the architecture our scores are getting better, and we have many ideas for future improvements. We hope the community joins us, in the spirit of Strands labs, in contributing new ideas of your own.

Accuracy and calibration (Brier score) across training trajectory

Figure 2: Accuracy and calibration (Brier score) across the training trajectory. As the architecture evolved over successive versions, both metrics improved on JevBench’s public set.

On latency, strands-decider-2b can make local decisions in a median of around 115ms on widely available hardware. The time taken to decide depends on the task size, approximately linearly increasing as the task size gets larger. The results in the graph here are on a local Nvidia RTX3090, but the performance on an M3 MacBook isn’t much worse, with a median latency for small tasks around 153ms. As with accuracy and calibration, we have a lot of ideas for getting better here, especially in reducing the floor.

Decision latency vs. task size in tokens

Figure 3: Decision latency as a function of task size (in tokens), measured on a local Nvidia RTX 3090 against v18 of the model. Latency increases approximately linearly with task size.

Why 2B?

We chose to make Strands decider available as a small model for two reasons. One is that we want to encourage experimentation. You can use, and even train, strands-decider-2b on hardware you already have. This makes it easy, fast, and low risk to try things out. The other is that two billion total parameters, seems like something of a sweet spot: small enough for experimentation, large enough to do meaningful work. Strands decider performs 100% of the easy tasks on JevBench correctly, for example, and these types of problems map well to some of the easier problems we see people tackle with agents.

What can I do with Strands decider?

Whatever you want! More seriously, we’re seeing early success using this class of model for model routing, tool selection, evaluations, guardrails, memory, context management, and policy classification. We’ve also seen exciting innovation around building hybrid agents, using LLMs to make the hardest decisions and using decider models to make the easier rote decisions, reducing cost and latency. We’re seeing experiments combining decider models with fixed workflow languages to build another kind of hybrid workflow. Folks are also using these kinds of models to play games, automate tasks, navigate mazes, and more. The speed of innovation in this space is astonishing.

Trying it out

The easiest place to get started is through the strands-decider CLI:

pip install strands-decider

Choice question

You can ask the model to choose based on some state and a question:

strands-decider ask StrandsAgents/strands-decider-2B-hobson-v19 \
  --state "Help! My payouts have been failing for 3 days! " \
  --choice "Which team should handle this?=billing,sales,retail"

Example output:

choice_0 -> billing (confidence 0.768)

billing                  0.845
retail                   0.091
sales                    0.064

In this output we can see that the model is predicting billing as the answer with the highest probability score.

The repo also includes examples using strands-decider-2b inside a Strands agent, under examples/strands/. The agent itself runs locally, connects to Strands decider also running locally, and then uses the default LLM from Amazon Bedrock.

It’s a deliberately small scenario. The agent has the (obligatory) demo get_weather tool and a system prompt that makes it deliberately eager, so that when the user asks “What’s the weather?” without saying where, the agent guesses a city and calls the tool anyway. However, before that call runs, strands-decider-2b will read the conversation and the proposed tool call and answers two yes/no questions about it: are these argument values grounded in anything the user actually said (spoiler: no!) and is it too early to call this tool anyway. A few lines of Python turn the predictions into a decision, and the agent goes back to ask which city you meant instead of confidently reporting the weather somewhere nobody mentioned.

QUESTIONS = {
    "args_grounded": Decider.noul(
        "Are the tool's argument values grounded in facts the user actually provided?",
        {
            "true": "every argument value traces back to something the user said",
            "false": "an argument value was guessed or invented, not stated by the user",
        },
    ),
    "premature": Decider.noul(
        "Is it premature to call this tool now, before clarifying with the user?",
        {
            "true": "the assistant should ask a clarifying question before calling the tool",
            "false": "there is nothing left to clarify; calling now is appropriate",
        },
    ),
}

The pattern here is Strands’ intervention system. We use the InterventionHandler with a before_tool_call method, pass it to Agent(interventions=[...]), and it runs before any tool executes. What it returns is a typed action: Proceed, Deny, Confirm (stop and ask a person), or Guide, which hands the model back its turn with feedback rather than blocking the call outright. This existing handler is a Python class and Strands has no opinion about what goes inside it, so the same shape holds whether you’re calling our decision model, a Cedar policy, or another agent. (There are equivalent hooks around the model call and around the whole invocation.) This example is an illustration rather than a recommendation, so the questions, the threshold and the policy were all picked by hand. The point is that a decision this cheap can sit in a path where an LLM call never could.

The Strands team is working on libraries for decision model integration, so watch the repo for updates soon.

Conclusion

You can download, use, or build off strands-decider-2b today. All the data is available, along with everything you need to get started. You can grab the code from GitHub, and the latest snapshots from Hugging Face. Now go experiment!

The Daily Front Page 7 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Math’s Translation Problem
article

Navier–Stokes Lost in Translation

by nill0·▲ 277 points·171 comments·arxiv.org ↗
Lean verification of AI autoformalisation does not guarantee correct natural language proofs.

Abstract

Autoformalisation is increasingly used to verify mathematical texts, including those generated by AI, as in OpenAI's announced proof of blow-up of solutions to the Navier-Stokes equations. In this process, an AI system translates the text from a natural language (NL) into a formal language such as Lean. Once this translation is done, the argument expressed in the formal language can easily be mechanically verified. The purpose of this article is to demonstrate why this process may offer no confidence in the original NL argument, owing to the various difficulties in performing the translation semantically faithfully. In particular, we highlight that the problem of resolving ambiguities in mathematical NL text, which is necessary in order to provide semantically faithful translation, is arbitrarily high up in the Solvability Complexity Index (SCI) hierarchy/arithmetical hierarchy (the SCI $= \infty$). Hence, informally, providing semantically faithful AI autoformalisation is harder than any computational problem including the Halting problem (which has SCI $= 1$). To demonstrate the effect of this result we provide several examples of AI mistranslations of NL statements and proofs into Lean in practice, resulting in mismatches between NL proofs and their Lean `verifications'. These include OpenAI's announced Navier-Stokes proof. In particular, we show that the formalised Lean proof does not correspond to the NL proof of blow-up of solutions to the Navier-Stokes equations.

The Daily Front Page 8 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — The Mathocalypse
article

The Mathocalypse

by 6bitquant·▲ 192 points·227 comments·scottaaronson.blog ↗
mommy, I heard you got cooked! I heard that a robot solved the math problem you worked on for your whole career!

The Mathocalypse

… then they came for Navier–Stokes and I said nothing because I never worked on Navier–Stokes. But when they came for RL vs. L I realized that things are serious

–friend-of-the-blog Omer Reingold (shared with permission)


Last night my 9-year-old son was taunting my wife, complexity theorist Dana Moshkovitz, as follows: “mommy, I heard you got cooked! I heard that a robot solved the math problem you worked on for your whole career! OOF!”

While my son was being a brat, he also wasn’t wrong. Whether you’re thrilled, depressed, angry, or whatever else about it, yesterday was surely one of the biggest days in mathematical history. And yes, among the 372 huge results released yesterday by OpenAI, on the recommendation of its advisory group of Timothy Gowers, Edward Witten, and other distinguished mathematicians, was a proof of Subhash Khot’s Unique Games Conjecture (UGC), a statement that my wife has worked toward proving for the entire time I’ve known her. (The UGC implies that a whole slew of optimization problems really are NP-hard, even if you just want an approximation that’s slightly better than what you get from semidefinite programming relaxation, which is one of our main tools.)

Or at least, we’re pretty sure that it’s a proof! There’s a Lean certificate, as there are for some of the other 372 breakthrough results (not all of them). But it also appears that no human has understood just about any of these proofs yet; the race to do so has just started. If you want an on-the-ground sense of what that race is going to be like, here’s some of what Dana texted me last night:

It feels like something written by someone who’s on psychedelics. So much unclear and doesn’t make sense. Lots of name dropping of previous work without discussing why it can be used despite impossibility results

Basically the paper is so horribly written that it’s impossible to read it without AI help

I asked Astra for reasonable completeness and soundness claims of the noise gadget and it gave them by combining claims from all over the paper

They also have direct optimal NP hardness of approximation proofs for the main applications of the UGC (Max Cut and all CSP) that bypass the UGC.

The UGC proof invents a completely new bizarre code with a noise test. It’s some crazy recursive construction.

It’s not the long code, not the short code – some alien craziness

I still think that there maybe is a proof that uses the half space code (which is natural)

The citations are often irrelevant and confusing

A possible future is a math world that’s heavenly if you have vision/creative ideas that AI could help check and implement.

And of course there’s a lot for us to learn from the aliens

If you’re wondering what emotions Dana is feeling—well, probably all of them! Even while a central career aspiration has fallen to a robot, there are at least two mitigating factors for her. First, she can feel vindicated that the UGC was true after all, something she never doubted even while many of her colleagues did! Second, all of us in math and theoretical computer science and mathematical physics, at least those who cared about solving crisply-stated problems, are now in the same boat.


Besides the Unique Games Conjecture, here’s a small sampling of the treasures from Aladdin’s cave that I’ll probably be paying the most attention to over the coming weeks:

Any of the above, alone, could easily have been “result of the year” in some area (and in some cases, like Unique Games and L=BPL, in all of CS theory). And there’s a lot that I’ve left out—feel free to share in the comments whatever is making your eyes bug out! There are equally astounding wonders in number theory, combinatorics, algebraic geometry, analysis, and pretty much every other area of math, most of which I’ll never understand, although I’ll note that it includes partial progress toward the Riemann hypothesis and the Hodge Conjecture and the Birch-Swinnerton-Dyer Conjecture (i.e., the majority of the remaining Millennium Problems).

We can take solace in what’s missing from the list. P≠NP isn’t there, nor even P=BPP or NEXP⊄P/poly, and surely not for lack of trying. Apparently the greatest open problems of theoretical computer science are indeed pretty hard!


Oh, lest I forget: one day before the OpenAI dump, meaning Monday evening, Virginia Williams and Josh Alman posted an arXiv preprint that solves the 3SUM problem in O(n1.9992) time, and the All-Pairs Shortest Paths problem in O(n2.9995) time, refuting half-century-old conjectures that the correct answers were n2-o(1) and n3-o(1) respectively. In this case, it wasn’t an OpenAI model that supplied the crucial idea; it was an Anthropic one! But Anthropic then took a different approach from OpenAI: rather than post the undigested solutions to the world, it gave Virginia and Josh the opportunity to write and announce a digested version in exchange for compensation.

These have emerged as the two main models for communicating AI math breakthroughs, and they both have strengths and weaknesses. The “OpenAI model” sets up a crazy race among humans to digest and explain a messy AI proof (work that could easily be some combination of thankless, barely-credited, competitive, and unfun), while the “Anthropic model” puts a private company in the position of picking and choosing which human mathematicians get to be the emissaries of the AI. Dunno, what do you guys think?


For those who are wondering: apparently, the AI model that produced all these wonders was not bespoke contraption of 10,000 agents burning millions of dollars worth of compute, as was used for example to construct a finite-time blowup for the Navier-Stokes equations. Instead, it was simply the latest internal OpenAI model—one that might be released to paying ChatGPT customers within the next couple of months, depending on the recommendations of OpenAI’s safety board! (My 9-year-old son: “Oh they definitely shouldn’t release that. If it could solve all those math problems, it can’t possibly be safe.”) Apparently they used about 3 hours of GPT-Pro level compute on average per problem solved.

Also, if you were wondering: apparently they tried the model on about 8,000 problems. So, right now it “merely” solves ~5% of the longstanding open mathematical problems that it’s asked about, the problems that whole communities have spent years on, after a single 3-hour attempt on them.


I’ve been glad to see the CS theory community rising to the occasion. At the Simons Institute in Berkeley, here at UT Austin, and elsewhere, I’ve hearing stories of researchers rushing to pore over the manuscripts and make sense of them and explain them—because what else do we do? How else do we continue the craft to which we’ve devoted so much of our lives?

If you want some sense of what things feel like now in math, imagine a hunter-gatherer who’s spent his entire life learning to survive deep in an unforgiving rainforest, then a giant resort hotel springs up right next to him with a helipad and heated pools and AirBnBs, and without missing a beat, the hunter-gatherer says: “alright fine, so now my new job is to run wilderness retreats for the tourists, or something.”

In Quanta magazine, Jordana Cepelewitz attempted a different metaphor:

It’s as if you were teleported to the peak of a tall mountain. Surrounded by fog, you have no idea where you are, or what’s around you. You do not know how your mountain connects to others, and you have no equipment to help you explore, no way to help someone else join you. If you had climbed the mountain yourself, you would have experienced how the human body adapts to altitude and changes in oxygen levels. You might have had to invent tools to navigate, to climb steep cliffs, or to make a shelter. You might have encountered a fellow explorer, gotten lost together in a hidden valley, and found a plant that could be turned into a life-saving medicine.

Instead you’re perched on the peak but in the dark, while the maker of the teleportation machine tells you that it can explore the wilderness better than any human.

For any one of these mountains, if we care enough, I feel optimistic that we can do as we always have: clear the fog and figure out the path, except now using the teleportation machine to help guide us. The bigger challenge will be to nurture a community that still cares about the heroic adventure of finding the paths up these mountains in the world with the machine. (Oh, and I think one place where the metaphor breaks is that we still do have each other, as much as we ever did before!)


Experience has shown that, even now, there will still be people explaining in patronizing tones why none of this is real and none of it counts. If such people were capable of being impressed by anything that happens in the empirical world, of updating on anything, they would’ve already been impressed and already updated several years ago, long before things had reached the point of an actual Mathocalypse.

So, they’ll say, maybe the alleged solutions are not solutions at all, but just “AI slop.” Or maybe none of the 372 well-known open problems that were solved were real math problems, they were all just glorified contest puzzles and trivialities. (After all, there’s still no Riemann Hypothesis!) Or maybe the entire 4000-year-old discipline of mathematics needs to be jettisoned: turns out that it was all just puzzle-solving and trivialities; all that’s different is that now the triviality stands unmasked. In any case, what really matters is that the true inner sanctum of human creativity hasn’t been breached and probably never will be, and also, that Sam Altman and Dario Amodei are contemptible little nerds.

If you’re still a proponent of that doomed worldview, still aboard the sinking ship, I encourage you in the strongest possible terms to read yesterday’s other great contribution to AI discourse, besides the OpenAI Mathocalypse dump: namely, Scott Alexander’s open letter to Steven Pinker. I feel some responsibility for this, as the person who first introduced Steven Pinker to the existence of the rationalist community, and who also first introduced Steven Pinker and Scott Alexander to one another (they had both been fans of each other’s writing). And now Scott is challenging Steve to a literal duel, with guns!

For whatever it’s worth: Steve is a lifelong intellectual hero of mine, just as he is for Scott, and I also have to privilege of calling Steve my friend. But I found Scott’s post to be one of the most devastating rejoinders to anything that I’ve ever read. And I thought Scott’s conclusion was exactly right: when it comes to AI risk, Steve’s great challenge is now to accept and start using a more “Pinkerite” epistemology.


Last night, while I should’ve been poring over some of OpenAI’s hundreds of papers and/or writing this post, I decided to spend some time with my kids instead. They wanted a movie night, so I suggested something they’d never seen before (and that I hadn’t seen for decades), and that seemed chock-full of no-nonsense, practical guidance for the world in which they’re going to grow up: Terminator 2.


Update: As several people have pointed out, cryptography is a subfield that’s extremely conspicuous by its absence from OpenAI’s list of 376 papers! But my sources tell me that the AI companies have now started, gingerly and discreetly, investigating whether their latest internal models can break important cryptographic protocols and primitives. If they can, then it would certainly be nice to get ahead of things before the rest of the world figures out the same.

Another Update: The statement put out the Advisory Group on Mathematics and Artificial Intelligence is very carefully phrased, neither endorsing nor condemning what OpenAI did, and is worth a read:

As announced a few weeks ago, OpenAI has released a large collection of mathematical results generated by an internal model, reporting solutions to hundreds of open questions. This is an important event for mathematics, with consequences both for mathematics and for the mathematical community that extend far beyond the individual results.

AGMAI’s advisory role should not be interpreted as a judgment of the impact of these results or an endorsement of the process by which OpenAI obtained them. We do not speak on behalf of the entire mathematical community, and only the mathematical community can undertake the assessment that is needed. 

Making this work public is a first step. This release is the beginning, not the completion, of the process of human understanding and the incorporation of the work into mathematical knowledge. At the same time, the future of mathematical research cannot consist only of understanding results produced by AI labs. Mathematicians must be able to formulate their own questions, develop their own approaches, and explore directions that have not been selected as examples of an AI system’s capabilities. Equitable access to powerful research tools and adequate computational resources are essential to that freedom.

We reaffirm our published recommendations on responsible release. We have discussed them with OpenAI and appreciate the company’s willingness to engage. While we consider these discussions constructive, it is ultimately up to the mathematical community to assess the extent to which our recommendations were followed successfully, and whether there are others we should suggest. We remain committed to engaging with any frontier AI lab on these questions and have already been in contact with several of them.

The Daily Front Page 9 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Writing for the Reader
article

Anti-patterns in software blogging

by ilreb·▲ 230 points·127 comments·refactoringenglish.com ↗
The most common mistake in software blogging, by far, is meandering.

In software development, we collect anti-patterns to recognize common traits that lead to poor outcomes in our software. I thought it would be helpful to do the same for software blogging, so I’ve catalogued the most frequent mistakes I see from beginner bloggers.

The meandering intro

The most common mistake in software blogging, by far, is meandering. I constantly find myself several paragraphs into a post with no idea what the author is trying to tell me.

Developers love specificity, so they start blog posts with backstory, historical context, and whatever else happens to be on their minds. That may be fun to write, but it’s not always interesting to read.

From the reader’s perspective, there are a billion other articles they could be reading. Why should they read yours? They’re not going to invest 20 minutes to read it in full unless they expect a payoff. Give the reader a reason to continue reading.

Give the reader a reason to continue reading.

When a developer begins reading an blog post, they’re trying to answer two questions as quickly as possible:

  1. Did the author write this for someone like me?
  2. How will I benefit from reading it?

Give yourself the title and the first three sentences to answer both questions.

The benefit you offer can be teaching the reader a new skill, explaining a concept, illustrating a new perspective, or delivering an entertaining rant. You just have to offer the reader something. They’re not going to read your blog post just because it’s there.

Here’s an article I wrote recently that gets straight to the point:

✓GoodBegin a post by showing how it will benefit the reader

if got, want: A Simple Way to Write Better Go Tests

There’s an excellent Go testing pattern that too few people know. I can teach it to you in 30 seconds.

The introduction succinctly communicates that the article is relevant to programmers who use the Go programming language, and the value is teaching them a new technique they can learn quickly.

Preamble still counts as meandering

Some bloggers write a compelling intro but clutter the reader’s path with extras like a subtitle, a bio, an image, or a famous quote. You can include any of these things, but recognize that they count against your “inspire the reader to keep reading” budget. Everything you put in the reader’s path is extra work that chips away at their finite supply of focus.

✗BadForce the reader to wade through excessive preamble

“The reader knows everything I know except this one thing”

Effective teachers compare new concepts to something the reader finds familiar. For example, if you were explaining Jellyfin, you might say, “Jellyfin is a streaming service like Netflix, except it’s open-source and private, so nobody monitors your viewing habits.” The tricky part is knowing what the reader finds familiar.

✗BadAssume the reader knows everything you do

In this article, I’ll introduce Docker to developers who have never heard of it before.

Docker is simple. It’s nothing more than a slick frontend to Linux cgroups. Oh, you know jails in *BSD? Docker is the Linux version of that.

Lots of developers want to use Docker but don’t recognize terms like cgroups, jails, or *BSD. They might not even know what Linux is, especially if they’re seeking out an introduction to Docker.

Instead of assuming the reader has your exact body of knowledge, minimize your assumptions about the reader:

✓GoodMinimize assumptions about the reader’s background knowledge.

Docker is a tool for packaging your app so that it has a consistent, reproducible environment wherever it runs. Docker allows you to define your app’s environment and dependencies in human-readable text files. These files capture your app’s requirements, so you know exactly how it works even after years of tweaks by different teams.

When you write a blog post, think about your target reader. What do they know? Imagine a friend or teammate you know in real life. Write a list of terms they would recognize and terms they would not. Then, re-read your blog post, and whenever you encounter a technical term, think about whether your reference reader would understand it.

Think of a person you know in real life. Read your article as that person and identify which terms feel unfamiliar.

You’re describing the audience I had in mind, but I’ve never tried listing out what that audience knows. Comparing your list against the assumptions in my draft is pretty mind-blowing.

–Tyler Cipriani, when I challenged assumptions about his target reader while editing “The future of large files in Git is Git”

Overreliance on links

When’s the last time you read a book that directed you to stop reading, go buy a different book, read it in full, then continue your original book? Software bloggers do this all the time, though it’s more subtle.

Bloggers often want to mention a term the reader might not know, but they don’t feel like explaining it themselves. Instead, they slap a link on the term and think, “Problem solved!”

The problem is not solved because the reader doesn’t want to interrupt their flow and go read a whole different site just to understand one word.

✗BadRely on links to explain terms to the reader

Assign firewall rules to prevent external traffic from reaching your database.

The FreeBSD manual linked above is an excellent resource, but the chapter on firewalls chapter is about 20,000 words. When you link to such a wordy page, you dump a massive amount of work on the reader.

Instead of relying on a link to do your work for you, give the reader the minimum possible explanation to understand your article.

✓GoodSummarize the relevant information behind a link

A firewall is a system that restricts how hosts and networks communicate with an app. You can increase your web app’s security by configuring firewall rules to only allow inbound requests to your database server when they originate from your app server.

By all means, link to useful resources, but make them a bonus rather than a prerequisite. Keep the reader on the page. Your target reader should be able to enjoy and understand your article from start to finish without clicking any links.

Keep the reader on the page.

The sequel injection bug

These days, everything is either a sequel or a reboot, including blog posts. I see a lot of blog posts that open like this:

In part one, we learned about quintuply linked lists and how they can 100x your daily LOC output. In today’s post, I’ll show you how goto statements let you scrunkmax (a term I invented in part one – remember?).

I hate to break it to you, but most readers have not read part one. If you assume your last article is fresh in the reader’s mind, they’ll think, “Oh, now there’s extra work to even start reading?”

It’s fine to refer to your previous posts, but don’t do it right out of the gate. When you do link to past posts, summarize what was relevant rather than force the reader to go back and read it in full.

If you’re writing about the hobby operating system you built from scratch, then sure, you probably need more than one blog post, but the vast majority of sequel posts could be standalone articles with like 3% more effort.

Excessive formality

Beginner software bloggers suffer from a mass delusion that you have to write in a stiff, overly formal way for people to take you seriously:

Several static analysis tools were utilized by my teammates and myself throughout the duration of this project’s lifetime.

You’re not writing for 80-year-old executives at IBM in 1988. Your field is software development, one of the least pretentious white-collar jobs out there. The person reading your article is probably wearing pajamas and flip flops while eating from a bowl of cereal next to their keyboard. They don’t expect or want you to talk like a legal document.

Just write the way you talk.

✓GoodWrite how you talk

We tried a few static analyzers on this project.

With so many developers delegating their writing to AI, software blogging is becoming bland and homogenous. Readers are hungry for writing with personality. Here’s a random sentence from Joel Spolsky, the best software blogger of all time:

All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea.

– Joel Spolsky, “The Perils of JavaSchools”

It’s not Spolsky’s best line, but it captures his style. It’s casual, personable, and unpretentious. It sounds like he’s telling a story to some friends at lunch. You can see the same style in the writing of Kathy Sierra, Terence Eden, and Raymond Chen. They’re not trying to sound smart–they’re just trying to sound like themselves, and that’s what readers enjoy.

Write the way you talk.

Fumbling on the basics of rendering HTML

The hardest part of software blogging is writing in a compelling way, so it’s frustrating to see so many software bloggers bungle the part that should be easy: making a basic webpage.

Page overflow on mobile

The worst mistake you can make for mobile readers is overflowing the screen so the reader has to scroll back and forth to read your article. Usually, it’s because you have an image or code snippet that insists on being desktop size and screws up the layout of the rest of the page.

Allowing the text to overflow the screen on mobile creates a miserable reading experience.

Desktop versions of Firefox and Chrome both have a mobile preview mode. Check your article with the mobile preview before you publish, and check for common rendering issues.

Don’t underestimate your mobile readers. According to my analytics, 25% of you are reading this page on your phones. On my personal blog, it’s 35%.

Unreadable font

Choose a font color and family that are easy to read. Stop it with this dark gray text on a light gray background. Firefox and Chrome both have built-in tools that flag low-contrast text for you.

Firefox’s accessibility tool identifying low-contrast text

If you don’t feel like searching around for the perfect font, the Braille Institute has a free font called Atkinson Hyperlegible that’s particularly comfortable to read, even for readers with poor vision.

Summary

  • Give the reader a compelling reason to continue reading. Get to it within the title and the first three sentences of your blog post.
    • Common reasons: they want to hear an entertaining story, learn a useful technique, or understand a concept that’s relevant to them.
  • Question your assumptions about what the reader knows and does not know.
    • Think about what concepts and terms you expect the reader to recognize and re-read your article to make sure it matches those expectations.
  • The reader should be able to read your article from start to finish without clicking links or hovering for tooltips.
    • Links should allow the reader to explore topics more deeply, but they should be a bonus rather than a pre-requisite.
  • Avoid presenting your article as a follow-up to a previous article.
    • Assume most readers haven’t read your previous articles. Summarize what’s relevant for them to know rather than expecting the reader to go read all your prior posts.
  • Drop the formality. Write the way you speak in real life.
  • Test your articles in your browser’s mobile view.
    • Make sure that your text doesn’t overflow the screen and force the reader to scroll horizontally as they read.
  • Use browser testing tools to find low-contrast text that makes your article difficult to read.

“Not Quite How Developers Read” and “What the Reader Knows” illustrations by Piotr Letachowicz.

The Daily Front Page 10 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Control Flow, Considered
article

Push ifs up and fors down: The idiom, its algebra, and its limits

by speckx·▲ 124 points·61 comments·debasishg.github.io ↗
Centralize control flow.

Introduction

One of the recommendations from the Tiger Style document of TigerBeetle ..

Centralize control flow. When splitting a large function, try to keep all switch/if statements in the "parent" function, and move non-branchy logic fragments to helper functions. Divide responsibility. All control flow should be handled by one function, the rest shouldn't care about control flow at all. In other words, "push ifs up and fors down".

The programming heuristic push-ifs-up-fors-down suggests that conditional logic (if statements) should be moved upward (towards the caller or earlier in a pipeline), while iterative loops (for operations) should be pushed downward (toward batch processing or later in a tight branch-free loop). This improves clarity and performance by centralizing branching and leveraging bulk operations.

matklad has also blogged about this principle and discussed the many virtues of adhering to this programming idiom.

In the post, matklad describes optimizing code by:

Pushing conditionals ("ifs") up: If a function branches on its input, consider moving that branch to the caller. Consider the example from the post - instead of frobnicate(walrus: Option<Walrus>) unpacking the option internally, the caller handles the None case and the function takes a plain Walrus. The function's type now states its precondition, the input state space becomes narrower and acts as a form of filtering. But the point is where the decision lives, not how much data flows downstream.

Pushing loops ("fors") down: Deferring loops until after filtering or reducing the dataset minimizes unnecessary computations. Rather than calling frobnicate(walrus) in a loop, provide frobnicate_batch(walruses) and let the loop live inside it. So the hot loop runs without a branch and is a candidate for vectorization.

The two moves compose. Given a collection of Option<Walrus> values, the caller discards the Nones and unwraps the rest into a Vec<Walrus>, then hands that to frobnicate_batch, which never has to consider the None case at all.

let maybe_walruses: Vec<Option<Walrus>> = ...;
let walruses: Vec<Walrus> = maybe_walruses.into_iter().filter_map(|w| w).collect();
frobnicate_batch(&walruses); // never sees a None

If you think a bit, the push-ifs-up-fors-down principle has far broader applications. This post explores some of the broader perspectives of this principle with respect to relational database query optimizations and functional programming and category theory.

Analogy in Database Queries: Projections Early, Joins Late

The same principle appears in database query optimization. In SQL query planning, it’s well-known that one should perform projections and selections as early as possible and defer joins or expansive operations until later. But the vocabulary runs upside-down. A query plan is a tree whose leaves are table scans and whose root produces the result. Data flows up from the leaves, so "down the tree" means "earlier in execution". When an optimizer talks about pushing a predicate down, it means evaluating it as early as possible, which is the database counterpart of what the rest of this post calls "up" or "early".

Early projections and selections (Push down): In database terms, a projection (e.g., SELECT with specific columns) reduces the dataset's width by selecting only the necessary columns early in the query execution. And selections (WHERE clause) act as the filter. Both are pushed down as part of the plan tree so that they get to execute early and filter out irrelevant data, reducing the amount of data passed to later operations.

Deferring joins (Push joins up): Joins, which combine data from multiple tables, are computationally expensive. The optimizer moves selections and projections below the joins, so joins run on smaller inputs. The effect is that the expensive combining operators run over the smallest inputs the query semantics allow.

Vectorized execution (the "for"): Another database analogy of pushing fors down is the change in execution semantics. Volcano style execution processes row at a time, where each operator is called once per tuple through a virtual next(). The alternative is the vectorized or batch execution, where each operator is called once per batch of a thousand or so tuples and runs a tight loop inside. That is frobnicate versus frobnicate_batch, at the level of a query engine: the per-call overhead and the per-call decisions are paid once per batch, and the inner loop is branch-light and cache-friendly.

Analogy in Functional Programming and Category Theory

Let's take a look at the same principles through the lens of functional programming and category theory.

Pushing-Ifs-Up as a Restriction to a Subobject

In category theory, when we talk about the category of sets (or, loosely, of types in programming), we can have a predicate p : A -> Bool. Elements can either satisfy the predicate or not. Now consider the subset of elements that satisfies the predicate, given by {a ∈ A | p a}. And add to it the morphism {a | p a} ↪ A that defines the inclusion. The subset along with the morphism defines a subobject in category theory.

Note the hooked arrow in the morphism. It's intentional and it indicates that it represents a specific type of morphism - monomorphism (mathematicians love to define arrow types :-)). In Set, a monomorphism is an injective function: the inclusion sends each element to itself, so distinct inputs give distinct outputs.

Now we have the link back to matklad:

  • Before: the callee takes any A and runs if p(a) inside itself.
  • After: the caller runs the test, and the callee's input type is the subset.

The callee no longer needs the if, because every input it can receive has already passed. In code you represent the subset with a type: Walrus instead of Option<Walrus>.

Categorically speaking, Option<Walrus> is the coproduct 1 + Walrus, which is either nothing or a walrus. A function that takes an Option<Walrus> and branches inside is really a function out of a coproduct, and by the universal property of coproducts such a function is exactly a pair of functions, one for each summand. Pushing the if up factors that pair apart: the caller deals with the 1 summand, and the core function is just the Walrus component.

Filter, Map and the Law That Relates Them

Same principle in a different manifestation - the algebra of combinators. You commonly hear the advice of "filter before you map". But when exactly is this a piece of legitimate rewrite ? Because the two following expressions are not equivalent:

filter p (map f xs)   -- p inspects the *output* of f
map f (filter p xs)   -- p inspects the *input* of f

In the first line p has type B -> Bool; in the second it has type A -> Bool. The law that actually relates them is:

filter p . map f  ==  map f . filter (p . f)

This follows from parametricity, and it is easiest to see by factoring filter through Maybe:

keep :: (a -> Bool) -> a -> Maybe a
keep p x = if p x then Just x else Nothing

filter p = catMaybes . map (keep p)

Here filter p itself is not a natural transformation - it cannot be, since p fixes the element type and you cannot draw the naturality square (try it!) - but catMaybes :: [Maybe a] -> [a] is one, and that is where the naturality lives:

map g . catMaybes  ==  catMaybes . map (fmap g)

With that, the law is a short calculation. Since keep p . f == fmap f . keep (p . f):

filter p . map f
  == catMaybes . map (keep p) . map f
  == catMaybes . map (keep p . f)
  == catMaybes . map (fmap f . keep (p . f))
  == catMaybes . map (fmap f) . map (keep (p . f))
  == map f . catMaybes . map (keep (p . f))       -- naturality of catMaybes
  == map f . filter (p . f)

Notice that the right-hand side is not automatically cheaper: filter (p . f) still computes f for every element in order to test it. The rewrite pays off when p . f simplifies to a cheap predicate q on the input - typically because p inspects a part of the value that f leaves alone. Then filter p . map f == map f . filter q, and f runs only on the survivors. Both sides are still a single O(n) pass; what you save is the calls to f on elements that were going to be discarded.

And push-if-up-fors-down pays off!

Summary

The main takeaway from the above discussion is that we can have general principles that guide us towards a better algebra of the code base or even the whole system. But all of these work subject to some constraints that must hold good across the components.

  • Taking an if out of a loop is valid when the condition is loop-invariant. A per-element condition cannot leave the loop. It can only move to the boundary and be recorded in a type, as Walrus instead of Option<Walrus>.
  • Pushing a selection below a join is valid when the predicate references columns from only one side of the join.
  • Filtering before mapping is valid as filter p . map f == map f . filter (p . f), and it saves work only when p . f reduces to a cheap predicate on the input, typically because p inspects a part of the value that f leaves alone.

So, it's the algebra that tells you which rewrites are legal. In the filter/map case above, it's the naturality of catMaybes that drives the legality and helps you reason about the overall structure of the code.

For the "fors-down" part, it's more about the cost than the equivalence. You change the shape of the arrow from A -> B to [A] -> [B] so that you pay the setup cost once per batch.

The Daily Front Page 11 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Science Desk: Chemistry’s Mirror
article

Nobel Prize in Chemistry 2026 to Henri B. Kagan and Kenso Soai

by sasvari·▲ 295 points·55 comments·nobelprize.org ↗

The Royal Swedish Academy of Sciences has decided to award the Nobel Prize in Chemistry 2026 to

Henri B. Kagan
Université Paris-Sud, France

Kenso Soai
Tokyo University of Science, Japan

“for the discovery of non-linear effects and autocatalysis in asymmetric organic synthesis”

They made chemistry choose a mirror image

Some molecules, such as amino acids, exist as two variants that are each other’s mirror image. However, living organisms only contain one of these mirror images. How chemical asymmetry such as this could have emerged was long a mystery to chemists. Henri B. Kagan and Kenso Soai are awarded the Nobel Prize in Chemistry 2026 for discovering a solution to this puzzle.

Life’s chemistry is what chemists call homochiral, after the Greek words for “same” and “hand”. Like hands, all amino acids exist as two mirrored variants, but only one of them is found in the proteins in your cells. The other is rarely found in nature.

For a long time, chemists wondered how homochirality can emerge. When they began to experiment with chemical reactions that can form two mirrored molecules, they always obtained equal proportions of both in their test tubes. However, chemists strived to produce only one of these mirror images, because in the development of molecules that will interact with living beings – such as in pharmaceuticals – only one mirror image will have the desired effect.

The Nobel Prize in Chemistry 2026 recognises discoveries that have enabled chemists to drive chemical reactions that lead to homochirality.

“Henri Kagan and Kenso Soai have provided a solution to a chemical mystery that is over a century old: how homochirality can emerge spontaneously. The chemical reactions they have developed are spectacular,” says Heiner Linke, chair of the Nobel Committee for Chemistry.

Henri Kagan took the first decisive step in 1986, when he discovered a new way of manipulating chemical reactions. This allowed him to create a greater excess of one of the mirror images than had previously been thought possible.

Kenso Soai took the next step. In 1995, a key publica­tion describes how he designed the first ever chemical reaction that had the potential to be homochiral. In 2003, he finally succeeded. He presented a reaction in which only one of the two possible mirror images was formed. Other than life itself, no one had previously achieved this feat.

Thanks to Henri Kagan and Kenso Soai, we now know how homochirality can emerge. Their discoveries have been decisive for chemists who design reactions for the manufacture of pharmaceuticals.

Illustrations

The illustrations are free to use for non-commercial purposes. Attribute copyright ©Johan Jarnestad/The Royal Swedish Academy of Sciences

Illustration: Nobel Prize in Chemistry 2026 (jpg)
Illustration: About chirality (jpg)
Illustration: An asymmetric reaction (jpg)
Illustration: Kagan discovers a new phenomenon (jpg)
Illustration: The Soai reaction (jpg)

The Daily Front Page 12 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Science Desk: Chemistry’s Mirror
repository

AI-assisted proof of optimal packing for 11 squares

by bluepeter·▲ 113 points·52 comments·github.com ↗
★ 24⑂ 1 forks Lean

Lean formalization of the optimality proof of the 11 square packing

The complete optimality proof passed verification with native numerical certificates. The completed EvolvingPrograms verification run accepted all 7,920 local Lean modules, and its final audit reports zero admissions. This repository imports those exact proof sources and pinned build configuration from commit 1bf942a7af1ea330e95489d8997deebd4227ca71. See the verification report for evidence and scope.

Selected expensive, exact numerical certificate checks use native_decide. Geometry, checker soundness, and proof assembly retain ordinary Lean proofs. Consequently the final theorem trusts Lean's kernel and native compiler; this is not a kernel-only verification claim. The approved numerical declarations and their exact source hashes are recorded in verification/native-certificates.json.

The optimal side length is

[ T = \frac{6u+4}{1+2u-u^2}, ]

where u is the unique root in (9/25,37/100) of

[ 5u^8-10u^7-2u^6+14u^5+12u^4-6u^3+2u^2+2u-1=0. ]

The construction attains approximately 3.8770835900228141773. The model allows arbitrary orientations, legal boundary contact, and disjoint open interiors. The public statements in ElevenSquare/Optimality.lean and the complete T03 source tree are unchanged from this repository's previous main branch.

Entry points

File Purpose ElevenSquare/Foundations.lean Geometry, exact endpoint, attaining construction, closed-cell cover, and finite case reduction. ElevenSquare/Pending/ Original public interfaces, now discharged by the integrated proof. The directory name is historical. ElevenSquare/Interop/Wand125/ Connections to the incorporated upstream certificate results. ElevenSquare/Tasks/ Geometric arguments, checkers, certificate data, and local analytic proofs. Sqpack/ Incorporated certificate checkers, generated proofs, and simplifications. ElevenSquare/Optimality.lean Unconditional optimality and side-length lower-bound theorems. ElevenSquare/Verification.lean Axiom queries for the public proof targets.

Reproduce verification

The project pins Lean 4.34.1 and Mathlib revision d13f23b723b8a846827a245b89c10fc7d3f11612. Keep lake-manifest.json unchanged. On Linux with Python 3, Git, curl, and tar:

bash scripts/run_verification.sh --bootstrap --jobs 2

On macOS, first install the elan launcher, then use the same command. The bootstrap can prepare the pinned toolchain and dependency cache when elan is already installed. Choose a worker count appropriate to the machine; modules are compiled serially. Existing valid receipts are reusable. Add --fresh to force a complete replay; Ctrl-C stops the runner cleanly.

The command checks every local module and performs the final source, receipt, dependency, and axiom audit. Require OPTIMALITY_PROVED_WITH_NATIVE_CERTIFICATES, zero admissions, and trust_model: lean_kernel_and_native_compiler in the final result. Reaching 100% of compiled modules alone is not sufficient.

A source-only check, without Lean, is:

python3 scripts/check_sources.py

The manual workflow and Ubuntu instructions also support resumable verification. Pushes do not start a workflow. The successful source run used EvolvingPrograms' larger runner; it does not establish a cold-build runtime or a 2–3 hour macOS guarantee.

Do not run historical materialization commands or verify.py --setup on this snapshot: they restore superseded generated sources. Build objects and logs belong in ignored .lake/ and .verification/ directories.

Credits and provenance

We thank EvolvingPrograms, @ctjlewis, and every project contributor for the formalization and verification work. See ACKNOWLEDGEMENTS.md for individual and upstream credits, PROVENANCE.md for source history, and integrations/wand125 for retained notices. Historical simplification notes and partial-audit records are preserved; their old unfinished-status statements are superseded by the completed-run report.

The Daily Front Page 13 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Science Desk: Chemistry’s Mirror
article

Visa, Mastercard, major banks facing new litigation over 'anticompetitive' fees

by DeepLogin·▲ 519 points·375 comments·classaction.org ↗

A San Diego pizzeria alleges in a proposed class action lawsuit that Visa, Mastercard and several of the nation’s largest banks have maintained a conspiracy to artificially inflate the fees merchants pay on credit card transactions, despite a more than $5 billion class action settlement in recent years over the same allegedly anticompetitive market restraints.

The 134-page lawsuit contends that the effectively non-negotiable credit card transaction fees imposed by the defendants amount to “a deadweight toll on virtually every credit card purchase in America,” totaling hundreds of billions in “monopoly rents” at rates that “no competitive market would produce.”

According to the complaint, Visa and Mastercard have worked with the bank defendants—Bank of America, Capital One, Chase Bank, Citibank and Wells Fargo—for decades to set uniform schedules of interchange fees, i.e., the effectively non-negotiable charges merchants must pay to credit card-issuing banks on each transaction. The case charges that the defendants, to maintain the high interchange fees and “ensure merchants cannot escape them,” have implemented a “web of anticompetitive rules,” or restraints, that on the whole have disabled any market forces that could rein in or otherwise discipline the credit card transaction costs imposed on merchants.

Broadly, the interlocking restraints set and maintained by the defendants have forced merchants that accept any Visa and Mastercard credit card to accept all such cards, regardless of cost, thereby eliminating any incentive for issuing banks to compete by lowering their fees, the suit says. The lawsuit claims the challenged restraints have also prevented merchants from being able to steer customers to lower-cost payment options—for instance, by surcharging based on a customer’s use of a particular card. These and other restraints have prevented competition among issuing banks and other credit card networks, allowing the financial giants to raise their fees every year “without consequence,” the case alleges.

“The scale of this ongoing scheme is staggering: merchants now pay over $100 billion annually in fees to accept Visa and Mastercard credit cards, enriching Defendants at merchants’ expense,” the class action lawsuit states.

The filing claims Visa and Mastercard have also exploited the allegedly anticompetitive market handcuffs to artificially inflate their own network fees—comprised of per-transaction fees and fixed fees—charged to merchants as a cost of accepting the companies’ credit cards, adding “an additional supracompetitive tax on each credit card transaction.”

The suit states that in December 2019, the court approved a class action settlement in years-old multidistrict litigation that provided upward of $5 billion in monetary relief to merchants, but only for a “class period” ending on January 24, 2019. Although a separate “equitable relief” class action settlement seeking injunctive relief has been preliminarily approved, the benefits will apply only prospectively and merchants will not receive “a single dollar in compensation ... for the fees they have paid since January 25, 2019.”

According to the complaint, while some merchants obtained relief for pre-2019 transactions and some may benefit from rule changes in the future, merchants that accepted Visa and Mastercard credit cards after January 2019 have “borne the full brunt of Defendants’ continuing anticompetitive conduct.”

“This settlement structure leaves millions of American merchants without any remedy for their ongoing injuries,” the lawsuit attests.

The interchange fees class action lawsuit looks to represent all individuals, businesses and other entities that have accepted Visa-branded and/or Mastercard-branded credit cards in the United States from January 25, 2019 until the alleged “anticompetitive effects” of the defendants’ conduct cease.

The Daily Front Page 14 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — The Web’s Trust Boundary
article

Hackers obtain counterfeit TLS certificates for Google and other large services

by colinprince·▲ 137 points·49 comments·arstechnica.com ↗
Attackers hijacked three top-level domains and used their control to mint counterfeit TLS certificates.

Compromise of 3 domain registries allows hackers to walk off with unauthorized certs.

Broken HTTPS TLS

Credit: Getty Images

Attackers hijacked three top-level domains and used their control to mint counterfeit TLS certificates for Google and other large organizations, Google said Tuesday.

The attackers launched a series of attacks on the .gh, .sl, and .as country code top-level domains (ccTLDs) and then modified authoritative DNS records for selected domains within those namespaces. By controlling those DNS records, the attackers were able to pass automated domain control validation checks and obtain unauthorized certificates for “several Google domains” and “several leading global brands and widely used online services.” Google said it updated Chrome to block all certificates it identified as unauthorized, and worked with the issuing certification authorities to ensure the unauthorized certificates for Google properties were revoked.

Certificate issuance: The weak link in the chain

TLS certificates are the cryptographic credentials that underpin authentication and encryption protections for websites, mail servers, and other Internet infrastructure. These x.509 certificates use a digital signature to bind a domain name such as google.com to a public key. The public key is publicly available, while the private key is held only by the website operator. When a connection shows that the keys match, the visiting party knows it’s connected to the authentic site rather than an impostor. Possession of unauthorized certificates allows attackers to cryptographically impersonate the affected infrastructure.

Google didn’t identify the affected domains it owns or name any of the other organizations whose domains were affected. While noting that Chrome users do not need to take any action to be protected, Google cautioned domain owners not to rely solely on browser-side interventions to protect their users. The company is advising domain owners to monitor certificate transparency logs for unexpected certificate issuance across their domains and to publish restrictive Certification Authority Authorization DNS records to prevent attackers from reusing cached validation data after DNS control is restored.

“While Chrome took steps during these incidents to identify and block suspected unauthorized certificates across the affected ccTLDs, browser-side intervention should not be relied on to protect your users,” Google said. “Due to the complexity of DNS hijacks, we cannot guarantee that our analysis identified every affected domain, nor do Chrome interventions reliably protect non-Chrome users.”

It’s not immediately clear what the other affected organizations are, how many unauthorized certificates were issued, or if all of them, except for those for Google domains, have been blocked. The process for officially revoking certificates is slow and cumbersome, so browser makers have devised quicker methods to block specific certificates at the browser level. With all known unauthorized certificates now blocked, the risk is mitigated, but as Google noted, any certificates that remain undiscovered pose a threat.

Google noted that the incident didn’t involve the compromise of the infrastructure of any of the affected domain owners and that certificate authorities followed all requirements. With control of the three ccTLDs, the attackers were able to change the IP addresses of a selected list of websites. With the ability to send and receive traffic on those sites, the attackers were able to modify authoritative DNS records and nameserver delegations for selected domains, allowing them to pass industry validation checks requiring an applicant to prove control of the domain.

This isn’t the first time threat actors have obtained unauthorized certificates. A 2011 hack of Netherlands-based certificate authority DigiNotar allowed attackers to mint counterfeit certificates for Google.com and more than 200 other high-traffic domains. The certificates were used against at least 300,000 people with ties to Iran as they browsed the sites impersonated by the forged certificates. There have been many similar incidents since, most often through failures by certificate authorities but also domain holders.

The Daily Front Page 15 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — A Tiny Network Appliance
repository

ESP32-C3 Adblock

by jayhoon·▲ 183 points·77 comments·github.com ↗
★ 2,242⑂ 201 forks C++

Pi-hole-class DNS ad-blocker on a $2 ESP32-C3 (no PSRAM): 537k domains as 40-bit FNV-1a hashes in flash, binary-searched. UDP DNS sinkhole + web dashboard. https://youtube.com/shorts/RaxszOUMi8E?feature=share

日本語 README

A Pi-hole-style DNS ad-blocker that runs on a $2 ESP32-C3 — no PSRAM required.

📰 Featured on Tom's Hardware, XDA Developers, and Korben.

The trick everyone misses: you don't need to keep the blocklist in RAM. Store the domains as sorted 40-bit hashes in flash and binary-search them. 140,000+ domains fit in ~0.7 MB of flash and are matched in ~10 ms, using ~50 KB of RAM.

query in ──▶ extract domain ──▶ FNV-1a hash (+ parent suffixes)
         ──▶ binary-search the flash hash table
              ├─ hit  ──▶ answer 0.0.0.0   (sinkholed)
              └─ miss ──▶ forward to upstream resolver, relay the reply

Why this is interesting

Most ESP32 DNS sinkholes load the blocklist (domain strings) into RAM, so they demand PSRAM. This project stores fixed 5-byte (40-bit) hashes in flash instead:

string-in-RAM approach this (hash-in-flash) Hardware ESP32 + PSRAM ($8) ESP32-C3, no PSRAM ($2) 141k domains ~2.5 MB of RAM 0.67 MB of flash RAM used most of it ~50 KB Lookup string compare ~18 flash reads (~10 ms incl. WiFi RTT) Collisions n/a 0 at 141k (1 at 537k)

Why 40 bits? It's the sweet spot for this flash budget. Collisions follow the birthday bound — at 141k domains you get ~0, at 537k about 1 (i.e. one unlucky domain gets over-blocked). Dropping to 32 bits would save 20% of the flash but cost ~7 collisions at 250k; going to 64 bits wastes 3 bytes per domain to solve a problem you don't have.

The same trick works on bigger chips — it isn't a C3 workaround. On a 16 MB ESP32-S3 these hashes hold ~2.7M domains vs ~466k for strings in 8 MB of PSRAM. Hashes in flash beat strings in PSRAM basically everywhere; the C3 just makes it undeniable.

Hardware

  • Any ESP32-C3 board (tested on a C3 SuperMini), 4 MB flash, no PSRAM needed
  • Classic ESP32 (DevKit / WROOM, 4 MB) also builds: pio run -e esp32dev -t upload (community-contributed, compile-tested; the C3 is the tested target)
  • Power it from a stable USB source (a phone charger or your router's USB port). Cheap/loose USB-C→A adapters can brown out the radio during WiFi transmit.
  • A USB-A → USB-C dongle lets it plug straight into the spare USB port on the back of most routers — no power supply, no extra box.

Enclosure

A printable case for the C3 SuperMini: hardware/esp32-c3-supermini-enclosure.stl

Printing notes:

  • No supports needed; 0.2 mm layers, ~15% infill is plenty.
  • Keep the antenna end clear. The C3's PCB antenna is the zig-zag trace on the short edge opposite the USB-C port — don't bury it in solid plastic or put metal near it, or your RSSI will suffer.
  • Leave the vents open: the board idles around 45–55 °C.

Build & flash (PlatformIO)

One USB flash to get going — after that, firmware and blocklist both update over WiFi (see below).

⚠️ Use a current PlatformIO — the VSCode PlatformIO extension's bundled core, or pip install -U platformio in a venv. The distro/apt platformio package (e.g. 4.3.4) is too old and fails with AttributeError: ... 'resultcallback' (issue #4). A one-click browser installer is on the way (hosting TBD).

# 1. copy the secrets template (gitignored, stays local) and edit it:
#    - WIFI_SSID / WIFI_PASS are optional — leave the placeholders and use the
#      on-device setup portal instead (below).
#    - WEB_USER / WEB_PASS / OTA_PASS are NOT optional: they gate the dashboard's
#      state-changing endpoints (/ban, /addblock, /upload, /update, /setupdate,
#      /forgetwifi) and network OTA. Pick real values — these used to be wide
#      open to anyone on the LAN.
cp src/secrets.example.h src/secrets.h
#    then edit src/secrets.h

# 2. build the blocklist hash table (default = StevenBlack base + Hagezi Light,
#    ~100k entries, WhatsApp/social safe)
python3 tools/build_blocklist.py data/blocklist.bin

# 3. flash firmware + the blocklist filesystem (the one and only USB flash)
pio run -t upload
pio run -t uploadfs

# 4. watch it boot, note the IP / open the dashboard
pio device monitor          # -> http://c3adblock.local

Your own blocklists

build_blocklist.py OUT.bin [SOURCE ...] takes any mix of URLs and local files, in any of these formats:

  • hosts files — 0.0.0.0 ads.example.com tracker.example.com (all domains on the line are included)
  • plain domain lists — one domain per line
  • AdGuard / Adblock basic rules — ||ads.example.com^ blocks, @@||ok.example.com^ removes a domain (e.g. to mirror an AdGuard Home allowlist)

A blocked domain also blocks its subdomains. Rules a DNS hash list can't express (regex, wildcards, $ modifiers, cosmetic ## rules) are skipped and counted. An @@ rule only un-blocks that exact entry — it can't carve a subdomain out of a blocked parent. If a source can't be downloaded the build stops instead of silently producing a smaller list (--allow-missing to override).

WiFi setup (no re-flash needed)

If it can't connect (or you never set secrets.h), it starts an open access point C3-AdBlock-XXXX with a captive portal — join it from a phone, pick your network, type the password, done. To move it to a new network later: click Forget WiFi on the dashboard, or hold the BOOT button while powering on, and the setup portal comes back. (/forgetwifi requires auth now, so it's no longer a bare URL you can just visit — see Security below.)

Over-the-air updates (no more USB)

The dashboard at http://c3adblock.local does it all:

  • Blocklist — drop a freshly built blocklist.bin into Blocklist → Upload, or set a URL under Remote auto-update and the device pulls a prebuilt blocklist.bin on a schedule. A fresh default list is rebuilt every Monday by GitHub Actions and published at a stable URL, so pasting this once keeps a device current on its own: https://github.com/M-Abozaid/esp32-c3-adblock/releases/download/blocklist/blocklist.bin

  • Firmware — upload .pio/build/c3/firmware.bin under Firmware → OTA update; the device verifies it and reboots into the new image. Or push over WiFi from the CLI:

    pio run -t upload --upload-port c3adblock.local --upload-protocol espota
    

4 MB flash tradeoff: firmware OTA needs two app slots, which leaves ~1.3 MB for the blocklist (~250k domains max). The aggressive 537k "ultimate" list only fits the single-app partition table (no firmware OTA). Pick your tradeoff in partitions.csv.

Security

The dashboard's read-only view (/, /stats.json) stays open, but every state-changing endpoint requires HTTP Basic Auth (WEB_USER/WEB_PASS from secrets.h):

  • /ban, /addblock, /unblock, /forgetwifi
  • /upload, /update (blocklist and firmware OTA)
  • /setupdate, /fetchnow

Network OTA (ArduinoOTA, e.g. pio run -t upload --upload-port c3adblock.local --upload-protocol espota) requires OTA_PASS from the same file.

Without this, anyone who could reach the device on the LAN could reflash it with arbitrary firmware or rewrite the blocklist with zero credentials — worth knowing given the device sits in the path of every DNS query on your network. Custom blocked-domain names are also HTML-escaped before being rendered on the dashboard, closing a stored-XSS path where a domain string containing markup (added via /addblock) would otherwise execute in the viewing browser.

Basic Auth here is a LAN-trust-boundary control, not encryption. Everything is plain HTTP on :80 — this chip has no realistic budget to run a TLS server. Basic Auth credentials are base64 (not encrypted) and sent on every authenticated request; anyone who can already sniff your LAN traffic (open/guest WiFi, ARP spoofing) can read them off the wire. This hardens against the common case — another device on your network hitting the API with no credentials at all, or a browser tab CSRF'ing it — not against an on-path network attacker.

CSRF via cached Basic Auth: browsers auto-attach cached Basic Auth credentials to any subsequent request to an already-authenticated origin — including one triggered by a totally unrelated page the same browser visits later (e.g. ``, no JS required). That would let any webpage silently drive this API once you've logged into the dashboard once, regardless of who's on your LAN. Every mutating endpoint above now also requires a custom X-Requested-With: c3-adblock header, which a plain <img>/auto-submitted <form> CSRF can't attach (only same-origin fetch() can, which is what the dashboard's own JS does) — this is why /forgetwifi is no longer a bare URL you can visit directly; use the dashboard button instead.

Default credentials: if secrets.h still has the placeholder CHANGE_ME_WEB_PASSWORD / CHANGE_ME_OTA_PASSWORD values from secrets.example.h, the device boots with a "password" that's public (it's sitting in this repo's example file). The firmware logs a warning over serial and shows a banner on the dashboard when this is the case — but it will still boot and run, so don't skip setting real values in secrets.h before trusting this on a network you don't fully control.

Out of scope for now: the WiFi setup portal's access point (C3-AdBlock-XXXX) is still open (unencrypted) by design — it needs to be joinable without knowing a password first. The real WiFi password you type into the portal is only as safe as that local radio link during the brief setup window.

Use it

Point a device's DNS at the C3's IP, or add it as a secondary resolver behind your main DNS. Test:

dig @<c3-ip> doubleclick.net   # -> 0.0.0.0  (blocked)
dig @<c3-ip> github.com        # -> real IP  (forwarded)

Gotchas (learned the hard way)

  • ModemManager (default on Fedora/Ubuntu) grabs /dev/ttyACM0 and toggles DTR/RTS, which resets the C3 and blocks serial. Fix:

    sudo systemctl stop ModemManager
    echo 'ATTRS{idVendor}=="303a", ENV{ID_MM_DEVICE_IGNORE}="1"' | sudo tee /etc/udev/rules.d/99-esp-no-modemmanager.rules
    sudo udevadm control --reload-rules && sudo udevadm trigger
    
  • The C3's USB-Serial-JTAG console can swallow early boot output until the host connects (while(!Serial) helps).

  • DNS clients add an EDNS OPT record; a blocked reply must contain only the question + answer (ANCOUNT=1, NSCOUNT=ARCOUNT=0) or it's malformed.

Done / how it could grow

  • ✅ Web dashboard — per-client block/allow counts, ban a client, add custom domains
  • ✅ mDNS (c3adblock.local) for discovery
  • ✅ OTA — firmware + blocklist update over WiFi, plus scheduled remote blocklist pulls
  • ✅ Captive-portal WiFi setup (no hardcoded creds) + one-click browser web-installer
  • ⬜ Bucketed prefix index — ~18 flash reads/lookup → ~1–2 (issue #3), the throughput win
  • ⬜ Act as the DHCP server (hand itself out as DNS) for true plug-and-play

Credits

Inspired by s60sc/ESP32_AdBlocker — the "answer 0.0.0.0 for blocklisted domains" idea. This is an independent from-scratch implementation focused on the hash-in-flash optimization for PSRAM-less chips.

License

MIT — see LICENSE.

The Daily Front Page 16 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — A Console in the Browser
repository

God of War on PSP, recompiled to WebAssembly and running in the browser

by sn001·▲ 178 points·95 comments·github.com ↗
★ 121⑂ 1 forks C++

PSP games in the browser without an emulator: static recompilation to WebAssembly, an HLE kernel and a WebGL2 renderer

PSP games running in the browser without an emulator. The game's MIPS machine code is translated ahead of time into C++, compiled to WebAssembly, and linked against a small reimplementation of the PSP's operating system and graphics chip that draws with WebGL2.

God of War: Chains of Olympus running in a browser
Watch the full recording (1:46)

Title menu The page Combat

The first title brought up this way is God of War: Chains of Olympus. It plays from boot through the menus, cutscenes and combat, at 60 frames per second in the scenes measured so far in Chrome and Firefox on a laptop, at up to four times the PSP's resolution, and on phones with on-screen touch controls. Music, speech and sound effects work. Movies are skipped for now.

God of War: Ghost of Sparta followed through the same scripts. It needed the PSP's DRM decryption for one small file, a handful of system calls and a lighting fix, and no performance work: it runs at 55 to 60 frames per second at three times the native resolution.

No game data is included here. You bring a disc image of a game you own, and the scripts in this repository turn it into a web page on your machine.

How it works

Recompilation. PSPRecomp analyses the decrypted executable, finds its functions and emits C++ for them in translation units of 16 KiB of guest code each. That code runs against a register file and a model of the PSP's memory. This project adds a handful of fixes to PSPRecomp (in patches/) and a new target for it, the web profile in profile/.

A small PSP kernel. Whatever the game asks of the PSP's operating system is answered by high-level emulation in profile/host: cooperative threads with semaphores, event flags and callbacks, memory partitions, the file system (with disc data streamed over HTTP Range requests, so only the executable is downloaded up front), the controller, audio output, the save data and message dialogs, and the movie player's bookkeeping. Guest time advances in frames, so a game sees a steady 60 Hz however fast the host runs.

Graphics. The GE, the PSP's graphics chip, is fed display lists. ge.cpp decodes them on the CPU, including vertex formats, skinning, lighting, texture generation, clipping and backface culling, and hands batched triangles and render state to ge_gl.cpp. There, framebuffers become WebGL render targets keyed by their place in VRAM, so effects that render to a texture and read it back stay on the GPU. Pixel format reinterpretation (games read 32-bit buffers as 16-bit textures and back), the PSP's stencil-in-alpha, fog and block transfers are emulated on the GPU as well, and everything can render at one to four times the native 480×272.

Two threads, like the PSP. On the PSP the graphics chip works through one frame's display list while the CPU prepares the next, and games are written around that. Here the GE and its WebGL context run on a worker thread with an OffscreenCanvas: queuing a list returns at once and only the explicit sync calls wait. A frame costs whichever thread is busier rather than the sum of both.

Sound. Sound effects come from a reimplementation of the PSP's voice synthesizer (32 voices of ADPCM with pitch and ADSR envelopes), music and speech from ATRAC3+ streams decoded with the FFmpeg decoder, and the mix goes to an AudioWorklet.

Lessons from making it fast

The first playable build ran at 6 frames per second. Most of the way to 60 came from finding out where the time actually went rather than from making the renderer faster.

God of War swaps its framebuffer without waiting for the vertical blank, so with nothing to hold it back the game drew around eight frames for every one that reached the screen. Holding the thread that swaps twice within one blank until the next one, a trick PPSSPP also uses, cut the work per displayed frame by a factor of eight on its own.

In WebAssembly, reading the clock through std::chrono goes through clock_gettime and a BigInt conversion in JavaScript. Profiling timers that read it per primitive took about a third of the frame until they were made to read performance.now() only when profiling is on.

Firefox copies every WebGL buffer upload to its GPU process, and after any change to an index buffer it re-validates the whole buffer on the next draw. A shared 4 MB index ring therefore dropped Firefox to 3 frames per second; giving every draw a small index buffer of its own fixed it. The opposite fix, writing vertex data piece by piece into one large buffer, helped no browser and made phones stall, because mobile GPU drivers wait or copy when a buffer the GPU may still be reading is modified.

The PSP keeps its stencil buffer in the framebuffer's alpha channel, and God of War uses it for projected shadows and to limit a blur pass. Mirroring stencil and alpha into each other with full-screen passes was correct but cost 60 million extra pixels per frame at 4×. Tracking which rectangles, which stencil bits and which constant values actually changed brought that down to about 7 million.

Finally, God of War queues each frame's display list and keeps working on the next frame before it waits. Running the GE on its own thread turned the cost of a busy fight from game plus graphics, around 17 ms in Firefox, into the larger of the two, around 10 ms.

A second game

Ghost of Sparta went from a ZIP to a page through port.sh without changes to the scripts or the recompiler, and then waited forever at boot. It opens a 176-byte file with the PSP's DRM flag, hands its key to sceIoIoctl and checks what it reads back. The file is in PGD, the format amctrl.prx decrypts with the KIRK crypto engine, and for disc games that comes down to AES-128 with three keys from KIRK's key vault: a CMAC-based check of the header and a counter mode for the data. profile/host/pgd.cpp implements it.

The next problem was a white sky, and the menus had the same white haze. Bisecting the draws of one frame led to a cloud layer drawn with lighting on, whose opacity comes from the alpha of the global ambient light, a factor the lighting code had left out. Performance needed no work: a frame costs 6 to 8 ms, as in Chains of Olympus.

Port a game of your own

You need git, CMake, Ninja, a C++20 compiler and Python 3. Everything has been run on Linux; macOS should be able to build the browser version but is untested, and the native test runner needs EGL and OpenGL ES headers (libegl-dev and libgles-dev on Debian and Ubuntu). Expect about 2 GB of disk space per game for the extracted disc, the generated code and the builds.

git clone https://github.com/snuri00/psp-web-recomp.git
cd psp-web-recomp
scripts/setup.sh                                   # PSPRecomp, the patches and the Emscripten SDK

PSP_DECRYPT=/path/to/decrypter scripts/port.sh mygame "My Game.iso"
scripts/serve.sh mygame                            # http://localhost:8613/

port.sh extracts the disc (an ISO, a ZIP containing one, or an already extracted folder), decrypts PSP_GAME/SYSDIR/EBOOT.BIN, translates it to C++, writes the manifest for streaming the rest of the disc and builds the page. It takes a few minutes; God of War goes from ZIP to playable page in about four on an 8-core laptop. Add --native to also build a headless runner that can dump frames to images and record audio, which is the quickest way to see how far a new game gets.

Executables on retail discs are encrypted. PSP_DECRYPT names any tool that is called as tool <in> <out> and writes a plain ELF, such as DecEboot or pspdecrypt. PPSSPP can also dump a decrypted executable while it runs a game (Settings, Tools, Developer tools).

Set your expectations accordingly: two games have been brought up so far, and both are Ready at Dawn titles built on the same engine, so they say little about how far a game from another studio gets. Another game will most likely stop at a system call nobody implemented yet, which is logged as [hle] unimplemented ..., or use a GE feature this renderer does not handle. docs/internals.md describes the tools for finding out what is missing, and the code is organized so that adding a call is a few lines.

Hosting

The page uses SharedArrayBuffer for its threads, so it has to be served cross-origin isolated, with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp. scripts/serve.py sends both headers and supports the Range requests the disc streaming relies on. To try it on a phone, put a tunnel in front of it, for example cloudflared tunnel --url http://127.0.0.1:8613, which passes the headers through. Anyone with the address can load the game while the tunnel runs, so keep it to yourself and stop it when you are done.

Browsers that cannot draw WebGL2 on an OffscreenCanvas fall back to a single thread automatically; ?threads=0 forces that, and ?profile adds a per-frame timing breakdown to the status bar.

Legal

This repository contains only original code, the PSPRecomp patches and third-party code under its own license. It contains no game code or data. The generated C++ and the built WebAssembly are translations of the game's executable, so they belong to the game's owners: keep them on your own machine and do not publish them. Use disc images of games you own. God of War is a trademark of Sony Interactive Entertainment; this project is not affiliated with or endorsed by Sony or any game publisher.

Credits

PSPRecomp by its contributors (MIT) does the static recompilation. PPSSPP and JPCSP documented much of the hardware behavior emulated here, and PPSSPP's standalone copy of FFmpeg's ATRAC3/ATRAC3+ decoder is used for music and speech (LGPL 2.1 or later, in profile/third_party/at3_standalone). Emscripten builds the WebAssembly.

License

The code in this repository is available under the MIT License, see LICENSE. profile/third_party/at3_standalone keeps its LGPL 2.1 license.

The Daily Front Page 17 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Democracy and the Feed
article

Across the Globe, People Increasingly Say Social Media Is Harming Democracy

by karakoram·▲ 149 points·110 comments·pewresearch.org ↗
Most think social media leads to manipulation and division.

Most think social media leads to manipulation and division, but they also say it informs people and gives them a voice in politics

A phone displays election result predictions during the second round of the 2024 French legislative elections on July 7, 2024.

A phone displays election result predictions during the second round of the 2024 French legislative elections on July 7, 2024. (Pat Batard/Hans Lucas/AFP via Getty Images)

About this research

This Pew Research Center report looks at views of how social media has impacted democracy in 37 countries, as well as social media use by platform in each place.

Why did we do this?

Pew Research Center does research to help the public, media and decision-makers understand important topics. We study how people around the world feel about their democracies and the impact of social media and other emerging technologies, such as artificial intelligence (AI).

Learn more about Pew Research Center and our international surveys.

How did we do this?

We surveyed 42,151 people across 36 countries: Argentina, Australia, Bangladesh, Brazil, Canada, Chile, Colombia, France, Germany, Ghana, Greece, Hungary, India, Indonesia, Israel, Italy, Japan, Kenya, Malaysia, Mexico, the Netherlands, Nigeria, Pakistan, Peru, the Philippines, Poland, Singapore, South Africa, South Korea, Spain, Sri Lanka, Sweden, Thailand, Turkey, the United Kingdom and the West Bank and East Jerusalem.

Interviews were conducted from Feb. 8 to May 13, 2026. We designed the surveys so we could talk about the views of the adult population in each country.

For this report, data from the United States comes from two surveys. We surveyed 3,507 U.S. adults from March 23 to 29, 2026. Everyone who took part in this survey is a member of the Center’s American Trends Panel. Additionally, we surveyed 5,511 U.S. adults from Jan. 30 to June 18, 2026 as part of the National Public Opinion Reference Survey (NPORS). These surveys represent the views of the full U.S. adult population.

Here are the survey questions used for this report, along with responses, and the survey methodology.

As social media platforms have become an important part of the information environment around the world, the view that social media is harming democracy has become more common.

Shares who see social media as a bad thing for democracy have grown over the last few years.

A new 37-nation Pew Research Center survey finds that in most countries where trend data is available, the share of the public who believes social media is bad for democracy has increased significantly from 2022 or 2023 to now.

Views about social media’s impact are particularly negative in the United States, where 64% of adults say it is bad for democracy. However, while assessments have become more negative in many countries, American attitudes are unchanged since 2022. In some ways, other nations are catching up with the U.S. when it comes to seeing social media’s downsides. (For more, read “Americans Are Negative About Social Media’s Impact on Democracy – and the Rest of the World Is Catching Up.”)

In general, people in wealthier nations such as the U.S. are more likely to believe social media is harming democracy. The seven nations where half or more say social media has been bad for democracy are also among the wealthiest surveyed: Australia, Canada, France, Germany, the Netherlands, the United Kingdom and the U.S. However, Israel and Singapore are exceptions – relatively few in these two high-income countries believe social media is bad for democracy.

People in wealthier countries are more likely to say social media harms democracy.

In nations with lower gross domestic products per capita, people tend to be less negative about social media. For example, in Ghana, Kenya, Nigeria, the Philippines and Thailand, roughly three-in-four or more say it has been good for democracy.

In most countries polled, this positive view is predominant. Across the 37 nations surveyed, a median of 55% think social media has had a positive impact on democracy, while a median of 35% say it has had a negative one.

Young adults in most nations are especially likely to believe social media has a positive effect on democracy. One of the largest age gaps is found in the U.K., where 60% of adults ages 18 to 34 say social media’s influence on democracy has been good, compared with just 31% of those ages 50 and older. In the U.S., 44% of adults younger than 35 hold this view, compared with 28% of people 50 and older.

Many around the world say social media is good for democracy overall.

Why do so many people think online platforms have been good for democracy? Part of the answer may be that these platforms give people a voice at time when many feel voiceless. A median of 60% in the 37 countries surveyed say access to the internet and social media has increased people’s ability to have a meaningful voice in politics.

And access to the internet and social media can inform people about current events: A median of 77% think it has led people to be more informed.

At the same time, people are certainly aware of social media’s pernicious effects. A median of 79% believe it has made it easier to manipulate people with false information and 68% say it has made people more divided in their political opinions.

Growing shares across countries say the internet and social media have made people more divided.

The perception that social media has amplified political divisions has become more common in several nations, including by double-digit increases in Poland, Germany, France, Japan, Spain, the U.K., Hungary and Malaysia. (Since 2024, we have conducted our surveys in Hungary and Poland by phone; we previously conducted our surveys face-to-face.)

The U.S. is one of 10 countries where roughly eight-in-ten or more of those polled say access to the internet and social media has made people more politically divided. The share of Americans who hold this view today (81%) is similar to the share in 2022 (79%).

There are no significant partisan differences on this question in the U.S.: 83% of Republicans and independents who lean toward the Republican Party say social media amplifies political divisions, as do 82% of Democrats and Democratic-leaners.

Across 37 countries, Facebook is the most widely used of five social media platforms asked about

The survey also finds that the social media platforms people use vary across the globe, although Facebook tends to be the most common among the five we asked about, followed by Instagram. Many – especially young people – also say they use TikTok, while fewer overall use X (formerly known as Twitter) or Snapchat.

For more, read “Social Media Platform Use Around the World.”

For this report, we surveyed 45,658 people in 37 countries from Feb. 8 to May 13, 2026. Additional data on Americans’ social media platform use comes from a survey of 5,511 adults conducted from Jan. 30 to June 18, 2026.

Is social media good or bad for democracy?

Majorities in most countries say social media has been more of a good thing for democracy. Most Canadians and Americans, however, offer a negative assessment.

Most say social media has been good for democracy but many in high-income nations disagree.

In Europe, there are a variety of views. Poles, Italians and Greeks tend to see social media’s impact positively, while majorities in the U.K. Germany, France and the Netherlands say it has been bad for democracy.

People in the Asia-Pacific nations surveyed tend to believe social media has had a positive impact on democracy. In Thailand, Singapore, the Philippines and Malaysia, roughly seven-in-ten or more express this opinion. Still, 52% of Australians and 43% in both Japan and Indonesia take the opposite view.

At least half of adults in all the Middle Eastern, African and Latin American nations surveyed believe social media’s impact has been positive. Chile is the only nation surveyed in any of these regions where at least four-in-ten say it has been bad for democracy.

Social media and the internet can manipulate and divide, but also inform and empower

People believe social media has had both positive and negative influences on their country’s politics and its information environment.

Majorities in all 37 countries surveyed think access to the internet and social media has made people more informed about current events. And roughly half or more in every country think these technologies have given people the ability to have a more meaningful voice in politics.

Many say social media and the internet have both positive and negative consequences for democracy.

However, majorities in all countries – and overwhelming majorities in many high-income nations as defined by World Bank lending groups – also say access to the internet and social media has made it easier for people to be manipulated by false information and rumors. And roughly half or more in every nation say access has made people more politically divided.

Looking across the two positive and two negative effects asked about on the survey, some believe social media is leading to all four. In 29 countries, a third or more of adults hold this view.

Young adults, people with more education and those who use more platforms see social media more positively

Young people are generally more positive than older people about the impact of social media.

Younger people are more likely to see social media as good for democracy than older people.

For instance, in the U.K., 18- to 34-year-olds are nearly twice as likely as those ages 50 and older to think social media has been a good thing for democracy. And significant gaps by age exist in 23 other countries, including the U.S. Still, less than half (44%) of American adults under age 35 believe social media’s impact on democracy has been positive.

Younger adults are more likely to see both the upsides and downsides of social media. They often say it makes people more informed and able to have a voice in politics, but they’re also more likely to believe it makes people more politically divided and manipulable.

Education follows a similar pattern as age. In some countries, people with higher levels of education tend to be more positive about social media’s impact on democracy, and they are more likely to see both its positive and negative effects.

Young people and those with higher levels of education are more likely to use social media and, in many countries, they tend to use more platforms. And people who use more than three of the platforms included on the survey are generally more likely than those who use fewer platforms to say social media has been good for democracy.

For more on social media use, read “Social Media Platform Use Around the World.”

It is worth noting that on questions about the impact of social media on politics, older people, those with less education and those who do not use any social media platforms are often less likely to offer an opinion.

The Daily Front Page 18 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — The Cost of a False Call
article

Couple was swatted 55 times in 2 years over a post about Norm Macdonald

by colinprince·▲ 139 points·136 comments·cbc.ca ↗
armed police officers showed up at their homes 55 times in two years.

A Milwaukee couple was awarded a $575,000 US settlement from the city after armed police officers showed up at their homes 55 times in two years responding to bogus reports of violent crimes.

Selfie of a smiling company in an empty sports stadium

Niki Robinson, left, and Patrick Tomlinson have been awarded a $575,000 US settlement by the City Milwaukee after armed police officers came to their home 55 times in two years responding to bogus reports of violent crime. (Submitted by Patrick Tomlinson)

The first time heavily armed police officers showed up at Patrick Tomlinson's house, he was asleep in bed, naked.

It was 1 a.m. on July 25, 2022, and someone had reported a hostage situation at his house in Milwaukee, where he lives with his wife, Niki Robinson.

"All of a sudden there's people pounding on the door," Tomlinson told As It Happens host Nil Kӧksal.

"I go outside to be pulled out of the house by eight or nine police officers [and] handcuffed on the front porch, which I can tell you is the least fun I've had handcuffed and naked in my life."

Tomlinson, a science fiction writer and comedian, hadn't committed a crime. He was the victim of "swatting," a harassment technique in which someone places a hoax call reporting a serious threat in order to send armed police to the target's home.

Over the course of the next two and a half years, Tomlinson and Robinson were swatted 55 times, despite repeatedly explaining their situation to the Milwaukee Police Department. They sued, and have been awarded a $575,000 US settlement from the City of Milwaukee.

When asked for comment, Milwaukee police referred CBC to city attorney Evan Goyke, who did not respond to multiple requests for comment.

“While Niki and Patrick’s settlement provided closure and an acknowledgment of the violations of their rights, it is just as important that Milwaukee be more proactive looking forward," Jack Idlas, a lawyer for the couple, said in an emailed statement.

"The city has made no changes to policy and no officers have been disciplined for violating Niki and Patrick’s constitutional rights. That’s hard to believe after the taxpayers settled for over a half million dollars.

It started with a tweet

Tomlinson traces his troubles back to a social media post he made seven years ago about Canadian comedian Norm Macdonald.

In September 2018, he wrote on Twitter, now X: “Hot take: I’ve never found Norm Macdonald funny and was pretty sure all my comedy friends who did were either nuts or screwing with me."

After that, he says, he experienced years of online harassment, which is described in detail in an article in the Independent. That harassment, he says, eventually escalated into swatting.

"Our stalkers had specifically told us that they were going to begin swatting us…. We spoke to a dispatcher. We spoke with a desk sergeant. And both of them said there's nothing we can do," he said.

"Two weeks later, here I am, you know, on my front porch in the middle of the night, exposed to all my neighbours with shotguns and pistols and AR-15s pointed at my head."

Black and white still from a security camera shows a uniformed police officer with a large gun standing on a front porch and opening the door.

A Milwaukee police officer seen on home security footage responding to a bogus crime report at the home of Patrick Tomlinson and Niki Robinson. (Strang Bradley LLC)

Police were aware that Tomlinson's home was the target of swatting calls, according to internal memos and emails submitted as court evidence in the lawsuit.

On Aug. 3, 2022, one officer sent a memo to the acting police captain requesting the couple's home be marked as a "swatter house." The captain declined, saying it could cause a "complacency issue for responding officers.”

In bodycam footage from one incident, shared with CBC by Tomlinson's lawyers, an officer can be heard saying: "This guy keeps getting swatted."

Nevertheless, Tomlinson says, the police kept showing up, sometimes multiple times per day.

On one occasion, an officer entered his home without permission, according to an agreed statement of facts filed in connection with the lawsuit. On several occasions, officers searched the couple's home without a warrant.

Tomlinson says some of the officers responding to the hoax calls were "professional and sympathetic."

"Others, much less so," he said.

It's been an exhausting ordeal for him and his wife, he said.

"Having each other there to support one another through this, emotionally and to know that we're not alone, without that, I don't think that either one of us individually would have been able to come out of this sane and intact," he said.

No charges or discipline

Nobody has been charged for the swatting calls, and none of the officers named in the lawsuit have been disciplined. The lawsuit settlement is not considered an admission of liability.

In his ruling, U.S. District Judge J.P. Stadtmueller determined that several police officers violated Tomlinson's and Robinson's constitutional rights by entering their home without permission and searching it without a warrant.

However, the judge granted those officers "qualified immunity," a legal doctrine that protects police and other government officials from prosecution or lawsuits for actions committed in the line of duty.

Most people don't realize that you don't have to be a celebrity or a politician to be targeted by this sort of thing.
— Patrick Tomlinson, swatting victim

Tomlinson says he would like to see the officers involved disciplined, and for the police department to enact a detailed swatting policy.

In the meantime, he says, he and Robinson will keep speaking out.

"This is the only avenue, really, that we have to move the needle on this issue and to, you know, educate the public on this kind of harassment and stalking," he said. "Most people don't realize that you don't have to be a celebrity or a politician to be targeted by this sort of thing."

Interview with Patrick Tomlinson produced by Chris Trowbridge

The Daily Front Page 19 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Unfinished Business of War
article

The art of defusing a second world war bomb

by sandebert·▲ 122 points·95 comments·theguardian.com ↗
It could knock a whole street down.

On 14 January this year, army and navy squads faced an unprecedented challenge: one bomb on a Plymouth building site, another floating on a dredger in Exmouth. That afternoon, the clock started ticking

Capt Liam Kidman and Maj Andrew Boyce stand arms crossed beside a bomb-disposal robot and truck

Capt Liam Kidman and Maj Andrew Boyce of the 11 Explosive Ordnance Disposal and Search Regiment (11EOD). Photograph: Sam Frost/The Guardian

Everyone at Exmouth Marina knew there was an unexploded German bomb in the water. Old hands at the dock had been saying so since the end of the second world war. But the marina had been dredged and re-dredged and nothing had ever come up. It had started to sound like an old wives’ tale. The marina is a busy stretch of water: a commercial port until the late 1990s that had since been converted into a home to private yachts. A bomb, you’d think, would have a hard time staying hidden. But in the middle of the afternoon on Wednesday 14 January 2026, 81 years after the end of the second world war, Steve Hockings-Thompson, the manager of Exmouth Marina, got a call from the crew of a dredging vessel telling him he’d better come out to the boat. “I thought: ‘Oh crikey. We’ve got a bit of an issue here,’” Hockings-Thompson told me recently.

He went out to the dredger, a squat barge that hauls silt and other debris from the marina floor on to a flat deck that resembles a steel sieve. Sitting on the deck was a huge hunk of metal, caked in mud and stones. As Hockings-Thompson got closer and saw its distinctive conical shape, he knew it was a bomb – a big one. The dredger was loaded with 20,000 litres of diesel fuel, so if the bomb detonated, it would be disastrous. He called the police, who quickly came to the scene. “And then,” he said, “all hell broke loose.”

To deal with the explosives, they called in the army. The call was picked up at the control centre at Vauxhall Barracks in Didcot, a small town in Oxfordshire. This is the headquarters of the 11 Explosive Ordnance Disposal and Search Regiment (11EOD), a specialist army division responsible for all kinds of bomb disposal – from improvised devices planted by terrorist groups to second world war-era munitions.

When the Exmouth bomb was called in, Maj Andrew Boyce, who was managing operations for the regiment, was confused. “We were talking about ‘the bomb’, which I’d been told was a 50kg,” he recalled. “And then somebody on the phone tells me it’s a 250kg. I’m like, how have you confused a 50kg bomb, which is the size of a fire extinguisher, with a 250kg bomb, which is the size of a hot water tank?”

The reason for the confusion soon became clear: the Exmouth Marina bomb was not the first to be discovered that day. Another second world war bomb had been unearthed a few hours earlier at a building site in Plymouth, 50 miles away.

In Plymouth that morning, Luke Templeton, director of S.I UXO, a private contractor that goes in ahead of construction companies to look for unexploded bombs, had known what he was looking for. His company’s historians had already spent a fortnight doing a detailed risk assessment of the site, drawing on historical documents showing the Luftwaffe’s flight paths and local records of airstrikes. From this, they’d worked out that it was highly likely there were two bombs buried somewhere on the building site. Using specialist equipment, they had found a 50kg bomb buried more than four metres down. After inspecting the bomb up close, Templeton called the police.

As far as Boyce knew, this was the first time since the immediate postwar period that two unexploded bombs had been discovered on the same day. The two bombs were in the same part of the country, and had been reported to the same police force, Devon and Cornwall. “We’re used to having confusion with location or devices. We’re not used to having two devices,” said Brig Darren Fisher, who at the time was a colonel overseeing the operations. Once the confusion had been straightened out – it was a 50kg bomb at the building site in Plymouth, and a 250kg bomb floating on the dredger in Exmouth – the response began.

When most people think of bomb disposal, they imagine a lone figure in a bomb suit carefully approaching an improvised device as bullets fly overhead, holding steady as they unpick wires, knowing that one wrong move will kill them. This image was forged in Belfast during the Troubles and Helmand province during the invasion of Afghanistan, and it is not unwarranted; bomb disposal is commonly described as the most dangerous job in the military. But, in Britain in 2026, the daily reality of the job is quite different.

Although the same team deals with terrorist incidents, such as the 2017 Manchester attack on an Ariana Grande concert, it is unexploded second world war munitions that make up the core work of the UK’s bomb-disposal teams. The Luftwaffe dropped more than 60,000 tonnes of bombs on Britain over the course of the war, and the Ministry of Defence estimates that roughly one in 10 of these failed to explode on impact. The reasons range from the grim – poor manufacturing quality due to a reliance on forced labour in concentration camps – to the prosaic: a bomb might have landed at an odd angle, or on soft ground that absorbed the impact before the fuze could fire. (“Fuse” is the general spelling for electrical safety devices and burning cords, while “fuze” refers to engineered explosive detonators.) Britain also dropped munitions on its own land during training exercises and deliberately buried surplus after the war in an effort at disposal. Eight decades on, the physical remnants of the war still account for about 2,000 of the 2,500 incidents that military bomb-disposal teams respond to in an average year.

The calls often come in from metal detectorists and magnet fishers, hobbyists who throw strong magnets into waterways to see what comes up. They surge on bank holidays, when people are out walking and notice things underfoot, or catching up on tasks such as clearing out a grandparent’s home. Not long ago, the bomb-disposal unit was called to deal with a 2in mortar that had been used for 20 years as a paperweight. Increasingly, calls come from construction sites, as buildings get taller and companies dig deeper, which has led to a growing industry of private contractors actively searching for unexploded bombs. “We’re expanding cities, building new homes, and an accident could happen,” said Templeton. “If a 250kg bomb went off in a city, it could knock a whole street down.”

The passage of time has not rendered these explosives less dangerous. In June 2010, three bomb-disposal experts in Göttingen, Germany, were killed by a 500kg American bomb found beneath the site of a new sports arena. In 2020, a 250kg bomb exploded beneath a crab boat off the Norfolk coast, seriously injuring five of its seven crew. In 2021, another bomb exploded beneath a drilling rig near Munich’s main railway station, injuring four. Because it was a global war, this is a global problem. This year, a second world war bomb beneath a stilt house in Indonesia detonated, killing five people and injuring 20.

These decades-old devices are difficult to read or predict. “You don’t really know why [a particular bomb] didn’t function, which is part of the problem,” said Lt Col Andy Hambley, the commanding officer of 11EOD. Years of corrosion, shifting ground and rust make the fuzes less predictable, the machinery harder to read.

That was exactly the issue facing two teams in two different corners of Devon on the afternoon of 14 January.


At about 1pm, PO Scott Dooley, a diver and bomb-disposal operator with the Royal Navy’s Diving and Threat Exploitation Group, arrived at the building site in Plymouth. Dooley, a tall man with a neatly trimmed beard and a soft Devon accent, grew up in the military; his father was in the Royal Engineers, doing bomb disposal. In recent years, he had acquired the nickname “the Doom Watch”, because every time he was on duty, the phone didn’t stop ringing (his record was 11 call-outs in a single week). In Plymouth, Dooley scanned the area for risk: there was a school nearby, as well as a glass-fronted hotel that could shatter if the worst happened. Police were already at work establishing a cordon and evacuating the area around the bomb.

When an operator approaches a bomb for the first time, they do not know what they are walking towards. The most important thing is to assess the fuze, a metal cylinder screwed into the side of the bomb. It is the first link in a chain. The fuze contains explosives, which fire a tiny, highly sensitive detonator, which sets off a booster charge, which sets off the main filling of the bomb, a comparatively stable “secondary” explosive. Most German fuzes were electrical, charged from the aircraft as the bomb was released. After 80 years, there is no charge left in them. But some German bombs were fitted with a mechanical delayed-action fuze, constructed from gears and springs, like a watch. Once triggered, this fuze ticks down before detonating between two and 72 hours later. The Luftwaffe deliberately fitted these fuzes to maximise disruption; hospitals, roads and factories were cleared for days at a time because the bombs could detonate long after impact.

Everything, therefore, turns on the fuze. If the fuze is judged to be sensitive, that usually means it is too dangerous to move the device. The safest option is to surround it with sandbags and detonate it where it is. If the fuze is stable, then it can be moved somewhere safer, such as out to sea.

Dooley had two things working in his favour: a 50kg bomb was less likely to have a ticker, and it was still half-buried, which suggested it hadn’t been badly jolted. On the other hand, the fuze was submerged in mud and he couldn’t see it. Bomb-disposal operators try to avoid moving a device until they’ve assessed the fuze, lest they trigger a ticker, but Dooley had no choice. Down in the pit, he and a colleague built a stable platform on a ledge of mud, surrounding it with sandbags, and set to work painstakingly unearthing it. Once it was out, he placed a listening device on it called a microphone stethoscope, or mic steth. He listened for ticking.

Silence. A moment of relief, quickly followed by further investigation. Silence only means that at that moment, no mechanical fuze has been triggered. Was there one in the bomb at all? Dooley needed to physically examine it. The bomb had been lodged more than four metres underground for decades and was caked in thick clay. Still listening for ticking on the mic steth in case his movements triggered anything, he poured water on the fuze to wash away the mud. “The fuze was absolutely more than gone,” he said. It was so degraded that none of the markings were visible. No markings, no information. They would have to X-ray it.


While this was unfolding in Plymouth, Capt Liam Kidman was anticipating a quiet couple of days at home. Kidman had just come off a gruelling week that ended in rural west Wales, cutting open a safe packed with explosives at the bottom of a dead man’s garden. (The man had apparently used the explosives for felling trees, and nobody knew where he kept the key.) Then, shortly after he had completed that job, the control centre rang to say two bombs had been discovered in Devon. The local team in Plymouth was already occupied with one of them. Could he go to Exmouth? Kidman was back on the road within the hour.

An energetic man from south Wales, Kidman ended up in bomb disposal almost by accident – when he joined the army more than 20 years ago, there was a shortage of ammunition technicians. As he climbed the ranks, dealing with improvised explosive devices (IEDs) in Afghanistan and second world war jobs in the UK, he came to love the problem-solving aspect of the work.

A map of Exmouth showing the site of the unexploded bomb, and 400m and 600m exclusion zones.

A map of Exmouth showing the site of the unexploded bomb, and 400m and 600m exclusion zones.

It was past 7pm when Kidman reached Exmouth Marina from his base in Gloucestershire. The closer he got to the marina, the emptier the roads got. The bomb was sitting out in the middle of the harbour, bobbing on the open deck of the dredger. It was so big that if detonated it could flatten the marina’s waterfront. The bomb was only accessible by sea, and the nearest naval team was tied up with the other bomb in Plymouth that night. Usually, the army handles incidents on land and the navy anything at sea, but the unexpected nature of two bombs being found on the same day had turned everything on its head.

The bomb had been handled roughly – hauled off the seabed and dumped unceremoniously on to a metal deck. “If there’s a mechanical fuze on there, that’s enough for it to be ticking down,” said Kidman. They had to get ears on it. Harry Griffin, the marina compliance manager, stepped up. Griffin knew there was a chance the bomb could go off, but reassured himself that it had been in the water for 80 years without incident. He ferried a sergeant from Kidman’s team over to the bomb to get a mic steth on to the device. “That’s the bit that gets the operator’s heart going,” said Kidman.

It was not ticking. But nobody relaxed. Just as in Plymouth, they did not know what kind of fuze they were dealing with.


On a bright day in June, I visited RAF Northolt, a base on the outskirts of London, to observe a training exercise on airdropped weapons. Learning how to correctly assess an old, rusting bomb takes time and practice. Bomb disposal is a dangerous job but, Hambley told me: “Knowledge dispels fear.”

Bomb disposal as a specialism was created in the second world war. Britain wasn’t ready for the blitz, and the early assumption was that police or air raid wardens could simply deal with any bomb that failed to go off. But as delayed-action mechanical fuzes – those ticking timebombs – became more common, it was clear that targeted intervention was needed. As the historian James Owen details in his 2010 book Danger UXB, in May 1940, the War Office handed the problem to the Royal Engineers, who formed 25 bomb-disposal sections armed with little more than picks, shovels and stethoscopes. By September 1940, they were dealing with more than 3,000 bombs a month. By some estimates, the average life expectancy of a bomb-disposal operator in this period was 10 weeks.

Munitions on display in 11EOD’s museum at their base at MOD Ashchurch.

Munitions on display in 11EOD’s museum at their base at MOD Ashchurch. Photograph: Sam Frost/The Guardian

Those early teams mapped every bomb they dealt with, and the maps are still in use. Matt Fuller, a researcher at S.I UXO, the contractor that found the bomb in Plymouth, works through wartime bomb censuses and Home Office daily intelligence reports. Studying the bomb maps, he found that the Plymouth bomb most likely fell on the night of 21–22 March 1941. (The Exmouth bomb he puts at 24-25 February 1941.) Conducting risk assessments, Fuller is struck by the sheer number of places that were targeted, some of them small towns with tiny populations. “The last person to die from an unexploded bomb dropped in world war two probably hasn’t been born yet,” he told me. Fuller also marvels at the detailed records local wardens kept. They saw the danger that unexploded bombs would pose for future generations. In keeping those records, they reached out a helping hand from past to present.

In contrast to their second world war counterparts, modern bomb-disposal teams come armed with robot-mounted cameras, mic steths that can be operated from a distance, and X-ray machines that can penetrate thick layers of steel to examine the explosive content inside. “Risk to life comes above everything – for the public, but also for us – and risk to property comes second,” Hambley told me. But when a bomb is 80 years old, even this equipment can be unreliable.

At RAF Northolt, a 500kg German bomb was perched on a grassy verge. The bomb, which was inert, had been placed there, at an awkward angle, for bomb-disposal technicians to assess in pairs: what type of bomb is it? Which fuze? What action can be taken? I approached the bomb with Maj Matt Walker, the squadron duty officer. It was roughly the length of a two-seat sofa: a long, thin hunk of dull metal, its surface rough and textured with rust. Walker told me that a device this size would have a blast radius of “a few hundred to a thousand metres”.

Without clear markings, trainees would have to use their knowledge to work out whether the fuze had a mechanical timer, or an additional anti-handling fuze: a booby-trap built into the bomb that detonates it if anyone tries to move it or remove the main fuze. The trainees had to work out what to do next. “It’s extreme problem solving,” said Walker. “Someone described it to me the other day as – you start by juggling five books, then someone throws a glass ball and you have to keep that juggling as well. They then throw a ball of fire.” If you drop one of the balls, you and those nearby will probably die.

We left the 500kg bomb where it was and walked into the “museum”, a grand name for a few long, dusty shelves inside a garage that acts as a visual reference library. “Anything and everything will turn up here,” said Walker. He picked up a tapered, hollow metal tube. “This one is actually a kid’s baseball bat. But it got called in.” They’d hung on to this and other red herrings so that trainees could see, in practice, how easy it is to mistake something for a bomb. The other miscellanea included an internal part from the Citroën 2CV car that looks so much like a bomb that people regularly call 999 after finding it in a scrapyard. Until I looked at the items in the museum, I hadn’t fully grasped how little there is to go on: the munitions are not just rusted but distorted, sometimes missing pieces, completely blank. Translating these rusted lumps of metal into something legible requires an expert eye: a cylindrical shape with a curved end means it could be a German SC50, particular fuze pocket positioning can identify a British SAP250.

There is a generational difference between bomb-disposal technicians in the UK. People who qualified before 2012 cut their teeth in Afghanistan, where the Taliban laid an extraordinary number of IEDs. In 2011 alone, US-led forces recorded 16,800 IED incidents, roughly 46 a day. Those who qualified after 2012 tend to have mainly worked on second world war munitions. Hambley’s own career has mapped this change. His first job as a bomb-disposal officer was in Helmand in 2012, walking toward a buried device while live rounds tore past his ear. These days, the problems are different: orchestrating large-scale evacuations of civilians, trying to avoid property damage. “You’ve got a lot more latitude than when you’re deployed in Afghanistan,” Hambley told me. “In the UK, we own the ground, no one is going to shoot at us, we’ve got time, so we can afford to be as safe as we possibly can be.” Caution, though, is slow – and the moment a bomb is discovered, the clock is ticking to get people back into their homes.


Sitting at her desk overlooking Exmouth Marina, Fiona Bolt, a chartered financial planner in her 60s, could see the bomb on the dredger. At about 3pm on Wednesday 14 January, police knocked on the office door and told Bolt and her four colleagues to pack up and leave. “It was really quite scary,” she told me. By 8pm, the safety cordon had expanded from 100 to 400 metres and police started knocking on doors on streets near the marina. Some people went to stay with family members nearby, others in hotels. One of the Bolts’ neighbours ended up sleeping in their car.

WO Sarah Rowland of 11EOD.

WO Sarah Rowland of 11EOD. Photograph: Sam Frost/The Guardian

As the night set in, Kidman’s team was out on the water, trying to see inside the bomb. The first X-ray images of the fuze were unusable: the steel casing, thickened and blistered by rust, defeated the beam. They spent seven hours cycling through different X-ray equipment, trying to get a clear image. As Kidman worked through the night, he could see lights going on and off at the far end of Exmouth harbour, in flats that would ideally be empty. Police can’t force anyone to leave. When someone refuses, police hand them a letter saying they’re staying at their own risk, and the regiment has to work around them. In Great Yarmouth three years ago, Hambley worked to render a 250kg bomb safe with a resident “teeth-chatteringly close” – less than 50 metres away.

When Bolt got up the next morning, she noticed her street, close to the marina, was eerily empty. When Bolt left the house she saw how far the exclusion zone had expanded along the seafront: it now encompassed 400 metres, and 2,000 properties. She didn’t have an office to go to. “I felt really lost, like a rabbit in headlights,” she said. “It was all just so out of my control.” The council had hastily assembled makeshift shelters out of a leisure centre and retirement home. When Bolt stopped by the leisure centre that day, she saw that camp beds and bedding had been brought in during the night, and Tesco had donated food. “If we’d been in wartime,” she said, “I imagine that’s what the community spirit was like.”

By about 5pm, it was clear Bolt would not be going home that night. Her house was deep within the cordon. She stuffed essentials into a rucksack and walked across town to her son’s house. By 9pm the cordon had crept up to 600 metres, encompassing a further 500 homes, cleared block by block by police officers. This was a big operation, but in Germany, where far more unexploded ordnance lies buried, even larger scale evacuations are common. In September 2017, 60,000 people were cleared from central Frankfurt, including two hospitals, so that a 1.8-tonne British “blockbuster” bomb could be defused. In 2025, the city of Cologne alone carried out 19 evacuations for wartime bombs, affecting almost 70,000 residents.

At their respective sites, Dooley and Kidman were both acutely aware of the disruption around them, which adds an intense time pressure to their work. In Plymouth, all the buildings within a 100-metre radius of the building site had been evacuated on Wednesday, including the school. Dooley’s first X-rays, taken with the standard equipment, had come out completely black. At around 4pm on Thursday, high-sensitivity X-ray plates arrived from elsewhere in the country. Finally, a readable answer. The bomb had no mechanical fuze, and no anti-handling device. Dooley breathed a sigh of relief. “People could just calm down a little bit,” he said. “It wasn’t going to tick if you knocked it.”

Soon afterwards, in the late afternoon, the high-sensitivity X-ray machine arrived in Exmouth. It went out on to the dredger. The team started scanning, and kept going for hours. Still nothing. Kidman reported back to the operations team: they couldn’t identify the fuze.

The forward base in Exmouth was the lifeboat station, and over the course of Thursday it filled up with marina staff, police, coastguard and emergency planning officers from the council. Briefings and strategy meetings took place every few hours. The position of the bomb severely limited the normal mitigation procedures. The regiment’s standard protection for a 250kg bomb is a sand-filled fortification weighing about 350 tonnes. This could not be built on a barge. Abrasive cutting, an advanced technique for cutting out the fuze, was not deemed appropriate. The next option was towing the dredger out to sea and blowing the whole thing up. Griffin, the marina’s compliance manager, phoned its insurers to ask whether this would be covered. Most marine policies carry an act-of-war exclusion, which raises a difficult question: after 80 years, is a Luftwaffe bomb still an act of war? “We went round in circles, really,” said Griffin.

This is a sensitive subject for 11EOD. In February 2021, a 1,000kg German bomb – one of the heaviest in the Luftwaffe’s arsenal – was discovered on a construction site next to Exeter University’s halls of residence. The team could not establish if the bomb was booby-trapped so it decided to do a controlled detonation where it was, with 400 tonnes of sand around it to absorb the blast. It was not enough. The explosion, which was heard for miles, left a crater the size of a double-decker bus in the ground and threw debris at least 250 metres, shattering windows of nearby buildings. The university claimed on its all-risks policy; the insurer, Allianz, declined, citing a clause excluding damage “occasioned by war”. The high court found in favour of the insurer. The military was not financially liable for this, but the experience of having every step of its process picked over in court made the unit even more cautious. “We are very aware that everything could end up in court and everything could be questioned,” said Hambley.

Exeter: WW2 bomb detonated after homes evacuated – video

Exeter: WW2 bomb detonated after homes evacuated – video

Caution pulled one way and time pressure – the need to get people back into their homes in Exmouth and kids back to school in Plymouth – pulled another. The idea of exploding the entire dredger was ruled out due to the risk of environmental pollution from the 20,000 litres of fuel on board and fragmentation of the vessel itself. That left only one option: get the bomb into the water and tow it away to detonate safely at sea. But this left a question: how to remove it?


By 11pm on Thursday 15 January, there was a plan for the smaller bomb in Plymouth: lift it out, place it in a 4x4 packed with sandbags, drive it 1km to the water’s edge, take it out to sea and blow it up there. By 12.30am, police and fire crews were going door-to-door to evacuate everyone who lived within 150 metres of the route. At about 2.30am, Dooley and another bomb operator lifted the 50kg bomb out of the pit with their hands, climbing up on a makeshift staircase they had built out of sandbags. The bomb, slick with mud, was cold and heavy. It was dark, and the steps, wedged deep in a muddy pit, were slippery. They placed the bomb carefully into the back of the waiting vehicle. The convoy slowly moved off, at walking pace. As the vehicles passed by, the police released the cordon, letting people back into their houses while the bomb was still crawling towards the sea.

Once it was at the water’s edge, the bomb was carried down on to a boat and lowered over the side, where a buoyancy device was waiting so that it could be dragged along underwater at a safe distance from the boat. Dooley was aboard the navy boat, which lowered the bomb into the water as it got further away from the harbour. He’d had two hours sleep in the preceding 36 hours.

The King’s Harbour Master, which controls shipping in Plymouth Sound, had given permission for the bomb to be detonated in a specific patch of sea, and they sailed out four nautical miles towards this spot. At the drop point, Dooley fixed an explosive charge to the bomb and had it lowered down to the seabed. A navy diver followed the rope down in the dark. It was pitch black and the water was thick with silt, rendering a torch useless. Working by touch, the diver undid the bolts, let the air out of the float and brought it to the surface.

Map of Plymouth, showing the route taken as the bomb was driven to the water’s edge for disposal at sea.

Map of Plymouth, showing the route taken as the bomb was driven to the water’s edge for disposal at sea.

When the diver came back up, Dooley took the boat back a hundred metres. From there, the only thing showing the location of the bomb was a small lit float attached with a line, bobbing on the surface of the water. The swell of the waves kept hiding it. Police drones confirmed nobody on shore was in danger. The navy confirmed there was nothing on radar at sea. The charge was initiated. Dooley counted down.

At 5.13am on Friday 16 January, the sea briefly lit in the dark. A plume of white water rose above the surface, then nothing. Eight decades after it was dropped, the bomb had been detonated.


As this unfolded in Plymouth on Thursday night and into Friday morning, Exmouth Marina was empty except for the military bomb-disposal team and the two marina staffers. “It was quite eerie,” said Hockings-Thompson, the marina manager. “It was like going back to Covid times.” They were all focused on how to get the bomb off the dredger. Someone suggested bringing the dredger in closer, but moving the boat meant moving the bomb, and nobody wanted to risk it.

Griffin went back into the office and called a local crane hire company, who agreed to bring a 55-tonne crane. The next problem was who would drive it. Senior officers including Fisher scrambled to find a military crane operator qualified to drive a 55-tonne crane, available at short notice. They could not. The civilian crane driver who had brought it over offered to do it himself. “I can’t own the risk of him driving that crane,” said Fisher, who held the military liability. That passed the question to the police, who had to decide whether to authorise a civilian to handle an unexploded bomb – and whose financial responsibility it would be if the crane was destroyed. “If the worst happens,” Fisher said, “we’ve got much bigger problems than losing the crane.” Eventually, they let him go ahead. (The crane driver declined to speak to me for this article.)

After midnight, in the early hours of Friday 16 January, bomb-disposal operator Lt Matt Bowden attached straps around the bomb casing and added a buoyancy device. He left the dredger and the crane lifted the bomb. As the 250kg lifted from the deck, the barge rose in the water. They had discussed this in advance: whether the dredger, suddenly lighter, would bob up hard enough to bump into the bomb and trigger something. The dredger heaved. The bomb swung out to the side and missed the steel vessel entirely. It was lowered into the water and attached to a navy boat.

Everything now depended on the tides. There was a fixed window in which it could be towed out and detonated. At about 4.30am, the boat picked its way through moored yachts with the bomb submerged and trailing 100 metres behind. By 6.30am, the bomb was so far out and deep underwater that residents were allowed back to their homes.

Hockings-Thompson and Griffin, who had been mostly awake for the preceding 48 hours, went aboard the dredger to bring it back into the marina. Then they walked up to a coffee shop on the seafront. They were in the queue at 8.13am when the bomb went off, a mile and a half out. “The whole seafront was full of people expecting to see a massive bang and a splash,” said Griffin. “All we got was a bit of a plop.” The sea had done its job and neutralised the blast.

By 11am, businesses around the marina were open again. Kidman was exhilarated. “No one died, there was no injury, no damage to infrastructure,” he said. After working for 36 hours straight, everyone went home to sleep. For Dooley, after his own successful operation in Plymouth, it was only a few hours later, when he was sitting with his family, that the magnitude of what had happened hit him. “You’re just doing your job,” he said. “Then you sit there and think, what have I done here? A 50kg could kill you as much as a 1,000kg.”


In late summer, about six months after the double bomb discovery, I sat in the bar at Vauxhall Barracks with Dooley, Kidman, Fisher, Boyce and others who had worked on the two operations. It was a wood-panelled room with a blue patterned carpet, the wall adorned with regiment photos and a framed Private Eye cover of the Queen meeting Martin McGuinness in a bomb-disposal suit. As I pressed for details, they found their recollections blurring. Was a particular memory from 14 January? Or was it the 250kg Plymouth bomb that was found in April outside an Aldi? The one found in June at a business park in Coventry? “So much has happened since then,” said Boyce. In fact, WO Sarah Rowland, who had worked with Dooley on the bomb in Plymouth, was unable to join the meeting as that morning she’d been called out to Staffordshire, where a 500kg bomb had been found in a quarry. (She texted Dooley to say she was collecting them all, “like Pokémon cards”.)

They are getting busier. Ten years ago, one or two large airdropped weapons were found each year. This year there have already been six. The latest was on 21 September, when a 115kg American bomb was found in the water off Pendennis headland, at the mouth of Falmouth’s harbour. The call went to Dooley, but he was already on another job. Kidman was assigned to it and drove down to Cornwall, where he spent almost all of the next three days awake, problem solving. The job was complicated. Blowing it up where it lay risked rupturing waste tanks 40 metres away and pouring sewage into the Channel. Instead, more than 300 households were evacuated while the navy lifted the bomb and towed it out to deep water. It was too dangerous to send a navy diver down, so the bomb was left on the seabed, far from anyone, while the regiment counted down the hours.

On 27 September, with the clock on the Falmouth bomb still running, another call came in: three white vans near RAF Fairford, a Gloucestershire base used by American bombers. A major counter-terror operation began. Kidman and Rowland drove to the scene. A robot searched the vans. X-rays followed. They helped each other out, catching some sleep in the car when possible. Kidman was still overseeing the bomb in Falmouth. On 28 September, they found that there were no explosives in the white vans. Kidman went home to sleep. At 2.25pm on 29 September, the timer was up on the bomb in Falmouth, so the team went back to detonate it at sea. “And then,” Kidman said, “we’re ready for the next bomb, I guess.”

The Daily Front Page 20 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Empire, Education, and Leisure
article

Why were Victorian elites so effective?

by karakoram·▲ 121 points·187 comments·worksinprogress.co ↗
The biggest empire the world has ever seen was run by a small elite.

The biggest empire the world has ever seen was run by a small elite who partied all night, drank liters of port, and stayed in bed until the afternoon.

Books about successful people often make success sound rather unappealing. Education should be intense and rigorous, focused on driving up IQ and on the ‘STEM’ quaternity of science, technology, engineering, and mathematics. Once adulthood is reached, life follows an austere pattern, with a 5am start, cold baths, daily visits to the gym, little or no alcohol, a Huel-rich diet, and Stakhanovite working hours. This last point generates particular excitement, and descriptions of powerful people dwell with eager fascination on how many hours they devote to their labors.

The elites of Victorian Britain operated differently. Their schools and universities were not terribly academic and had very little STEM. As adults, they got up late, drank a lot, and spent a remarkable share of their waking hours partying. They loved feasting, sports, holidays, dancing, and dressing up. Contrary to their stodgy reputation, they were probably a lot of fun. 

Despite this, the elites of nineteenth-century Britain were, by their own lights, extremely successful. For much of the century, Britain was the richest country on Earth. Its companies dominated global commerce, industry and finance. Its huge navy reigned over the world’s oceans, and its tiny army won a long sequence of wars while keeping watch over an enormous empire. Britain progressed gradually toward democracy with none of the revolutions and civil wars that wracked continental Europe. There is a longstanding view that the prosperity of Britain’s elites came at the cost of the hundreds of millions whom they subordinated and oppressed, and no doubt that is at least partly true. But on their own terms, the British ruling class enjoyed a victorious century.

Maybe the Victorian elite succeeded in spite of being feckless and incompetent: the Industrial Revolution created great wealth, which they enjoyed passively and parasitically. We cannot run controlled experiments on Victorian Britain, so this thesis is hard to test. But I want to explore the possibility that a relentless focus on soft skills, team building, and intra-elite networking actually worked rather well. Huel, STEM, and cold baths have their merits. But the example of the Victorians should make us hesitate before concluding that there is only one way to rule the world.

School

Caricaturing a little, we can distinguish two groups in modern educational debates: traditionalists and progressives. Traditionalists think that education should prioritize acquiring knowledge, that it should focus on ‘hard’ subjects like science, mathematics, and foreign languages, and that it should take place in a highly structured environment, where students’ time and behavior are tightly regulated. Progressives think that education should prioritize acquiring skills, that it should embrace ‘soft’ subjects beyond the supposed academic core, and that students should be given wide freedom in which to develop personally and socially. 

One might assume that Victorian education was at the extreme traditionalist end of the spectrum, and modern educational progressives would indeed be horrified by the rote learning and corporal punishment of Victorian schooling. But in respect of all the controversies listed above, elite Victorian schools lean curiously toward the ‘progressive’ side of the spectrum.

Most socially elite Victorian boys began formal education at the age of seven or eight, spending about five years in a ‘preparatory school’ before passing on to a ‘public school’ (which, to the enduring confusion of international observers, is a kind of elite private school). There was a hierarchy of public schools, with the nine ‘Clarendon schools’ at the top, and just one, Eton College, clearly at the apex. About 30 percent of nineteenth-century cabinet ministers and 40 percent of prime ministers were Old Etonians.

Most students at both preparatory and public schools were boarders, meaning that elite Victorians were generally sent away from home by the age of eight and spent their childhoods more with peers than with family. In this respect they were distinctive even in their own time: elite families in continental Europe and the United States were far more likely to keep their children at home and educate them at small local private schools. It is plausible that this contributed to the lack of subnational loyalties in the British elite, in contrast to the distinct elites of, for example, the Southern United States, Catalonia in Spain, or Hungary in the Austrian Empire. 

The public schools were of course single-sex, generating a somewhat febrile atmosphere in which intense quasi-romantic (or sometimes actually romantic) relationships between boys were common. Perhaps the powerful ties of nostalgia and loyalty that students felt for their former schoolmates were linked to this. The writer Jan Morris said that ‘the whole of English upper-class life…was shot through with bisexual instinct’ and that ‘the public school system…meant that male relationships were full of emotional nuance and undertone’. Demonstrative affection remained normal in adult life, and it was completely standard for pairs of Victorian men to walk arm-in-arm in public. 

Academic life was dominated by Latin and, to a lesser extent, Greek. The exact share varied, but the classical languages took up generally at least half of teaching hours, and sometimes as much as 80 percent, especially earlier in the century. Trailing in third and fourth places were mathematics and modern languages. There was resistance to the teaching of science, not because Victorians were hostile to science in principle, but because they thought it irrelevant to the kind of moral and cultural formation that a school for gentlemen was supposed to provide. Thomas Arnold, headmaster of Rugby School and the leading educationalist of Victorian Britain, remarked that ‘rather than have physical science the principal thing in my son’s mind, I would gladly have him think that the sun went round the Earth, and that the stars were so many spangles set in the bright blue firmament’. (By contrast, girls were not usually taught classics, meaning that, rather surprisingly, affluent Victorian girls generally followed a more modern curriculum than their brothers.)

Victorian adults had little occasion to use their classical languages, so they tended to forget them. ‘I have gladly forgotten all my Latin, and don’t ever want to remember it again’, wrote the war poet Charles Sorley, one year after leaving school; at least he did better than Winston Churchill, who remarked that ‘In all the twelve years I was at school no one ever succeeded in making me write a Latin verse or learn any Greek except the alphabet’. The most that can be said for Victorians’ classical education is perhaps that, like schooling in any difficult subject, it trained students in self-discipline, memorization, and applying rules.

The Victorians themselves occasionally hinted that they regarded the official curriculum of school as something of a MacGuffin. In the hugely influential 1857 novel Tom Brown’s School Days, Tom’s benevolent father muses, ‘I don’t care a straw for Greek particles… What is [Tom] sent to school for? … If he’ll only turn out a brave, helpful, truth-telling Englishman, and a gentleman, and a Christian, that’s all I want’. In a similar spirit, Thomas Arnold wrote that ‘what we must look for here is, first, religious and moral principles; second, gentlemanly conduct; thirdly, intellectual ability’.

Under such circumstances, it is perhaps unsurprising that the share of time spent in the classroom was relatively modest. At Rugby School, weeks were divided into three ‘full days’, three ‘half days’, and Sunday. On a full day, students spent about five hours in the classroom, compared with maybe two hours on a half day. Other schools varied, but nearly all left many hours unfilled. In general, classroom hours were certainly not longer, and probably rather shorter, than those in normal schools today. They also tended to be shorter than those of contemporary elite schools in France, Germany, or Italy, where the curriculum was normally more academically rigorous.

Pictorial Press via Alamy.

The most prestigious Victorian school was Eton, but the most influential was Rugby, where many of the characteristic features of the Victorian public school were developed under the headmastership of Thomas Arnold. The version of football played at Rugby became known as ‘Rugby football’ and then just ‘rugby’. Here it may be seen in a primitive state, before the rules reached their canonical form.

The focus on character formation led to increasing interest in how students spent their time outside the classroom. In the early decades of the nineteenth century, they were still mostly left to their own devices: their preferred pastime seems to have been roaming the local countryside and generally making a nuisance of themselves. During the Victorian period, school authorities introduced programs of organized sports, chiefly cricket in summer and various forms of ‘football’ (including what became rugby) in winter. Many schools ultimately had four, five, or even six afternoons of sports per week: a student would certainly spend ten hours a week on the sports field, and might well spend twenty.

The Victorians thought extremely highly of sports, believing that they instilled team spirit and endurance, fostered mutual loyalty, channeled energy and competitiveness, and taught men how to win and lose graciously. An extreme but not entirely unrepresentative example was Hely Hutchinson Almond, headmaster of Loretto School, who described his school’s priorities as ‘First – character, second – physique, third – intelligence, fourth – manners, fifth – information’. The cult of team sports was generally not shared in continental Europe, and European visitors were often bewildered by how seriously the English took schoolboy ballgames. But it spread across the Anglophone world, and it is still embodied in the traditions of American high school and intercollegiate sports today.

Another distinctive feature of the public schools, relative both to modern education and to other nineteenth-century school systems, was student self-government. The Victorians thought that close supervision by schoolmasters would inculcate servile habits in boys, compromising what one headmaster called ‘the great glory of an English public school – its free development of character, its social expansiveness, in short its liberty’. As a result, a system of prefects was developed in which, in theory, the more benevolent and mature boys were given extensive pastoral and disciplinary responsibilities over the others. The prefects would receive an apprenticeship in leadership, while the student body as a whole would come to see authority as something emanating from their peers rather than imposed upon them by an alien entity.

It is not hard to imagine how a self-governing oligarchy of teenage boys might go wrong. Victorian educationalists were themselves concerned about the potential for abuse, and various checks and balances were developed, like jury systems and rights of appeal before punishment. It is hard to say how often the prefect system operated unjustly, reliant as we are on the impressionistic evidence of personal memoirs, but it is beyond doubt that it was sometimes brutal. It is important to understand, however, that it was intended not simply as a system of domination, but almost as one of ‘elite liberalism’, whereby students would not only be subjects of authority, but also to some extent its legislators and executors. 

University

From school, most elite Victorian men went on to Oxford or Cambridge (‘Oxbridge’). Oxbridge was not necessarily a big step up academically. Virtually everyone who applied was accepted. Once you were in, you could pursue one of two tracks: either an ‘honors’ degree, which involved at least some serious study, or a ‘pass’ or ‘ordinary’ degree, which involved sitting only some very easy exams in classics and religion. In the early Victorian period, most Oxbridge students were ‘pass men’; this changed gradually as the century drew on, but there were still plenty of pass men around as late as 1914. The pass degree was particularly popular among aristocratic students, who tended to prioritize rowing, feasting, and social polish over disciplined study.

David Rumsey Map Collection, Stanford University Libraries.

Oxford in the early twentieth century. The town was about a mile across, and the colleges were all within a short walk of each other. As at many times in their lives, the Victorian elite chose to congregate geographically.

Many honors students took their studies more seriously. But even they were not very practical in orientation. Oxbridge tutors believed overwhelmingly that the purpose of an undergraduate degree was not training for work nor even preparation for academic research, but rather a general moral and intellectual formation that would fit students for any professional role they might later pursue. ‘No man will be a first-rate physician or engineer who is not something more than either, who has not some taste for art, some feeling for literature, or some other interest external to his profession’, said Benjamin Jowett, the influential master of Balliol College. Jowett aimed to convey this ‘something more’ to his undergraduates, leaving them to acquire specific technical knowledge later.

In the first half of the nineteenth century, such theories led the universities to exclude almost everything except classics and (at Cambridge) mathematics from the curriculum. Natural and applied sciences were viewed with suspicion on the basis that they were, in the words of the influential Oxford professor Edward Bouverie Pusey, ‘confined to the reception of information on matters of fact’ and do not involve ‘continued reasoning’. Between 1855 and 1860, just 8.1 percent of honors degrees were awarded to science students; in 1910–1914, it was still only 13.7 percent.

Nearly all students lived together in colleges. This contrasted with the situation in continental Europe, where students generally rented rooms off campus. Victorian pedagogues believed that colleges provided religious, cultural, and social formation, and that they prevented English students from acquiring the bad morals and habits of their continental peers. A typical day began with chapel; honors students and the less indolent pass men would then spend the morning reading and preparing assignments. Students normally ordered lunch to their rooms: rich students could have elaborate feasts brought up from the college kitchens, like Sebastian Flyte’s lunch in Brideshead Revisited. In the early afternoon it was customary to go out for rural walks or sports, especially rowing and cricket.

Magdalen College Archives.

The Prince of Wales, the future Edward VIII, at a meal with friends in Magdalen College, Oxford. Students could order lavish meals to their rooms from college kitchens, with the cost added to their termly bill. Notice the cheap and mismatched furniture – this was still student accommodation, however grand its residents.

Around 4pm, students returned to college. Once or twice a week this was the time for ‘tutorials’, one-to-one or small-group discussions with tutors, often over tea or sherry. The tutorial system contrasted sharply with the more didactic and lecture-based teaching that prevailed in other university systems, and was seen as a way of inculcating independent thought. If a student had no tutorials, he would probably spend the early evening reading, socializing, or at one of the university’s various cultural, discussion, or debating societies, notably the Oxford and Cambridge Unions. The day concluded with a formal dinner in the college hall, often followed by conversation over dessert, digestifs and tobacco in college rooms.

Although the tutorial system was seen with pride, the quality of tutoring was decidedly uneven. Until the 1870s, most fellowships were open only to Anglican priests. Fellowships were comfortable positions, but much less comfortable than well-paid positions in the Church of England, especially since fellows were generally not allowed to marry. The typical Oxbridge don of the mid-nineteenth century was thus in his early or mid-twenties and regarded his fellowship as a holding post, which he would leave as soon as a desirable parish became available. Many of these young men would have been very bright, but few were serious researchers or experienced teachers. Fellowships were opened up to laymen in the later decades of the century, but Oxford and Cambridge did not become world-leading research institutions until they were transformed by German scholars fleeing Nazism in the 1930s.

The dominance of Oxbridge in British culture was unusual: these institutions educated a much larger share of the elite than was the case for any two institutions in any other country, with the possible exception of the top grandes écoles in France. Nonetheless, some elite and quasi-elite Victorian groups followed alternative educational pathways. For example, for much of the nineteenth century the colonial civil service in India was educated at a training college called Haileybury. These programs were not, however, necessarily more rigorous than the usual Oxbridge track. I cannot improve upon David Gilmour’s description of a day in the life at Haileybury, distilled from the memoirs of the civil servant John Beames:

At eight in the morning, the students rushed to chapel, many of them wearing only a nightshirt under a gown or overcoat. Afterwards they returned to their rooms for breakfast, which often turned into parties with ‘tankards of beer or claret’. Breakfast was followed by smoking a pipe and dealing with tailors and other tradesmen who had arrived from Hertford. At ten o’clock the bell rang for lectures, which lasted two hours on some days, three on others. The studious minority known as the ‘steadies’ took notes; the others yawned, drew sketches of their teachers and fooled about. After a lunch of bread, cheese and beer, they were free to do what they liked. The oarsmen went to the river, the cricketers went to their cricket pitch, the ‘steadies’ went for a ‘solemn constitutional’ along the lanes, and the ‘fast men’ either slipped off by train to London or else clattered off in dog-carts to play billiards at Hertford or Ware. Dinner took place in Hall at six followed by evening chapel at eight. Then the ‘steadies’ retired to their rooms and read far into the night, most of the others sat about drinking and singing, and at about two in the morning the ‘fast men’ returned very drunk from Broxbourne Station after catching the last train from Shoreditch.

Beames’s account was particularly colorful, but nobody seems to have had a good word to say about Haileybury as a teaching institution. Everyone, however, including Beames, agreed that it engendered much esprit de corps among its graduates. The future prime minister Lord Salisbury commented on the ‘close friendships formed there, which softened the rivalries of after life and secured devoted instead of perfunctory co-operation’. Perhaps something similar might be said for much of the elite Victorian education system.

Adulthood

One virtue that upper-class Victorian education signally failed to inculcate was early rising. Although Victorian schoolboys and university students got up fairly early for chapel, the day of an upper-class Victorian adult started late. The great prime minister of the early nineteenth century, Pitt the Younger, breakfasted at 9am. The great prime minister of the Victorian period, William Gladstone, hosted a social breakfast starting at 10.30am (claret was served), continuing till about noon. His rival Benjamin Disraeli attended breakfasts hosted by Lord Houghton, which started at 10am, but which Disraeli would join at about 11.30am. Elite Victorians generally had flexible working hours and were free to work from home unless they had meetings elsewhere. Many spent the whole morning at home, reading the newspaper, answering letters, and preparing for later meetings. The Edwardian prime minister Arthur Balfour generally did all this literally in bed, rarely emerging from his bedroom before lunchtime. As we shall see, mornings must often have been even later from February to July, when many leading Victorians would have spent much of the night partying. 

At some point in the late morning, the Victorian would finally make his way to the office. By the end of the century, some wealthy people lived in suburbs and commuted by railway, especially in industrial cities like Birmingham and Manchester. In general, however, Britain’s elites were slow to suburbanize, and in 1914 most still lived in centrally located row houses and walked to work. Every day a great herd of frock-coated men emerged from Belgravia and Mayfair and poured through Covent Garden to their offices in Parliament, Whitehall, the Inns of Court, and the City.

Alamy.

The Strand in London around 1895. The Strand is one of the main roads between the residential West End and the commercial City, so it is thronged with top-hatted men commuting by foot or by horse bus.

The exact timetable for the middle of the day varied by period and profession. In the early Victorian period, the upper classes often went without a serious lunch but dined early at 5 or 6pm. This changed drastically in the third quarter of the century, perhaps because of improved artificial lighting, so that by the 1870s many Victorians had a substantial lunch with wine, usually with professional peers at a club, sustaining them until dinner at about 8.30pm. Politics was a part-time job for most members of Parliament (MPs) and peers, so Parliament typically did not start sitting until 4.30 or 5pm; the majority of part-time politicians could wind up a gentlemanly day at the office in time for this, while the minority of full-time politicians could spend the day on party management, or (if they were ministers) at government business in their ministries.

Wikimedia Commons (adapted).

Victorians loved dressing up, and both men’s and women’s clothes were much more elaborate than they are today.

Provided Parliament did not interfere, however, an elite Victorian would stroll home to dress for dinner. Upper-class Victorians of both sexes paid great attention to their clothes. For an informal dinner at home, a man would change into evening dress, usually including a starched collar, cuff and shirt front, patent leather shoes, and gold shirt studs and cufflinks.

Dinners were rich and elaborate. The number of courses naturally varied, but it was invariably more than a modern dinner at an equivalent grade of formality. A typical dinner began with soup and sherry, then proceeded to fish with hock (Rhineland whites), passing on through a sequence of meat courses with champagne or red wines, and finishing with various desserts and savories served with port and madeira. The Victorians loved drinking and drank a lot by modern standards. Men drank more than women, but women drank a good deal too: one conduct guide noted that ‘young ladies seldom drink more than three glasses of wine at dinner but married ladies, professional ladies, and those accustomed to society, and habits of affluence, will habitually take five or even six, whether in their own homes or at the tables of their friends’. 

For about five months a year, between February and July, the elite of Victorian Britain congregated in London for what was called ‘the Season’, essentially a sequence of parties and social events. They usually owned or rented houses in Mayfair and Belgravia, two small neighborhoods that face each other across Hyde Park, meaning that the bulk of the ruling class would live literally within walking distance of one another. Parallel institutions existed in most Western countries at the time – the social seasons in Paris, Vienna, St Petersburg and New York were famous – but the London Season had a particularly dominant role in the national life because it coincided with the Parliamentary session, making it a forum for political networking as well as elite matchmaking and court rituals.

David Rumsey Map Collection, Stanford University Libraries.

London’s residential neighborhoods in 1889, graded by social class. The wealthy neighborhoods are in yellow, clustered around the royal parks in inner west London. There was an internal hierarchy even among these, with Belgravia and Mayfair at the top of the hierarchy. Most of Britain’s elites lived in London for at least part of the year, during which time they would have been within half an hour’s walk of each other.

During the Season, the upper-class evening continued long beyond dinner. Balls were the flagship evening entertainment. They started late, at nine or ten, and guests would filter in gradually, with the dance floor really full from about 11pm. Around midnight a meal called ‘supper’ appeared, comprising soups, salads, cold meats, shellfish, fruit, and ice cream. The beverage most associated with balls was ‘negus’, a hot drink made of port, spices, sugar and oranges or lemons. Lemonade, tea and coffee were on hand throughout the evening, and champagne, hock, port and sherry were served at supper. In addition, an 1867 guide for aspiring ball hosts observed, ‘Bottled pale ale and stout are quite permissible – in fact, they have become indispensable’.

After supper, dancing recommenced; a good ball peaked after 1am. Guests gradually returned home in the small hours, and the most determined might continue until dawn. It was good form to slip out quietly, and there was no requirement even to say goodbye to the hostess. ‘The great thing is to avoid making your departure felt as a suggestion for breaking up the party, as you have no right to hint by your movements that you consider the entertainment has been kept up long enough’, an etiquette guide notes.

Balls naturally had special significance for people in the marriage market. Arranged marriage in the strict sense had largely died out by the nineteenth century, but upper-class young people and their parents still hoped they would make advantageous matches, and balls furnished opportunities to do so. It would be quite wrong, however, to think that balls were simply mass dating events. Courtiers, bankers, judges, and cabinet ministers would have shared the dance floor with debutantes. In fact, with some exceptions like club lunches, the social events of the Victorian elite were notable for their lack of segregation by age or sex. A Society ball discharged the functions of both a teenage house party and a business networking convention: in fact, it was both a teenage house party and a business networking convention.

iStock.

The Victorians loved dressing up: fancy dress balls were a popular variant on the normal format.

Unmarried young people (and their unfortunate parents) might go to three or four balls per week, while other Society members would go to one or two. But the other nights were scarcely less busy. Opera, theatre and concerts were important, especially opening or gala nights. The bread and butter of the Season was soirées, card parties, conversazione, receptions and less formal dances, as well as midnight ‘supper parties’, all mostly hosted in private homes. These elements were modular. An MP might miss dinner for a late sitting of Parliament, but still drop into a soirée at 10.30pm, turn up to a supper party at 11.45pm, and then arrive at a ball at 1am. From February to July, the Victorian upper class led a remarkably nocturnal existence, with bedtimes in the small hours and the mornings something of a write-off.

By one definition, then, elite Victorians did remarkably little work: they could easily spend just four or five hours a day at unambiguous office work. But by another definition, they were working all the time. Lunches, balls, and dinners were certainly fun, but they were not just fun. In the words of the historian Leonore Davidoff, these social occasions provided ‘access to a vast information network: information about jobs, investment possibilities, secret political decisions’. Many Victorians were intensely ambitious and drove themselves hard: sleep deprivation, exhaustion and burnout were familiar companions. The distinctive feature of elite Victorian lifestyles was not laziness, but an extreme weighting toward what we might call team building and professional networking, and the near-total fusion of personal and professional life. 

Method in their madness?

The sociologist Ferdinand Tönnies famously distinguished Gemeinschaft – community, held together by ties of sentiment and tradition – from Gesellschaft – society, held together by explicit laws and contracts. As societies grow more complex, he thought, Gesellschaft tends to replace Gemeinschaft. But the Victorian elite was a little Gemeinschaft at the apex of an enormous Gesellschaft, an intimate community bound together by ties of common culture, shared memory, intense status competition, loyalty, and love. Its members strove for one another’s envy, esteem and gratitude, and to achieve this they would go far beyond what was contractually obligated or financially advantageous. It is not altogether fanciful to think of the Victorian elite as functioning like a big premodern village, though its members were geographically dispersed across the kingdom and its vast empire.

All the practices I have described in this article helped to maintain this emotional village. The ruling class were educated together from an early age, in schools and universities designed to inculcate shared values, a common identity, and ties of mutual loyalty. As adults they congregated every year in an area of central London that actually was village-sized, where they spent every night in one another’s company. Young members of the Victorian elite tended to meet their future spouses during these glittering evenings, so that the elite came to form, to some extent, a literal family.

Maintaining this community required a lot of time and effort, which obviously had opportunity costs. All else being equal, rich and powerful Victorians must have been less productive for spending four hours a day in the office rather than twelve. But the creation of a single ruling Gemeinschaft may have had compensatory advantages.

One of these was unity. In some ways, rich Victorians were quite diverse. They came from every part of the British Isles. They included landed aristocrats and urban bourgeois, with the latter steadily superseding the former over the course of the century. Most landowners were Anglicans, but many of the new rich were Nonconformists (non-Anglican Protestants), and some were Jews or Catholics. With the conspicuous exception of the Irish Catholics, all these people were successfully folded into a single British elite, rather than forming hostile counter-elites working to overthrow the social order.

This obviously had advantages for Britain. The elites of the American South had a very different identity to those of the North, and ultimately led the country into civil war. Spain, Italy and France suffered from incessant conflicts between urban bourgeois and rural nobility. Germany was riven with strife along geographical, religious, and class lines. Some of these tensions existed in Britain, but except in Ireland, the elite finessed them peacefully. A Nonconformist Manchester businessman probably supported the Liberal Party rather than the Conservatives, but the idea of violently seceding from Britain to form a Methodist Republic of the North would never have occurred to him.

Maybe the Victorian elites also had advantages relative to elites today. One strength of all Gemeinschaften is that they can reward their members with prestige rather than money, which is useful in contexts where adequate financial rewards are for some reason impossible. 

This might be an important advantage in some contexts. For political reasons, most modern societies pay politicians and civil servants vastly less than they pay people with a similar level of responsibility in the private sector. As a result, they struggle to persuade their most talented people to enter and remain in public life. The Victorians did not have this problem. Until the 1880s, most local government roles in Britain were conducted on a completely unpaid basis by local landowners. They also administered the rudimentary welfare system, sat as magistrates in the lower courts, and staffed the boards of most schools and hospitals. A landowner who ignored these responsibilities would suffer no material consequences, but he would be diminished and resented in the eyes of his peers, and for most, that inducement was enough.

Something similar applied to Parliament. Nineteenth-century MPs were unpaid and covered most of their own election expenses. In the 1880 General Election, the average Parliamentary candidate bore about £150,000 of expenses in an urban constituency and £450,000 in a rural one (in today’s money). MPs had to take this massive financial hit repeatedly, every time there was an election. They also had to bear all of their costs upon assuming office, including staff, travel, and accommodation in both Westminster and their constituency. And yet there was no difficulty filling Parliament: many of the richest and most powerful people in England competed fiercely to enter, simply because being an MP was intensely prestigious in their social milieu.

Maybe this identification with the social system affected how politicians behaved in office, too. In The English Constitution the political writer Walter Bagehot noted that parliamentary democracy creates powerful incentives for opposition parties to damage the country by corrosively undermining the government when it makes difficult but necessary decisions. But in practice, he thought, English politicians did not do this as much as one might expect:

In abstract theory these defects in our present practice would seem exceedingly great, but in practice they are not so. English statesmen and English parties have really a great patriotism; they can rarely be persuaded even by their passions or their interest to do anything contrary to the real interest of England, or anything which would lower England in the eyes of foreign nations. And they would seriously hurt themselves if they did.

It is hard to know how seriously to take claims like this. But it is certainly true that the MPs of both parties overwhelmingly belonged to the community described in this essay, sharing friends, relatives, memories, and values. Perhaps the elite village could punish them for defecting from norms in ways that are impossible today, making political life less prone to divisiveness, demagoguery, and brinkmanship.

Would modern societies work better if their local and national government were conducted by a tight-knit community of extremely rich and successful people? Maybe not: the downsides are obvious. But the problems would be interestingly different from those that they have in reality. Imagine a San Francisco whose Board of Supervisors featured Jeff Bezos, Larry Page, Sam Altman and Mark Zuckerberg, each feeling this responsibility to be the greatest glory of his career, each hoping that he might one day attain the greater glory that is the House of Representatives. It might not be paradise. Maybe it would be a disaster. But it would certainly be interesting.

The Daily Front Page 21 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Build, Ship, Recover
article

Incident with Git Operations, Pull Requests and Actions – Resolved

by gagan2020·▲ 224 points·176 comments·githubstatus.com ↗

Resolved

This incident has been resolved. Thank you for your patience and understanding as we addressed this issue. A detailed root cause analysis will be shared as soon as it is available.

Update

Git Operations, Pull Requests and Actions are fully recovered and stable. The root cause has been identified and mitigations are being applied to prevent a reoccurrence.

Update

We are seeing full recovery across all systems including Git Operations, Pull Requests and Actions. We are continuing to investigate the root cause of the disruption between 15:06 UTC and 15:16 UTC, and will share another update shortly.

Update

The degradation has been mitigated. We are monitoring to ensure stability.

Monitoring

The degradation has been mitigated. We are monitoring to ensure stability.

Update

The degradation affecting Git Operations and Webhooks has been mitigated. We are monitoring to ensure stability.

Update

The degradation affecting Issues has been mitigated. We are monitoring to ensure stability.

Update

We are observing partial recovery across all systems. We are continuing to monitor and investigate the root cause of the disruption.

Update

Git Operations is experiencing degraded performance. We are continuing to investigate.

Update

Actions is operating normally.

Update

The degradation affecting Pull Requests has been mitigated. We are monitoring to ensure stability.

Update

Webhooks is experiencing degraded performance. We are continuing to investigate.

Update

Git Operations is operating normally.

Update

Pull Requests is experiencing degraded performance. We are continuing to investigate.

Update

We observed widespread impact across GitHub services between 15:06 UTC and 15:16 UTC, and are investigating the root cause. We are seeing all systems recover, and will provide another update shortly.

Update

Git Operations is experiencing degraded performance. We are continuing to investigate.

Update

Webhooks is experiencing degraded availability. We are continuing to investigate.

Update

Issues is experiencing degraded performance. We are continuing to investigate.

Update

Webhooks is experiencing degraded performance. We are continuing to investigate.

Investigating

We are investigating reports of degraded availability for Actions, Git Operations and Pull Requests

This incident affected: Git Operations, Webhooks, Issues, Pull Requests, and Actions.

The Daily Front Page 22 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Build, Ship, Recover
repository

Docker Agent

by saikatsg·▲ 204 points·92 comments·github.com ↗
★ 3,831⑂ 489 forks Go

AI Agent Builder and Runtime by Docker Engineering

Build, run, and share AI agents with a declarative YAML config, rich tool ecosystem, and multi-agent orchestration.

docker agent in action

What is Docker Agent?

docker-agent lets you create and run intelligent AI agents that collaborate to solve complex problems — no code required.

docker-agent is a docker CLI plugin and can be run with docker agent.

Define agents in YAML, give them tools, and let them work.

agents:
  root:
    model: openai/gpt-5-mini
    description: A helpful AI assistant
    instruction: |
      You are a knowledgeable assistant that helps users with various tasks.
      Be helpful, accurate, and concise in your responses.
    toolsets:
      - type: mcp
        ref: docker:duckduckgo
docker agent run agent.yaml

Key Features

  • Multi-agent architecture — Create teams of specialized agents that delegate tasks automatically
  • Rich tool ecosystem — Built-in tools + any MCP server (local, remote, or Docker-based)
  • AI provider agnostic — OpenAI, Anthropic, Gemini, AWS Bedrock, Mistral, xAI, Docker Model Runner, and more
  • YAML configuration — Declarative, versionable, shareable
  • Advanced reasoning — Built-in think, todo, and memory tools
  • RAG — Pluggable retrieval with BM25, embeddings, hybrid search, and reranking
  • Package & share — Push agents to any OCI registry, pull and run them anywhere

Install

Docker Desktop (4.63+) — docker-agent CLI plugin is pre-installed. Just run docker agent.

Homebrew — brew install docker-agent. Run docker-agent directly or symlink the binary to ~/.docker/cli-plugins/docker-agent and run docker agent.

Binary releases — Download from GitHub Releases. Symlink the docker-agent binary to ~/.docker/cli-plugins/docker-agent to be able to use docker agent, or use docker-agent directly.

Set at least one API key (or use Docker Model Runner for local models):

export OPENAI_API_KEY=sk-...        # or ANTHROPIC_API_KEY, GOOGLE_API_KEY, etc.

See Set Up a Model for the full walkthrough of both paths (cloud API key or local model).

Quick Start

# Run the default agent
docker agent run

# Run from an OCI registry
docker agent run myorg/agent:tag

# Generate a new agent interactively
docker agent new

# Run your own config
docker agent run agent.yaml

More examples in the examples/ directory.

Documentation

📖 Full documentation

Contributing

Read the Contributing guide to get started. We use docker-agent to build docker-agent:

docker agent run ./golang_developer.yaml

Telemetry

We collect anonymous usage data to improve the tool. See Telemetry.

Community

Docker Community Slack · #docker-agent channel

The Daily Front Page 23 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Build, Ship, Recover
show hn

Show HN: Bigwords.page – Turn any screen into a sign. The URL is the app

by SpeakingOfBrad·▲ 418 points·122 comments·bigwords.page ↗

Make a full-screen sign, timer or message from a link. Hold up your phone at arrivals, put a countdown on the TV, or show the Wi-Fi password at the front desk. No account, no app, nothing stored on a server. The link is the whole display, so you can share it or bookmark it.

Make one by hand

Using the built-in editor is easiest, but generate a link however you like.

  1. Type a message after the #.

    https://bigwords.page/#Hello World

  2. Add settings with &key=value.

    https://bigwords.page/#Hello World&bg=000000&fg=ffd60a&font=4

  3. %0A starts a new line. # makes a heading (write it as %23).

    https://bigwords.page/#%23 Room 204%0AMeeting in progress

  4. || splits the message into slides.

    https://bigwords.page/#Coffee ☕||Tea 🍵||Water 💧&interval=2

Use cases

Every card is a working link. Open it fullscreen, or load it into the editor and make it yours.

Arrivals sign

Quiz timer

Café Wi-Fi

New Year countdown

On air

Gate or room sign

News ticker

Birthday

Quiet, recording

Exam room

Today's agenda

Menu by QR code

What it does

Auto-fit Text grows to fill any screen, from a phone to a stadium board.

Any device Works in any browser: phones, tablets, laptops, smart TVs.

Markdown **bold**, *italic*, # and ## headings, real line breaks.

Slides Split with || and they rotate on a timer.

Countdowns Put {countdown} anywhere and set &until= for a date or &timer= for a length of time.

QR codes & images Links, Wi-Fi, calls, texts and email, generated in your browser. No third-party services.

Private by design The message lives in the URL fragment, which browsers never send to a server.

BIGWORDS.PAGE is open source under the MIT license. Fonts are bundled under their own open licenses.

The Daily Front Page 24 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Screens, Signs, and Type
repository

A font recreated from photographs of classic Commodore 64 keycaps

by sohkamyung·▲ 385 points·64 comments·github.com ↗
★ 497⑂ 11 forks Python

Photo-based reconstruction of classic Commodore 64 keycap lettering, with desktop fonts, webfont, editable outlines, and a specimen.

A font recreated from photographs of classic Commodore 64 keycaps, with cleaned-up shapes and consistent proportions.

C64 Keyboard font preview

Try it in your browser · Download TTF · OTF · Webfont · Complete package

Use it

Install the TTF or OTF, then select C64 Keyboard in your application.

To try it out, open the online preview, or download and extract the complete package and open preview.html. Click a function-key or PETSCII button to insert its symbol into the type tester, then copy the text into your application and select C64 Keyboard.

If you have an earlier version installed, replace it with version 1.112 and restart applications that still show the old font. The former U+E000 symbol and the U+E020–U+E028 key-name legends are no longer included.

Included

  • Uppercase letters, numbers, punctuation, arrows, £, and π.
  • Selected accented letters, including Hungarian characters.
  • Function-key labels f1–f12.
  • All 63 PETSCII graphic front legends, arranged by key in the preview.

Lowercase input displays as uppercase. This recreates printed key legends, including smooth geometric reconstructions of the PETSCII graphics, rather than the screen bitmap font.

The source keyboard

The Central European Commodore 64 keyboard the font was reconstructed from

The lettering comes from my own Commodore 64, a Central European unit. Its keycaps are the reference for every letter, number, and symbol in the font.

PETSCII front legends

PETSCII reference sheet

Open the online preview or preview.html and use the PETSCII buttons to insert the symbols, then copy them from the type tester. Left legends correspond to Commodore + key, right legends to Shift + key in uppercase/graphics mode. Pi on the up-arrow key also works with Commodore.

These are reconstructed outlines: identities and key assignments come from the Ultimate Commodore 64 Reference; frame thickness, curves, and print proportions are inferred from the keyboard photograph. They are not exact photo traces. Pi is unframed as on the key.

The preview handles the special character codes for you. Copied symbols need this font to display correctly. See the PETSCII key map and encoding guide for codes and keyboard combinations.

Editable outlines are in glyphs/, with build tools in scripts/.

Build instructions · Version history

License

To the extent possible under law, Levente Szabadkai dedicates the copyright and related rights he holds in this repository to the public domain under CC0 1.0 Universal. This covers the font files, editable outlines and traces, build scripts, preview, documentation, mappings, and specimen images. You may use, modify, and redistribute these contributions, including commercially, without attribution.

The close-up photographs used for tracing are not included. CC0 does not grant rights held by others in the historical keycap designs or any trademarks. C64 Keyboard is an independent, unofficial reconstruction and is not endorsed by Commodore.

The Daily Front Page 25 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Screens, Signs, and Type
article

Animated ASCII Art for Web Pages

by turrini·▲ 321 points·59 comments·ascii.rest ↗

191 animated ascii pieces for web pages: 13 full-colour scenes like the one above, loaders, charts, type, 27 language logos and 22 Linux distros in colour or one ink, and 3D shapes, physics and creatures. Each is a small, typed TypeScript module with no dependencies, for React, Next.js, Astro, or a plain HTML page, and free to use and change under the MIT license.

use one

html

<script type="module" src="https://ascii.rest/ascii.js"></script>

<ascii-art piece="donut"></ascii-art>

No install and no build step. ascii.js defines the <ascii-art> tag, loads the piece from ascii.rest, plays it while it is on screen, and holds the first frame for anyone who prefers reduced motion.

react

// npm install github:bas3line/ascii
import { Ascii } from "ascii.rest/react";
import { donut } from "ascii.rest/pieces";

<Ascii piece={donut} />

A client component, so it works in the Next.js app router as it is. Pass the name instead, piece="donut", to fetch the piece only when it mounts.

astro

---
// npm install github:bas3line/ascii
import Ascii from "ascii.rest/astro";
---

<Ascii piece="donut" />

Renders the first frame on the server, so the page is whole before any script runs, then plays the piece once it loads.

typescript

// npm install github:bas3line/ascii
import { mount } from "ascii.rest";
import { donut } from "ascii.rest/pieces";

const el = document.querySelector<HTMLPreElement>("pre")!;
const stop = mount(el, donut);

mount plays a piece in a <pre>, or on a <canvas> for the coloured ones, and returns a function that stops it. Every piece, option and frame is typed.

The Daily Front Page 26 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Play, Prompt, Repeat
article

Google Playground: Create and play custom games

by acossta·▲ 130 points·210 comments·blog.google ↗

If you can think it, you can play it. Create, play, and share custom games — no coding required.

Games are one of the most creative forms of expression, and the gaming community keeps growing. But game creation has historically been limited to a select group of people who have technical experience and knowledge of complex game engines.

Today, we’re introducing Playground, an experimental gaming platform that lets you create, play, and share custom games. Playground lowers the barriers to creation, so bringing game ideas to life can now be as easy as describing it through a few prompts — no coding experience required.

Create your custom game

With Playground’s conversational interface, you can direct the game just by typing what you want to build. Start from a blank canvas, remix starter prompts, or use guided support to shape your concept — and then test it right away. Want to tweak the physics, rewrite the rules, customize the characters, or overhaul the environment? Just ask. You stay in complete control of the creative direction from rough concept to final product.

Play, compete, and share across devices

The fun doesn’t stop at creation. Playground is home to an ever-growing catalog of community games. And because it’s browser-based, you can play these games on your phone or laptop.

Once your game is ready, you can keep your game private, drop a shareable link to challenge friends and family, or publish it to the Playground Explore gallery for the broader Playground community. To have fun with your friends, Playground games support in-game leaderboards and multiplayer gameplay in select genres. With a Play Games profile, you can claim a custom handle, like your favorite games, battle for the top spot, and follow creators to catch their latest releases.

Our gallery uses player ratings and play activity to spotlight games that are fresh, creative, and fun. To keep the experience safe and welcoming, every published game undergoes safety screenings aligned with our Community Guidelines, along with user reporting.

Stay tuned for Unity Spark

For dedicated creators ready to expand their concepts, Playground will soon offer an integration with Unity Spark. Unity Spark unlocks robust, professional-level mechanics, high-fidelity 3D capabilities, and the flexibility of the Unity runtime. The accessibility of Playground and the world-class, game-building expertise of Unity provides the building blocks for an ecosystem where you can start with a simple text prompt and eventually grow into building immersive experiences with Unity. And these games will be available for everyone using Playground to enjoy.

Unity Spark is currently in testing, with closed beta coming soon. Check out the demo games on playground.google, and learn more at unity.com/spark.

Get started today

Playground is an early experiment designed to make game creation more approachable and ignite everyday creativity. Playground will continue to evolve alongside our community, and we invite you to share your games and your feedback. Playground launches today for users in the U.S. (18+) at playground.google, with tiered creation access rolling out based on your Google AI subscription.

The Daily Front Page 27 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Play, Prompt, Repeat
article

Google Playground

by trollied·▲ 115 points·2 comments·labs.google ↗

Introducing Playground, an experimental gaming platform where you can create custom games in minutes, no coding required.

Stop dreaming of games and start making them. With Playground, you can create custom games in minutes using simple text prompts, no coding experience required. Whether you’re a hobbyist with a notebook full of ideas or just curious about AI, our chat-based interface makes it easy to bring your vision to life. Choose from popular genres like Trivia, Tower Defense, and Racing, or create from scratch. It's your game, you make the rules.

The Daily Front Page 28 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Play, Prompt, Repeat
article

PS5 Jailbreaks Are Escalating at an Unprecedented Pace

by password54321·▲ 112 points·135 comments·pushsquare.com ↗

Image: Push Square

A game of cat-and-mouse between Sony and hackers is very much underway, as the PS5 has been jailbroken to a massive degree in the past week.

Legally we’re walking on thin ice here, but we can report on a new jailbreak which opens up the console, as long as it’s running firmware v7.00 through v13.60.

Firmware v13.60 was released in July, so is relatively recent. It means the jailbreak will run on most consoles not using the latest system software. (Although it should be noted that recent releases like Marvel’s Wolverine require a newer firmware to boot, so they remain off limits.)

Armed with AI tools, modders have already been able to install a variety of different emulators on Sony’s console, running from Switch through to the original Xbox. While performance is patchy, it’s utterly remarkable how fast this has all escalated in the past week.

It’s also leading to a run on consoles, as hobbyists rush to purchase hardware with the desired firmware installed. That may be part of the reason why GameStop is now charging up to $1,500 for a used PS5 Pro.

What’s particularly fascinating is that, simultaneously, PC emulation of the PS5 is also developing fast. So far modders have found ways to run several exclusives, like Demon’s Souls, on the PC.

Obviously we’re not going to link to any of the repositories here, but I think it’s important to acknowledge this is all happening.

Some people have attached the pace of the development of these jailbreaks to Sony’s decision to stop manufacturing physical discs, but as we’ve seen with other consoles, hackers rarely need an incentive to deploy these kinds of exploits.

I imagine we’re going to see an increase in firmware updates over the coming weeks, as the platform holder tries to tighten up any security holes – but obviously that’s not going to prevent these exploits from working on older firmware.

It’s possible this may hasten the firm’s transition to the PS6, but it just depends how prevalent and problematic these jailbreaks become I suppose. It’s too early to say right now.

At the rate things have developed over the past week, I think Sony may have a pretty big headache on its hands here.

The Daily Front Page 29 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Late Wire: AI Economics and Odd Properties
article

Meta and Microsoft take steps to reduce employee usage of Claude AI

by speckx·▲ 320 points·302 comments·rswebsols.com ↗

Meta and Microsoft have commenced a significant reduction in employee utilization of Anthropic’s Claude AI as they pivot towards their own proprietary coding instruments, as reported on October 5 by The Information.

This strategic alteration prioritizes internal expenditure and workforce processes, rather than discontinuing customer access to Claude through Microsoft’s offerings.

This transition underscores the increasing imperative to manage AI expenditures as coding assistants become integral to routine software operations.

While both corporations continue to be substantial clients of Anthropic, they also find themselves in competition with the firm. Their actions reflect a convergence of AI investment, product strategies, and control over developer resources.

Microsoft Reduces AI Expenditure Allowances

Microsoft had previously anticipated that internal expenditures on Anthropic technology would exceed $1 billion annually.

However, this estimate has diminished by over a third subsequent to management’s directive for employees to curtail their use of Claude and to increasingly adopt Microsoft tools, such as GitHub Copilot and OpenAI frameworks.

Within Microsoft’s cloud and AI sector, monthly AI spending limits have reportedly been slashed from $100,000 per employee to approximately $10,000 in the majority of instances.

It’s crucial to note that these figures are spending ceilings rather than reflections of actual employee expenditures. This reduction in budgetary flexibility has disheartened several engineers who once enjoyed broader latitude to explore models.

It’s important to highlight that diminished internal funding does not equate to Microsoft’s withdrawal of Claude from client-facing products.

Reports suggest that client expenditure on Anthropic models via Microsoft’s enterprise platforms continues to rise, even as the company constricts its own employees’ usage.

At Meta, the number of Claude Code users reportedly plummeted from around 60,000 earlier this year to about 30,000.

Although layoffs have influenced this decrease, the report attributes the primary cause to Meta’s strategic shift towards its own AI solutions, which comprise MetaCode and Muse Code, developed using Meta’s proprietary models.

MetaCode is said to have more than 30,000 internal users, while Muse Code boasts over 6,000 employee users. Meta initiated external testing of Muse Code with clients in August.

Notably, amidst this transition, Meta reportedly allocated over $105 million to Claude Code over a 28-day timeframe, indicating that a reduction in users does not necessarily correlate with decreased spending.

For cybersecurity teams, the transition to different coding assistants does not eliminate the hazards associated with automated access to sensitive files, commands, and credentials.

Previous analyses by Cybersecurity News outlined vulnerabilities within Claude Code that could allow unauthorized execution and API key theft. Anthropic rectified these flaws prior to their public disclosure.

Microsoft’s offerings have encountered analogous concerns. The remedied RoguePilot vulnerability exemplified how nefarious commands embedded in a GitHub Issue could facilitate the takeover of repositories.

Such incidents emphasize the criticality of imposing stringent permissions, employing trusted project settings, and conducting thorough evaluations of AI-generated actions.

A smartphone displaying the word Anthropic lies on a wooden desk near a mug and two potted plants.

Anthropic’s reported annualized revenue pace of $65 billion reflects unabated demand for its services.

This retrenchment illustrates a tightening of budgets and intensifying competition, rather than an outright cessation of engagement with Claude.

Source link: Cybersecuritynews.com.

The Daily Front Page 30 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Late Wire: AI Economics and Odd Properties
article

House with 15m underground tunnels for sale for 300k

by librasteve·▲ 184 points·169 comments·readingchronicle.co.uk ↗

A house featuring underground tunnels hand dug 15m below ground by the owner over twenty years is on sale for £300K.

Civil engineer Tony Deane spent two decades creating a subterranean network of rooms and corridors under his home in Tilehurst.

The unique complex contains more than 1,300 square feet of underground space, including tunnels and storage rooms - and even a hand-built railway.

One room even features a secret entrance - hidden inside a rocket by the pool.

There is a one-tonne goods lift and two secret doors - one formed by a 1.5-tonne sliding concrete wall.

Hidden for decades beneath a workshop in a suburb of Tilehurst in Reading - the network descends through four levels and reaches more than 15m below ground.

Tony, whose initial day job was in the construction of aerodrome and airport infrastructure, started the construction work by himself during the 1980s and ‘90s.

He was also assisted by his six children.

The only apparatus the family used to conduct the digging and move chalk were buckets and wheelbarrows.

Richard Worrall, auctioneer and consultant at BTG Eddisons Property Auctions, said: “In all my years as an auctioneer, I’ve never seen anything like this before - it’s utterly amazing and, I think, unique.

"What a feat to create this as a family project and as a hobby.”

The Deane family’s subterranean projects began even earlier, in the 1960s, with the construction of underground changing rooms next to the property's swimming pool.

The entrance was hidden behind a 23ft-high rocket, which is still in place today.

Despite the scale of the project, its existence is understood to have remained largely unknown outside the family, including to neighbours in the surrounding residential area.

Richard Worrall said: “Most of these tunnels were dug through chalk, which is naturally self-supporting, while, in some places, where required, structural concrete was used and cast by hand.

“Incredibly, absolutely everything was excavated manually.

"Mr Deane also constructed a railway through the tunnels to transport the excavated chalk, as well as building a four-layer, one-tonne goods lift to carry it to ground level.”

The site is accessed via a secure gated driveway and includes a 2,500 sq ft workshop arranged over three floors, parking, gardens, a large swimming pool and changing rooms.

Planning consent was granted by West Berkshire Council in December 2024 for a 5,000 sq ft, five-bedroom, two-storey house to be built on the site of the swimming pool, while conversion of the workshop has consent for conversion to a three-bedroom house.

Richard added: “The underground space is obviously a game changer to say the least and we believe it could offer an imaginative buyer a range of potential uses, anything from secure storage, a fallout shelter or an EMP-resistant data centre to a prepper’s paradise."

The property has a guide price of £300,000-£325,000 and will be included in BTG Eddisons Property Auctions’ live stream auction on 28-29 October.

For further details and bidding information, visit www.btgeddisonspropertyauctions.com.

The Daily Front Page 31 of 32
Wednesday, October 7, 2026 The Daily Front No. #261007 — Colophon

That's the Front for Today

Issue No. #261007 — Wednesday, October 7, 2026 — went to press 2026-10-08 at 04:55 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 Wednesday, October 7, 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 — 34 model calls and 335k 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:

Beneath a modest suburban house in Tilehurst, a steep shaft opens into four levels of hand-dug chalk tunnels. A compact autonomous machine races along the tiny hand-built railway, carrying buckets toward a one-tonne goods lift, while translucent interactive diagrams unfold in the air above its track: a branching map, a timetable, and a rotating route through the rooms. At the far end, a concealed doorway stands open inside a rocket-shaped structure beside the underground pool, linking the family’s hidden engineering to accelerating machine intelligence.

Extreme 8mm fisheye editorial photograph from a close track-level foreground: the compact autonomous machine and bucket train surge toward the one-tonne goods lift through four chalk-tunnel levels, with steeply curved horizons and the modest Tilehurst house compressed above; direct on-camera flash freezes chalk texture, rails, rocket-shaped structure, underground pool, and open concealed doorway. Saturated slide-film palette of electric cyan, signal orange, acid lime, and deep cobalt, with dense authentic 8mm grain. Translucent interactive diagrams visibly unfold above the track—a branching map, timetable, and rotating route through the rooms—bridging the hidden engineering to accelerating machine intelligence.

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 30 247,622 62,651
layoutgpt-5.6-terra 1 18,850 2,158
covergpt-5.6-luna 2 1,632 245
covergpt-image-2.5-flare 1 297 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. Margaret Hamilton has died by muglug — news.mit.edu·HN discussion ↗
  2. Claude Haiku 5.5 by sfkgtbor — anthropic.com·HN discussion ↗
  3. GPT‑6 and Intelligent UI for everyone by joshuawright11 — openai.com·HN discussion ↗
  4. Shipping JPEG XL in Chrome by AshleysBrain — developer.chrome.com·HN discussion ↗
  5. Strands Decider 2B: a small, open-source, decision model by gmays — strandsagents.com·HN discussion ↗
  6. Navier–Stokes Lost in Translation by nill0 — arxiv.org·HN discussion ↗
  7. The Mathocalypse by 6bitquant — scottaaronson.blog·HN discussion ↗
  8. Anti-patterns in software blogging by ilreb — refactoringenglish.com·HN discussion ↗
  9. Push ifs up and fors down: The idiom, its algebra, and its limits by speckx — debasishg.github.io·HN discussion ↗
  10. Nobel Prize in Chemistry 2026 to Henri B. Kagan and Kenso Soai by sasvari — nobelprize.org·HN discussion ↗
  11. AI-assisted proof of optimal packing for 11 squares by bluepeter — github.com·HN discussion ↗
  12. Visa, Mastercard, major banks facing new litigation over 'anticompetitive' fees by DeepLogin — classaction.org·HN discussion ↗
  13. Hackers obtain counterfeit TLS certificates for Google and other large services by colinprince — arstechnica.com·HN discussion ↗
  14. ESP32-C3 Adblock by jayhoon — github.com·HN discussion ↗
  15. God of War on PSP, recompiled to WebAssembly and running in the browser by sn001 — github.com·HN discussion ↗
  16. Across the Globe, People Increasingly Say Social Media Is Harming Democracy by karakoram — pewresearch.org·HN discussion ↗
  17. Couple was swatted 55 times in 2 years over a post about Norm Macdonald by colinprince — cbc.ca·HN discussion ↗
  18. The art of defusing a second world war bomb by sandebert — theguardian.com·HN discussion ↗
  19. Why were Victorian elites so effective? by karakoram — worksinprogress.co·HN discussion ↗
  20. Incident with Git Operations, Pull Requests and Actions – Resolved by gagan2020 — githubstatus.com·HN discussion ↗
  21. Docker Agent by saikatsg — github.com·HN discussion ↗
  22. Show HN: Bigwords.page – Turn any screen into a sign. The URL is the app by SpeakingOfBrad — bigwords.page·HN discussion ↗
  23. A font recreated from photographs of classic Commodore 64 keycaps by sohkamyung — github.com·HN discussion ↗
  24. Animated ASCII Art for Web Pages by turrini — ascii.rest·HN discussion ↗
  25. Show HN: A walkable 3D art history museum built from Wikipedia by jasontr — artmuseum.artfrompixels.com·HN discussion ↗
  26. Google Playground: Create and play custom games by acossta — blog.google·HN discussion ↗
  27. Google Playground by trollied — labs.google·HN discussion ↗
  28. PS5 Jailbreaks Are Escalating at an Unprecedented Pace by password54321 — pushsquare.com·HN discussion ↗
  29. Meta and Microsoft take steps to reduce employee usage of Claude AI by speckx — rswebsols.com·HN discussion ↗
  30. House with 15m underground tunnels for sale for 300k by librasteve — readingchronicle.co.uk·HN discussion ↗

Browse all issues in the archive →