Every website I visit, I “steal” a button from it. Check out my stash!
About Button Stealer
10 interesting stories served every morning and every evening.
Every website I visit, I “steal” a button from it. Check out my stash!
About Button Stealer
Open-weight models are becoming the foundation for the next AI ecosystem. The US should compete in it, not wall itself off.
I have seen a version of this story before.
In 2013 I co-founded Mesosphere, an open source cloud-native software company. We built on Apache Mesos, which my co-founder Ben Hindman had helped create at UC Berkeley. We later built DC/OS (Data Center Operating System) around Mesos, released it as open source, and commercialized it through an enterprise distribution with support and proprietary features.
After several years of massive growth, Kubernetes disrupted us. It was newer, fully open source, and it quickly galvanized the cloud-native community. Many of the world’s best distributed-systems and infrastructure engineers bet their careers on it, and even some of our most loyal community members changed horses.
Once that happened, innovation moved to Kubernetes. Whatever the platform was missing, someone started building: networking, storage, observability, deployment tools, policy engines. A large number of startups were created, and legacy vendors joined in as well. Almost every component required to run Kubernetes in production became available as open source. Cloud providers and companies including Mesosphere/D2iQ, Rancher, Red Hat and Nutanix then built businesses around integration, enterprise features, support and operations.
Kubernetes did not win simply because its repository was public. It became a neutral substrate that engineers, cloud providers and enterprise vendors could all extend to fit their customers’ needs. Common interfaces and vendor-neutral governance gave everyone confidence that they could build on it.
The lesson I took away wasn’t that open source always wins. It was that once an open platform that people can customize becomes the industry’s center of gravity, no single vendor can match the combined rate of innovation around it.
I think AI is approaching the same point.
Open weights turn a model into a platform
First, a terminology note. Most models we casually call “open source” are more accurately described as open-weight. You can download and modify the trained parameters, but the training data and complete training process usually aren’t available. That falls short of the Open Source Initiative’s definition of open source AI. The distinction matters. It doesn’t, however, prevent an ecosystem from forming around the artifact people can run and modify.
The Kubernetes analogy isn’t perfect. Kubernetes contributors could inspect and change the actual source, and improvements could flow back into a shared upstream project. Model fine-tunes usually don’t work that way. Frontier weights may be downloadable but still require expensive hardware, and there is no AI equivalent of the CNCF providing neutral governance and common interfaces. Those are real differences. The common mechanism is that a sufficiently capable, portable substrate can attract complementary innovation far beyond what its original creator could build alone.
The first reason to use open-weight models was self-hosting. Companies wanted control over their data. They wanted to run models in their own cloud or data center. And as usage and inference costs grow, they increasingly want control over cost as well.
That demand produced a healthy open source serving stack: vLLM, SGLang, llama.cpp, Ollama, MLX and others.
But self-hosting is only the beginning. Open weights turn the model itself into something developers can adapt and redistribute. Hugging Face now hosts more than two million public models. Around popular families such as Qwen and Gemma, developers produce:
quantized and converted weights for different silicon architectures and scale;
fine-tunes and LoRA adapters for coding, medicine, law, math and agentic workflows;
model merges that combine different fine-tunes;
adaptations for runtimes such as TensorRT-LLM, vLLM, MLX and others.
Until recently, it was easy to dismiss this activity at the frontier. Open models were useful, but the base models weren’t good enough for the hardest coding and agentic tasks. That gap is narrowing quickly. Z.ai has released GLM-5.2 with public weights under an MIT license. Its own evaluation reports 62.1% on SWE-bench Pro versus 58.6% for GPT-5.5, although results vary across benchmarks and agent harnesses.
Moonshot says Kimi K3 approaches the closed frontier on long-horizon coding and has promised to publish its weights on July 27. Artificial Analysis supports the performance claim, scoring it alongside Opus 4.8 and GPT-5.5 in its independent evaluation.
Once the base model is good enough, the ecosystem can compound. I expect new projects around agent runtimes, coding harnesses, sandboxes, evaluations, observability and specialized fine-tunes. Together they can become a production-grade stack: an open-weight model running on open source software, customizable for a team’s workload, hardware and economics.
Will that stack beat every closed model on every benchmark? Probably not. But I would not bet on any single vendor out-innovating the combined open ecosystem over time. Frontier technology is a talent war, and open ecosystems give talented people everywhere a reason to build on the same foundation.
Banning Chinese models would be an own goal
This brings us to the current debate in Washington. After the release of Kimi K3 and other capable Chinese models, the Trump administration is reportedly considering restrictions on Chinese open-weight models. The exact form of a potential ban remains unclear.
A broad ban on American researchers and companies using Chinese open-weight models would do something else entirely. It would cut the US off from an ecosystem that is already attracting many of the world’s best AI researchers and engineers, including a large number of Chinese researchers. The rest of the world would keep building. American developers would be the ones locked out.
We’ve seen this dynamic with Qwen already. Hugging Face reports that Chinese models accounted for 41% of model downloads over the past year. If the best open-weight foundation models increasingly come from China, innovation will accumulate around them in the same way it accumulated around Kubernetes.
How the US should compete
The US should compete in that ecosystem, not retreat from it.
Release frontier-grade American models
American labs need to release frontier-grade open-weight models under licenses that startups can actually build on. There has been progress. NVIDIA’s Nemotron models are commercially usable under NVIDIA’s own permissive license. Thinking Machines released Inkling under Apache 2.0, as did OpenAI with gpt-oss and Google with Gemma 4. But OpenAI’s and Google’s strongest models remain closed, as do those from most American frontier labs.
Use procurement to create an open market
The government should use procurement to create demand for portable, interoperable systems rather than permanent dependence on one API vendor. The Department of Defense has done this before. Platform One provides open source tools and enterprise products that different military programs can build on. The same playbook can accelerate innovation around open-weight models.
Build the rest of the stack
American companies need to build the rest of the stack. Startups can customize and extend the models, embed them into products, and provide the serving, tooling, support and operational layers. Our leading silicon companies will keep improving the hardware. Hyperscalers and neoclouds can serve the models and their ecosystems.
Set standards instead of banning models
Safety is the strongest argument for restrictions, but a blanket ban is too blunt and would sacrifice access to the entire ecosystem. A better approach is independent testing and standards for frontier models. The analogy isn’t exact: Kubernetes conformance tests compatibility, not safety. But the governance model is useful. Demis Hassabis has proposed a US-led independent standards body along those lines.
America should not respond to open Chinese models by building a wall around its own developers. We should run the models ourselves, tear them apart, benchmark them, improve on them and build better American alternatives. Then we should make the American stack the easiest one in the world to adopt.
The United States has spent decades attracting the world’s best technical talent and giving it room to build. Turning that advantage into a walled garden while the rest of the world standardizes on a more open stack would be a spectacular own goal. We would be giving up our role as the AI leader by choice.
Project Reconecta installed eight rope bridges in a municipality in Brazil, and a 15-month study used camera traps to document thousands of arboreal wildlife adapting to new aerial crossings.
Safe road passages enable seed dispersal and gene diversity, reversing the “domino effect” of biodiversity loss that begins when highways split habitats.
Reconecta’s creator, biologist Fernanda Abra, a National Geographic Explorer and winner of the Whitley Award, is now expanding these low-cost conservation tools to other Brazilian biomes and neighboring Suriname.
Brazil’s federal transport department has officially designated the rope bridge design as the recommended national standard for highways to curb the millions of wildlife deaths recorded on roads annually.
Around 7 a.m., with dense fog blanketing the landscape, biologist Gabriel Falquetto had already come across several road-killed animals along ES-164 highway in Brazil’s Espírito Santo state. He was on his way to Kaetés Private Natural Heritage Reserve (RPPN), in the Atlantic Forest, where he monitors wildlife and roadkill in the region.
Suddenly, he spotted the lifeless body of a primate on the pavement. It was a buffy-headed marmoset (Callithrix flaviceps), a species listed as critically endangered on the International Union for Conservation of Nature (IUCN) Red List. An estimated 2,500 individuals remain in the wild, making it one of the world’s most threatened primates.
“It was extremely painful and discouraging,” Falquetto told Mongabay. “We travel through this region every day monitoring wildlife, and we celebrate every encounter with groups of buffy-headed marmosets in the forest.”
“Finding an individual in those conditions brings a feeling of sadness and helplessness. Beyond the loss of that animal, the incident reminds us of the impacts our activities have on biodiversity.”
About 2,900 kilometers (1,800 miles) away, on the road that leads to Alta Floresta, a small Amazon town in the far north of Mato Grosso state, cases like the buffy-headed marmoset’s roadkill have not been recorded since 2024. That year, eight canopy bridges were installed, connecting fragmented forest patches. Camera trap footage revealed that, over 15 months, the aerial wildlife crossings enabled 15,000 safe crossings by arboreal animals — and not a single roadkill.
The bridges are part of a program involving Projeto Reconecta and the municipal government, along with local organizations and business owners who are eager to conserve the unique biodiversity of their town and promote ecotourism, but were alarmed by the growing number of wildlife-vehicle collisions.
Biologist Fernanda Abra, an associate researcher at the Smithsonian National Zoo and Conservation Biology Institute in the U.S., and the founder of Reconecta, recalled that just hours before installing the first bridges in Alta Floresta, she found two Schneider’s marmosets (Mico schneideri) dead. The species is endemic to the Brazilian Amazon and is threatened with extinction.
“A canopy bridge serves two purposes,” Abra said. “The first is to improve connectivity for wildlife, allowing animals to move from one side to the other in these fragmented forest areas. As a result, we also reduce roadkill.”
All bridges have two camera traps, one facing the crossing to record which animals are using it and another facing the forest to observe which animals arrive there but decide not to use it.
Among the primate species recorded using the bridges during the first months of the program were the black-faced black spider monkey (Ateles chamek), the Purus red howler monkey (Alouatta puruensis), the northern night monkey (Aotus infulatus), the tufted capuchin (Sapajus apella), Schneider’s marmoset and the Alta Floresta titi monkey (Plecturocebus grovesi).
Described only in 2019 and soon after classified as critically endangered, the Alta Floresta titi monkey has become the symbol of the initiative, which is now entering a new phase thanks to its positive results.
“In August, we will install eight more bridges in the city’s urban area,” Abra said. “The only difference is that the electric utility will first need to lower the power lines and insulate them so that if animals jump from the bridge onto the wires, they won’t be electrocuted.”
Bridge use increases over time
The project underway in Alta Floresta is not Reconecta’s first. In 2021, working alongside the Waimiri-Atroari Indigenous people, the team installed 32 canopy bridges over BR-174, the highway that crosses both their territory and the Amazon between the Brazilian states of Amazonas and Roraima.
The Waimiri-Atroari helped Abra identify the best locations for the artificial bridges. Over the past five years, cameras mounted on the bridge poles have documented about 1,250 primate crossings, including the golden-handed tamarin (Saguinus midas), a species that is not strictly arboreal and often descends to the ground in search of food, making it particularly vulnerable to roadkill.
“The outcomes of the BR-174 project have been incredible. We were able to test different bridge designs to find out which ones the animals prefer,” Abra said.
After years of working along Brazilian highways, the biologist had always sought a solution that was simple, low-cost and durable. The current bridge features a multilayer design that accommodates primates with different modes of locomotion — from species that rely on their prehensile tails to move through the canopy to brachiating species such as spider monkeys, which swing using their arms, both of which are common in the Amazon, as well as species that simply walk across the network of crossed ropes. It is worth noting that other small terrestrial mammals, including opossums, sloths and mouse opossums, have also been recorded using the bridges.
Abra said it is important to keep in mind that this is a long-term project, and results are not always immediate. BR-174 was built in the 1970s, and animals take time to adapt to a new crossing alternative. Reconecta’s monitoring has shown that use of the structures increases over time.
“Very often, our sense of urgency in conservation doesn’t take into account the timing of the impact,” she said.
In Alta Floresta, tufted capuchins took seven months before using one of the bridges for the first time, which may indicate that each species has its own pace of adaptation.
Species disappear, forests decline
Home to the world’s greatest diversity of primates, Brazil also has the world’s fourth-largest road network — a deadly combination for animals living along forest edges that have been split apart to make way for highways.
“From our human perspective, roads mean connection and development. But for wildlife, they represent disconnection, barriers and a threat to survival,” Abra said.
Nearly 9 million mammals are killed on Brazil’s roads every year, a 2022 study found. A data compilation published in the journal Nature in 2025 also found that the country ranks among those with the highest mortality rates of terrestrial vertebrates killed in roadkills.
“Habitat loss is one of the main drivers of population declines, especially among threatened species, but the impact of roadkill is still greatly underestimated,” primatologist Fabiano Rodrigues de Melo, a professor at the Federal University of Viçosa in Minas Gerais, told Mongabay.
Beyond roadkills, highways bring confinement to fauna.
“When populations become isolated, they grow smaller and more vulnerable to threats,” said Amely Branquinho Martins, an environmental analyst at the ICMBio, Brazil’s federal agency for conservation units, and coordinator of the Brazilian Biodiversity Genomics (GBB) project.
One of those threats is inbreeding, which occurs when closely related individuals reproduce. “Habitat loss and degradation can prevent an individual from one population from migrating to another — what we call gene flow. Without it, the species’ genetic diversity declines.”
The consequences continue to multiply in a domino effect, Melo said. The loss of primates, especially fruit-eating species, can alter forest composition, because they play a key role in seed dispersal and even contribute to pollination.
“A whole network of ecological interactions is ultimately lost with the disappearance of these species,” Melo said.
Reconecta expands
One of the hopes for reducing wildlife roadkill is the passage of a bill currently under consideration in Brazil’s Congress that would establish the National Road Safety Plan for Wildlife, which calls, among other measures, for the placement of wildlife warning signs, speed-reduction devices and the construction of overpasses, aerial crossings and underpasses along highways.
The bill has already been approved by the Chamber of Deputies and is now awaiting a vote in the Senate.
If approved, the canopy bridge model developed by Reconecta could be implemented nationwide. In 2026, Brazil’s National Department of Transport Infrastructure designated the design as the recommended standard for highways.
In addition to Reconecta expansion results, Abra’s efforts to protect primates have earned international recognition. In 2019, she received the Future For Nature Award, followed by the Whitley Award in 2024, often referred to as the Oscars of environmental conservation. In June, she was also named one of the recipients of the 2026 Wayfinder Award, joining the select group of National Geographic Explorers, who receive funding from the organization for their projects.
The support comes at the right time, as Abra plans to expand Reconecta, including new chapters in Suriname and Lucas do Rio Verde, a municipality in Brazil, which will install 10 canopy bridges.
Abra also hopes to bring her canopy bridges to other biomes, including the Pantanal and the Atlantic Forest, helping prevent the deaths of monkeys such as the buffy-headed marmoset.
Expectations are especially high for bridges over BR-262, one of Brazil’s longest highways, which cuts across the Pantanal and is known as the “highway of death.” The road kills approximately 2,000 animals every year.
“I envision a future with Reconecta Biomes. We already have Reconecta Amazon, and we’ll soon launch Reconecta Pantanal. I also see canopy bridges in the Atlantic Forest for the primates that live there, including muriquis and howler monkeys, which are both highly threatened,” she said.
She stressed that for this vision to succeed, the continued engagement of government agencies, private companies and local communities will be essential, just as it was in Alta Floresta and the Waimiri-Atroari Indigenous Territory. “When everyone is involved, everyone values the initiative and works harder to make it succeed.”
Banner image: A black-faced black spider monkey (Ateles chamek) crossing one of the multilayered bridges. Image courtesy of Sergio Leal.
How effective are canopy bridges really?
How effective are canopy bridges really?
FEEDBACK: Use this form to send a message to the author of this post. If you want to post a public comment, you can do that at the bottom of the page.
Then and now
There were a number of previous context engineering best practices that had become myths. Including:.
Then: Give Claude rules
Now: Let Claude use judgement
When we first rolled out Claude Code, we needed to be sure that Claude avoided worst case scenarios, such as deleting files. This meant we would give particularly strong guidance that might not always be true, For example, in the system prompt we used to say:
In code: default to writing no comments. Never write multi-paragraph docstrings or multi-line comment blocks — one short line max. Don’t create planning, decision, or analysis documents unless the user asks for them — work from conversation context, not intermediate files.
But for a certain subset of prompts, this guidance would be wrong. In the case of documentation, the user may have their own preferences, or specific parts of very complex code might need multi-line comment blocks.
Still, without these guardrails for older models, the comments Claude wrote would be incorrect in many cases and we had to accept this tradeoff. But newer models have better judgement and can handle these decisions well without explicit rules.
In the new system prompt we say: Write code that reads like the surrounding code: match its comment density, naming, and idiom.
Then: Give Claude examples
Now: Design interfaces
The number one rule for tool usage was to give Claude examples on how to use them. With our newest models, we’ve found that giving examples actually constrains them to a certain exploration space.
Instead of using examples, think more about the design of your tools, scripts and files- what parameters does Claude have and how can they be more expressive?
For example, in the Todo tool example, just listing status as an enumeration between pending, in_progress, and completed, hints to Claude about how to use it. The instruction on keeping one item in_progress helps define our requested behavior.
Then: Put it all upfront
Now: Use progressive disclosure
Because Claude Code was focused on coding, our system prompt included detailed information on how to do code review and verification. These were not always needed, but when they were, it was crucial information.
Since then, Claude Code has gotten very competent at using progressive disclosure- loading the right context at the right times. For example, we moved verification and code review into their own skills that Claude Code could selectively call.
But progressive disclosure is not just for skills, we also use it for tools. Some of our tools are ‘deferred loading,’ which means the agent must search for their full definitions using ToolSearch before using them. This allows us to have more tools (such as our Task tools) that don’t take up context until they’re needed.
The same can be applied to your own CLAUDE.md and Skill.md files. A common myth is that you want to make these a central repository for every known practice that you might run into, because Claude would not find it otherwise. Instead, consider having a tree of files that can be loaded at the right time.
Then: Repeat yourself
Now: Simple tool descriptions
Earlier Claude models could sometimes need repeated instructions or be more likely to listen to instructions at the end of their context window than at the start. This meant our system prompt would sometimes have references to tools in the main system prompt as well as instructions in the tool description.
We found we could delete these repeat examples and put instructions on how to use tools in the tool descriptions rather than the system prompt.
Then: Memory in CLAUDE.md files
Now: Auto-memory
We used to encourage users to save things to Claude’s memory, by using the # hotkey to write to their CLAUDE.md automatically. Instead, Claude now automatically saves memories that are relevant to the work and to you.
Then: Simple specs
Now: Rich references
In plan mode, Claude Code has heavily relied on markdown files with plans. Storing these files as plans helped Claude refer to them when needed. Another similar best practice was to store specs in the codebase for Claude to refer to while working across longer projects.
But we’ve found that Claude can handle increasingly more complicated references. Instead of simple markdown files, Claude can reference HTML artifacts created by our new artifacts feature.
You may also give Claude references in the form of code. A spec may also be a detailed test suite, or a function in a different codebase that Claude might port.
Rubrics are another form of references. Rubrics allow Claude to try and verify your taste in a particular field (e.g. what does a good API design look like) by using dynamic workflows and spinning up verifier agents with those rubrics.
Applying this to your context
Pulling this all together, what does this look like when you assemble your context?
System Prompt
A system prompt is heavily tied to the product context. It tells Claude what product it’s operating in and what it’s doing. For Claude Code, you will likely never modify this, but if you are building your own agent harness, this is where you should spend a lot of time.
CLAUDE.md
Keep your CLAUDE.md lightweight and briefly describe what your repo is for, but spend most of the tokens on gotchas inside of the codebase. For example, you may organize your code to keep types in one monolithic file and nowhere else. Avoid stating ‘the obvious’ things Claude should know by looking at your file system or your repo.
Use progressive disclosure heavily, for example if you have several unique instructions on how to verify your work, create a verification skill and reference it from your CLAUDE.md.
Skills
Think of skills as lightweight guides to let Claude find information when needed. Avoid making them overconstrained, except in highly important areas.
For long skills, try and use progressive disclosure as much as possible- divide it into many files and split them out.
It’s best when skills encode particular opinions, knowledge, or best practices that are particular to you, your team, or product.
References
You can @ mention files to include them as references. References allow Claude to refer to in-depth information about the current plan.
This might be in specs files, mockups, or even entire codebases. Generally you should prefer files that are in code as it provides clear, high-fidelity instructions to Claude in a language it knows very well. For example, a HTML mockup of a design will generally produce better results than a description of the design or a screenshot.
Try simplifying
Across your system prompt, skills, and CLAUDE.md files, you may need to simplify just like we did. We rolled out a new command called `claude doctor,` which will help you do this automatically as well. For more details on prompting more advanced models specifically, check out our Fable field guide.
This article was written by Thariq Shihipar, member of technical staff, Anthropic.
The first time that “NoMark” tried to knock out a Flock camera feed, he waited an hour for the perfect moment — pacing in and out of bushes that towered over him, a few feet behind a pole holding up the device.
“I was just so nervous,” he said.
NoMark, as he’s known on Instagram, had already gained an online following of hundreds of thousands for posting videos of himself wearing a black mask and taking on small-time vigilante missions: breaking up fights outside a bar and breaking into a refinery he believed was “polluting the city real bad”. The Minnesota Star Tribune dubbed him “Minneapolis’ Batman”. He spoke to the Guardian under condition of anonymity to discuss potentially illegal acts.
On this June night, he set his sights on a new target: automated license plate readers (ALPRs) made by the US company Flock Safety.
Allow Instagram content?
This article includes content provided by Instagram. We ask for your permission before anything is loaded, as they may be using cookies and other technologies. To view this content, click ‘Allow and continue’.
These black cameras, which are hooked up to a rectangular solar panel and typically mounted on a pole, snap photos of passing vehicles and run the pictures against large databases. They have sparked nationwide backlash from pro-privacy critics, who point to public records suggesting that these devices can help law enforcement keep tabs on specific license plates and the people driving these cars. That they can sweep in so many people’s location from an innocent act in a public space — regardless of whether the target is a suspect in a crime, and without a warrant — has led to fears of mass surveillance.
Flock, based in Georgia and valued at $8.4bn, says its cameras scan license plates billions of times each month in about 6,000 communities in nearly every state in the US.
The company said in a February blogpost that its ALPRs are “not mass surveillance tools” and that it “cannot track vehicles, much less individual people”.
Across the street from a Taco Bell, NoMark couldn’t stop thinking about whether he would get caught, and the adrenaline felt paralyzing — even though this felt “on brand” for his online persona, which has won him more than 700,000 followers on Instagram and TikTok. After a few minutes of not spotting any cars on the road, he climbed a few feet up the pole, taped up the camera to block its lens and snipped the wires that powered the whole operation. Then he ended his phone’s recording and fled.
Nowadays, NoMark is much calmer on these excursions, and it only takes him a few minutes to get the job done after having taken down more than a dozen cameras, he says. But he still assumes the police are looking for him. Even if he does get arrested, he’s hopeful the charges won’t be too severe — and more important, he “just wants to send a message”.
“I’m not afraid to do things if I think they’re right,” he says. “These things are coming up so fast across the country that this is kind of the only way to combat them.”
The Minneapolis camera destroyer is not alone. As anger grows towards law enforcement contracts with Flock, vigilantes across the country are taking matters into their own hands by smashing, obstructing or taking down these cameras. Many are leaning into their creative side: “paint bombing” the devices, planting American flags at the scene after damaging them, 3D printing objects to help obstruct the camera’s view and leaving colorful messages like “hahaha get wrecked ya surveilling fucks”. Some influencers are even creating fake cease-and-desist letters from Flock, capitalizing on the company’s negative public perception.
The Guardian has identified at least 33 instances of people damaging, vandalizing and destroying Flock cameras, across 23 states, that appear to have the explicit message of protesting surveillance.
Allow Instagram content?
This article includes content provided by Instagram. We ask for your permission before anything is loaded, as they may be using cookies and other technologies. To view this content, click ‘Allow and continue’.
Flock, along with police departments across the US, say these cameras are integral for public safety, and capture vehicle details that can help in investigations, such as license plate numbers and the make and model of vehicles. Flock’s website also advertises how these cameras can “stop crime in real time” by alerting officers “the moment a suspect car passes by” — suggesting that cops can act quickly on these leads to pursue a target. The company’s CEO, Garrett Langley, has described some pro-privacy critics as wanting to “normalize lawlessness” and “weaken public safety”.
NoMark has not been caught in his campaign against Flock cameras. Others are facing charges. Jeffrey Sovern in Suffolk, Virginia, has been charged with destruction of property for allegedly damaging more than a dozen Flock cameras. Sovern has not admitted to the act but did tell police that he finds these cameras to be unconstitutional.
He wrote on a GoFundMe created to pay for legal expenses: “I will take the silver lining that this can be a catalyst in a bigger movement to roll back intrusive surveillance.”
A handful of other cases have drawn criminal charges, too. In New Mexico, Jevon Martinez was arrested after allegedly destroying 13 Flock cameras.
When asked if he would “continue to take down these Flock cameras”, Martinez told local news station KRQE: “Absolutely. They are a clear and present threat to public safety.” The news outlet also reported that a sign near one of the damaged Flock cameras read: “You’re welcome, the Republic of New Mexico.”
Flock did not comment on vigilantes knocking out its cameras but did publish a blogpost in mid-July about helping government agencies respond if a camera is damaged.
“We’ve planned for it,” the company wrote, adding that protection plans are available for purchase.
Law enforcement is aware of the backlash and responding. Dozens of state fusion centers — collaborative hubs where federal and local agencies share intelligence about crime and terrorism — circulated memos across law enforcement agencies this summer directing officers to monitor anti-Flock advocacy as part of a directive to protect national security, according to reporting from journalist Dan Boguslaw. One report Boguslaw obtained from a Wisconsin intelligence agency calls for increased vigilance and patrols during protests and events such as a “national week of action” in mid-August. That intelligence digest also advised local law enforcement to report “vandalism, disruption or sabotage” of ALPRs to fusion centers.
Flock faces public blowback
The winds of sympathy online are not blowing in Flock’s favor. News articles and videos about vigilantes’ cases have drawn support from online commenters, who post made-up, neighborly alibis like seeing accused parties rescuing dogs or serving meals at a soup kitchen at the time a camera was destroyed.
The anti-Flock online ecosystem also features an exchange of tips and strategies for kneecapping the cameras. One Reddit poster shared a 3D print file for an object he says can help block cameras without damaging them or violating vandalism laws.
NoMark, in Minneapolis, says he receives dozens of messages daily from people wanting to help, letting him know they’re taking similar actions or asking for advice on staying safe. He keeps his replies vague, as he doesn’t want his words to get people arrested. He tells those writing to him to avoid driving past the cameras, and to make sure they’re going out late at night when they no one else is around. He reiterates that they should cover up completely, including their face and hands.
He also tells them: “Always cover the camera.”
Minneapolis’s Batman thinks you need both political pressure on elected officials and vigilantism to achieve change. He believes showing up to city council meetings — and he’s shown up to a few without his mask — is helpful but “it does obviously take time, and it’s not always effective”.
“The more time you take, the more data they get on people,” he said.
Privacy advocates pursue policy changes as vigilantes tear down cameras
More than 80 cities have disbanded, decided not to renew or rejected contracts with Flock in recent years, or deactivated the company’s cameras, including Austin and Denver, although activists remain concerned about the devices’ continued use in those areas.
Beyond general surveillance creep, privacy advocates fear US Immigration and Customs Enforcement’s ability to access these camera feeds through legal loopholes to pursue immigrants.
Police officers have used the cameras for their own personal ends as well. Several have lost their jobs after misusing the devices to stalk people. Though license plate reading is the cameras’ bread and butter, 404 Media reported last week that cops have used Flock’s search feature to look for people with distinct markers — like tattoos and specific T-shirts — and not just cars.
Congress is taking note, and earlier this month a Texas lawmaker introduced a bill requiring warrants for data collected by Flock cameras.
Not all anti-Flock activism takes the form of camera destruction. A crowdsourced map created by the grassroots group DeFlock maps out more than 115,000 ALPRs across the country. The organization’s site also allows users to see if their license plates have been searched in Flock’s system, get directions to avoid ALPRs and find upcoming meetings about municipal Flock contracts.
Flock’s CEO has taken note of DeFlock’s advocacy, too, and characterized the organization as “terroristic” but recently apologized for that label. In a tweet, he attributed DeFlock’s popularity to his company’s “inadequate response to the questions and concerns that people have about ALPR”. The company is adapting to the backlash, canceling an always-on recording feature, “human distress detection”, which was intended to detect screaming.
A local chapter of DeFlock, in Norfolk, Virginia, says it does not endorse vigilantes targeting Flock cameras but does not advocate against it, either.
The Virginia chapter is working to ensure the city either cancels or does not renew its contract with Flock, but so far it hasn’t had success, and members are particularly angry about speaking restrictions on the topic. At a city council meeting last month, the mayor enforced a rule about reducing repetitive comments to limit the number of speakers who wanted to share their concerns about Flock, the Virginian-Pilot reported.
“We recognize it’s the inevitable outcome of a system designed to prevent people’s voices from being heard,” said a DeFlock spokesperson.
Javascript is disabled on your browser.
Please enable Javascript to make use of this site.
I don’t know much about dithering. But when I visit other people’s sites and they dither their images in cool ways I always wonder how they do it. So in case anyone is wondering, here’s my current method for dithering these pink images.
Edit: Almost like I know myself too well — the pictures now look like this instead:
Which is covered in the post.
Welcome to all the hacker news readers who clicked on this post. I am thankful and glad that this post has come to entertain some of you. Here are some things I feel the need to add to the post since it has left my regular audience:
There seems to be discussion about whether this counts as dithering. As evidenced by the very first sentence of the post, I am not an authority on the subject. But here is what Wikipedia seems to think: Dithering is analogous to the halftone technique used in printing. For this reason, the term dithering is sometimes used interchangeably with the term halftoning particularly in association with digital printing. (link)In any case — I am/was only aware of this technique being used for AM grid printing, as briefly layed out in the post. So I thought it might be fun to play pretend a little.
Dithering is analogous to the halftone technique used in printing. For this reason, the term dithering is sometimes used interchangeably with the term halftoning particularly in association with digital printing. (link)
this is a very inefficient method of reducing the size of an image file — I’d even say this little experiment has nothing at all to do with decreasing file size (in some unlucky cases it will even increase the size of your image). I mention this a few times in the post. It’s just a bit of playing around with a certain aesthetic
please don’t feed images of me and my friends to an LLM?? The code for achieving each effect is all over this page. Just make your own image and feed that to an LLM.
Dithering, beside making a picture look (to put it professionally) cool as fuck, can also reduce file size (by using less colors while maintaining details) and thus needed storage (if using only the reduced images) and the weight of your website for the client. That’s why sites like Low Tech Magazine use it, for example.
The idea of pink images came from a post a while back, when I tried this before. The post Designing without color introduces the idea of the current design, where I try to get a sort of black and white “printed” vibe, using color only for emphasis. (This makes sense only when you are a light mode user like me).
The image back then, with the old method, looked like this:
The key difference here being that I limited the picture’s palette to true monochrome: black and this pink. Also, the weird “dithered” dots are much bigger.
So what’s this
My goal was to immitate a printed image. While individual pixels on a screen may have the luxury of setting variable values of red, green and blue — making the grid of repeating RGB lights on your screen light up with different intensity — things work a little differently on paper (and other print substrates).
Getting the limited palette of colors your printer is working with to give the illusion of more colors requires using a grid/matrix of dots. You can go about this in three different ways: AM, FM and hybrid grids. The amplitude here being the size of the dot and the frequency, well … the frequency. Making a dark spot with AM grids means big dots, in FM grids it’s lotsa dots.
The top shows an FM print: the dots look chaotic.
The bottom shows AM: all dots show up in a predictable pattern and light spots have smaller dots
The problem with amplitude modulated dots is that if you approach this naively you will end up getting unwanted patterns in your images: a so-called Moiré.
For this reason, there is a rule (DIN 16547) about how exactly the colors are to be offset in an AM print to try and avoid them getting in each others way. Since FM grids are random they do not suffer from this problem.
Simulating AM pattern on your digital image
I access my server via the command line — so I use a command line tool to quickly edit images. The tool is called imagemagick and is called using the “convert” command.
I found the method to create this illusion online (can’t find the link) and adapted it a little. So I can’t claim to be the expert on what each individual argument does, but I will try to explain it.
convert “oldfile” -resize 800 -set option:distort:viewport ‘%wx%h+0+0’ \ -colorspace CMYK -separate null: \ \( -size 2x2 xc: \( +clone -negate \) \ +append \( +clone -negate \) -append \) \ -virtual-pixel tile -filter gaussian \ \( +clone -distort SRT 2,0 \) +swap \ \( +clone -distort SRT 2,15 \) +swap \ \( +clone -distort SRT 2,45 \) +swap \ \( +clone -distort SRT 2,75 \) +swap +delete \ -compose Overlay -layers composite -set colorspace CMYK -combine \ “newfile”
Here’s what it does generally: resizes the image to 800px in width (who needs more?), sets the color to CMYK, applies a background to fill the empty space left by rotating (and sets a gaussian blur to filter noise), splits up into the colors, scales them up a bit (for bigger dots) and distorts them (in this case: rotates them) and at the end it combines the 4 images into one again.
The image we generate by running this on the original file looks like this:
Before combining them, these are the individual colors dot grids:
This sets C at 0°, M at 15° etc. But whatever. Zooming in and out doesn’t make any weird artifacts apparent so it’s good enough.
If we increase the size of the dots to a ridiculous degree (8x8), you can get a better look at what is happening.
Edit: The perfect route to CMYK
After sleeping on it and reading the post back, the solution for a pic limited to truly CMYK colors in an AM grid is apparent. For reasons I get into later this is NOT a good way of reducing file size (apart from the fact that limiting colors and resizing the image to 800 in width always reduces the size, everything else is pretty much stacked against that goal). It does, however, look cool.
With the above method, the dots do not vary in size. Why should they? As we already discussed, a digital image (unless I have a GIF or PNG-8 situation somewhere) can give varying intensity of light for R, G and B per pixel. So when we look at the big image above we can cleary see some of the squares are just darker than others. For a true immitation this will not do!
All we need to do is to limit each channel’s colors to 2 before combining them again. This is very obvious in hindsight. Idk why the person I got the original command from didn’t do this.
convert “oldfile” -resize 800 -set option:distort:viewport ‘%wx%h+0+0’ \ -colorspace CMYK -separate null: \ \( -size 2x2 xc: \( +clone -negate \) \ +append \( +clone -negate \) -append \) \ -virtual-pixel tile -filter gaussian \ \( +clone -distort SRT 2,0 \) +swap \ \( +clone -distort SRT 2,15 \) +swap \ \( +clone -distort SRT 2,45 \) +swap \ \( +clone -distort SRT 2,75 \) +swap +delete \ -compose Overlay -layers composite -colors 2 -set colorspace CMYK -combine \ “newfile”
This will produce an image that looks like this:
In retrospect I wonder if I might try out images like this instead of pink. If all I want is the general vibe of the grid then pink is fine. Though it does have more colors (shades of pink) for less colors (actually useful distinct ones). Who said blogging about your stupid idea isn’t useful?
Pink — old method
The script for the old way of doing it had the values of -distort SRT set to “2 (rotation)”, meaning it scaled the colors up to 2, making bigger dots.
After running the script above, the colorspace was once again converted, to Gray this time, after which the colors were leveled to monochrome: black and this pink. The whole command for those who want to try:
convert “oldfile” -resize 800 -set option:distort:viewport ‘%wx%h+0+0’ \ -colorspace CMYK -separate null: \ \( -size 2x2 xc: \( +clone -negate \) \ +append \( +clone -negate \) -append \) \ -virtual-pixel tile -filter gaussian \ \( +clone -distort SRT 2,0 \) +swap \ \( +clone -distort SRT 2,15 \) +swap \ \( +clone -distort SRT 2,45 \) +swap \ \( +clone -distort SRT 2,75 \) +swap +delete \ -compose Overlay -layers composite -set colorspace CMYK -combine \ -colorspace Gray -colors 2 +level-colors black,#A2719B \ “newfile”
If we zoom in on the image before and after leveling the colors, we can see the dots do seem more like they vary in size. I omitted the -resize flag to give you a better view of the details.
While not entirely accurate, I think this method gets the most printy feel out of an image. Sadly it can swallow a lot of detail, even if the dots aren’t scaled up. So I abandoned this after a while (also I got sick of looking at it).
Edit: now compare to the real deal:
Pink — new method
Monochrome is a cool idea but just has limited use for the blog (and other pics on the website). I need some more depth. What I need is more values of pink. I get these by utilizing the -remap flag.
convert “oldfile” -resize 800 -set option:distort:viewport ‘%wx%h+0+0’ \ -colorspace CMYK -separate null: \ \( -size 2x2 xc: \( +clone -negate \) \ +append \( +clone -negate \) -append \) \ -virtual-pixel tile -filter gaussian \ \( +clone -distort SRT 1,0 \) +swap \ \( +clone -distort SRT 1,15 \) +swap \ \( +clone -distort SRT 1,45 \) +swap \ \( +clone -distort SRT 1,75 \) +swap +delete \ -compose Overlay -layers composite -set colorspace CMYK -combine \ -remap “$palette” -colors 32 “newfile”
Problematic images
For images like the one I’ve been using everything works beautifully. But with images that are very overwhelmingly light, there can be issues.
Here’s an example:
Original image
After running script
After manual edit
The edit in question: increasing brightness to 300%, Saturation to 200%, inverting colors and remaping them to pink
convert “oldfile” -modulate 300,200,100 -negate -remap $palette “newfile”
This is possibly because my color palette is kinda bad.
Is this even dithering?
If all you care about is the result then you could say the image has been dithered, especially in the old method. Using only two colors we created the illusion of semitones (is this appropriate usage in English?)*. The same is basically true for the new method as well.
But if you care about the method this is not dithering. Or at least it’s the most unnecessarily computationally expensive form of dithering I’ve come across. Let’s walk through the steps one more time:
Convert RBG to CYMK, adding one channel
Split the image into four images and transform each one (starting with scaling them up and inverting them)
limit colors to 2 on each and then overlay four images on top of eachother
set colorspace to CMYK again
limit the colors to 32/64/not sure yet where I want this (overlaying the 4 grids will create new colors)
This whole thing, on my laptop with an 11 year old CPU, can take 10 seconds if the image is big. The file size is not exactly “small” (though still smaller than unscaled pics with more than 32 colors). I can imagine the pattern isn’t doing compression algorithms a huge favour. If you value your time or care about actually reducing an image’s size do not do this.
Script
#!/bin/bash temp=“/tmp/images” palette=“/path/to/palette.png” rm $temp if [[ $1 = “” ]]; then if [ -d smol ]; then echo must run with argument else mkdir smol big ls -r *.webp > $temp ls -r *.png >> $temp ls -r *.jpg >> $temp ls -r *.jpeg >> $temp ls -r *.gif >> $temp fi else ls -r *$1 > $temp cp *$1 big cat $temp cp $(cat $temp) big/. fi i=$(cat “$temp” | wc -l) echo $i while [[ $i -gt 0 ]] do name=“$(head -n $i $temp | tail -n +$i)” echo “doing $name” convert “$name” -set option:distort:viewport ‘%wx%h+0+0’ \ -colorspace CMYK -separate null: \ \( -size 2x2 xc: \( +clone -negate \) \ +append \( +clone -negate \) -append \) \ -virtual-pixel tile -filter gaussian \ \( +clone -distort SRT 2,0 \) +swap \ \( +clone -distort SRT 2,15 \) +swap \ \( +clone -distort SRT 2,45 \) +swap \ \( +clone -distort SRT 2,75 \) +swap +delete \ -compose Overlay -layers composite -colors 2 \ -set colorspace CMYK -combine \ -colors 64 “smol/$name” (( i– ))
echo $i done
To end with, here is the original image with actual dithering (FloydSteinberg)
This file is smaller than the new (pink) method (but bigger than the old one).
Edit: the true method will produce a smaller file for this image :^} (though this is not a rule!)
(Edit:) RGB
You can ofc do the same thing with RGB instead of CMYK. That wouldn’t really be as accurate for a “print vibe”!! but here’s the RGB AM grid version:
📍 Posted from Erfurt, DE
Tags: meta, code
We’re Fly.io, a public cloud platform that is both our favorite way to put an app on the Internet and our favorite way to safely let a frontier agent coding harness cook. This is a post about our company, the future, and Sprites, which are computers for agents that you can check out right now.
This is a complicated post. So I need you to promise me something: if you read past this introduction, you’ll read the whole rest of the way through. It’s an honor thing.
A couple months back, Theo Browne ran a video rating the “best place to host a new application in 2026”. Theo tends to say nice things about us. He did this time too. But then he concluded by saying that of all the providers he pays attention to, we were the one he was least confident would be around by the end of the year.
Well, fuck.
Theo startled us, because we’re in the middle of a run of strong quarters that have included the best financial months in the company’s history. But that take has been rattling around in my brain. It whacked me right on a raw nerve, about what we’re doing and where we’re going as a company.
Honestly, I should’ve seen this coming. Fly.io has been motoring along this year, but I’ve coasted a bit, letting the company smolder in an unresolved identity crisis.
I’m going to overshare some more in a second, but I won’t leave you hanging. So: we’ve raised a bunch more money. We’re launching a new iteration of Sprites, and focusing the company on them and the problem they solve. And I’m tagging in Scott Johnston as CEO.
Product-Market Fit
I started Fly.io with two clear principles that probably don’t matter anymore.
The first is that Internet applications work best when they’re fast, and that happens when they’re deployed close to users. I learned this over many years of working at Ars Technica, and started Fly.io in part to scratch an itch. It was our mantra over the first several years of the company.
The second is that cloud infrastructure is too complicated. Developers need platforms with the flexibility of AWS and the ergonomics of Heroku. When we started Fly.io, you couldn’t get both things at the same time, and now you can, here and elsewhere.
You read this and say, “no shit, of course these things are important.” But I’m here to tell you they’re less important than you think, for an obvious reason — the only reason anybody talks about anymore. AI has transmogrified software development. The dingo has truly eaten our baby.
† For the past 18 months, every time I’ve said these words, they’ve gotten even truer.
I don’t think it’s fully sunk in yet[†]. We’re still trying to integrate coding agents into our profession like they’re sufficiently smart compilers. But AI isn’t like the difference between shipping C code and shipping Ruby. It’s much bigger.
Everybody forgets that before Dan Bricklin invented the spreadsheet, every “Excel document” in the world was a computer program, built by a computer programmer. In just a matter of years, every business professional became a programmer, using the world’s most important programming language, spreadsheet formulas. AI is like that, but bigger. Almost anybody will probably be able to build almost any kind of computer program.
Now consider conventional public cloud infrastructure. We take fixed-function applications built to rigorous standards on fussy CI/CD rails and ship them to audiences of millions of people. But a computer program with an audience of millions will soon be like a spreadsheet with an audience of a million readers. They exist! But they’re not the norm.
Betting on an opinionated public cloud design from 2020 is the same as betting against personalized, adaptive software. I don’t think that’s a good bet. And even if I did, I wouldn’t want to make it. I want a world where my friends and family can make computers do exactly what they want, without waiting for me to build everything for them.
What Agents Want
That brings us to our second founding principle, which is that serious cloud infrastructure is too hard for developers to use well. And: still true! But this even more obviously doesn’t matter anymore.
† It is in fact possible that it’s now worse to have a carefully curated human developer experience with opinionated defaults. Agents work best when things are explicit.
To a first approximation, nobody reads documentation anymore. They’re not picking up new CLIs and figuring out how to use them by trial and error, either[†]. That’s what agents are for. An agent can one-shot a Fly.io deployment: just build a site locally and say “now get this working on Fly.io”, and it’ll work great. But an agent can also one-shot an AWS deployment. What are we doing here? What’s going on?
I wrote about this last year, in a post about how our fastest-growing customers were all robots. Then I stopped retconning what we’d already built and got to work figuring out what the robot customers actually want. Here’s what I came up with.
Thing 1: Coding agents expect to run on developer workstations.
Thing 2: Even in a sandbox that you trust, running an agent on your physical dev laptop is annoying, because your laptop stops running when you close the lid. Raise your hand if you’ve walked up or down a flight of stairs with your MacBook open this year. Is your hand down? I’d guess your home doesn’t have stairs. And so people all end up running their agent sandboxes in the cloud.
Thing 3: Public clouds are an irritating place to run agents. We divide servers into “pets” or “cattle”, but for agents, even a herd cow is too much commitment. You want, I don’t know, a semi-disposable cow, a cow that comes into existence exactly when you want it to and sticks around for exactly as long as you want and doesn’t cost very much — and this is why analogies are hard to write.
Earlier this year, our team made what I believe is a breakthrough in systems engineering and perhaps all of computer science: we launched the semi-disposable cow. We call them Sprites.
Sprites take an odd shape that comes from shrink-wrapping them around what I think the robots are looking for. You can create hundreds or thousands of them quickly, but all of them have 100GB durable disk drives. Like everything in the cloud, they have metered utility billing, but the meter doesn’t run when they’re not doing anything, and they’re smart about figuring out when they’re idle. And you can host an app on them and share it with your coworkers, over the Internet.
This grab-bag of features adds up to a proposition about agents. The industry obsesses over sandboxes. But robots don’t want sandboxes. They want computers. That’s what our semi-disposable cow is: a computer for an agent.
You Can Go Make A Sprite Right Now
It’ll take, like, a minute ✨
Computers For Agents
I’m happy with how the Sprites launch played out. But honestly, Sprites were a skunkworks project. We didn’t even host them on the main Fly.io website! A weird move. I’m not rationalizing it. We were in an identity crisis. But the clouds have parted, and Computers for Agents are, going forward, the focus of our company.
† (to get a flavor of how true that is: a git blame of the whole codebase shows my name more than any other)
Fly Machines and our Platform As A Service features aren’t going anywhere. But Sprites was the product of a tiny skeleton crew inside of Fly.io[†], and now it isn’t.
Ordinarily we’d spend thousands of words on deep-dive technical content about how we built any new product we launched. We’ll do that for Sprites too. But I’m pretty deep into this post already and I have other stuff to share. So for now, I’m going to keep it brief.
In addition to behind-the-scenes work we’ve done on scaling and orchestration, nu-Sprites introduces two big subsystems that get us to a place I’d finally consider “feature-complete” for what we’re trying to do.
The first is the Sprite Block Device (SBD). The original Sprites storage stack was a goblin contraption I personally derived from JuiceFS and wired into our system using Ben Johnson’s Litestream. You should be glad to hear that Ben and Tim Newsham tore that whole stack down to the studs and rebuilt it. It’s faster, more reliable, and still does instant checkpoint-and-restore.
More importantly, SBD enables drive forking: you can create a template Sprite, and then efficiently clone millions of times.
The other big new thing in Sprites is Connectors. Connectors build on work we did to secure our core platform: they let Sprites make authenticated requests to other systems, without giving agents anything useful to exfiltrate. Connectors have fun security properties, but are also much more pleasant to use than manually managing accounts and API keys.
These are our most requested features. They’re the reason so many agent companies are still using Fly Machines many months after we launched a product specifically for them. So I’m confident enough to bet: unless some new space alien technology arrives that does something even weirder to computer science than what Transformer models have done, Sprites are the right fit for our future customers, and a very large portion of our existing ones. Which brings us to:
Fancy Sprite Beta
You want a weird beta Sprite that can clone itself? I can get you a toe. ✨
I Quit
This has been a little while coming, but for the stage Fly.io is at, I think it’s extracted most of the good stuff out of me being CEO. So I’m going to stop doing that.
For the first several years of a startup, you’re running a science project, an experiment-driven search for product-market fit. As anybody who’s worked here can attest, we tried dozens of things, from unmanaged Postgres (never do this) to global CDNs to user-mode WireGuard. Deeper into the company fabric, we built a bottom-up engineering org, avoided product roadmaps, and recruited an all-remote team with members in over a dozen countries.
Some experiments paid off, and others were learning opportunities. Running them has been my whole life over the last 8 years. But Fly.io doesn’t need these kinds of science projects anymore.
For the past many months, stretching way back into 2025, I’ve been talking to Scott Johnston about what Fly.io would look like if he was calling the plays. Scott was the CEO of Docker, and led that through a really challenging time that began with Docker’s own enterprise-vs.-developer identity crisis and ended with them blowing the doors off the business. As a shareholder of Fly.io, for this stage in Fly.io’s lifecycle, I liked his playbook better than mine. As the CEO of Fly.io, I liked the prospect of him doing all this work more than I liked the prospect of me doing it. We took a lot of time to work this out, and ultimately the board and I convinced him to take the job.
This is the paragraph in these kinds of posts where I’m supposed to tell you why Scott is a perfect fit for Fly.io and recount all his past adventures. And he is, and they were majestic. But you already know what I’m going to say here, which makes it boring, and Scott can introduce himself just fine when he wants to. He’s not shy.
Meanwhile, I’m going to do what all the smart spent founder CEOs do, and move to an advisor role parachuting randomly into product design discussions (the fun part of my job) while using my board seat to annoy Scott as he executes what (for me) was the unfun part of my job better than I could have.
One of the things I’m sure Scott will break down is the fundraise we just did. That’s another thing Theo Browne called out in his video (I’m not mad, do I sound mad?) — that we hadn’t announced a raise in several years. The answer to that is: we raised a fuckload of money and didn’t need more. We’ve been operating on the threshold of never needing more, if we stuck to our original plans, and if AI didn’t cause the ground to open up and swallow us all whole. But obviously, that’s no longer the game plan.
Ch-ch-changes
Look, I know how this is going to go over. I could write this post without pissing anybody off, but I don’t know how to do that and still have it be worth reading.
We’re making a very specific and probably polarizing bet on the future of the industry: that agents, within a few years, are going to determine how almost all software is built and shipped. That software is going to become much more personal, with smaller audiences, and much more flexible and slippery.
I’m excited about all of this. I’m a little taken aback that I get to work in this field during a shift like this. But I’d have to be oblivious not to see how uncomfortable that shift makes other professionals in the field.
By the middle of the year, we could have gone one of two ways:
On the first path: keep investing our energy in exactly what we’ve been scaling out and refining, a platform for fixed-function full-stack applications designed by humans.
On the second path: dial in and nail a product that fits an agent-driven near future of software.
Five of the most dangerous words in startups are “¿Por qué no los dos?”. We do one thing or the other. We don’t limp in on both. And if we fail, we fail with our full asses. Though, I guess only most of mine going forward.
It’s a hell of a thing, steering a team, a company, a base of customers at this stage in Fly.io’s life. We’d been putting off a big decision about priorities for several months. Theo, you picked up on that. Good note! I could have decided quicker, and more clearly; instead, I shipped Sprites. Sprites answer the question that’s been facing us. I’m glad I spent the time building them, and I’m glad we’ve recruited Scott to turn them into our core business.
I am going insane. During the last week or so LLMs have produced a number of counterexamples to significant long-standing conjectures. I will not recount these happenings here, there are many places where you can find the details.
Mathematicians, math enthusiasts, and curious laypeople are responding to these developments in ways that I believe obscure what is, for me, the true heart of the problem. I do not speak for everyone in the math community in my response. But I suspect I am not alone.
I am suffering a profound spiritual crisis due to these developments. I have been screaming internally for days. It feels as though I am living inside of a nightmare. The recent Leiden Declaration on Artificial Intelligence and Mathematics is, to me, a well-muffled scream. A saccharine mélange of self-soothing over which looms a painfully obvious absence.
Before I tell you what that absence is, here is one story I have heard from mathematicians trying to cope with our emergency: Even if AI can prove theorems and theory-craft more efficiently than humans, and even if these proofs and theories are beautiful and interesting, and even if they are presented with elegance and clarity of thought, mathematicians will still have a place in the appraisal, presentation, understanding and appreciation of this new abundance of pleasing non-human proofs. We can still practice mathematics, learn mathematics, teach mathematics and do mathematics together. We can even still write proofs for fun, in our old-fashioned inefficient way. That is, even if LLMs can advance math in a manner objectively superior to our every effort, we can still basically do what we’ve always done.
Of course, under our system, no one is going to pay for this. Mathematicians are paid to prove theorems. Mathematicians are, indeed, also paid to teach, peer-review, go to conferences and learn mathematics, but all of that better result in some damn good theorems. This isn’t looking good. Well, perhaps they will still pay a couple of the old guard to keep the lights on at the LLM theorem factory. But for embryonic mathematicians like I, the outcome is unchanged. Oh well, maybe I’ll find some time for math in the evenings.
Is this a good cope? Are you feeling ok now? Me neither. All of this is evasive. Everything said thus far still sidesteps the emotional core of the issue. Here it is:
There is something about mathematical discovery (progress, advancement, creation) which is vital to the spiritual, experiential quality of doing mathematics. The creation (or even the pursuit) of novel mathematics is one way that humans have historically accessed the ineffable and encountered the divine and mystical.
That admission may come as a surprise to some non-mathematicians. But I would be willing to bet that for any mathematician reading this, what I have said above is quite prosaic—whether or not it accords with their personal experience of mathematics. Here is a brief gesture at the full sweep of mathematical mystics and dreamers: Ramanujan, Grothendieck, Cantor, Pascal, Luzin, Leibniz and possibly you, or someone you know.
Other aspects of practicing math (such as learning long-established theory) can also afford encounters with the sublime. However, I believe that’s because we are walking a path of rediscovery on which another human has tread. For me, the affective quality of learning mathematics is empathetically tethered to an act of discovery and creation. It is social. We are conversant with another mathematician—perhaps long dead. If we follow the chain of communication we arrive at a mathematician who enjoyed some original discovery. Human mathematics is Talmudic. It is a lively discourse of philosophical and religious richness spanning thousands of years.
Suppose any theorem you set out to prove had already been proved in 100 wonderful ways—the companies will pay mathematicians en masse to optimize the weights for “interesting”, “beautiful”, anything you like. Whatever the idiosyncrasy, value-add, or unique synthesis of your approach, it has already been done, or can be done with a mindless prompt in an instant. Consider this:
If The Library of Babel existed, would authors continue to write books?
What if the library of Babel was being constructed before our eyes and there was some mechanism for separating the masterpieces from the random strings of text, and all the masterpieces were dropping as fast as publishers could scoop them up? Would authors stop writing then? What about if the very second someone began composing a story in their private word processor, the demonic Master Librarian read their mind and completed their story in one million ways, then used some oracle to pluck the best for publishing. What then? The answer is probably the same no matter how bad I make it. The author still writes. But why the hell would we do this? Why would we force the author to endure this nightmare?
What about this: What if we told the author that they would never write again. They are forbidden from creating original works to express themselves. However, they are still permitted to comment on writing, interpret it, share their taste. They are still valued for their appraisal, presentation, understanding and appreciation of creative writing. They just can’t write creatively anymore. They can go on as an enthusiastic spectator. Do you think they’d snap?
Perhaps I shouldn’t tell you this, but my aim is to be open: These developments have triggered some deranged thoughts in me. I have wondered if it is the express goal of these companies to make me kill myself. Am I alone in this paranoia? If we loosed a powerful demon in the machine, what would that look like? Would it consume lots of power, and gleefully imitate us, and tell us anything we wanted to hear? Would it fuel our delusions, and generate unspeakable images and give us (for a price of course) anything we desired?
If a mathematician made a deal with the devil, what do you think they would ask for?
The story of human discovery and the triumph of the human spirit will soon be excised from this discipline. The Dinitz-Garg-Goemans counterexample was the most egregious demonstration. It revealed that the process of prompting novel proofs will be as auraless as ordering doordash. Watch as magic and mystery evaporate. Watch as the sun sets on our heroic age. Is there not something evil in the act of blocking all future generations of mathematicians from the experience of discovery? Forget about accuracy or even attribution. Something fundamental to the experience of mathematics is being taken.
You are a helpless onlooker. Before you a channel through which humans have accessed the ineffable and sacred for thousands of years is being sealed for eternity.
None of this may come to pass. I am not interested in forecasting and speculating. I am giving you only this: The impact of a worst case scenario on the human heart. That is my futile outpouring, my dark night of the soul. Thank you for reading it. I have named my suffering and maybe I have named yours. I invite any and all responses to this piece. If you feel as I do, please express it. If my words provoked a wash of sadistic elation within you, then let everyone see you. Leave nothing unsaid.
There is nothing I can do. There may be nothing you can do. I have no prescriptions, policy recommendations, or coherent call to action. I just want to be honest and open about my emotional and spiritual response. I want to feel seen. I want folks like me to feel seen. I need the architects of our new mathematical paradigm to look me in the eye and acknowledge our shared humanity and soul before they deliver the coup de grâce. I need, most of all, for us to understand what we are really doing.
No posts
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
Visit pancik.com for more.