<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Last Mile of AI]]></title><description><![CDATA[Notes from the long tail of the AI revolution, where AGI dreams collide with real token budgets, and adoption has to actually work.
]]></description><link>https://lastmileofai.com</link><image><url>https://lastmileofai.com/img/substack.png</url><title>Last Mile of AI</title><link>https://lastmileofai.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 25 Jul 2026 00:11:32 GMT</lastBuildDate><atom:link href="https://lastmileofai.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ankur C. Das]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[crossingpoint@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[crossingpoint@substack.com]]></itunes:email><itunes:name><![CDATA[Ankur C. Das]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ankur C. Das]]></itunes:author><googleplay:owner><![CDATA[crossingpoint@substack.com]]></googleplay:owner><googleplay:email><![CDATA[crossingpoint@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ankur C. Das]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Read Karpathy's Tweet, Found a YouTube Video, and Had a Working 'Second Brain' by Sunday]]></title><description><![CDATA[A Persistent Wiki: The Difference Between Retrieving Knowledge and Compiling It]]></description><link>https://lastmileofai.com/p/i-read-karpathys-tweet-found-a-youtube</link><guid isPermaLink="false">https://lastmileofai.com/p/i-read-karpathys-tweet-found-a-youtube</guid><dc:creator><![CDATA[Ankur C. Das]]></dc:creator><pubDate>Fri, 19 Jun 2026 19:43:55 GMT</pubDate><content:encoded><![CDATA[<p>Andrej Karpathy&#8217;s <a href="https://x.com/karpathy/status/2040470801506541998?s=20">idea</a> for building a personal knowledge base with LLMs is short. He describes the concept, architecture, operations, and even some optional CLI tools. What he deliberately leaves out is which tools to use.</p><p>In the post, he&#8217;s explicit about it: the document&#8217;s job is to communicate the pattern, and your LLM agent figures out the rest. Different people, different stacks, different needs. He wanted everyone to build their own version, not copy his.</p><p>When the tweet went viral, I read the idea file twice and understood the concept completely. I had no idea how best to build it. Then last weekend,  I found Corey Ganim and Nick Spisak&#8217;s walkthrough on YouTube. By Sunday, I had a working system. This article is about both dots and the line between them.</p><h4><strong>What Karpathy&#8217;s concept is actually saying</strong></h4><p>The problem he&#8217;s solving is subtle enough that it&#8217;s worth stating plainly. Most people&#8217;s experience with LLMs and documents is retrieval: you upload files, the model finds relevant chunks at query time, and generates an answer. Nothing accumulates. Ask a question that requires synthesizing five sources, and the system assembles an answer from scratch, forgets it did so, and will do it again next time. The model has no memory of having thought this through before.</p><p>His alternative: use an LLM to compile a persistent wiki, not just index raw documents. The LLM reads your sources, extracts what matters, and builds a collection of interlinked markdown files that it maintains as you add new material. When a new source arrives, the LLM doesn&#8217;t just file it. It updates existing pages, notes where the new data contradicts old claims, strengthens cross-references, and logs what changed. The synthesis is pre-built. You&#8217;re querying something that has been actively constructed, not something that retrieves raw text and hopes for the best.</p><p>Three layers: </p><ul><li><p>raw (your source documents, untouched, your ground truth)</p></li><li><p>wiki (LLM-maintained markdown files, entirely the LLM&#8217;s domain)</p></li><li><p>outputs (queries, analyses, anything worth keeping from a session)</p></li></ul><p>A schema file tells the LLM how the wiki is structured and what to do on every ingest, query, and health check. That schema is the key configuration: it&#8217;s what turns a general-purpose AI agent into a disciplined wiki maintainer.</p><p>The idea is clean. The question is what you actually build it with.</p><h4><strong>How Corey and Nick closed the gap</strong></h4><p>After the tweet went viral, Corey Ganim and Nick Spisak put out a walkthrough that translates Karpathy&#8217;s abstract pattern into a concrete, end-to-end build using Claude Code and Obsidian. I followed it step by step. (Link to their video at the bottom of this post. Absolutely worth 20 minutes of your time.)</p><p>The specific tool choices matter because they fit the pattern so naturally. Obsidian is a markdown-based note-taking tool with a graph view that renders the connections between pages as a visual network. That graph view turns out to be the best way to watch the system actually working: you can see the wiki building in real time as the LLM processes your sources. Claude Code handles the agent operations, and a pre-built skill that Corey and Nick made available handles the scaffolding automatically.</p><p>The setup sequence, following their walkthrough: install Obsidian, install the Obsidian Web Clipper Chrome extension (which converts any web article to markdown in one click and drops it into your vault), fire up Claude Code, and run the second brain skill. A guided wizard asks you to name the vault, choose where to store it, and configure any optional tools. It creates the full directory structure (raw, wiki, outputs), generates the CLAUDE.md configuration file, and gets you into a working state in under five minutes.</p><p>After that, the daily workflow is three commands. An example of a typical personal workflow:</p><ul><li><p><em>Ingest:</em> clip articles into raw using the browser extension, optionally pull YouTube transcripts using a CLI tool called summarize, then run the ingest command. Claude Code reads everything in raw, writes summary pages to the wiki, updates the index, and builds the connections. </p></li><li><p><em>Query:</em> ask the system a question, get a synthesized answer drawn from the wiki, file anything useful back in as a new page. </p></li><li><p><em>Lint:</em> run a health check that finds contradictions between pages, flags gaps, and suggests what to read next.</p></li></ul><h4><strong>The moment the abstraction becomes real</strong></h4><p>Before you run your first ingest, Obsidian&#8217;s graph view shows a handful of orphaned nodes: the scaffold files exist, but nothing is connecting them. After you ingest even a single source, that changes. The LLM reads the article, writes a summary page, creates entity pages for the people and concepts mentioned, and cross-references them. The graph fills in. You can follow the links.</p><p>I watched it happen with one Wikipedia article and immediately understood what Karpathy meant when he described the wiki as a compiling artifact. The connections weren&#8217;t something I made. The system made them, and they were already there when I went to look.</p><h4><strong>What compounding actually looks like</strong></h4><p>Day one, the wiki is as useful as a well-organized bookmark folder. Day 30, it&#8217;s better than your memory on the topics you&#8217;ve been feeding it. The compounding happens in two directions: sources accumulate as you ingest them, and your own queries accumulate too. When you ask a question and get a useful analysis, you file that output back as a new wiki page. Your explorations don&#8217;t disappear into chat history. They stay in the knowledge base and make the next query more capable.</p><p>At around 100 sources, Karpathy notes from his own use that the LLM handles complex synthesis questions well without any embedding infrastructure. The index file is enough for navigation. No vector database, no embedding pipeline, just markdown and an agent that knows how to read an index and drill in. You can build this without any backend infrastructure at all.</p><h4><strong>The thing Karpathy understood that&#8217;s easy to miss</strong></h4><p>He released a deliberately incomplete idea because he knew the right implementation would look different for everyone. Some people will use Obsidian and Claude Code. Others will use a different editor, a different agent, a different folder structure. The pattern is what transfers. The specific tools are secondary.</p><p>That said, if you want a concrete starting point, Corey Ganim and Nick Spisak&#8217;s walkthrough is the clearest implementation I&#8217;ve seen (I did check many others). Follow it, get the system running, and then adapt it to how you actually work.</p><p>[<a href="https://youtu.be/5FiHjotg2zU?si=75r9d00-BejQsNkL">Link to their video</a>]</p><p>Pick a domain, clip three articles, and run your first ingest. The graph starts filling in from there. Or convert your project notes to markdown files, dump them in the &#8216;raw&#8217; folder, and run your first ingest. </p><p>I already picked up a few fresh insights from my files after running the synthesis command. Off to a great start. You should give it a go. </p><p>Happy weekend!</p><p style="text-align: center;">~~~</p>]]></content:encoded></item><item><title><![CDATA[Orbital Data Centers: Hype and Hard Science]]></title><description><![CDATA[What Starship Solves, and What It Doesn't... Yet!]]></description><link>https://lastmileofai.com/p/orbital-data-centers-hype-and-hard</link><guid isPermaLink="false">https://lastmileofai.com/p/orbital-data-centers-hype-and-hard</guid><dc:creator><![CDATA[Ankur C. Das]]></dc:creator><pubDate>Sat, 13 Jun 2026 08:20:02 GMT</pubDate><content:encoded><![CDATA[<p>SpaceX closed its trading debut up 19%, with a market cap of $2.1 trillion. Sixth most valuable public company in America, on day one. Buried inside the investor chatter that followed, on <a href="https://www.youtube.com/watch?v=Tx9jT2c6e3U">Bg2 Pod</a> and elsewhere, was a question that sounds like science fiction until you look at the numbers: should some of the world&#8217;s AI compute move into orbit?</p><p>Here&#8217;s the number that makes people lean in. Building a gigawatt of data center capacity in the US today costs roughly $60 billion. Of that, about $25 billion is land, shell, power infrastructure, and cooling, the physical envelope around the chips rather than the chips themselves. If Starship&#8217;s rapid reusability delivers on its promise, that $25 billion piece could fall to something like $5 billion.</p><h4><strong>What orbit actually gives you for free</strong></h4><p>As of 2026, anyone trying to build a data center in the US is fighting on six fronts: power availability, permitting and regulation, supply chain and equipment, construction costs and capital, water and cooling, and land or local opposition. Move the facility into orbit, and three of those six largely disappear. There&#8217;s no zoning board. There&#8217;s no neighborhood pushing back on noise or water use. And solar power in orbit is close to constant, no clouds, no night, no seasonal dip. Real estate and power, the two inputs that drive much of the $25 billion figure, become nearly free.</p><p>That&#8217;s the part of the pitch that&#8217;s easy to believe. It&#8217;s also the part that gets repeated most, which is why it crowds out the harder question.</p><h4><strong>The one input that isn&#8217;t free</strong></h4><p>Cooling computers in space is a fundamentally different problem than cooling them on Earth. On the ground, heat has somewhere to go: air, water, immersion fluid, all of it carrying heat away through contact. In a vacuum, none of that works. The only way to shed heat is to radiate it away as infrared energy, and despite how cold space is, the vacuum itself acts as an insulator. Heat doesn&#8217;t just drift off into the cold the way intuition suggests.</p><p>So you need radiators. For an AI system rated at around 1 megawatt, the required radiator surface area could exceed 1,000 square meters, adding many tons to the spacecraft. And weight is the one thing that&#8217;s never free to launch, no matter how cheap the rocket gets.</p><h4><strong>SpaceX&#8217;s bet, and who else is testing it</strong></h4><p>The plan circulating involves liquid-cooling loops, likely ammonia-based, that pull heat away from the chips and into large radiator panels facing deep space. One genuine upside: unlike terrestrial data centers, none of this depends on water, which removes a major environmental cost that&#8217;s become a real political liability for ground-based AI infrastructure. Pair that with high-efficiency solar arrays, laser links between satellites for networking, and Starship&#8217;s falling launch costs to offset the mass penalty of all that radiator hardware, and you have a coherent system, at least on paper. Starcloud is already further along than most people realize, testing AI GPU hardware in orbit specifically to prove the cooling and compute loop can run reliably outside the lab.</p><h4><strong>Cheaper launches don&#8217;t repeal cooling physics</strong></h4><p>This is where I&#8217;d push back on the more enthusiastic version of this story. Lower launch costs, even a fivefold drop, make it cheaper to carry bigger radiators, more shielding, and backup systems into orbit. What they don&#8217;t do is make the radiators smaller. Starship doesn&#8217;t shrink the cooling problem. It just makes the cooling problem affordable to carry.</p><p>And at the gigawatt scale, that cooling problem gets enormous. We&#8217;re talking about radiator arrays that could stretch for kilometers, built from components that have to survive radiation exposure and micrometeorite strikes, with essentially no ability to send someone up for repairs. Every additional square meter of radiator is also additional surface area for a collision, in an orbital environment that&#8217;s already getting more crowded. None of that is a reason to dismiss the idea. It&#8217;s a reason not to treat the $5 billion figure as the end of the conversation.</p><p>Orbital data centers aren&#8217;t a solved concept yet, and I don&#8217;t think the cooling question will be fully answered for several years. But it&#8217;s also true that nobody is throwing more engineering talent and capital at hard physics problems right now than SpaceX is, and that combination is worth watching closely rather than dismissing.</p><p style="text-align: center;">~~~</p>]]></content:encoded></item><item><title><![CDATA[What an 8 GB MacBook Taught Me About AI]]></title><description><![CDATA[A weekend building a local AI setup on an aging MacBook - and why the failures taught me more than months of reading.]]></description><link>https://lastmileofai.com/p/what-an-8-gb-macbook-taught-me-about</link><guid isPermaLink="false">https://lastmileofai.com/p/what-an-8-gb-macbook-taught-me-about</guid><dc:creator><![CDATA[Ankur C. Das]]></dc:creator><pubDate>Fri, 05 Jun 2026 19:45:21 GMT</pubDate><content:encoded><![CDATA[<p>When I first tried ChatGPT in January 2023, it felt like a glimpse into the future. Over the months that followed, that future arrived faster than I expected. As each new generation of models leapfrogged the last, my usage grew from occasional experimentation to an essential part of my daily workflow. I subscribed to GPT-4 as soon as it became available, tested nearly every frontier model that followed, and eventually settled into a routine where AI became a genuine collaborator. Today, much of my professional work lives inside Claude&#8217;s Cowork and Code environments - a level of adoption I never would have predicted three years ago.</p><p>I consume an unhealthy amount of tech content. Over the past few months, my feeds have been filled with people building fascinating projects using agent frameworks like OpenClaw and Hermes, open models like Llama and Kimi, and surprisingly modest hardware - Mac minis, old laptops, and even everyday MacBooks.</p><p>They seemed to be having an incredible amount of fun.</p><p>Before long, I had accumulated a list of project ideas of my own. Rather than letting them sit in a notes app indefinitely, I decided to dedicate a few weekends to working through them one by one.</p><p>The first idea was simple: I had an aging MacBook Pro M1 gathering dust, and I wanted to see if I could turn it into a completely air-gapped writing environment-Wi-Fi off, cloud disconnected, everything running locally.</p><p>It was a slightly ambitious goal for a machine with only 8 GB of RAM.</p><p>The experiment had three objectives. First, I wanted to experience an open-weight LLM for the first time. Second, I wanted to get hands-on with an agent framework. Third, I wanted to understand, firsthand, the practical limits of consumer hardware. Yes, I realize many people solved these problems months ago, and yes, I am late to the party.</p><p>After some research, I settled on the <em>Llama 3.2 3B</em> model paired with <em>Hermes Agent</em>. On paper, it looked like a combination that should fit comfortably within the MacBook&#8217;s constraints.</p><p>A few hours later, I was deep in terminal windows, troubleshooting dependency conflicts, chasing down 404s, and editing configuration files. I&#8217;ll spare you the installation play-by-play. Besides, the troubleshooting was part of the fun.</p><p>Instead, let me jump straight to what I learned.</p><h2>The lesson was the dependency chain.</h2><p>I didn&#8217;t walk away from the weekend with a working application. <em>More on that in a moment</em>. What I did gain was something more valuable: an understanding of how the hardware, model, and agent layers constrain one another in practice, not just in architecture diagrams.</p><p>Before this experiment, I understood these dependencies intellectually. Afterward, I understood them in my hands.</p><p>The first lesson was that RAM sets the ceiling.</p><p>On an 8 GB MacBook, that memory has to be shared between macOS, the display, background processes, and the model itself. To avoid constant crashes, I also needed to keep more than 15 GB of disk space available for swap. Everything else flows from that constraint. It&#8217;s the first domino.</p><p>That memory ceiling effectively limits me to smaller models. In my case, a 3B model.</p><p>And that&#8217;s where the second domino falls.</p><p>A 3B model can chat surprisingly well, but it struggles with something far more important for an agent: tool calling. An agent&#8217;s entire purpose is to take actions on your behalf&#8212;save a file, update a document, execute a command, retrieve information. To do that reliably, the underlying model must be able to emit structured tool calls.</p><p>This was the moment that no demo video had prepared me for.</p><p>I would ask Hermes to write a profile and save it to disk. It would happily generate an excellent profile. Then, instead of saving the file, it would print a list of the tools available to it.</p><p>The reasoning was there. The action wasn&#8217;t.</p><p>After some digging, I discovered the issue wasn&#8217;t Hermes at all. The limitation was the underlying model. The Llama 3.2 3B model is effectively chat-only. Reliable tool use requires larger models&#8212;something closer to Gemma 4 31B&#8212;which in turn demands roughly 24 GB of RAM or more.</p><p>At that point, the dependency chain became obvious.</p><p>The hardware limits the model.</p><p>The model limits the agent.</p><p>And when the model can&#8217;t reliably call tools, the agent quietly degrades into a chatbot.</p><p>So my &#8220;agent&#8221; ended up doing what chatbots do: generating content. Meanwhile, I handled the file operations myself with a couple of Terminal commands.</p><p>Ironically, the part I expected to be difficult turned out to be the easiest.</p><p>Hermes is configured to use a paid cloud endpoint by default, so pointing it to a local Ollama instance required some configuration. But once that was done, creating an air-gapped environment was almost laughably simple.</p><p>Change the endpoint to &#8216;<code>localhost&#8217;</code>.</p><p>Turn off Wi-Fi.</p><p>Done.</p><h2>Worth it &#8212; even if I never use it again</h2><p>I won&#8217;t pretend this is a setup I&#8217;ll keep using.</p><p>The Terminal occasionally glitches into overlapping text. The 3B model has obvious limitations. Every new session begins with a 30-to-60-second wait while the model loads into memory. There is a very real chance I never open this setup for writing again.</p><p>And yet, the experiment was absolutely worth it.</p><p>For months, I had consumed videos, blog posts, benchmarks, and hot takes about local models and agent frameworks. I understood the concepts. I could explain the architecture. But what I retained was mostly the shape of the thing.</p><p>One afternoon spent chasing 404 errors, editing configuration files, and wrestling with hardware constraints taught me more than dozens of polished explainers ever had.</p><p>Because explainers show you the path that works, they rarely show you <em>why</em> it works.</p><p>And they seldom show you what breaks when one layer becomes the bottleneck for another.</p><p>That&#8217;s the <em>last mile</em> of understanding.</p><p>It&#8217;s messy. It&#8217;s frustrating. It&#8217;s where most of the learning happens.</p><p></p><p style="text-align: center;">~~~</p><div><hr></div><p></p><p><em>What&#8217;s the setup you keep meaning to test on the machine you already own? Reply and tell me &#8212; I read everything.</em></p><p><em>The Last Mile of AI publishes one new learning every Friday. If you&#8217;d rather learn by watching someone else hit the 404 first, subscribe.</em></p>]]></content:encoded></item></channel></rss>