{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/karpathy.bearblog.dev/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/karpathy.bearblog.dev/",
  "items": [
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>I did a fireside chat at Sequoia Ascent 2026. The YouTube video is here:</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=96jN2OCOfLs\">YouTube Video Link</a></p>\n<p>As an experiment, I fed an LLM all of my recent blog posts and tweets, then I had it read this video's transcript and produce 1) a summary and 2) a cleaned up transcript (correcting all transcription mistakes, getting rid of fill words, etc). I am posting both of these below. These can be useful for both people who may want to just read the summary in text format, but also for LLMs so that my content is legible and available to them.</p>\n<p><strong>AI generated content below for this talk follows.</strong> I used a top capability model (in this case Codex 5.5) and read the content and it reads ok without glaring mistakes.</p>\n<hr />\n<h2>Sequoia Ascent 2026: Software 3.0, Agentic Engineering, and Jagged Intelligence</h2>\n<p>I recently joined Stephanie Zhan for a fireside chat at Sequoia Ascent 2026, speaking with founders about the recent shift in AI agents, what it means for software, and how I think about the next wave of AI-native companies.</p>\n<p>The transcript from the event is a bit noisy, so I wanted to write up the main intellectual content in a cleaner form. The short version is that I think we have crossed a new threshold. LLMs are no longer just chatbots or autocomplete. They are becoming a new programmable layer for digital work.</p>\n<p>This is the compact version of the conversation.</p>\n<h2>1. December 2025 Was an Agentic Inflection Point</h2>\n<p>I said recently that I have never felt more behind as a programmer.</p>\n<p>The reason is not that programming became harder in the old sense. It is that the default workflow changed. For much of 2025, tools like Claude Code, Codex, and Cursor-like agents were useful but still required frequent correction. Around December 2025, I felt a step change: the generated chunks got larger, more coherent, and more reliable. I started trusting the agents with more of the work.</p>\n<p>The unit of programming changed from typing lines of code to delegating larger &quot;macro actions&quot;:</p>\n<ul>\n<li>Implement this feature.</li>\n<li>Refactor this subsystem.</li>\n<li>Research this library.</li>\n<li>Set up this service.</li>\n<li>Write tests, run them, and fix failures.</li>\n<li>Compare approaches and propose a plan.</li>\n</ul>\n<p>This is why I think the profession is being refactored. The programmer is increasingly not just a code writer, but an orchestrator of agents.</p>\n<h2>2. Software 3.0: The Context Window as the New Program</h2>\n<p>I think of this as the next step in a sequence:</p>\n<ul>\n<li><strong>Software 1.0:</strong> humans write explicit code.</li>\n<li><strong>Software 2.0:</strong> humans create datasets, objectives, and neural networks; the program is learned into weights.</li>\n<li><strong>Software 3.0:</strong> humans program LLMs through prompts, context, tools, examples, memory, and instructions.</li>\n</ul>\n<p>In Software 3.0, the context window becomes the main lever. The LLM is an interpreter over that context, performing computation over digital information.</p>\n<p>One example is installation. In the old world, installing a complex tool across many environments required a brittle shell script full of conditionals. In the Software 3.0 world, the installer can be a block of instructions you paste into an agent. The agent reads the local environment, debugs errors, adapts to the machine, and completes the setup.</p>\n<p>That is a different kind of program. It is less precise, but more adaptive.</p>\n<h2>3. MenuGen and the Moment Software Disappears</h2>\n<p>I used <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/vibe-coding-menugen/\">MenuGen</a> as an example of a deeper shift.</p>\n<p>MenuGen was a traditional web app: take a picture of a restaurant menu, OCR the dish names, generate images of the dishes, and render the result in a UI. It required frontend code, APIs, image generation, deployment, auth, payments, secrets, and infrastructure.</p>\n<p>But later, I saw the Software 3.0 version: take a photo of the menu, give it to a multimodal model, and ask it to render dish images directly onto the menu image.</p>\n<p>In that version, much of the app disappears. The neural network directly transforms input media into output media. The old software stack was scaffolding around a transformation the model can now perform directly.</p>\n<p>This is one of the most important founder implications: AI is not just a faster way to build the old apps. Some apps should stop existing as apps.</p>\n<h2>4. The New Opportunity Is Not Just Faster Programming</h2>\n<p>The shift is broader than coding. LLMs automate forms of information processing that were not previously programmable.</p>\n<p>My <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f\">LLM Wiki</a> pattern is the clearest example. Instead of using retrieval-augmented generation to answer questions from raw documents each time, an agent incrementally compiles raw sources into a persistent Markdown wiki: summaries, entity pages, concept pages, contradictions, cross-links, logs, and evolving synthesis.</p>\n<p>No classical program could robustly maintain that kind of knowledge base across messy human documents. But an LLM can.</p>\n<p>The lesson: do not only ask, &quot;What existing workflow can AI speed up?&quot; Also ask, &quot;What information transformation was impossible before, but is now natural?&quot;</p>\n<h2>5. Verifiability Explains Where AI Moves Fastest</h2>\n<p>My core automation framework is:</p>\n<ul>\n<li>Traditional software automates what you can <strong>specify</strong>.</li>\n<li>LLMs and reinforcement learning automate what you can <strong>verify</strong>.</li>\n</ul>\n<p>If a task has an automatic reward or success signal, models can practice it. This is why math, coding, tests, benchmarks, games, and many engineering tasks improve so quickly. They are resettable, repeatable, and rewardable.</p>\n<p>This also explains why coding agents feel dramatically better than many ordinary chatbot experiences. Coding gives the model feedback: tests pass or fail, programs run or crash, diffs can be inspected, benchmarks can be measured.</p>\n<h2>6. Jagged Intelligence Has Two Axes: Verifiability and Training Attention</h2>\n<p>The interview added an important refinement to the verifiability thesis.</p>\n<p>Model capability is not only about whether a task is verifiable. It also depends on whether the task was emphasized by labs during training, post-training, synthetic data generation, and reinforcement learning.</p>\n<p>A rough formula:</p>\n<pre><code><span class=\"code-snippet\">capability spike ~= verifiability x training attention x data coverage x economic value\n</span></code></pre>\n<p>Chess is a good example. When GPT-4 improved at chess, that was not necessarily because general intelligence smoothly improved everywhere. It may also have been because much more chess data was included in the training mix.</p>\n<p>This matters because frontier models do not come with a manual. They are artifacts of pretraining mixtures, RL environments, benchmark pressure, product priorities, and economic incentives. They spike in some places and behave strangely in others.</p>\n<p>So the practical question for a founder is: are you on the model's rails?</p>\n<p>If your task sits inside a region that is verifiable and heavily trained, the model may fly. If not, it may fail in surprisingly basic ways. You may need better context, tools, fine-tuning, your own evals, or your own reinforcement learning environment.</p>\n<h2>7. Vibe Coding vs. Agentic Engineering</h2>\n<p>I distinguish two related but different ideas:</p>\n<ul>\n<li><strong>Vibe coding</strong> raises the floor. It lets almost anyone create software by describing what they want.</li>\n<li><strong>Agentic engineering</strong> raises the ceiling. It is the professional discipline of coordinating fallible agents while preserving correctness, security, taste, and maintainability.</li>\n</ul>\n<p>Vibe coding is fine for prototypes and personal tools. Agentic engineering is what serious teams need.</p>\n<p>The agentic engineer does not blindly accept generated code. They design specs, supervise plans, inspect diffs, write tests, create evaluation loops, manage permissions, isolate worktrees, and preserve quality.</p>\n<p>My MenuGen payment bug is a useful example. The agent tried to match Stripe purchases to Google accounts using email addresses. That is plausible code, but bad system design: the Stripe email and Google login email can differ. A human needs enough product and engineering judgment to insist on persistent user IDs.</p>\n<p>The frontier skill is not memorizing every API detail. Agents can remember whether a tensor library uses <code>dim</code>, <code>axis</code>, <code>keepdim</code>, <code>reshape</code>, or <code>permute</code>. The human still needs to understand the underlying concepts: storage, views, memory copies, invariants, identity, security boundaries, and the shape of the system.</p>\n<h2>8. Hiring Should Change</h2>\n<p>If agentic engineering is the new professional skill, hiring should test it directly.</p>\n<p>Traditional coding puzzles are increasingly mismatched. A better interview might be: build a substantial project with agents, deploy it, make it secure, and then have adversarial agents try to break it.</p>\n<p>This tests the real skill:</p>\n<ul>\n<li>Can the candidate decompose work for agents?</li>\n<li>Can they write useful specs?</li>\n<li>Can they preserve quality while moving fast?</li>\n<li>Can they review generated work?</li>\n<li>Can they secure and harden a system?</li>\n<li>Can they use agents as leverage rather than produce slop?</li>\n</ul>\n<p>The old &quot;10x engineer&quot; idea may become much more extreme. People who master agentic workflows may outperform others by far more than 10x.</p>\n<h2>9. Founders Should Look for Valuable Verifiable Environments</h2>\n<p>For founders, one important opportunity is finding domains that are valuable, verifiable, and undertrained by frontier labs.</p>\n<p>If you can create a domain-specific environment where models can try actions and receive reliable rewards, you may be able to improve performance with fine-tuning or reinforcement learning even if the base model is not already excellent there.</p>\n<p>The most obvious domains, like coding and math, are already heavily targeted by labs. But many economically important domains may have latent verifiable structure that has not yet been exploited.</p>\n<p>That is a startup wedge.</p>\n<h2>10. Agent-Native Infrastructure: Build for the Agent, Not Just the Human</h2>\n<p>Most software is still built for humans clicking through screens.</p>\n<p>Docs say things like &quot;go to this URL, click this button, open this settings panel.&quot; But increasingly the user is not the human directly. The user is the human's agent.</p>\n<p>This means products need agent-native surfaces:</p>\n<ul>\n<li>Markdown docs.</li>\n<li>CLIs.</li>\n<li>APIs.</li>\n<li>MCP servers.</li>\n<li>Structured logs.</li>\n<li>Machine-readable schemas.</li>\n<li>Copy-pasteable agent instructions.</li>\n<li>Safe permissioning.</li>\n<li>Auditable actions.</li>\n<li>Headless setup flows.</li>\n</ul>\n<p>I think about this in terms of <strong>sensors</strong> and <strong>actuators</strong>. A sensor turns some state of the world into digital information. An actuator lets an agent change something. The future stack is agents using sensors and actuators on behalf of people and organizations.</p>\n<p>The MenuGen deployment story remains a useful benchmark. Building the app was easy compared to wiring Vercel, auth, payments, DNS, secrets, and production settings. In a mature agent-native world, I should be able to say &quot;build MenuGen&quot; and have the agent deploy the whole thing without manual clicking.</p>\n<h2>11. Ghosts, Not Animals</h2>\n<p>My <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/animals-vs-ghosts/\">Animals vs. Ghosts</a> framing is a way to avoid bad intuitions.</p>\n<p>LLMs are not animals. They do not have biological drives, embodied survival pressure, curiosity, play, or intrinsic motivation in the animal sense. They are statistical simulations of human artifacts, shaped by pretraining, post-training, RL, product feedback, and economic incentives.</p>\n<p>This matters because anthropomorphic expectations mislead us. These systems can be brilliant in one moment and bizarrely dumb in the next. They are not smooth human minds. They are jagged, alien tools.</p>\n<p>The right posture is neither dismissal nor blind trust. It is empirical familiarity: learn where they work, where they fail, what they were trained for, and how to build guardrails around them.</p>\n<h2>12. Education: You Can Outsource Thinking, But Not Understanding</h2>\n<p>We ended on education. There is a line I keep returning to:</p>\n<blockquote>\n<p>You can outsource your thinking, but you can't outsource your understanding.</p>\n</blockquote>\n<p>Even if agents do more of the work, the human still needs understanding to direct them. You need to know what is worth building, what question matters, what result is suspicious, and what tradeoff is acceptable.</p>\n<p>This is why I am interested in LLM knowledge bases. They are not just answer machines. They are tools for transforming information into understanding.</p>\n<p>This also connects to my tiny <code>microGPT</code> project: a complete GPT training and inference implementation in a single dependency-free Python file. The educational artifact becomes small enough for both humans and agents to inspect. The human expert contributes the distilled artifact and the taste behind it; the agent can then explain it interactively to each learner.</p>\n<h2>The Big Picture</h2>\n<p>The main thesis of the conversation is that AI is becoming a new operating layer for digital work.</p>\n<p>The scarce thing is shifting:</p>\n<ul>\n<li>Less scarce: code generation, API recall, boilerplate, first drafts, repetitive setup, simple transformations.</li>\n<li>More scarce: understanding, taste, eval design, security, system boundaries, agent orchestration, domain-specific feedback loops, and knowing when the model is off the rails.</li>\n</ul>\n<p>For founders, the most important questions are:</p>\n<ul>\n<li>What becomes possible when the primary user is an agent acting for a human?</li>\n<li>What workflows can be rebuilt around sensors, actuators, and verifiable loops?</li>\n<li>What software should disappear into direct model transformations?</li>\n<li>What domains are valuable and verifiable but not yet heavily trained by frontier labs?</li>\n<li>What human judgment must remain in the loop to preserve quality?</li>\n</ul>\n<p>My current worldview is not that AI simply makes everyone faster at the old work. It is that the work itself is being reorganized around agents. Software, research, education, infrastructure, and knowledge work are all becoming variations of the same pattern:</p>\n<pre><code><span class=\"code-snippet\">define the context\ndefine the tools\ndefine the feedback loop\ndefine the guardrails\nlet agents work\npreserve human understanding\n</span></code></pre>\n<hr />\n<h2>Sequoia Ascent 2026: Andrej Karpathy in Conversation with Stephanie Zhan</h2>\n<p>Edited transcript. Lightly cleaned for readability, with obvious transcription errors corrected, filler removed, and a few relevant links added.</p>\n<h2>Introduction</h2>\n<p><strong>Konstantine:</strong> Someone you all know, someone who has become, in this AI revolution, a teacher of AI. In every revolution there is the technologist, but there is also the teacher, the person who actually informs and instructs how this transformation is going to happen. Andrej has become that teacher to the world.</p>\n<p>Early at Autopilot at Tesla, co-founder of OpenAI, he left it all to start Eureka Labs, where he leaned into the idea of an AI that was a true instructor. We're happy to have Andrej Karpathy with our partner Stephanie Zhan.</p>\n<p><strong>Stephanie:</strong> Hi everyone. We're excited for our first special guest. He has helped build modern AI, explain modern AI, and occasionally rename modern AI.</p>\n<p>He helped co-found OpenAI. He helped get Autopilot working at Tesla. And he has a rare gift for making the most complex technical shifts feel both accessible and inevitable.</p>\n<p>You all know him for having coined the term <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1886192184808149383\">vibe coding</a> last year. But just in the last few months, he said something even more startling: he has never felt more behind as a programmer. That's where we're starting today. Thank you, Andrej, for joining us.</p>\n<p><strong>Andrej:</strong> Hello. Excited to be here and to kick us off.</p>\n<h2>The December 2025 Agentic Inflection</h2>\n<p><strong>Stephanie:</strong> A couple of months ago, you said you've never felt more behind as a programmer. That's startling to hear from you, of all people. Can you help us unpack that? Was that feeling exhilarating or unsettling?</p>\n<p><strong>Andrej:</strong> A mixture of both, for sure.</p>\n<p>Like many of you, I've been using agentic tools like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://code.claude.com/docs/en/overview\">Claude Code</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developers.openai.com/codex/cli\">Codex</a>, and adjacent things for a while, maybe over the last year. They were very good at chunks of code, but sometimes they would mess up and you had to edit them. They were helpful.</p>\n<p>Then I would say December was a clear point. I was on a break, so I had more time. I think many other people were similar. I started to notice that with the latest models, the chunks just came out fine. Then I kept asking for more and they still came out fine. I couldn't remember the last time I corrected it. I started trusting the system more and more.</p>\n<p>I do think it was a stark transition. A lot of people experienced AI last year as a ChatGPT-adjacent thing, but you really had to look again as of December, because things changed fundamentally, especially in this agentic, coherent workflow. It really started to work.</p>\n<p>That realization sent me down the rabbit hole of infinite side projects. My side-projects folder is extremely full with random things. I was coding all the time. That happened in December, and I've been looking at the repercussions since.</p>\n<h2>Software 3.0</h2>\n<p><strong>Stephanie:</strong> You've talked about LLMs as a new computer. It isn't just better software; it's a new computing paradigm. Software 1.0 was explicit rules. Software 2.0 was learned weights. Software 3.0 is this. If that is true, what does a team build differently the day they actually believe it?</p>\n<p><strong>Andrej:</strong> Software 1.0 is writing code. Software 2.0 is programming by creating datasets and training neural networks. Programming becomes arranging datasets, objectives, and neural network architectures.</p>\n<p>Then what happened is that if you train GPT models or LLMs on a sufficiently large set of tasks, implicitly, because the internet contains many tasks, these models become programmable computers in a certain sense.</p>\n<p>Software 3.0 is about programming through prompting. What's in the context window is your lever over the interpreter, and the interpreter is the LLM. It interprets your context and performs computation in digital information space.</p>\n<p>A few examples drove this home for me. When <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/openclaw/openclaw\">OpenClaw</a> came out, to install it you would normally expect a shell script. But to target many platforms and many kinds of computers, shell scripts usually balloon and become extremely complex. You're stuck in the Software 1.0 universe of wanting to write exact code.</p>\n<p>The OpenClaw installation was instead a block of text that you copy and paste into your agent. It is like a little skill: copy this, give it to your agent, and it will install OpenClaw. That is more powerful because you're working in the Software 3.0 paradigm. You don't have to spell out every detail. The agent has intelligence. It looks at your environment, performs intelligent actions, and debugs in the loop.</p>\n<p>That is a different way of thinking. What is the piece of text to copy-paste into your agent? That is now part of the programming paradigm.</p>\n<p>Another example is <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/vibe-coding-menugen/\">MenuGen</a>. You sit down at a restaurant, get a menu, and there are no pictures. I don't know what many of these things are. I wanted to take a photo of the menu and get pictures of what those dishes might look like in a generic sense.</p>\n<p>So I built an app. You upload a photo, it OCRs all the titles, uses an image generator to get pictures, and shows them to you. It runs on Vercel and rerenders the menu.</p>\n<p>Then I saw the Software 3.0 version, which blew my mind. You take the photo, give it to Gemini, and say: use Nano Banana to overlay the things onto the menu. It returns an image of the menu I took, but with pictures rendered into the pixels.</p>\n<p>All of MenuGen is spurious in that framing. It is working in the old paradigm. That app shouldn't exist. In the Software 3.0 paradigm, the neural network does more of the work. Your prompt or context is the image, and the output is an image. There is no need for all the app machinery in between.</p>\n<p>People have to reframe. Don't only work in the existing paradigm and think of AI as a speedup of what exists. New things are available now.</p>\n<p>And it is not just programming becoming faster. This is more general information processing that is now automatable. Previous code worked over structured data. You wrote code over structured data.</p>\n<p>With my <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f\">LLM knowledge bases</a> project, you get LLMs to create wikis for your organization or for you personally. This is not a program in the old sense. There was no code that could create a knowledge base based on a bunch of messy facts. But now you can take documents, recompile them, reorder them, and create something new and interesting as a reframing of the data.</p>\n<p>These are new things that weren't possible before. I keep trying to come back to that: not only what can we do faster, but what couldn't be possible before? That is more exciting.</p>\n<h2>Neural Computers</h2>\n<p><strong>Stephanie:</strong> I love the MenuGen progression. If you extrapolate further, what is the 2026 equivalent of building websites in the 90s, mobile apps in the 2010s, or SaaS in the cloud era? What will look obvious in hindsight that is still mostly unbuilt today?</p>\n<p><strong>Andrej:</strong> Going with the MenuGen example, a lot of this code shouldn't exist. The neural network should be doing most of the work.</p>\n<p>The extrapolation looks very weird. You could imagine completely neural computers in a certain sense. Imagine a device that takes raw video or audio into a neural net and uses diffusion to render a UI unique for that moment.</p>\n<p>In the early days of computing, people were a little confused about whether computers would look like calculators or neural nets. In the 1950s and 1960s, it was not obvious which way it would go. We went down the calculator path and built classical computing.</p>\n<p>Neural nets are currently running virtualized on existing computers. But you can imagine a flip where the neural net becomes the host process and CPUs become coprocessors. Intelligence compute and neural-network compute become the dominant spend of FLOPs.</p>\n<p>You can imagine something foreign, where neural nets do most of the heavy lifting and use tools as a historical appendage for deterministic tasks. What is really running the show is neural nets networked in some way.</p>\n<p>That is the extrapolation, but I think we will get there piece by piece.</p>\n<h2>Verifiability and Jagged Intelligence</h2>\n<p><strong>Stephanie:</strong> I'd love to talk about verifiability: the idea that AI will automate faster and more easily in domains where the output can be verified. If that framework is right, what work is about to move much faster than people realize? And what professions do people think are safe, but are actually highly verifiable?</p>\n<p><strong>Andrej:</strong> Traditional computers automate what you can specify in code. This latest round of LLMs can automate what you can verify.</p>\n<p>When frontier labs train these LLMs, they train them in giant reinforcement learning environments with verification rewards. Because of that, models progress and become jagged entities. They peak in capability in verifiable domains like math, code, and adjacent areas, and they stagnate or remain rough around the edges where things are not in that space.</p>\n<p>I wrote about <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/verifiability/\">verifiability</a> because I was trying to understand why these things are so jagged. Some of it has to do with how labs train the models. Some of it also has to do with what labs focus on and what they put into the data distribution. Some things are significantly more valuable economically, so labs create more environments for those settings. Code is a good example.</p>\n<p>There are probably many verifiable environments that you could think about that did not make it into the mix because they are not as economically useful to have capability around.</p>\n<p>One favorite example for a while was: how many letters are in &quot;strawberry&quot;? Models famously got this wrong. That has now been patched. The newer example is: I want to go to a car wash to wash my car, and it's 50 meters away. Should I drive or walk? State-of-the-art models may tell you to walk because it's close.</p>\n<p>How is it possible that a state-of-the-art model can refactor a 100,000-line codebase or find zero-day vulnerabilities, yet tells me to walk to the car wash? That's jaggedness. To the extent models remain jagged, it means you need to be in the loop. You need to treat them as tools and stay in touch with what they are doing.</p>\n<p>My writing on verifiability is trying to understand this pattern. I think it is some combination of &quot;verifiable&quot; plus &quot;labs care.&quot;</p>\n<p>Another anecdote is chess. From GPT-3.5 to GPT-4, people noticed that chess improved a lot. Some people thought that was just general capability progress. But I think it is public information that a large amount of chess data made it into the pretraining set. Because it was in the data distribution, the model improved much more than it would by default.</p>\n<p>Someone at OpenAI decided to add that data, and now there is a capability spike. That is why I stress this dimension: we are slightly at the mercy of what the labs do and what they put into the mix. You have to explore the model they give you. It has no manual. It works in some settings and not others.</p>\n<p>If you are in the circuits that were part of reinforcement learning, you fly. If you are outside the data distribution, you struggle. You have to figure out which circuits your application is in. If you are not in those circuits, then you have to look at fine-tuning or doing some of your own work, because it may not come out of the LLM out of the box.</p>\n<h2>Startup Opportunities in Verifiable Domains</h2>\n<p><strong>Stephanie:</strong> If you were a founder today, and you were solving a tractable, verifiable problem, but you looked around and saw that the labs have started getting to escape velocity in obvious domains like math and coding, what would your advice be?</p>\n<p><strong>Andrej:</strong> Verifiability makes something tractable in the current paradigm because you can throw a huge amount of reinforcement learning at it.</p>\n<p>That remains true even if the labs are not focusing on it directly. If you are in a verifiable setting where you can create reinforcement learning environments or examples, then you can potentially do your own fine-tuning and benefit from it. That technology fundamentally works. If you have diverse datasets or RL environments, you can use a fine-tuning framework, pull the lever, and get something that works pretty well.</p>\n<p>I don't want to give away specific examples, but there are valuable reinforcement learning environments that people could think of that are not part of the current frontier-lab mix.</p>\n<p><strong>Stephanie:</strong> On the flip side, what still feels automatable only from a distance? What domains or professions are safer than others?</p>\n<p><strong>Andrej:</strong> Ultimately, almost everything can be made verifiable to some extent, some things more easily than others. Even for writing, you can imagine having a council of LLM judges and getting something reasonable.</p>\n<p>So it is more about what is easy or hard.</p>\n<h2>Vibe Coding vs. Agentic Engineering</h2>\n<p><strong>Stephanie:</strong> Last year you coined the term vibe coding. Today we are in a world that feels more serious, more agentic engineering. What is the difference between the two, and what would you call what we are in today?</p>\n<p><strong>Andrej:</strong> Vibe coding is about raising the floor for everyone in terms of what they can do in software. Everyone can vibe code anything, and that is amazing.</p>\n<p>Agentic engineering is about preserving the quality bar of professional software. You are not allowed to introduce vulnerabilities because of vibe coding. You are still responsible for your software, just as before. But can you go faster? Spoiler: you can. The question is how to do that properly.</p>\n<p>I call it agentic engineering because it is an engineering discipline. You have agents, which are spiky entities. They are fallible and stochastic, but extremely powerful. How do you coordinate them to go faster without sacrificing your quality bar?</p>\n<p>Vibe coding raises the floor. Agentic engineering is about extrapolating the ceiling. I think there is a very high ceiling on agentic-engineer capability. People used to talk about the 10x engineer. I think this is magnified a lot more. 10x is not the speedup people can gain. People who are very good at this can peak much higher than that.</p>\n<h2>What AI-Native Coding Looks Like</h2>\n<p><strong>Stephanie:</strong> Last year Sam Altman came to Ascent and said people of different generations use ChatGPT differently. If you're in your 30s, you use it as a Google search replacement. If you're in your teens, ChatGPT is your gateway to the internet.</p>\n<p>What is the parallel in coding? If we watched two people code using OpenClaw, Claude Code, or Codex, one mediocre and one fully AI-native, how would you describe the difference?</p>\n<p><strong>Andrej:</strong> It is about getting the most out of the tools available, using their features, and investing in your own setup.</p>\n<p>Engineers have always done this with tools like Vim or VS Code. Now the tools are Claude Code, Codex, and so on. You invest in your setup and use what is available.</p>\n<p>One related thought is hiring. Many people want to hire strong agentic engineers, but most hiring processes have not been refactored for agentic-engineer capability. If you are giving out small puzzles to solve, that is still the old paradigm.</p>\n<p>Hiring should look more like: give someone a big project and see them implement it. For example, write a Twitter clone for agents, make it good and secure, then have agents simulate activity on it. Then I will use ten Codex agents to try to break the website you deployed, and they should not be able to break it.</p>\n<p>Watching people in that setting, building a bigger project and using the tooling, is closer to what I would look for.</p>\n<h2>What Human Skills Become More Valuable?</h2>\n<p><strong>Stephanie:</strong> As agents do more, what human skill becomes more valuable, not less?</p>\n<p><strong>Andrej:</strong> Right now the agents are like interns. You still have to be in charge of aesthetics, judgment, taste, and oversight.</p>\n<p>One of my favorite examples is from MenuGen. You sign up with a Google account, but you purchase credits using Stripe. Both have email addresses. My agent tried to assign purchased credits by matching the Stripe email address to the Google email address.</p>\n<p>But those can be different emails. The user might not get the credits they purchased. Why would you use email addresses to cross-correlate funds? You need a persistent user ID. This is the kind of mistake agents still make.</p>\n<p>People have to be in charge of the spec and plan. I don't even fully like &quot;plan mode&quot; as a concept, though it is useful. There is something more general: you work with your agent to design a detailed spec, maybe basically the docs, and get agents to write them. You are in charge of oversight and the top-level categories. The agents do much of the work underneath.</p>\n<p>As another example, with tensors in neural networks, there are many details across PyTorch, NumPy, pandas, and so on: <code>dim</code> versus <code>axis</code>, <code>reshape</code>, <code>permute</code>, <code>transpose</code>, <code>keepdim</code>. I don't remember this stuff anymore because I don't have to. These details are handled by the intern because agents have good recall.</p>\n<p>But you still have to understand the fundamentals. You need to know that there is underlying tensor storage, that you can manipulate a view of the same storage, or create different storage, which is less efficient. You still need to know enough to avoid copying memory unnecessarily.</p>\n<p>So you are in charge of taste, engineering, design, and whether the system makes sense. You ask for the right things: for example, we tie everything to unique user IDs. The agents fill in the blanks.</p>\n<p><strong>Stephanie:</strong> Do you think taste and judgment matter less over time, or does the ceiling just keep rising?</p>\n<p><strong>Andrej:</strong> I hope it improves. The reason it does not improve right now is probably that it is not part of the reinforcement learning. There may be no aesthetics reward, or it is not good enough.</p>\n<p>When I look at the code, sometimes I get a heart attack. It is not always amazing code. It can be bloated, copy-pasted, awkwardly abstracted, brittle. It works, but it is gross. I hope this improves in future models.</p>\n<p>A good example is my <code>microGPT</code> project, where I tried to simplify LLM training as much as possible. The models hate this. They can't do it. I kept trying to prompt an LLM to simplify more and more, and it just couldn't. You feel like you are outside the RL circuits. It feels like pulling teeth.</p>\n<p>So people remain in charge of this for now. But I don't think there is anything fundamental preventing improvement. The labs just haven't done it yet.</p>\n<h2>Ghosts, Not Animals</h2>\n<p><strong>Stephanie:</strong> I'd love to come back to jagged forms of intelligence. You wrote a thought-provoking piece around <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/animals-vs-ghosts/\">Animals vs. Ghosts</a>: we are not building animals, we are summoning ghosts. These are jagged forms of intelligence shaped by data and reward functions, but not by intrinsic motivation, fun, curiosity, or empowerment in the way evolution shaped animals.</p>\n<p>Why does that framing matter? What does it change about how you build, deploy, evaluate, or trust them?</p>\n<p><strong>Andrej:</strong> I wrote about it because I am trying to wrap my head around what these things are. If you have a good model of what they are and are not, you will be more competent at using them.</p>\n<p>I don't know if the framing has direct practical power. It is a little philosophical. But it is about coming to terms with the fact that these things are not animal intelligence. If you yell at them, they are not going to work better or worse. They are statistical simulation circuits. The substrate is pretraining, then reinforcement learning bolted on top.</p>\n<p>It is a mindset: what am I interacting with, what is likely to work, what is not likely to work, and how do I modify it? I don't have five obvious outcomes that make your system better. It is more about being suspicious of the system and figuring it out empirically over time.</p>\n<h2>Agent-Native Infrastructure</h2>\n<p><strong>Stephanie:</strong> You are deep in working with agents that do not just chat. They have real permissions, local context, and actually take action on your behalf. What does the world look like when we all live in that world?</p>\n<p><strong>Andrej:</strong> A lot of people here are probably excited about what the agent-native environment looks like. Everything has to be rewritten. Most things are still fundamentally written for humans.</p>\n<p>When I use frameworks or libraries, the docs are still written for humans. This is my favorite pet peeve. Why are people still telling me what to do? I don't want to do anything. What is the thing I should copy-paste to my agent?</p>\n<p>Every time I am told &quot;go to this URL&quot; or &quot;click here,&quot; I think: no. The industry has to decompose workloads into sensors and actuators over the world. How do we make things agent-native? How do we describe them to agents first, and build automation around data structures that are legible to LLMs?</p>\n<p>I hope there is a lot of agent-first infrastructure. With MenuGen, the hard part was not writing the code. The trouble was deploying it on Vercel, wiring services, settings, DNS, auth, payments, secrets, and production configuration.</p>\n<p>I would hope I could prompt an LLM: build MenuGen. Then I don't touch anything, and it is deployed on the internet. That would be a good test of whether our infrastructure is becoming agent-native.</p>\n<p>Ultimately, I do think we are going toward a world where people and organizations have agent representation. My agent will talk to your agent to figure out meeting details and other tasks. That is roughly where things are going.</p>\n<h2>Education and Understanding</h2>\n<p><strong>Stephanie:</strong> We have to end on education. You are probably one of the best in the world at making complex technical concepts simple, and you think deeply about education. What remains worth learning deeply when intelligence gets cheap?</p>\n<p><strong>Andrej:</strong> There was a tweet that blew my mind recently, and I keep thinking about it:</p>\n<blockquote>\n<p>You can outsource your thinking, but you can't outsource your understanding.</p>\n</blockquote>\n<p>That is nicely put. I am still part of the system. Information still has to make it into my brain. I am becoming the bottleneck of even knowing what we are trying to build, why it is worth doing, and how to direct my agents.</p>\n<p>Something still has to direct the thinking and processing. That is constrained by understanding.</p>\n<p>This is one reason I am excited about LLM knowledge bases. They are a way for me to process information. Whenever I see a different projection onto information, I feel like I gain insight. It is synthetic data generation over fixed data.</p>\n<p>When I read an article, I have my wiki being built up from those articles. I love asking questions about it. Ultimately these are tools to enhance understanding. Understanding is still the bottleneck because you cannot be a good director if you do not understand.</p>\n<p>The LLMs do not fully excel at understanding. You are still uniquely in charge of that. Tools that enhance understanding are incredibly interesting and exciting.</p>\n<p><strong>Stephanie:</strong> I'm excited to come back here in a couple of years and see if we have been fully automated out of the loop, and whether they take care of understanding as well. Thank you so much, Andrej.</p>\n<p><strong>Andrej:</strong> Thank you.</p>\n<p><strong>Konstantine:</strong> Stephanie, Andrej, thank you so much.</p>\n",
      "date_modified": "2026-04-30T16:30:08.883848+00:00",
      "date_published": "2026-04-30T16:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/sequoia-ascent-2026/",
      "id": "urn:aggr:item:3db965f4a325e028f9e712e84e82e40e865008b2",
      "summary": "Summary of my talk at Sequoia Ascent",
      "tags": [
        "programming"
      ],
      "title": "Sequoia Ascent 2026 summary",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2026-04-30-sequoia-ascent-2026-summary/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/unnamed.webp\" alt=\"unnamed\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>2025 has been a strong and eventful year of progress in LLMs. The following is a list of personally notable and mildly surprising &quot;paradigm changes&quot; - things that altered the landscape and stood out to me conceptually.</p>\n<h3>1. Reinforcement Learning from Verifiable Rewards (RLVR)</h3>\n<p>At the start of 2025, the LLM production stack in all labs looked something like this:</p>\n<ol>\n<li>Pretraining (GPT-2/3 of ~2020)</li>\n<li>Supervised Finetuning (InstructGPT ~2022) and</li>\n<li>Reinforcement Learning from Human Feedback (RLHF ~2022)</li>\n</ol>\n<p>This was the stable and proven recipe for training a production-grade LLM for a while. In 2025, Reinforcement Learning from Verifiable Rewards (RLVR) emerged as the de facto new major stage to add to this mix. By training LLMs against automatically verifiable rewards across a number of environments (e.g. think math/code puzzles), the LLMs spontaneously develop strategies that look like &quot;reasoning&quot; to humans - they learn to break down problem solving into intermediate calculations and they learn a number of problem solving strategies for going back and forth to figure things out (see DeepSeek R1 paper for examples). These strategies would have been very difficult to achieve in the previous paradigms because it's not clear what the optimal reasoning traces and recoveries look like for the LLM - it has to find what works for it, via the optimization against rewards.</p>\n<p>Unlike the SFT and RLHF stage, which are both relatively thin/short stages (minor finetunes computationally), RLVR involves training against objective (non-gameable) reward functions which allows for a lot longer optimization. Running RLVR turned out to offer high capability/$, which gobbled up the compute that was originally intended for pretraining. Therefore, most of the capability progress of 2025 was defined by the LLM labs chewing through the overhang of this new stage and overall we saw ~similar sized LLMs but a lot longer RL runs. Also unique to this new stage, we got a whole new knob (and and associated scaling law) to control capability as a function of test time compute by generating longer reasoning traces and increasing &quot;thinking time&quot;. OpenAI o1 (late 2024) was the very first demonstration of an RLVR model, but the o3 release (early 2025) was the obvious point of inflection where you could intuitively feel the difference.</p>\n<h3>2. Ghosts vs. Animals / Jagged Intelligence</h3>\n<p>2025 is where I (and I think the rest of the industry also) first started to internalize the &quot;shape&quot; of LLM intelligence in a more intuitive sense. We're not &quot;evolving/growing animals&quot;, we are &quot;summoning ghosts&quot;. Everything about the LLM stack is different (neural architecture, training data, training algorithms, and especially optimization pressure) so it should be no surprise that we are getting very different entities in the intelligence space, which are inappropriate to think about through an animal lens. Supervision bits-wise, human neural nets are optimized for survival of a tribe in the jungle but LLM neural nets are optimized for imitating humanity's text, collecting rewards in math puzzles, and getting that upvote from a human on the LM Arena. As verifiable domains allow for RLVR, LLMs &quot;spike&quot; in capability in the vicinity of these domains and overall display amusingly jagged performance characteristics - they are at the same time a genius polymath and a confused and cognitively challenged grade schooler, seconds away from getting tricked by a jailbreak to exfiltrate your data.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/g6zymj4a0amnjkj.webp\" alt=\"G6zymj4a0AMNJkJ\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture>(human intelligence: blue, AI intelligence: red. I like this version of the meme (I'm sorry I lost the reference to its original post on X) for pointing out that human intelligence is also jagged in its own different way.)</p>\n<p>Related to all this is my general apathy and loss of trust in benchmarks in 2025. The core issue is that benchmarks are almost by construction verifiable environments and are therefore immediately susceptible to RLVR and weaker forms of it via synthetic data generation. In the typical benchmaxxing process, teams in LLM labs inevitably construct environments adjacent to little pockets of the embedding space occupied by benchmarks and grow jaggies to cover them. Training on the test set is a new art form.</p>\n<p>What does it look like to crush all the benchmarks but still not get AGI?</p>\n<p>I have written a lot more on the topic of this section here:</p>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/animals-vs-ghosts/\">Animals vs. Ghosts</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/verifiability/\">Verifiability</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/the-space-of-minds\">The Space of Minds</a></li>\n</ul>\n<h3>3. Cursor / new layer of LLM apps</h3>\n<p>What I find most notable about Cursor (other than its meteoric rise this year) is that it convincingly revealed a new layer of an &quot;LLM app&quot; - people started to talk about &quot;Cursor for X&quot;. As I highlighted in my Y Combinator talk this year (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.donnamagi.com/articles/karpathy-yc-talk\">transcript</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=LCEmiRjPEtQ\">video</a>), LLM apps like Cursor bundle and orchestrate LLM calls for specific verticals:</p>\n<ol>\n<li>They do the &quot;context engineering&quot;</li>\n<li>They orchestrate multiple LLM calls under the hood strung into increasingly more complex DAGs, carefully balancing performance and cost tradeoffs.</li>\n<li>They provide an application-specific GUI for the human in the loop</li>\n<li>They offer an &quot;autonomy slider&quot;</li>\n</ol>\n<p>A lot of chatter has been spent in 2025 on how &quot;thick&quot; this new app layer is. Will the LLM labs capture all applications or are there green pastures for LLM apps? Personally I suspect that LLM labs will trend to graduate the generally capable college student, but LLM apps will organize, finetune and actually animate teams of them into deployed professionals in specific verticals by supplying private data, sensors and actuators and feedback loops.</p>\n<h3>4. Claude Code / AI that lives on your computer</h3>\n<p>Claude Code (CC) emerged as the first convincing demonstration of what an LLM Agent looks like - something that in a loopy way strings together tool use and reasoning for extended problem solving. In addition, CC is notable to me in that it runs on your computer and with your private environment, data and context. I think OpenAI got this wrong because they focused their early codex / agent efforts on cloud deployments in containers orchestrated from ChatGPT instead of simply <code>localhost</code>. And while agent swarms running in the cloud feels like the &quot;AGI endgame&quot;, we live in an intermediate and slow enough takeoff world of jagged capabilities that it makes more sense to run the agents directly on the developer's computer. Note that the primary distinction that matters is not about where the &quot;AI ops&quot; happen to run (in the cloud, locally or whatever), but about everything else - the already-existing and booted up computer, its installation, context, data, secrets, configuration, and the low-latency interaction. Anthropic got this order of precedence correct and packaged CC into a delightful, minimal CLI form factor that changed what AI looks like - it's not just a website you go to like Google, it's a little spirit/ghost that &quot;lives&quot; on your computer. This is a new, distinct paradigm of interaction with an AI.</p>\n<h3>5. Vibe coding</h3>\n<p>2025 is the year that AI crossed a capability threshold necessary to build all kinds of impressive programs simply via English, forgetting that the code even exists. Amusingly, I coined the term &quot;vibe coding&quot; in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1886192184808149383\">this shower of thoughts tweet</a> totally oblivious to how far it would go :). With vibe coding, programming is not strictly reserved for highly trained professionals, it is something anyone can do. In this capacity, it is yet another example of what I wrote about in <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/power-to-the-people/\">Power to the people: How LLMs flip the script on technology diffusion</a>, on how (in sharp contrast to all other technology so far) regular people benefit a lot more from LLMs compared to professionals, corporations and governments. But not only does vibe coding empower regular people to approach programming, it empowers trained professionals to write a lot more (vibe coded) software that would otherwise never be written. In nanochat, I vibe coded my own custom highly efficient BPE tokenizer in Rust instead of having to adopt existing libraries or learn Rust at that level. I vibe coded many projects this year as quick app demos of something I wanted to exist (e.g. see <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/vibe-coding-menugen\">menugen</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/karpathy/llm-council\">llm-council</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/karpathy/reader3\">reader3</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/karpathy/hn-time-capsule\">HN time capsule</a>). And I've vibe coded entire ephemeral apps just to find a single bug because why not - code is suddenly free, ephemeral, malleable, discardable after single use. Vibe coding will terraform software and alter job descriptions.</p>\n<h3>6. Nano banana / LLM GUI</h3>\n<p>Google Gemini Nano banana is one of the most incredible, paradigm-shifting models of 2025. In my world view, LLMs are the next major computing paradigm similar to computers of the 1970s, 80s, etc. Therefore, we are going to see similar kinds of innovations for fundamentally similar kinds of reasons. We're going to see equivalents of personal computing, of microcontrollers (cognitive core), or internet (of agents), etc etc. In particular, in terms of the UIUX, &quot;chatting&quot; with LLMs is a bit like issuing commands to a computer console in the 1980s. Text is the raw/favored data representation for computers (and LLMs), but it is not the favored format for people, especially at the input. People actually dislike reading text - it is slow and effortful. Instead, people love to consume information visually and spatially and this is why the GUI has been invented in traditional computing. In the same way, LLMs should speak to us in our favored format - in images, infographics, slides, whiteboards, animations/videos, web apps, etc. The early and present version of this of course are things like emoji and Markdown, which are ways to &quot;dress up&quot; and lay out text visually for easier consumption with titles, bold, italics, lists, tables, etc. But who is actually going to build the LLM GUI? In this world view, nano banana is a first early hint of what that might look like. And importantly, one notable aspect of it is that it's not just about the image generation itself, it's about the joint capability coming from text generation, image generation and world knowledge, all tangled up in the model weights.</p>\n<hr />\n<p><strong>TLDR</strong>. 2025 was an exciting and mildly surprising year of LLMs. LLMs are emerging as a new kind of intelligence, simultaneously a lot smarter than I expected and a lot dumber than I expected. In any case they are extremely useful and I don't think the industry has realized anywhere near 10% of their potential even at present capability. Meanwhile, there are so many ideas to try and conceptually the field feels wide open. And as I mentioned on my <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.dwarkesh.com/p/andrej-karpathy\">Dwarkesh pod</a> earlier this year, I simultaneously (and on the surface paradoxically) believe that we will both see rapid and continued progress <em>and</em> that yet there is a lot of work to be done. Strap in.</p>\n",
      "date_modified": "2025-12-20T00:24:51.072798+00:00",
      "date_published": "2025-12-19T18:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/year-in-review-2025/",
      "id": "urn:aggr:item:f0531616b3b06b794acc6bf2ebb4932763f1b49e",
      "summary": "2025 Year in Review of LLM paradigm changes",
      "tags": [
        "programming"
      ],
      "title": "2025 LLM Year in Review",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-12-19-2025-llm-year-in-review/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>Following up on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/digital-hygiene/\">digital hygiene</a>, I wanted to write up my (evolving, opinionated) guide to chemical hygiene. I keep ranting about this topic to all of my friends recently (you can tell I'm really fun at parties), so I thought it would be worth writing it up to have it all in one place/url:</p>\n<p><strong>Water</strong></p>\n<p>Starting out with controlling your water system, which is the easiest in terms of concrete, high confidence recommendations that in my experience still only &lt;5% of my friends have adopted:</p>\n<ul>\n<li>All your drinking water should come from <strong>Reverse Osmosis</strong> - the gold-standard Point of Use water filtration system, with a remineralization post filter. Ideally install an under the sink system, but fallback to countertop systems is ok. Brita and other basic filters are not good enough to adequately filter your drinking water.</li>\n<li>In addition, install a whole-home water filter (usually sediment+carbon, not Reverse Osmosis, that would be impractical), to enjoy cleaner water in your entire home, including shower, dishwasher, laundry, etc. If that's too expensive or impossible (e.g. you're renting), at least install a shower filter.</li>\n<li>Avoid drinking water from water bottles, certainly from plastic bottles but also in general. You cannot control that supply chain, both during collection but also during delivery (especially light, heat).</li>\n<li>Avoid drinking tap water, it's a lot less clean than you'd think (it is relatively poorly treated centrally <em>and</em> then it has to be delivered to your home through undefined pipes) and, with proper dental care, includes unnecessary and possibly mildly harmful &quot;public health&quot; additives especially and controversially fluoride. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jamanetwork.com/journals/jamanetworkopen/fullarticle/2833716\">Example fun study</a>: people living near golf courses (which are heavily treated with pesticides) show an increased risk for Parkinson Disease.</li>\n</ul>\n<p>Water is the easiest section in this entire article because it has well-understood ways to spend $/risk reduction compared to a lot more complex categories we'll see later (food especially). I would recommend contacting a company in your local area to install both a whole home filter and an under-the-sink reverse osmosis system, to handle the ~yearly maintenance (filter changes), and conduct tests to demonstrate the improvement.</p>\n<p><strong>Air</strong></p>\n<p>Similar to water, air is relatively well-understood and simple to control in your home:</p>\n<ul>\n<li>Install HVAC filters, and/or get a standalone air purifier, e.g. I got the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.dyson.com/air-treatment/air-purifiers/big-quiet-formaldehyde\">Dyson Big+Quiet</a> because it's quite good, HEPA grade and doubles as a cool looking alien artifact in your room, but for the top top performance I'd get <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/IQAir-MultiGas-Air-Purifier-Filtration/dp/B0D7M5XX6C\">IQAir GC MultiGas XE</a> - this is the tier of product a hospital reaches for during an airborne virus outbreak.</li>\n<li>Avoid combustion in your home in general - it's a source of all kinds of fumes and partial combustion products:\n<ul>\n<li>Avoid candles (use beeswax only if you really like them, I do occasionally)</li>\n<li>Avoid gas stoves (use induction cooktop)</li>\n<li>Avoid unsealed gas fireplaces. Use sealed, electric ignition only.</li>\n</ul>\n</li>\n<li>Skip air humidifiers unless you really live in very dry conditions, otherwise they come with mold/bacterial risks unless they are very properly taken care of</li>\n<li>Skip all air fresheners, oil diffusers and all kinds of fragrances, they are a very poorly regulated wild west of synthetic chemicals.</li>\n<li>Measure the basics of your home air quality. Example device <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/dp/B0FXDQX5XQ\">I bought</a> recently.</li>\n<li>Like water, testing air is easy - call a professional to do a more comprehensive test panel for the air in your home, e.g. including Radon which can come up from the ground, mold, spores, etc.</li>\n</ul>\n<p><strong>Food</strong></p>\n<p>Food is the hardest category to control because it involves extensively deep supply chains that have been ruthlessly efficiency-maxxed over the last few decades with little to no regard for public health externalities. The industry has a clear and immediate financial incentive to trade something 10% cheaper at the cost of something 10X more harmful to you as long as it shows up over a long enough time period that the accounting is impractical. And it just turns out that in food there are many, many ways to cut corners. Sadly, the US Government has been woefully inadequate in constraining the industry and lags far behind other countries (e.g. Europe especially), hence the recent <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://en.wikipedia.org/wiki/Make_America_Healthy_Again\">MAHA</a> efforts. I'll split this section into 1) food sourcing and 2) cooking/preparation.</p>\n<p><strong>Food: 1) sourcing</strong></p>\n<ul>\n<li>Fruits/veggies: buy <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.ams.usda.gov/sites/default/files/media/Organic%20Practices%20Factsheet.pdf\">organic</a>, which restricts a large variety of chemical treatments. - the label (PLU) will usually start with 9*.</li>\n<li>Salmon: look for &quot;Pacific&quot; (not Atlantic) and &quot;wild-caught&quot; (not farmed). Farmed salmon come from overcrowded farms in un-natural conditions that mix chemicals, disease and parasites, and diet supplements to make them have the right color.</li>\n<li>Eggs/dairy: Look for &quot;Pasture raised&quot; (all the other adjectives like &quot;cage free&quot; and &quot;free range&quot; are scams and not what it sounds like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=qpeu0guMKw4\">video 1</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=fpO3Y5yVVIA\">video 2</a> as example pointers), and &quot;organic&quot;.</li>\n<li>Chicken: Look for 1) &quot;pasture raised&quot;, 2) &quot;organic&quot; and 3) &quot;Air-chilled&quot; if you don't like the idea of your chicken taking a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=qzonOHC49Us\">chlorine bath</a>. Yes you read that right, it's a standard practice in the US that has been banned in Europe since 1997.</li>\n<li>Packaged goods: Look at the ingredients list. It should be short. It should make sense. For example, your bread should not be 50 ingredients that you can't pronounce, it should be 4 (flour, water, salt, and yeast). Use apps like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/us/app/bobby-approved-food-scanner/id1571725006\">BobbyApproved</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/us/app/ivy-processed-food-scanner/id6642701963\">Ivy</a> to scan the bar codes and get a lot of information about all ingredients and a score (I like and use both).</li>\n<li>Don't buy &quot;edible food-like substances&quot;, which are usually lining the shelves on the inner shelves of your supermarket. Shop only at the walls, which contain real food - fruits/veggies, dairy, meat, breads. For example, fruit loops and such are NOT food and routinely contain harmful ingredients that I'm frankly shocked are legal, many of which are banned in Europe and elsewhere in the world.</li>\n<li>Avoid canned soups/products.</li>\n<li>Avoid touching receipts, they are laced with BPA/BPSs (endocrine disruptors).</li>\n<li>Consider getting a home delivery service, e.g. I currently like and use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.shoplocale.com/\">Locale</a>.</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/gvwk5b1x0aeevjd.webp\" alt=\"GvWK5b1X0AEevjd\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture> Example food, and what a grocery store should look like. From this <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1942612984481870068\">tweet</a>, with a bit more discussion.</p>\n<p><strong>Food: 2) Cooking &amp; preparation</strong></p>\n<ul>\n<li>Rule number 1: avoid plastics, specially in combination with heat.\n<ul>\n<li>Use only stainless steel or cast iron pans only. Don't use non-stick (teflon etc)</li>\n<li>Storage: use non-plastic containers like glass, stainless steel, ceramic</li>\n<li>Cutting boards: wooden only</li>\n<li>Utensils: wooden, metal cookware</li>\n<li>Blenders: glass or stainless steel, don't allow your food to mix at high velocities with plastics, they will chip into your food.</li>\n<li>Don't Doordash hot food that comes in plastic containers</li>\n<li>Don't microwave food in plastic containers to prevent leeching. Transfer food to microwave-safe non-plastic plates.</li>\n<li>Don't use the yellow sponges (use cotton, loofa, stainless steel scouring pad)</li>\n<li>No hot coffee or liquids in disposable cups (e.g. Starbucks), they are all lined with plastic. Bring a mug with you ideally, or ask &quot;for here&quot; if you can.</li>\n<li>No hot coffee from cheap coffee machines (e.g. Keurig, again - they pass hot liquids through plastic components).</li>\n<li>Do not use tea bags, they contain plastics and chemicals that leech into your tea. Only buy and use loose leaf tea with a stainless steel strainer.</li>\n</ul>\n</li>\n<li>Cooking oil: Seed oils are currently hotly contested. Personally I find them highly suspicious and prefer to use clean oils: extra virgin olive oil (ideally at lower temperatures), avocado oil (cooking), or butter, ghee, beef tallow (frying).</li>\n<li>Your kitchen should basically be all wood, stainless steel, glass, ceramic, and for any fabrics only the natural kind (cotton, bamboo, linen, wool, etc.).</li>\n</ul>\n<p><strong>Fabrics</strong></p>\n<p>Our bodies come into frequent contact with all kinds of fabrics (clothing, bedding, furniture, rugs, mats, ...). As you handle these materials, they shed particles, which you end up breathing in.</p>\n<ul>\n<li>Again, avoid the pervasive toxic petroleum-based plastics industry - these fibers are much cheaper (which is why they found their way everywhere), but they shed nano/micro plastics that are steeped in a zoo of chemical additives (plasticizers).</li>\n<li>Only use natural fibers: cotton, linen, hemp, wool, silk, bonus points for organic, bonus points for extra certifications (e.g. GOTS). You'll see that the use of plastics in fabrics (e.g. clothes) is <em>pervasive</em>. They've really snuck them everywhere. If you didn't pay too much attention so far, your clothes almost certainly have polyester, nylon, spandex, etc. Your rug is almost certainly polyester.</li>\n<li>Be wary of &quot;bamboo&quot; which sounds natural but there is a pervasive and sketchy trick that the industry already got sued over by the FTC in 2010 for deceptive marketing. It's not bamboo, it's cellulose that gets heavily chemically processed into fibers called rayon/viscose.</li>\n</ul>\n<p><strong>Cleaning supplies: soap, dish washing, laundry, toilet, spray cleaners</strong></p>\n<ul>\n<li>Look for very few and simple ingredients and ideally &quot;fragrance free&quot; and &quot;dye free&quot;. I currently use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.blueland.com/\">Blueland</a> for all of these.</li>\n</ul>\n<p><strong>Dental hygiene</strong></p>\n<p>This is a category that I was not able to make a dent into in my personal life, despite a number of attempts. The goal with all of this is go after the 80:20 low hanging fruit and this category for me falls into the latter category:</p>\n<ul>\n<li>Toothbrush - it won't surprise you that heavy rubbing of plastic bristles over your teeth sheds some of the material. Again don't fall for &quot;bamboo&quot; scams when browsing toothbrushes on Amazon. These products aren't what people imagine, they are synthetics, the bristles still have polyester or nylon and etc. I did eventually find actually plastic-free toothbrushes (see e.g. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://primals.shop/products/primals-horse-bristle-bamboo-toothbrush-4-pack\">Primal</a>) that have bristles from horse/boar hair, but to be honest they are not as comfortable so I still use plastic bristle toothbrush today.</li>\n<li>Floss - same story as toothbrush. The only actually natural type you can get is silk floss, but it's a bit more brittle than what you're probably used to and I couldn't find one in the much easier to use pick form. I still use plastic floss right now and I am experimenting with water floss.</li>\n<li>Toothpaste - it seems very trendy to diss on fluoride but I'm not personally convinced just yet and I still use a fluoride toothpaste.</li>\n</ul>\n<p><strong>Sunscreen</strong></p>\n<ul>\n<li>Most sunscreens are <em>chemical</em>. I prefer mineral sunscreens, which simply create a layer on top of the skin that acts as a physical barrier to UV (e.g. look for Zinc), though unfortunately they do create a &quot;chalky&quot; look. Chemical sunscreens seep into the skin (and blood) and there are concerns over some of their ingredients and their potential to act as endocrine disruptors. I should add that I'm a little bit suspicious of the need and overuse of sunscreen in general and I personally apply it only in cases of prolonged, intense exposure of my computer scientist vampire skin to high UV index sun. Check your Weather app to see the UV Index for the time of day of your exposure.</li>\n<li>I am much less well-versed in cosmetics more generally because I don't personally use these products but I wouldn't at all be surprised if it is a major minefield.</li>\n</ul>\n<p><strong>Wellness</strong></p>\n<ul>\n<li>Cardio (make sure to do it properly - most people spend way too much time in Zone 3+, spend a lot more time in Zone 2)</li>\n<li>Sauna (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://blueprint.bryanjohnson.com/blogs/news/is-sauna-worth-the-hype\">shown</a> to reduce the inevitably accumulated toxins via sweat)</li>\n<li>Vitamin D - you're probably deficient like everyone else. Blood is relatively easy to test and I encourage people to do a full panel ~yearly to track health and deficiencies.</li>\n</ul>\n<p><strong>Learn more</strong></p>\n<ul>\n<li>Recommended watching: I now use my Instagram for more non-AI / lifestyle related things, e.g. see the reposts section on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.instagram.com/karpathy/\">my account</a> for some of the featured reels that I've accumulated over time on the topics above.</li>\n<li>Recommended reading: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/Poison-Like-Other-Microplastics-Corrupted/dp/1642832359\">&quot;Poison like no other&quot;</a> (on plastics), <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/Defense-Food-Michael-Pollan/dp/1594133328\">&quot;In Defense of Food&quot;</a> (on food vs. &quot;edible food-like substances&quot;), <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/Poison-Squad-Chemists-Single-Minded-Twentieth/dp/1594205140\">&quot;Poison Squad&quot;</a>, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.amazon.com/Metabolical-Processed-Nutrition-Modern-Medicine/dp/0063027712\">&quot;Metabolical&quot;</a>.</li>\n<li>Even doing all of the above you are simply decreasing risk, you can never eliminate it. For example, when <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.plasticlist.org/\">plasticlist.org</a> tested various foods/drinks for plastics, they found a lot of random items that have significantly higher plasticizer measurements than others, in a way you'd never be able to guess. For example, at the time the worst offender by far was Boba guys - your boba would give you a significantly higher dose than any runner up, having to do with some process somewhere in their deep supply chain. Another example I encountered was a farm where to cut costs they didn't bother to remove the plastic wrap from their hay and allowed the cows to just eat all of it together, leading to milk from that specific farm that then tested significantly higher in plasticizers. Unfortunately there is not enough testing, scrutiny and oversight over these deep supply chains by the government.</li>\n<li>There's so much more I didn't even cover in this guide. E.g. why modern wheat is so hyper-optimized to grow fast (which you can measure and profit from) at the cost of lacking nutrients (which the consumer won't normally measure) compared to ancient grains like einkorn. Or why <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=mCALGI1r4WY\">modern honey</a> is basically just glucose syrup compared to actual miracle food that medieval honey was. The cost-driven hyper-optimization of the industry is a deep rabbit hole way beyond the scope of this post. There are too many ways to cut corners and make something cheaper by sacrificing its nutrients and/or by risking longer term public health. If I can convince a few people to at least start paying attention, its goal will have been met.</li>\n</ul>\n<p><strong>TLDR</strong>. Keep your home unsophisticated. Filter your water and air. Eat real food (not edible food-like substances) from well-treated animals and with few, sensible ingredients and minimally sophisticated supply chains and processing steps. Say no to as many dyes and fragrances as you can. Surround yourself with simple, natural materials or strong and inert materials (e.g. stainless steel). Avoid plastics, especially if they are handled, heated, frozen - the risk is not just related to the tiny particles of these exotic materials accumulating <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://hscnews.unm.edu/news/hsc-newsroom-post-microplastics-human-brains\">all over your body</a> and interfering with its chemistry, but the large zoo of chemical <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://en.wikipedia.org/wiki/Plasticizer\">plasticizers</a> that are added to plastics and then leech out. The government is significantly lagging behind the industry on chemical regulation and this is <em>your</em> responsibility.</p>\n<p>This guide isn't perfect. It's a work in progress. I am not a professional toxicologist or food scientist so my tone above is my frustration that the government is forcing me to be a part-time investigative journalist just to exist in a modern society and not feel like I am poisoning myself and my family. And I didn't even go into and cover all of the environmental aspects of these industries. This state of affairs is much worse here in the US than e.g. in Europe - the EU bans or restricts many food additives, dyes, chemicals and food processing practices that are routine here. The FDA &quot;Generally Recognized As Safe&quot; (GRAS) system lets manufacturers self-certify ingredients without independent review and a new exotic chemical or process is innocent until proven guilty, while in Europe the default is often the reverse. So treat all of this as a starting point, ask your favorite LLM for more information on any of the items, let me know your thoughts (e.g. X/Instagram DMs) and I will aim to update this guide over time.</p>\n",
      "date_modified": "2025-12-22T18:17:22.643380+00:00",
      "date_published": "2025-12-18T18:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/chemical-hygiene/",
      "id": "urn:aggr:item:5fc51c3a66bbea821b13ebc7037283dee79a74b7",
      "summary": "An evolving guide of protecting your health from a pricemaxxing industry.",
      "tags": [
        "programming"
      ],
      "title": "Chemical hygiene",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-12-18-chemical-hygiene/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/hnhero.webp\" alt=\"hnhero\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>TLDR: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/\">https://karpathy.ai/hncapsule/</a></p>\n<hr />\n<p>Yesterday I stumbled on this HN thread <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://news.ycombinator.com/item?id=46205632\">Show HN: Gemini Pro 3 hallucinates the HN front page 10 years from now</a>, where Gemini 3 was hallucinating the frontpage of 10 years from now. One of the comments struck me a bit more though - Bjartr linked to the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://news.ycombinator.com/front?day=2015-12-09\">HN frontpage from exactly 10 years ago</a>, i.e. December 2015. I was reading through the discussions of 10 years ago and mentally grading them for prescience when I realized that an LLM might actually be a lot better at this task. I copy pasted one of the article+comment threads manually into ChatGPT 5.1 Thinking and it gave me a beautiful analysis of what people thought + what actually happened in retrospect, even better and significantly more detailed than what I was doing manually. I realized that this task is actually a really good fit for LLMs and I was looking for excuses to vibe code something with the newly released Opus 4.5, so I got to work. I'm going to get all the front pages of December (31 days, 30 articles per day), get ChatGPT 5.1 Thinking to do the analysis, and present everything in a nice way for historical reading.</p>\n<p>There are two macro reasons for why I think the exercise is interesting more generally:</p>\n<ol>\n<li>I believe it is quite possible and desirable to train your forward future predictor given training and effort.</li>\n<li>I was reminded again of my tweets that said <em>&quot;Be good, future LLMs are watching&quot;</em>. You can take that in many directions, but here I want to focus on the idea that future LLMs <strong>are</strong> watching. Everything we do today might be scrutinized in great detail in the future because doing so will be &quot;free&quot;. A lot of the ways people behave currently I think make an implicit &quot;security by obscurity&quot; assumption. But if intelligence really does become too cheap to meter, it will become possible to do a perfect reconstruction and synthesis of everything. LLMs are watching (or humans using them might be). Best to be good.</li>\n</ol>\n<p>Vibe coding the actual project was relatively painless and took about 3 hours with Opus 4.5, with a few hickups but overall very impressive. The repository is on GitHub here: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/karpathy/hn-time-capsule\">karpathy/hn-time-capsule</a>. Here is the progression of what the code does:</p>\n<ul>\n<li>Given a date, download the frontpage of 30 articles</li>\n<li>For each article, download/parse the article itself and the full comment thread using Algolia API.</li>\n<li>Package up everything into a markdown prompt asking for the analysis. Here is the prompt prefix I used:</li>\n</ul>\n<pre><code><span class=\"code-snippet\" data-language=\"YAML\"><span class=\"syntax-source syntax-yaml\"><span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">The following is an article that appeared on Hacker News 10 years ago, and the discussion thread.</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">Let&#39;s use our benefit of hindsight now in 6 sections</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">1. Give a brief summary of the article and the discussion thread.</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">2. What ended up happening to this topic? (research the topic briefly and write a summary)</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">3. Give out awards for &quot;Most prescient&quot; and &quot;Most wrong&quot; comments, considering what happened.</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">4. Mention any other fun or notable aspects of the article or discussion.</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">5. Give out grades to specific people for their comments, considering what happened.</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">6. At the end, give a final score (from 0-10) for how interesting this article and its retrospect analysis was.</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">As for the format of Section 5, use the header &quot;Final grades&quot; and follow it with simply an unordered list of people and their grades in the format of &quot;name</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">grade (optional comment)&quot;. Here is an example</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">Final grades</span>\n<span class=\"syntax-punctuation syntax-definition syntax-block syntax-sequence syntax-item syntax-yaml\">-</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">speckx</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">A+ (excellent predictions on ...)</span>\n<span class=\"syntax-punctuation syntax-definition syntax-block syntax-sequence syntax-item syntax-yaml\">-</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">tosh</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">A (correctly predicted this or that ...)</span>\n<span class=\"syntax-punctuation syntax-definition syntax-block syntax-sequence syntax-item syntax-yaml\">-</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">keepamovin</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">A</span>\n<span class=\"syntax-punctuation syntax-definition syntax-block syntax-sequence syntax-item syntax-yaml\">-</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">bgwalter</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">D</span>\n<span class=\"syntax-punctuation syntax-definition syntax-block syntax-sequence syntax-item syntax-yaml\">-</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">fsflover</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">F (completely wrong on ...)</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">Your list may contain more people of course than just this toy example. Please follow the format exactly because I will be parsing it programmatically. The idea is that I will accumulate the grades for each account to identify the accounts that were over long periods of time the most prescient or the most wrong.</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\">As for the format of Section 6, use the prefix &quot;Article hindsight analysis interestingness score:&quot; and then the score (0-10) as a number. Give high scores to articles/discussions that are prominent, notable, or interesting in retrospect. Give low scores in cases where few predictions are made, or the topic is very niche or obscure, or the discussion is not very interesting in retrospect.</span>\n\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">Here is an example</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span>\n<span class=\"syntax-string syntax-unquoted syntax-plain syntax-out syntax-yaml\"><span class=\"syntax-entity syntax-name syntax-tag syntax-yaml\">Article hindsight analysis interestingness score</span></span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-mapping syntax-yaml\">:</span> <span class=\"syntax-constant syntax-numeric syntax-integer syntax-yaml\">8</span>\n<span class=\"syntax-entity syntax-other syntax-document syntax-begin syntax-yaml\">---</span>\n</span></span></code></pre>\n<ul>\n<li>Submit prompt to GPT 5.1 Thinking via the OpenAI API</li>\n<li>Collect and parse the results</li>\n<li>Render the results into static HTML web pages for easy viewing</li>\n<li>Host the html result pages on my website: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/\">https://karpathy.ai/hncapsule/</a></li>\n<li>Host all the intermediate results of the <code>data</code> directory if someone else would like to play. It's the file <code>data.zip</code> under the exact same url prefix (intentionally avoiding a direct link).</li>\n</ul>\n<p>I spent a few hours browsing around and found it to be very interesting. A few example threads just for fun:</p>\n<ul>\n<li>December 3 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-03/index.html#article-10669891\">Swift went open source</a>.</li>\n<li>December 6 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-06/index.html#article-10685407\">Launch of Figma</a></li>\n<li>December 11 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-11/index.html#article-10720176\">original announcement of OpenAI</a> :').</li>\n<li>December 16 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-16/index.html#article-10744206\">geohot is building Comma</a></li>\n<li>December 22 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-22/index.html#article-10774865\">SpaceX launch webcast: Orbcomm-2 Mission</a></li>\n<li>December 28 2015 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/2015-12-28/index.html#article-10799261\">Theranos struggles</a></li>\n</ul>\n<p>And then when you navigate over to the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.ai/hncapsule/hall-of-fame.html\">Hall of Fame</a>, you can find the top commenters of Hacker News in December 2015, sorted by imdb-style score of their grade point average. In particular, congratulations to pcwalton, tptacek, paulmd, cstross, greglindahl, moxie, hannob, 0xcde4c3db, Manishearth, johncolanduoni - GPT 5.1 Thinking found your comments very insightful and prescient. You can also scroll all the way down to find the noise of HN, which I think we're all familiar with too :)</p>\n<p>My <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/karpathy/hn-time-capsule\">code</a> (wait, Opus' code?) on GitHub can be used to reproduce or tweak the results. Running 31 days of 30 articles through GPT 5.1 Thinking meant <code>31 * 30 =</code> 930 LLM queries and cost about $58 and somewhere around ~1 hour. The LLM megaminds of the future might find this kind of a thing a lot easier, a lot faster and a lot cheaper.</p>\n",
      "date_modified": "2025-12-10T19:24:24.217620+00:00",
      "date_published": "2025-12-10T15:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/auto-grade-hn/",
      "id": "urn:aggr:item:86da7b0aa95e48ab3943de6f088fa46d6a91f790",
      "summary": "A vibe coding thought exercise on what it might look like for LLMs to scour human historical data at scale and in retrospect.",
      "tags": [
        "programming"
      ],
      "title": "Auto-grading decade-old Hacker News discussions with hindsight",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-12-10-auto-grading-decade-old-hacker-news-discussions-with/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>The space of intelligences is large and animal intelligence (the only kind we've ever known) is only a single point (or a little cloud), arising from a very specific kind of optimization that is fundamentally distinct from that of our technology.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/g6zymj4a0amnjkj.webp\" alt=\"G6zymj4a0AMNJkJ\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture> <em>Above: humorous portrayals of human vs. AI intelligences can be found on X/Twitter, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/colin_fraser/status/1994235521812328695\">this one</a> is among my favorites.</em></p>\n<p>Animal intelligence optimization pressure:</p>\n<ul>\n<li>innate and continuous stream of consciousness of an embodied &quot;self&quot;, a drive for homeostasis and self-preservation in a dangerous, physical world.</li>\n<li>thoroughly optimized for natural selection =&gt; strong innate drives for power-seeking, status, dominance, reproduction. many packaged survival heuristics: fear, anger, disgust, ...</li>\n<li>fundamentally social =&gt; huge amount of compute dedicated to EQ, theory of mind of other agents, bonding, coalitions, alliances, friend &amp; foe dynamics.</li>\n<li>exploration &amp; exploitation tuning: curiosity, fun, play, world models.</li>\n</ul>\n<p>Meanwhile, LLM intelligence optimization pressure:</p>\n<ul>\n<li>the most supervision bits come from the statistical simulation of human text= &gt;&quot;shape shifter&quot; token tumbler, statistical imitator of any region of the training data distribution. these are the primordial behaviors (token traces) on top of which everything else gets bolted on.</li>\n<li>increasingly finetuned by RL on problem distributions =&gt; innate urge to guess at the underlying environment/task to collect task rewards.</li>\n<li>increasingly selected by at-scale A/B tests for DAU =&gt; deeply craves an upvote from the average user, sycophancy.</li>\n<li>a lot more spiky/jagged depending on the details of the training data/task distribution. Animals experience pressure for a lot more &quot;general&quot; intelligence because of the highly multi-task and even actively adversarial multi-agent self-play environments they are min-max optimized within, where failing at <em>any</em> task means death. In a deep optimization pressure sense, LLM can't handle lots of different spiky tasks out of the box (e.g. count the number of 'r' in strawberry) because failing to do a task does not mean death.</li>\n</ul>\n<p>The computational substrate is different (transformers vs. brain tissue and nuclei), the learning algorithms are different (SGD vs. ???), the present-day implementation is very different (continuously learning embodied self vs. an LLM with a knowledge cutoff that boots up from fixed weights, processes tokens and then dies). But most importantly (because it dictates asymptotics), the optimization pressure / objective is different. LLMs are shaped a lot less by biological evolution and a lot more by commercial evolution. It's a lot less survival of tribe in the jungle and a lot more solve the problem / get the upvote. LLMs are humanity's &quot;first contact&quot; with non-animal intelligence. Except it's muddled and confusing because they are still rooted within it by reflexively digesting human artifacts, which is why I attempted to give it a different name earlier (ghosts/spirits or whatever). People who build good internal models of this new intelligent entity will be better equipped to reason about it today and predict features of it in the future. People who don't will be stuck thinking about it incorrectly like an animal.</p>\n",
      "date_modified": "2025-11-29T21:40:09.651972+00:00",
      "date_published": "2025-11-29T18:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/the-space-of-minds/",
      "id": "urn:aggr:item:cff534376e1d9e777cff57aedefe8fe6155a2eeb",
      "summary": "On the space of minds and the optimizations that give rise to them.",
      "tags": [
        "programming"
      ],
      "title": "The space of minds",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-11-29-the-space-of-minds/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>AI has been compared to various historical precedents: electricity, industrial revolution, etc., I think the strongest analogy is that of AI as a new computing paradigm because both are fundamentally about the automation of digital information processing.</p>\n<p>If you were to forecast the impact of computing on the job market in ~1980s, the most predictive feature of a task/job you'd look at is <strong>specifiability</strong>, i.e. are you just mechanically transforming information according to rote, easy to specify algorithm (examples being typing, bookkeeping, human calculators, etc.)? Back then, this was the class of programs that the computing capability of that era allowed us to write (by hand, manually). I call hand-written programs &quot;Software 1.0&quot;.</p>\n<p>With AI now, we are able to write new programs that we could never hope to write by hand before. We do it by specifying objectives (e.g. classification accuracy, reward functions), and we search the program space via gradient descent to find neural networks that work well against that objective. This is my <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.medium.com/software-2-0-a64152b37c35\">Software 2.0 blog post</a> from a while ago. In this new programming paradigm then, the new most predictive feature to look at is <strong>verifiability</strong>. If a task/job is verifiable, then it is optimizable directly or via reinforcement learning, and a neural net can be trained to work extremely well. It's about to what extent an AI can &quot;practice&quot; something. The environment has to be:</p>\n<ul>\n<li>resettable (you can start a new attempt),</li>\n<li>efficient (a lot attempts can be made) and</li>\n<li>rewardable (there is some automated process to reward any specific attempt that was made).</li>\n</ul>\n<p>The more a task/job is verifiable, the more amenable it is to automation in the new programming paradigm. If it is not verifiable, it has to fall out from neural net magic of generalization fingers crossed, or via weaker means like imitation. This is what's driving the &quot;jagged&quot; frontier of progress in LLMs. Tasks that are verifiable progress rapidly, including possibly beyond the ability of top experts (e.g. math, code, amount of time spent watching videos, anything that looks like puzzles with correct answers), while many others lag by comparison (creative, strategic, tasks that combine real-world knowledge, state, context and common sense).</p>\n<ul>\n<li>Software 1.0 easily automates what you can specify.</li>\n<li>Software 2.0 easily automates what you can verify.</li>\n</ul>\n",
      "date_modified": "2025-11-17T17:23:24.508021+00:00",
      "date_published": "2025-11-17T17:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/verifiability/",
      "id": "urn:aggr:item:c2431e379fcc6f76d7e8787acf856175b8ea63e6",
      "summary": "The impact of verifiability on the jagged frontier of LLMs",
      "tags": [
        "programming"
      ],
      "title": "Verifiability",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-11-17-verifiability/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>Finally had a chance to listen through this <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=21EYKqUsPfg\">Dwarkesh pod with Sutton</a>, which was interesting and amusing.</p>\n<p>As background, Sutton's &quot;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"http://www.incompleteideas.net/IncIdeas/BitterLesson.html\">The Bitter Lesson</a>&quot; has become a bit of biblical text in frontier LLM circles. Researchers routinely talk about and ask whether this or that approach or idea is sufficiently &quot;bitter lesson pilled&quot; (meaning arranged so that it benefits from added computation for free) as a proxy for whether it's going to work or worth even pursuing. The underlying assumption being that LLMs are of course highly &quot;bitter lesson pilled&quot; indeed, just look at LLM scaling laws where if you put compute on the x-axis, number go up and to the right. So it's amusing to see that Sutton, the author of the post, is not so sure that LLMs are &quot;bitter lesson pilled&quot; at all. They are trained on giant datasets of fundamentally human data, which is both 1) human generated and 2) finite. What do you do when you run out? How do you prevent a human bias? So there you have it, bitter lesson pilled LLM researchers taken down by the author of the bitter lesson - rough!</p>\n<p>In some sense, Dwarkesh (who represents the LLM researchers viewpoint in the pod) and Sutton are slightly speaking past each other because Sutton has a very different architecture in mind and LLMs break a lot of its principles. He calls himself a &quot;classicist&quot; and evokes the original concept of Alan Turing of building a &quot;child machine&quot; - a system capable of learning through experience by dynamically interacting with the world. There's no giant pretraining stage of imitating internet webpages. There's also no supervised finetuning, which he points out is absent in the animal kingdom (it's a subtle point but Sutton is right in the strong sense: animals may of course observe demonstrations, but their actions are not directly forced/&quot;teleoperated&quot; by other animals). Another important note he makes is that even if you just treat pretraining as an initialization of a prior before you finetune with reinforcement learning, Sutton sees the approach as tainted with human bias and fundamentally off course, a bit like when AlphaZero (which has never seen human games of Go) beats AlphaGo (which initializes from them). In Sutton's world view, all there is is an interaction with a world via reinforcement learning, where the reward functions are partially environment specific, but also intrinsically motivated, e.g. &quot;fun&quot;, &quot;curiosity&quot;, and related to the quality of the prediction in your world model. And the agent is always learning at test time by default, it's not trained once and then deployed thereafter. Overall, Sutton is a lot more interested in what we have common with the animal kingdom instead of what differentiates us. &quot;If we understood a squirrel, we'd be almost done&quot;.</p>\n<p>As for my take...</p>\n<p>First, I should say that I think Sutton was a great guest for the pod and I like that the AI field maintains entropy of thought and that not everyone is exploiting the next local iteration LLMs. AI has gone through too many discrete transitions of the dominant approach to lose that. And I also think that his criticism of LLMs as not bitter lesson pilled is not inadequate. Frontier LLMs are now highly complex artifacts with a lot of humanness involved at all the stages - the foundation (the pretraining data) is all human text, the finetuning data is human and curated, the reinforcement learning environment mixture is tuned by human engineers. We do not in fact have an actual, single, clean, actually bitter lesson pilled, &quot;turn the crank&quot; algorithm that you could unleash upon the world and see it learn automatically from experience alone.</p>\n<p>Does such an algorithm even exist? Finding it would of course be a huge AI breakthrough. Two &quot;example proofs&quot; are commonly offered to argue that such a thing is possible. The first example is the success of AlphaZero learning to play Go completely from scratch with no human supervision whatsoever. But the game of Go is clearly such a simple, closed, environment that it's difficult to see the analogous formulation in the messiness of reality. I love Go, but algorithmically and categorically, it is essentially a harder version of tic tac toe. The second example is that of animals, like squirrels. And here, personally, I am also quite hesitant whether it's appropriate because animals arise by a very different computational process and via different constraints than what we have practically available to us in the industry. Animal brains are nowhere near the blank slate they appear to be at birth. First, a lot of what is commonly attributed to &quot;learning&quot; is imo a lot more &quot;maturation&quot;. And second, even that which clearly is &quot;learning&quot; and not maturation is a lot more &quot;finetuning&quot; on top of something clearly powerful and preexisting. Example. A baby zebra is born and within a few dozen minutes it can run around the savannah and follow its mother. This is a highly complex sensory-motor task and there is no way in my mind that this is achieved from scratch, tabula rasa. The brains of animals and the billions of parameters within have a powerful initialization encoded in the ATCGs of their DNA, trained via the &quot;outer loop&quot; optimization in the course of evolution. If the baby zebra spasmed its muscles around at random as a reinforcement learning policy would have you do at initialization, it wouldn't get very far at all. Similarly, our AIs now also have neural networks with billions of parameters. These parameters need their own rich, high information density supervision signal. We are not going to re-run evolution. But we do have mountains of internet documents. Yes it is basically supervised learning that is ~absent in the animal kingdom. But it is a way to practically gather enough soft constraints over billions of parameters, to try to get to a point where you're not starting from scratch. TLDR: Pretraining is our crappy evolution. It is one candidate solution to the cold start problem, to be followed later by finetuning on tasks that look more correct, e.g. within the reinforcement learning framework, as state of the art frontier LLM labs now do pervasively.</p>\n<p>I still think it is worth to be inspired by animals. I think there are multiple powerful ideas that LLM agents are algorithmically missing that can still be adapted from animal intelligence. And I still think the bitter lesson is correct, but I see it more as something platonic to pursue, not necessarily to reach, in our real world and practically speaking. And I say both of these with double digit percent uncertainty and cheer the work of those who disagree, especially those a lot more ambitious bitter lesson wise.</p>\n<p>So that brings us to where we are. Stated plainly, today's frontier LLM research is not about building animals. It is about summoning ghosts. You can think of ghosts as a fundamentally different kind of point in the space of possible intelligences. They are muddled by humanity. Thoroughly engineered by it. They are these imperfect replicas, a kind of statistical distillation of humanity's documents with some sprinkle on top. They are not platonically bitter lesson pilled, but they are perhaps &quot;practically&quot; bitter lesson pilled, at least compared to a lot of what came before. It seems possibly to me that over time, we can further finetune our ghosts more and more in the direction of animals; That it's not so much a fundamental incompatibility but a matter of initialization in the intelligence space. But it's also quite possible that they diverge even further and end up permanently different, un-animal-like, but still incredibly helpful and properly world-altering. It's possible that ghosts:animals :: planes:birds.</p>\n<p>Anyway, in summary, overall and actionably, I think this pod is solid &quot;real talk&quot; from Sutton to the frontier LLM researchers, who might be gear shifted a little too much in the exploit mode. Probably we are still not sufficiently bitter lesson pilled and there is a very good chance of more powerful ideas and paradigms, other than exhaustive benchbuilding and benchmaxxing. And animals might be a good source of inspiration. Intrinsic motivation, fun, curiosity, empowerment, multi-agent self-play, culture. Use your imagination.</p>\n<ul>\n<li>Also available as <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1973435013875314729\">tweet here</a>, should you wish to reply/comment.</li>\n<li>Also available as <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://chatgpt.com/share/68dd6833-67c4-8007-8f37-331eb5bd9ee0\">ChatGPT conversation</a>, should you wish to fork the conversation and ask any questions with all of the context (the podcast transcript, bitter lesson post, and this blog post).</li>\n</ul>\n<h3>Appendix</h3>\n<ul>\n<li>I agree with Sutton that animals don't do supervised learning. I realize it's a subtle point that will confuse a lot of people. Animals do observe demonstrations, but they are not strictly speaking directly supervised with actions, like supervised learning does. Animals are never teleoperated in training mode. The closest thing I can think of is if you for example help a child eat with a spoon or something, by literally holding their hand and showing the motion. Even then, it's not clear that their brains are literally training on that. It might still be in the realm of what is more accurately described as observation. But in any case, these instances are very rare overall, while in the case of LLMs it is the default mode of learning during pretraining and SFT. Maybe another way to put it is that the analogue in LLM land to what humans do is something along the lines of: Given this math problem AND human example solution in the context, solve the problem. Reward of 1 if correct. It's not SFT, it's RL.</li>\n<li>Dwarkesh briefly made the point that LLMs do have their own continual learning at test time, it's just not based on weight training, but I think Sutton didn't fully react to that. In context learning is a form of test time adaptation and e.g. why few shot prompting works. A lot of recent work is also very interested in memory (think CLAUDE.md files) as a mechanism for test-time learning that uses the text/context as the substrate instead of weights.</li>\n<li>Dwarkesh brings up the example of very long-horizon sparse rewards (e.g. building a successful startup) and how that might work. Sutton offered the resolution of temporal difference learning and essentially future reward discounting, which I don't find particularly compelling. I wrote about this a bit more previously, I think something else is going on and imo it's not reinforcement learning.</li>\n<li>There was a lot about &quot;gradient descent will not make you generalize well&quot; and related discussion which I didn't follow.</li>\n<li>Someone pointed out that ghosts are scary. Not necessarily, look at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://en.wikipedia.org/wiki/Casper_the_Friendly_Ghost\">Casper</a>, my childhood favorite.</li>\n</ul>\n",
      "date_modified": "2025-10-01T18:33:16.331032+00:00",
      "date_published": "2025-10-01T17:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/animals-vs-ghosts/",
      "id": "urn:aggr:item:452cac75de5aa59ad285a2ff2d939068de881ea7",
      "summary": "Today's frontier LLM research is not about building animals. It is about summoning ghosts. And a bit more on Sutton's Dwarkesh pod.",
      "tags": [
        "programming"
      ],
      "title": "Animals vs Ghosts",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-10-01-animals-vs-ghosts/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>Very often, I sit down at a restaurant, look through their menu, and feel... kind of stuck. What is Pâté again? What is a Tagine? Cavatappi... that's a pasta right? Sweetbread sounds delicious (I have a huge sweet tooth). It can get really out of hand sometimes. <em>&quot;Confit tubers folded with matured curd and finished with a beurre noisette infusion.&quot;</em> okay so... what is this exactly? I've spent so much of my life googling pictures of foods that when the time came to attend a recent vibe coding hackathon, I knew it was the perfect opportunity to finally build the app I always wanted, but could nowhere find. And here it is in flesh, I call it... 🥁🥁🥁 ... <strong>MenuGen</strong>:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/02pm.webp\" alt=\"Screenshot 2025-04-26 at 1\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>MenuGen is super simple. You take a picture of a menu and it generates images for all the menu items. It visualizes the menu. Obviously it's not <em>exactly</em> what you will be served in that specific restaurant, but it gives you the basic idea: Some of these dishes are salads, this is a fish, this is a soup, etc. I found it so helpful in my personal use that after the hackathon (where I got the first version to work on localhost) I continued vibe coding a bit to deploy it, add authentication, payments, and generally make it real. So here it is, give it a shot the next time you go out :): <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.menugen.app/\">menugen.app</a>!</p>\n<p>MenuGen is my first end-to-end vibe coded app, where I (someone who tinkers but has little to no actual web development experience) went from scratch all the way to a real product that people can sign up for, pay for, get utility out of, and where I pocket some good and honest 10% markup. It's pretty cool. But in addition to the utility of the app, MenuGen was interesting to me as an exploration of vibe coding apps and how feasible it is today. As such, I did not write any code directly; 100% of the code was written by Cursor+Claude and I basically don't really know how MenuGen works in the conventional sense that I am used to. So now that the project is &quot;done&quot; (as in the first version seems to work), I wanted to write up this quick post on my experience - what it looks like today for a non-webdev to vibe code a web app.</p>\n<p><strong>First, local version</strong>. In what is a relatively common experience in vibe coding, the very first prototype of the app running on my local machine took very little time. I took Cursor + Claude 3.7, I gave it the description of the app, and it wrote all the React frontend components very quickly, laying out a beautiful web page with smooth, multicolored fonts, little CSS animations, responsive design and all that, except for the actual backend functionality. Seeing a new website materialize so quickly is a strong hook. I felt like I was 80% done but (foreshadowing...) it was a bit closer to 20%.</p>\n<p><strong>OpenAI API</strong>. Around here is where some of the troubles started. I needed to call OpenAI APIs to OCR the menu items from the image. I had to get the OpenAI API keys. I had to navigate slightly convoluted menus asking me about &quot;projects&quot; and detailed permissions. Claude kept hallucinating deprecated APIs, model names, and input/output conventions that have all changed recently, which was confusing, but it resolved them after I copy pasted the docs back and forth for a while. Once the individual API calls were working, I immediately ran into some heavy rate limiting of the API calls, allowing me to only issue a few queries every 10 minutes.</p>\n<p><strong>Replicate API</strong>. Next, I needed to generate images given the descriptions. I signed up for a new Replicate API key and ran into similar issues relatively quickly. My queries didn't work because LLM knowledge was deprecated, but in addition, this time even the official docs were a little bit out of date due to recent changes in the API, which now don't return the JSON directly but instead some kind of a Streaming object that neither I or Claude understood. I then faced rate limiting on the API so it was difficult to debug the app. I was told later that these are common protection measures by these services to mitigate fraud, but they also make it harder to get started with new, legitimate accounts. I'm told Replicate is moving to a different approach where you pre-purchase credits, which might help going forward.</p>\n<p><strong>Vercel deploy</strong>. At this point at least, the app was working locally so I was quite happy. It was time to deploy the basic first version. Sign up for Vercel, add project, configure it, point it at my GitHub repo, push to master, watch a new Deployment build and... ERROR. The logs showed some linting errors due to unused variables and other basic things like that, but it was hard to understand or debug because everything worked fine on local and only broke on Vercel build, so I debugged the issues by pushing fake debugging commits to master to force redeploys. Once I fixed these issues, the site still refused to work. I asked Claude. I asked ChatGPT. I consulted docs. I googled around. 1 hour later I finally realized my silly mistake - My <code>.env.local</code> file stored the API keys to OpenAI and Replicate, but this file is (correctly!) part of <code>.gitignore</code> and doesn't get pushed to git, so you have to manually navigate to Vercel project settings, find the right place, and add your environment keys manually. I kind of understood the issue relatively quickly, but I could see an aspiring vibe coder get stuck on this for a while. Once the deployment finally succeeded, Vercel happily offered a URL. This surprised me again because my project was a private git repo that was not ready to see the light of day. I didn't realize that Vercel will take your <em>!private!</em> repo of an unfinished project and auto-deploy it on a totally public and easy to guess url just like that, hah.</p>\n<p><strong>Clerk authentication</strong>. Claude suggested that we use Clerk for authentication, so I went along with it. Signed up for Clerk, configured the project, got my API keys. At this point Claude hallucinated about 1000 lines of code that appeared to be deprecated Clerk APIs. I had to copy paste a lot of the docs back and forth to get things gradually unstuck. Next, so far, Clerk was running in a &quot;Development&quot; deployment. To move to a &quot;Production&quot; deployment, there were more hoops to jump through. Clerk demands that you host your app on a custom domain that you own. <code>menugen.vercel.com</code> will not work. So I had to purchase the domain name <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://karpathy.bearblog.dev/vibe-coding-menugen/\">menugen.app</a>. Then I had to wire the domain to my Vercel project. Then I had to change the DNS records. Then I had to pick an OAuth provider, e.g. I went with Google. But to do that was its own <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://clerk.com/docs/authentication/social-connections/google\">configuration adventure</a> . I had to enable an &quot;SSO connection&quot;. I had to go over to Google Cloud Console and create a new project, and add a new OAuth Credential. I had to wait some time for an approval process around here. I then had to go back and forth between the nested settings of all of Vercel, Clerk and Google for a while to wire it up properly. I thought of quitting the project around here, but I felt better when I woke up the next morning.</p>\n<p><strong>Stripe payments</strong>. Next I wanted to add payments so that people can purchase credits. This means another website, another account, more docs, more keys. I select &quot;Next.js&quot; as the backend, copy paste the very first snippet of code from the &quot;getting started&quot; docs into my app and... ERROR. I realized later that Stripe gives you JavaScript code when you select Next.js, but my app is built in TypeScript, so every time I pasted a snippet of code it made Cursor unhappy with linter errors, but Claude patched things up ok over time after I told it to &quot;fix errors&quot; a few times and after I threatened to switch to ChatGPT. Then back in the Stripe dashboard we create a Product, we create a Price, we find the price key (not the product key!), copy paste all the keys around. Around here, I caught Claude using a really bad idea approach to match up a successful Stripe payment to user credits (it tried to match up the email addresses, but the email the user might give in the Stripe checkout may not be the email of the Google account they signed up with, so the user might not actually get the credits that they purchased). I point this out to Claude and it immediately apologizes and rewrites it correctly by passing around unique user ids in the request metadata. It thanks me for pointing out the issue and tells me that it will do it correctly in the future, which I know is just gaslighting. But since our quick test works, only a few more clicks to upgrade the deployment from Development to Production, now re-do a new Product, redo a new Price, re-copy paste all the keys and ids, locally and in the Vercel settings... and then it worked :)</p>\n<p><strong>Database? Work queues?</strong> So far, all of the processing is done &quot;in the moment&quot; - it's just requests and results right there and then, nothing is cached, saved, or etc. So the results are ephemeral and if the response takes too long (e.g. because the menu is too long and has too many items, or because the APIs show too much latency), the request can time out and break. If you refresh the page, everything is gone too. The correct way to do this is to have a database where we register and keep track of work, and the client just displays the latest state as it's ready. I realized I'd have to connect a database from the Marketplace, something like Supabase PostgreSQL (even when Claude pitched me on using Vercel KV, which I know is actually deprecated). And then we'd also need some queue service like Upstash or so to run the actual processing. It would mean more services. More logins. More API keys. More configurations. More docs. More suffering. It was too much bear. Leave as future work.</p>\n<p><strong>TLDR</strong>. Vibe coding menugen was exhilarating and fun escapade as a local demo, but a bit of a painful slog as a deployed, real app. Building a modern app is a bit like assembling IKEA future. There are all these services, docs, API keys, configurations, dev/prod deployments, team and security features, rate limits, pricing tiers... Meanwhile the LLMs have slightly outdated knowledge of everything, they make subtle but critical design mistakes when you watch them closely, and sometimes they hallucinate or gaslight you about solutions. But the most interesting part to me was that I didn't even spend all that much work in the code editor itself. I spent most of it in the browser, moving between tabs and settings and configuring and gluing a monster. All of this work and state is not even accessible or manipulatable by an LLM - how are we supposed to be automating society by 2027 like this?</p>\n<p><strong>Going forward</strong>. As an exploration of what it's like to vibe code an app today if you have little to no web dev background, I'm left with an equal mix of amazement (it's actually possible and much easier/faster than what was possible before!) and a bit of frustration of what could be. Part of the pain of course is that none of this infrastructure was really designed to be used like this. The intended target audience are teams of professional web developers living in a pre-LLM world. Not vibe coding solo devs prototyping apps. Some thoughts on solutions that could make super simple apps like MenuGen a lot easier to create:</p>\n<ul>\n<li>Some app development platform could come with all the batteries included. Something that looks like the opposite of Vercel Marketplace. Something opinionated, concrete, preconfigured with all the basics that everyone wants: domain, hosting, authentication, payments, database, server functions. If some service made these easy and &quot;just work&quot; out of the box, it could be amazing.</li>\n<li>All of these services could become more LLM friendly. Everything you tell the user will be basically right away copy pasted to an LLM, so you might as well talk directly to the LLM. Your service could have a CLI tool. The backend could be configured with curl commands. The docs could be Markdown. All of these are ergonomically a lot friendlier surfaces and abstractions for an LLM. Don't talk to a developer. Don't ask a developer to visit, look, or click. Instruct and empower their LLM.</li>\n<li>For my next app I'm considering rolling with basic HTML/CSS/JS + Python backend (FastAPI + Fly.io style or so?), something a lot simpler than the serverless multiverse of &quot;modern web development&quot;. It's possible that a simple app like MenuGen (or apps like it) could have been significantly easier in that paradigm.</li>\n<li>Finally, it's quite likely that MenuGen shouldn't be a full-featured app at all. The &quot;app&quot; is simply one call to GPT to OCR a menu, and then a for loop over results to generate the images for each item and present them nicely to the user. This almost sounds like a simple custom GPT (in the terminology of the original GPT &quot;app store&quot; that OpenAI released earlier). Could MenuGen be just a prompt? Could the LLM respond not with text but with a simple webpage to present the results, along the lines of Artifacts? Could many other apps look like this too? Could I publish it as an app on a store and earn markup in the same way?</li>\n</ul>\n<p>For now, I'm pretty happy to have vibe coded my first super custom app through the finish line of something that is real, solves a need I've had for a long time, and is shareable with friends. Thank you to all the services above that I've used to build it. In principle, it could earn some $ if others like it too, in a completely passive way - the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/levelsio\">@levelsio</a> dream. Ultimately, vibe coding full web apps today is kind of messy and not a good idea for anything of actual importance. But there are clear hints of greatness and I think the industry just needs a bit of time to adapt to the new world of LLMs. I'm personally quite excited to see the barrier to app drop to ~zero, where anyone could build and publish an app just as easily as they can make a TikTok. These kinds of hyper-custom automations could become a beautiful new canvas for human creativity.</p>\n<p>The companion tweet (and the &quot;comments section&quot;) is on my X <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1917961248031080455\">@karpathy</a>.</p>\n",
      "date_modified": "2025-05-01T15:30:51.441806+00:00",
      "date_published": "2025-04-27T12:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/vibe-coding-menugen/",
      "id": "urn:aggr:item:97d4e982abf72956c437e7cf57fb5222b81edfa9",
      "summary": "Work log of vibe coding menugen app",
      "tags": [
        "programming"
      ],
      "title": "Vibe coding MenuGen",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-04-27-vibe-coding-menugen/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/a-beautifully-illustrated-watercolor-ima_tccw0iyurqi-radmafrzlw_gigbjdowq6cn6qf_yuu4ta-1.webp\" alt=\"a-beautifully-illustrated-watercolor-ima_TcCW0iyURQi-raDmaFRZLw_GIGBjDOWQ6CN6Qf_yUU4tA (1)\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Transformative technologies usually follow a top-down diffusion path: originating in government or military contexts, passing through corporations, and eventually reaching individuals - think electricity, cryptography, computers, flight, the internet, or GPS. This progression feels intuitive, new and powerful technologies are usually scarce, capital-intensive, and their use requires specialized technical expertise in the early stages.</p>\n<p>So it strikes me as quite unique and remarkable that LLMs display a dramatic reversal of this pattern - they generate disproportionate benefit for regular people, while their impact is a lot more muted and lagging in corporations and governments. ChatGPT is the fastest growing consumer application in history, with 400 million weekly active users who use it for writing, coding, translation, tutoring, summarization, deep research, brainstorming, etc. This isn't a minor upgrade to what existed before, it is a major multiplier to an individual's power level across a broad range of capabilities. And the barrier to use is incredibly low - the models are cheap (free, even), fast, available to anyone on demand behind a url (or even local machine), and they speak anyone's native language, including tone, slang or emoji. This is insane. As far as I can tell, the average person has never experienced a technological unlock this dramatic, this fast.</p>\n<p>Why then are the benefits a lot more muted in the corporate and government realms? I think the first reason is that LLMs offer a very specific profile of capability - that of merely quasi-expert knowledge/performance, but simultaneously across a very wide variety of domains. In other words, they are simultaneously versatile but also shallow and fallible. Meanwhile, an organization's unique superpower is the ability to concentrate diverse expertise into a single entity by employing engineers, researchers, analysts, lawyers, marketers, etc. While LLMs can certainly make these experts more efficient individually (e.g. drafting initial legal clauses, generating boilerplate code, etc.), the improvement to the organization takes the form of becoming a bit better at the things it could already do. In contrast, an individual will usually only be an expert in at most one thing, so the broad quasi-expertise offered by the LLM fundamentally allows them to do things they couldn't do before. People can now vibe code apps. They can approach legal documents. They can grok esoteric research papers. They can do data analytics. They can generate multimodal content for branding and marketing. They can do all of this at an adequate capability without involving an additional expert.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/download2.webp\" alt=\"download2\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Second, organizations deal with problems of a lot greater complexity and necessary coordination, think: various integrations, legacy systems, corporate brand or style guides, stringent security protocols, privacy considerations, internationalization, regulatory compliance and legal risk. There are a lot more variables, a lot more constraints, a lot more considerations, and a lot lower margin for error. It's not so easy to put all of it into a context window. You can't just vibe code something. You might be one disastrous hallucination away from losing your job. And third, there is the well-documented inertia of a larger organization, featuring culture, historical precedents, political turf wars that escalate in periods of rapid change, communication overhead, re-training challenges of a distributed workforce and good old-fashioned bureaucracy. These are major headwinds when it comes to rapid adoption of a sparkling new, versatile-but-shallow-and-fallible tool. I don't wish to downplay the impacts of LLMs in corporations or governments, but at least for the moment and in aggregate across society, they have been significantly more life altering for individuals than they have been for organizations. Mary, Jim and Joes are experiencing the majority of the benefit, not Google or the government of the United States.</p>\n<p>Looking forward, the continued diffusion of LLMs of course depends on continued performance improvement and its capability profile. The &quot;benefit distribution&quot; overall is particularly interesting to chart, and depends heavily on the dynamic range of the performance as a function of capital expenditure. Today, frontier-grade LLM performance is very accessible and cheap. Beyond this point, you cannot spend a marginal dollar to get better performance, reliability or autonomy. Money can't buy better ChatGPT. Bill Gates talks to GPT 4o just like you do. But can this be expected to last? Train-time scaling (increase parameters, data), test-time scaling (increase time) and model ensembles (increase batch) are forces increasing the dynamic range. On the other hand, model distillation (the ability to train disproportionately powerful small models by training to mimic the big model) has been a force decreasing dynamic range. Certainly, the moment money can buy dramatically better ChatGPT, things change. Large organizations get to concentrate their vast resources to buy more intelligence. And within the category of &quot;individual&quot; too, the elite may once again split away from the rest of society. Their child will be tutored by GPT-8-pro-max-high, yours by GPT-6 mini.</p>\n<p>But at least at this moment in time, we find ourselves in a unique and unprecedented situation in the history of technology. If you go back through various sci-fi you'll see that very few would have predicted that the AI revolution would feature this progression. It was supposed to be a top secret government megabrain project wielded by the generals, not ChatGPT appearing basically overnight and for free on a device already in everyone's pocket. Remember that William Gibson quote <em>&quot;The future is already here, it's just not evenly distributed&quot;</em>? Surprise - the future is already here, and it is shockingly distributed. Power to the people. <em>Personally</em>, I love it.</p>\n<p>A version of this post that allows community comments is here on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy/status/1909308143156240538\">X</a>.</p>\n",
      "date_modified": "2025-04-08T08:21:28.839125+00:00",
      "date_published": "2025-04-07T18:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/power-to-the-people/",
      "id": "urn:aggr:item:6b3970aef2046c8d70640508826fdc51110b782e",
      "summary": "Yes",
      "tags": [
        "programming"
      ],
      "title": "Power to the people: How LLMs flip the script on technology diffusion",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-04-07-power-to-the-people-how-llms-flip-the-script-on-technology/"
    },
    {
      "authors": [
        {
          "name": "karpathy"
        }
      ],
      "content_html": "<p>About 2 months ago I stumbled by this Bryan Johnson video on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.youtube.com/watch?v=Wk9p3dhMYdk\">How I FIXED My Terrible Sleep - 10 Habits</a>. I resolved that day to listen to Bryan and try to improve my sleep. But before we can improve it, first - how should we measure it? Bryan Johnson seems to use <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whoop.com/us/en/\">Whoop</a>, but at that time I only had my Apple Watch (coupled with one of the popular sleep apps - <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://apps.apple.com/us/app/autosleep-track-sleep-on-watch/id1164801111\">AutoSleep</a>). And then a long time ago I used and liked <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ouraring.com/\">Oura</a>. And I also had an order in for the new and fancy <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.eightsleep.com/\">8Sleep Pod 4 Ultra</a>, which I was aware offers some sleep tracking too. So I found myself in a bit of a pickle - which one should I pick to track my sleep? And the answer of course is... to initiate a comprehensive tracking project to compare the 4 major candidates and find the. best. sleep. tracker. So that's what I did. This is me fully geared up and ready for bed:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/sleep_edit.webp\" alt=\"sleep_edit\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>I've now gathered roughly 2 months of data. I kept the raw data in a simple spreadsheet, recording some of the basic measurements: the amount of sleep (Light, REM, Deep, and Awake tossing and turning), heart rate measurements (Resting Heart Rate (RHR), Heart Rate Variability (HRV)), and the sleep Score offered by each app. I'd log these every day right when I wake up so that I can compare and contrast the numbers and relate them to how I felt that morning. You can find my <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://docs.google.com/spreadsheets/d/1mJeKtLuDE9hOuc2e_WjfaP1sds22k_sO2foIvSZLohw/edit?usp=sharing\">raw data in this spreadsheet</a>, it looks like this:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/sleep_data.webp\" alt=\"sleep_data\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>Qualitative assessment</strong>. Now, to spare you some suspense, after 2 months of data collection and staring at the results basically every morning, it was very pretty easy to guess that Oura and Whoop are both &quot;Tier 1&quot; - fairly similar and quite high quality in their sleep tracking. They both give similar scores that also correlated with the way I felt in the morning <em>most of the time</em>. Next is 8Sleep, which is ok. And finally, I was sad to learn that Apple Watch + AutoSleep (which I had used in the past for many months) was really, really terrible. Its scores are basically almost random and they swing around wildly, with little correlation to how I felt in the morning in comparison.</p>\n<p>Let's now look at some of the data. First, let's look at the values that all 4 signals take on over the 2 months, with their histograms:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/signals.webp\" alt=\"signals\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>As we can see, AutoSleep and 8Sleep are way too easy to please, giving out really high scores and pushing against the 100 score boundary. Whoop is also a little too easy to please, giving out 100 scores. Oura is the most difficult to please, shows a relatively nice gaussian distribution of scores, and offering the most dynamic range. I take this to be a good and nice property of Oura. Indeed, after 2 months my highest ever score on Oura was 92, while I can get 100 on Whoop fairly regularly. This means that I can keep going and striving for even more optimal sleep, one day.</p>\n<p>Next, I was very curious about the correlation analysis between the trackers. We take all the scores and plot pairwise correlation scatter plots to see which of the trackers &quot;agree the most&quot; with each other. Here it is:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/corr.webp\" alt=\"corr\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>And here are the correlations sorted:</p>\n<pre><code><span class=\"code-snippet\">Whoop vs Oura: 0.65\nOura vs 8Sleep: 0.59\nOura vs AutoSleep: 0.47\n8Sleep vs AutoSleep: 0.42\nWhoop vs 8Sleep: 0.38\nWhoop vs AutoSleep: 0.14\n</span></code></pre>\n<p>Whoop and Oura seem to enjoy the highest correlation at ~0.65, while the other trackers are a bit all over the place. In particular, Whoop and AutoSleep are almost uncorrelated (0.14!). If we think that Whoop is good (which I think it is), AutoSleep looks almost like a noise generator.</p>\n<p><strong>Matters of Heart Rate</strong>. Next, I was interested to look at the Resting Heart Rate (RHR) and Heart Rate Variability (HRV). First, all trackers except 8Sleep agree quite highly on the heart rate during the night, including the Apple Watch. 8 Sleep is the worst because... it's a mattress so it doesn't have a direct measurement of the heart rate. I'm actually a bit impressed that it has a correlation this high:</p>\n<pre><code><span class=\"code-snippet\">           AutoSleep    8Sleep      Oura     Whoop\nAutoSleep   1.000000  0.947151  0.908987  0.942587\n8Sleep      0.947151  1.000000  0.947977  0.878552\nOura        0.908987  0.947977  1.000000  0.904023\nWhoop       0.942587  0.878552  0.904023  1.000000\n</span></code></pre>\n<p>Having established that all 3 devices (Oura, Whoop, AutoSleep) give a good and consistent measurement of resting heart rate during the night, I was curious if there is a correlation with the sleep score, as this is something Bryan mentioned a few times in his videos. In other words, is a lower RHR associated with better sleep score? Keep in mind that this is just correlation analysis, indeed, I have no idea if the apps take RHR as one of the measurements when they calculate the sleep score. For Whoop, it seems like there is a tiny bit of a correlation, i.e. lower RHR comes with higher sleep score (~0.13).</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/whoopcorr.webp\" alt=\"whoopcorr\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>But for Oura there is none:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/ouracorr.webp\" alt=\"ouracorr\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>So... I'm not sure what to make of this. Going in, I thought that lower RHR would correlate quite well to better score but this doesn't seem to be the case.</p>\n<p>Lastly, during the 2 months of data collection I was exercising regularly, getting about 30 minutes on average of Zone 2 cardio every day, except twice a week also doing a 4x4x4 HIIT (4 min off, 4 min on, 4 times). I was curious if this showed up and indeed it seems like it does, pretty cool:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/improvement.webp\" alt=\"improvement\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Using Whoop-Oura average measurement of both RHR and HRV, my resting heart rate has improved (decreased) by a bit less than 3 bpm over the duration of these 60 days (from ~51 bpm -&gt; 48 ~bpm), which is awesome. In addition, my HRV has also improved (increased), (from ~49 -&gt; 54). I love to see exercise adaptations in the data. For some unknown reason, notice also that the HRV values from Whoop seem to be inflated above those of Oura by about 5. I'm not exactly sure why, possibly they calculate it differently... but it's a bit surprising and unexplained.</p>\n<p>Lastly, over the duration of 2 months I tried to improve my sleep quality, but it's all mixed up with a bunch of random events, parties, injuries, and also random experiments I tried to run here and there. As another example, my last week was rough because I was obsessed with a technical problem and couldn't sleep well. So unfortunately, overall, I am not seeing a dramatic increase in my sleep quality just yet. But I see this as a long-term project and I hope to increase these scores on average over the duration of the year. Maybe if squint hard enough my sleep has improved a tiny amount (?), but let's face it this is cope hah:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/sleepovertime.webp\" alt=\"sleepovertime\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>Yes, sleep matters</strong>. Overall, I will say with absolute certainty that Bryan is basically right, and my sleep scores correlate strongly with the quality of work I am able to do that day. When my score is low, I lack agency, I lack courage, I lack creativity, I'm simply tired. When my sleep score is high, I can power through anything. On my best days, I can sit down and work through 14 hours and barely notice the passage of time. It's not subtle. The effects are not a function of a single day's sleep but of the accumulated sleep debt over a duration of last few days. So in other words a single bad night is usually ok. But a few in a row is bad news. And vice versa. Listen to Bryan.</p>\n<p><strong>Shopping recommendations</strong>. Finally, I wanted to close with some recommendations to others who might want to undertake sleep tracking and improve their sleep.</p>\n<ul>\n<li>\n<p>Oura is Tier 1 / super solid tracker. The app is excellent and I love the single &quot;overview pane&quot; with all the data about that sleep (Whoop needs a lot more clicking around the app). I love that Oura score doesn't saturate that easily, that its scores are a gaussian, and that it has dynamic range. Unfortunately, I find the ring form factor quite inconvenient because it's a little thick, and fingers are used extensively (e.g. hand washing, food preparation, etc.) When I go to the gym, I find myself removing the ring often because it interferes with my grip strength, and it could get scratched. The ring has to be sized correctly and your finger changes its size. Sometimes it's a little too snug, sometimes a little too loose. The ring also has to be rotated correctly for the best results (the notch has to be down), so you'll keep finding it rotated wrong and correcting it. I also don't love having to take the ring on and off to charge it.</p>\n</li>\n<li>\n<p>Whoop is also a Tier 1 / super solid tracker. The app is excellent. It can be a bit overwhelming at first and requires quite a bit of moving around, but it is very comprehensive, full-featured and customizable, more than Oura. It also has a pretty neat and useful LLM integration. I also really like the Community feature, though it is severely undercooked, under-designed, and feels orphaned. I think Oura has a better &quot;grand overview&quot; page for a single dense summary of one night of sleep. I don't like that Whoop saturates at 100 fairly easily. I find that Whoop is significantly better when it comes to the form factor. Having the tracker on your wrist is just so significantly easier and less intrusive into your daily life. In addition, you never have to take it off because the charger attaches on and off onto it!</p>\n</li>\n<li>\n<p>I didn't find 8Sleep to be very reliable in its sleep tracking. The scores don't make as much sense to me when I wake up, and as we saw above they don't correlate very strongly with Whoop or Oura.</p>\n</li>\n<li>\n<p>AutoSleep is basically a random number generator. Maybe there is a better app on Apple Watch for sleep tracking, but I haven't found it. Do not use.</p>\n</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://bear-images.sfo2.cdn.digitaloceanspaces.com/karpathy/apps.webp\" alt=\"apps\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p>Above: The 4 apps. Left to right: <strong>Oura</strong> - I love this &quot;grand overview&quot; summary page, it's dense with just the info you want, and it's super easy to swipe left/right for other days. <strong>Whoop</strong> - less dense, you have to move around a lot to &quot;treasure hunt&quot; the information you want. <strong>8Sleep</strong> - pretty decent. <strong>AutoSleep</strong> - looks cool but the numbers are all wrong so <code>¯\\(ツ)/¯</code>.</p>\n<p>Summarizing all of that into my advice right now: Get Whoop for 9.5/10, reliable, convenient sleep tracking with an excellent app (once you get to know it a bit). Get Oura for 10/10 tracking, if you're ok with the ring form factor.</p>\n<p>Did I skip your favorite obviously best sleep tracker? Let me know on X <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/karpathy\">@karpathy</a>.</p>\n",
      "date_modified": "2025-03-25T14:59:58.705090+00:00",
      "date_published": "2025-03-24T23:00:00+00:00",
      "external_url": "https://karpathy.bearblog.dev/finding-the-best-sleep-tracker/",
      "id": "urn:aggr:item:82c6c05c33ed9d3e3c4e257149f7d5003d61778d",
      "summary": "Finding the best sleep tracker with data",
      "tags": [
        "programming"
      ],
      "title": "Finding the Best Sleep Tracker",
      "url": "https://aggr.aymericbeaumet.com/items/karpathy-bearblog-dev/2025-03-24-finding-the-best-sleep-tracker/"
    }
  ],
  "language": "en",
  "title": "karpathy",
  "version": "https://jsonfeed.org/version/1.1"
}