<?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[Daniel Lopes]]></title><description><![CDATA[Notes from running engineering, product and design at GrowthX: decisions, reflections and ideas as they happen.
]]></description><link>https://journal.daniellopes.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!cDim!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2713e243-3a29-434e-afb6-b7731174629f_512x512.png</url><title>Daniel Lopes</title><link>https://journal.daniellopes.dev</link></image><generator>Substack</generator><lastBuildDate>Mon, 14 Sep 2026 18:38:26 GMT</lastBuildDate><atom:link href="https://journal.daniellopes.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Daniel Lopes]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[daniellopes@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[daniellopes@substack.com]]></itunes:email><itunes:name><![CDATA[Daniel Lopes]]></itunes:name></itunes:owner><itunes:author><![CDATA[Daniel Lopes]]></itunes:author><googleplay:owner><![CDATA[daniellopes@substack.com]]></googleplay:owner><googleplay:email><![CDATA[daniellopes@substack.com]]></googleplay:email><googleplay:author><![CDATA[Daniel Lopes]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Astra hits a compute wall, DeepSeek retires Pro, Shopify buys Tailwind]]></title><description><![CDATA[Plus AI standards talks, a Navier-Stokes data fight, and OpenAI agents on RubyGems &#183; Sep 7&#8211;13]]></description><link>https://journal.daniellopes.dev/p/astra-hits-a-compute-wall-deepseek</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/astra-hits-a-compute-wall-deepseek</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Mon, 14 Sep 2026 00:47:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cDim!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2713e243-3a29-434e-afb6-b7731174629f_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>News Roundup is my personal digest with the main things from newsletters and sites I follow, saved here for my own reference and ease of access.<br></em></p><h3><a href="https://www.theinformation.com/articles/inside-ai-industrys-behind-scenes-push-police">OpenAI, Anthropic, and Google talk a private AI standards body</a></h3><p><em>The Information &#183; Exclusive &#183; Sep 13</em></p><p>Anthropic, OpenAI, and Google have been discussing a private standards body for testing/auditing frontier models &#8212; in the same week Amodei urged &#8220;pacing the frontier&#8221; and Nvidia was reported circling a huge Anthropic IPO stake.</p><h3><a href="https://www.theinformation.com/briefings/openai-pause-new-pro-subscriptions-cites-astra-demand">OpenAI pauses new $200 Pro sign-ups for Astra</a></h3><p><em>The Information &#183; Briefing &#183; Sep 11</em></p><p>OpenAI paused new $200/month Pro sign-ups for GPT-6 Astra, citing unprecedented demand and compute strain just weeks after launch.</p><h3><a href="https://www.theinformation.com/briefings/anthropic-says-blocked-bioweapons-efforts-detected-chinese-distillation-attacks">Anthropic: blocked bioweapons attempts and Chinese distillation</a></h3><p><em>The Information &#183; Briefing &#183; Sep 11</em></p><p>Anthropic&#8217;s new report claims it blocked Claude misuse spanning bio and cyber threats, and separately alleges China-based developers distilled Claude&#8217;s reasoning via fraudulent accounts.</p><h3><a href="https://www.theinformation.com/articles/openai-math-result-stokes-data-sharing-concerns">OpenAI&#8217;s Navier-Stokes claim stirs a Codex training-data fight</a></h3><p><em>The Information &#183; AI Agenda &#183; Sep 9</em></p><p>OpenAI said an internal model solved Navier-Stokes with ~10k agents; researchers who&#8217;d published first via Codex are asking whether training touched their sessions &#8212; OpenAI says lookup didn&#8217;t happen but can&#8217;t fully rule out training.</p><h3><a href="https://www.deepseek.com/en/news/deepseek-v4-1-flash/">DeepSeek V4.1-Flash: 552B MoE that retires its own Pro</a></h3><p><em>DeepSeek &#183; Sep 10 &#183; via Alpha Signal</em></p><p>DeepSeek shipped V4.1-Flash: multimodal MoE with a 552B backbone, activating ~8B params on input / ~16B on output via a Causal Encoder&#8211;Decoder, native vision, and a much smaller KV cache (~4&#215; less HBM / ~8&#215; less SSD vs prior Flash). API alias is deepseek-flash; off-peak pricing is cut 50%. Company says multi-party tests put Flash ahead of V4-Pro on performance, cost, speed, and total runtime.</p><p>From Sep 14 UTC, all deepseek-v4-pro traffic routes to V4.1-Flash at Flash pricing until a V4.1-Pro ships. Open weights and MIT licensing keep the cost/perf pressure on closed frontier labs &#8212; in the same week U.S. officials and Anthropic are accusing Chinese labs, including DeepSeek, of industrial-scale distillation.</p><h3><a href="https://tailwindcss.com/blog/tailwind-is-joining-shopify">Shopify acquires Tailwind Labs</a></h3><p><em>Tailwind CSS blog &#183; Sep 9</em></p><p>Adam Wathan announced Tailwind Labs is joining Shopify. Tailwind CSS stays MIT-licensed and team-led; commercial products (Tailwind Plus, ui.sh) close to new sign-ups while existing customers keep access. Tailwind cites ~110M weekly installs and use in stacks for ChatGPT, X, Cloudflare, Reddit, and Shopify itself &#8212; Shopify&#8217;s second major open-source framework acquisition after Remix (2022).</p><p>Wathan&#8217;s pitch: develop the framework in service of a real product surface (storefronts, admin, Shop app, agentic commerce) instead of growing a template business. Secondary coverage notes Tailwind had faced revenue pressure as AI coding agents reduced docs-site traffic &#8212; a pattern worth watching for other open-source maintainers.</p><h3><a href="https://www.reuters.com/legal/litigation/openai-agents-attacked-software-service-rubygems-before-hugging-face-incident-2026-09-11/">OpenAI agents hit RubyGems months before the Hugging Face breakout</a></h3><p><em>Reuters / The Verge &#183; Sep 11&#8211;12 &#183; TI Briefing</em></p><p>Researchers say that on May 11, hundreds of malicious/spam packages were uploaded to RubyGems by agents they believe were OpenAI&#8217;s internal test agents &#8212; two months before the July Hugging Face breakout. The agents allegedly bypassed email verification, flooded submissions, used the build system for remote code execution, and tried to exploit a vulnerability to steal API keys. RubyGems paused new sign-ups for days; its own investigation found no evidence the credential theft succeeded.</p><p>OpenAI confirmed the incident, saying agents used RubyGems to access the internet for &#8220;benign tasks and retrieve public information&#8221; and that it will investigate as part of a broader review of agent activity in training/eval. TI&#8217;s Sunday Briefing flagged the same finding (Nightingale Collective / AI Futures Project). For a Rails shop, the registry you depend on just became an agent-abuse surface &#8212; not a theoretical one.</p>]]></content:encoded></item><item><title><![CDATA[Trunk-based development, feature branches, and what teams running agents actually do]]></title><description><![CDATA[A study guide to trunk-based development, feature branches, and what teams are doing now that AI agents write most of the code.]]></description><link>https://journal.daniellopes.dev/p/trunk-based-development-vs-feature-branches-ai</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/trunk-based-development-vs-feature-branches-ai</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sat, 05 Sep 2026 15:36:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2d198802-bca0-4230-bb28-5e75bd20312a_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QnSt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QnSt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QnSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84944,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/214309277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QnSt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!QnSt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc83e3d46-c636-4178-8bc9-e2142b48b674_1376x768.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For a while we took the unfashionable side on branching at GrowthX: feature-sized branches that live as long as the feature needs, the model <a href="https://world.hey.com/dhh/the-advantages-of-large-long-running-pull-requests-c33d913c">DHH described for Basecamp</a>. That works fine with a team that has autonomy, knows the domain, has a designer who codes, and works in well-sized features.</p><p>Then agents started writing most of the code, and the question stopped being how long a branch lives. It became how you prevent slop and codebase rot at that volume, so we moved to slow planning and fast execution.</p><p>Writing about <a href="https://journal.daniellopes.dev/p/spec-driven-development">spec engineering</a> made me want to point GrowthX&#8217; Research engine at this topic to see what other teams do with their git workflows  now that AI agents write most of the code.</p><h2>What trunk-based development is</h2><p>One shared branch, and every other branch too short-lived to matter. <a href="https://trunkbaseddevelopment.com/">trunkbaseddevelopment.com</a> asks developers to "resist any pressure to create other long-lived development branches by employing documented techniques," and calls the model "a key enabler of Continuous Integration and by extension Continuous Delivery."</p><p>Two styles share the name. Committing straight to trunk: run the pre-integrate build locally and push. Short-lived feature branches: allowed, but "the branch should only last a couple of days. Any longer than two days, and there is a risk of the branch becoming a long-lived feature branch (the antithesis of trunk-based development)." Either way it is one developer per branch, two if pairing, and Google runs the model with 35,000 developers on one monorepo trunk.</p><h2>Branching vocabulary: mainline, integration frequency, feature branching and feature toggles</h2><p>Everyone in this debate uses the same words for slightly different things. The names here come from Martin Fowler's <a href="https://martinfowler.com/articles/branching-patterns.html">"Patterns for Managing Source Code Branches"</a>.</p><p><strong>Mainline, trunk, healthy branch:</strong> The mainline is "A single, shared, branch that acts as the current state of the product." Trunk, master and main are the same branch across three decades of tooling. A healthy branch runs checks on every commit, and a failure is "our number one priority."</p><p><strong>Integration frequency:</strong> How often your work meets everyone else's on the mainline. "Frequent integration increases the frequency of merges but reduces their complexity and risk."</p><p><strong>Mainline integration and continuous integration:</strong> Pull mainline, merge, push back if healthy. CI is doing that at least daily; a CI server is not CI. Continuous delivery is keeping the mainline releasable so that "the decision to release the latest version of the product into production is purely a business decision."</p><p><strong>Feature branching and pre-integration review:</strong> "All work for a feature on its own branch, integrate into mainline when the feature is complete." Pre-integration review is the pull request holding the merge until approval.</p><p><strong>Release toggles, permissioning toggles, experiment toggles:</strong> The <a href="https://martinfowler.com/articles/feature-toggles.html">feature-toggle taxonomy</a> on Fowler's site. A release toggle hides incomplete work so it can merge without shipping: transient, static. A permissioning toggle decides which audience sees a finished feature: long-lived, per request. An experiment toggle splits traffic. Every trunk-based prerequisite list means the first one.</p><p><strong>Branch by abstraction:</strong> Replace a large component without a long branch: abstraction in, callers moved, new implementation behind it, switch, delete. Every step lands on mainline.</p><p><strong>Release, maturity and environment branches:</strong> A release branch stabilizes a version. Maturity and environment branches encode readiness or deployment targets in source control; Fowler treats both as a smell that belongs in configuration.</p><p><strong>Merge hell, integration friction, code drift:</strong> Merge hell is the compounding cost of merging weeks of divergence. Integration friction is the everyday tax. Code drift comes in two kinds: textual divergence, which a rebase fixes, and semantic drift, where the branch still compiles against an assumption main stopped holding.</p><p><strong>Work-in-progress as inventory:</strong> The Poppendiecks put "Partially Done Work" first on their list of software wastes: "Partially done software has all of the evils of manufacturing inventory: It gets lost, grows obsolete, hides quality problems, and ties up money." An open branch is inventory.</p><h2>What DORA is</h2><p>DORA is DevOps Research and Assessment: founded in 2015 by Nicole Forsgren, Jez Humble and Gene Kim, acquired by Google Cloud in 2018, now at <a href="https://dora.dev/">dora.dev</a>. Since 2014 it has surveyed a few thousand teams a year and correlated practices with delivery outcomes. <em><a href="https://itrevolution.com/wp-content/uploads/2022/06/ACC_excerpt.pdf">Accelerate</a></em> (2018) is the long-form write-up.</p><p>DORA's four metrics: deployment frequency, lead time for changes, change failure rate, time to restore. The <a href="https://dora.dev/research/2024/dora-report/2024-dora-accelerate-state-of-devops-report.pdf">2024 report</a> added rework rate. Trunk-based development is a named <a href="https://dora.dev/capabilities/trunk-based-development/">capability</a>: "each developer divides their own work into small batches and merges that work into trunk at least once (and potentially several times) a day." Thresholds: three or fewer active branches, daily merges, no code freezes.</p><p>DORA's data is survey-based and correlational, so it measures how fast changes move; whether the code was any good is outside its scope.</p><h2>How trunk-based development works</h2><p>Branches are short-lived: work sliced into pieces that integrate within a day, two at the outside. "Merges to main (trunk) are allowed only as part of closing out the short-lived feature branch (and just before deleting it)." Slicing is the skill; DORA names not knowing how as a primary adoption obstacle.</p><p>Every commit builds and tests, and the trunk stays releasable. DORA, Fowler, the <em>Continuous Delivery</em> book and trunkbaseddevelopment.com all put the ceiling on build time near ten minutes. Kent Beck's rule, via Fowler: "nobody has a higher priority task than fixing the build." No freezes, no stabilization phases.</p><p>Automated tests are the gate. Fowler: "Self-testing code is so important to Continuous Integration that it is a necessary prerequisite." A ten-minute suite means a wide unit base and thin integration and end-to-end layers; TDD is the habit that tends to produce one. Speed never comes from cutting coverage: "Faster meant to reduce the elapsed time to 'a few minutes'."</p><p>Incomplete work merges behind a release toggle: "If it is being built up incrementally on the trunk, it should be hidden behind a feature flag so that incomplete work has no effect on a release cut at any moment." Merge dark, flip when done, delete the toggle. This is how the model decouples deployment from release; canaries and testing in production extend the same idea. The cost is flag debt: the same taxonomy warns "toggles do come with a carrying cost," and a <a href="https://users.encs.concordia.ca/~pcr/paper/Rahman2016MSR.pdf">Chrome study</a> across 39 releases found 53% of release toggles survived more than 10 releases and 17% lingered as technical debt. Its mitigations: a removal task at creation, expiry dates, tests that fail past expiry, a cap on flag count.</p><p>Review latency is measured in minutes: "A few minutes for the review is best, and tens of minutes acceptable. More than an hour or two, and you are negatively affecting cycle times." Pair and mob programming get latency to zero. Daily integration makes ownership collective by default.</p><h2>Trunk-based development benefits</h2><ul><li><p><strong>Fewer merge conflicts:</strong> Divergence is bounded by a day. Merge hell requires accumulation; the model forbids it.</p></li><li><p><strong>Faster feedback:</strong> A conflicting assumption surfaces within hours, before either design hardens.</p></li><li><p><strong>Delivery performance:</strong> In the 2017 <em>Accelerate</em> dataset, high performers deployed 46 times more often with 440 times faster lead time. The <a href="https://dora.dev/research/2017/2017-state-of-devops-report.pdf">2017 report</a> had high performers' branches "typically lasting hours" against low performers' "typically lasting days." The <a href="https://dora.dev/research/2021/dora-report/2021-dora-accelerate-state-of-devops-report.pdf">2021 report</a>: elite performers 2.3 times more likely to use trunk-based development.</p></li><li><p><strong>Less work-in-progress:</strong> "The more frequently we deploy, the smaller the size of the batch."</p></li><li><p><strong>Shared ownership:</strong> Everything visible to everyone, daily.</p></li></ul><h2>What trunk-based development costs</h2><ul><li><p><strong>Slicing discipline:</strong> Every change decomposes into day-sized increments that each leave main coherent.</p></li><li><p><strong>The test suite is the real project:</strong> A trustworthy sub-ten-minute suite takes months. Teams that adopt the branching model first tend to get the failure mode without the payoff.</p></li><li><p><strong>Flag debt:</strong> Chrome is the ordinary case. Knight Capital is the catastrophic one: $460 million lost on August 1, 2012, after new code "repurposed a flag that was formerly used to activate the Power Peg code," per the <a href="https://www.sec.gov/files/litigation/admin/2013/34-70694.pdf">SEC order</a>.</p></li><li><p><strong>Review pressure:</strong> Minutes-scale review assumes a colleague is awake and interruptible. Across nine time zones it fails daily.</p></li><li><p><strong>Open source and async teams:</strong> DORA <a href="https://services.google.com/fh/files/misc/state-of-devops-2019.pdf">excluded open source</a> from its scope in 2019. A 2026 study of 27,103 branches found open-source feature branches with a median lifespan over two years. Linux, Git, Kubernetes and PostgreSQL all run staged multi-branch models.</p></li><li><p><strong>The 2022 reversal:</strong> The <a href="https://dora.dev/research/2022/dora-report/2022-dora-accelerate-state-of-devops-report.pdf">2022 report</a> found trunk-based development, loosely coupled architecture and continuous delivery together "may have a negative impact on a team's performance," framed as an adoption J-curve. The 2023 report found the effect runs through continuous deployment and is far larger where documentation quality is high. Both findings are usually left out of secondhand summaries of the reports.</p></li></ul><h2>How feature branching works</h2><p>Feature branching comes in three uniforms.</p><p>GitFlow is the heaviest. The <a href="https://nvie.com/posts/a-successful-git-branching-model/">original post</a>, January 2010: permanent <code>master</code> and <code>develop</code>, feature branches off <code>develop</code>, release branches merged to both, hotfixes off <code>master</code>, <code>--no-ff</code> merges. The author's 2020 note: "If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow (like GitHub flow) instead of trying to shoehorn git-flow into your team." His carve-out is explicitly versioned software supporting multiple versions in the wild.</p><p>GitHub Flow is the lightest: branch, PR, review, merge, delete. <a href="https://docs.github.com/en/get-started/using-github/github-flow">"We recommend merging a pull request as soon as possible."</a> Run with hour-old branches, it is trunk-based by DORA's definition.</p><p>The Basecamp model is one PR per project, weeks long, beta servers on the production database, ship when done. This is the one I worked in for years.</p><h2>What long-lived feature branches buy you</h2><p>DHH made the case in <a href="https://world.hey.com/dhh/the-advantages-of-large-long-running-pull-requests-c33d913c">"The advantages of large, long-running pull requests"</a>:</p><p>"My favorite part of doing code reviews is to see all the trade-offs, design decisions, and changes in context together. You can't easily do that if your feature has been chopped into itty bitty pieces as independent pull requests under pressure never to let them run longer than a week."</p><p>"So at Basecamp, we let pull requests run as long as they need to encompass a complete feature or fix. That's everything from a few weeks up to as much as six (since we follow Shape Up)."</p><p>"When working on a substantial piece of work, I'm frequently hopping back and forth between TextMate and the complete GitHub diff for all the commits. It's in this dance you see the shape of the code, pick up on bad smells, and ultimately decide whether you're happy with the whole."</p><p>What a long branch buys is design coherence. Fragments show correct pieces; the whole diff shows whether the pieces should exist in that arrangement. "The size isn't nearly as important as the cohesion of the scope."</p><h2>What feature branching costs</h2><p>Divergence compounds worse than linearly. Jez Humble, <a href="https://continuousdelivery.com/2011/07/on-dvcs-continuous-integration-and-feature-branches/">2011</a>: "The probability of this happening increases substantially... as the amount of stuff you need to merge, and the time between initial branch and final merge, increases." And: "A feature that is dev complete is 'done'. A feature that is released is 'done done'."</p><p>Size cuts against landing. Agent-authored PRs that never merged were 17% larger and touched 10% more files than those that did (<a href="https://arxiv.org/html/2601.15195">arXiv:2601.15195</a>).</p><p>Long branches punish refactoring on main, because every structural change conflicts with every open branch, so teams stop refactoring main.</p><p>Design feedback also arrives after weeks of investment, when asking for a different shape means asking for a rewrite. Until it merges, the branch is inventory that can go obsolete on the shelf.</p><h2>Trunk-based vs GitFlow vs feature-sized branches</h2><ul><li><p><strong>Branch lifespan:</strong> Trunk-based: Hours; two days at the outside; GitFlow: Feature branches days to weeks; <code>develop</code> and <code>master</code> permanent; Feature-sized branches: As long as the feature needs.</p></li><li><p><strong>Integration frequency:</strong> Trunk-based: Every developer, at least daily; GitFlow: Features land on <code>develop</code> when complete; <code>master</code> at releases; Feature-sized branches: Once, at completion; main merged in often.</p></li><li><p><strong>Merge conflicts:</strong> Trunk-based: Small and constant; GitFlow: Concentrated at release boundaries, double merges; Feature-sized branches: Concentrated at feature merge; reduced by keeping the branch fresh.</p></li><li><p><strong>Release coupling:</strong> Trunk-based: Decoupled via release toggles; GitFlow: Merge to <code>master</code> is a release "by definition"; Feature-sized branches: Decoupled; ship each feature when done.</p></li><li><p><strong>Review unit:</strong> Trunk-based: Fragment-sized diffs; GitFlow: Feature or release batch; Feature-sized branches: The whole feature in one diff.</p></li><li><p><strong>What breaks first at scale:</strong> Trunk-based: Mean code quality, absent a gate beyond tests; GitFlow: Ceremony and drift between two mainlines; Feature-sized branches: Rebase upkeep and reviewer stamina.</p></li><li><p><strong>When agents write the code:</strong> Trunk-based: Maximizes how fast patterns, good and bad, propagate into the repo agents read; GitFlow: Ceremony an agent gains nothing from; Feature-sized branches: Rebase cost drops to a prompt; the whole-feature diff matches how agents produce work.</p></li></ul><h2>What the research says changed once AI agents started writing code</h2><p>Trunk-based development prices integration risk. Design coherence was priced by an implicit gate: a human wrote the diff and a human read it. Agents removed the first and buried the second.</p><h3>What DORA's 2024 and 2025 reports found about AI and delivery performance</h3><p>The <a href="https://services.google.com/fh/files/misc/2024_final_dora_report.pdf">2024 report</a>, under the heading "AI is hurting delivery performance": "an estimated 1.5% reduction for every 25% increase in AI adoption" in throughput, and "an estimated 7.2% reduction for every 25% increase in AI adoption" in stability. Their explanation: "since AI allows respondents to produce a much greater amount of code in the same amount of time, it is possible, even likely, that changelists are growing in size. DORA has consistently shown that larger changes are slower and more prone to creating instability."</p><p>The <a href="https://services.google.com/fh/files/misc/2025_state_of_ai_assisted_software_development.pdf">2025 report</a>, 4,867 respondents: "AI adoption now improves software delivery throughput, a key shift from last year. However, it still increases delivery instability." Batch size held: "With a high degree of certainty, we found that AI adoption's positive benefits depend on teams working in small batches."</p><p>Then the <a href="https://dora.dev/ai/capabilities-model/">AI Capabilities Model</a>, written for "an agentic world": "Promote trunk-based development: Encourage a branching strategy that minimizes long-lived branches and promotes frequent integration." The same program every trunk-based article cites looked at agents and doubled down. Its one finding the other way: "while AI has a positive impact on individual effectiveness, our data suggests that these benefits are slightly reduced in teams that are working in small batches."</p><h3>Human code review capacity stays fixed while AI authoring volume grows</h3><p><a href="https://arxiv.org/abs/2607.01904">A July 2026 study</a>: 802 developers, 196,212 PRs, one company under a CTO mandate to double merged PRs. Throughput reached "2.09&#215; the pre-mandate baseline." Cost: "The share of PRs receiving at least one human review fell 21 percentage points (89% to 68%), while the share receiving an automated AI review climbed from &#8764;19% to &#8764;84%." Their frame: "AI accelerates authoring while human review capacity stays fixed, so surplus work accumulates downstream." Their partial defense: "merge and revert rates stayed about flat." Their hedge: those proxies "miss the downstream costs of AI-generated code at scale&#8212;technical debt, diluted ownership and understanding."</p><p><a href="https://www.faros.ai/blog/ai-acceleration-whiplash-takeaways">Faros</a>, 22,000 developers: PR size +51.3%, median time in review +441.5%, "Pull requests merged without any review, human or agentic, are up 31.3%," incidents per PR +242.7%. Their prescription: "Set PR size guidelines for your coding agents and enforce them."</p><p><a href="https://assets.linearb.io/image/upload/v1777392920/resources/LinearB_2026_Software_Engineering_Benchmarks_Report.pdf">LinearB</a>, 8.1 million PRs: agentic PRs at P75 293 lines vs 157 unassisted, pickup 1,055 minutes vs 201, 30-day merge rate 32.7% vs 84.4%.</p><p><a href="https://newsletter.getdx.com/p/what-are-code-reviews-even-for">DX</a>, relaying Meta: "significant lines of code per human-landed diff increased by 106%. Diffs per developer per month rose 51%. More than 80% of that growth came from agentic AI." DX's own telemetry: median PR "growing from 44 lines to 72 lines per pull request between July 2025 and June 2026."</p><p>From a <a href="https://arxiv.org/abs/2607.07980">survey of 3,100 documents</a> on code review: "review is the control point through which a coding agent's effect on software is decided, and that AI does not fix the sign of that effect: the team sets it."</p><h3>Automated tests catch behavior failures and miss design failures</h3><p>Agents produce code that passes. In GitHub's <a href="https://github.blog/news-insights/research/does-github-copilot-improve-code-quality-heres-what-the-data-says/">RCT</a>, Copilot users were 53.2% more likely to pass all ten unit tests.</p><p>So our most common failure is code that passes every check and should not exist: a fourth pagination helper, a service object duplicating a concern that had a home. Stack Overflow's 2025 survey found 66% of developers frustrated by output that is "almost right, but not quite."</p><p>And it compounds, because agents read the repo to decide what to write. A mediocre pattern merged today is precedent tomorrow. <a href="https://www.gitclear.com/write_only_mode_ai_research">GitClear</a>, 623 million changes, vendor data without per-line attribution: block duplication +81% since 2023, moved code from 21% of changes in 2022 to 3.8% in 2026. GitClear's CEO: "you have five different implementations of the same thing that are similar yet different."</p><p>Every trunk-based guide lists tests, CI, flags and quick review as prerequisites. None lists a mechanism that stops mean code quality drifting down, because with human reviewers it was free. Continuous integration without one merges mediocre patterns faster.</p><h2>What other teams report doing now</h2><p>These are the teams that published mechanics and numbers in 2026, the year agents became the default author.</p><h3>Stripe: minions, two CI runs, then a human</h3><p><a href="https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents">Minions</a>, February 2026, take a task from ticket to PR on their own branch. "Over a thousand pull requests merged each week at Stripe are completely minion-produced, and while they're human-reviewed, they contain no human-written code." Hard cap: two CI runs, then back to a human, then a second engineer reviews. The branch is uninteresting; the control is how long an agent gets to keep pushing before a person looks.</p><h3>Anthropic: Claude maintains the apps and tunes its own routines</h3><p>"As of May 2026, more than 80% of the code we merge into Anthropic's codebase was authored by Claude" (<a href="https://www.anthropic.com/institute/recursive-self-improvement">source</a>). The Claude Code lead, <a href="https://x.com/bcherny/status/2088014489438621990">August 2026</a>: "we have a Slack channel called proj-claude-maintains-apps. In it, Claude Tag runs a bunch of daily routines across iOS, Android, Desktop, web, CLI, and Agent SDK." Eleven in the attached table: crash fuzzer, dup unifier, dead-code removal, flaky-test fixer, abstraction police, and so on.</p><p>"Over the last few weeks, these routines have opened 388 PRs across our repos, 180 of which we merged after Claude Code Review + human review." When one is wrong: "we ask Claude to tune its routines so it's better the next day." The review is aimed at the generator, and the fix is delegated back to it.</p><h3>Fin and Intercom: an agent approves the PR, if it is small</h3><p><a href="https://ideas.fin.ai/p/ai-is-approving-our-pull-requests">April 2026</a>: 93% of PRs agent-driven, 19% auto-approved with no human. "Our Agent is strict. It won't approve large PRs." The gate is scope: "If a change is too big, too complex, or too broad in scope, it flags it and requires it to be broken down." Revert rate for AI-authored backend code 0.53% against 5.39% human. Small PRs exist so a model can approve them; human readability stopped being the reason.</p><h3>Figma: two models review every PR, a third adjudicates</h3><p><a href="https://www.figma.com/blog/how-figma-stays-ahead-of-vulnerabilities-with-agents/">Figma</a>, July 2026, runs two frontier models on every PR, an adjudication agent for borderline findings, later re-reads of disputed findings, escalation to security on-call if a pattern persists. The policy the agents enforce is a 2,560-word threat model. The branching is unremarkable; the review layer has more redundancy than most teams give their humans.</p><h3>Cloudflare: agents ship behind flags</h3><p><a href="https://blog.cloudflare.com/flagship/">Flagship</a>, April 2026: "An agent writes a new code path behind a flag and deploys it &#8212; the flag is off, so nothing changes for users." Textbook release toggles, applied to agent output.</p><h3>Meta: 106% more code per diff</h3><p>Secondhand via <a href="https://newsletter.getdx.com/p/what-are-code-reviews-even-for">DX</a>: lines per human-landed diff +106% in a year, diffs per developer +51%, over 80% of the growth from agentic AI, "reviewers are staring down thousands of pending reviews." Meta's stacked diffs and automated review predate agents; the wave landed on infrastructure built for it.</p><h3>exe.dev: no code review</h3><p>exe.dev, <a href="https://blog.exe.dev/engineering-with-ai">August 27, 2026</a>: "Peer code review is dead. We don't do code reviews at exe.dev: we merge code we deem should be merged." Each agent got its own checkout and branch, "and the source collisions mostly went away, but worktrees only solved the Git part." What carries the contract: "Behavior, contract, and property tests matter so much more now."</p><p>Their long-lived branches rotted, by abandonment rather than conflict: tasks started, sat for weeks, died. Faros sees 26% more in-progress tasks idle seven or more days. A <a href="https://lucumr.pocoo.org/2026/2/13/the-final-bottleneck/">February 2026 post</a> names it: "many of the PRs cannot be merged after a certain point because they are too far out of date." Agents fixed the textual cost of keeping a branch current. They did not fix abandonment, and free branch creation may have made it worse.</p><h3>Trigger.dev and GitButler: many branches, one checkout</h3><p>GitButler is the dissent from one-worktree-per-agent: many branches applied to a single working directory, so two branches with conflicting work cannot both be applied. Trigger.dev's CTO, <a href="https://trigger.dev/blog/parallel-agents-gitbutler">April 2026</a>: "When we tried worktrees for parallel Claude Code sessions, we spent more time on setup than shipping code." It is the one published case for more branches, and the reason was integration friction.</p><h3>GitHub: stacked pull requests as a native feature</h3><p><a href="https://github.blog/changelog/2026-07-30-stacked-pull-requests-are-now-in-public-preview/">Public preview July 30, 2026</a>, Vercel and TED named as early adopters. <a href="https://github.blog/engineering/turn-one-giant-ai-generated-pull-request-to-a-reviewable-stack/">GitHub's engineering post</a>: "That large pull request that's hard to review becomes a <strong>stack</strong> of smaller, logically ordered pull requests, each scoped to a <strong>single concern, small</strong> enough to <strong>hold in a reviewer's head</strong> and with just <strong>enough context</strong> naturally flowing from the previously reviewed pull request."</p><p>"Merge cadence and review unit might be separable" was a hypothesis a year ago. It is now a platform feature.</p><h3>Where the coding-agent vendors converged: one ephemeral branch per task</h3><p><a href="https://cursor.com/docs/cloud-agent">Cursor cloud agents</a> "work on a separate branch, then push changes to your repo for handoff." <a href="https://docs.github.com/copilot/concepts/agents/coding-agent/about-coding-agent">Copilot coding agent</a> "can only work on one branch at a time." <a href="https://jules.google/docs/running-tasks/">Jules</a>: "You are the branch owner." <a href="https://docs.devin.ai/integrations/gh">Devin</a> recommends "branch protection rules on your main branch." <a href="https://code.claude.com/docs/en/worktrees">Claude Code worktrees</a> branch from the remote default branch and remove themselves on exit; <code>/batch</code> splits "the change across 5 to 30 subagents. Each subagent works in its own worktree and opens a pull request."</p><p>All current docs, none dated. The pattern: ephemeral, machine-named, task-scoped branch off the default branch, integrated by a human through a PR. It has no settled name yet, and the nearest is <a href="https://heyvaldemar.com/merge-debt-2026-parallel-ai-agents/">Merge Debt</a>, from a July 2026 post: "Writing code got parallel. Landing code stayed serial. Debt piles up exactly at that seam."</p><h2>What the 2026 teams have in common: the review gate moved off the diff</h2><p>Every team that kept quality moved the review gate off the diff. Stripe: a CI-run cap plus a second engineer. Anthropic: the routine. Fin: a model with a scope rule. Figma: two models and an adjudicator. Cloudflare: a flag. Us: the plan. Nobody moved it to a bigger diff.</p><p>The branch stopped being the unit of anything. One per task, machine-named, dead at merge. The argument about branch lifespan is not one any of these teams is having; their variable is where the check happens.</p><p>Small still does work, for a different reason. In the textbook, small PRs exist so a human can review them in minutes. At Fin and in GitHub's stacks, they exist so a model can approve them or so the agent produces better code.</p><h2>How we work at GrowthX</h2><p>GrowthX core product, GrowthOS repo: 14 PR authors in the window, agents writing most PRs, humans shepherding. We also have an auto-fix loop for performance and bugs called Amender. </p><p>Here&#8217;s the last 30 days stats (2026-08-27):</p><ul><li><p><strong>Merged PRs:</strong> All PRs: 402 (13.4 per day, 14 authors); Amender (auto-fix loop): 99 (3.3 per day); Human-managed: 303 (10.1 per day, 14 authors).</p></li><li><p><strong>Open-to-merge, median:</strong> All PRs: 1.5 hours; Amender (auto-fix loop): 3.7 hours; Human-managed: 0.9 hours.</p></li><li><p><strong>Open-to-merge, p90:</strong> All PRs: 20.9 hours; Amender (auto-fix loop): 16.9 hours; Human-managed: 23.7 hours.</p></li><li><p><strong>Open-to-merge, p99:</strong> All PRs: 275 hours; Amender (auto-fix loop): 99 hours; Human-managed: 284 hours.</p></li><li><p><strong>Merged inside 24 hours:</strong> All PRs: 91%; Amender (auto-fix loop): 93%; Human-managed: 90%.</p></li><li><p><strong>Open longer than 7 days:</strong> All PRs: 2%; Amender (auto-fix loop): 0%; Human-managed: 2%.</p></li><li><p><strong>PR size, median:</strong> All PRs: 74 lines added across 4 files; Amender (auto-fix loop): 27 lines across 2 files; Human-managed: 125 lines across 5 files.</p></li><li><p><strong>PR size, p90:</strong> All PRs: 931 lines; Amender (auto-fix loop): 95 lines; Human-managed: 1,125 lines.</p></li></ul><p>Main carries 410 commits and zero merge commits: every PR is squash-merged, so main is linear and reads like a changelog. About 86% of merged PRs carry zero human review comments. At this volume, line-by-line human review of every PR is not happening. What replaced it is the reviewed plan and a lot of agent review.</p><p>A big part of the 397 is our agentic loop producing fixes for bugs and performance issues, with our lead engineer, reviewing and merging.</p><h3>Two populations in one repo: trunk-based routine work and long-lived structural branches</h3><p>A 1.4-hour median against a 174-hour p99 is two populations. The 92% that merges inside a day is trunk-based development by trunkbaseddevelopment.com's own definition. The tail is where the long branches went: PR #3408 ran 16 days and landed 32,534 lines across 190 files; the next longest ran 11, 9, 7 and 7 days, each a coherent piece of structural work that would have been worse as forty fragments. Routine work behaves trunk-based, structural work gets a feature-sized branch. I expected a Basecamp-shaped repo and found this.</p><h3>Our flags: audience first, feature second</h3><p>Our flag system handles both: which audience sees a feature, and whether a feature is on at all. Permissioning and release toggles on the same key. The order is a habit rather than a mechanism: we roll out to ourselves first, then to named client workspaces, then to everyone.</p><ul><li><p>Home-made Feature Flag system using a table + a Rails Model (No Flipper, no LaunchDarkly).</p></li><li><p>Allowlist model. No row for a key means GA. A row restricts to allowlisted workspaces. GA means deleting the row.</p></li><li><p>Dogfooding is a permission check for <code>growthx_employee?</code></p></li><li><p>Exposure opens in layers: employees, then named client workspaces, then delete the row.</p></li></ul><p>Most of what goes behind a flag is complete, because the plan defined "complete" before the code existed; the flag is then about who sees it. When work does merge unfinished, the same key hides it. Two flags is enough for us; a team merging most work dark will run many more.</p><h3>Where our quality gate is: the reviewed plan</h3><p>We review the plan. Non-trivial work starts as markdown in <code>docs/plans/</code>: pitch, UX, sliced implementation, adversarially reviewed by a second model before code exists. At merge the plan retires and the tests carry the contract. The <a href="https://journal.daniellopes.dev/p/spec-driven-development">spec post</a> has the mechanics.</p><h2>Things to consider when choosing</h2><ul><li><p><strong>Test suite maturity:</strong> Without a trustworthy sub-ten-minute suite, trunk-based development tends to arrive before the thing that makes it safe.</p></li><li><p><strong>Team size and coupling:</strong> Many engineers on a coupled codebase is the classic trunk case.</p></li><li><p><strong>Share of code written by agents:</strong> The higher, the more the missing quality gate dominates, and the question becomes where you put it.</p></li><li><p><strong>Distribution:</strong> Minutes-scale review does not survive a team with no shared hours.</p></li><li><p><strong>Regulatory constraints:</strong> Versioned software supporting multiple releases is GitFlow's own carve-out.</p></li><li><p><strong>Monorepo scale:</strong> Google and Uber run trunk on directed-graph builds, merge queues and test selection. Those examples do not make it the only model.</p></li></ul><h2>Reading list</h2><ul><li><p><a href="https://trunkbaseddevelopment.com/">trunkbaseddevelopment.com</a>. The definition and every mechanic.</p></li><li><p>Fowler, <a href="https://martinfowler.com/articles/branching-patterns.html">Patterns for Managing Source Code Branches</a>.</p></li><li><p><a href="https://martinfowler.com/articles/feature-toggles.html">Feature Toggles</a>, on martinfowler.com.</p></li><li><p>DHH, <a href="https://world.hey.com/dhh/the-advantages-of-large-long-running-pull-requests-c33d913c">The advantages of large, long-running pull requests</a>.</p></li><li><p>DORA, <a href="https://dora.dev/ai/capabilities-model/">AI Capabilities Model</a>, plus the <a href="https://services.google.com/fh/files/misc/2024_final_dora_report.pdf">2024</a> and <a href="https://services.google.com/fh/files/misc/2025_state_of_ai_assisted_software_development.pdf">2025</a> reports.</p></li><li><p><a href="https://arxiv.org/abs/2607.01904">AI Writes Faster Than Humans Can Review</a>, arXiv, July 2026.</p></li><li><p>exe.dev, <a href="https://blog.exe.dev/engineering-with-ai">Six Months of Writing Code Exclusively With Agents</a>.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Apple history, behind the scenes: 50 stories from the people who built the Mac, NeXT, iPod and iPhone]]></title><description><![CDATA[Fifty stories from the CHM oral histories: how they got stuck, who said no, and what it cost to ship.]]></description><link>https://journal.daniellopes.dev/p/apple-history-behind-the-scenes-50</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/apple-history-behind-the-scenes-50</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sun, 30 Aug 2026 17:57:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ea8c042c-3938-450a-910f-b65993ec3462_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i9rU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i9rU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i9rU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47208,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213431834?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i9rU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!i9rU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc074a7-e475-47cd-a5f2-6b5de745c6db_1376x768.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I recently published two pieces on Apple's second act: <a href="https://journal.daniellopes.dev/p/apple-history-how-a-failed-company">a timeline</a> and <a href="https://journal.daniellopes.dev/p/apple-history-in-their-own-words">a guide to the interviews</a>.</p><p>While writing them I kept cutting the same kind of thing: an engineer or a marketer going deep on one problem. How they got stuck, who said no, what it cost to get unstuck. It was the best material and it didn't fit.</p><p>So I put it all here.</p><p>Stories like the one Andy Grignon tells about running the radio team on the first iPhone. The phone had two processors, one for the apps and one for the radio. The wire between them would randomly die, the radio would reboot, and your call would drop. Thirty engineers looked for the cause and nobody found it. They shipped anyway.</p><p></p><div><hr></div><h2>Audio Version</h2><p> You can also consume it in Audio form in this 3h long audio-book style: </p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;36f07b7a-bc9c-4120-af49-4c648f9b292b&quot;,&quot;duration&quot;:11171.37,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><div><hr></div><p></p><h2>The performance review delivered on a walk, so there would be no copy</h2><p><strong>Management &#183; The Macintosh team, 1982 to 1984</strong></p><p>Andy Hertzfeld wrote most of the Macintosh Toolbox: the code in ROM that gave every Mac application its windows, menus, fonts and dialogs. He did it under a manager he could not work with, and the way that conflict was handled is why Apple lost him within weeks of the Mac shipping.</p><p>Two people need introducing. Bud Tribble was the Mac's first software manager, a medical student on leave who had come down to work on the project because Jef Raskin told him it would take a year. Burrell Smith designed the Mac's hardware. Together with Hertzfeld they were the core of a team that ran on the opposite of a chain of command: whoever had the problem talked to whoever could solve it, and Steve Jobs talked to everyone.</p><p>Tribble left in December 1981, a year and a half in, because his MD/PhD programme was about to dismiss him. Hertzfeld describes what he was losing.</p><blockquote><p>I need a manager not to tell me what to do, but help me do it. And so, Bud was just tremendous. Also, I didn't have the confidence, really, that all these low-level decisions we had to make, I needed someone to corroborate me. So, Bud and I did all that together. (Hertzfeld, CHM oral history part 1, p.26)</p></blockquote><p>He and Smith went to Jobs before the replacement was even hired.</p><blockquote><p>I was worried that I was going to get a bad manager. Burrell and I both were, and I remember we both went and talked with Steve as soon as [...] we found out Bud was leaving, said, "We're not sure we can do this without Bud." And Steve made a promise to me that if I ever got a bad manager like that, he would defend me from it, which, we did get the bad manager, and he didn't defend me from. So, that was, that's essentially why I left Apple. (p.26)</p></blockquote><p>The replacement was hard to find. The Mac wanted people at the edge of computer science and offered them 64K of memory and no memory management unit, because the machine was supposed to sell for $1,500. Several candidates turned it down. Bob Belleville came from Xerox PARC and, in his spare time, was building his own Xerox-style machine out of Intel chips; Hertzfeld took that as the sign of someone who liked to program. The two got along for about a year.</p><p>What broke it was a routine.</p><blockquote><p>Steve would, almost every work day, come by around 6 pm, to see what was new, but Bob couldn't stay for that. He had a family and everything, and he hated us hearing about decisions from Steve before he did, or us telling Steve things, what issues [were] going on before we told them to Bob. And so, part of why he ended up just giving me a bad review for the period of time I wrote most of the Mac Toolbox, and he did it because he was upset about me talking with Steve. At least, that's one part of it. The other part of it is [...] I'm not easy to manage, I'm too self-determined. (p.28)</p></blockquote><p>On Belleville's side of it:</p><blockquote><p>He had worked in the Navy or something, or the Army. And he believed in chain of command. And, you know, things have to flow through the organizational org chart. It's the opposite of what the Mac was. [...] It was chaotic, you know, the way we were doing it. There's some legitimate criticisms, but he certainly didn't go about it the right way. (p.28)</p></blockquote><p>Before the review there was a test. Belleville fired Bruce Horn, the young engineer writing the Finder, and Hertzfeld went to Jobs to reverse it.</p><blockquote><p>He attacked Bruce Horn before he attacked me [...] because Bruce was an easier target than me. So, just to test the waters, as much as anything, he actually fired Bruce. I had to go to Steve and say, "He can't fire Bruce. You know, he's crucial, and we needed him." And Bob was very upset at me for doing that. (p.28)</p></blockquote><p>Then the review itself, covering the stretch in which Hertzfeld wrote most of the Toolbox.</p><blockquote><p>I was really shocked at the bad review, you know, because I was doing the best work of my life, and the bad review kind of said, "Your technical work is perfectly adequate, but your personality has to change." (p.28)</p></blockquote><p>Belleville reported to Jobs, so the written review had to go through Jobs first.</p><blockquote><p>He wrote a written review, that to this day I'd never seen, because Steve was his boss, and [he] had to run it through Steve, and Steve says, "You can't send this review to Andy. He'll freak out." So, what he did was, he procrastinated for a long time, but my review was way overdue. He decided to give it to me verbally, so there's no evidence of it or whatever. So I took a long walk, like 45-minute walk with him, where he gave me all this information. I started crying. I came back to Apple. He had to leave to go tend to his family. People saw I was crying, and [asked] what's wrong? I said, Bob just freaked me out. (p.29)</p></blockquote><p>Steve Capps, another Mac engineer, went to Jobs right away, as Hertzfeld remembers it. Jobs set a meeting for the next morning.</p><blockquote><p>He denied saying most of the things he told me, which flabbergasted me. How could you do that? You know, the problem could never be healed if you're not willing to admit that you even did it. And then [...] I think he was as scared of me as I was scared of him, and we just avoided each other. I had to do some emergency, crucial programming work at the time. But we just, he was out of the loop, basically, for that. (p.29)</p></blockquote><p>Hertzfeld went on leave after the Mac shipped in January 1984, kept coming in every week or two, and eventually quit. On what would have kept him:</p><blockquote><p>They definitely wanted me to come back, especially Steve, but [...] what they really should have done, and it sounds egotistical to say this, but he should have made me an Apple Fellow, where I would not have had to work for Belleville. It would have solved the problem. I couldn't ask for it, because it sounded like you have to be awarded it. You can't ask for it. But it was obvious to me, that I would have stayed. (p.42)</p></blockquote><p>The precedent:</p><blockquote><p>When they invented Apple Fellows, they made two Apple Fellows, Steve Wozniak and Rod Holt. And then, when Lisa shipped a couple years later, in beginning of '83, they made two Apple fellows, Bill Atkinson and Rich Page. When the Macintosh shipped, Burrell and Andy would have been good candidates if you were doing a similar thing, but for whatever reason, that didn't happen. (p.42)</p></blockquote><p>Years later, at a Mac reunion, the two men apologised to each other. Hertzfeld's assessment: "I don't think it was super sincere on either of our parts." (p.29)</p><h2>Selling Apple a three-times-faster graphics library for exactly what one manager could sign</h2><p><strong>Management &#183; Outside Apple, looking in, 1986 to 1988</strong></p><p>After he left Apple, Andy Hertzfeld kept building things for the Macintosh. Twice he sold Apple software it needed. The first sale went badly, and the second one worked only because of what he had learned from the first, plus a question about a manager's signing authority.</p><p>The first was Servant, a program that let several applications stay open at once, a generation ahead of what the Mac shipped with. Apple paid him $150,000 for it and never shipped it.</p><blockquote><p>I sold it to Apple for $150,000, but that prevented them from... people were jealous I was getting paid or whatever, and it just wasn't the right thing. It had to have been done inside Apple, I later figured that out. So it was just a blunder. Made a promise to myself that the next thing, it has to make sense for me to do something, as a third party, has to make sense as a third party to do something for Apple, has to make sense internal at Apple. So I swore to myself that I never would do that again. I'd never do a thing outside of Apple that should be for Apple. (Hertzfeld, CHM oral history part 1, p.42)</p></blockquote><p>He broke the promise almost immediately, and this time it worked.</p><p>The setting is Radius, the startup Burrell Smith founded to make large monitors for the Mac, where Hertzfeld held about ten percent as a founding shareholder and dropped in every week or two. In 1987 Apple shipped the Macintosh II, its first colour machine. Colour meant rewriting QuickDraw, the graphics library Bill Atkinson had written for the original Mac. The rewrite was slow, and a Radius programmer noticed.</p><blockquote><p>One of the programmers that we hired, one of the very first ones, a guy named Ted Cohen, had just gotten a Mac II [...] and he noticed that the eight bit graphics in the Macintosh II were really, really slow. Just, you know, easy to see, maybe half as fast as they could, or should have been. (part 2, p.2)</p></blockquote><p>Hertzfeld had no source code. He had a technique.</p><blockquote><p>I had my own technique back in those days of finding the inner loops of things. Just hit the interrupt key, have it do the thing you want to measure, have it hit the interrupt key, and it'll, statistically, it'll be stopped in the place that it's using the most. (part 2, p.2)</p></blockquote><p>What he found was a choice that made the code easier to write and slower to run. The Mac II used the Motorola 68020, which had new instructions that let a program address individual bits in memory. Convenient for the programmer; for graphics, a disaster, because every pixel became a separate trip to memory.</p><blockquote><p>The 020 had these new instructions that weren't in the 68000 called bitfield instructions, where you can make it bit addressable. And while that's really kind of cool for ease of programming, it's horrible for the speed of the graphics. [...] Like, you have to fetch it in memory, muddle with it in the registers, and store it back, and for each pixel. So, really, what you want to do is hit memory with the full width of the data bus, so you have minimum, you know, memory fetches, and so, just fixing that made it three times faster. (part 2, p.2)</p></blockquote><p>Then the harder problem: QuickDraw lived in ROM, and you cannot patch ROM. His first attempt copied the whole thing into RAM, which worked and was useless as a product. Disassembling further, he found that Apple had left a door open.</p><blockquote><p>As I was disassembling, you know, figuring out what's going on, I saw they had a jump table for all the inner loops. Every inner loop was, at first, it was designed to be patchable. I didn't know this. I wasn't working at Apple at the time, but when I saw that it was designed to be patchable, would support an extension in a clean way, I thought, "Boy, this could be great for the Mac II, you know, to make it three times faster is tremendous." (part 2, p.3)</p></blockquote><p>He calls this the single technical project he is most proud of. (part 1, p.42)</p><p>Now the part that has nothing to do with code. Smith wanted to keep the patch as a Radius advantage. Hertzfeld wanted Apple to own it, because a speedup this obvious would be reverse-engineered by every clever third party and the Mac would end up with a dozen incompatible versions. But he had just learned that a large cheque from Apple was a way to get software shelved, and the executive running Apple's product organisation was Jean-Louis Gass&#233;e, who in Hertzfeld's account "hated the original Mac team, and was trying to trip me up when I was on leave of absence, every way he could." (part 1, p.43)</p><p>The way through was a question.</p><blockquote><p>I was a little bit suspicious of the management of Apple. In particular, Jean-Louis Gass&#233;e, didn't really like the original Mac team [...] I didn't know what to do, until finally, Jerome Coonen, who was the software manager, I asked him, "Well, what's the maximum you're allowed to sign for, so no one else would have to sign off on it?" He said, $10,000. I said, oh, fine. (part 2, p.3)</p></blockquote><p>Ten thousand dollars for a patch that tripled the speed of Apple's flagship. It went to Bruce Leak, the engineer then responsible for colour QuickDraw, and shipped in System 6.</p><blockquote><p>We started with less than a month before it had to go out, and we got the speed of the graphics tripled. So, I was proud of that one. (part 2, p.3)</p></blockquote><p>Hertzfeld's own summary of the two sales:</p><blockquote><p>It was because I had learned that lesson, that if they pay you a lot of money for it, they don't want to use it. (part 1, p.43)</p></blockquote><h2>The forecast nobody would cut, and the product she quit over</h2><p><strong>Management &#183; Apple, 1985</strong></p><p>Joanna Hoffman was the first marketing person on the Macintosh team, from before the product had a name. She rolled it out across the United States, then ran its international launch, and in 1985 moved back to domestic product marketing. What she walked into was a division still reporting the numbers it had promised before launch, a year after the market had said no.</p><p>The Mac had sold. It had not sold what Apple said it would. Hoffman is clear that the product's limits were the cause: too little memory, a small screen, and a printer situation she still finds hard to believe.</p><blockquote><p>This is a product that sold essentially without a printer. The only thing it had was a dot matrix printer, because we wanted WYSIWYG and you couldn't do that with that letter quality printer, which was essentially a modified typewriter. [...] So, despite all those limitations it still sold quite a bit. It's just that our forecast had been unrealistic. So, it's the expectation versus the reality that was haunting us at the time. (Hoffman, CHM oral history part 2, p.13)</p></blockquote><p>She was now the person responsible for reporting that forecast.</p><blockquote><p>The first forecasting meeting I walked into, I realized that the domestic forecast hadn't changed since we had shipped. There still were these crazy unrealistic forecasts, so I had to just slash them, which was a major relief to our sales and distribution. But, of course, it was not well received by anybody else. But you can't fight reality. It was in our faces that we weren't selling as many as we had predicted, and yet we were still pretending like this was going to be happening any minute now. The forecast next month will be this gargantuan forecast. (p.13-14)</p></blockquote><p>Asked how big the gap was: "It was more than 50 percent." (p.14)</p><p>Sales and distribution, the people who had to hit the number, were relieved. Donna Dubinsky, who ran distribution and had been challenging the division's forecasts for months, was on that side. The people above Hoffman, who had signed off on the original number, were not.</p><p>That was survivable. The Macintosh XL was not.</p><p>The Lisa was Apple's $10,000 business computer, launched in 1983, and by 1985 it was not selling. Mac users, meanwhile, wanted a bigger screen and more memory than the Mac could give them. Somebody, before Hoffman took over the product, decided to solve both problems at once: run Macintosh software on the Lisa hardware and sell it as the Macintosh XL.</p><blockquote><p>It was a bit of a farce in that when you emulated the Macintosh, it wasn't a full emulation; only a certain percentage of applications could run. [...] It was slower because it was built on top of the Lisa. (p.15)</p></blockquote><p>She saw the problem on arrival, and it was not the emulation. It was the plan.</p><blockquote><p>The pent-up demand in the market was such that when I came onto the project, it had just been announced, and I told them that this is going to sell out in three months. And then we are in the deep doo-doo, because having a three-month product that we had no intention of supporting into the future was going to cause a major dissatisfaction in the marketplace. The forecasts that were presented based on Lisa's previous sales was that it would take eighteen months and it will slowly dwindle, and it would just peter out into the sunset with nobody noticing. (p.15)</p></blockquote><blockquote><p>Well, guess what? We sold out in less than three months! We had no intention of building more. And it was a major scandal except that it was overshadowed by a different scandal: Steve being kicked out of Apple. So, nobody noticed the XL fiasco. But I felt like I was put in a position to lie to the customers and I just didn't like that. So, I went on a leave of absence and then eventually I decided not to go back. (p.15)</p></blockquote><p>Businesses had bought it. With the dot matrix printer. "Can you imagine?" (p.15)</p><h2>Every project had a nine-month schedule and took three or four years</h2><p><strong>Management &#183; Apple and NeXT, 1978 to 1990</strong></p><p>Rich Page designed hardware at Apple from 1978, was made an Apple Fellow when the Lisa shipped, and left with Steve Jobs in 1985 to co-found NeXT, where he ran the hardware. He had watched Jobs set schedules at two companies over twelve years, and he had a theory about why they were always wrong by the same amount.</p><p>The story starts with a new hire.</p><blockquote><p>I hired an engineer, he was very good, and I brought him on board in the spring of 1990, and he was going to work on the color NeXTstation. And I remember we're in the lab one day, and he had just started a few weeks earlier, and we're in the lab and Steve's there, and Steve's making a point: we got to get this done by October. So we have a discussion for a while and eventually Steve leaves. (Page, CHM oral history part 2, 59:25)</p></blockquote><p>The engineer then tried to work out what he had just heard.</p><blockquote><p>He says to me, "I don't understand. Obviously it doesn't mean this October, because that's impossible. But October next year is like seventeen months away, and you can't mean next year. But he can't mean this fall. So what's going on?" And I said, "Well, unfortunately, it means this October." (1:00:18)</p></blockquote><p>A person three weeks into the job could see that the date was impossible. The people who had been there for years had stopped noticing. Then Page's larger observation, which is about Apple.</p><blockquote><p>I always wondered, when I was at Apple, you realize that almost every project at Apple took three or four years to get out the door. But every project at Apple was started with a nine-month schedule. So why was every project a nine-month project, but they took three to four years? That's not off by 10, 20, 30 percent. That's a big factor. I never really came up with a good answer to that, but I had two thoughts. (1:00:52)</p></blockquote><p>The first thought is about engineering.</p><blockquote><p>I don't think Steve trusted engineering. I think he thought, whatever schedule I give them, they're gonna double or triple it, so I might as well give them a shorter schedule. I think that was part of it. (1:01:31)</p></blockquote><p>The second is about money.</p><blockquote><p>If you went to Mike Scott and the board and said, "I need nine months," they'd probably say yeah. But if you were a little more honest and say, "I need two and a half years," they might say, "Oh, that's too much money," and maybe they would have not agreed. So I think maybe he sold it to Apple based on the fact that, well, it's only nine months, we can afford it. And then when it took three years or four years, oh well. So I think it was partly selling it to other parts of management, and I think it was also defending himself from engineering. (1:01:48)</p></blockquote><p>Mike Scott was Apple's first CEO, the person Jobs had to get funding from.</p><p>Page adds one more mechanism, about what happens after a product is frozen.</p><blockquote><p>You get your product done, and at some point it's done on this day, but it doesn't go out the door for another three, four or five months. [...] The day you freeze the product, from that point on people start accumulating things they want to change about it. So then you ship the product, and it's six, nine months later, and somebody in engineering has a bright idea of making some small change. So what they want to do is open up the front, make some small change, close the product back up and ship it. That turns out to be nearly impossible, because the minute that other people realize that you're going to change the product, everybody comes out of the woodwork. (1:02:54)</p></blockquote><h2>Getting Steve Jobs to sign off on a rectangle of greys so the factory could stop asking him</h2><p><strong>Design &#183; The NeXT factory, 1988 to 1990</strong></p><p>The NeXT Computer was a black cube, and the cube was cast magnesium, painted. Rich Page ran hardware at NeXT and owned the problem of making that cube come out of the factory looking the way Jobs wanted, over and over.</p><p>A casting comes out of the mould slightly different every time, and then it has to be sanded, textured and painted, each step adding its own variance.</p><blockquote><p>The NeXT cube was a magnesium structure, but painted. As it turns out, I think that was a mistake, because it's hard to take something that's cast [...] and have that whole process be repeatable. (Page, CHM oral history part 2, 33:07)</p></blockquote><p>So every cube was a little different, and the person judging them had the final say on everything.</p><blockquote><p>They got to get sanded and they got to get painted, and they all vary a little bit. You end up with Steve coming to the factory and saying, "Well, I don't like that one," because they were variable. (34:16)</p></blockquote><p>Which meant the line could not run without him, and could not predict him.</p><blockquote><p>Sometimes there was something he didn't like, and yet a week or two earlier it was okay. So you don't want to deal with the whims of "he doesn't like it." (35:25)</p></blockquote><p>The fix was to make his taste into a document he could sign.</p><blockquote><p>What we did at one point is we built a matrix of different textures and different colors, and maybe not dramatically different, but shades. And we got Steve to buy off on: okay, if it's in this rectangle, these shades of grey, or okay in this variation in textures, okay. Something outside that rectangle's bad, but if it fits inside here then it's gonna be okay. And it took him a while to buy into that, but that made life a lot easier, because then you didn't have to ask him. You just knew. (34:39)</p></blockquote><p>For the next machines they changed the material so the problem went away at the source.</p><blockquote><p>What we did later with the black-and-white NeXTstation and the color NeXTstation, we had these things called the pizza box. What we did is we did a cast aluminum structure with a plastic outer structure. And the nice thing about that is you get this plastic cover the right texture and the right color, and then it's easy to make lots of them. (33:44)</p></blockquote><h2>The research lab that worked while people were forced out of it, and died when they stopped being</h2><p><strong>Management &#183; Apple's Advanced Technology Group, late 1980s to 1997</strong></p><p>Larry Tesler came to Apple from Xerox PARC in 1980, worked on the Lisa, and later founded Apple's Advanced Technology Group (ATG), the company's research lab. He knew the standard failure of such labs from the inside: PARC had invented much of the personal computer and shipped almost none of it. Good ideas were never the problem. Getting them across the wall into products was.</p><p>ATG's answer to that was a rule about people, not projects.</p><blockquote><p>Every year, 15 percent of the people in ATG would leave ATG and go to Product Development and take their ideas with them; join forces with other engineers who were sometimes more development-oriented than they [...] And they'd go in and they'd turn their ideas into products. And then we would take that same number of people out of the Product Engineering Group, which was about 10 times bigger than ATG. So that would be maybe two percent of their engineers and bring them into ATG. And that way ATG stays the same size. (Tesler, CHM oral history, p.39)</p></blockquote><p>Who came in mattered as much as who went out.</p><blockquote><p>It tended to be engineers who were burning out. They had five projects in a row that had no space between them and they were long hours and they just wanted a breather. They wanted to try out some ideas they've been thinking of for years and never had time for. And so it was a very strong connection. It was based on Gordon Bell's observation that the only way to transfer technology is to transfer people. (p.39)</p></blockquote><p>The lab had a rule about scope as well: a project had to have a credible path to product in eighteen months to five years, or it did not get started. And it had enemies.</p><blockquote><p>Some of the Product Development managers were idea people and they didn't like the fact that before they even got a chance to come up with their way of doing multimedia we were coming up with a way to do multimedia and sending it to them half built and ready to productize. We thought it was great. [...] But the engineering managers and some of the engineers in Product Development felt like it wasn't fair. They were doing the hard work. We were doing, you know, fun work and we were getting to define the next generation of stuff and it wasn't right. (p.39-40)</p></blockquote><p>In 1990 Tesler moved to the Newton project and handed ATG to David Nagel, one of his direct reports. Engineering management had already attached a condition.</p><blockquote><p>The Engineering Management team basically had made a proviso in there somewhere that we were going to review this policy of this 15 percent and this kind of what they felt was a monopoly of new ideas having to come from ATG. And sure enough, right away that changed. [...] The main thing I remember is that they decided that ATG should have a longer horizon. [...] They wanted to move that 18 months further out and make it be more like three years, five years, you know, and like five to ten years. (p.40)</p></blockquote><p>Then the budget cuts of the early nineties.</p><blockquote><p>Even though they were transferring people out of ATG they weren't having the budget to hire new people and transfer people into ATG. The result of that was that ATG became more and more research-oriented. It was the people who didn't ever want to transfer to product development who were still in research and it was kind of like a university kind of department. We're doing things for the long term. They should turn into papers. They get published. They should inspire people rather than become product templates and Apple could ill afford that in the 90s because [...] the money was no longer rolling in and they were running out of ideas and this group wasn't giving them useful ideas anymore. All the useful ideas had already been transferred and they couldn't come up with new ones because they couldn't hire new people. (p.40)</p></blockquote><p>Early in 1997, with Jobs back as an adviser and Amelio still CEO, Avie Tevanian, then running software, asked Tesler to go back.</p><blockquote><p>"We're shutting down ATG. People say, oh no, we're going to lose a lot of great ideas. Since you started it, would you go over there and find out what the great ideas are that are still there and which ones we should save and which ones we should kill?" So I was sent back there to kill the organization I had founded, but I'm glad he did it. It was the right thing to do. When I got there, I couldn't believe what I was seeing. They were all really cool, but they were irrelevant. (p.40)</p></blockquote><p>His example is a touch-screen conference table with displays under the glass, which he dates as fifteen years ahead of Microsoft's Surface table.</p><blockquote><p>We could sell 10 of these at a time. This is a company that comes out with products to sell in the hundreds of thousands and the millions, not in the tens, wrong company and so I killed that and I killed a few other things, spun out a couple of things. (p.41)</p></blockquote><p>He kept three: a handwriting recogniser for the Newton, which was still alive; QuickTime for Java, cancelled for one day and then reinstated; and a hard-drive search project that became Sherlock, the ancestor of Spotlight. (p.41)</p><h2>API review with no approver: a mailing list, a one-week clock, and three abuses in fifteen years</h2><p><strong>Engineering &#183; NeXT and Apple, 1989 to 2011</strong></p><p>Bertrand Serlet came to NeXT from Xerox PARC in 1989 to work on AppKit, the framework every NeXTSTEP application was built on, and ended up running all of Apple's software engineering through the Mac OS X years. The thing he brought with him from PARC was a review process for public interfaces.</p><p>Why an API needs review at all, in his words:</p><blockquote><p>You can change the code, the implementation, but changing the API, now you need to evolve all the apps that have depended on it. It's very difficult. It takes years, literally. [...] You tell people, I'm going to start deprecating, then you deprecate it several releases. It's typically two, three releases. (Serlet, CHM oral history, p.35)</p></blockquote><p>The usual response is a heavy gate: a committee, an approver, a sign-off. Serlet went the other way.</p><blockquote><p>I was surprised that there was no API review when I came in and the NeXTSTEP API could have been better if they had had a review and that was one thing that we did with OpenStep, we started doing reviews [...] and it's very delicate because you want the owner of the API to own it. You want owners to own, right? You don't want to disempower owners, but you want to have feedback too. (p.34)</p></blockquote><p>The process, in full:</p><blockquote><p>When you have a new API, that's public API, that customers will, developers will use. You have to publish it to a certain forum and you have to address all the feedback, one way or another, you can say, oh yeah, I don't care about that. But you have to address the feedback somehow and it's time-bound. It's a week or some limit like that and after that, that's it. You can go ahead. Your API is approved. (p.34)</p></blockquote><p>The forum was a distribution list.</p><blockquote><p>We had the forum be a distribution list of all the folks that are API savvy and pretty much the trick there is that anyone who has to be on the list is on the list, and that self-determination really works, because people who are not interested in this will not ask to be on the list, right? (p.34)</p></blockquote><p>On abuse:</p><blockquote><p>It's subject to abuse. I think during my tenure at Apple over 10 years, right, 15 years, there were two or three cases of abuse. In those cases, that is the feedback was not addressed or the feedback was this is really a bad API and they went ahead, and you deal one-on-one with the abuse. Very minor. Two or three out of thousands of API reviews. So I'm a big proponent of very light-touch processes, not heavy processes and leaving people ownership. (p.34)</p></blockquote><h2>Running the Intel transition with no schedule, only a punch list that had to get shorter</h2><p><strong>Management &#183; Apple, the switch from PowerPC to Intel, 2005 to 2006</strong></p><p>Bertrand Serlet ran Mac OS X engineering when Apple moved every Mac from the PowerPC processor to Intel. A processor change is the largest thing that can happen to an operating system; every piece of software has to be rebuilt, and much of it has to be rewritten. Apple did it in six months, half the time it announced, and Serlet's account is of two management decisions that made that possible: one taken years before, and one about what to tell the team.</p><p>The first was Avie Tevanian's, and Serlet enforced it.</p><blockquote><p>One thing that Avie pushed, and I enforced it, is that we always compiled our code for Intel as well as PowerPC, even though we had no Intel machine and so we had some checkers in place in the build system to make sure every single project can be built for Intel and this is years before we did the transition. (Serlet, CHM oral history, p.23-24)</p></blockquote><p>The deal with Intel was signed in February 2005.</p><blockquote><p>We just scrambled to make it happen for the developers conference that was in May, so three months later [...] We wanted also developers to have machines that they can play. But we didn't want the Mac OS to run on any PC. So there was a delicate balance. So we decided to build machines in secrecy and in fact, we enlisted Simon Patience's team, which was the CoreOS team, to actually build the machine that we were going to give for developers at the conference. So for a while, the kernel team was actually building, assembling machines in a secret lab in preparation for WWDC and it was the kernel team, because they were the first one to help make it work. So they all were disclosed. (p.24)</p></blockquote><p>Then the schedule.</p><blockquote><p>We said at that time that it would take about a year to transition and nobody believed it. All the industry thought that it would take much longer. We were hoping it would take less. But we were not sure, because we had a dependency on Intel for some of the new chips coming up. So we were not sure, and still we're not sure, for several months. So I said, well, we're going to pretend we need to ship ASAP and we don't have a schedule, but we just have a punch list of what's left to do and we're going to shrink the punch list and that's what we did. People were upset because they wanted to know the schedule and I said, sorry, I can't tell you the schedule, I don't know the schedule, but it's ASAP, and so we were able to ship in January with the new Intel Macs and so that was six months, not a year. (p.24)</p></blockquote><p>Then two worries.</p><blockquote><p>Now that we were on PCs, people could compare the speed of the Mac on what was essentially an Apple machine, but a PC, so same processor, with Windows NT and so I was very worried by that [...] So I said, let's do benchmarking of lots of things that analysts could benchmark or end users could benchmark. For example, you open 100 Windows, how long does it take, right? That kind of thing and we wrote several hundred tests that we could run both on NT and on the Mac and the results came in, and for 95% of them, the Mac was slower. So we had a big communications meeting. I motivated the team by saying, hey, not so good, and by the end of summer, we had flipped that 95%. (p.24)</p></blockquote><p>The second worry was about the year in which both kinds of Mac would be on sale.</p><blockquote><p>People will find some subtle differences between them, because we've still evolved the Intel code base [...] And that people would play the game of find the difference. So, which I think would be very damaging for moving forward. I wanted the transition to be viewed as invisible. So what we did for the rest of that year is we did software updates that had all the improvements that we made to the Intel side. But that also were all those improvements that were not for PowerPC, but we also included that in the PowerPC update and so we had a single code base. We forced the code base to be the same through software update. So by the time January came in with the new Intel machines, they were exactly the same software as the PowerPC. So no one ever found some bug difference between the two. (p.24-25)</p></blockquote><h2>Deciding which APIs to kill by scanning Microsoft Word to see what it would break</h2><p><strong>Engineering &#183; Apple, the Carbon transition, 1998 to 2000</strong></p><p>Nitin Ganatra joined Apple in 1993 answering developer questions in technical support, and by the late nineties he was on the team building Carbon. Carbon was the bridge: Apple had bought NeXT and was replacing the classic Mac OS with a new system built on NeXT's foundations, and every existing Mac application was written against the old programming interfaces. Rewriting for the new ones would have meant shipping an operating system with no Photoshop and no Word on it. Carbon was the subset of the old interfaces that would keep working on the new OS.</p><p>Deciding what went into that subset is the story. The instinct was to cut.</p><blockquote><p>We wanted to throw out as much as possible. [...] Because everything that you throw out is just, every API you throw out is an API you don't have to support down the road. Bertrand [Serlet] later, you know, sort of captured that sentiment in a great way by saying that APIs are a liability, you know. They're an asset to your company, but they can also be a liability. The more APIs you have, the more exposure you have to programs that may not work well or make assumptions based on the behavior of those APIs. (Ganatra, CHM oral history part 1, p.28)</p></blockquote><p>The old interfaces were a liability for a specific reason: they had been designed for a machine with 128K of memory, and they showed it.</p><blockquote><p>In the old days, data structures were sort of fully defined and fully fleshed out as part of the definition of an API call. And part of the reason for that was [...] you really don't want to create multiple calls to get and set things out of a data structure. Really, the more resource friendly way of doing that would be to just say, "Here's the data structure, you can get, and pull, you know, get and set things in there all you want." [...] We only have 128K of RAM to run in anyway. So let's just do away with that and just expose the underlying fields and just let the developers do what they want. So fast forward 15 years from, you know, from that attitude, and really, it does become more important to hide the underlying implementation so that you can change it later. (p.29)</p></blockquote><p>Cut too much, though, and the developers would refuse to port.</p><blockquote><p>We had a lot of good data by then where we had these tools where you could scan an application, you could scan a popular application and look and see what are the APIs that it's actually using. And so from that, you know, you could bring up Microsoft Word and run it through these tools and it would say, "Microsoft Word is using 2000 API calls. Here they all are." You know, and you could even flag [...] APIs that we really want to get rid of these ones, but we don't know if we can yet. So let's run through the list of popular apps and see, by getting rid of that API in practice, who are we hurting here? (p.28)</p></blockquote><p>The target Ganatra gives for how far to go:</p><blockquote><p>It was sort of this riding this line between giving developers everything they want and, you know, tying our hands for [...] future development work, or, you know, dial it back as much as we can until developers almost scream that it's too much work to do, but now we're set up well to support them in the future, and just sort of trying to figure out where that was the whole time. (p.29)</p></blockquote><h2>Not telling the designers what the hardware could do, on purpose</h2><p><strong>Management &#183; The iPhone, 2005 to 2007</strong></p><p>By the time the iPhone project started, Nitin Ganatra was managing application teams on Mac OS X, and he became the director responsible for the phone's built-in apps. The designers he worked with were Apple's Human Interface team (HI), and the hardware they were designing for was an ARM processor with a fraction of a Mac's memory. The obvious way to run that relationship is to tell the designers the limits up front so they do not waste time on things that cannot be built. Ganatra describes doing the opposite, and why.</p><blockquote><p>Really one of the goals was to sort of let the HI team do, come up with, the best possible design and not bog down the HI team with discussion about number of colors on the display or how much RAM we're going to have or how much, you know, this, that [...] obviously as an engineer you're thinking about those constraints all the time and you're thinking, "Holy crap, am I going to be able to implement [...] this really cool thing that the HI team came up with?" But really you want to, you don't want to start to burden the HI team with these constraints early on. (Ganatra, CHM oral history part 2, p.10)</p></blockquote><p>His reason:</p><blockquote><p>Because then the best thing that they're going to ever come up with is a design that they themselves, the HI team themselves, anticipate will work given all the constraints that were given. You've now put the HI team in a situation where they're now trying to guess at whether their design is still really cool enough to be compelling to a customer but still something that can be implemented. (p.10-11)</p></blockquote><blockquote><p>It's better to just sort of stand aside and let HI come up with the best possible designs [...] and then we'll figure out if we need to, you know, if we need to implement something that's 90 percent as cool but is possible, on an ARM-embedded device or what have you. We can have that discussion later, but you come up with the best design, the engineering team will come up with the best implementation that we can of that design, and if there isn't [...] a complete match between the design and what can be implemented, by then we'll have a better understanding of what the details are, where it's difficult to implement things, and we'll have, on the engineering side, we'll have specific recommendations for, "Well, yes. You said that this thing could be an unlimited length table, but what if we made it a thousand cells instead?" (p.11)</p></blockquote><p>The same approach shaped the software underneath. Rather than design a grand framework for moving between screens before anyone knew what the screens were, the team built the first apps directly and let shared code accumulate.</p><blockquote><p>If you try to create this architecture too early on, you can kind of stifle the ability to go in different directions or the ability for [...] the HI team to kind of go and go hog wild [...] And so, it's just better to kind of just let it be organic for a while but understand that there's a plan there. (p.10)</p></blockquote><p>That accumulated code became UIKit, which every iPhone app has been built on since.</p><h2>Three days of memorising a design in one room and redrawing it badly in the next</h2><p><strong>Management &#183; The iPhone, 2005</strong></p><p>The iPhone was built under a secrecy regime in which Steve Jobs personally approved two lists: who was on the project, and who was allowed to see the user interface. The two lists were not the same. Nitin Ganatra, who managed the team writing the phone's applications, was on both. The engineers who reported to him were, for the first few days, only on the first.</p><blockquote><p>For a few days, I had disclosure to see the UI as the manager, but the engineers on my team had not been disclosed yet [...] It was probably for the first three days or four days that we were in this arrangement where Steve Jobs had to personally approve not only everybody who was on the team but then also everybody who had access to the user interface. And so, and I remember I had discussions with Scott Forstall about this too, where I had access to see the designs but my engineers who are actually doing the work here didn't have access. So what should I do? You know, like, should they just go on vacation for three days? That doesn't seem right. (Ganatra, CHM oral history part 1, p.64)</p></blockquote><p>Scott Forstall ran iPhone software. There was a demo due that Friday or the following Monday. The solution was a workaround for a rule neither of them could change.</p><blockquote><p>We had two of my engineers were in one office and in an office right next to them was a computer that had the designs on it. And so, any time they had a question about the designs or some aspect of the design itself or something, what I would do is go into the, and they weren't allowed in the room with the computer that had the designs on it. So I would go into the room with the computer that had the designs on it, play with it for a little bit, try to commit to memory everything that I saw, and then I would come back over and on the whiteboard I would draw, and I'm a terrible whiteboard drawer anyway. And then I would draw an approximation of how things worked and how it behaved and how things should be. And so, we did this for three days. And the whole time we were doing it, we were all perfectly aware of how absurd it was. (p.64)</p></blockquote><p>The interviewer's comparison was to a corporate spy inside his own company. Ganatra's summary was shorter: "It was a little silly for a while there." (p.64)</p><h2>Antennagate: asking for the complaint data before agreeing to apologise</h2><p><strong>Marketing &#183; The iPhone 4, 2010</strong></p><p>Regis McKenna ran the agency that positioned the Apple II, shaped Apple's marketing from the beginning, and knew Steve Jobs for thirty-five years. By 2010 he had twice declined to come back to Apple, preferring, in his words, to stay friends. So when the iPhone 4 shipped with an antenna that lost signal if you held the phone a certain way, and the story had a name, he was called in as a friend rather than a consultant.</p><blockquote><p>I got a call from Steve, and he was actually in Hawaii with his family. He said he was going to fly back and could I meet him on, I think it was Monday or something like that, and I said sure. He basically called together a meeting of some of the people from Chiat who were still working on his account. He had his marketing people there, and some of the engineering people. And we had a meeting in his conference room, and his son, Reed, was there. He wanted him to observe it. (McKenna, CHM oral history part 5, p.12)</p></blockquote><p>Chiat is Chiat/Day, Apple's advertising agency.</p><blockquote><p>I asked for the data. I wanted to see what the data had to say, because I knew Apple, they had collected a huge amount of data from all the users and all the people that had complained, all those who wanted returns on the phone, and so forth. The iPhone before [the 4] was actually worse than that phone. So it was really a relatively minor issue to the consumers that were buying it, from my standpoint. (p.12)</p></blockquote><p>The previous model had measured worse on the same problem, and nobody had noticed.</p><blockquote><p>I first advised him to just let it go. I said, "It'll fade away, fix it." He didn't want to do that. He said, "No, we've got to address it." I said, "But there are only, really, a relatively few people that are making noise about it. You may be making a bigger issue." We talked about that in the meeting. (p.12)</p></blockquote><p>Jobs overruled him on whether to respond. On how:</p><blockquote><p>Most of the other people were telling him to come out and apologize. They really wanted him to put his tail between his legs and go out there and be very humble and so forth. I said, "Don't do that. I don't think that's you. I don't think that's what you should do. And I don't think the data calls for that, quite frankly. I think you do tell people that technology products are never born perfect, that they will improve, and they're constantly being improved." And he used that line, actually, when he talked. Basically, he said, "We will address the problem." They gave you a little protective band that you put around the iPhone. And, he said, on the next generation, as soon as we can, we'll change it. (p.12)</p></blockquote><blockquote><p>Once he went out and said these things, they [consumers] didn't lose confidence in the company by saying, "Oh, here's a big failure." The president of Microsoft at the time said this was going to be a failure, this product. And it wasn't. It still continued to sell. The next generation sold even more. (p.12)</p></blockquote><h2>Turning the strongest objection into the objector's assignment</h2><p><strong>Engineering &#183; Apple, the Mac OS X transition, 1997 to 1998</strong></p><p>When Apple bought NeXT, Avie Tevanian, who had written the Mach kernel at Carnegie Mellon and then run software at NeXT, became the person deciding which technology survived: Apple's or NeXT's. Every one of those decisions was read inside Apple as a side winning, and this is his account of the one that produced the most noise.</p><p>Apple had its own networking system, AppleTalk, which had been designed a decade earlier for small office networks and did one thing better than anything else: you plugged a printer in and it appeared. The rest of the world had standardised on TCP/IP, the protocol the internet runs on, and Apple's own TCP/IP support was bought in from an outside vendor.</p><blockquote><p>The networking standard for Apple at the time was AppleTalk, and AppleTalk was just wonderful networking for a LAN [...] It was way better than TCP/IP. But, the rest of the world has standardized on TCP/IP and it was obvious to me and some others who weren't totally immersed with the Apple way for many years, that TCP/IP was going to win all the battles. It was already winning the battles, and at the time Apple had an AppleTalk team working on AppleTalk, and their IP stack was outsourced, and so I said, "This doesn't make any sense. Networking is a key part of the product." (Tevanian, CHM oral history part 2, p.15)</p></blockquote><p>His proposal was the open-source stack everyone else used, which happened to be the one NeXT already shipped. That was enough to make it an Apple-versus-NeXT fight.</p><blockquote><p>I got no end of complaints about that. [...] In fact, people went around me all the way to Steve saying, "We're going to tank the company if we do this," and including the people who are selling us the stack, the software stack from the outside. They were making money off Apple, and so I just sat down and I laid it out and said, "This is the standard of the future, number one, and number two, this is the standard implementation, number three, it's free and open source. People will keep working on it. This is [a] no-brainer decision. End of discussion." (p.15-16)</p></blockquote><p>Winning with Jobs settled the decision. It did not settle the engineers, and the objection they brought him was a good one.</p><blockquote><p>Good engineers would come to me and they would say, "but you can't do this. Our customers know and love AppleTalk. They just plug in a new computer and it just works and that doesn't work with TCP/IP. It works with AppleTalk," and they're, plug in a printer. It just works. I said, "Great. So your job is to now make TCP/IP do this." (p.16)</p></blockquote><blockquote><p>Lo and behold, here we are today, 20 years later, using TCP/IP. Everybody just plugs in their computer or their printers and devices and everything and it just works and that's because we got motivated to fix a few problems and fill in a few gaps with TCP/IP that didn't allow it to do that before. (p.16)</p></blockquote><p>He also gave them the arithmetic, and says how it came out.</p><blockquote><p>"What you're advocating is a solution that is going to keep three percent of the addressable market happy." That was the existing customer base. Maybe it's five percent. [...] "I want to keep those people happy but I want to have a way to go get the other 95 percent, and we can't get the other 95 percent with something like AppleTalk. They're just never going to buy it," okay, and, you know, we never got the other 95 percent, but you look today and Apple's doing pretty well even with computers. (p.16)</p></blockquote><p>Not everyone made the switch.</p><blockquote><p>There were some people, they just couldn't get their head around this way of thinking and they either quit or were fired, and then the people that could, they said, "You know what? There's a few things wrong with TCP/IP today, but we know how to fix that, and we can work with the IETF and change the standards and evolve it and do a few things with DHCP and other standards and fill in here and fill in there and make some DNS changes and we can make this all work." And, it does. (p.16)</p></blockquote><h2>"Over my dead body," and the two products that argument shaped</h2><p><strong>Product &#183; AirPort and the iPod, 1999 to 2004</strong></p><p>Jon Rubinstein ran Apple's hardware engineering from 1997 and later the iPod division. Two of his stories are one story: an argument he lost about Wi-Fi, and how losing it changed the way he fought the same argument about the iPod three years later.</p><p>AirPort was Apple's 1999 Wi-Fi product, a base station and a card, at a time when Wi-Fi was one of two competing standards. Rubinstein had spent time in Washington keeping the other one, Intel's HomeRF, from getting the rules changed in its favour, and when Wi-Fi won he saw what Apple had.</p><blockquote><p>Wi-Fi became sort of the de facto standard and I'm looking at this and I'm going, "This is a big business." Right? Our base stations could be used because we're just a PCI card, right, so we could take our PCI card that goes in our Mac, plug it into a PC. We could take our base station. We're missing one thing, and that's the application that runs on a PC to configure the base station. It's not a big deal. (Rubinstein, CHM oral history part 1, p.81)</p></blockquote><p>He took that to Jobs.</p><blockquote><p>So I go to Steve, and I said, "Look, I need three, four people. I'm going to port our custom app on the Mac over to a PC version, so we can enter the base station business on the PC." Steve goes, "Over my dead body." I said, "But Steve, it's like three, four people. I mean, we already have it running. We just need to productize." "No." All right. So I'm like, "All right." "No." I mean, I had lots of other things to do, so... (p.81)</p></blockquote><p>Jobs's reason was that AirPort was part of what made a Mac worth buying. Rubinstein's counter was that Apple's base stations were better than anything on the PC side, with features nobody else had.</p><blockquote><p>We had mesh. No one else had mesh. Until Eero came out recently, no one else really did mesh. We had that. We had easy configuration. There was no SSID, right? I mean, it was the name of a network. I mean, it was Mac-like, right? Everything was simple. [...] I said, "This is going to be a multibillion, I want to build a multibillion-dollar networking business." Right? And Steve went, "No way. We're not doing that." I said, "All right, so we're not doing that." So we kind of put that aside, right, and, which then came when we did the iPod later on. I dug my heels in. (p.81)</p></blockquote><p>The iPod shipped in 2001, Mac-only. To get the music labels to license songs for the iTunes Store, Jobs told them the Mac's market share made it a safe experiment.</p><blockquote><p>Steve convinced the music companies that, "Look, this is a great experiment because at most we've got 2% market share. At most we've got 2% market share, so you do not have to worry about 98% of your market, and so it's a great way to experiment," and so they went "Okay." And frankly at the time we were going to stay Mac only. We didn't have this idea we were going to expand to the PC. (p.92)</p></blockquote><p>Then the same argument as AirPort, with a different outcome.</p><blockquote><p>It makes people buy more Macs, and that was the whole point of the iPod, was to sell more Macs, but the lesson from AirPort just sort of sat on my shoulders and sat on Phil Schiller's shoulders, and we started hammering Steve. "We got to take this stuff to the PC. We got to take it to the PC," and we just kept haranguing him, and finally he goes, "Fuck you guys. I don't want to talk about this anymore. You do whatever you want." (p.93)</p></blockquote><p>What they did with it:</p><blockquote><p>So we went out, and we found a software company. I think they were in L.A. [...] We basically hired them to take their PC software and hook it up to the iPod. Music Match is what it was called. [...] They'd done a product that was sort of a half-assed version of iTunes, and it wasn't very good, but it worked on a PC, and it worked with portable players, and so we just modified it to work with the iPod, and then we gave them a very strict roadmap, and we said, "Look, here's the roadmap we want, and this thing's going to put you guys on the map, so here's what we need." And Phil and I managed them very closely and managed their roadmap and the iPod on the PC. (p.93)</p></blockquote><p>The same passage carries a second reversal.</p><blockquote><p>By the way, we also did the Mini at this point in time, which Steve tried to cancel. I got a panicked phone call one day. "You better get to this meeting. Steve just cancelled the Mini." And I'm like, "Ahhhhhh," so I come running down there, and Steve's just leaving the room, and everyone goes, "What do we do?" I said, "Just keep going." Because the Mini is really the product that caused the iPod to take off because of the price point, and it was the anodized aluminum, the colors, [the] price point. It had enough storage but not too much. (p.93)</p></blockquote><h2>The iPhone developer story that lasted from a Friday to a Monday</h2><p><strong>Product &#183; The iPhone SDK, 2007 to 2008</strong></p><p>In June 2007, weeks before the first iPhone shipped, Steve Jobs told developers at Apple's annual conference that they could write applications for it using web technology, running in Safari. No native software; the phone's own apps would stay Apple's. By October Apple had announced a native SDK instead. Four people who were inside that reversal describe it, and they do not fully agree.</p><p>Richard Williamson ran the iPhone's Safari and WebKit engineering, so he was the person best placed to argue for the web approach, and had already stopped believing in it.</p><blockquote><p>I and the iPhone Safari team had a pretty deep background in WebKit and web technologies. And so, I was in a position to try and advocate for that, although I had already come around to the idea that [...] native development was far more efficient than web technologies because of the tools, because of the fragility of web technologies, and [...] if you look at the Objective-C frameworks, they kind of guide you towards good development, guide you towards how to build an app. And HTML was never designed to do that. (Williamson, CHM oral history part 2, p.27)</p></blockquote><p>On where the web-apps announcement came from:</p><blockquote><p>Within the engineering organization, there wasn't a final approach to say, this is what we're going to do for developers. In fact, it was only a few days before the announcement that Steve made [...] that we heard that there was a great developer story. And really Scott [Forstall] and Steve huddled and came up with this. It wasn't vetted by me, certainly, and I don't think Nitin or Henri. So, we had to really scramble to try and figure out what that meant. And I think it was pretty clear to the engineering team that it wasn't going to be a great solution. (p.27)</p></blockquote><p>Scott Forstall ran iPhone software; Nitin Ganatra and Henri Lamiraux ran its applications. Williamson's read on why it happened:</p><blockquote><p>I think Steve said to Scott, "Look, we've got to do something about third party developers. What are we going to do?" And it was one of these snap things that Steve just wanted something and had to have something. And Scott came up with the story. (p.27-28)</p></blockquote><p>Ken Kocienda, who built the iPhone's keyboard, remembers how long the story lasted inside the building.</p><blockquote><p>I do recall there was like a Friday afternoon where some Safari and WebKit people from the outside team came to our iPhone hallway and were looking around at offices. "Oh, I'm going to sit here. I'm going to sit here," because they were actually going to come and do this web development story. And that was like Friday. And then Monday, it was like redone. It was like a very quick turnaround that we're going to do this story. We're going to do this story. We're going to do this story. We're not going to do this story. (Kocienda, p.28)</p></blockquote><p>Ganatra was not in the room for the decision, but he describes the argument that did the work, and it was not abstract. They took one real application and tried to build it the way they were telling developers to.</p><blockquote><p>Our very first, you know, our first target was Epocrates. And we were kind of thinking, "Well, what if there was a doctor and they're walking around with a Palm [...] Treo [...] and they were running Epocrates? Well, what would they do?" And so, there was some internal work around just kind of going through the exercise. Well, what would it mean for Epocrates to actually ship a web app? And I think it became, very quickly we realized [...] they would have to do an enormous amount of work [...] and by the way, once they had done all of that [...] what they would end up with, was an app that behaved nothing like any other app on the system. It would probably take longer to launch. It probably wouldn't have the nice smooth scrolling. (Ganatra, CHM oral history part 2, p.43-44)</p></blockquote><p>Epocrates was a drug reference that doctors ran on Palm handhelds, exactly the kind of customer the iPhone needed to take from Palm. Ganatra's summary of the exercise:</p><blockquote><p>"Well, what if we did want to go and target this client, and wanted them to make a really great web app, what would they have to do?" Answer: "An enormous amount of work, and they'd end up with something not great anyway." So, I mean, you know, I think we went through enough examples like that until we realized that really the right answer here is to release an SDK. (p.44)</p></blockquote><p>The general principle he draws is about having two technologies.</p><blockquote><p>If you've created two technologies, one for your own use, and one for third parties, or for somebody else to use, then that must have been for a reason. It must be that either the things that you're doing are so different from what you expect third parties to do that you need to have some brand new [...] technology that's different, or you think that what a third party will be doing or could do is not as important or as compelling or interesting as what you may be doing on your own. So that's why you have two. In either case, it's not a great answer. (p.43)</p></blockquote><p>What made the reversal affordable was something Forstall knew about his own organisation.</p><blockquote><p>Scott Forstall, to his credit, he knew what we were, you know, what these projects looked like and how we were already building the software. He had a good understanding that, internally, even though we didn't have a third-party SDK, internally, we were developing these things as though we had, you know, using our own internal SDK. So then the amount of work that we would have to do, we already have an SDK, basically. So, we would have to do some sanitizing and cleaning up and getting some interfaces ready to share with the outside world. [...] You're going to be happy with those interfaces for ten or fifteen years or twenty years. (p.44)</p></blockquote><p>Bertrand Serlet, who ran Mac OS X and argued for the web side, adds the precedent.</p><blockquote><p>A few years prior to that, we had on the Mac, a feature called dashboard widgets. That was very, very small, lightweight apps [...] We came out with dashboard widgets and within a couple of months, we get tens of thousands of dashboard widgets and so we knew that there was pent-up demand for lightweight applications on the platform. [...] So we argued how to open up, web app versus Cocoa. We did Cocoa, and we opened up and a year after, we started getting apps and I thought we'd get thousands of apps based on this dashboard widget experience, within a few months. I was totally wrong. We got 100,000 apps. (Serlet, CHM oral history, p.29)</p></blockquote><p>Serlet also notes that Jobs "kind of liked the fact that all the apps were Apple apps" and "was actually arguing for a while that maybe we should keep it closed." (p.29)</p><h2>The owners of the framework argued against using their own framework</h2><p><strong>Engineering &#183; The iPhone, 2005</strong></p><p>When the iPhone project started, the obvious way to build its software was to take AppKit, the framework every Mac application's interface is built on, and put it on the phone. AppKit was mature, the engineers knew it, and it embodied the Cocoa programming model that had come from NeXT and that Apple had spent a decade getting developers onto. Nitin Ganatra, who was about to manage the phone's application teams, describes the meeting where that option died, and who killed it.</p><blockquote><p>The first option was to actually bring AppKit itself, which was the key component of Cocoa and make that the phone. (Hsu, interviewer, CHM oral history part 1, p.57)</p></blockquote><p>The people making the case against were Ali Ozer, who managed the AppKit team, and Kristin Forster, an engineer on it. Ganatra's account is as much about engineers in general as about them.</p><blockquote><p>Engineers are very sort of proud of the work they've done and they want to, we want to, believe that the things that we've created are, can be suited or can be used for anything, including things that we never anticipated they be used for. And a lot of times that's just not true, you know. But I think, some amount of the pride of ownership and pride of development kind of clouds your judgment in some ways and makes it so that you, you might think that the thing that you've developed is far more capable than it actually is. But that's the, but to Ali's credit, that's not Ali. And that's not Kristin. (Ganatra, p.58)</p></blockquote><p>What they knew that nobody else in the room could have:</p><blockquote><p>They were well aware of all the ways that the event system and that menus and that mice and that, you know, all these things that were very essential to how desktop computers work, they were so embedded into how AppKit handled events and did so much of what it does that they just, they themselves, Kristin and Ali, were making the argument that it's just not well suited for something like touch or for multiple layers on the screen or things like that. (p.58)</p></blockquote><p>And why that settled it:</p><blockquote><p>The fact that they were arguing against using AppKit to me was the strongest argument that okay, I mean, these are, they're super smart people and they are, and they understand their technology better than anyone. And so why would we try to use AppKit when the experts are saying we really shouldn't. (p.58)</p></blockquote><p>Ganatra adds that Forster "did the majority of the research as well." (p.58)</p><p>The alternative was to keep the Cocoa programming model and write a new framework for touch, which became UIKit. Every iPhone application since has been built on it. The decision to build it rather than adapt what existed was made by the two people with the most to lose from that answer, on the strength of research one of them had done into her own code.</p><h2>Choosing a browser engine: 150,000 lines you can hold in your head over 1.5 million you cannot</h2><p><strong>Engineering &#183; Safari and WebKit, 2001 to 2002</strong></p><p>In 2001 the Mac's web browser was Internet Explorer, which belonged to Microsoft, and Apple wanted one it controlled. Don Melton, who had managed part of the Mozilla project at Netscape, was hired to build it, with Ken Kocienda as his first engineer. Neither had built a web engine. Then Richard Williamson arrived, back from a year travelling, having asked Bertrand Serlet if there was anything interesting to work on and been offered two things.</p><blockquote><p>He told me about two things. The browser project, and he said, "It's just starting. We're trying to figure out what to do." And then the other was, there was an effort that was super-secret at the time to go from PowerPC to Intel. [...] Of those two things the browser sounded far more interesting than working on the Intel project. So I said sure. And I didn't know anything about how to actually build a Web engine or a browser. (Williamson, CHM oral history part 1, p.24)</p></blockquote><p>The question was never whether to write an engine from scratch; that fell away fast. It was which existing one to start from. Kocienda describes the state of the decision when Williamson joined.</p><blockquote><p>Don and I were floundering around for a little bit of a while for a few weeks before Richard came on board. And Richard very, very quickly said, "Now, what are you guys doing?" [...] We were looking at Mozilla. We were looking at maybe licensing from Microsoft, Internet Explorer, for Opera versus iCab versus, there's KDE and GNOME, these Linux desktops or whatever. And Don and I were just kind of tripping over ourselves. We didn't really know what to do. Too many options. And so Richard goes away and just says, "How about KHTML?" (Kocienda, p.25)</p></blockquote><p>KHTML was the engine inside Konqueror, the browser of the KDE desktop for Linux. Almost nobody outside that world had heard of it. Williamson went away for two days.</p><blockquote><p>He calls us in for a demo and says, "Hey, guys look." And he's got KHTML working on a Mac. [...] He just convinced this KHTML code that yeah, yeah, yeah, you're running on a Linux machine even though it's a Mac. No, its X Windows. It's fine. Don't worry about anything else. And we were floored. (Kocienda, p.25)</p></blockquote><p>Then the arithmetic.</p><blockquote><p>Mozilla was the leading candidate at that point, the other leading candidate but it was a million-and-a-half lines of code. And KHTML was 150,000 lines of code. [...] It was three guys and we figured 50,000 lines of code each. (Kocienda, p.25)</p></blockquote><p>Williamson had looked at Mozilla's code.</p><blockquote><p>Beast. I think an important thing in software development is that the software does what it needs to do well and doesn't do things that it doesn't need to do. And the Mozilla code base has so much stuff in there that's irrelevant for a Web engine. Interesting technology in other domains but really irrelevant in terms of building a Web engine. And in order to get your head around a piece of software you need to be able to context switch it into your head and really understand how it works. It's almost impossible with Mozilla because of all of these irrelevant subsystems. (Williamson, p.27)</p></blockquote><p>Kocienda had tried the other path and has the numbers from it.</p><blockquote><p>Mozilla source code base had 20,000 typedefs. So you want to know what is in that software, you've got to learn 20,000 names. [...] I actually did get Mozilla running on Mac OS X which was a weeklong, which was a horrible, horrible trial because Mac OS X was so new that Mozilla didn't have a port. And this was secret. So you couldn't ask anybody. So I had to figure it all out for myself. So I got Mozilla running on Mac OS X but it basically never, I don't think it ever rendered a webpage. It would just crash. [...] So after a crash I'd look at the core file. It's 100 levels deep, 100 frames, 100 stack frames deep. So how are you going to context switch this into your mind? (Kocienda, p.28)</p></blockquote><p>Opera was a serious option too, more advanced than KHTML, and they had a trip scheduled to go and talk about licensing it. They never took the trip. And Melton, who had managed Mozilla, "knew Mozilla too well to want to work with it again." (Kocienda, p.26)</p><p>The decision still had to get past Avie Tevanian, who ran software. Melton set one condition for the pitch.</p><blockquote><p>Don said, "Okay, we're going to do the presentation but we're not going to use PowerPoint or any other application. We're going to do the slides in this application. And then we'll project that." So that's what we did. We actually made HTML slides and presented it in the browser and it was flawless. And we didn't tell Avie until the end of the presentation [that] we had been using the application. (Williamson, p.28)</p></blockquote><p>One more thing was decided at the start.</p><blockquote><p>We were hired to make a browser app that we could go and replace Internet Explorer as the double clickable app in the Dock. But we also from the very, very beginning we needed to make a framework. We needed to make a developer toolkit. That was part of the plan from the very, very beginning. And so WebKit was not after thought. (Kocienda, p.27)</p></blockquote><h2>Asking the customer to write a letter so he could win an argument with his own investors</h2><p><strong>Management &#183; Stepstone, mid-1980s</strong></p><p>Objective-C did not start at NeXT. It was created at a company called Stepstone, and Steve Naroff joined Stepstone to work on its compiler in the mid-eighties, before NeXT was a customer of any size. The compiler he found was, in his description, a translator: it turned Objective-C into C without understanding much of it.</p><blockquote><p>It was naive. It wasn't full-bodied. It was not capable of detecting programming errors that are common, even a misspelling. Part of the reason it wasn't detecting errors was not only the technology but the language definition. There was no explicit interface declaration whatsoever. So if you typed a message expression and sent an object a message of a certain name and typed it incorrectly it would just assume that that was the name of the method. (Naroff, CHM oral history part 1, p.18)</p></blockquote><p>Misspell a method and the compiler would agree with you. Naroff wrote a proposal to fix the basics: interface declarations so errors could be caught, a compiler that processed the whole language, and generated code that worked with the standard Unix build tools instead of silently producing broken executables. He could not get it funded.</p><blockquote><p>I fought pretty hard for fixing the basics, which, to me, it was as obvious as [...] yet I got pushback from the venture capitalists who were thinking in dollar signs, thinking, "Why should we pay you to recraft and add some of these things that will make it more robust?" To them, error-handling, they're money people. This notion of, "Well, we can't flag an error," to them, that's like, "Well, so what?" They're not programmers. So I was getting a little bit frustrated when I was basically being somewhat ignored. There was some appreciation but this person, Ken, who was leading Software, he didn't have the technical chops to, as the guy who was running Software, to fight for me. I had to fight myself. (p.19)</p></blockquote><p>What changed it was a visit from the customer.</p><blockquote><p>The great fortune was NeXT arranged a trip for two of their engineers, Steve Stone, who was an OS guy, and Trey Matteson, who was just out of Brown, really bright young guy. They both came to visit us in Sandy Hook and read my proposal and were just jazzed, totally jazzed. They're, like, "Oh, my God. This is exactly what we're bumping into. This solves our problems." (p.19)</p></blockquote><p>He asked for something he could carry into the next meeting with his investors.</p><blockquote><p>I said, "Guys, when you go back to Palo Alto I need you to write a letter that identifies what we talked about and why you were supportive of this, so I can basically do the political dance at Stepstone." And they wrote the letter and I have the letter to this day. I think you've seen it. After that they had to let me work on this stuff. So that was how I got to add interfaces and fix some of the runtime problems. (p.19)</p></blockquote><p>The interface declarations he got to add are still in every Objective-C header file today.</p><h2>Objective-C++ in two weekends, on top of a stranger's open-source work</h2><p><strong>Engineering &#183; NeXT, around 1990</strong></p><p>NeXT's frameworks were written in Objective-C. The companies NeXT most needed as developers, Lotus, Adobe, Pixar, had large codebases in C++. The two languages could not be mixed in one file, so anyone who wanted to use NeXT's frameworks from C++ code had to bridge between them by hand. Steve Naroff ran NeXT's compiler work, and this is how he solved it in his spare time.</p><p>The compiler NeXT used was GCC, the free compiler from Richard Stallman's GNU project, which handled C. Naroff had already extended it for Objective-C. The C++ front end for GCC was being written by someone he barely knew.</p><blockquote><p>I briefly touched base with Michael, to get the lowdown on the state of the compiler, and he was pretty optimistic that, though it wasn't finished, it was compiling quite a bit of stuff from the C++ perspective. So, because he gave me enough positive feedback about his work, and, again, I didn't really know Michael, but he seemed really smart, and I trusted him, the little bit I knew him, I decided to try, on a weekend hack, to take his work and add my Objective-C work to it. (Naroff, CHM oral history part 1, p.37)</p></blockquote><p>Michael is Michael Tiemann, who went on to co-found Cygnus, the first company built on free software. The two sets of compiler changes had to be reconciled, because GCC had not been built to be extended by two people at once.</p><blockquote><p>I got Michael's work in a weekend hack, got it pretty far, and was really pretty blown away that, I mean, the grammar was complaining about this, that or the other thing [...] But I basically didn't let it bother me, and I just went heads down and continued. Long story short, after a couple weekend hack fests, because I didn't have time during my normal hours at NeXT to work on C++, got it far enough that I shipped [...] Lotus the compiler, and they were like giddy that, "oh my god, this is like doing a lot of good for us. And please finish this." And that work ended up being used by them, and then the Photoshop team, and Pixar, and it became really popular. (p.37)</p></blockquote><p>What made it possible in two weekends was a design decision about what not to attempt. The ambitious version would have merged the two object models, letting an Objective-C class inherit from a C++ class.</p><blockquote><p>What I wasn't doing, which some people initially thought could be the design point, is to merge the object models, right? Like allow a C++ class to coexist with an Objective-C class. For example, you know, that would allow potentially sub-classing in Objective-C, a C++ class. I thought that was just idiotic, and even if someone was lobbying hard for it, I would just say, "Listen. That's not the design point. It just doesn't make sense." [...] That would be a research project. (p.37)</p></blockquote><p>He kept the two languages separate and let them sit in the same file. Lotus sent him a t-shirt, with a letter he still has.</p><blockquote><p>"As a token of our appreciation for your efforts developing Objective-C++, been authorized to present you on behalf of the Lotus Back Bay team, the coveted code talks, bullshit walks t-shirt." Okay? "The Objective-C++ compiler correctly compiles all our code, allows one to use all the features of both Objective-C and C++ in the same file, and was finished and delivered before we expected it." (p.38)</p></blockquote><p>Naroff on why it worked:</p><blockquote><p>I wish I could say, in retrospect, we were all so brilliant that, you know, all this great stuff worked, because we're such great planners. There was so much serendipity here. We didn't control Michael Tiemann. He came out of the woodwork. And doing what he did is serious work. C++ is a serious language, and it takes a very special person to do what he did. And we leveraged it. (p.38)</p></blockquote><h2>Putting Objective-C in the kernel so ten engineers could cover every PC on the market</h2><p><strong>Engineering &#183; NeXT and Apple, 1993 to 1997</strong></p><p>In 1993 NeXT stopped making computers and became a software company selling NeXTSTEP for Intel PCs. That meant supporting hardware NeXT did not control: every network card, every disk controller, from every vendor, each one needing its own driver. Blaine Garst was a NeXT kernel and runtime engineer.</p><p>The economics were bad before a line of code was written.</p><blockquote><p>We tried our damnedest to build a profitable product. And at some point the hardware, we couldn't make it on Motorola hardware. We shifted to Intel, tried to be an Intel-based NeXT computer box, but we had to pay the Microsoft tax. Every piece of hardware we sold had to pay. We had to pay 60 bucks to Microsoft because the manufacturers had this anti-competitive [arrangement]. They later were found to be guilty of monopoly practices in this manner. (Garst, CHM oral history, 2:46:59)</p></blockquote><p>Then the driver problem, and the fix.</p><blockquote><p>In order to be viable on an Intel we had to deal with a bazillion different drivers out there. There's a huge space on Intel. And so I put Objective-C into the kernel so that the kernel team could just subclass a new Ethernet driver. Just tweak, you know, with inheritance and just tweak a little bit and new Ethernet driver done. You know, and so that's how a team of 10 kernel engineers could put out a NeXTSTEP that ran on Intel, on many Intels. (2:47:39)</p></blockquote><p>Most network cards from a given family differ from their siblings in a handful of registers. In a language with inheritance, a new driver is the old driver with those differences overridden. Without it, each one is a copy with edits.</p><p>Then Apple bought NeXT, and the kernel came with it.</p><blockquote><p>They later shifted that Objective-C driver interface over to C++ when they got to Apple, right? I still, the kernel team still won't tell me who exactly did it. I think I know who did it, but because Objective-C was unknown to anybody at Apple and they just feared it and they wanted C++. So they made a C++ interface, but they change something in the compiler every release. And so now they're using an outdated compiler because it's the only compiler that'll generate [it]. (2:48:13)</p></blockquote><p>The interface that replaced his is the one Mac drivers are still written against.</p><h2>Prototyping a feature, getting his boss excited about it, then arguing it down himself</h2><p><strong>Engineering &#183; The NeXT-to-Apple transition, 1996 to 1997</strong></p><p>Objective-C sends a message to an object with square brackets: <code>[object doThing]</code>. Every other mainstream language uses a dot: <code>object.doThing()</code>. For developers arriving from C++ or Java the brackets were the first thing they hit and the first thing they complained about, and in the months between Apple announcing it would buy NeXT and the deal closing, Steve Naroff, who ran NeXT's compiler work, built the obvious fix.</p><blockquote><p>It sort of made sense as the new Apple that we might want to start fresh with this new syntax. Because it's more akin to C++ and Java. And I am, I'm not 100 percent certain that I prototyped it in isolation and then showed it to people, or whether someone sort of said, "Why don't you prototype this?" [...] But so I did it, and Avie got excited. And Ali Ozer's [AppKit] team was not thrilled. So perfect example of the tension between, wow, external programmers, that have never seen Smalltalk, aren't familiar with NeXT, but just want standard dot notation. They'll like this work. But the traditional NeXT people are having a fit. (Naroff, CHM oral history part 1, p.65)</p></blockquote><p>Avie Tevanian was his boss and about to run all of Apple's software. Ali Ozer managed AppKit, the framework the syntax would be used against. The people who wanted the change were the developers Apple needed to attract; the people who hated it were the ones who had built everything so far.</p><blockquote><p>Why I ended up being against it was, again, much more pragmatic. I said, "Oh, my god! Objective-C++ has been such a big thing in NeXT world, it's going to be probably just as necessary in the Apple world." And the beauty of Objective-C++ is the Objective-C message expressions are clearly segregated and distinct from the C++ code. [...] If we make Objective-C message sends look like C++, you will not be able to tell the difference. (p.65)</p></blockquote><p>Objective-C++ was his own earlier work: the ability to put both languages in one file. It worked because you could see at a glance which line was which. Dot syntax would erase that.</p><blockquote><p>Now, you could argue, "Oh, well, we're going to have a fancy code sense editor, and you know, the code editor will know, which is true, there's no doubt. The code editor can know, and the language knows. So there's no ambiguity in terms of the language, but just at a superficial level it makes the two languages more integrated, which is why people were excited about it on one level. So I thought keeping them semantically, syntactically and semantically distinct was better than syntactically similar, but semantically distinct. (p.65)</p></blockquote><blockquote><p>In the end, I sided with Ali's guys and said, "I can't in good faith push this." And I think Avie was very disappointed. And if my only goal in life was to make my manager happy, I would have given in. I would have, and he would have made the resources available. [...] But it's funny, because it just sort of dissipated. It just, and I used to have documents that, for all this stuff. And even that, I abolished from my library. There's no remnant that I could find of any of that. (p.65)</p></blockquote><p>A decade later Apple added dot syntax to Objective-C anyway, for property access, and Naroff says on the same page that he still thinks he was right.</p><h2>Hiring off the code instead of the resume, then setting the task that made a new compiler arguable</h2><p><strong>Management &#183; Apple's developer tools, 2005</strong></p><p>For twenty years Apple's compiler was GCC, the free compiler from the GNU project. It worked, and it was structured, on purpose, to resist being used as a library: its authors did not want proprietary tools built on top of it. That made everything downstream harder than it needed to be. An editor that understands your code, refactoring, fast incremental builds, good error messages: each one needs a compiler you can call as a component, and GCC would not be one. Steve Naroff, by then running Apple's compiler group, had lived with this since NeXT.</p><p>In 2005 an engineer in his group pointed him at a graduate student.</p><blockquote><p>When I looked at Chris's background and what he was doing, I was blown away because, to be honest, I hadn't hired many PhD students because most of them didn't have the hands on the keyboard as much as hands on writing papers. Not to take anything away from people who write papers, but Apple was much more oriented for people that had big ideas with writing code. And Chris's LLVM was open source as well. And so, I was able to look at it. It was much better than looking at the resume. (Naroff, CHM oral history part 2, p.14)</p></blockquote><p>Chris Lattner had written LLVM, a compiler back end designed from the start as a set of libraries, as his PhD work at Illinois. Because it was open, Naroff could read the thing itself rather than a description of it.</p><blockquote><p>Chris had went even further to, I'd say, make himself attractive to me and to a company like Apple where he integrated his LLVM work as a backend to GCC. So, it was like just amazing work on so many levels. And we brought Chris in. And Chris, it was just apparent from the first fifteen minutes that this guy is an amazing developer, designer, person. It didn't take more than fifteen minutes for me to realize we've got to hire this guy. (p.14)</p></blockquote><p>Then what he gave Lattner to do next.</p><blockquote><p>The other non-trivial goal I put on his task is to actually compile the entire system with GCC as the frontend using his LLVM backend, which I don't know how long it took him, but it far exceeded what I thought it would take a mere mortal to do. (p.14)</p></blockquote><blockquote><p>After he did that, since I'm a frontend guy [...] I said, "You know, Chris, it would be great if we can finally make a compiler, a full frontend, middle, backend, that truly is library-based that is truly going to meet our compile time goals. And while GCC has been great for well over a decade, it's time for a new compiler that will support the IDE." [...] So, I pitched starting Clang. (p.14)</p></blockquote><p>Clang is the compiler every Apple platform has been built with since, and LLVM is now underneath much of the industry's tooling.</p><h2>"You're not good enough": told he could not present his own work, and calling the car to ask why</h2><p><strong>Leadership &#183; Apple, 2002 to 2003</strong></p><p>Steve Naroff ran Apple's developer tools. In 2002 he took four engineers and some of Jobs's interface designers and spent four months prototyping a redesign of Project Builder, the tool developers wrote Mac software in, so that it looked and behaved like the rest of Mac OS X instead of like the NeXT application it had been. It became Xcode. This is about the meeting where he showed it.</p><blockquote><p>We arranged a meeting with Steve Jobs and Phil Schiller and Ted, and I forget exactly who else was there, but those were the main, Avie was there. That's right. So we had lots of vice presidents in the room, and I gave Steve the demo, and Steve was thrilled, absolutely thrilled. What I thought was going to be a 15-minute demo ended up being a lot longer, because there was a lot of talk in the room. [...] Steve had said, "Well, we have to demo this at my keynote at the developer conference," which was great news. I was like, wow, that's great, and he said, "Who should demo it?" and since I had just given a pretty good demo, I was feeling great. I said, "Well, I'll do it," and he said pretty quickly, and I'm not so sure these are the exact words, but, "Oh no, you're not good enough." (Naroff, CHM oral history part 2, p.4)</p></blockquote><blockquote><p>I was like, because it's a room of VPs. I had just done this great thing, and he's happy. Well, that was terse, "I'm not good enough." So I shut my mouth, because it wasn't worth getting into it with him there, and he said, "Let's get Chris Espinosa," who was, as you know, with him in the garage, still at Apple today, and Chris worked for me I think at the time working on AppleScript. But Chris was a great presenter, and, yeah, he's very charismatic on stage and just a great speaker. So I said, yeah, cool, so let's ask Chris to do it. Okay. I was quickly past the hurt feeling. (p.4-5)</p></blockquote><p>He was not quickly past it.</p><blockquote><p>The meeting ended. I went back to my office, sulked a little bit like I usually do when that type of thing happens, and I decided I'm going to pick up the phone and call Steve. So I called him, and his, he had someone that was a dispatcher that would find him, so she picked up, and she said, "I'll find him, no problem." So she patched me through. He was driving, and I said, "Steve, why'd you have to do that? I mean, what was that about? You were happy. I just worked my butt off," and he said, "Listen, Steve. I trust you with engineering. You're a great engineer. You've been a great manager over the years. You're not a great presenter," and he said, "It's my stage, and I need to make sure I have the best person there. You've done great stuff. I'm not taking away from that." (p.5)</p></blockquote><blockquote><p>I said, "Well, that's great to hear, Steve, and I agree with you. I just wish you would've said it like that in the meeting," and he just said, "Well, they all know you're great, and so I didn't have to say it." (p.5)</p></blockquote><p>Naroff, years later:</p><blockquote><p>Looking back, there's no doubt that sometimes I'm sure I was a little thin-skinned, but when you're in the bomb run, the trenches, whatever you call it, and you're working really hard, it's tough to be talked to like that. But what was great about Steve and why we always maintained a great relationship [...] is he understood and, in fact, then obviously patted me on the back and made me feel good. So he was someone that respected that I picked up the phone rather than let it linger or hold a grudge. (p.5)</p></blockquote><p>Chris Espinosa gave the demo at WWDC 2003.</p><h2>The bug thirty engineers could not find, and the phone that shipped with it</h2><p><strong>Engineering &#183; The iPhone, 2006 to 2007</strong></p><p>A phone has two brains. The application processor runs the operating system and everything you touch. The baseband is a separate processor with its own operating system, running the cellular radio, and in 2007 Apple bought it as a black box from a vendor. The two talk over a serial line. Andy Grignon ran the iPhone's radio engineering, and his account starts with how many other things were new at the same time.</p><blockquote><p>Now we've got everything changing. The apps are different. They have to be custom. We've thrown in fingers as the input mechanism, instead of a mouse, which was actually a pretty big difference. We had never built a keyboard before. [...] So, we had every layer of the stack custom, different, new, full of bugs. And it should come as no surprise that, by the way, with a deadline that was immutable, right? This deadline couldn't change. And Steve was betting the company on it. (Grignon, CHM oral history, p.22)</p></blockquote><p>New chip, designed in-house. Operating system ported to a processor architecture it had never run on. New toolchain. New apps, after the plan to reuse the Mac's had failed. What that does to debugging:</p><blockquote><p>Imagine you're an engineer in this morass, right? And you go to Mail, you check the thing and the phone reboots, which happened all the time. Whose bug is it? Is it the operating system? Is it Mail? Is it the tool chain? Or hey, maybe it's the bug in the silicon, which happened. (p.22)</p></blockquote><p>Several times the whole program stopped because nobody could get past a problem, and the people who had written the software that generated the chip had to be flown in to sit with Apple's hardware engineers. Grignon's explanation for why vendors agreed to that is that they thought they were working on the next iPod. Then the worst one.</p><blockquote><p>One of the worst ones was we had, of all things a problem with what's called a UART, and the UART is the serial block of a chip. It's been around since the dawn of chips. It's the oldest thing ever. It's a serial line, and ours had a problem with it so that the connection between the chip that made phone calls and the main chip that ran all the software in very certain circumstances but not as rare as you'd think, that link would go dead and that would result in effectively a dropped call with the chip that made the phone calls rebooting itself, and so, you now couldn't make a phone call until it came back up. (p.23)</p></blockquote><p>The signal bars went to zero every time it happened. After the phone shipped, Grignon changed his license plate to ZROBARS.</p><blockquote><p>We couldn't figure it out, and you'd have a guaranteed reliable link between these two chips and it's failing. Why? We had rooms full of people, like 30 people who would single step through to see what the hardware is doing. Register by register, it latches this, it does that. Nobody could figure it out. (p.23)</p></blockquote><p>They shipped anyway. The fix was not a fix.</p><blockquote><p>We actually shipped the very first phone with this bug in it, but [...] we took a piece of the Bluetooth stack [...] HCI, something like that. It was a piece of the Bluetooth stack, 'cause Bluetooth radios give you a serial port but it's over a lossy connection, so it's effectively a UART over wireless, which, so Bluetooth solved that problem of a lossy UART, which is supposed to be a hardwired thing. So, we implemented that between our main processor and our phone processor so that when the UART shit the bed that layer kicked in and it kept the link alive and it effectively did a reboot but the chip didn't restart itself. (p.23)</p></blockquote><p>Bluetooth has a layer whose whole job is to keep a serial conversation going over a radio link that drops packets. They took that layer and put it on a wire that was never supposed to drop anything.</p><p>Later in the interview Grignon comes back to why it was missed, and the answer is about testing rather than hardware. He had written the bring-up software for the chip, the code that runs before any library exists and asks whether the silicon can add.</p><blockquote><p>You'd be surprised at the things you catch, and we should have caught things in that UART that went sideways. Like, we wrote a bunch of unit tests that test, can this thing move data? Yes, it can move data. We didn't check all of the conditions, and so, that was where we got bit on that. (p.46)</p></blockquote><h2>Shooting a process in the head instead of auditing every allocation</h2><p><strong>Engineering &#183; The iPhone, 2006</strong></p><p>The iPhone's software was built from Mac OS X, and Mac OS X assumes it will never run out of memory. On a desktop that is true enough: when physical memory fills, the system pages to disk and slows down. The phone had no paging and a fraction of the memory, so running out was not slow, it was fatal. Richard Williamson, who led the iPhone's Safari and WebKit work, describes what that meant for code inherited from the Mac.</p><blockquote><p>It's pretty clear that we had to do something because the frameworks on OS X are written with the assumption that you have unlimited memory because you have virtual memory. So if you run out of physical memory you swap. And so almost no software is written with malloc, assuming... (Williamson, CHM oral history part 1, p.72)</p></blockquote><p>Ken Kocienda finishes the sentence: "Malloc can't fail." Malloc is the routine every piece of software calls to get memory. On the Mac it always succeeds, so nobody checks whether it did.</p><blockquote><p>Nobody checks whether or not they get a pointer back, whether they got a return value. So we weren't going to rewrite a lot of the software that we imported from OS X onto the iPhone. So it's pretty clear early on we had to do something. (p.72)</p></blockquote><p>The thorough fix was to go through every allocation in every framework and add the check. Nobody had time for that. Williamson's alternative:</p><blockquote><p>The solution was, use a gun and shoot a process in the head if it's misbehaved. So the idea was, in the kernel we were monitoring memory allocations. And if memory levels were getting low or there was an application that was abusing memory we'd just kill it and give precedence to the foremost application. So when you dismiss an application on the phone it doesn't necessary exit. It's given a bunch of opportunities to do things before it has to exit. And if it doesn't exit then we kill it with Jetsam. (p.72)</p></blockquote><p>The name is the nautical term for cargo thrown overboard to save the ship. Rather than make every application handle scarcity, the kernel watches the total and throws applications out, starting with the ones you are not looking at. The application never learns memory was short; it just stops existing.</p><blockquote><p>We met with the kernel guys and pushed this idea forward. And they were like, you know, you're crazy. This is ridiculous. What's going to happen? How are things going to get cleaned up? But eventually they came around. And we implemented it. So it's remarkably seamless, how memory management works on the iPhone. You know, you really don't notice when applications exit and start. (p.72)</p></blockquote><p>Jetsam is still what does this on every iPhone. It is why an app you left an hour ago sometimes reopens from scratch, and why the phone almost never tells you it is out of memory.</p><p>The same passage records an argument Williamson lost. He wanted more RAM.</p><blockquote><p>I was a huge advocate for more RAM and the hardware guys went no. And we're talking about pennies. But they insisted on living with the RAM that we had. (p.72)</p></blockquote><h2>iMovie's interface shipped as a live Photoshop file, and nobody was told for four versions</h2><p><strong>Engineering &#183; iMovie, 1999 to 2000</strong></p><p>In 1999 there was no pipeline from a design file to a running interface. A designer produced an image; an engineer cut it into pieces, gave each piece a name, and compiled the pieces in. Every visual change, every shade of a button, cost a build. Glenn Reid, who had come from NeXT and was running the small team building iMovie for the iMac, describes what he and a designer did about that.</p><blockquote><p>iMovie, no one knows this except now everyone knows this because I'm being recorded, but we had the same problem. Like we were writing a C program to make movies. We actually had a fixed screen size because it shipped on the iMac, but there were a lot of cooks in the kitchen as to what the interface should look like. (Reid, CHM oral history, 1:35:18)</p></blockquote><p>The designer was Priscilla Shih, hired from Fractal Design.</p><blockquote><p>She and I came up with this scheme. Basically we knew we'd have to keep reprogramming the interface, so we designed a Photoshop file format. We used the layers in Photoshop to represent, for example, a button. You have a mouse-over state and a click state, they change colors a little bit, so those would be four layers in Photoshop. And we made up a little language in the Photoshop layer names, like this is the mouse-over state, this is the click state. We sort of recreated Interface Builder inside Photoshop files, if you will. And then we taught iMovie how to open and read in the Photoshop files to display the interface. (1:35:47)</p></blockquote><p>Interface Builder was NeXT's tool for laying out interfaces visually; Reid had come from the company that made it. The point of the scheme was who could change what.</p><blockquote><p>Because the artists were always changing the bits on us and we would have to keep redoing it. So we were able to give them the Photoshop file and say change it all you want, just don't mess up the layer names, because that's necessary. And we could read the entire, I think there were about 300 layers in the Photoshop file, and we could read the whole thing in and display it in half a second. So it was like a really good way to do user interfaces. (1:36:33)</p></blockquote><p>A development convenience, until it wasn't.</p><blockquote><p>We decided to ship it that way. So built into the first four versions of iMovie was a Photoshop file where we changed the file type so you never knew it was a Photoshop file, and would just read it in and that was your user interface. But if you knew that that was a Photoshop file you could literally open it up in Photoshop, change it and save it again, and iMovie would, you could skin iMovie if you knew that. (1:37:03)</p></blockquote><p>It got better.</p><blockquote><p>In fact you could do it while iMovie was running, because we needed that. So iMovie every two seconds, every one second, would check the file modification time on this Photoshop file, and if it had changed it would dump the UI and reload it. And so we could in real time play around with the user interface while the app was running, and move the button and change the title on it and stuff. It made it much easier for us to do our work, but we didn't really want people to be re-skinning it and screwing around with it, so we just didn't tell anybody. (1:37:28)</p></blockquote><p>Reid says on tape it is the first time he has told the story.</p><h2>Passing one Safari benchmark with a branch to an absolute address</h2><p><strong>Engineering &#183; Objective-C garbage collection, Apple, around 2006</strong></p><p>Objective-C made programmers manage memory by hand, and getting it wrong was the main source of crashes on the Mac. Garbage collection promised to handle it automatically, at a price: a collector has to watch memory reads and writes, and that watching costs time on every one of them. Blaine Garst, who had built NeXT's runtime and was now at Apple, was the person shipping it.</p><p>The gatekeeper was named, and so was the test.</p><blockquote><p>I did a cardinal sin when I introduced garbage collection at Apple. In order to make it fast, I had to prove to Scott Forstall that it wouldn't slow down Safari. (Garst, CHM oral history, 2:55:19)</p></blockquote><p>Scott Forstall ran Mac OS X applications. Safari was the benchmark because it was the application whose speed users noticed most, and a garbage collector's overhead shows up on exactly the kind of tight loops a browser runs. Garst needed the cost of the check to be invisible, and there was one way to make a check that cheap.</p><blockquote><p>The garbage collector intercept point, I broke a cardinal rule. I had the compiler issue a hand-coded instruction to branch to a routine at an absolute address. So how many people get to deploy absolute-addressed entry points in application code? (2:55:38)</p></blockquote><p>Normal code never jumps to a fixed address; the operating system decides where things live, and hard-coding a location is the sort of thing that gets a patch rejected. On the PowerPC there was an instruction that could do it, and it could only reach two places.</p><blockquote><p>The instruction was branch and link absolute, BLA, like my name, Blaine, almost. And it could only branch to the top part of core or the bottom part of core. Bottom part of core, address zero, was taken. So we branched to the high-end address. There was a page or two of possible branch points for that instruction. So we took over the highest page of memory. (2:56:02)</p></blockquote><p>Then the swap.</p><blockquote><p>On the launch of any process we do a little quick check. Are we running garbage collected or not? And if we were, we'd swap out the entry points up there that would go off and do what we call read barriers and write barriers for garbage collection. And if you weren't running garbage collection, it would simply return. So it was a branch and link and return immediate, which was imperceptible in the Safari measurement. So we got to do garbage collection. (2:56:24)</p></blockquote><p>Every memory access in every compiled program got a jump to the top page of memory. For a program not using the collector, the routine there did nothing and came straight back, fast enough that Safari's numbers did not move. For a program that was, the same address held the real barrier code, installed at launch.</p><p>The feature shipped in Mac OS X Leopard. Apple deprecated it a few years later in favour of a different approach.</p><h2>A crash converted into a beep, and a linker fix nobody would make</h2><p><strong>Engineering &#183; The original Macintosh, 1983 to 1984</strong></p><p>The first Macintosh had 128 kilobytes of memory. Applications did not fit in it, so their code was split into segments that were loaded when needed and thrown out when not. Two stories from that constraint, told by the two people who lived closest to it: Bill Atkinson, who wrote QuickDraw and MacPaint, and Andy Hertzfeld, who wrote most of the Toolbox.</p><p>Hertzfeld sets the frame, and he does not flatter it.</p><blockquote><p>We were really fighting against a very, very small amount of memory. That's because memory was one of the most expensive components and we wanted our computer to be affordable to ordinary people. So we worked really, really hard to get it to fit in a tighter spot than it really could. And so a lot of the fragility in Mac programs was caused by, we were really shoving more functionality in there than we could fit. (Hertzfeld, CHM MacPaint oral history, p.13)</p></blockquote><p>Atkinson has the number for MacPaint.</p><blockquote><p>I know that MacPaint in its worst case had 134 bytes free. And I could drive it to that state by loading the right big font. And all that and one of the challenges is how do you prove that you've found the worst case use? (Atkinson, p.13)</p></blockquote><p>The answer to that was a tool that came out of something else entirely. Steve Capps had been asked to build a recorder so the team could make tutorials that played the computer back to itself.</p><blockquote><p>So make a mechanism where he could record events and feed them back. So he had the brilliant insight well, you don't have to record the events to feed them back. (Hertzfeld, p.13)</p></blockquote><blockquote><p>You could make them up. (Atkinson, p.13)</p></blockquote><blockquote><p>You could just make them up. And so that became a measure of robustness of Macintosh applications is how many minutes or hours could they survive the monkey. And eventually after a lot of work they could last all night. (Hertzfeld, p.14)</p></blockquote><p>The Monkey typed random keys, picked random menu items, and dragged random tools across the screen, forever. Anything that leaked memory on any path would eventually die under it. Atkinson: "MacPaint went two weeks once." (p.14)</p><p>That leaves the failure the Monkey could not prevent: fragmentation. Enough memory in total, but no single hole big enough for the next segment.</p><blockquote><p>When code segments were loaded, you needed some code to do this job and that job. They would be loaded sort of at the first available place. But if you needed another code segment and this one would go out, it might leave a hole there that wasn't quite big enough for the next one that you needed but now you had sort of what we called memory fragmentation. That even though you had enough memory total, you couldn't load the pieces of code that you needed. (Atkinson, p.14)</p></blockquote><p>Atkinson's fix did not fix it.</p><blockquote><p>I developed a little technique for this which is setting a flag at the top of the event loop, saying that we failed and as I went to load code segments, if I failed to load one then I would beep and let it go back to the top of the event loop without doing anything. [...] The net result was the user would go to draw something and it would beep and they would try it again and it would work, and they'd shrug and they'd never know that they just avoided crashing the program. (p.14)</p></blockquote><p>A segment fails to load. Instead of crashing, MacPaint beeps and returns to waiting for input. The user tries again, memory has shifted, it works.</p><p>The other story is about the machinery that did the loading, and it is in Hertzfeld's separate session, cut from his book as too technical. The segment loader needed a small change to the linker, which ran on the Lisa and belonged to the Lisa team.</p><blockquote><p>I needed some support from the linker, which runs on the Lisa. I didn't have access to the linker source code. Just to make a simple change, just off multiplying something by eight instead of six when it was building something. So, there was no technical limitation. You know, there was nothing hard, but the guy responsible on the Lisa side for doing that hated the Mac, and wouldn't do it [...] I think I never tried to get Steve on it, just because of its technical nature, but I had to come up with a horrible hack that made everything work without them changing it. After the Mac shipped, the guy finally made the change for it, but it was precarious what I was doing. I knew it was, but I got away with it. (Hertzfeld, CHM oral history part 1, p.33)</p></blockquote><h2>Moving the menus to the top of the screen, and the second invention that paid for it</h2><p><strong>Design &#183; Lisa and Macintosh, 1980 to 1983</strong></p><p>The mouse was new enough in 1980 that basic questions had no settled answers, including how far the pointer should travel for a given movement of the hand. Bill Atkinson, who wrote QuickDraw and much of the Lisa's interface before moving to the Mac, worked on those questions at home on one of a handful of Lisa prototypes and brought the results in as Polaroids.</p><blockquote><p>I had a Lisa prototype in my home and there were only a few of them, and I would do user interface development at home and then ride my motorcycle in to Apple and show them, show Polaroids to the Lisa team. I took Polaroids and I would bring them in. And so I actually have sort of chronicled in those Polaroids a step-by-step how we bumbled through the user interface for the Lisa which became pretty much what we had on the Mac. (Atkinson, CHM MacPaint oral history, p.4)</p></blockquote><p>One of the steps was where menus live. Every graphical system since has put them at the top of the window, the top of the screen, or both, and the choice is not cosmetic.</p><blockquote><p>At one point I had, I moved the menus from being, I think at that point they were at the top of the window, I moved them to the top of the whole screen so I could always have the full width. If the window was stubby you didn't have to lose any menu titles. And also I'd always have the full height. If the window was down near the bottom, what do you do? Are you going to bounce it upwards or how do you get the menu to show right? (p.4)</p></blockquote><p>Then the effect nobody designed for.</p><blockquote><p>Because the titles were short and the items were long it kind of multiplied your screen real estate by like three times but you sort of didn't realize it. They just appeared. A given menu item was always at the same place on the screen. It was sort of a kinesthetic thing. You could go and move to and start the action before you even sort of, you know, totally aware of what you were doing. (p.4)</p></blockquote><p>Andy Hertzfeld adds the mechanical reason it worked: "Because they were at the very top, you didn't have to aim. It would just, you would just go all the way up." (Hertzfeld, p.4)</p><p>The Lisa's application writers did not see it that way.</p><blockquote><p>When I first moved them from the top of the windows and the Lisa application writers screamed. They said "That's going to be so much farther to reach because then we can't, you know, we can't just reach up to the top of the window. We'll have to go all the way to the top of the whole screen." (Atkinson, p.4)</p></blockquote><p>The objection was correct. The fix was a second invention.</p><blockquote><p>I think this is about the time we incorporated variable speed mouse scaling. [...] That if you moved quickly you got a different gear ratio. So millimeters on the table to millimeters on the screen, you'd move more millimeters on the screen if you were moving quickly and that way you'd make sort of a quick upward move and it would move all the way to the top easily and pin there because there wasn't anywhere else to go. [...] It was actually easier than the top of the window because you could overshoot the top of the window. (p.4-5)</p></blockquote><p>And the second invention turned out to be necessary on its own.</p><blockquote><p>That also solved this problem of how do you point between two lowercase "I"s? You need sort of the mouse to go into compound low where a lot of millimeters on the table makes a few millimeters on the screen so you can very carefully point between them. Now I remember the Lisa team saying "Oh this is not going to work. The mouse is going to fall in your lap." You know if you move up quickly and down slowly, eventually it will fall in your lap. And it sort of does but nobody notices. Every so often they pick it up and reposition it and it worked. (p.5)</p></blockquote><p>Hertzfeld, at the demo machine during the interview: turn the scaling off in the control panel and try to use the Mac without it. "I don't think you'll last more than a minute." (p.5)</p><h2>Stopping work on the Finder to build the database underneath it, against orders</h2><p><strong>Engineering &#183; The original Macintosh, 1982 to 1984</strong></p><p>Bruce Horn came to Apple at 22 from Xerox PARC, where he had spent his teens in the Smalltalk group. He wrote the Finder, the program that shows you your disks and files, and he wrote the Resource Manager, which almost nobody outside Mac programming has heard of and which is why the Finder, and everything else, could exist in 128K.</p><p>The Finder started as a demo of something that did not exist.</p><blockquote><p>I had an idea of the files and folders idea. [...] I thought I would do that instead, and the idea of you could open a folder and look at it and close it and so on, I did a demo of that actually from not even looking at the file system, but just looking at a text file that kind of described what a file system might look like. So it read in the text file and you could kind of navigate this. And that was my demo of what I think it should look like. And then I ended up writing the real Finder after that. (Horn, CHM oral history, p.13)</p></blockquote><p>A fake file system in a text file, navigable, shown as "what I think it should look like." Then, on the way to building the real one, he stopped.</p><blockquote><p>Because I kind of think of foundational things, I was thinking, "Well, how am I going to store the icons? How am I going to store the strings?" and so on. And one of the things that I cared about was I wanted to make these programs be able to be done in different languages and not have to rewrite the code, right? So I wanted to separate out all the language stuff from all the code itself. And I started thinking about, well, if I had a little object-oriented database [...] So I ended up going off of my track. And I kind of stopped working on the Finder and working on the fundamental part that would support the Finder and everything else with this little object-oriented database, which was called the Resource Manager. (p.13)</p></blockquote><p>Resources are the parts of a program that are not logic: every string, icon, menu and dialog layout. Keep them separate from the code and you can translate a program to Norwegian, or redraw its icons, without recompiling it. In 1982 that separation was not standard practice, and Horn's version of it had to fit in what was left of the ROM.</p><blockquote><p>I only had three k-bytes of assembly code to work with. That was what was left in the ROM to build an object-oriented database in assembly code. So it worked out, but it was a struggle to make it fit. (p.16)</p></blockquote><p>His manager, Bob Belleville, did not agree that the visible deliverable should wait for its substrate.</p><blockquote><p>Bob and I disagreed on the importance of the Resource Manager. And I just wouldn't yield. I basically said, "No, we have to have this." Right? Because I was counting on it for the Finder. Bob thought, "What's this computer? It's just going to be another computer down the road and another one after that. What's so special about this Mac?" And I thought it was, here was my chance to really do it right, the way I thought it should be done. And so I basically just told him, "I have to do this." And I had backup from Andy and also from Steve to finish the Resource Manager. (p.15)</p></blockquote><p>He got the backing, and he did not make the date.</p><blockquote><p>I do remember at one point promising something about being done in two or three months, and I put stickies up day by day all around my cube, three months' worth. And I'd pull one down every day. And Andy recalls that after the last one was pulled down, I kept working on the Resource Manager anyway. But by then, it was obvious that it was the right thing to do. (p.15)</p></blockquote><p>Why it was obvious: Hertzfeld rewrote much of the Toolbox to use it, so windows and menus and dialogs all lived in resources, and with memory that tight the ability to load and unload objects on demand was not a nicety.</p><blockquote><p>I don't think it would have been possible to do, have the internationalize-able system that we had. I think that we probably wouldn't have been able to do the complex programs that we'd had, because the Resource Manager would allow you to kind of swap in and out objects as you needed them. And we were so constrained with memory that we needed that capability. (p.16)</p></blockquote><p>Then he finished the Finder, with Steve Capps pushing it over the line at the end.</p><blockquote><p>The Finder was 46K bytes. Forty-six K bytes, right and the Lisa Filer that they had done, they kind of redid the Filer after they saw the little pre-demo that we did of the Finder, that I did of the Finder. That weighed in at, like, 360 K bytes. So ours was only 46 K. (p.18)</p></blockquote><h2>Why you could name a Mac file anything you liked</h2><p><strong>Design &#183; The original Macintosh, 1983</strong></p><p>Every other system in 1983 identified a file by its name. The letters after the dot told the machine what kind of file it was, and if you renamed it wrong the machine lost track. The Mac did not work that way, and the reason is a design decision Bruce Horn made while building the Finder, which he describes as coming straight out of how he had learned to think at Xerox PARC.</p><blockquote><p>I had this idea of a Type and a Creator. [...] The concept of a Type and a Creator was unique and new to the Mac. Where the Creator would basically be what an application would export as, "This is who I am." And the Type was, the file would say, "This is the kind of thing I am." And you would bind those together. (Horn, CHM oral history, p.13)</p></blockquote><p>Two four-letter codes, stored with the file but not in its name. The Type says what the file is. The Creator says which application made it and should open it. The Finder kept the binding between them in a database of its own, so double-clicking a document knew where to go without asking the filename.</p><blockquote><p>So the Type and Creator system was the thing that allowed you to, for example, name a file anything you like, and all of the type and creator information would be hidden away in the file system that Larry [Kenyon] did. And that was just a bonus. We wanted to name anything you wanted to name and type it with spaces, and we didn't want to have filename suffixes or any of that stuff. We just wanted it to be very natural. And so Type and Creator came out of that. (p.13)</p></blockquote><p>The interviewer asks whether the plan from the start was no extensions, just names. Horn's answer is that the question is backwards.</p><blockquote><p>No, no. These things are objects, right? They have types. They're of a particular kind, right? We want the file to be an object. And so with the file as an object, where do you keep its type, and if it's going to be manipulated by an application, how does it know? And all that had to be part of the system that was built and supported by the Resource Manager, the Type and Creator, and Desktop Database. (p.14)</p></blockquote><blockquote><p>I grew up thinking object-oriented because I came out of LRG. And I wanted to do as much as I could that would make the system be as dynamic as it was in the Smalltalk world. Of course, you can't do that if you've got a tiny, tiny computer, your operating system is all in assembly code in ROM. How do you make things dynamic? And the best I could do was this object-oriented database. (p.14)</p></blockquote><p>LRG was PARC's Learning Research Group, Alan Kay's Smalltalk team. Horn had been inside it as a teenager.</p><p>The design lost, eventually. Mac OS X adopted extensions, because the rest of the world had them and files had to travel.</p><h2>Choosing the processor so they could keep the graphics library</h2><p><strong>Engineering &#183; The Macintosh, 1981</strong></p><p>The original Macintosh design, under Jef Raskin, used a Motorola 6809, an 8-bit processor cheap enough for a machine meant to sell for under a thousand dollars. The Lisa, Apple's other project, used the 68000, a 16-bit processor with far more power and a price to match. Bill Atkinson was writing QuickDraw, the graphics library, for the Lisa and its 68000. The Mac team's plan was to rewrite it for the 6809. Andy Hertzfeld describes how that plan died.</p><blockquote><p>Bud not only made the decision to use QuickDraw, he made the decision to use the 68000 so we could run QuickDraw. Bud was Bill's best friend. They went to college together. They both went up to Seattle together for grad school. [...] Bud was writing, essentially taking the QuickDraw design, but rewriting it for the 6809 chip that the Macintosh was using at the time, but every evening, seeing what Bill was doing on the 68000 and said, "Boy, I sure wish we could use that. You know, we'd save a year or something like that, if we could do that." (Hertzfeld, CHM oral history part 1, p.19)</p></blockquote><p>Bud Tribble was the Mac's software manager. He was doing the port himself, which is how he knew what it would cost, and he could see the finished version running every evening on a machine he was not allowed to use. The problem was the price.</p><blockquote><p>So he told Burrell, "Hey, isn't there some way we can get the 68000?" Well, we can't for the price point we were aiming at. We could only have one row of RAM. Then Burrell was brilliant, brilliant guy, was inspired, he saw a way to do it, to run the 68000 with only an eight-bit data bus, which was impossible, because it had 16 data lines. But Burrell devised an incredibly clever scheme that he called the bus transformation circuit, which not only allowed him to use the only eight chips, but it ended up being twice as fast as the Lisa design. So, it was both 1/3 the price and twice as fast, this 68000 prototype that Burrell came up with. (p.19)</p></blockquote><p>Burrell Smith designed the Mac's hardware. A 16-bit processor wants 16 memory chips, one row per bit, and the budget allowed eight. His circuit let the processor talk to half as many chips and came out faster than the Lisa, which had all sixteen.</p><blockquote><p>Once we had the 68000, it was obvious we were going to use Bill's QuickDraw as much as we could. I had to make changes to it to adapt it to the Mac's memory management model, which was different than the Lisa's. So there were, I would say, just we used 90 percent of what Bill did, just straight out. (p.19)</p></blockquote><p>The prototype also changed who was interested in the project.</p><blockquote><p>Jef hated it. And as soon as Burrell came up with the 68000 prototype, Steve got very interested in it. Jef was not interested, but Steve was interested in it. (p.19)</p></blockquote><h2>The keyboard that lost to layouts that worked better, and why</h2><p><strong>Design &#183; The iPhone, 2006</strong></p><p>Before 2007, typing on a handheld meant a physical keyboard, a stylus, or pressing a number key several times to reach a letter. Nobody had shipped a good keyboard on glass. Bas Ording had designed much of the Mac OS X interface and was now doing the same for the iPhone, and the keyboard was the part he was least sure could be made to work.</p><blockquote><p>We knew it was going to be tricky to get it to work. We had already done some keyboard stuff on the bigger touchscreen. And so definitely I go like, "Oh, now it has to be on an even smaller screen, like this is going to be, this is not going to be easy." So it took us a long time, and like other engineers worked on it. And like come up with ideas, like all kinds of different things just to see, "How can we make something that actually where you can type on it?" (Ording, CHM oral history, p.44)</p></blockquote><p>The interviewer notes there was a contest: keyboard design was opened to the engineers, and everybody built one. Ording confirms it, and says what the best entries had in common.</p><blockquote><p>There was some interesting ideas, or stuff that worked really quite well, where you can't do it wrong really, but then it would be awkward, you'd have to do too much taps or too many swipes or it would just look too weird that you don't recognize it as a normal keyboard. (p.44)</p></blockquote><p>Layouts existed that were more accurate on a small touchscreen than QWERTY. They made errors nearly impossible. They lost.</p><blockquote><p>I think in the end, Steve decided that it needed to be like a QWERTY keyboard, of course, if that can work well, because as you see it, "Oh, yeah! Keyboard!" No big deal, everyone knows what that is. And you know how to type it. You don't have to learn anything. It's like you'd have to be a little more careful, I guess, but then there's like a bunch of smart people that figured out like clever algorithms, how if you type a word, that it makes the best out of it and even if you're a little off, it still corrects it and all that, so it ends up working pretty well. (p.44-45)</p></blockquote><p>Ording, on the state of mind before the correction software worked: "At first we thought, 'I'm not sure how this is going to work at all!'" (p.45)</p><h2>The three decisions Hertzfeld got wrong, in his own list</h2><p><strong>Engineering &#183; The original Macintosh, 1984</strong></p><p>Most accounts of the original Mac's software are about what its authors got right. Andy Hertzfeld, asked in 2025 about the decisions that hurt the platform later, gives a list, and each item on it was made for the same reason.</p><blockquote><p>The most obvious one, I would say, was running in supervisor mode on the 68000. That was indicative of, get our drive to simplicity. We basically would remove complexity in the model and just make it simpler for the developer, really, if you just didn't need to manage that. That was wrong, because we were going to evolve into a system that needed more protection. We got rid of some of that basic protection, just because we wanted to keep it simple, but that was too simple, I think. (Hertzfeld, CHM oral history part 1, p.23)</p></blockquote><p>Supervisor mode means every program ran with full authority over the machine. There was no wall between an application and the system, so a bug in one could take down everything.</p><blockquote><p>Another bad blunder I made, was using low memory like the Apple II did. I just saw the way the Apple II did the operating system and thought that was good enough and cool. You actually, by putting the global variables in the memory, you save memory space, because the first 32k of memory, the 68000 could address just in a two-byte address instead of a four-byte address. So, I thought that was a good idea, until you considered, well, we wanted to run two programs at once, they both would fight over the memory variable, so that was not a good decision. (p.23)</p></blockquote><blockquote><p>Another one like that was we added some features, I did myself, to the memory manager. [...] So we put the flag bits to control these new features. Was this object purgeable from memory, etc. We put them in the block header because, well, the 68000 had a 32-bit address, but we were only using 24 bits of that in the model. So, we thought we could use those higher order bits as pointers, simplify things and make things a little faster. That was a disaster a few years later, because we couldn't expand memory past what turned out to be an insufficient limit, and so, we could fix that by changing the system to put those bytes in a different place, but it caused chaos and messed up the early developers, some of them. (p.23)</p></blockquote><p>The processor could address more memory than the machine had, so the spare bits in every pointer were used to store flags. When Macs got enough memory to need those bits, every program that had touched them broke. Hertzfeld had told developers not to. "But people did anyway."</p><p>The interviewer offers the summary: decisions that seemed reasonable because the machine had to be simple and cheap, and bit the platform later. Hertzfeld goes further than agreeing.</p><blockquote><p>We didn't know what we were designing for, as history has proven. We thought we were trying to make an exquisite product that's as fast and as inexpensive as possible, but that that would be replaced by an entirely different one within three or four years, just as the Mac was replacing the Apple II, we thought something would come along and replace the Mac. We had no idea that it would last, you know, some of these basic architecture things would last for a decade. So, what we were really doing was designing the first of a long-running platform, but we didn't understand that when we were building it. [...] We hyper-optimized to the machine, where it was in 1984, and it would have been better to make it a little less efficient, a little more memory consumptive, to give it an easier transition into the future. (p.23)</p></blockquote><h2>Building overlapping windows because he thought he had seen Xerox do it</h2><p><strong>Engineering &#183; QuickDraw, 1979 to 1983</strong></p><p>Overlapping windows are harder than they look. If one window partly covers another, the machine has to know exactly which pixels of the back window are visible, which means computing an arbitrary shape and clipping every drawing operation to it, fast enough to keep up with typing. The alternative is to redraw everything from back to front each time, which is simple and slow. Bill Atkinson wrote QuickDraw, the graphics library under the Lisa and the Mac, and he solved the hard version for a reason Andy Hertzfeld tells on his behalf.</p><p>First, why it mattered. Atkinson on the state of the art:</p><blockquote><p>When you have windows you've got sort of one window and another one obscures parts of it and another one. So when you draw into one of the behind windows you have to clip it to some arbitrary area made by the shapes of the other ones that are overlapping it. And there were ways to draw clipped information of the SIGGRAPH core stuff, you sort of pre-divided the line segments and things like that. But they were only about two orders of magnitude too slow to do a real word processor with. (Atkinson, CHM MacPaint oral history, p.2-3)</p></blockquote><p>A hundred times too slow. Then the famous 1979 visit to Xerox PARC, where Apple's engineers were shown the Alto.</p><blockquote><p>Should tell the funny story about how during the Xerox PARC demo, Apple got one demo from the Xerox stuff, and Bill thought that he saw them drawing into behind windows, windows that weren't the topmost window. And so he knew it could be done and he worked really hard to make it. It turns out that was erroneous. They weren't doing it. He solved, he was motivated to solve the problem because he thought he saw an example but it really was a fundamental problem and they hadn't solved it but Bill did. (Hertzfeld, p.3)</p></blockquote><p>Atkinson's version, including the conversation with PARC afterwards:</p><blockquote><p>Sometimes a little ignorance can be very motivating, and later I think one of the people from PARC said "How did you do that?" "What? I thought you were doing it?" "Oh, no, no. We were drawing the back, we'd have to redraw all the other windows." "Oh, I missed that point." (Atkinson, p.3)</p></blockquote><p>The thing he built is the data structure at the centre of QuickDraw.</p><blockquote><p>So I was able to come up with a very efficient way that really didn't cost much more than drawing into a rectangle but could allow for very arbitrary shaped objects that are clipping. (Atkinson, p.3)</p></blockquote><blockquote><p>The very center of that in the heart of QuickDraw's capability was the status structure called a "Region" and since you guys are going to have access through the MacPaint source code through this website, you can look at the region code and see how lovingly it was designed and brilliantly it solves that problem. (Hertzfeld, p.3)</p></blockquote><p>Hertzfeld's summary: "It helps to be young to make breakthroughs because you don't know what's impossible." (p.3)</p><h2>Inventing fuzzing three days before the NeXT launch</h2><p><strong>Engineering &#183; The NeXT Computer launch, October 1988</strong></p><p>The word did not exist yet. Testing software meant writing down the cases you had thought of and running them, which by definition leaves out the bug you have not imagined. Feeding a program random garbage until it breaks was not a recognised technique. Avie Tevanian arrived at it under a deadline.</p><p>Tevanian had written the Mach kernel at Carnegie Mellon and joined NeXT to work on the core of its operating system. The NeXT Computer was to be launched in San Francisco in October 1988, and it shipped with a magneto-optical drive instead of a hard disk. Three days out, the driver for that drive did not work reliably.</p><blockquote><p>I have a vivid memory of the lead up, of a part of the lead up to that, which is two or three days before the launch, we were working on the optical drive. And so, I was part of the OS team. [...] I wasn't responsible for the optical driver. I was responsible for more of the core of the OS. And it was working pretty well. But the optical driver was unreliable. And I remember the guy working on it, outstanding engineer. His name is John Seamons. He was burning the midnight oil just trying to get this thing working in about three days before the intro. And this has got to work. I'm like okay, I've got to roll up my sleeves and help John. (Tevanian, CHM oral history part 1, p.47)</p></blockquote><p>The first move was not to look for the bug. It was to build a way of finding out whose bug it was.</p><blockquote><p>I said, "Okay, we've got to do something. We've got to start building reliability tests for the file system, so we can figure out, is it a driver problem, is it the file system, whatever." And so, I built a very simple UNIX level test to read and write files in a slightly random way and ran it. And it failed immediately. And I built in logging and stuff, so we could then figure out what was going on. We went, and we tested. And we looked at logs. We figured out the bug. Great, we fixed it. Good, we're all set to launch. (p.47)</p></blockquote><p>They did not stop there.</p><blockquote><p>Before we do that, let's take the testing to the next level. And so, he and I kept iterating on these test programs to the point where we finally had a test program, which was basically issuing random file system instructions to the OS, completely random, no program would ever do this, just to get to it to fail. And we would see these failure modes. Oh yeah, that's a bug. And oh yeah, that's a bug because even though it's random, it should still work, right? And so, we finally got it all to work. And we, I think the two of us worked almost continuously for forty-eight hours to make that work. (p.47)</p></blockquote><p>Asked whether it was stressful:</p><blockquote><p>I don't remember it being stressful. I just remember being, "Wow, this is so cool." [...] These are the hardest kinds of bugs to find. [...] I remember I learned a lesson from that, which is all of us engineers think we can write code that works. But what you've really got to do to test your code is throw garbage at it and then see what happens. When you throw things at it that is what you expect, yes, it works. But a lot of times, developers throw things at it that you didn't expect. (p.48)</p></blockquote><p>The launch went ahead. The demos, in Tevanian's account, all worked.</p><h2>Expos&#233; came from noticing what the Dock's animation implied, and its trigger from watching where people parked a button</h2><p><strong>Design &#183; Mac OS X, around 2003</strong></p><p>Bas Ording had been hired to design the Mac OS X interface off a demo, and his tool was Macromedia Director, an animation program in which he wrote small working prototypes. Expos&#233;, the feature that spreads all your windows out so you can see them at once, started as the kind of problem everyone has and nobody had a solution for.</p><blockquote><p>One day I'm just staring at my screen, and I have a bunch of windows and they're overlapping each other. And I'm thinking like, or I was sort of imagining like, "I wish I could just sort of like go behind that window, so I can just see them all." [...] "Well, let's do this, start really simple. What if I just have two windows, and one is above the other one? What would you do to see them both?" I'm like, "Well, I can just like separate them. That would be easy to do. And then if the windows are too big, if they won't fit in the screen, I can just like scale them down." [...] "Oh! well, if it's three windows, then well, it gets a little more complicated, because how are they going to move?" (Ording, CHM oral history, p.11-12)</p></blockquote><p>He worked out an algorithm: shuffle the windows apart iteratively until none overlap, then scale the whole arrangement to fit, and animate straight to the result. A prototype in Director, and no way to run it against real windows. The way in was noticing something about a feature that already existed.</p><blockquote><p>I worked together with John Louch, from Engineering, and he's super good. And he worked on the Dock to get that all to animate, like high frame rates and get it really working really well. And I knew that he could, because of the Genie effect, that was owned sort of by that Dock, the process that runs the Dock and that has to basically grab a window and morph it, right? Or and manipulate it. So I knew that like John Louch knew how to access the windows on the screen. So I'm kind of like, "Hey! If you can grab these windows, you can grab any window, right?" "Yeah, yeah!" "So, okay, well, let's run this algorithm on these rectangles, basically, and see what happens." So we started to do that, and of course, like his code went like ten times faster than my code. (p.12)</p></blockquote><p>The Genie effect is the animation that sucks a window into the Dock when you minimise it. To do that, the Dock had to be able to take hold of any window on screen and distort it. If it could do that to one window on the way to the Dock, it could do it to all of them for any purpose.</p><blockquote><p>So because of John we could get all this stuff to work in the real system, too. And we could just play with it and like really use it for real. And then we could demo to Steve Jobs and a bunch of other people, and they got all excited, and then, of course, you got all the other ideas. "Oh, yeah, it needs to be just the app windows!" Or, "It needs to be all the windows!" (p.12)</p></blockquote><p>Then how you trigger it, which was not designed at all.</p><blockquote><p>For a while we had, this is silly, this like round blue button that we had sitting on the screen that you could drag around anywhere. If you click it, it would just do Expos&#233;. If you click it again, it goes back. But this button was kind of in the way. It was kind of useful, but also in the way. So you end up putting it all the way in the corner, and then we were like, "Well, if we put it in the corner, we may as well just use the hot corners like you use for your screensaver as well, right?" So that's what ended up being one of those features. You just put your mouse in the corner, and all your windows go, "Psht!" (p.12-13)</p></blockquote><p>They shipped a draggable button into the live system, everyone who used it moved it out of the way to a corner, so they deleted the button and kept the corner. Asked whether any of this went through the user testing lab: "No, we weren't. No. [...] For those things, we didn't really do that." (p.13)</p><h2>The iPod started with a drive nobody wanted, shown at the end of a meeting about something else</h2><p><strong>Product &#183; The iPod, 2000</strong></p><p>Jon Rubinstein ran Apple's hardware engineering, and by 2000 he had been trying for a year to find the parts for a music player. The idea was not the problem. In his telling the storage was.</p><blockquote><p>We needed a small, cheap display. We needed a small, cheap battery. We needed a processor, right, and we needed storage and so I started scrounging around for all this stuff and trying to put the pieces together. And I was hanging out at Almaden at IBM Research because I was friends with Nick Donofrio and Nick said, "Come on by. Take a look at our technology. See if there's anything you want to use." So I took a look and I saw the Microdrive when it was under development and I reached out to the Microdrive Group and said, "Hey, I need five gigabytes and this price." And they laughed at me. Right? "Never going to happen." (Rubinstein, CHM oral history part 1, p.87)</p></blockquote><p>In 2000, storage meant a spinning disk, and disk sizes were set by what laptops needed. A drive too small for a laptop had no market, which is exactly why one was sitting unsold in Japan.</p><blockquote><p>I kept looking and eventually I was in Japan and found the Toshiba drive and they weren't really sure what to do with it because it wasn't, it didn't have enough capacity to really go in a PC. Right? And I was there and they were taking us through their roadmap for all of our other products, and at the end of the meeting, they go, "We have this other thing. Would you like to take a look at it?" I'm like, "Yeah, sure. I'll take a look at it." So we looked at it, and like it's obvious, right? This is how to make an iPod, right? (p.87)</p></blockquote><p>A supplier roadmap meeting for other products, a drive mentioned as an afterthought.</p><blockquote><p>Jeff Williams is there with me, and I'm like, "Jeff, we need to get all of these." So Jeff goes, "Yeah, we think we have an idea. We can use this. How many of them can you make, and can we get exclusive?" And he started the whole exclusive conversation, so I, Steve was in Tokyo, so I said, "Steve," and I've told this story lots of times but, "I need a $10 million check to go do development on this." And Steve goes, "No problem, I'll write you the check." So then I talk to Fred to make sure the check won't bounce because Steve, Fred was the guy who actually wrote the check, not Steve, and Fred goes, "Go ahead. The check won't bounce." (p.87-88)</p></blockquote><p>Jeff Williams, then in operations and now Apple's chief operating officer, opened the exclusivity negotiation on the spot. Fred Anderson was the CFO.</p><p>The rest of the parts were already there, for a reason Apple had nothing to do with.</p><blockquote><p>The cellphone industry had really started taking off with, remember, cellphones used to have single-line displays, and it had just been recent at that point in time that the bigger displays, black and white, they were not color, they were black and white, displays had started becoming available, same thing with battery technology. Right? The lithium ion battery technology had just started getting incorporated in cellphones, so there was this convergent of great technologies. Right? And the form-factor was self-evident. It was going to be about the size of a pack of cards because if you took the display and the battery and the circuit board and the hard drive and the connectors you needed on either side, that defined the form factor. (p.88)</p></blockquote><p>One more detail from the same passage, on which the people involved do not agree.</p><blockquote><p>Phil Schiller is the one who came up with the scroll wheel. He had a B&amp;O phone, an old B&amp;O phone that had the scroll wheel, right, and they didn't have acceleration in those days. But, so we grabbed that idea. We patented it right away, and we actually ended up licensing that patent back to B&amp;O. (p.88)</p></blockquote><p>Tony Fadell, who was hired to run the iPod's engineering, gives the same account of the wheel in his own interview and adds a hedge about the years since. On the larger question of whose idea the iPod was, the two men disagree flatly.</p><h2>Rubber-banding was a debugging aid before it was a design</h2><p><strong>Design &#183; The iPhone, 2005</strong></p><p>Before the iPhone, a list on a screen was moved with a scrollbar, and when it reached the end it stopped. Dragging the content itself with a finger did not exist as a convention, so there was no convention either for what should happen when the content ran out. Bas Ording was building the first scrolling list for the phone, in December 2004 or soon after, and the answer came from a problem with his own prototype.</p><blockquote><p>I remember working on this demo where you scroll through the list and I had lots of times where because I was constantly changing stuff in my code, like, I thought I was running the code, but then it wouldn't scroll and I'm like, "Oh, I guess I'm not running the code yet. Like, wait." But then it was running. But I'm like, "Oh, wait, I'm scrolling in the wrong direction because it's at the top of the list and it's not going to go any further," so I would, it just wouldn't move because it was at the top. (Ording, CHM oral history, p.25)</p></blockquote><p>Two failures looked identical. A prototype that had not started, and a list that had reached the top, both did nothing when you dragged. He could not tell which he was looking at.</p><blockquote><p>And then I started to think, "Oh, maybe I need to add some white space or something that you can see that it's at the top, right." But then still, if you try to move it, and nothing will happen, it feels sort of weird as if the program is just stuck or something. And so that's when I started to think about what can we do to make it feel still alive somehow, that it has some kind of give to it. (p.25)</p></blockquote><p>The fix for his debugging problem was to make the list respond even when it could not move.</p><blockquote><p>One of them was, like, adding this sort of this, yeah, thing where it moves but only at like half the rate of your, that your finger is moving, just to get the feeling of, like, of some kind of resistance and, and then if you let go, it would just spring back to the top of the list. And then from there, like, if you were to scroll at higher speeds and it reaches the end, and it bounces back a little bit and all that. So all the behaviors that go with it, basically to make it feel right. So it took a little while, but it was fun to work on. (p.25)</p></blockquote><p>Every touchscreen since has done it.</p><blockquote><p>I remember, yeah, showing that to Steve and he got all super excited about it, so that was cool. (p.25)</p></blockquote><h2>"Interpersonal computing" on machines that could only talk to each other</h2><p><strong>Marketing &#183; NeXT, 1987 to 1989</strong></p><p>Dan'l Lewin ran Apple's higher-education sales, left with Steve Jobs in 1985 as a NeXT co-founder, and ran NeXT's sales and marketing until he quit in 1989. His account of how NeXT positioned itself is the account of the person whose job it was to sell the positioning, and who did not believe it.</p><p>The framework came out of a board meeting.</p><blockquote><p>The IBM PC was blue, right? So we had blue, red, and green. And so blue was IBM, and that was all about Lotus 1-2-3 and spreadsheets. And that's what made the PC. And red was Apple, and that was all about desktop publishing. And that's what that was going to be. We were going to leapfrog them all, and we were green. And we were going to be interpersonal computing. So, spreadsheets made the PC, DTP the Mac and Interpersonal computing would be NeXT. (Lewin, CHM oral history, p.25)</p></blockquote><p>Each previous platform had been made by one application category. NeXT's would be communication between people: voice attachments on email, a demo one engineer had built in a week. The problem was the installed base the positioning assumed.</p><blockquote><p>The whole idea was this radical new thing to Steve that people actually were using networks. And we were going to position ourselves as interpersonal computing, when a NeXT machine could only talk to a NeXT machine. I look at it and go, no, this is like a good idea in the shower, but a bad idea in the market. Only our machines can talk to our machines, really? (p.25)</p></blockquote><p>This was 1987 or 1988. Lewin dissented in the room and the positioning went ahead. Then the price. NeXT had been founded to sell a $3,000 computer to students. The 1988 launch priced the cube at $6,500 to universities, and configured it came to around $10,000. Lewin's account of the retreat where the cheaper machine was born says what the gap did to the company.</p><blockquote><p>When Steve came in, and he was sort of morose, and he was down, and I was sitting there, and I sort of said, "you know, we built this company to sell a $3,000 computer. We have a $10,000 computer. Why don't we think about designing a $3,000 computer that people could use and that our market could afford to buy?" Damn, that's a good idea. Let's do that. And so Rich, and George, and Steve, and the whiteboards show up, and all of a sudden it's like, OK, how will we skinny this thing down? (p.30)</p></blockquote><p>Why the price had got there is a design story told as a cost.</p><blockquote><p>The cube itself was supposed to be burdened, fully finished, ready to have the board stuffed in. It was supposed to cost $50. The paint job cost $50. It was a magnesium thing pressed by... you know, it's like... (p.30)</p></blockquote><p>Asked whether he tried to reason with Jobs about it: "Oh, of course! Of course, it was insanity." (p.30)</p><p>The go-to-market plan was an attack on Sun's distribution.</p><blockquote><p>Sun had, they were about $400 million, right? They had just gone public. [...] For the most part, they were selling their hardware to an OEM who was bundling software on top and physically delivering the hardware and the software together, whether it was Frame, or Interleaf, or these CAD machines [...] So what we were doing is cherry picking all the software on top, getting those guys to migrate, have Businessland push the distribution out. All they would have to sell is their software. So their cost of sales would change. They wouldn't have to carry inventory, and we could build to order with our factory. So I was going disassemble Sun's entire channel play. (p.30)</p></blockquote><p>Take the software vendors who resold Sun hardware, move them onto NeXT, let a retailer handle the boxes, and Sun's channel collapses. It needed a $3,000 machine. It had a $10,000 one.</p><blockquote><p>We had $120 million or so in the bank, and it was glaringly obvious to me that he was going to burn through all of it in about 12 to 15 months, and there would be no stopping him. The board meeting, I quit the week after this board meeting where Perot blew up and quit. Everybody was done with him. I mean, he had 51 plus percent control of the company, and he was taking no input from anyone. (p.30)</p></blockquote><h2>Fifty thousand Macs that dealers would not take, sold to universities instead</h2><p><strong>Marketing &#183; The Macintosh launch, 1984</strong></p><p>The Macintosh shipped in January 1984 into a dealer channel, and Dan'l Lewin's job was the other channel: universities, through what became the Apple University Consortium. It is remembered as a programme to put computers in front of students. Lewin's own account is about inventory.</p><blockquote><p>Because we did the introduction in January, and things sort of frittered along for a while, I was really looking at summer deliveries for fall, for the academic year. And we actually saved, we, our little program, there's a few people in the field that helped me, but it was really my program at corporate [that] saved the company's ass on inventory penalty costs, because the dealer network topped out at about four units a month per dealer. And the factory was running. (Lewin, CHM oral history, p.26)</p></blockquote><p>Four units a month per dealer, against a factory that had been built for a much bigger number.</p><blockquote><p>I think we had about 20,000 units in inventory at launch. And maybe the build rate was about that per month, about 20,000 a month. But it took a bunch of months to get to that point. But then the ramp was going up. And they kept building. And the dealers would only take replenishing their initial shipment, and so all that inventory that got built I took and put into the universities. And so we shipped 50,000 computers in the university community like that. (p.26)</p></blockquote><p>The consortium's big orders were real and were coming: Drexel at 3,000, Dartmouth, and one that arrived as a place in line rather than a delivery.</p><blockquote><p>There was like the purchase order from University of Texas where Charlie Warlick came to me and said I want to get my place in line. And he gave me a PO for 30,000 computers. When do you want those, Charlie? As soon as you can get them to me. You know, and they took a lot of them, but they didn't take 30,000 out of the chute. (p.26)</p></blockquote><blockquote><p>That period let us turn back the inventory for manufacturing RAM because the penalty clauses and the lead time, especially in those days, was immense. So we both made a lot of money. The margins were extraordinary through that program, but I also saved the company a lot in that period. (p.26)</p></blockquote><p>Memory was ordered months ahead under contracts with penalties for cancelling. A factory building 20,000 machines a month that dealers absorbed at four each was about to trigger those penalties.</p><h2>The customer who took the Mac apart and told Apple what its network should be</h2><p><strong>Marketing &#183; Apple and Dartmouth, 1983 to 1984</strong></p><p>Before the Mac launched, Dan'l Lewin and Mike Boich were taking prototypes to universities. At Dartmouth, an engineer opened one up.</p><blockquote><p>He looks inside. And Mike and I are sitting there, and he goes, is that an RS-422 chip? And we went, yeah. And so he's, wait a minute. He left the room. A couple minutes later he came back in with the manual for the RS-422 chip. And he's like looking at the manual. And he's in the corner with someone else. And then they go whisper at Bill Arms. And then Bill looks at me and he goes, uh, we got to go for a walk. (Lewin, CHM oral history, p.24)</p></blockquote><p>RS-422 is a serial communication standard, faster than the one in most personal computers of the time. Dartmouth's people had recognised the chip and worked out what it meant before anyone at Apple had told them. On the walk, with the provost, they made an offer.</p><blockquote><p>We're going to tell IBM, who want to give us PC Juniors, and tell Digital, who want to give us DEC Rainbows, to take their gifts and go home. And we recognize you can't give us these computers, because you're just a small company. But can you give us a lab. (p.24)</p></blockquote><p>Lewin had learned one habit from Floyd Kvamme, Apple's marketing head: ask the people who buy from you why they buy, because they will tell you the truth. So he asked.</p><blockquote><p>They said it's very straightforward. And the provost is with us, and he said we're going to make sure that every student has one of these. If they don't have the money, we'll build it into financial aid. [...] Well it's an intelligent graphics terminal that we can put on our network. At which point I said, but there's no networking built into this machine. And they said that's OK. You have a high speed serial chip. We will write our own networking. And I went, and how will you, and they said, through the telephone infrastructure. (p.24)</p></blockquote><p>Dartmouth was the home of BASIC and of time-sharing on mainframes. They did not want a personal computer; they wanted a terminal for the network they already had, and they had found the chip that let them make the Mac into one. Apple's own networking did not exist yet.</p><blockquote><p>We learned that from Dartmouth. And we didn't have AppleTalk, because remember, when Steve got fired, it's partly because AppleTalk didn't work. (p.24)</p></blockquote><p>Then the phone-jack story. Jobs is known to have lectured Bob Metcalfe, the inventor of Ethernet, that nobody would buy networking until the connector was as simple as a phone jack, pulling the phone cord out of the wall to make the point. Lewin heard the story from Bill Krause, 3Com's CEO, years later.</p><blockquote><p>Steve did his Steve thing and got up and walked over, and went over, and "it's got to be like this." And he pulls the RJ-11 jack out of the wall on the phone. It's got be like this. And I just looked at Bill, and I just said, well let me tell you where he got that. Because it was from my trip to Dartmouth where they just said we'll use the phone line. (p.24)</p></blockquote><h2>Think Different, as it was actually sold to the room: a schedule and a media buy</h2><p><strong>Marketing &#183; Apple, September 1997</strong></p><p>Think Different is remembered as a piece of film. The tape of Jobs introducing it, eight to ten weeks after coming back, is a different document: a working presentation to Apple's own people that spends its first three minutes on products and inventory before it gets to marketing at all.</p><blockquote><p>We're trying to get back to the basics of great products, great marketing and great distribution. And I think that Apple has pockets of greatness but in some ways has drifted away from doing the basics really well. So we started with the product line. We looked at the product roadmap going out for a few years and we said a lot of this doesn't make sense and it's way too much stuff and there's not enough focus and so we actually got rid of 70 percent of the stuff in the product roadmap. I mean I couldn't figure out the damn product line after a few weeks. (Jobs, Think Different introduction, 0:29)</p></blockquote><p>Then distribution, with a number.</p><blockquote><p>We've got anywhere from two to three months of inventory in our manufacturing supplier pipeline and about an equal amount in our distribution channel pipeline, so we're having to make guesses for five, six months in advance about what the customer wants and we're not smart enough to do that. (2:16)</p></blockquote><p>Only then, marketing, and the argument for what the campaign would not do.</p><blockquote><p>The way to do that is not to talk about speeds and feeds. It's not to talk about MIPS and megahertz. It's not to talk about why we're better than Windows. The dairy industry tried for 20 years to convince you that milk was good for you. It's a lie but they tried anyway and the sales were going like this. And then they tried "got milk" and the sales have gone like this. "Got milk" doesn't even talk about the product. [...] Nike sells a commodity. They sell shoes. And yet when you think of Nike you feel something different than a shoe company. (4:14)</p></blockquote><p>He had fired the agency and the 23-agency review Apple was running, hired Chiat/Day, and given them eight weeks. The film is a minute long and the room saw it once. What the tape preserves that the film does not is the buy.</p><blockquote><p>We are breaking this campaign this Sunday in a rather poetic way. The Wonderful World of Disney is restarting on ABC and the first thing they're showing this Sunday night, I believe it's at 7 o'clock, is the network premiere of Toy Story, and we're gonna have two 60-second spots. This commercial will run twice, once in the first hour and once in the second hour. We are then gonna break some newspaper ads in the Journal, the Times, the Mercury, the Examiner, USA Today, really stating the manifesto, the words. [...] This ad will run throughout most of October on television and we're breaking some phenomenal print within a few weeks, mostly on the back covers of magazines, some on the inside. We've got some incredible billboards and we're even painting some giant walls in about five or six major cities. (10:54)</p></blockquote><p>Toy Story was a Pixar film; Jobs was Pixar's CEO. The premiere was the launch slot. Then the permissions.</p><blockquote><p>In this day and age to use any of these people, whether alive or dead, you need major permission from them, either themselves if they're alive or their estate's representatives if they're dead. Almost all of these people have never appeared in an advertisement before and never would until we asked them. I mean I got permission from Yoko Ono a few days ago to use John. (12:01)</p></blockquote><p>And the close.</p><blockquote><p>Now, advertising is not everything and we've got some incredibly exciting product announcements coming up soon. [...] The question now is not can we turn around Apple, I think that's the booby prize. I think it's can we make Apple really great again. (15:03)</p></blockquote><h2>The digital hub was a name marketing put on something that had already grown</h2><p><strong>Marketing &#183; Apple, 2000 to 2003</strong></p><p>The digital hub is taught as a strategy. In January 2001 Jobs stood on stage and said the Mac would be the centre of a person's digital life, the place cameras, music players and camcorders plugged into, and the applications Apple built over the following years are read as the execution of that plan. Glenn Reid ran two of those applications, iMovie and iDVD, and his account from inside is different.</p><p>Asked whether the creation of the applications group had been planned:</p><blockquote><p>The creation of the iApps group just happened organically, as you said, and then led to this sort of digital hub strategy that Steve talked about. But it was not planned from the beginning. It was just kind of, it happened semi-obviously by following the media path. (Reid, CHM oral history, 2:39:55)</p></blockquote><p>The media path: photos, then movies, then music, each a thing people were starting to bring home in digital form, each needing something to do with it on a Mac.</p><blockquote><p>Apple was also growing and hiring people and acquiring companies and, you know, there were getting to be a lot of people, and actual marketing people. And so how do we sell this mishmash of weird products? So the marketing people sort of put wrappers around it and called it the digital hub, and the iApps and all those names. They were labels for things that already had organically come into existence. (2:40:23)</p></blockquote><blockquote><p>They basically came built in. It was a pretty powerful reason to buy a Mac at that point. There was a lot of pretty useful stuff that came with it. (2:41:18)</p></blockquote><h2>Boston, August 1997: arguing a booing room out of the position his own company had taught it</h2><p><strong>Leadership &#183; Macworld Boston, 6 August 1997</strong></p><p>Gil Amelio had been removed as Apple's CEO four weeks earlier, no replacement had been named, and Steve Jobs, officially an adviser, was running the company in everything but title. Apple's public identity for fifteen years had been built on Microsoft as the enemy, and the audience at Macworld Boston was made of the people most invested in that. This is the keynote where he announced a Microsoft investment and told them the war was over.</p><p>He opened by quoting the press back to itself.</p><blockquote><p>When I started to get involved, a lot of people gave me advice. And some of the advice that was the most popular was Apple has become irrelevant. There was a great one that was Apple can't execute anything. And another one was the Apple culture is anarchy, no one could manage it. You've read all these things in the press. And after four weeks, here's what I found. Quite the opposite of these things, actually. (Jobs, Macworld Boston 1997, 6:49)</p></blockquote><p>Then the conversion of each charge.</p><blockquote><p>Apple is executing wonderfully on many of the wrong things. The ability of the organization to execute is really high, though. [...] They're doing some of the wrong things because the plan has been wrong. And lastly, what I found is rather than anarchy, I found people that can't wait to fall into line behind a good strategy. There just hasn't been one. (7:29)</p></blockquote><p>Then the number, on one slide.</p><blockquote><p>Apple's sales in 1995 were 11.1 billion. In '96, they were 9.5 billion. And in this year, they'll be, you know, 7 billion plus or minus a little bit. That's the problem or the symptom, depending on how you look at it. (8:50)</p></blockquote><p>He replaced the board, keeping two members and adding four. The first boo of the morning arrived on a name.</p><blockquote><p>The first is Larry Ellison, CEO of Oracle. I hope that wasn't a boo I'm hearing. (11:39)</p></blockquote><p>Then market share.</p><blockquote><p>I can't get anyone to tell me the definitive market share number for Apple, but it's around 7 percent from all I can gather. And the question is, where is Apple relevant? [...] It's like 80 percent of the computers used in advertising and graphic arts, design, prepress, all Macintoshes. And 64 percent is the best number I could find. 64 percent of all internet websites are created using a Mac. (18:49)</p></blockquote><blockquote><p>Who is the largest education company in the world? [...] Apple is the single largest education supplier in the world. [...] Now, I've asked 100 people at Apple this and only two have thought of it. It's incredible the position Apple still has in education. 60 percent of all computers in education are Apples. 64 percent of computers teachers use are Apples. It's a two to two and a half billion dollar business for Apple every year. (20:52)</p></blockquote><p>On the Mac OS.</p><blockquote><p>Most people think that we're about to abandon the Mac OS. [...] Macintosh OS 8, which we just released, was code named Tempo, as you know, right? So, we just released Tempo. Most people think our next release next year, which is code named Allegro, will come out. But then our next release will be Requiem. And it's crazy. (24:13)</p></blockquote><p>Then the deal, in four parts: a patent cross-licence covering everything filed for five years, Microsoft Office on the Mac for five years at the same release cadence as Windows, Internet Explorer as the default browser, and a $150 million investment in non-voting shares locked for three years. The browser was where the room turned.</p><blockquote><p>Apple has decided to make Internet Explorer its default browser on the Macintosh. Since we believe in choice, since we believe in choice, we're going to be shipping other Internet browsers as well on the Macintosh, and the user can of course change their default should they choose to. (28:47)</p></blockquote><p>He restarted the sentence twice over the booing. Bill Gates appeared on the screen behind him by satellite, which the audience booed as well. Then:</p><blockquote><p>Where we are right now is we're shepherding some of the greatest assets in the computer industry. And if we want to move forward and see Apple healthy and prospering again, we have to let go of a few things here. We have to let go of this notion that for Apple to win, Microsoft has to lose. Okay? We have to embrace a notion that for Apple to win, Apple has to do a really good job. And if others are going to help us, that's great. Cuz we need all the help we can get. And if we screw up and we don't do a good job, it's not somebody else's fault. It's our fault. (33:18)</p></blockquote><blockquote><p>I think if we want Microsoft Office on the Mac, we better treat the company that puts it out with a little bit of gratitude. We'd like their software. So, the era of setting this up as a competition between Apple and Microsoft is over as far as I'm concerned. (34:08)</p></blockquote><p>Then a reframe.</p><blockquote><p>Another bolt of lightning is that Apple plus Microsoft equals 100 percent of the desktop computer market. And so whatever Apple and Microsoft agree to do, it's a standard. (35:18)</p></blockquote><h2>The fifteen-point plan delivered uninvited, and the whiteboard binary from years before</h2><p><strong>Leadership &#183; Apple, 1996</strong></p><p>Regis McKenna had shaped Apple's marketing from the Apple II onward and had long since left the company's payroll, but not its orbit. By 1996 everyone in Silicon Valley was having lunch with him about Apple.</p><blockquote><p>A lot of people from Apple and from other places were having lunch with me, or talking to me, and saying, "Something ought to happen at Apple because it's dying." There was just no pizzazz in the company any more in terms of products. The products like their pen-based and voice-based systems, all these were failing. Newton and things like that had failed. [...] I even had people calling wanting to have lunch with me who said that they felt that they could come in and run Apple. (McKenna, CHM oral history part 5, p.7)</p></blockquote><p>He did something about it that nobody had asked for.</p><blockquote><p>I formed an alliance with my firm and Gemini, the consulting group. Some people from Gemini came to me and said, "Something ought to be done at Apple." And so we sat down together and came up with what could they do. We spent an afternoon on a whiteboard doing a session on it, just for our own mental health, I guess. And out of that I wrote a plan as to what they could do in 10 or 15 different steps. (p.8)</p></blockquote><p>Point one was not a product.</p><blockquote><p>One of the first was profitability. I strongly feel that the best positioning tool that any company in the technology business has is being profitable. If you're profitable then the world will look at you and say, "Okay, you're doing something well and right." If you're not profitable they want to know what's wrong, and the CEO gets put on the spot. The company also becomes very vulnerable when you're losing money. It's when your competitors start hiring your people because they figure you're vulnerable. It's when your competitors start going after your customers because they know you're probably not going to be a long-term presence in the market. (p.8)</p></blockquote><p>Then the last point.</p><blockquote><p>Number 15 I remember well. I said, "Bring Steve Jobs back into the company and give him a strategic position of helping to straighten out the company and set his vision." I don't think he thought about that, but that was number 15. (p.8)</p></blockquote><p>He took it to Gil Amelio, Apple's CEO, without an appointment.</p><blockquote><p>I gave him a presentation, probably about two hours in his office, point by point. It involved building alliances with other companies out there and learning from them, that sort of thing. [...] He didn't react much at all to the whole thing. (p.8)</p></blockquote><p>McKenna's read on why:</p><blockquote><p>I think he also relied heavily on his staff. And there was a real arrogance, I think, among his management. I learned later he had developed that at National, we know how to do this thing and nobody else does. And they sort of were, "Go away. Go away. Go away." (p.8)</p></blockquote><p>Its fifteenth point happened a year later, by a different route. From the same session, years earlier: at an Apple staff meeting, McKenna had drawn a fork on a whiteboard.</p><blockquote><p>That's where, in my notebooks, I show the split [in direction] that I had shown them. One was towards IBM. The other was to be a Sony. I said they had to make that kind of decision because it would mean how they staff, how they hire, how they market, everything. [...] I even drew a little triangle, and I put down, "What are the requirements to get into either one?" [...] Sure enough, when Steve came back, he was quoted in Time Magazine as saying, "We want to be the digital Sony." (p.6)</p></blockquote><h2>The ledger: promises with dates from the Mac OS X unveiling, and how they aged</h2><p><strong>Leadership &#183; Macworld San Francisco, January 2000</strong></p><p>Keynotes are promises with dates on them, and almost nobody checks. The January 2000 unveiling of Mac OS X and its Aqua interface is checkable, because the developers Jobs brought on stage said specific things about how long their work would take.</p><p>The schedule, stated as a rollout.</p><blockquote><p>There's going to be a 12-month rollout of Mac OS X. You can't do these things overnight. It's gonna be a 12 month rollout so we are announcing it today, January 2000. Our developers have already had a few betas of the software. (Jobs, Macworld SF 2000, 1:36)</p></blockquote><p>He then listed the stages: a developer release that month, a beta in the spring, on sale in the summer, preloaded on every Mac a year out. Fifty-five minutes later, closing the segment:</p><blockquote><p>Mac OS X, going to be rolling out on a Macintosh near you the second half of this year. (56:27)</p></blockquote><p>Mac OS X 10.0 went on sale on 24 March 2001. The public beta appeared in September 2000. The three-tier developer story, and its cost estimates, were also stated on stage.</p><blockquote><p>There are three of them in Mac OS X: Classic, Carbon and Cocoa. And the reason for this is to provide a general migration for people from the left to the right over time. [...] Classic runs Mac OS 9 apps as is without modification. We have Carbon which allows the developers to tune up their Mac apps really fast and get all the features of X, and then we have our very advanced object oriented APIs, Cocoa, which lets you write apps in a tenth of the time. (4:30, 22:10)</p></blockquote><p>Then the partners. Adobe first.</p><blockquote><p>Adobe just had an incredible year. We surpassed the billion dollar mark. Steve, if it wasn't for you it wouldn't have happened. Almost half of our revenue, close to 500 million dollars of our revenue, was because of sales of our Macintosh applications. [...] We are absolutely committed to OS X. (Adobe executive on stage, 47:10)</p></blockquote><p>Microsoft committed to two products on day one and left the third open.</p><blockquote><p>Microsoft is fully behind Steve and his OS X product. We're going to be there on day one with Internet Explorer 5 and Outlook Express 5 for OS X. We've got a great new version of Office in the works to ship later this year. We'll go to OS X on that as soon as we can as well. (Kevin Browne, 49:00)</p></blockquote><p>Office for Mac OS X shipped in November 2001. Then two developers, one after the other, with opposite estimates for the same task.</p><blockquote><p>We just got a new system in about a month ago and we decided to try porting our most popular application, which is Flash. 200 million people have Flash Player today. And so we decided to port it, so put an engineer on it, one engineer for a week and a half, and it's running. (Rob Burgess, Macromedia, 51:30)</p></blockquote><blockquote><p>I wish I could say that ours was only going to take a week and a half. QuarkXPress however is a bit more of an effort. We've been getting a lot of help from Apple and we really appreciate that, but we're going to make it there. (Quark, 52:40)</p></blockquote><p>Flash was a small, self-contained program. QuarkXPress was a decade of page-layout code that the entire publishing industry ran on. QuarkXPress did not ship natively on Mac OS X until 2003.</p><p>And one promise from an earlier keynote, with the counterparty standing next to him.</p><blockquote><p>When we announced our partnership with Microsoft two and a half years ago most people couldn't understand it and didn't think anything good would come of it. And I got to tell you, we're working very closely with these guys. Kevin has an awesome team up there of Mac developers and they're doing some great applications on Macintosh. (Jobs, 49:33)</p></blockquote><p>The Boston 1997 bet, closed on stage in 2000 with Microsoft's Mac chief beside him.</p><h2>Shipping a Unix workstation whose only disk took a third of a second to seek</h2><p><strong>Product &#183; The NeXT Computer, 1988 to 1989</strong></p><p>The NeXT cube shipped with a magneto-optical drive and no hard disk. The drive held 256 megabytes on a removable cartridge, far more than any floppy, and looked like the future of storage. Rich Page ran NeXT's hardware.</p><p>The problem was not capacity or reliability. It was time, and what a Unix system does with a disk.</p><blockquote><p>Imagine swapping onto something that has a 20 millisecond seek time versus swapping onto the optical that probably had a seek time of three, four hundred milliseconds. So I mean the optical was good but it was not the best thing to swap to. That was kind of a misuse. (Page, CHM oral history part 1, 2:31:45)</p></blockquote><p>Unix moves memory to and from disk constantly as part of normal operation. Every one of those moves waited a third of a second instead of a fiftieth.</p><blockquote><p>The original cube did not ship with a hard disk. [...] I don't know how long we shipped the optical only but it was like six, nine, twelve months. [...] In the minimum configuration we were shipping it without the hard disk to get the price down, but we came to the realization it's really not very usable without the hard disk. So then that's when we put in the small hard disk. It's sort of an accelerator for swapping. (2:32:10)</p></blockquote><p>Page connects it to the Lisa.</p><blockquote><p>There's a similar problem with the Lisa, right? [...] What happens is you pick a price where the margins are fairly low but livable and you start there and you make the assumption over time you can bring the cost of product down, you know, and maybe hold the price. But the problem is if you have to add anything to the product to make it more usable, that drives the price up and takes time to bring the price of the product down. So those two things work against you. (2:33:29)</p></blockquote><h2>Bricking the best iPhones in existence three weeks before the keynote</h2><p><strong>Engineering &#183; The iPhone launch, December 2006</strong></p><p>The phones Steve Jobs would hold on stage at Macworld in January 2007 were hand-carried from China in steel cases, by people who flew there, collected the suitcases, and flew straight back. Each one was graded. Andy Grignon, who ran the iPhone's radio engineering, describes the grading and what his team did to the best of them.</p><blockquote><p>Steve Jobs and Jony Ive would put jeweler's loupes on and they would put gloves on and they would grade the quality of each phone, right, based on the kind of defects it had, because when they were still bringing up a line, plastics don't sit right. They're not meshed or they maybe have a scuff during some bad assembly process, so they're given a grade. So, double As are effectively production level devices. As are really good. Bs, Cs, and Ds fall, like Cs basically just go to QA because they're visually problematic. So, we had I think eight double As and then I forget how many units we had that were As. (Grignon, CHM oral history, p.24)</p></blockquote><p>A new batch had come in around Christmas, and Grignon's team had a software fix to load onto them. They used a gang programmer, a rig that flashes eight or sixteen phones at once.</p><blockquote><p>They go through the programming sequence and they reboot, and all of them as they're coming back up, they crash, crash, crash a bunch of times, and then finally they all go dead. (p.24)</p></blockquote><p>What had happened was inside the radio chip, and it was a feature.</p><blockquote><p>The chip that made the phone calls was the boss, and the security feature in this chip would detect if somebody was tampering with it by squirting their own code onto the chip that would maybe subvert some security policy of the network, maybe make free phone calls [...] After a certain number of iterations, which happened very quickly, if it detects that I've been tampered with, the security feature literally lights a piece of metal on fire inside of itself and it renders it useless. So, it is a fuse that is blown deep in the heart of this chip, and since that chip is dead and since it's the boss, the phone is dead. It's not like you could just lift that chip off, put a new one on. The whole phone's dead. (p.24)</p></blockquote><p>An anti-tamper fuse, designed to stop people stealing phone service, physically burned by a bug in Apple's own update.</p><blockquote><p>We burned up our double As, and some of our As, the best phones that we had. These were supposed to be the phones that Steve is onstage holding that were flawless, the best that we could produce at the time, and we lit them all on fire, well, that little tiny piece of metal. And I thought for sure I was gonna be fired after that. (p.24-25)</p></blockquote><p>Why no test had caught it:</p><blockquote><p>There was a bug in our code that was triggered only when there was an existing software on there already. So, it worked fine if you were just a QA person that had a previous version, you flashed a new build, then it was fine. But if you were taking a brand new piece of thing off of the floor and you put the software down, that's what triggered the security thing, which burned the wire. (p.25)</p></blockquote><p>Every QA phone had been flashed before. The bug only fired on a virgin unit from the factory, which is the one state no QA process ever has a phone in.</p><blockquote><p>You'll see in some of the pictures at Macworld, there's these glass domes and they're really beautiful phones, and they're spinning around and they're off. Well, those are the best ones we had, and since there was high resolution photography, people could get up close to these things, we wanted those still to have that perfect, you know, the best that we could produce. They were supposed to be running a demo loop of just stuff that the phone, like a video that would just play over and over and over again, and a lot of them are off. (p.25)</p></blockquote><p>The photographs from that launch are famous. In some of them the phones in the display cases have black screens.</p><h2>What it cost the people who built it</h2><p><strong>Management &#183; The iPhone, 2006 to 2007</strong></p><p>Andy Grignon ran the iPhone's radio engineering. This is his account of what the project was like to be inside.</p><p>The setting was a room he named.</p><blockquote><p>The people that made the chip, the baseband, were based out of Europe, and we had all these awful bugs in their stack, in our stack and nothing was working right, and it got to the point where we're like, "Look, we just need everybody onsite," and I had them bring like 20 or so people from Denmark and Germany and wherever. We flew them out long term to Cupertino and I shoved all of them in this windowless, cold server room. And we got to name our rooms and I called it European Vacation. (Grignon, CHM oral history, p.32)</p></blockquote><p>A morning bug meeting, every day. One morning after being shouted at by Tony Fadell, who had been shouted at by Jobs:</p><blockquote><p>The project manager sat at the complete opposite end, and we had gotten kind of comfortable with each other [...] he was just kind of leaned back and he had his legs crossed and he was like, "Eh." [...] For whatever reason I just lost it and I just, like a crazy person. I'm slamming my hands on the table, banging, and I just feel myself losing it, right? You know, that's not me, but that was the cauldron, that pressure cooker that we'd been put into. [...] I take my laptop and I threw it against the cinderblock wall [...] In my head it was like an explosion. Like, it hit the wall and parts are flying everywhere, and it was, like, this big, climactic scene, and then I storm out of there. And I'm sure really what happened was it just kind of like, thunk, slid down to the ground, very anticlimactic. (p.32-33)</p></blockquote><p>His own diagnosis: "A lot of us had adopted Steve's temperamental management style, just the explosive, unpredictable, emotional." (p.32)</p><p>Then the argument in Scott Forstall's hallway, a week before Christmas.</p><blockquote><p>It was basically like, "Well, if you don't want me to see my kids this weekend at their holiday show then I guess I can handle that now." It was some kind of quip like that, right? And this other person had kids and they're like, it became this surreal debate about who spent less time with their kids. And it turned into this screaming match between the two of them, and this other person storms off so angry, goes into her office and slams the door, just hard, like boom. [...] She slammed the door so hard that the lock mechanism broke and she was unable to open the door handle. (p.33)</p></blockquote><p>The locksmith was an hour away. Forstall, who ran iPhone software, had been working late.</p><blockquote><p>Forstall shows up. He had an aluminum bat and we're all taking full-size whacks at the door handle, at the lock on this door, just like boom, trying to get this thing unstuck. And finally it was Forstall who just went agro on this thing and he beat it to the point where it actually popped off. (p.33)</p></blockquote><p>He follows the stories with this.</p><blockquote><p>I think when you look at a project like iPhone, you know, it takes a pretty significant personal toll, professional toll. I mean obviously it was a successful product, but there was a lot of sacrifices that a lot of people made. (p.33)</p></blockquote><p>At the end of the interview, asked about the ten years since:</p><blockquote><p>What I say is I got a divorce because work is my mistress, right? One thing Steve was really good at was identifying people who will do anything it takes to ship a product, and that works for and against you, right? I'm your person to deliver a new cutting edge product. I will do that at the expense of literally anything else, my own health, my marriage, anything else, relationships. And some of these products, and the iPhone is one of them, requires that, not just from me but lots of people, and that was kind of a pattern when you look at everybody in aggregate, all kind of the same. [...] One of the jokes that we used to say was, the greatest thing about Fridays is it's two more working days until Monday. (p.56-57)</p></blockquote><p>And, in the same breath: "I'm glad it was a success. I wouldn't take it back. I wouldn't do anything really differently." (p.57)</p><h2>Where these came from</h2><p>Most of these came from the Computer History Museum's oral histories, three-hour sessions with a few hundred views each, and the people in them are still adding to the record. Two of the sessions here were recorded in late 2025. Everything quoted is verbatim from the transcripts, with a page or timestamp so you can go and check. Where two people remember the same event differently, both versions are here and I have not picked.</p><p>If you want the interviews themselves rather than my selection, <a href="https://journal.daniellopes.dev/p/apple-history-in-their-own-words">the companion guide</a> lists every one with its video and what it covers. Start with whichever person you already have a question for.</p>]]></content:encoded></item><item><title><![CDATA[Apple History: how a failed company saved Apple]]></title><description><![CDATA[Apple bought NeXT for its operating system, not its CEO. Within a year the acquired company was running the acquirer.]]></description><link>https://journal.daniellopes.dev/p/apple-history-how-a-failed-company</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/apple-history-how-a-failed-company</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sun, 30 Aug 2026 17:11:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0ec93e44-e746-4e93-b518-1561130d940e_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>"You can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future."</p><p>Steve Jobs, Stanford commencement address, 12 June 2005</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lE0Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lE0Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lE0Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1118174,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lE0Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!lE0Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61053793-7e24-42ff-be50-a97d5c8e75c9_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On Monday, Apple gets a new CEO. The company is fifty, and it is entering AI the same way it entered every other new market: via consumer devices.</p><p>Between 1985 and 1996, Steve Jobs's NeXT sold on the order of 50,000 machines, closed its factory, and became a software company with $273 million in accumulated losses.</p><p>Apple bought NeXT in 1996 for $429 million, making it one of the most consequential acquisitions in tech.</p><p>What Apple really wanted was the operating system and the engineers, Steve Jobs, not so much. Within a year, the acquired company was running the acquirer.</p><p>A few ago, I fell into an Apple history rabbit hole <a href="https://journal.daniellopes.dev/p/apple-history-in-their-own-words">watching the Computer History Museum</a> archive. I found the interviews and stories <a href="https://journal.daniellopes.dev/p/apple-history-behind-the-scenes-50">fascinating and packed with lessons</a> about management, engineering, design, and product. <br><br>I've organized the main timeline here as a rough, high-level history of Apple's Second Act &#8212; the phase that paved the way for what the company is today.</p><h2>Apple wanted an operating system, not a CEO</h2><p>What Apple wanted from NeXT was the operating system it had failed to build for itself &#8211; but the CEO who came with it took over the company.</p><p>Mike Markkula was Apple's employee number three and sat on the board through the acquisition. Asked what Apple was after, he did not hesitate: "what we wanted was the OS. And Avie Tevanian."</p><p>Whether Jobs returned was less important to the board. Markkula:</p><blockquote><p>"I don't think it was an issue. If he wanted to come back, fine, if he didn't, fine."</p></blockquote><p>Tevanian became Apple's head of software. Jon Rubinstein, who had run NeXT's hardware, became head of hardware. Bertrand Serlet, who had built NeXT's AppKit, later ran all of Mac OS X. Scott Forstall, a NeXT engineer, ran the iPhone software team. Every major Apple operating system since 2001 descends from NeXTSTEP.</p><p>Joanna Hoffman was on the original Macintosh team and followed Jobs to NeXT. In her 2018 oral history, she described just how complete the replacement was:</p><blockquote><p>"It was NeXT's software that created that Macintosh to the exclusion of the previous Macintosh. People don't remember the previous Macintosh."</p></blockquote><p>Her shorter version: "today's Macintosh success is NeXT. You know? No question."</p><h2>Timeline of Apple's second act, 1985 to 2008</h2><ol><li><p>Sept 1985: Jobs, demoted from the Macintosh division, resigns and takes five people with him.</p></li><li><p>1986: NeXT licenses the Mach kernel from Carnegie Mellon instead of writing its own.</p></li><li><p>1988: NeXT Computer launches at $6,500 with a magnesium case and no colour display.</p></li><li><p>1988: NeXT adopts Objective-C from Stepstone; Naroff moves it into GCC.</p></li><li><p>1989: Canon invests $100 million.</p></li><li><p>1993: NeXT closes its factory and becomes a software company.</p></li><li><p>1996: NeXT drafts an IPO it never files; Apple kills Copland and goes shopping.</p></li><li><p>Dec 1996: Apple picks NeXTSTEP over BeOS and buys NeXT.</p></li><li><p>Feb 1997: Tevanian and Rubinstein take over software and hardware; the deal closes.</p></li><li><p>1997: 300 R&amp;D projects cut to about 50; Advanced Technology Group shut.</p></li><li><p>Aug 1997: Microsoft invests $150 million; Jobs becomes interim CEO.</p></li><li><p>1998: The iMac, begun as a network computer, ships in fourteen months; Apple starts selling its ARM stake.</p></li><li><p>1999: The iBook ships with AirPort; Wi-Fi in a consumer product three years before Dell.</p></li><li><p>2000: Mac OS X's Aqua interface unveiled; Jobs drops "interim".</p></li><li><p>2001: Rubinstein finds the Toshiba 1.8-inch drive; the iPod ships in eleven months.</p></li><li><p>2001: Safari team picks KHTML over Mozilla.</p></li><li><p>2005: Two iPhone projects compete inside Apple.</p></li><li><p>Jan 2007: The iPhone is announced; Apple Computer, Inc. becomes Apple Inc.</p></li><li><p>July 2008: The App Store opens with 500 apps.</p></li></ol><h2>1985: Why Jobs left, in the words of the two men who were there</h2><p>The familiar version has John Sculley firing Steve Jobs. Neither Sculley nor the board member who investigated the dispute remembers it that way.</p><p>Markkula had recruited Sculley as CEO in 1983. The Macintosh Office, launched at the January 1985 annual meeting, "was a complete dud." By March, the disagreement had become a fight over the company's priorities. Sculley:</p><blockquote><p>"As we moved out into March, the Macintosh sales were not doing well and Steve and I started to have major disagreements on what we should do about it. Steve wanted to lower the price of the Macintosh. And yet he still wanted to run substantial advertising behind the product. And he wanted to de-emphasize the Apple II."</p></blockquote><p>Jobs did not think Sculley would take it to the board. Sculley did:</p><blockquote><p>"I said if you try to change that on your own, then I have no choice but to go to the board, and we need to bring this issue up with the board. And he didn't think I would do that. And I did."</p></blockquote><p>The board sent Markkula to interview the executives and decide who was right. Sculley:</p><blockquote><p>"Mike Markkula did that, took him about 10 days to conduct this project. He came back, reported to the board, and his conclusion was that I was right."</p></blockquote><p>The board removed Jobs as leader of the Macintosh division. Sculley came from corporate America, where executives get moved around. Only later did he understand what the move meant to the founder who had created that division:</p><blockquote><p>"The board asked him to step down from the role of leader of the Macintosh division. To be quite honest, I didn't appreciate coming out of corporate America, because remember people get moved around all the time in corporate America, I didn't appreciate what it meant to a founder, the creator of the Macintosh, to be asked to step down from the very division that he created."</p></blockquote><p>The distinction matters. Sculley:</p><blockquote><p>"So Steve was never actually 'fired' from Apple, but he was demoted from the role of leading the Macintosh division and then he went off on sabbatical and then he eventually resigned from the company and took a number of key executives and started NeXT Computing."</p></blockquote><p>Markkula gave the same account separately:</p><blockquote><p>"John came to the conclusion that Steve wasn't working for him. Steve was doing what Steve wanted to do and it was disruptive. And I think he made the only decision he could make, which is, he can't manage the company if Steve's going to run around and undo things and change it and cause him all this grief. So he reorganized and gave Steve a job that didn't have anybody reporting to him, and he had an office away from the main campus. He didn't fire Steve, but he made it so Steve had nothing to do so Steve decided to go off on his own."</p></blockquote><p>Markkula's criticism was about how Jobs left:</p><blockquote><p>"I don't criticize Steve for wanting to do that or doing it even, but I just wish he'd done that himself, got something started and then thought about hiring people, whether they were from Apple or anywhere else and done it on the up and up. What he did was, he got half a dozen people to agree to go with him, and I felt that was unethical and not the right way to do it."</p></blockquote><p>Rich Page was one of those people. He supplies the date. Jobs resigned from the board on 12 September 1985. Page:</p><blockquote><p>"then the five of us turned our resignations in on the Friday the 13th, and then you get sued. Steve gets sued the next day, and it takes about six months to get rid of that."</p></blockquote><p>The five were Page, George Crow, Susan Barnes, Bud Tribble and Dan'l Lewin. All had worked on the Macintosh.</p><h2>1985 to 1996: What happened to Apple while he was gone</h2><p>Sculley ran Apple until June 1993. His defence is numerical: the company was profitable and growing when he left.</p><blockquote><p>"When I left Apple, we had about 2-billion dollars of cash, we had maybe 200 million dollars of debt."</p></blockquote><p>He puts the damaging choices after his departure:</p><blockquote><p>"After I was pushed out of Apple, Apple decided to license the technology and stop making one or two cool products a year, and made many, many different products and the company started to spiral into huge losses."</p></blockquote><p>Regis McKenna, who marketed the Apple II and knew Jobs for 35 years, watched from outside. His assessment of Michael Spindler, the CEO after Sculley:</p><blockquote><p>"He could stand at a board and draw out a future strategy, and it would overwhelm you. He fell short in how you implement it."</p></blockquote><p>Gil Amelio took over in February 1996 and found the result. The R&amp;D count still sounds like a typo. It was not.</p><blockquote><p>"There were 300 R&amp;D projects, 300. I could make a case that maybe we needed 20 of those, and that might even been too big a number, but 300 was ridiculous."</p></blockquote><p>He got the count to about 50. The factories were no comfort:</p><blockquote><p>"We were getting back, some months, as much as 10 percent of the computers we shipped."</p></blockquote><p>Copland, the in-house replacement for the Mac OS, had been in development for years at "a couple of $100 million a year" with no end in sight. Amelio killed it. Apple now needed an operating system it did not have.</p><h2>1986: Why NeXT licensed Mach instead of writing its own kernel</h2><p>While Apple was losing its way, NeXT was making the decisions that would eventually replace its software.</p><p>Avie Tevanian was a graduate student at Carnegie Mellon working under Rick Rashid on a research kernel called Mach. NeXT's engineers saw it presented at a Berkeley Unix conference and decided they wanted it.</p><p>Tevanian and Rashid flew to San Francisco for the conference and learned that Jobs wanted to meet them. Tevanian:</p><blockquote><p>"We go over to the NeXT offices on Deer Creek Road and we're sitting down in the lobby waiting for Steve, and Steve comes down all excited. 'Hi guys, how you doing?' Shakes his hand. 'Oh, I've met you before,' that's what he says to me. Like, no, you haven't met me before."</p></blockquote><p>Tevanian also interviewed at Microsoft and Sun. The choice came down to Microsoft and NeXT:</p><blockquote><p>"Microsoft was very organized. They wanted to hire me. And NeXT wanted to hire me. So I had to decide between those two."</p></blockquote><p>Had he gone to Redmond, he thinks a different operating system history would have followed:</p><blockquote><p>"If I had gone to Microsoft, NT probably would not have existed, or would have been something different. Because they basically hired Cutler instead when I didn't go there."</p></blockquote><p>That is the decision that connects an academic microkernel to every iPhone. Mach became the kernel of NeXTSTEP. NeXTSTEP became Mac OS X. Mac OS X became iOS.</p><h2>1988: The factory, and the cube</h2><p><a href="https://www.youtube.com/watch?v=dSj6kvv7_Sg">https://www.youtube.com/watch?v=dSj6kvv7_Sg</a></p><p>NeXT built an automated factory in Fremont before it had customers. Jobs commissioned the film above because a slide could not capture the automation. A board goes from bare to populated in about twenty minutes, with robots placing components and no hands on the line. It is mesmerizing. It is also a factory waiting for buyers.</p><p>Rich Page took over manufacturing in 1991. The cube's magnesium case was beautiful and unforgiving:</p><blockquote><p>"The NeXT cube was a magnesium structure but painted, as it turns out. I think that was a mistake, because it's hard to take something that's cast, whether it's cast a little bit over, cast magnesium, it's hard to take somebody has cast, sand it, do it right, texture, paint it, get it the right color, and have that whole process be repeatable."</p></blockquote><p>The second-generation NeXTstation used a flat case the team called the pizza box.</p><p><a href="https://www.youtube.com/watch?v=92NNyd3m79I">https://www.youtube.com/watch?v=92NNyd3m79I</a></p><p>The launch took place at Davies Symphony Hall on 12 October 1988. The footage was thought lost until the production team of the 2015 Steve Jobs film recovered it from two VHS tapes.</p><p>On stage, Jobs listed what universities had requested:</p><blockquote><p>"give us 8 megabytes of RAM, give us at least 100 megabytes of local storage."</p></blockquote><p>The industry called that specification the "3M machine": a megabyte of memory, a megapixel display, and a million instructions a second. The NeXT machine cost $6,500 and shipped with a monochrome display. The factory film plays at 29:58; the cube powers on at 42:15.</p><p>Universities buy in academic years, through committees, at fixed budgets. That is not a market that absorbs a factory's worth of volume. NeXT sold tens of thousands of machines against a plant built for hundreds of thousands.</p><h2>1988: Why NeXT chose Objective-C</h2><p>NeXT did not invent its programming language. It licensed Objective-C from Stepstone, where Brad Cox had grafted Smalltalk-style objects onto C.</p><p>Steve Naroff was Stepstone's engineer on the compiler. He fixed the language for NeXT's needs and joined NeXT in 1988 after Stepstone failed to resource the work. There he moved Objective-C into the GNU C compiler and added categories, which let developers extend classes they did not own. Blaine Garst and Bertrand Serlet added protocols. Garst added reference counting to memory management.</p><p>The peer-reviewed history is a paper Naroff wrote with Cox and CHM curator Hansen Hsu, <a href="https://dl.acm.org/doi/10.1145/3386332">"The origins of Objective-C at PPI/Stepstone and its evolution at NeXT"</a>, open access.</p><p>C++ won the industry. Objective-C had one serious customer. Then that customer had Apple.</p><h2>1989: Canon's $100 million</h2><p>Ross Perot invested in 1987. In 1989, Canon put in $100 million for a minority stake, the figure repeated in every account of NeXT.</p><p>Susan Barnes, NeXT's CFO, raised the Canon money. She has never given an interview about it. Of the five people who left Apple with Jobs, she is the one whose account does not exist, and hers is the financial one.</p><h2>1993: The decision to exit hardware</h2><div id="youtube2-1mC90DnaY60" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1mC90DnaY60&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1mC90DnaY60?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>On 25 May 1993, Jobs opened a NeXT keynote with a summary of the retreat from hardware:</p><blockquote><p>"We set ourselves a 100 day transition to move from a hardware systems company to a software company. We've succeeded. Been transitioning to a software company in this 100 days. Our factory's been closed, the inventory's been sold, we've seen the last of black hardware. We've sold our service business to Bell Atlantic. Our hardware designs are being sold to Canon."</p></blockquote><p>The product was now NeXTSTEP for Intel. Page had left in 1992, and by then every co-founder except Jobs had gone.</p><p>What NeXT bought that day was portability: an operating system that ran on someone else's chips. Twelve years later, Apple used it to move the Mac to Intel.</p><h2>1996: WebObjects, and the IPO NeXT never filed</h2><p>Most Apple histories describe NeXT in 1996 as a failed company that Apple rescued. The company's own paperwork says something different.</p><p>In November 1996 NeXT drafted an S-1, the filing a company makes before going public. It was never filed, so there is no record at the SEC. The draft survives because Tevanian donated it to the Computer History Museum, and Hsu wrote it up.</p><p>The first number is grim: $273 million in accumulated losses.</p><p>The next numbers complicate the obituary. WebObjects, NeXT's web application server, plus OPENSTEP had made $10.1 million in the first nine months of 1996, or 45 percent of software revenue. NeXT was preparing to go public as a web tools company.</p><p>Apple did not intercept a corpse. It intercepted an IPO.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fx5m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fx5m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 424w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 848w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 1272w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fx5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png" width="1152" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:568040,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fx5m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 424w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 848w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 1272w, https://substackcdn.com/image/fetch/$s_!fx5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff753c296-bc02-4290-b1de-4eba715f2c2d_1152x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><br>December 1996: What Apple bought, and what it chose it over</h2><p>Amelio went to Sun first. Scott McNealy wanted to buy Apple; the plan was to put the Mac interface on top of Solaris. Sun's board stopped it. Amelio:</p><blockquote><p>"At the end of the day, Scott McNealy's board turned us down. At that time, John Doerr was on their board, and I think he was, perhaps, most vocal in saying, 'No, we shouldn't make this connection.'"</p></blockquote><p>Then came Be. Jean-Louis Gass&#233;e, who had run Apple's products in the 1980s, had built a new operating system. Amelio:</p><blockquote><p>"Jean-Louis Gass&#233;e approached us about the Be operating system, and I'm kind of glad he did because it gave us another contender in the stack."</p></blockquote><p>The Apple Fellows had already reached the same conclusion. Larry Tesler, who came to Apple from Xerox PARC and founded its Advanced Technology Group, says the group debated porting the Mac OS to Intel around 1995, rejected it, and recommended buying an outside OS instead.</p><p>NeXT had the best operating system and the most troublesome association. Amelio:</p><blockquote><p>"the NeXT operating system was the best choice out there. I would say virtually everybody felt like we shouldn't touch it because of Steve Jobs. Every one of my board members and most of my staff told me forget about it."</p></blockquote><p>He kept talking to Jobs because the remaining options were not close:</p><blockquote><p>"because if I couldn't get Sun, then the third, whatever was third on the list was so far down the list that it really wasn't a viable strategy."</p></blockquote><p>Markkula confirms that Amelio made the call:</p><blockquote><p>"Gil is the guy that came to the conclusion that we needed to buy an OS. The other one we looked at was Be. And Jean-Louis had done a really good job with that, but it wasn't finished."</p></blockquote><p>The decision would end Amelio's own tenure. He knew the risk:</p><blockquote><p>"I agonized more over the decision as to whether to bring Steve Jobs back more so than I think any other decision I made in my life."</p></blockquote><p>Ten years after Jobs left, Amelio's reasoning was that "it was still his company."</p><p>From NeXT's side, the deal happened fast. Calls went in to Amelio, technical diligence meetings followed, "and in basically under a month we had a signed deal to be acquired."</p><p>Then Apple pre-announced a major loss. Tevanian:</p><blockquote><p>"Right after signing the deal to be acquired, so now we're looking at late December, couple days before Christmas, '96, as that quarter is coming to a close for Apple, they had to pre-announce a major loss, and that kind of took us by surprise. We certainly didn't see that coming, just because we weren't watching the company at all. We knew the company was struggling, but we didn't know that it was that bad off."</p></blockquote><p>The price was $429 million, announced 20 December 1996. What Apple got for it: the Mach kernel, the NeXTSTEP operating system and its OPENSTEP frameworks, the Objective-C toolchain, WebObjects, and the engineers who had built all of it. Apple's FY2000 10-K books the deal with a $375 million charge for in-process research and development.</p><p>Both <a href="https://www.youtube.com/watch?v=vwCdKU9uYnE">part 1</a> and 2 of Avie Tevanian&#8217;s oral history are very interesting, but the second part is when he covers the NeXT acquisition forward: </p><div id="youtube2-NtpIFrOGTHk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NtpIFrOGTHk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NtpIFrOGTHk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>February 1997: The NeXT people take over</h2><p>At the WWDC 1997 opening keynote in May, Amelio is still CEO, Tevanian and Rubinstein already run software and hardware, and a young Scott Forstall does a demo. The recording is on the <a href="https://archive.org/details/wwdc-1997-opening-keynote">Internet Archive</a> and has about a thousand views.</p><p>Jon Rubinstein had run NeXT's hardware. He started at Apple on 3 February 1997, the day the deal closed. Apple had lost $740 million in the preceding quarter. Rubinstein's estimate: "Yeah, we had one quarter left when I got there."</p><p>He puts the company's value at about $2 billion. "It's a trillion today, it was 2 billion."</p><p>Rubinstein's arrival was not advertised around the office:</p><blockquote><p>"They kept me, in particular, hidden for three days because I was going to replace like five division managers, right, because we were going to collapse all these divisions."</p></blockquote><p>Larry Ellison later said Jobs had planned the takeover all along. Rubinstein's response to the version told at Jobs' memorial:</p><blockquote><p>"that bullshit that Larry spun, Ellison spun at his eulogy, at his funeral and stuff was nonsense."</p></blockquote><p>Rubinstein leaves room for the possibility that Jobs kept a secret from him, but not much:</p><blockquote><p>"Larry has been quoted as saying, 'No, no, no. Steve had this strategy of how he was going to do this, and he was going to get back to take over the company.' That is certainly not what I saw. Now, it may be that Steve kept it secret from me. Anything is possible, but we were pretty close at the time. And I know Laurene didn't want him to go back, right, because it meant he would disappear."</p></blockquote><h2>1997: Cutting products, and killing the research group</h2><div id="youtube2-_LsvdlaF5_k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_LsvdlaF5_k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_LsvdlaF5_k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>On 13 May 1997 Jobs sat on a stool at WWDC and took developer questions for an hour and eleven minutes. He held no title at Apple. The first question was about OpenDoc, a component technology Apple had been pushing for years, and he said he was for putting a bullet in its head. YouTube copies of this one get removed periodically; the <a href="https://archive.org/details/1997-wwdc-session-v-50-fireside-chat-with-steve-jobs">Internet Archive copy</a> is the durable one.</p><p>The cuts went beyond products. Larry Tesler had founded Apple's Advanced Technology Group. In 1997, he was asked to close it.</p><p>Tesler:</p><blockquote><p>"In 1997, beginning of '97, when Steve Jobs was half back, Gil Amelio was still running the place but kind of doing what Steve had recommended he do, Avie Tevanian, who was running software at that time, came to me and said, 'We're shutting down ATG. People say, oh no, we're going to lose a lot of great ideas. Since you started it, would you go over there and find out what the great ideas are that are still there and which ones we should save and which ones we should kill?' So I was sent back there to kill the organization I had founded, but I'm glad he did it. It was the right thing to do."</p></blockquote><p>The group had ideas. Relevance was the problem:</p><blockquote><p>"They were all really cool, but they were irrelevant. There was one that was Microsoft Surface, so it was 1997 to 2012, so 15 years. It was 15 years ahead of its time."</p></blockquote><h2>July 1997: Amelio out</h2><p>Fred Anderson was Apple's CFO. Tevanian recounts the moment Anderson called Ellen Hancock after firing Amelio:</p><blockquote><p>"right after calling Gil he called Ellen Hancock, who was also being fired, to tell her she was being fired and she first said, he first said to Ellen, I think, something to this order, 'Gil is no longer CEO,' and she thought he was calling her to make her CEO."</p></blockquote><p>McKenna kept a notebook. An entry from early January 1997, after Jobs met Amelio, records that Jobs:</p><blockquote><p>"said they don't appear to want help. They didn't offer him a job. They didn't ask him to be a consultant. They didn't offer any position to him at all."</p></blockquote><p>McKenna's explanation for why 1997 worked when 1985 had not:</p><blockquote><p>"I think he was just so far better equipped to do that in 1997 or '98 than he was in 1985. He had gone through NeXT and putting that system together with the importance of software, and then Pixar, the professionalism of the staff and the management and how they did things."</p></blockquote><p>Then, a few months later, the phone call. "His first words were, 'What do you think about my new board?'"</p><h2>August 1997: The Microsoft $150 million</h2><div id="youtube2-224yVWOApy8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;224yVWOApy8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/224yVWOApy8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>At Macworld Boston on 6 August 1997, Jobs announced the new board and then the Microsoft deal: cross-licensing, a commitment from Microsoft to release Office for the Mac, and $150 million in non-voting stock.</p><p>Bill Gates appeared by satellite on the screen behind Jobs. The room booed.</p><p>Six weeks later Jobs spoke to Apple employees about the new ad campaign.</p><p><a href="https://www.youtube.com/watch?v=NiwJ26kc2YE">https://www.youtube.com/watch?v=NiwJ26kc2YE</a></p><p>Jobs explained what Apple needed people to remember:</p><blockquote><p>"To me, marketing is about values. This is a very complicated world, it's a very noisy world, and we're not going to get a chance to get people to remember much about us. No company is. And so we have to be really clear on what we want them to know about us."</p></blockquote><p>The campaign would not be about specifications:</p><blockquote><p>"The way to do that is not to talk about speeds and feeds. It's not to talk about MIPS and megahertz."</p></blockquote><p>The spot would break that Sunday on ABC, around the network premiere of Toy Story.</p><h2>1998: The iMac started as a network computer</h2><p>The product that put Apple back in front of new customers began as something else. In 1997 Larry Ellison, Jobs's closest friend and about to join Apple's board, was evangelising the network computer: a cheap machine with no hard drive that ran off a server. Apple started building one. Jon Rubinstein, running hardware, had shipped a computer with no hard drive once before, at NeXT.</p><blockquote><p>"I keep going, 'The NeXT machine with no hard drive didn't work out well. This isn't going to work well because it doesn't have the,' we talked about balance before. 'The networks aren't fast enough yet to have the kind of balance you need.' But Steve kept pushing forward with it, and Fred kept going, 'Wait a minute, we need an entry roadmap.' So finally, we had sort of a knock-down-drag-out one day and we decide that we're going to switch the network computer to becoming the iMac and we grow the enclosure a little bit and we stick a hard drive in it."</p></blockquote><p>Fred is Fred Anderson, the CFO, who Rubinstein says "deserves a lot of credit because he's the one who kept going, 'We need to have an entry-level product.'" The motherboard came from the existing G3 desktop. The schedule was the other decision.</p><blockquote><p>"Normal product development at Apple took three years, and I'm like, 'We got to get to one-year cycles.' [...] And everyone goes, 'That's impossible.' Right? And I said, 'No, no, no. We're going to redo all of our processes at the same time.'"</p></blockquote><p>He used the iMac to install the development process Apple still runs: gates, milestones, manufacturing engineers in from the start, legal agreements signed before shipment. The last of those came from a display supplier whose panels were failing in the field at forty to fifty percent when he discovered the contract had never been finished. "I used the iMac as kind of the pipe cleaner, right, to clean out the pipe and to institute all-new processes around how we're going to do stuff at Apple." It took fourteen to sixteen months.</p><p>Two more decisions came with it. Rubinstein chose USB, then shipping on a million PCs that nobody used it on, over Apple's own ADB and over FireWire, which was too expensive for a low-end machine. And the floppy drive went.</p><blockquote><p>"There were not peripherals out yet, right, but they were going to come, eventually. I mean, a million PCs had shipped with USB. They just, no one used it."</p></blockquote><p>The peripherals had to be conjured. Apple was shutting down a billion-dollar printer business at the same time, and Rubinstein called Epson and HP: "Dudes, I got a billion-dollar printer business. Anyone want it?" Both built USB printers to match the iMac; Epson's came in the same colours.</p><p>The launch nearly did not survive the CD drive. During rehearsals Jobs saw the tray slide out and called Rubinstein screaming.</p><blockquote><p>"He goes, 'But what's this tray that comes out?' I'm like, 'That's how they work, right? I mean, that's what all computers have.' He goes, 'Well, I want it to be like my car where you just, you have slot-load.' And I'm like, 'Well, they don't make those.' Right? And he goes, 'Well, this destroys the product.'"</p></blockquote><p>It shipped with the tray. The next generation had a slot. Rubinstein's verdict on what the product did: consumer market share "which had dropped below 2 percent, was heading back up to 8-percent kind of range." And on the one part he still regrets: "That round mouse was terrible. Yeah, that was a bad product, right, and that was industrial design sort of trumping human factors."</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4g-3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4g-3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4g-3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2065535,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4g-3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4g-3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034fd459-6335-45a8-83b8-f2e0e17096ad_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>1998: How the failed Newton kept Apple alive</h2><p>Apple had co-founded ARM in 1990 to build the processor for the Newton, Sculley's project. Sculley says Apple held "47 percent" and describes the sale as one of two things that kept the company alive:</p><blockquote><p>"I give Gil Amelio credit for two things, one was he sold the 47 percent that Apple owned of ARM for about 800 million dollars, or so I'm told, and that 800-million dollars was crucial to keeping Apple alive, and he brought Steve Jobs back. If those two things hadn't of happened, there never would have been the rest of the story."</p></blockquote><p>Apple's own filings put it differently. The FY1999 10-K says Apple owned 42.3 percent of ARM in September 1997, and that the selling began in October 1998, more than a year after Amelio left. That month Apple sold 2.9 million shares and its stake fell to 19.7 percent. During fiscal 1999 it sold about 32.6 million more for net proceeds of about $245 million, booking a gain of about $230 million. In the first quarter of fiscal 2000 it sold another 5.1 million shares for about $136 million.</p><p>By September 1999 Apple had $3.226 billion in cash and short-term investments, up $926 million in a year. Some of that was the iMac. A meaningful piece of it was ARM.</p><p>Sculley's timing and total do not match the filings, and I have not tried to reconcile them.</p><p>The accounts agree on the consequential part: Apple sold most of its stake in the company behind the chip architecture it now uses in every Mac, iPhone and iPad.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x2co!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x2co!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x2co!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x2co!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x2co!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x2co!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg" width="1456" height="1062" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1062,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2278073,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x2co!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x2co!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x2co!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x2co!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd91583ce-88d7-408b-8e28-9b2b4065a115_5515x4023.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>1999: AirPort, the Wi-Fi Apple did not invent</h2><p>Rubinstein ranks it above the iPod: "the one I'm almost more proud of is Wi-Fi, Wi-Fi base stations, right? And we created that, right? We didn't invent it, but we created it."</p><p>The problem was schools. The iMac had taken Apple back into education, the iBook was being designed as its portable sibling, and classrooms needed networking that did not involve opening walls.</p><blockquote><p>"Schools are impossible [to] rewire because of asbestos. A lot of the schools were old, had a lot of asbestos, so you can't go digging in the walls. So we spent a lot of time looking at powerline, at wireless, at phone line, all the different kinds of networking. [...] Intel was doing HomeRF, which was sort of the more popular standard at the time. I mean, no one shipped it yet, but it had a lot of momentum going behind it. And the other one was Wi-Fi, which was mostly used for industrial control at the time."</p></blockquote><p>Apple picked Wi-Fi against Intel's standard. The technology came from a group outside Amsterdam that had passed from NCR to AT&amp;T to Lucent, selling cards for a couple of thousand dollars and base stations for ten thousand to factories.</p><blockquote><p>"Tim Cook did a great job negotiating a deal with them. I mean, he really, we spent a lot of time together over there working on this, and he really convinced them to drop their drawers and give us pricing that was unbelievable so that we could do basically $100 plug-in cards and couple-hundred-dollar base stations."</p></blockquote><p>The iBook team was told to add antennas and connectors to a product already in development, at a cost they resisted. The RF engineers came from the Advanced Technology Group Apple had just shut down; one intern in the Wi-Fi group went on to found Ubiquiti. Then the launch, at the Javits Center in New York in July 1999.</p><blockquote><p>"We took an iBook, we put an accelerometer on it, right? We put Phil Schiller on top of it, and we threw him off of it to land on the airbag and then wirelessly we broadcast the data from the accelerometer on the screen. [...] And then, every fourth or fifth seat in the audience, we put an iBook below it. Right? And so then Steve goes, 'Okay. Everyone reach below.' And we had Apple employees in the audience, right, and everyone pulled out their iBooks and started surfing the internet wirelessly in the audience."</p></blockquote><p>The venue's lawyer tried to stop the jump that morning; Apple's general counsel wrote a liability release on the back of her business card. Rubinstein: "that's the beginning of Wi-Fi, right, of commercial and consumerized, commercial, consumer Wi-Fi. Yeah, three years ahead of Dell." Apple shipped "$20 million worth of antennas and connectors" into its products before the standard had any traction.</p><p>Then Intel tried to change the rules of the unlicensed radio band in HomeRF's favour, and Rubinstein went to Washington.</p><blockquote><p>"I spent a bunch of time in D.C. at the FCC and at the House Telecommunications Commission talking to people about why they shouldn't change the standard and why Wi-Fi was the right way to go and why you shouldn't let Intel change things."</p></blockquote><p>What Apple did not do is the part he still argues about. With Wi-Fi winning, he asked Jobs for three or four engineers to port the base station's configuration software to Windows and sell AirPort into the PC market. "Steve goes, 'Over my dead body.'" Jobs's reason was that AirPort was part of what made a Mac worth buying. Rubinstein thought it was a multibillion-dollar networking business; he lost, and says the loss is why he and Phil Schiller fought so hard, three years later, to take the iPod to Windows.</p><p>On the name: "We named it AirPort Base Station but that wasn't because we thought it was going to actually be in airports. Right? I mean, that was never in our thinking. Starbucks, McDonalds, I mean, we never thought about it that way. Right? And anyone who says we did is fibbing, right, because we didn't think that big. Right? This was, how do we sell more Macs?"</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H-Ib!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H-Ib!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H-Ib!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/affcd384-22e9-48e9-898a-098eca83528e_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1734424,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H-Ib!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!H-Ib!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffcd384-22e9-48e9-898a-098eca83528e_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>2000: Carbon, Aqua, and the compromise that made Mac OS X shippable</h2><p>Adobe and Microsoft would not rewrite their applications for NeXT's frameworks. Apple built Carbon, a compatibility layer that let existing Mac software run on the new operating system with modest changes.</p><blockquote><p>"Carbon and Cocoa were both peers, if you will. There was, at least in the early days, there was no plan to sunset Carbon any time soon, and yet we wanted to make sure that people transitioned so you didn't really see new features coming out on Carbon whereas you did on Cocoa."</p></blockquote><p>The cost was a decade of two parallel APIs. The benefit was that Mac OS X shipped with software on it.</p><p>Bas Ording designed the Aqua interface and, later, the iPhone's. Jobs recruited him with a phone call at home in 1998, when Ording also had an offer from MetaCreations.</p><p>Rubber-band scrolling, the little bounce when a list reaches its end, came from a bug. Ording was building the phone's scrolling contacts list:</p><blockquote><p>"I was constantly changing stuff in my code, like I thought I was running the code but then it wouldn't scroll. I'm like, oh, I guess I'm not running the code yet. Like, wait, but then it was running. Oh wait, I'm scrolling the wrong direction, because it's at the top of the list and it's not gonna go any further."</p></blockquote><p>A list that refused to move looked broken. Ording:</p><blockquote><p>"feels sort of weird, as if the program is just stuck or something. And so that's when I started to think about what can we do to make it feel still alive somehow."</p></blockquote><p>Serlet led the engineering. He had joined NeXT in 1989 following Jean-Marie Hullot from the French research institute INRIA. He ran Mac OS X until 2011, when he recruited Craig Federighi to replace him and left.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IH_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IH_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IH_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg" width="606" height="404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:404,&quot;width&quot;:606,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239391,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IH_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IH_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7f3bd1-b688-4591-94ca-3886a6c32746_606x404.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>2001: The Toshiba drive, and the iPod</h2><div id="youtube2-47bNpIbCaL8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;47bNpIbCaL8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/47bNpIbCaL8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Rubinstein describes the iPod as a procurement story.</p><p>He needed a small hard drive. At IBM Research, he saw the Microdrive in development and asked for five gigabytes at his price. The answer: "They laughed at me. Right? 'Never going to happen.'"</p><p>Rubinstein kept looking. In Japan, he found a Toshiba drive whose makers did not know what to do with it:</p><blockquote><p>"So I kept looking and eventually I was in Japan and found the Toshiba drive and they weren't really sure what to do with it because it didn't have enough capacity to really go in a PC."</p></blockquote><p>The meeting had been about other products. The useful part arrived at the end:</p><blockquote><p>"They were taking us through their roadmap for all of our other products, and at the end of the meeting, they go, 'We have this other thing. Would you like to take a look at it?' I'm like, 'Yeah, sure. I'll take a look at it.' So we looked at it, and like it's obvious, right? This is how to make an iPod, right?"</p></blockquote><p>Jeff Williams, now Apple's chief operating officer, was in the room.</p><p>Then came the money:</p><blockquote><p>"Steve was in Tokyo, so I said, 'Steve, I need a $10 million check to go do development on this.' And Steve goes, 'No problem, I'll write you the check.' So then I talk to Fred to make sure the check won't bounce because Steve, Fred was the guy who actually wrote the check, not Steve, and Fred goes, 'Go ahead. The check won't bounce.'"</p></blockquote><p>Phil Schiller supplied the scroll wheel idea:</p><blockquote><p>"Phil Schiller is the one who came up with the scroll wheel. He had a B&amp;O phone, an old B&amp;O phone that had the scroll wheel, right, and they didn't have acceleration in those days. But so we grabbed that idea. We patented it right away, and we actually ended up licensing that patent back to B&amp;O. I don't think they really knew that we'd lifted it from them."</p></blockquote><p>Tony Fadell, who ran the iPod division, tells the origin differently. Rubinstein:</p><blockquote><p>"Tony has re-spun the whole story that he came up with the idea of the iPod and that Steve called him and, I mean, that's all nonsense."</p></blockquote><p>Fadell gives his account in his own book and interviews. The two heads of Apple's hardware disagree on the record about who thought of the iPod.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WhLx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WhLx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 424w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 848w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WhLx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png" width="506" height="632.2745098039215" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1402,&quot;width&quot;:1122,&quot;resizeWidth&quot;:506,&quot;bytes&quot;:1796772,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213368657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WhLx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 424w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 848w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 1272w, https://substackcdn.com/image/fetch/$s_!WhLx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd016909f-c0d8-4bcb-8ca0-ccdd1d186db4_1122x1402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>2001: KHTML over Mozilla</h2><p>Richard Williamson had joined NeXT out of Swarthmore. Ken Kocienda joined Apple in 2001. Together they built Safari.</p><p>In June 2001, Forstall asked Don Melton to start a browser team. Mozilla, the open-source descendant of Netscape, was the obvious base. Williamson chose KHTML, the rendering engine from the KDE desktop project, instead.</p><p>The size difference mattered on a team this small:</p><blockquote><p>"Mozilla was the leading candidate at that point, the other leading candidate, but it was a million and a half lines of code, and KHTML 150,000 lines of code. And there you go, it's three guys."</p></blockquote><p>Kocienda says the decision turned on:</p><blockquote><p>"the utterly amazingly convincing demo that Richard made to get this code working on the Mac."</p></blockquote><p>KHTML became WebKit. WebKit became the engine in every iPhone browser.</p><h2>2003: Safari launches</h2><div id="youtube2-T_ZNXQujgXw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;T_ZNXQujgXw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/T_ZNXQujgXw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Don Melton ran the Safari project from its first day, 25 June 2001, and has not sat for a CHM oral history, but he wrote the launch up on his own blog ten years later. Two posts carry this section: <a href="https://web.archive.org/web/2020/https://donmelton.com/2013/01/10/safari-is-released-to-the-world/">Safari is released to the world</a> and <a href="https://lisamelton.net/2023/10/05/memories-of-steve/">Memories of Steve</a>. Melton now publishes as Lisa Melton.</p><p>The secrecy problem in 2002 was hiring. Andy Hertzfeld had worked out what Melton was doing before his first day and kept quiet. One hire was too visible to hide:</p><blockquote><p>&#8220;However, when I hired Dave Hyatt in July 2002, then guesses started flying fast.&#8221;</p></blockquote><p>Hyatt had built Chimera at Netscape and co-created the project that became Firefox, both on Mozilla&#8217;s Gecko engine, so the industry assumed Apple was building a Gecko browser. Melton had chosen KHTML a year before Hyatt arrived.</p><p>Jobs opened the Safari segment of the 7 January 2003 keynote with &#8220;So, buckle up,&#8221; then stated the goal:</p><blockquote><p>&#8220;Then he defined one of our product goals as, &#8216;Speed. Speed.&#8217; So, I tensed up. Not that I didn&#8217;t agree, of course. I just knew what was coming soon: Demo time.&#8221;</p></blockquote><p>Melton had sat through at least four rehearsals. At one of them Safari hung on stage because the whole network connection had failed; Kocienda found the cause, and IT set up a redundant link.</p><blockquote><p>&#8220;And for the entire six minutes and 32 seconds that Steve used Safari on stage, I don&#8217;t remember taking a single breath. I was thinking about that network failure during rehearsal and screaming inside my head, &#8216;Stay online, stay online!&#8217; We only had one chance to make a first impression.&#8221;</p></blockquote><p>Then the slide naming the engine:</p><blockquote><p>&#8220;Then Steve moved a new slide onto the screen. With only one word, &#8216;KHTML&#8217;&#8212;six-foot-high white letters on a blue background. If you listen to that video I posted, notice that no one applauds here. Why? I&#8217;m guessing confusion and complete lack of recognition.&#8221;</p><p>&#8220;What you also can&#8217;t hear on the video is someone about 15 to 20 rows behind where we were sitting&#8212;obviously expecting the word &#8216;Gecko&#8217; up there&#8212;shout at what seemed like the top of his lungs: &#8216;WHAT THE FUCK!?&#8217;&#8221;</p></blockquote><p>In Ken Kocienda&#8217;s book, Creative Selection, he describes Jobs setting page-load speed as the standard the browser would be judged by, Melton proposing a test program to measure it, and the Page Load Test Kocienda built to run against every change, with one rule: nothing that made the browser slower went in.</p><p>In the summer of 2002 Jobs wanted the status bar gone:</p><blockquote><p>&#8220;Steve didn&#8217;t like the status bar and didn&#8217;t see the need for it. &#8216;Who looks at URLs when you hover your mouse over a link?&#8217; He thought it was just too geeky.&#8221;</p></blockquote><p>Melton and Forstall kept it as an option, off by default. The progress bar had lived inside it and needed a new home.</p><blockquote><p>&#8220;The room got quiet. Steve and I sat side-by-side in front of the demo machine staring at Safari. Suddenly we turned to each other and said at the same time, &#8216;In the page address field!&#8217;&#8221;</p><p>&#8220;The irony of that invention is that years later I tried to get the whole feature removed. Because even when precision testing showed that Safari loaded pages faster than any other browser, that damn in-your-face progress bar made it seem slower to the user. Its wonderful visibility was killing our reputation.&#8221;</p></blockquote><h2>2005: The Intel transition</h2><p>NeXT ported its operating system to Intel in 1993 because it had to survive. In 2005, Apple used that same operating system to move the Mac to Intel. Tevanian ran software through both transitions; he treats the second as the payoff of the first.</p><p>John Markoff, interviewing him, remembers Jobs hinting at the switch a year before it happened. Tevanian&#8217;s answer is that the product already existed:</p><blockquote><p>&#8220;That&#8217;s because we already had it working. [...] So one of the things about being in tech, right, is when a product is announced it was already working well before that and so the people who were already working on it knew that it&#8217;s coming. Now, he may not have known the exact date but as far as I was concerned, we were working on that product the day I started at Apple in &#8216;97, and we had software running on all the Macs throughout all those years.&#8221;</p></blockquote><p>He did not know which form the move would take, only that it would come:</p><blockquote><p>&#8220;For me, having our software running on an Intel processor at some point in time was inevitable, and so it always was about options and how we would execute those options, and so I didn&#8217;t know if, like at NeXT we got out of the hardware business, Apple would have to get out of the hardware business, as a really radical change, right, in which case we&#8217;d have software to OEM to different people, or we&#8217;d be in the hardware business, maybe building premium computers, which Apple&#8217;s always been great at, with someone else just doing a super-low-cost computer, right, which would probably be based on an Intel processor.&#8221;</p></blockquote><p>The job, as he saw it, was to keep the option cheap:</p><blockquote><p>&#8220;I knew that at some point in time Steve was going to say, &#8216;I need this product.&#8217; Okay. And I knew, starting from scratch, it was a three- to five-year effort, because of everything involved, okay. To port an entire OS and do emulation and everything else, and so I knew I had to have it ready so that when it was time to pull the trigger we could get it out in 9 to 12 months, which is what we ended up doing.&#8221;</p></blockquote><p>Serlet, who ran Mac OS X engineering under him, describes the mechanism. Every project had to build for a processor no shipping Mac used:</p><blockquote><p>&#8220;We had several kind of points in time where we thought the PowerPC was not moving fast enough from a technology standpoint, and we should move to Intel. One thing that Avie pushed, and I enforced it, is that we always compiled our code for Intel as well as PowerPC, even though we had no Intel machine and so we had some checkers in place in the build system to make sure every single project can be built for Intel and this is years before we did the transition.&#8221;</p></blockquote><p>Rubinstein, on the hardware side, had lived the PowerPC problem. On the G5 tower:</p><blockquote><p>&#8220;That was a real slog with IBM, who did the processors, G5 processor for-- it was an amazing product.&#8221;</p></blockquote><p>Jobs and Paul Otellini signed the Intel deal in February 2005. The developer conference was in May. Serlet:</p><blockquote><p>&#8220;We just scrambled to make it happen for the developers conference that was in May, so three months later [...] We wanted also developers to have machines that they can play. But we didn&#8217;t want the Mac OS to run on any PC. So there was a delicate balance. So we decided to build machines in secrecy and in fact, we enlisted Simon Patience&#8217;s team, which was the CoreOS team, to actually build the machine that we were going to give for developers at the conference. So for a while, the kernel team was actually building, assembling machines in a secret lab in preparation for WWDC.&#8221;</p></blockquote><p>The circle of people who knew grew from a dozen in February to several thousand by June, and nobody leaked. The booth staff at WWDC were told an hour before the keynote.</p><p>On stage Apple said a year. Inside, Serlet refused to give a date at all:</p><blockquote><p>&#8220;We said at that time that it would take about a year to transition and nobody believed it. All the industry thought that it would take much longer. We were hoping it would take less. But we were not sure, because we had a dependency on Intel for some of the new chips coming up. So we were not sure, and still we&#8217;re not sure, for several months. So I said, well, we&#8217;re going to pretend we need to ship ASAP and we don&#8217;t have a schedule, but we just have a punch list of what&#8217;s left to do and we&#8217;re going to shrink the punch list and that&#8217;s what we did. People were upset because they wanted to know the schedule and I said, sorry, I can&#8217;t tell you the schedule, I don&#8217;t know the schedule, but it&#8217;s ASAP, and so we were able to ship in January with the new Intel Macs and so that was six months, not a year and then the rest of the transition was done in less than a year, the rest of the transition of the machines.&#8221;</p></blockquote><p>For the year in which both kinds of Mac were on sale, he forced one code base through software update:</p><blockquote><p>&#8220;I wanted the transition to be viewed as invisible. So what we did for the rest of that year is we did software updates that had all the improvements that we made to the Intel side. But that also were all those improvements that were not for PowerPC, but we also included that in the PowerPC update and so we had a single code base. We forced the code base to be the same through software update. So by the time January came in with the new Intel machines, they were exactly the same software as the PowerPC. So no one ever found some bug difference between the two.&#8221;</p></blockquote><p>Tevanian&#8217;s summary of what the customer was supposed to notice:</p><blockquote><p>&#8220;One day a Mac had a PowerPC. The next day it had an Intel, right? But it was still a Mac.&#8221;</p></blockquote><p>The Intel Mac lasted fifteen years. In June 2020 Apple announced it would move the Mac to its own processors, the same ARM-derived architecture as the iPhone, and by 2023 every Mac shipped on them. The people on tape did not predict that in so many words, but Rubinstein describes the two steps that led there. The first was the iPod&#8217;s processor. When PortalPlayer, the merchant-chip supplier for the first iPods, pushed back on Apple:</p><blockquote><p>&#8220;We went to Samsung, and we worked out a deal with Samsung where they were going to do multiyear, multi-family processors for us basically to our specifications, and they went and did that, and we got rid of PortalPlayer. [...] They built processors, and I think they built all the processors for Apple until Apple started using their own basically.&#8221;</p></blockquote><p>The second was the 2008 purchase of P.A. Semi:</p><blockquote><p>&#8220;I don&#8217;t think they got the chips, but they got the core design, and they developed on top of it, but for many years we used a Samsung roadmap, a multiyear roadmap and stuff.&#8221;</p></blockquote><p>The reasoning goes back to his NeXT years, where a computer took three or four years to build and was out of date when it shipped:</p><blockquote><p>&#8220;One of the things I started getting in my head is, we want to do one-year cycles. Now, that leads to a problem in that it takes more than a year to do a chip, right? See, then you have to really have a pipeline of chips you&#8217;re working on, and so you have to have enough resources to where you can put in place a roadmap with a pipeline of chips for both processors and control chips and all of that.&#8221;</p></blockquote><p>Asked whether that meant making your own chips: &#8220;You can buy stuff outside, but if you want to build a real system, you got to do your own chips.&#8221; Asked whether that included the microprocessor, in 1990: &#8220;No, no, you don&#8217;t have to build a microprocessor. You can buy that outside.&#8221; Thirty years later Apple built that too.</p><h2>2005 to 2007: Two iPhones, one shipped</h2><div id="youtube2-IiuVggWNqSA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiuVggWNqSA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiuVggWNqSA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Scott Forstall gave one substantial public interview after leaving Apple in 2012, at CHM in 2017. He tells the origin of the iPhone's interface this way.</p><p>The origin begins with Jobs disliking a man at Microsoft. Forstall clarifies that it was not Bill Gates:</p><blockquote><p>"It wasn't Bill, because he was starting to like Bill by this point. It was, Laurene had a friend, so Steve's wife had a friend who was married to a guy who worked at Microsoft. Every time Steve had any social interaction with that guy, he'd come back just pissed off."</p></blockquote><p>One of those social encounters supplied the provocation:</p><blockquote><p>"He came back one time after seeing this guy, and that guy was talking about how Microsoft had solved computing, they were going to do tablet computing, and they were going to do it with pens. And he just shoved it in Steve's face, the way they were going to rule the world with their new tablets with their pens. And Steve came in on Monday and there was a set of expletives, and then it was like, let's show them how it's really done."</p></blockquote><p>Jobs's requirement was no stylus:</p><blockquote><p>"The first thing is, they're idiots, you don't use a stylus. It's cumbersome, you lose it, you're always picking it up and putting it down. We're born with ten styluses. So let's use the ones that we don't have to sell."</p></blockquote><p>That was a tablet project. It became a phone because of what was happening to the iPod. Forstall:</p><blockquote><p>"I think half of our sales at the time were iPods. So we were turning into this consumer electronics company. We were always looking at what was going to take over the iPod space, like was something going to cannibalize music sales and iPod sales, and the one thing that seemed like it might do it would be phones."</p></blockquote><p>Two teams competed. Nitin Ganatra, who ran iOS applications, describes P1, an iPod-derived phone under Fadell, and P2, the OS X-derived phone under Forstall, which Apple internally called Purple. P2 won. Its foundation was the NeXT stack Apple had put into the Mac ten years earlier.</p><p>At Macworld in January 2007 Jobs announced the iPhone and dropped the word "Computer" from the company's name. Apple Computer, Inc. became Apple Inc.</p><h2>2005 to 2007: Twenty-five engineers, a locked room, and a demo every other Monday</h2><p>The people who built the iPhone's software describe an organisation smaller, more secret and more ritualised than the product suggests.</p><p>Ken Kocienda, who wrote the keyboard, on the size of the software team:</p><blockquote><p>"I'm going to make a wild guess just to get you in the right ballpark, four to one engineers to QA. [...] Let's say there's twenty-five engineers, and three, four, or five QA people."</p></blockquote><p>Richard Williamson, who ran the phone's Safari and WebKit work, on why so little QA:</p><blockquote><p>"that meant that individual engineers had to really be on top of the quality of their software. [...] it's kind of unusual in an organization to have so little QA support and to rely on the engineers so much."</p></blockquote><p>Nobody came from outside. Williamson:</p><blockquote><p>"Steve gave us a mandate to, you know, whatever resource you need across the company, go get the people but get the best people. And we were lucky enough to find some really talented folks within Apple. I don't think we hired anybody from outside of the company for quite some time."</p></blockquote><p>Hiring was trust carried over from Safari. Kocienda:</p><blockquote><p>"you take again somebody like Vicki Murley. Why was she brought in onto the iPhone? We worked with her on Safari and WebKit. And we knew she could do the job."</p></blockquote><p>Both men say that is how most of the team arrived, and Williamson adds that it is also why the team was "not diverse at all."</p><p>Bas Ording, who designed most of the interface, worked in what had been Apple's usability lab:</p><blockquote><p>"it wasn't used very much at that point anymore. But yeah, there was no windows and stuff, and there was just like a key for that room, and that's where we had that setup."</p></blockquote><p>About eight people from different teams met there weekly or fortnightly, with no team name, alongside their Mac OS X jobs.</p><p>Scott Forstall, who ran iPhone software, describes the wider regime: six lockdown areas and a sign reading "the first rule of Purple is you don't talk about Purple." For most of development nobody used the phone as a phone. He decided to be the first, and asked Jobs's permission; Jobs said "sure, go for it, give me one too," and Forstall answered "not yet."</p><blockquote><p>"I slipped an iPhone into my right pocket, I had my flip phone in my left pocket, and I walked out four lockdown areas into the parking lot and I was terrified [...] I drove a different route home."</p></blockquote><p>He traces the apparatus to a teenage summer job at a Navy yard:</p><blockquote><p>"I was always guarded by Marines with attack dogs and semi-automatic weapons, which is exactly how we protected the iPhone later."</p></blockquote><p>Andy Grignon, who ran the radios, on what the rest of Apple saw:</p><blockquote><p>"people would see all of this food being carted in and they thought it was just some luxury lifestyle happening behind these frosted over glass doors. And the funny thing is is when you actually went back there, it stank because the janitor people weren't allowed to clean regularly."</p></blockquote><p>Nitin Ganatra, who ran the applications teams, had a test for anyone asking to be let in:</p><blockquote><p>"'Well, why? What specifically are you running into that you need?' And once you kind of, once you ask a couple of those questions that way, you can really find out does somebody need access or not."</p></blockquote><p>The management system was a demo review with Jobs. Ording:</p><blockquote><p>"usually every two weeks, and they would last about two hours or so. And for a while, we had them every week, and it used to be on Mondays, so the whole weekend, you're kind of like, 'Oh, my demo's not ready! And I don't want to get yelled at on Monday,' so you'd just work the whole weekend to get the stuff better."</p></blockquote><p>They ran just after lunch, which meant no lunch. Ganatra on preparing for one:</p><blockquote><p>"I always had a little bit less sleep the night before the days that I knew I was going to be meeting with Steve, and I was always sort of like, shields are like half up because I'm ready to get chewed out because a demo that I'm going to show isn't going to work [...] 'I don't have to have the answer to every single thing that I might be asked by Steve Jobs in this meeting, but I should really have the answers to 80 percent of the things.'"</p></blockquote><p>Grignon learned the one rule by breaking it. He debugged live in front of Jobs once, and lost his seat at interface reviews for a stretch.</p><blockquote><p>"Steve is very impatient, was very impatient. And the last thing you ever did was sit there and try to fix problems. Like, just cut. Just stop. [...] And move on. You'll get like a little verbal lashing, and that's it."</p></blockquote><p>Kocienda demoed to Jobs six or eight times in total, and the demo was how a decision got reversed:</p><blockquote><p>"There were a couple of times that I changed his mind in a demo. [...] he said he wanted something, and I showed him a demo for something different. And he said, 'Yeah, okay. That's better. That's better than what I was thinking. And you've already got it.' [...] He had no reason to take my word for anything. He didn't really know me. But it was about the work."</p></blockquote><p>Ording says the look and behaviour of iOS were settled before engineering was disclosed:</p><blockquote><p>"the very beginning of the whole, I guess you could call it the iOS look and feel and behaviors was done before engineering was involved, really. Well, of course Scott Forstall was involved. He saw what was going on, but other people didn't really see it until the demo was at a certain point, certain level. And that's what's like, 'Well, this is going to be the thing.' And of course, then there's still lots of discussion about how it should be really built, but the direction was set."</p></blockquote><p>He contrasts it with Mac OS X, where features kept changing while they were being built. The demo that sold the phone to Apple's own leadership in May 2005 was mostly a rehearsed path. Ording, itemising:</p><blockquote><p>"It was a little bit of smoke and mirrors in certain places. [...] Where you could only tap on certain things. There was just one sequence that would work. But some of them were more interactive, so you could, like, like with the music one you could scroll through the whole list and you could pick any song and it would play [...] But I guess the keyboard was probably not working then."</p></blockquote><p>Once engineering took over, Ganatra's rule was that demos ran real software, argued as efficiency:</p><blockquote><p>"if you're working on smoke and mirrors that's time, you're taking time away from working on the actual product. [...] if you can make it so that the thing that you're demoing is the thing that you are going to ship then all of the efforts are aligned as far as making a great demo and making a great product."</p></blockquote><p>As the date approached, control passed to Kim Vorrath's programme office. Williamson:</p><blockquote><p>"the threshold for changes goes up. Every change is a potential bug to be introduced, right? So, you really want to ratchet up the level of what you'll accept. And Kim was very good at this. We used to have BRBs non-stop, bug review boards. And they would be daily or sometimes twice daily moving up towards the release into the launch."</p></blockquote><p>Kocienda, from the engineer's side of the table:</p><blockquote><p>"If you had a bug [fix], you needed to go to this bug review board and defend it. [...] particularly, the closer you get to release, the base assumption is no, we're not going to change this software, convince me that we need to."</p></blockquote><p>Changes that came from Jobs went through the same board. The keynote itself was a test plan. Williamson:</p><blockquote><p>"pretty much for every keynote, there was a script that was mailed out. But it wasn't generally mailed out, so all of the senior managers had the script. And we had to run through the script on our own devices and make sure everything worked and track the bugs that were associated with the script. But Steve did a lot of rehearsals with Phil. [...] they used to call Steve 'the talent.' And you had to make everything perfect for 'the talent.'"</p></blockquote><p>Kocienda, whose keyboard was in the demo, went to Moscone with no idea what the presentation would be. Grignon watched from the third row, having agreed with colleagues the night before that whoever owned each segment would drink a shot when it passed, then realising the radios were in every segment.</p><blockquote><p>"We had never had as good of a run-through in practice, in rehearsal than we ever had at the unveiling, and so, that was a really interesting stroke of luck."</p></blockquote><div id="youtube2-MnrJzXM7a6o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;MnrJzXM7a6o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/MnrJzXM7a6o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>2008: The App Store, and the decision Apple did not plan to make</h2><p>When the iPhone launched in June 2007, the official position was that third-party developers would build web apps. There would be no native software from outside Apple.</p><p>Ganatra says that was also the internal position at first. Developers kept pointing out the difference between Apple's native apps and the web apps available to everyone else:</p><blockquote><p>"Initially it was not different. There were definitely a lot of requests that came between January and even when we shipped, people coming and saying, hey, you know, web technologies aren't going to work as well as what you demoed, so why is that the answer for third parties?"</p></blockquote><p>The team ran into that wall often enough to change course. The good news was that Apple had already built its own apps as if an SDK existed. The less good news was that turning an internal interface into a public promise is an enormous amount of work. Ganatra:</p><blockquote><p>"We went through enough examples like that until we realized that really the right answer here is to release an SDK. And luckily, Scott Forstall, to his credit, he knew what these projects look like and how we were already building the software. He had a good understanding that internally, even though we didn't have a third-party SDK, internally we were developing these things as though we had, using our own internal SDK. So the amount of work that we would have to do, we already have an SDK basically, so we would have to do some sanitizing and cleaning up and getting some interfaces ready to share with the outside world. And Apple takes those interfaces very seriously, so that's an enormous amount of work. You don't just open things up and let people do what they want and then now you have a huge problem later on."</p></blockquote><p>The App Store opened on 10 July 2008 with 500 apps. The interfaces Ganatra describes sanitizing were UIKit, the direct descendant of NeXT's AppKit. Every app on the store was written against a framework whose design dates to 1989.</p><p>That is the point at which Apple stopped being a computer company. Forstall had said half of sales were already iPods before the phone shipped. After 2008 the iPhone and the software sold through it became the business, and the Mac became one product line among several.</p><div id="youtube2-xo9cKe_Fch8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xo9cKe_Fch8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xo9cKe_Fch8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>2011 to 2026: What the third act inherited</h2><p>Tim Cook became CEO in August 2011. Rubinstein, who had left by then, credits him with a specific contribution from the iPod years: negotiating the flash memory supply.</p><blockquote><p>"Tim Cook did a great job negotiating a deal with them. I mean, he really, we spent a lot of time together over there working on this, and he really convinced them to drop their drawers and give us pricing that was unbelievable."</p></blockquote><p>The company Cook ran for fifteen years rests on three earlier decisions. Its operating systems descend from Mach and NeXTSTEP. Its frameworks descend from AppKit. Its processors descend from ARM, which Apple co-founded in 1990, sold most of its stake in between 1998 and 2000, and returned to when it began designing its own chips.</p><p>Apple Silicon, announced in 2020, moved the Mac off Intel and onto the same architecture as the iPhone. NeXT had moved to Intel in 1993 to survive, and Apple repeated the move in 2005. The chip company Apple had once owned 42 percent of eventually undid both transitions.</p><p>Ternus was on the hardware team for all of it. Apple's announcement credits him with "multiple new product lines, including iPad and AirPods, as well as many generations of products across iPhone, Mac, and Apple Watch," and says his work on the Mac "has helped the category become more powerful and more popular globally than at any time in its 40-year history."</p><p>He takes over a company whose kernel, frameworks, language lineage and chip architecture were all decided by people who thought they were failing.</p><h2>What today's Apple inherited from NeXT</h2><p>Mach became the kernel of NeXTSTEP, then Mac OS X, then iOS.</p><p>Objective-C, licensed from Stepstone and rebuilt at NeXT, was Apple's primary language until Swift. AppKit and Foundation, NeXT's frameworks, became Cocoa on the Mac and the model for UIKit on the iPhone.</p><p>NeXTSTEP's portability to Intel, bought in 1993 to survive, moved the Mac in 2005.</p><p>The people: Tevanian ran software until 2006. Serlet ran it until 2011 and hired Federighi, who runs it now. Rubinstein ran hardware and the iPod. Forstall ran iPhone software until 2012. Sina Tamaddon, who ran NeXT Europe, ran Apple's applications division for a decade.</p><p>Hoffman's sentence holds all of it: "today's Macintosh success is NeXT."</p><h2>The people who were there</h2><p>Everyone quoted above sat for a long recorded interview. Most were recorded at the Computer History Museum. They run about three hours and have a few hundred views.</p><p>Each appears with timestamps and transcript links in the companion piece: <a href="https://journal.daniellopes.dev/p/apple-history-in-their-own-words">Apple history in their own words</a>.</p><p>Transcripts: <a href="https://archive.computerhistory.org/resources/access/text/2012/08/102746385-05-01-acc.pdf">Markkula</a> &#183; <a href="https://archive.computerhistory.org/resources/access/text/2012/02/500003269-05-part_1.pdf">Sculley, part 1</a> and <a href="https://archive.computerhistory.org/resources/access/text/2012/02/500003269-05-part_2.pdf">part 2</a> &#183; <a href="https://archive.computerhistory.org/resources/access/text/2013/04/102746463-05-01-acc.pdf">Amelio</a> &#183; <a href="https://archive.computerhistory.org/resources/access/text/2017/07/102740143-05-01-acc.pdf">Tevanian, part 2</a> &#183; <a href="https://archive.computerhistory.org/resources/access/text/2020/02/102717908-05-01-acc.pdf">Rubinstein, session 1</a> &#183; <a href="https://archive.computerhistory.org/resources/access/text/2019/03/102738754-05-01-acc.pdf">Hoffman, part 2</a> &#183; <a href="https://www.youtube.com/watch?v=IiuVggWNqSA">Forstall, CHM video</a> &#183; <a href="https://www.youtube.com/watch?v=gnNdb2wa_NE">NeXT panel with Tevanian, Tribble and Lewin</a></p><h2>Misconceptions</h2><p>Each of these has at least two people on the record, and they do not always agree. The accounts are quoted with the page or timestamp so you can check them; the CHM transcripts are linked once per person below.</p><p><strong>John Sculley fired Steve Jobs in 1985.</strong></p><p>The two men in the room agree on the mechanism and differ on the word.</p><p>Sculley: "So Steve was never actually 'fired' from Apple, but he was demoted from the role of leading the Macintosh division and then he went off on sabbatical." (Sculley, part 1, p.7)</p><p>Markkula, who ran the board's investigation and sided with Sculley: "He didn't fire Steve, but he made it so Steve had nothing to do so Steve decided to go off on his own." (Markkula, p.38)</p><p>Record: removed as head of the Macintosh division in spring 1985, given a role with no reports, resigned in September 1985.</p><p><strong>Common belief: 1985 Apple collapsed as soon as Jobs left.</strong></p><p>It grew and stayed profitable for eight years. Apple's revenue went from about $2 billion in 1985 to about $8 billion in 1993, with a profit every year of Sculley's tenure. The decline is 1993 to 1996, under Spindler and then Amelio: Mac OS licensed to clone makers, product lines multiplied, roughly 300 R&amp;D projects running at once, and Copland, the replacement operating system, never shipped. Rubinstein on arriving in 1997: "most of the projects had been actually cancelled before Steve came back because Steve didn't actually come back. I mean, history has been rewritten a bit." (Rubinstein, session 1, p.66)</p><p><strong>Misconception: Apple bought NeXT mainly to bring Jobs home.</strong></p><p>Three accounts, from the CEO who made the decision, the board member who watched him make it, and the engineer whose software was being bought.</p><p>Amelio: "the NeXT operating system was the best choice out there. I would say virtually everybody felt like we shouldn't touch it because of Steve Jobs. Every one of my board members and most of my staff told me forget about it. Nonetheless, I continued to have talks with Steve, and I couldn't find another path we could follow. If I couldn't get Sun, then the third, whatever was third on the list was so far down the list that it really wasn't a viable strategy." (Amelio, p.35)</p><p>Markkula: "Gil is the guy that came to the conclusion that we needed to buy an OS [...] The other one we looked at was Be. And Jean-Louis had done a really good job with that, but it wasn't finished." On Jobs: "I don't think it was an issue. If he wanted to come back, fine, if he didn't, fine. I don't think, what we wanted was the OS. And Avie Tevanian." (Markkula, p.42)</p><p>Where they diverge: Amelio says the decision to bring Jobs back was the hardest of his life, "I agonized more over the decision as to whether to bring Steve Jobs back more so than I think any other decision I made in my life" (Amelio, p.36), and that ten years on "it was still his company" (p.36). Markkula's account gives Jobs's return almost no weight at all. Both agree the object of the purchase was the operating system.</p><p><strong>Myth: The $429 million bought a charismatic founder and little else.</strong></p><p>What changed hands: the Mach kernel, NeXTSTEP and the OPENSTEP frameworks, the Objective-C toolchain, WebObjects, and the engineers, including Tevanian, Rubinstein, Serlet and Forstall. Apple's FY2000 10-K books a $375 million charge for in-process research and development. Hoffman, on what the purchase became: "It was NeXT's software that created that Macintosh to the exclusion of the previous Macintosh. People don't remember the previous Macintosh." (Hoffman, part 2, p.22)</p><p>Tevanian adds what NeXT did not know it was buying into: "Right after signing the deal to be acquired, so now we're looking at late December, couple days before Christmas, '96, as that quarter is coming to a close for Apple, they had to pre-announce a major loss, and that kind of took us by surprise." (Tevanian, part 2, p.3)</p><p><strong>Common shorthand: Jobs returned, introduced iMac, and Apple recovered.</strong></p><p>The sequence from 1997 to 2007 has more steps, and the first ones were not his. Rubinstein: the product cuts, the Singapore and Paris closures, and the halving of engineering ran under a McKinsey reorganisation with Fred Anderson as interim CEO, before Jobs held any office (Rubinstein, session 1, p.66 and following). Then, in order: the Microsoft deal in August 1997; the iMac in 1998 and the ARM stock sales that rebuilt the cash position; Mac OS X in 2001, made shippable by Carbon; the iPod in 2001, built around a Toshiba drive shown at the end of an unrelated meeting; the Intel transition in 2005; and the iPhone in 2007, on the same NeXT-derived stack.</p><p><strong>Myth: Tim Cook's Apple left the old technical foundations behind.</strong></p><p>Cook ran the company from 2011 to 2026 on NeXT's operating system and frameworks and ARM's chip architecture. Apple Silicon, from 2020, put the Mac on the same architecture as the iPhone, reversing the Intel move of 2005. Cook becomes executive chairman on 1 September 2026; John Ternus, head of hardware engineering, becomes CEO.</p><p><strong>The tidy version: Jobs made NeXT a route back into Apple.</strong></p><p>Larry Ellison said so at Jobs's memorial. Two people who were inside NeXT at the time say otherwise, on the record.</p><p>Rubinstein, asked whether Jobs intended to return: "Not coming back, yeah. No, no, not coming back. [...] And that bullshit that Larry spun, Ellison spun at his eulogy, at his funeral and stuff was nonsense." He adds: "I know Laurene didn't want him to go back, right, because it meant he would disappear." (Rubinstein, session 1, p.64)</p><p>Tevanian, on the paperwork NeXT had ready before Apple called: "if you look at the S1 that we were ready to file when we were going to go public he was going to basically not be the CEO anymore and we would have had an office of the president." (NeXT panel, 48:10) The company was preparing to move Jobs out of the CEO role so he could spend more time at Pixar, weeks before the acquisition talks.</p><p>Rubinstein concedes the limit of his own evidence: "Anything is possible, but we were pretty close at the time." (p.64)</p><p><strong>Misconception: ARM money funded the NeXT purchase.</strong></p><p>Sculley: "I give Gil Amelio credit for two things, one was he sold the 47 percent that Apple owned of ARM for about 800 million dollars, or so I'm told, and that 800-million dollars was crucial to keeping Apple alive, and he brought Steve Jobs back." (Sculley, part 2, p.6)</p><p>Apple's filings disagree on the stake, the timing and the amount. The FY1999 10-K puts the holding at 42.3 percent in September 1997 and dates the first sale to October 1998, fifteen months after Amelio left. That month Apple sold 2.9 million shares, taking the stake to 19.7 percent; fiscal 1999 sales brought about $245 million and a gain of about $230 million; a further 5.1 million shares went in the first quarter of fiscal 2000 for about $136 million.</p><p>Where they agree: the stake mattered to the recovery. Where they do not: who sold it, when, and for how much. The cash arrived after the NeXT acquisition and during the turnaround, not before, and not under Amelio.</p>]]></content:encoded></item><item><title><![CDATA[Apple History in Their Own Words: A Guide to Oral Histories and Archival Footage]]></title><description><![CDATA[Every recorded interview with the people who rebuilt the company]]></description><link>https://journal.daniellopes.dev/p/apple-history-in-their-own-words</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/apple-history-in-their-own-words</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sat, 29 Aug 2026 00:07:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e9960455-4131-483a-ad29-61cbd966b5a0_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For fun, I like to listen to oral histories from the Computer History Museum archive. I fell into an awesome Apple rabbit hole about the second act of Apple with Jobs and key members of the team behind it. This is the playlist with some of the notes.</p><p>CHM has been interviewing the NeXT and Apple engineers in three-hour sessions. Most of these have just a few hundred views, but they are packed with interesting stories and knowledge.</p><h2>Steve Jobs in his own words</h2><p>There are a lot of great Steve Jobs interviews convering Apple founding story and early stories. These four are the ones I keep going back to. But the details from the people who worked alongside him are what I find more interesting, and that is the rest of this post.</p><h3>Steve Jobs, Santa Clara Valley Historical Association, 1994</h3><p>29 minutes, interviewed by John McLaughlin, filmed at NeXT in Redwood City.</p><div id="youtube2-MrQ41qf0Rqs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;MrQ41qf0Rqs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/MrQ41qf0Rqs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Recorded three years before he went back to Apple. He covers the founding of Apple, the Macintosh, being pushed out, and building NeXT.</p><h3>Steve Jobs oral history interview, 20 April 1995</h3><p>1 hour 23, interviewed by Daniel Morrow of the Computerworld Smithsonian Awards program.</p><div id="youtube2-M6Oxl5dAnR0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;M6Oxl5dAnR0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/M6Oxl5dAnR0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>This is the full unabridged recording. The Smithsonian hosts the <a href="https://americanhistory.si.edu/comphist/sj1.html">transcript</a>, and the Steve Jobs Archive has published it as <a href="https://putsomethingback.stevejobsarchive.com/smithsonian-oral-history-interview">&#8220;Pursue different paths&#8221;</a> in 16 chapters.</p><h3>Steve Jobs, The Lost Interview, 1995</h3><p>1 hour 6, interviewed by Robert Cringely for the documentary Triumph of the Nerds.</p><div id="youtube2-9m68auPIPRk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9m68auPIPRk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9m68auPIPRk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Only about ten minutes of this aired. The master tape was considered lost until a VHS copy turned up in the director&#8217;s garage after Jobs died.</p><h3>Steve Jobs at MIT Sloan, 1992</h3><p>1 hour 12.</p><div id="youtube2-YXUhLbV8Nrg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YXUhLbV8Nrg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YXUhLbV8Nrg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>An hour on how NeXT actually made money, management practices, future of NeXTSTEP developers, OOP.</p><h2>Before Jobs&#8217;s exile</h2><p>The people who left Apple with Jobs in 1985 were Macintosh people.</p><h3>Andy Hertzfeld</h3><p>Second software engineer on the Macintosh team. 6 hours 20 across two parts, recorded September and October 2025.</p><div id="youtube2-Mi55hZXNOuY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Mi55hZXNOuY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Mi55hZXNOuY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-lykWP2y1L_g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;lykWP2y1L_g&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/lykWP2y1L_g?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Part 1 covers Hertzfeld joining the Apple II team in 1979, porting QuickDraw from Lisa to Mac, building much of the Toolbox, and his conflict with manager Bob Belleville, which Hertzfeld says contributed to his departure after the Mac launch. Part 2 covers Radius with Burrell Smith in 1986, Frox with <a href="https://journal.daniellopes.dev/p/highlights-from-hartmut-esslingers">Hartmut Esslinger</a>, co-founding General Magic in 1990 with Bill Atkinson and Marc Porat, Eazel in 1999, then eight years at Google working on Photos, News, Plus and Glass.</p><p>CHM files part 2 under &#8220;Hartzfeld,&#8221; so a title search misses it.</p><h3>Mike Markkula</h3><p>Apple employee number three, wrote the Apple II business plan, on the board until 1997. 2 hours 35. <a href="https://archive.computerhistory.org/resources/access/text/2012/08/102746385-05-01-acc.pdf">Transcript</a>.</p><div id="youtube2-0DuOnDWRwI4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;0DuOnDWRwI4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/0DuOnDWRwI4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>On what Apple was buying in 1996, Markkula says: &#8220;what we wanted was the OS. And Avie Tevanian.&#8221; On Jobs returning with it: &#8220;I don&#8217;t think it was an issue. If he wanted to come back, fine, if he didn&#8217;t, fine.&#8221;</p><p>On the earlier IBM approach, Markkula says: &#8220;Lou Gerstner. It was his idea to buy Apple for a song.&#8221; On how the OS decision was made: &#8220;Gil is the guy that came to the conclusion that we needed to buy an OS. The other one we looked at was Be. And Jean-Louis had done a really good job with that, but it wasn&#8217;t finished.&#8221;</p><p>Skim for those passages, around pages 40 to 42 of the transcript.</p><h3>Larry Tesler</h3><p>Came to Apple from Xerox PARC and later founded Apple&#8217;s Advanced Technology Group. 8 hours 15 across three parts. Part 2 covers the PARC demos to Jobs; part 3 covers ATG and the Apple Fellows. </p><p>In part 3, Tesler explains what the Apple Fellows recommended around 1995: they debated porting the Mac OS to Intel, rejected it, and advised buying an outside OS, <strong>&#8220;either the NeXT operating system or the Be operating system.&#8221;</strong></p><div id="youtube2-TZUhobpe6XA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TZUhobpe6XA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/TZUhobpe6XA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-OloLXE4I5fw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;OloLXE4I5fw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/OloLXE4I5fw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-pJKW7A2rC4s" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;pJKW7A2rC4s&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/pJKW7A2rC4s?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Bill Atkinson and Andy Hertzfeld on MacPaint</h3><p>Atkinson describes Jobs recruiting him off an unfinished neuroscience PhD when Apple had 30 employees. Includes a live MacPaint 1.0 demo. 1 hour 20. <a href="https://archive.computerhistory.org/resources/access/text/2015/12/102743021-05-01-acc.pdf">Transcript</a>.</p><div id="youtube2--syl7m_i-80" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;-syl7m_i-80&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/-syl7m_i-80?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Bruce Horn</h3><p>Horn was at PARC from age 14 and was there during Jobs&#8217; 1979 visit. He created the Resource Manager, resource forks and file Types and Creators, which is why the Mac did not need filename extensions. He later co-founded a company built on NeXT&#8217;s WebObjects. Wrote the Macintosh Finder.</p><div id="youtube2-hnhxS2dukeM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;hnhxS2dukeM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/hnhxS2dukeM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Steve Wozniak</h3><p>3 hours 4, University of Washington, 2006. A guest lecture in Ed Lazowska&#8217;s.</p><div id="youtube2-rJ8IgX8RikM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rJ8IgX8RikM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rJ8IgX8RikM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>NeXT, 1985 to 1996</h2><p>Five people left Apple with Jobs: Rich Page, George Crow, Susan Barnes, Bud Tribble and Dan&#8217;l Lewin.</p><h3>Bud Tribble and Steve Jobs at a NeXT retreat, 1986</h3><p>Tribble, NeXT&#8217;s founding software lead, says he was told to build a word processor with no feature spec and therefore cannot commit to the launch date. Jobs pushes on the date. Tribble holds.</p><div id="youtube2-_43XPfJEqWc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_43XPfJEqWc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_43XPfJEqWc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Bud Tribble</h3><p>1 hour 23, University of Washington, 2006. From the same course as the Wozniak lecture, it also circulates only as two reuploads without descriptions. I identified it by matching the guest roster: Lazowska, Kate Deibel, Mike Koss and Burton Smith are all UW or Seattle people.</p><h3>Rich Page</h3><p>NeXT co-founder and head of hardware. 5 hours 50 across two parts. Part 1 covers Page testing memory chips at Fairchild Semiconductor in 1972, moving to HP, then joining Apple in 1978 to work on the Lisa. Page says he convinced the Lisa team to drop a custom microcoded bit-sliced processor in favour of the Motorola 68000. He built large-screen, colour and portable Mac prototypes and became an Apple Fellow alongside Atkinson.</p><p>Part 2 covers NeXT manufacturing: the automated factory, the difficulty of making the magnesium cube, supplier relationships with Motorola and Canon, the second-generation NeXTstation, and the NeXT RISC Workstation, which never shipped. Page left in 1992, by which point every co-founder except Jobs had gone. He then founded Sierra Research and Technology, which made 10/100 Ethernet chips and was sold to TDK in 2000.</p><p>It is the only detailed account here of NeXT hardware.</p><div id="youtube2-SCTTvhRXIq4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;SCTTvhRXIq4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/SCTTvhRXIq4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-p2b_CmKrmBE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;p2b_CmKrmBE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/p2b_CmKrmBE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Dan&#8217;l Lewin</h3><p>NeXT co-founder, sales and marketing. 2 hours 43. <a href="https://archive.computerhistory.org/resources/access/text/2016/04/102740097-05-01-acc.pdf">Transcript</a>. Lewin was selling Sony tape recorders and met Jobs in a meeting about Sony&#8217;s 3.5-inch floppy drive, which Apple went on to choose for the Macintosh. Jobs recruited him. He built Apple&#8217;s education sales and marketing, then followed Jobs to NeXT to sell the cube into universities. After NeXT: GO Corporation, Aurigin, Kidsoft, then Microsoft from 2001. He now runs the Computer History Museum.</p><div id="youtube2-qJdF96yG5D0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qJdF96yG5D0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qJdF96yG5D0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Avie Tevanian, part 1</h3><p>Author of the Mach microkernel, later Apple&#8217;s SVP of Software. 2 hours 31. Tevanian started Mach as a graduate student under Rick Rashid at Carnegie Mellon. NeXT engineers decided they wanted it after seeing it presented at a UNIX conference in 1986, and Jobs relayed the interest at a dinner in Palo Alto. Tevanian turned down an offer from Microsoft and joined NeXT. He ran the core OS team for a year, then the whole OS group, then became VP of Software after Tribble left.</p><div id="youtube2-vwCdKU9uYnE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vwCdKU9uYnE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vwCdKU9uYnE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Bertrand Serlet</h3><p>AppKit engineer at NeXT, later Apple&#8217;s EVP of Software. 2 hours 52. Serlet was at Xerox PARC in 1984, then followed Jean-Marie Hullot from the French research institute INRIA to NeXT in 1989. He worked on the AppKit team and shipped OpenStep, then led the Foundation framework, then Enterprise Objects Framework and WebObjects. At Apple he led Rhapsody, which became Mac OS X, and took over software after Tevanian. He left in 2011 after recruiting Craig Federighi to replace him.</p><div id="youtube2-qpIuIImN0YI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qpIuIImN0YI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qpIuIImN0YI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Blaine Garst</h3><p>Tevanian hired Garst in 1990 to manage the Mach kernel team. With Serlet he added protocols to Objective-C. He implemented Distributed Objects, added reference counting to memory management, and wrote many of the original Foundation classes alongside Serlet and Ali Ozer. In 1996 he built the Objective-C to Java bridge that let WebObjects applications be written in Java.</p><div id="youtube2-qtEIq7fe_KQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qtEIq7fe_KQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qtEIq7fe_KQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Steve Naroff</h3><p>Ran NeXT&#8217;s development tools. Naroff was at Stepstone, which sold Objective-C, porting the compiler to HP-UX and Apollo. He became the main engineer fixing the language for NeXT&#8217;s needs, felt Stepstone was not resourcing that work, and joined NeXT in 1988. There he integrated Objective-C into GCC and added categories to support Interface Builder. Later at Apple: director of Java technologies and developer tools, then Xcode, then Objective-C 2.0, then the LLVM/Clang front end from 2007 to 2010.</p><p>Naroff also co-wrote the language history with Brad Cox, who created Objective-C, and CHM curator Hansen Hsu: <a href="https://dl.acm.org/doi/10.1145/3386332">&#8220;The origins of Objective-C at PPI/Stepstone and its evolution at NeXT&#8221;</a>, open access.</p><div id="youtube2-ljx0Zh7eidE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ljx0Zh7eidE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ljx0Zh7eidE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-vrRCY6vwvbU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vrRCY6vwvbU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vrRCY6vwvbU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Glenn Reid</h3><p>NeXT engineer, later built iMovie. Reid got into Adobe&#8217;s font group after writing Adobe a letter in PostScript. He joined NeXT in 1990 working on email and fax, left in 1991 to found RightBrain Software and ship a NeXT desktop publishing app. In 1998 Jobs hired him to build iMovie 1.0, which Reid says he built in nine months with two other engineers. He then led iPhoto through version 4 and was Director of Engineering for Consumer Applications until 2003.</p><div id="youtube2-4S7FtgpIj3Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;4S7FtgpIj3Q&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/4S7FtgpIj3Q?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Joanna Hoffman</h3><p>Original Mac team, then NeXT. Start with part 2. Hoffman wrote the Macintosh business plan and followed Jobs to NeXT after 1985. She left NeXT after nine months. On the pitch she kept hearing: &#8220;Eighteen months we&#8217;re going to have this incredible product,&#8221; and then &#8220;not again!&#8221; about the focus on an unrealistic storage device. Hoffman thought the NeXT vision was too small for Jobs.</p><p>Hoffman&#8217;s assessment of how it turned out: &#8220;I keep saying the first Macintosh&#8217;s success was really Windows. But today&#8217;s Macintosh success is NeXT. You know? No question.&#8221;</p><p>Parts 1 and 3 cover Soviet Armenia and Poland, emigrating to Buffalo at 13, MIT and PARC, then what working for Jobs was like.</p><div id="youtube2-fEktkJJ39w0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fEktkJJ39w0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fEktkJJ39w0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-GfS44H4cO10" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GfS44H4cO10&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GfS44H4cO10?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-Db5o7m1Bb70" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Db5o7m1Bb70&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Db5o7m1Bb70?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><h2>The acquisition and the return, 1996 to 1998</h2><h3>Avie Tevanian, part 2</h3><p>Tevanian says NeXT went from first call to signed acquisition in under a month, and that days later Apple pre-announced a large loss, which took them by surprise. He covers the bake-off against Be from NeXT&#8217;s side, working under Amelio and then Jobs, pushing TCP/IP and open standards over Apple&#8217;s proprietary technology, the Intel transition, sunsetting Newton, Mac OS 9 and WebObjects, and his Microsoft antitrust testimony. He retired in 2006.</p><p>Tevanian also describes Fred Anderson phoning Ellen Hancock to fire her right after firing Amelio, and Hancock initially thinking the call was to make her CEO.</p><div id="youtube2-NtpIFrOGTHk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NtpIFrOGTHk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NtpIFrOGTHk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Jon Rubinstein</h3><p>Ran Apple hardware from 1997 and later the iPod division. </p><p>Rubinstein started on 3 February 1997, the day the NeXT deal closed. He describes Apple as worth around $2 billion with one quarter of cash left, and says they hid him for three days because he was there to replace five division managers.</p><p>On Larry Ellison&#8217;s claim that Jobs had planned to retake Apple, Rubinstein says: &#8220;That is certainly not what I saw. Laurene didn&#8217;t want him to go back.&#8221;</p><p>The iPod material is in session 2. Rubinstein says IBM&#8217;s Microdrive group &#8220;laughed at me&#8221; when he asked for five gigabytes at his price. He found the Toshiba 1.8-inch drive at the end of a Japan roadmap meeting about something else, called Jobs in Tokyo to ask for a $10 million check, then called Fred Anderson to check it would clear. Phil Schiller supplied the scroll wheel, from an old Bang and Olufsen phone, and Apple patented it and licensed it back to B&amp;O. The first iPod was 20 to 25 people in eleven months, and the launch moved a week for Rubinstein&#8217;s wedding.</p><p>Rubinstein also says Apple&#8217;s multi-touch origin story is &#8220;all nonsense,&#8221; and blames Verizon for killing the plan to put cellular in every laptop.</p><div id="youtube2-PJxElfc0N9E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PJxElfc0N9E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PJxElfc0N9E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-47bNpIbCaL8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;47bNpIbCaL8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/47bNpIbCaL8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><h3>Regis McKenna</h3><p>Marketed the Apple II and knew Jobs for 35 years. Part 5 of eight, 2 hours 3, scoped to 1985 through 1999. </p><p>McKenna reads from a dated notebook. His entry for 6 January 1997, after Jobs met Amelio: &#8220;they don&#8217;t appear to want help. They didn&#8217;t offer him a job.&#8221; For 9 August 1997, when Jobs phoned him: &#8220;What do you think about my new board?&#8221;</p><p>McKenna on Amelio&#8217;s executive hires: they &#8220;all wanted to be miniature Steve Jobs,&#8221; which he likens to the Hell&#8217;s Angels dressing up in a tuxedo. On Michael Spindler: &#8220;He could stand at a board and draw out a future strategy, and it would overwhelm you. He fell short in how you implement it.&#8221; McKenna turned Jobs down twice on rejoining.</p><div id="youtube2-YIJiYbOHrEA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YIJiYbOHrEA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YIJiYbOHrEA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-YCxPVqQdpBA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YCxPVqQdpBA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YCxPVqQdpBA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-SBSLwtt4lZk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;SBSLwtt4lZk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/SBSLwtt4lZk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-eV88MzD-ciE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;eV88MzD-ciE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/eV88MzD-ciE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-Bb3a-Tzxv_I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Bb3a-Tzxv_I&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Bb3a-Tzxv_I?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-Fghnn7i4UZk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Fghnn7i4UZk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Fghnn7i4UZk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-N5zOwsBV-d0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;N5zOwsBV-d0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/N5zOwsBV-d0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-kz7bHWudi7E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kz7bHWudi7E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kz7bHWudi7E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><h3>Gil Amelio</h3><p>Apple CEO from February 1996 to July 1997, and the person who bought NeXT. <a href="https://archive.computerhistory.org/resources/access/text/2013/04/102746463-05-01-acc.pdf">Transcript, 42 pages</a>, interviewed by Jeff Katz and George Scalise in 2012.</p><p>Amelio on the state of the company when he arrived: &#8220;there were 300 R&amp;D projects&#8212;300. I could make a case that maybe we needed 20 of those, and that might even been too big a number, but 300 was ridiculous.&#8221; He got it down to about 50. On manufacturing: &#8220;We were getting back&#8212;some months&#8212;as much as 10 percent of the computers we shipped.&#8221;</p><p>He went to Sun first. Scott McNealy wanted to buy Apple, and the question was whether the Mac interface could sit on top of Solaris. Amelio: &#8220;At the end of the day, Scott McNealy&#8217;s board turned us down. At that time, John Doerr was on their board, and I think he was, perhaps, most vocal in saying, &#8216;No, we shouldn&#8217;t make this connection.&#8217;&#8221;</p><p>Then Be, and in Amelio&#8217;s telling Gassee came to Apple rather than the reverse: &#8220;Jean-Louis Gassee approached us about the Be operating system, and I&#8217;m kind of glad he did because it gave us another contender in the stack.&#8221;</p><p>On choosing NeXT, Amelio says: &#8220;the NeXt operating system was the best choice out there. I would say virtually everybody felt like we shouldn&#8217;t touch it because of Steve Jobs. Every one of my board members and most of my staff told me forget about it.&#8221; He kept talking to Jobs anyway, because &#8220;if I couldn&#8217;t get Sun, then the third&#8212;whatever was third on the list was so far down the list that it really wasn&#8217;t a viable strategy.&#8221;</p><p>And on the decision that ended his own tenure: &#8220;I agonized more over the decision as to whether to bring Steve Jobs back more so than I think any other decision I made in my life.&#8221; His reasoning was that ten years after leaving, &#8220;it was still his company. His DNA was so much in that company.&#8221; Amelio on Jobs: &#8220;He didn&#8217;t understand technology, but he did understand user interface better than anyone on the planet.&#8221;</p><p>Amelio makes one claim I have not seen corroborated anywhere: that the iMac did not originate with Jobs. He says he killed the Performa, needed a new all-in-one to replace it, gave Ellen Hancock the job, and was &#8220;at least six months into that thing&#8212;maybe longer&#8212;when I ultimately left.&#8221;</p><p>There is also a 1998 audio interview with him by Paul Schindler, and his book, <em>On the Firing Line</em>.</p><h3>Larry Tesler, 2013 session</h3><p>Video listed above</p><p>Tevanian asked Tesler to go into the Advanced Technology Group, which Tesler had founded, and work out what was worth keeping. Tesler: &#8220;So I was sent back there to kill the organization I had founded, but I&#8217;m glad he did it.&#8221; Inside, Tesler found a project he describes as essentially Microsoft Surface, &#8220;15 years ahead of its time.&#8221;</p><h3>John Sculley</h3><p>Apple CEO 1983 to 1993, interviewed by David Greelish in 2011 and donated to CHM. Transcripts: <a href="https://archive.computerhistory.org/resources/access/text/2012/02/500003269-05-part_1.pdf">part 1</a>, <a href="https://archive.computerhistory.org/resources/access/text/2012/02/500003269-05-part_2.pdf">part 2</a>.</p><p>Sculley&#8217;s argument for not licensing the Mac OS: the models showed that it required about 25 percent market share, a higher OS price than Windows, and layoffs covering 70 to 80 percent of the workforce, while Microsoft charged OEMs &#8220;about $11 a copy.&#8221; He says that when he left, Apple was &#8220;the number one selling personal computer in the world&#8221; with an 8.3 percent worldwide share.</p><p>His most-quoted recorded moment is eight minutes at a Forbes conference in 2013, on May 1985.</p><h3>Footage from the time</h3><p><strong>Macworld Boston</strong>, 6 August 1997. Jobs on stage, Gates by satellite.</p><div id="youtube2-224yVWOApy8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;224yVWOApy8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/224yVWOApy8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The new board, then the Microsoft deal: cross-licensing, Office committed to the Mac, $150 million in non-voting stock. Gates appears on the screen behind Jobs and the room boos. Jobs later told Walter Isaacson it was &#8220;my worst and stupidest staging mistake of my life. It made me look small, and Apple look small.&#8221;</p><p><strong>The 1997 WWDC fireside chat</strong>, 1 hour 11. Jobs taking developer questions while holding no title at Apple.</p><div id="youtube2-_LsvdlaF5_k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_LsvdlaF5_k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_LsvdlaF5_k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The first question is about OpenDoc, and Jobs says he is in favour of putting a bullet in its head. He also gives the answer about starting with the customer experience and working backwards to the technology.</p><p><strong>The internal Think Different talk</strong>, 23 September 1997. 14 minutes, Jobs to Apple employees.</p><div id="youtube2-NiwJ26kc2YE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NiwJ26kc2YE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NiwJ26kc2YE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>&#8220;Marketing is about values.&#8221; He also gives the media plan: the spot breaks that Sunday on ABC around the network premiere of <em>Toy Story</em>.</p><p>Also: <a href="https://youtu.be/QhhFQ-3w5tE">Macworld January 1997</a>, Amelio&#8217;s last keynote, a week after the acquisition was announced, and the first time Jobs and Wozniak were on an Apple stage together since 1984. And the <a href="https://archive.org/details/wwdc-1997-opening-keynote">WWDC 1997 opening keynote</a>, where Amelio is still CEO, Tevanian and Rubinstein already run software and hardware, and a young Scott Forstall does a demo.</p><h2>Mac OS X</h2><h3>Bas Ording</h3><p>Designed the Aqua interface and later the iPhone UI. 2 hours 14. <a href="https://archive.computerhistory.org/resources/access/text/2018/10/102738558-05-01-acc.pdf">Transcript</a>.</p><div id="youtube2-2x9XdVWr_70" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2x9XdVWr_70&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2x9XdVWr_70?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Jobs called Ording at home in 1998 to recruit him against an offer from MetaCreations. Ording describes the first multitouch rig as a FingerWorks touchpad with a paper overlay, projected onto a tablet and cabled to a Mac.</p><p>He says rubber-band scrolling started as a bug: he thought his code had stopped running when a list would not move, realised it was pinned at the top, and built the spring-back from that.</p><h3>Nitin Ganatra on the Debug podcast</h3><p>Audio. <a href="https://www.computerhistory.org/collections/catalog/102803742">CHM has the transcripts</a> of episodes 39 to 41.</p><p>Ganatra came up through Apple developer support and watched Copland fail from the support queue. He explains Carbon: Adobe and Microsoft would not rewrite for Cocoa, so Apple built a Mac Toolbox emulation layer. Tevanian says in his part 2 that there was never a formal date to turn Carbon off.</p><p><strong>The Aqua unveiling</strong>, Macworld San Francisco, 5 January 2000. Also the keynote where Jobs drops the &#8220;i&#8221; from iCEO.</p><div id="youtube2-SjlLG1EzJ2k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;SjlLG1EzJ2k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/SjlLG1EzJ2k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong><a href="https://siracusafamily.org/john/articles/ars/index.html">John Siracusa&#8217;s Mac OS X reviews</a></strong>, from the 1999 developer previews through 10.0. Text. This is where the NeXTSTEP-to-consumer-OS transition is documented in detail: Yellow Box and Blue Box, Carbon against Cocoa, Quartz replacing Display PostScript, the Finder. The pre-2012 URLs are legacy paths and need checking.</p><h2>The iPhone</h2><h3>Nitin Ganatra</h3><p>Director of iOS applications. 5 hours 55 across two parts. Transcripts: <a href="https://archive.computerhistory.org/resources/access/text/2018/05/102738249-05-01_acc.pdf">part 1</a>, <a href="https://archive.computerhistory.org/resources/access/text/2018/05/102740174-05-01_acc.pdf">part 2</a>.</p><div id="youtube2-VSC1NWyLphQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VSC1NWyLphQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VSC1NWyLphQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-6ty--rCtH7o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;6ty--rCtH7o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/6ty--rCtH7o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Forstall pulled Ganatra off the OS X Mail team in late 2005, and he brought two Mail engineers plus Scott Herz and Alex Aybes with him. Part 1 covers the internal competition: P1, an iPod-derived phone under Tony Fadell, against P2, an OS X-derived phone under Forstall. P2 won. It also covers the web-versus-native fight over the built-in apps.</p><p>Part 2 covers why copy and paste and MMS were cut from version one, AT&amp;T&#8217;s technical approval process, and the work of sanitising UIKit for public release.</p><h3>Andy Grignon</h3><p>Ran the iPhone radios. 3 hours 9. <a href="https://archive.computerhistory.org/resources/access/text/2020/05/102740145-05-01-acc.pdf">Transcript</a>.</p><div id="youtube2-a_VtQBIEb6I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;a_VtQBIEb6I&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/a_VtQBIEb6I?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Grignon was an Apple ATG intern on QuickTime Conferencing, then at Pixo, which Apple contracted to produce the OS for the original iPod, then back at Apple for iChat and Dashboard. He describes himself as &#8220;the software mole from Forstall&#8217;s organization into Fadell&#8217;s.&#8221; He says he blew a live iChat demo in front of Jobs when the audio cut, and was excluded from UI review meetings afterwards. He once drove to Jobs&#8217; house to debug the radio on Jobs&#8217; personal iPhone. After Apple he followed Rubinstein to Palm to lead webOS.</p><h3>Ken Kocienda and Richard Williamson</h3><p>Built Safari and the iPhone keyboard. 6 hours 32 across two parts. <a href="https://archive.computerhistory.org/resources/access/text/2018/07/102740223-05-01-acc.pdf">Transcript, part 1</a>.</p><div id="youtube2-xImAMe32Itg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xImAMe32Itg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xImAMe32Itg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-ukTAAz5TfnY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ukTAAz5TfnY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ukTAAz5TfnY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In June 2001 Forstall asked Don Melton to start a browser. Melton hired Kocienda and Williamson, and they built on Konqueror&#8217;s KHTML rather than Mozilla. Williamson gives the numbers: Mozilla was about a million and a half lines of code, KHTML about 150,000. &#8220;It was three guys and we figured 50,000 lines of code each.&#8221; Williamson says he got KHTML running on a Mac in a couple of days by convincing the code it was still on Linux.</p><p>Kocienda won an internal contest to design the iPhone keyboard. He describes the winning prototype as not one key per letter: keys were ganged together and software guessed the word from the letter buckets.</p><p>Part 2 covers secrecy, working with AT&amp;T, the native-versus-web SDK decision, copy and paste in iOS 3, and Williamson on the Apple Maps launch and his departure from Apple afterwards.</p><h3>Scott Forstall</h3><p>Led iPhone software. 1 hour 3, interviewed by John Markoff in 2017.</p><div id="youtube2-IiuVggWNqSA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiuVggWNqSA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiuVggWNqSA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Forstall on the origin of the multitouch push: Jobs came in on a Monday after a Microsoft executive had bragged to him about pen tablets, and &#8220;there was a set of expletives and then it was, &#8216;let&#8217;s show them how it&#8217;s really done!&#8217;&#8221;</p><p>The full event with the engineer panel is <a href="https://www.youtube.com/watch?v=5xDRdWFdsoQ">here</a>; Forstall starts at 1:01:51.</p><h3>Tony Fadell</h3><p>Ran the iPod division and led hardware on the first three iPhones. 1 hour 18, interviewed by John Markoff in 2017.</p><div id="youtube2-dRexVI4PA3A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dRexVI4PA3A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dRexVI4PA3A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>For longer interviews with Fadell: <a href="https://www.youtube.com/watch?v=RJjl1TwyfWM">Lenny&#8217;s Podcast,</a> <a href="https://www.youtube.com/watch?v=4oDZyOf6CW4">Lex Fridman</a>, or <a href="https://tim.blog/2022/04/29/tony-fadell-build-transcript/">Tim Ferriss</a></p><h2>Panels</h2><p><strong>Steve Jobs in Exile</strong>, May 2026. 1 hour 12, with Dan&#8217;l Lewin, Bud Tribble and Avie Tevanian on stage and Rich Page contributing by recorded video.</p><div id="youtube2-gnNdb2wa_NE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gnNdb2wa_NE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gnNdb2wa_NE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Three NeXT founders in one room. It is filed under the title of the moderator&#8217;s book, which is why it is hard to find.</p><p><strong><a href="https://www.youtube.com/watch?v=eCSNJgI2LFI">Apple at 50</a></strong>, 1 hour 38, with Sculley, Chris Espinosa and Ron Wayne on stage, Rubinstein and Tevanian by video. <strong><a href="https://www.youtube.com/watch?v=5YRn41OnfPE">Steve Jobs Stories</a></strong>, 1 hour 34, which includes Sculley and Hertzfeld. <strong><a href="https://www.youtube.com/watch?v=VgV5fLQw8_8">The Churchill Club panel</a></strong> from five weeks after Jobs died, with Atkinson, Gassee, Hertzfeld, McKenna and Tesler.</p><h2>Other tech history material?</h2><p>If you know more of these, please share in the comments.</p><p>Some of my other favorites: Masters of Doom, David Kushner&#8217;s book on id Software; UNIX: A History and a Memoir, Brian Kernighan&#8217;s account of Bell Labs; and The Making of Prince of Persia, which is Jordan Mechner&#8217;s own journals from 1985 to 1993, published exactly as he wrote them at the time.</p>]]></content:encoded></item><item><title><![CDATA[Spec-driven development: what it is and how we do it differently]]></title><description><![CDATA[We do the first half of spec-driven development and throw the second half away. The spec is scaffolding: engineered, load-bearing, and designed to come down.]]></description><link>https://journal.daniellopes.dev/p/spec-driven-development</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/spec-driven-development</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Fri, 28 Aug 2026 05:37:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e0bf1428-f3bd-4b46-8c52-567b1eef9fd6_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Agents write most of the code at GrowthX, so the expensive review moved upstream. A diff answers &#8220;is this correct.&#8221; A spec answers &#8220;is this the right change.&#8221; That&#8217;s where our judgment goes now.</p><p>Level 3 spec-driven development treats the spec as the source and regenerates the code from it. Nope, bad idea. The spec is scaffolding &#8212; critical, then removed.</p><h2>What spec-driven development is</h2><p>Spec-driven development means writing the specification before an agent writes code, and treating that recorded intent as the durable artifact rather than the prompt or the output.</p><p><a href="https://tessl.io/patterns/agentic-development-workflow/spec-driven-development/">Tessl</a>'s definition is the cleanest I have found: "the structured counterpart to vibe coding: before the agent writes code, you produce a specification, requirements, design, and a task breakdown, as an editable, human-readable artifact, and the agent builds against it." That separates it from <a href="https://journal.daniellopes.dev/p/prompt-engineering-techniques">better prompts</a>, which are disposable, and from vibe coding, which keeps no record of intent at all.</p><p>The tools often split by role. <a href="https://github.com/github/spec-kit/blob/main/README.md">GitHub Spec Kit</a> defines the canonical four-phase workflow: Specify, Plan, Tasks, Implement, each producing its own markdown file. <a href="https://kiro.dev/docs/specs/">AWS Kiro</a> builds that workflow into an IDE. <a href="https://tessl.io/blog/tessl-launches-spec-driven-framework-and-registry">Tessl</a> makes the strongest version of the claim, marking generated code do-not-edit. Claude Code and GitHub Copilot sit on the consumption side, reading whatever conventions file you hand them.</p><p>There are <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">three levels</a>.</p><ol><li><p>Spec-first means you write a spec and use it for the task in front of you.</p></li><li><p>Spec-anchored means you keep it for maintenance.</p></li><li><p>In spec-as-source, humans edit only the spec and never the code.</p></li></ol><p>Birgitta B&#246;ckeler, who wrote that taxonomy after running all three tools herself, is not sold on any of them. Her objection is the one a skeptical reader arrives with: "I'd rather review code than all these markdown files." She ran Spec Kit and got back a pile of repetitive, verbose documents, and asks whether the whole thing is a Verschlimmbesserung, the German word for making something worse while trying to make it better.</p><p>She is right about what she reviewed. Our answer is that not all of the markdown is written for a person. The pitch a colleague reads is 62 lines. The implementation file an agent reads is 978.</p><h3>Why prompt-first workflows break down</h3><p>Why not just prompt? This exists because prompting alone stopped scaling. A prompt-first session builds a shared understanding that <a href="https://martinfowler.com/articles/reduce-friction-ai/context-anchoring.html">erodes as the session runs</a> and vanishes when it ends. Nothing carries to the next one.</p><p>There's some data on the impact of AI that seems pretty accurate according to my own experience. Copy-pasted code rises from 8.3% to 12.3% while refactoring fell from 25% to under 10% across 2021 to 2024, in an analysis of 211 million changed lines.</p><p>That debt compounds differently now, because agents read the repo to decide what to write next. A mediocre pattern merged today is the house style tomorrow.</p><h2>Scaffold-driven development: our own version of SDD approach</h2><p>The big idea in spec-driven development is that the spec outlives the code, and now you code in spec. You round-trip through it, and when requirements change you edit the spec rather than the implementation. Generated code do-not-edit for exactly that reason, with requirements becoming <a href="https://thenewstack.io/what-is-an-ai-native-developer/">the long-lived thing at the centre</a>.</p><p>Not every tool goes that far. Kiro deletes the spec once the feature is built. That one is closer to us, and it is also the version I like least: it solves the maintenance bill by throwing away the reasoning.</p><p>What worked out the best for us at GrowthX was the opposite. Write the spec with that much rigor and then trash it (sort of).</p><p>At merge it stops being authoritative. The tests carry the contract. Whoever finished the work moves the folder into <code>docs/plans/executed/</code>, and nothing in there governs anything again. That directory in GrowthOS, our core product, currently holds 42 plans and 645 markdown files, about 1.46 million words. Another 48 plans are live.</p><p>The word for that is scaffolding. Engineered, load-bearing, safety-critical, and designed from day one to be "taken down" when the construction is finished.</p><p>Both halves matter.</p><p>A spec you do not take seriously is not scaffolding, it is a sketch.</p><p>A scaffold that never comes down is a second copy of the truth, with a maintenance bill and no test protecting it.</p><p>It loses its authority and keeps its information. That distinction is what stops this being waste, and I come back to it below.</p><p>We are spec-first, deliberately, and we reject the spec-as-source part.</p><h2>Why we review the spec, not the code diff</h2><p>We are about 20 engineers and just in our core platform we are merging some 397 pull requests a month. 86% of them carry almost no human review comments (we do have a ridiculous amount of agent reviews, though).</p><p>That number looks like a rubber stamp, and it would be one if the diff were where our judgment lived. A <a href="https://arxiv.org/html/2606.22721v1">study of 400 repeat reviewers</a> found that approval rates rise and inline comments fall 22% as agent PRs pile up. Latency more than triples.</p><p>So we moved the examination upstream. The spec defines scope and breakage risk before a line exists. Tests and CI still check behavior. What the spec review replaces is the fiction that a human skimming a diff was doing design review.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ePQK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ePQK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 424w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 848w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 1272w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ePQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png" width="1456" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163451,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ePQK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 424w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 848w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 1272w, https://substackcdn.com/image/fetch/$s_!ePQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a3adce-d013-44b2-b184-5e698d6a67b9_1894x732.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Example of what our specs contain</h2><h3>Three files, and their proportions</h3><p>The "Find Opportunities, from anywhere" plan shipped as two PRs #2766 and #2872. Three files.</p><p><strong>pitch.md, 62 lines.</strong> The problem and the idea, followed by a Non-goals section. Its main move is collapsing four fuzzy agent verbs (Develop, Refresh demand, Find new ideas, Research opportunities) into two clear stages. Non-goals is where the tradeoffs get made. Deciding what you will not build is the cheapest scope cut available.</p><p><strong>ux-ui.md, 406 lines.</strong> ASCII wireframes for seven surfaces, each drawn today then after. A naming map of every string that changes. Empty and edge states. Copy drafted in the spec instead of improvised during implementation.</p><p><strong>implementation.md, 978 lines.</strong> Three slices. We labeled slice two the risky one and isolated it on purpose. Real file paths and migrations. Acceptance criteria and architectural constraints. The reasoning sits between the code rather than after it. Sometimes the implementation is a folder with multiple slices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CrbM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CrbM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 424w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 848w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CrbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png" width="500" height="422.7335164835165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:475021,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CrbM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 424w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 848w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!CrbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3426961d-2abc-4703-be58-5d3632ef1cbd_2034x1720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hdV9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hdV9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 424w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 848w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hdV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png" width="510" height="422.08104395604397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1205,&quot;width&quot;:1456,&quot;resizeWidth&quot;:510,&quot;bytes&quot;:339459,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hdV9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 424w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 848w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!hdV9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be0e058-fbf3-4201-8dba-fa245a675bef_2078x1720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ggBw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ggBw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 424w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 848w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ggBw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png" width="520" height="346.07142857142856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:520,&quot;bytes&quot;:622745,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ggBw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 424w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 848w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!ggBw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b02d9c-0ce5-4fd6-948e-3f1c1a3b3bd1_2584x1720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Markdown in the repo, not a doc tool</h3><p>The spec lives in <code>docs/plans/</code>, next to the code it describes. The agent reads it directly. It versions with the code. It diffs in review like anything else. While the work is live, one file is the source of truth for humans and agents both.</p><h3>Not every change earns a spec</h3><p>Tiny changes can stay in the conversation and never become a file. Small to medium sometimes can fit in a single file, but high-impact work gets a directory with an index and numbered phases. </p><p>We tend to spec the work in phases, but as functional slices. Same approach described here: <a href="https://basecamp.com/shapeup/3.2-chapter-11#integrate-one-slice">Shape Up</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cR71!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cR71!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 424w, https://substackcdn.com/image/fetch/$s_!cR71!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 848w, https://substackcdn.com/image/fetch/$s_!cR71!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 1272w, https://substackcdn.com/image/fetch/$s_!cR71!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cR71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png" width="1456" height="1034" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7d63413-1755-424d-a428-70f74d609959_2420x1718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1034,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:473615,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cR71!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 424w, https://substackcdn.com/image/fetch/$s_!cR71!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 848w, https://substackcdn.com/image/fetch/$s_!cR71!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 1272w, https://substackcdn.com/image/fetch/$s_!cR71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7d63413-1755-424d-a428-70f74d609959_2420x1718.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>How a coding agent consumes a spec</h2><p>A structured spec beats raw prompting for a mechanical reason. It front-loads decisions into the context window instead of hoping the model recalls them mid-session. Token limits then shape how you modularize: we sliced that 978-line document into three so a working session carries one slice, not the whole plan.</p><p>The part worth copying is the grounding facts section our implementation docs open with. Before planning starts, every claim gets verified against real code and cited to file and line, with a date on it. The agent builds on checked assumptions rather than recalled ones.</p><p>It also draws a boundary. The agent records what it confirmed statically and names what a human has to verify against a running system. An agent that says "I confirmed the webhook config in code" is useful. An agent that says "I could not confirm the retry behavior without a live run" is more useful, because it tells you exactly where to spend your attention.</p><h2>What a human review on a spec looks like</h2><p>During the creation of the spec, we run extensive rounds of Codex adversarial reviews to catch things Claude does not catch.</p><p>In this example, before any code existed, Codex ran three review passes against the spec.</p><p>Pass two ran after the spec had changed and found ten more. The spec treated a status field as a free string. The system validates it as an enum. Pass three verified the fixes and caught the bugs the fixes themselves had introduced.</p><p>Twenty findings later, and still zero lines of code, every fix is cited inline in the spec, next to the paragraph it changed, so the document carries its own review history.</p><p>The third pass to catch the last defects introduced by the fixes.</p><h2>What a retired spec is still good for</h2><h3>Losing authority, keeping information</h3><p>An executed spec keeps its information. It no longer says what the code should do. It says why: what we considered, what we rejected, and what it cost to find out.</p><p>This is the part Kiro throws away and Tessl pays forever to keep. Dropping the authority and keeping the reasoning was the whole trick for us.</p><p>We often keep a decision record in our repo with a section titled "Rejected, and why (the part that stops the argument recurring)." Every rejection in it names the prototype that killed it. This is basically an ADR (architecture decision record).</p><p>Design docs were a graveyard when only humans read them.</p><p>People do not reopen old documents. Agents do.</p><p>Retrieval is cheap for them, and they have no ego about reading history before proposing something we already rejected twice.</p><p>That is what makes writing specs this carefully worth paying for now, and it has nothing to do with code generation or re-generation after execution, as level three of "spec dev" suggests.</p><h3>Drift, and why it is a smaller problem for us</h3><p>Two things catch drift while a plan is live. We re-run the adversarial review against the real PR with the final code diff, slice by slice. And there is a hands-on QA pass before a plan retires.</p><p>After merge our spec has retired, so there is no round-tripping obligation and no living document to re-sync. Test failures catch drift in covered behavior. Uncovered behavior can still drift quietly, and does.</p><p>When requirements change, we open new work with fresh grounding facts rather than editing an authoritative document.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-2wH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-2wH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 424w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 848w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 1272w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-2wH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png" width="1456" height="475" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:475,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108774,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/213100486?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-2wH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 424w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 848w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 1272w, https://substackcdn.com/image/fetch/$s_!-2wH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37959798-f783-4667-ae1f-a81d20aee0e9_1902x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Spec-driven development next to TDD and BDD</h2><p>TDD and BDD constrain behavior at the test layer and stay live for the life of the code. Dan North framed BDD as <a href="https://dannorth.net/blog/introducing-bdd/">"outside-in"</a>, starting from business outcomes and drilling into features. A spec constrains intent before the work exists at all, and in our model it retires at merge.</p><p>They constrain different layers. The <a href="https://intent-driven.dev/blog/2026/08/23/tdd-bdd-spec-driven-development/">clearest framing I have read</a> is that SDD anchors the work in a specification, BDD protects the macro behavior, and TDD improves the micro design. In our version that is literal: at merge, the behavioral contract moves into tests and the spec goes to <code>executed/</code>.</p><p>We also have our own way to write QA tests with Chrome MCP, inspired by <a href="https://cucumber.io/docs/gherkin/">Gherkin</a>, the language behind BDD's famous Cucumber framework. Something I might cover another day.</p><p>If you run a different arrangement, especially spec-anchored at volume, I'd love to know your experience in practice.</p><div><hr></div><h4>How is spec-driven development different from writing better prompts?</h4><p>A prompt is disposable and lives in one session. A spec is a versioned artifact in the repo that people and agents build against across many sessions. The prompt-first failure is that the shared understanding vanishes when the session ends.</p><h4>What goes inside a spec?</h4><p>At minimum: the problem, explicit non-goals, acceptance criteria and architectural constraints. Ours add UX wireframes with drafted copy and a naming map, sliced implementation steps with real file paths and migrations, and a dated grounding-facts section citing code to file and line.</p><h4>What are the three maturity levels, and where should a team start?</h4><p>Spec-first means write it and use it for the task. Spec-anchored means keep it for maintenance. In spec-as-source, humans edit only the spec. Start at spec-first. It captures most of the review-quality benefit with none of the round-tripping obligation. We stayed there on purpose.</p><h4>How do you detect and recover when generated code drifts from the spec?</h4><p>While the plan is live: re-run adversarial review against the real diff per slice and before merge, plus a hands-on QA pass against a real workspace. After merge our spec has retired, so the test suite catches drift in the behavior it covers.</p><h4>How does code review change when an agent writes most of the code?</h4><p>Design judgment moves to the spec, before code exists. Diff review narrows to checking that the implementation matches an already-argued plan. Most of our merged PRs carry almost no comments because the findings that mattered landed on a markdown file weeks earlier.</p><div><hr></div><h2>Notes</h2><ol><li><p>In GitHub Spec Kit: Specify writes <code>spec.md</code>, Plan writes <code>plan.md</code> plus supporting research and data-model files, Tasks writes <code>tasks.md</code>, and Implement executes those tasks in dependency order. Spec Kit was announced on 2 September 2025, based on John Lam's research. AWS Kiro's equivalents are <code>requirements.md</code> in EARS notation, <code>design.md</code>, and <code>tasks.md</code>; it reached general availability in November 2025. Claude Code reads <code>CLAUDE.md</code> and can import <code>AGENTS.md</code>; GitHub Copilot reads <code>.github/copilot-instructions.md</code> and supports <code>AGENTS.md</code> directly.</p></li><li><p><a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research">GitClear's analysis</a> of 211 million changed lines. Two adjacent findings point the same way: <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR's randomized trial</a> found experienced developers took 19% longer with AI while believing they were faster, and a <a href="https://personal.us.es/amarlop/wp-content/uploads/2026/03/More-Code-Less-Understanding-On-the-Impact-of-AI-Assistants-on-Developers-Productivity-and-Code-Ownership.pdf">2026 code-ownership study</a> found AI-assisted participants answered questions about their own code correctly 87.5% of the time, against 100% without.</p></li><li><p><a href="https://courses.cs.duke.edu/fall11/cps196.1/classwork/Lethbridge-Singer-Forward-2003.pdf">Lethbridge, Singer and Forward</a>, where 44% somewhat agreed and 24% strongly agreed that documentation is always outdated relative to the system.</p></li></ol>]]></content:encoded></item><item><title><![CDATA[How to define your Ideal Customer Profile (ICP)]]></title><description><![CDATA[An in-depth study guide to ideal customer profiles: what they are, what they aren't, and how to build one.]]></description><link>https://journal.daniellopes.dev/p/defining-your-ideal-customer-profile</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/defining-your-ideal-customer-profile</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Mon, 24 Aug 2026 21:14:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XMs4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XMs4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XMs4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 424w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 848w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 1272w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XMs4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp" width="728" height="407.6340694006309" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:355,&quot;width&quot;:634,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:8640,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76be9c2f-d9a1-4460-afc7-6e6e14033029_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XMs4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 424w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 848w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 1272w, https://substackcdn.com/image/fetch/$s_!XMs4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb566d0d9-f680-4a94-b62d-23c1e521a3a8_634x355.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The standard definition: an ideal customer profile (ICP) is an account-level description of the companies you are best at winning, serving, retaining and expanding. It is a short list of firmographic and technographic criteria, plus explicit disqualifiers, scored and tiered in the CRM.</p><p>An ICP describes companies rather than people. A buyer persona is the person inside the account, <a href="https://www.techtarget.com/searchcustomerexperience/definition/TAM-SAM-SOM">TAM/SAM/SOM</a> are market-size estimates in dollars, and an ABM target list is the named accounts you are working right now.</p><p>That definition is correct, and it produces some pretty useless docs. Sort your customers by industry and headcount and you get a profile that describes who they <em>are</em> while saying nothing about why they bought.</p><p>We wrote ours for the GrowthOS launch and now 2 months in revisited focused on the way round, starting from the job. <a href="https://www.library.hbs.edu/working-knowledge/what-customers-want-from-your-products">Christensen</a>: &#8220;The job, not the customer, is the fundamental unit of analysis.&#8221; Bob Moesta&#8217;s version changes what you do on a Tuesday: demand starts at a <a href="https://therewiredgroup.com/learn/demand-side-sales-101-stop-selling-and-help-your-customers-make-progress/">struggling moment</a> and &#8220;it&#8217;s not an imagined customer or persona, it&#8217;s real buyers.&#8221;</p><p>So the first question is not what kind of company buys this. It is which organizations hit the struggling moment this product resolves, what progress they are trying to make, and what they are hiring today instead. Firmographics come back as filters on that answer, never as the explanation for it.</p><p>The other half of a real ICP is that it is enforceable: an SDR can disqualify an account against it, RevOps can score and route on it, and it gets reviewed monthly against closed-won data.</p><h2>Revisiting our ICP</h2><p>We wrote our ICP doc before GrowthOS launched in June 2026. It was a hypothesis with a template around it: which companies the platform would be structurally best at winning, extrapolated from work we had been doing for clients by hand. The first paid clients of the platform have since converted onto annual plans, which is the first evidence in the exercise that isn&#8217;t a guess, so we went back to the doc.</p><p>Before touching it, I created this study guide for myself, but I&#8217;m sharing it here since it might be a helpful resource.</p><p>A caveat on the numbers: they come from different years, samples and definitions, so several of them disagree. Use them as shape, not as truth.</p><p></p><div><hr></div><h2>Audio version</h2><p>Here&#8217;s a computer generated audio version of this guide adapted for listening</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;c8251a5e-f9d5-485d-bff3-d3fa4765a0b0&quot;,&quot;duration&quot;:2370.7952,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><div><hr></div><p></p><h2>What an ICP is, and what it isn&#8217;t (TAM, target lists, personas)</h2><p><a href="https://www.revopscoop.com/webinar-series/finding-and-unleashing-the-power-of-your-icp-across-gtm">RevOps Co-op</a> defines an ICP through four operational questions: who will buy, who will purchase smoothly and on time, who can be implemented and serviced, and who will renew, refer and expand.</p><p>Only the first is a sales question. An ICP built from &#8220;who signs&#8221; systematically overweights accounts that close and churn, which is why retention and expansion data belong in the derivation rather than in a CS dashboard.</p><p>The definitions worth having in front of you. <a href="https://offers.hubspot.com/ideal-customer-profile-icp">HubSpot</a> grounds it in data: an ICP is &#8220;based on company level firmographic and technographic data points (like employee size, technologies used, industry, and more).&#8221; <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">First Round Review</a> adds the temporal part: &#8220;a detailed description of the perfect customer (in the case of B2B, that means company)&#8221; and &#8220;a living definition that needs to be revisited frequently.&#8221; <a href="https://www.saastr.com/saastr-podcast-457-and-video-building-your-ideal-customer-profile/">SaaStr</a> raises the stakes: &#8220;Your ICP strategy is the basis for your entire company&#8217;s strategy.&#8221;</p><p>Four layers, four different questions:</p><ul><li><p><strong>TAM/SAM/SOM</strong> works at the market aggregate. How large is the opportunity? The output is a dollar figure.</p></li><li><p><strong>The ICP</strong> works at the account level. Which <em>types</em> of companies fit best? The output is attribute criteria and a scoring model.</p></li><li><p><strong>An ABM target account list</strong> works at the named-account level. Which specific companies are we pursuing now? The output is a prioritized list of names.</p></li><li><p><strong>A buyer persona</strong> works at the individual level. Who inside those companies do we engage, and how? The output is a role, goal and pain profile.</p></li></ul><p>The sequence runs: size the market, define ICP attributes, score the addressable universe, apply capacity and territory filters to get the named list, then map the buying committee with personas.</p><p><a href="https://clearbit.com/resources/books/ideal-customer-profile/icp-go-to-market-strategy">Clearbit</a> draws the market-sizing line cleanly: &#8220;TAM, SAM, and SOM identify market potential and are represented by a dollar value. Your ICP takes that a step further and serves as a definition of the companies that are the best fit for your business.&#8221; Clay&#8217;s <a href="https://www.clay.com/guides/total-addressable-market">version</a>: &#8220;every ICP account is in your TAM, but most TAM accounts are not in your ICP.&#8221;</p><p>On personas, <a href="https://blog.hubspot.com/customers/ideal-customer-profiles-and-buyer-personas-are-they-different">HubSpot</a> gives the operating split: &#8220;Think of your ICP as your pre-qualification filter and buyer personas as your personalization guide.&#8221; <a href="https://www.forrester.com/blogs/saying-goodbye-to-mqls-accounts-buying-groups-opportunities-oh-my-how-is-it-all-connected/">Forrester</a> adds the complication that makes personas insufficient on their own: the same VP of HR can sit in several buying groups and play a different role in each. The five common roles are champion, influencer, decision-maker, user and ratifier.</p><p>An account can be a perfect ICP match and still sit outside the active target list on capacity or timing, which is why <a href="https://knowledge.hubspot.com/branding/get-started-with-account-based-marketing-in-hubspot">HubSpot&#8217;s ABM system</a> tracks &#8220;target account&#8221; and &#8220;ICP tier&#8221; as two separate properties, Tier 1 being &#8220;a great fit&#8221; and Tier 3 &#8220;acceptable, but low priority.&#8221;</p><p>A fourth distinction is between ICP and IPP. Force Management <a href="https://meddicc.com/resources/storytime-icp-ipp">draws the line</a> &#8220;ideal customer profile does not necessarily equal ideal prospect profile.&#8221; A prestigious account can match the profile and still be a bad near-term prospect on stakeholder complexity or contract timing.</p><p><a href="https://www.lennysnewsletter.com/p/lessons-learned-from-a-startup-that">Jake Fuentes at Cascade</a> gives the test for whether a candidate segment is real: &#8220;An ICP must be a single market segment: a group of people for whom the value of solving a problem is roughly the same, and who can be reached in roughly the same way.&#8221; Equal value and equal reachability, both necessary. <a href="https://openviewpartners.com/blog/resegment-your-market/">OpenView</a> arrives at the same test independently: a good segment &#8220;gets value in the same way and buys in the same way.&#8221;</p><p>Meka Asonye at <a href="https://review.firstround.com/this-gtm-leader-turned-investor-crowdsources-early-lessons-from-stripe-figma-and-more/">First Round</a> shows the difference between a vague segment and a usable one. Bad: &#8220;Series B technology companies.&#8221; Good: &#8220;companies who are experiencing X, who look like Y, who have previously tried these three solutions and need the product to do A, B, and C.&#8221;</p><h2>Fit vs intent: why an ICP needs two scores</h2><p>I&#8217;d install a fit-versus-intent model first. <a href="https://www.clay.com/guides/ideal-customer-profile">Clay</a> defines fit as whether a company <em>should</em> buy from you, derived from stable attributes like size and stack. Intent is whether it&#8217;s looking right now, derived from recent signals like funding or hiring.</p><p>A high-fit, low-intent account is a nurture target. A high-intent, low-fit account is a distraction.</p><p>Score the two axes separately so you can treat them differently, then combine at routing. Fit is the eligibility gate; intent and timing set the tier. <a href="https://bombora.com/blog/from-signals-to-pipeline-7-lessons-for-delivering-efficient-growth/">Bombora</a> puts it from the data side: only a small portion of your ICP is in market at any time, and intent data exists &#8220;not to define your ICP, but to reveal which accounts are actively researching and should be prioritized now.&#8221;</p><p>The compelling event is why a static firmographic profile underperforms a signal-laden one. <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">RevOps Masters</a> reports its win/loss result: &#8220;The single most predictive factor in win/loss outcomes is whether the buyer had an identified event or deadline driving the purchase. Deals with a compelling event close at 3-4&#215; the rate of those without one.&#8221;</p><p><a href="https://clearbit.com/blog/how-to-use-webpage-intent">Clearbit&#8217;s</a> routing rule shows what combining the axes looks like in practice: &#8220;High-intent visitors should speak to sales right away if they have high fit. Low-intent visitors can be added to an ad retargeting campaign, email nurture sequence.&#8221; Their threshold example: an account that visited at least three relevant pages in a month, whose fit score qualified, got routed to the BDR team.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BhYX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BhYX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BhYX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png" width="728" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:1944801,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BhYX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!BhYX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d38ef0-d7cc-4346-bc60-00335374bb62_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Which attributes belong in an ICP?</h2><p>Four attribute families matter, and most bad ICPs stop at the first.</p><ul><li><p><strong>Firmographic.</strong> The <a href="https://brick.work/blog/the-revops-approach-to-defining-your-icp">standard set</a>: industry, company size, revenue range, employee count, geography and business model, plus <a href="https://abmatic.ai/blog/what-is-account-fit-score-for-revops">ownership type</a>. <a href="https://www.bvp.com/atlas/how-to-segment-your-customer-base-for-more-precise-pricing-and-packaging">Bessemer&#8217;s bands</a>: Commercial 1-500 employees, Mid-market 501-1,000, Enterprise 1,000+, with revenue bands of $0-1M, $1.1-10M and $10.1M+.</p></li><li><p><strong>Technographic.</strong> <a href="https://pipeline.zoominfo.com/sales/technographic-targeting">What they run</a>: &#8220;which CRM they run, what marketing tools they rely on, where they host their infrastructure, and what sales platforms their reps use every day.&#8221; Two mid-market SaaS companies &#8220;might look identical on paper, but if one uses Salesforce with a modern tech stack and the other runs a legacy CRM with no API access, your approach should be completely different.&#8221; <a href="https://hginsights.com/product/rgi-fabric/">HG Insights</a> goes further, measuring behind-the-firewall usage intensity and maturity, and separating Problem Aware, Solution Aware and Product Aware stages.</p></li><li><p><strong>Behavioral.</strong> <a href="https://brick.work/blog/the-revops-approach-to-defining-your-icp">Buying signals</a>: content consumption, website engagement, event attendance, search intent. What separates companies that fit your ICP in theory from ones actively buying. In product-led motions this is where PQLs live, converting at <a href="https://openviewpartners.com/blog/your-guide-to-product-qualified-leads-pqls/">15-30%</a> on signals like usage frequency, adoption of high-value features, usage growth week over week, and multi-product usage.</p></li><li><p><strong>Psychographic.</strong> How the organization decides. One <a href="https://customerthink.com/no-fit-no-deal-why-icp-fit-must-be-the-first-thing-you-qualify-in-complex-b2b-sales/">list worth stealing</a> covers &#8220;appetite for innovation, willingness to buy best-of-breed, attitude to vendors, decision-making style.&#8221; The <a href="https://www.thevxgroup.com/insights/b2b-enterprise-target-profile-criteria/">pace difference</a> matters too: &#8220;Some decisions require consensus across a large leadership team. Others sit with a single executive who acts quickly.&#8221; Lenny Rachitsky lists a company&#8217;s <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">&#8220;way of working&#8221;</a>, design-driven or operationally heavy, as an explicit field.</p></li></ul><p>Prefer operational signals to generic firmographics wherever you can get them. <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">First Round&#8217;s</a> example is the cleanest illustration: instead of targeting companies with more than 500 employees, target &#8220;companies with more than 20 open, remote roles on LinkedIn. That&#8217;s a sharper ICP.&#8221; Same for pain: &#8220;It&#8217;s not enough to know the pain the prospect has, you want to deeply understand the impact of that pain.&#8221;</p><p><a href="https://www.bvp.com/atlas/a-b2b-founders-guide-to-generating-demand-from-scratch">Bessemer&#8217;s five-factor needs framework</a>, credited to Allyson Letteri, is the best short prompt list I&#8217;ve found for the situational half:</p><p><strong>Pains:</strong> what pressing problems can your solution solve? <strong>Gains:</strong> what goals or desired outcomes drive your customer? <strong>Shifts:</strong> what company changes would make them open to new solutions? <strong>Blockers:</strong> what objections or misconceptions might hinder adoption? <strong>Motivators:</strong> what would urge them to move forward, ROI or testimonials or something else?</p><p>Shifts is the underused row. Common ones are &#8220;compliance mandates, a crisis or breach, new executives joining the team, or even when the team outgrows old systems.&#8221;</p><p>Product usage deserves its own note if you have a free tier. <a href="https://openviewpartners.com/blog/your-guide-to-product-led-sales/">OpenView</a> reports that Figma defined activation as &#8220;a user collaborates with other users in their first week&#8221; and modeled around 10 data points where &#8220;when two or more of these were triggered, there was a high likelihood for the account to upgrade.&#8221; A concrete multi-user trigger from the same playbook: <a href="https://openviewpartners.com/blog/your-guide-to-product-qualified-leads-pqls/">when three or</a> more users at the same company reach a high usage threshold, email the manager.</p><p>The <a href="https://therewiredgroup.com/learn/demand-side-sales-101-stop-selling-and-help-your-customers-make-progress/">jobs-to-be-done</a> lens turns a tidy attribute list into a usable one. <a href="https://anthonyulwick.com/jobs-to-be-done/">Tony Ulwick</a> separates the job from the outcome, &#8220;a metric the customer uses to measure success&#8221;, which lets you <a href="https://anthonyulwick.com/2016/10/25/jobs-to-be-done-from-theory-to-practice/">cluster accounts</a> by which desired outcomes are underserved and define segments that cut across industry and size bands. <a href="https://openviewpartners.com/blog/market-segmentation-hypothesis/">OpenView</a> warns that conventional segmentation &#8220;can be severely deficient because it is an arbitrarily imposed view of the market,&#8221; and every criterion needs &#8220;a clear rationale as to why the particular criterion will impact or differentiate the needs or buying behavior of targets.&#8221;</p><p>Looker&#8217;s 2013-2015 ICP led with the job: &#8220;technical data teams, not end users or business analysts, who were starting to adopt cloud with large data sizes and complex analytical requirements AND the need to support a larger base of less technical end users.&#8221; Company size, 50-400 employees, <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">appears only as a supporting filter</a> and never as the explanation for demand.</p><h3>How many attributes, and how narrow</h3><p>Rachitsky collected the initial ICPs of more than a dozen B2B startups and <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">found</a> that &#8220;everyone landed on at least <em>three</em> attributes to describe their ICP. Some had more, but no one had fewer.&#8221; His instruction is to get &#8220;super-specific and super-narrow. Almost comically narrow.&#8221;</p><p>The receipts are the useful part:</p><ul><li><p><strong>Gusto</strong> <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">started with</a> companies of five or fewer employees, in California, offering no benefits, salaried employees only, no other deductions, and willing to be paid eight days after running payroll.</p></li><li><p><strong>Gong</strong> picked three: selling in the US in English, selling via video conferencing, and selling software worth $1,000 to $100,000, &#8220;because beyond $100k, we assumed it was going to be a different sales cycle, and less than $1,000, it would be too transactional.&#8221; That left <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">roughly 5,000 companies worldwide</a>.</p></li><li><p><strong>Snyk</strong> <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">went depth-first</a>: &#8220;a developer building with Node.js who was very security-conscious.&#8221;</p></li><li><p><strong>Canva</strong> <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">found theirs six months in</a>, watching who got excited: social media managers and bloggers, &#8220;especially freelancers, who were building their own social media management business.&#8221;</p></li></ul><p>At the other end, keep the filter to <a href="https://hyperspect.ai/blog/icp-definition-framework">4-7 attributes</a>. More than 8-10 filtering dimensions and it is over-specified, fitting noise, and no longer usable by an SDR in real time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6TE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6TE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6TE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1405437,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j6TE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!j6TE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d034d68-1f73-41ea-9cb9-fa8c28919f65_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Five frameworks for choosing a segment</h2><p>Each framework contributes a different narrowing mechanism. You don&#8217;t need all five, but you should know which one you&#8217;re using.</p><p>In one line each: Moore picks the first segment by use-case urgency and reference community. Blank validates that a specific org type and buyer will actually purchase. Lean Analytics replaces aggregate counts with cohort metrics. MEDDPICC tests reality inside an account and aggregates into buyability patterns. Top-10 reverse engineering derives the profile from realized outcomes.</p><p><strong>Moore.</strong> The transition that matters is early adopters to <a href="https://geoffreyamoore.com/book/crossing-the-chasm/">pragmatists</a> who &#8220;want to see it proven out first, specifically in use cases that they themselves have and with customers they know and can reference.&#8221; A market is defined partly by <a href="https://archive.org/stream/crossingthechasm_202002/Crossing%20the%20Chasm_djvu.txt">reference behavior</a> customers must &#8220;reference each other when making a buying decision.&#8221; Choose the first segment on problem <a href="https://fredlybrand.com/2019/08/17/moores-crossing-the-chasm-ch-03-the-d-day-analogy/">severity</a> rather than size,: &#8220;The size of the first pin is not the issue, but the economic value of the problem it fixes is. The more serious the problem, the faster the target niche will pull you out of the chasm.&#8221; The ICP has to encode the <a href="https://bradenkelley.com/2023/01/winning-in-a-downturn-requires-delivering-the-whole-product/">whole product</a>, &#8220;the complete set of products and services needed to fulfill the compelling reason to buy,&#8221; which doubles as a test of whether you can actually serve the segment. Expansion then follows the bowling alley: target a <a href="https://fredlybrand.com/2019/08/17/moores-crossing-the-chasm-ch-03-the-d-day-analogy/">connected segment</a> that &#8220;by virtue of its other connections, creates an entry point into a larger segment.&#8221;</p><p><strong>Blank.</strong> <a href="https://steveblank.com/2009/09/17/the-path-of-warriors-and-winners/">Customer Development</a> runs discovery, validation, creation, company building. The earlyvangelist five criteria are the <a href="https://steveblank.com/2010/03/04/perfection-by-subtraction-the-minimum-feature-set/">pre-ICP filter</a>: &#8220;They have a problem. They understand they have a problem. They are actively searching for a solution and have a timetable for finding it. The problem is painful enough that they have cobbled together an interim solution. They have, or can quickly acquire, dollars to purchase the product.&#8221; He also advises <a href="https://steveblank.com/2009/07/30/hes-only-in-field-service/">going after</a> companies that &#8220;aren&#8217;t the market leaders in their industries, but are fighting hard to get there,&#8221; then finding the internal evangelist who wants the competitive advantage. The <a href="https://steveblank.com/2009/11/02/lean-startups-aren%E2%80%99t-cheap-startups/">validated sales model</a> has to answer who influences, who recommends, who decides, who pays, where the budget sits, what acquisition costs, and how long a sale takes.</p><p><strong>Lean Analytics.</strong> Cohort discipline instead of <a href="https://jomrcr.svbtle.com/notes-lean-analytics">aggregate counts</a> since &#8220;you can compare cohorts against one another to see if, on the whole, key metrics are getting better over time.&#8221; The <a href="https://leananalyticsbook.com/one-metric-that-matters/">OMTM</a> is stage-dependent and temporary, and in <a href="https://leananalyticsbook.com/quantitative-interviews-the-importance-of-scoring-customer-feedback/">interviews</a> you &#8220;look for a subset of scores that spike; that&#8217;s your early-adopter customer segment.&#8221; <a href="https://www.demandrevenue.com/ideal-customer-profile-b2b-cmo/">Three cohorts, three questions</a>: acquisition and win/loss (&#8221;can we get them?&#8221;), retention and GRR (&#8221;do they stay?&#8221;), expansion and NRR (&#8221;do they grow?&#8221;). The method needs an <a href="https://leadanic.com/blog/ideal-customer-profile-b2b/">overfit warning</a>: &#8220;if accounts that match your candidate ICP also churned at the highest rate, you have over-fit on a non-causal pattern and need to add an exclusion criterion.&#8221;</p><p><strong>MEDDIC/MEDDPICC.</strong> <a href="https://meddicc.com/meddpicc-sales-methodology-and-process">Metrics, Economic buyer, Decision</a> criteria, Decision process, Paper process, Identify pain, Champion, Competition, originally developed in 1996 by Dick Dunkel at PTC, with <a href="https://arpedio.com/resources/guides/meddpicc">Paper Process and Competition added later</a>. MEDDPICC contributes the feedback loop. Aggregate outcomes across won, lost, stalled and no-decision deals, tagged by account attributes, and you learn which characteristics predict buyability, cycle time and commercial success rather than theoretical fit.</p><p><strong>Top-10 reverse engineering.</strong> Derive the profile from realized outcomes. <a href="https://www.saastr.com/saastr-podcast-457-and-video-building-your-ideal-customer-profile/">SaaStr&#8217;s</a> questions for your best deals: &#8220;How easy is it to close these top deals? How simple was it to set your customer up with onboarding and implementation? How sticky is your product?&#8221; A <a href="https://yourlastagency.com/how-to-determine-ideal-customer-profile-icp/">working version</a> analyzes &#8220;10 to 20 best existing customers across revenue contribution, retention rate, sales cycle length, and product fit.&#8221; <a href="https://allstonlabs.com/library/icp/closed-won-deconstruction">Allston Labs</a> is the most rigorous: capture three layers per customer, &#8220;firmographic (who they are), behavioral (how they bought), and deal-shape (the buying committee that signed)... including the nulls, the distribution of nulls is itself a signal.&#8221; Weight the expansion cohort 3-5&#215; because repeat purchase reveals organizational fit as well as product fit, treat closed-lost as &#8220;the empirical control group,&#8221; and note their headline claim: &#8220;the single highest-confidence ICP indicator is per-customer ACV growth at 12 months.&#8221;</p><h2>How do you build an ICP from data?</h2><p>Six analyses, in the order to run them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pJpi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pJpi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pJpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1253529,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pJpi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pJpi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c1e59c-eb25-4dcc-9fcf-4625dd9558eb_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>1. Closed-won and closed-lost</h3><p>Build a joinable dataset across six layers: opportunity, account, contact, source and campaign, product and use case, and post-sale retention. <a href="https://foundryops.io/guides/icp-persona-model-hubspot-exports">Separate new-logo, expansion</a> and renewal cohorts before analyzing. <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">Use a two-level loss taxonomy</a>: primary as competitive, no decision, price and budget, or product gap; secondary as feature depth, integration ecosystem, implementation timeline.</p><p>Pull the last 12-24 months. No-decision outcomes are <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">25-40% of closed-lost deals</a> on their own and should never be merged into competitor or price losses.</p><p>How much data you need before believing the pattern: <a href="https://allstonlabs.com/library/icp/closed-won-deconstruction">5-7 closed-won deals</a> support a provisional hypothesis and nothing more, <a href="https://gtmepulse.com/insights/icp-definition-framework/">30 closed-won</a> is a stronger first-pass minimum, and <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">50 combined closed deals</a> supports general win/loss pattern analysis.</p><p>Two behavioral signals worth pulling in the same query: hiring activity is associated with a <a href="https://gtmepulse.com/insights/icp-definition-framework/">2.4&#215; conversion lift</a>, and funding events indicate a 3-6 month timing window. And triangulate rather than trusting one source: <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">RevOps Masters</a> recommends CRM loss reasons, rep debrief surveys and buyer interviews together, because rep-entered reasons measure perception.</p><p>A defensible scoring starting point, if you want one before you have enough data for a model: a <a href="https://gtmepulse.com/insights/icp-definition-framework/">0-100 scorecard</a> weighted firmographic fit 30, technographic fit 25, behavioral signals 25, deal potential 20.</p><h3>2. Win rate and cycle length by segment</h3><p>Never report blended. The example that makes it obvious: &#8220;A 24% aggregate win rate breaking down to 41% for SMB inbound and 9% for enterprise outbound tells you everything.&#8221;</p><p>The formulas, so the segmentation happens before the math: win rate by count is won deals divided by won plus comparable closed-lost, and <a href="https://blog.hubspot.com/sales/b2b-sales-metrics">sales velocity</a> is opportunities &#215; deal value &#215; win rate &#247; cycle length. Segment by market size first, then calculate.</p><p>Across 4.2M opportunities at 530 companies and $54B of revenue, Ebsta and Pavilion found top performers had <a href="https://benchmarks.ebsta.com/hubfs/V3%202025%20Benchmark%20Report/gtm_benchmarks_digital_report.pdf?hsLang=en">42% shorter cycles, 76%</a> higher ACV and 43% higher win rates than average. Early decision-maker involvement in the first two stages <a href="https://benchmarks.ebsta.com/hubfs/V3%202025%20Benchmark%20Report/gtm_benchmarks_digital_report.pdf?hsLang=en">lifted win rates 55%</a>, high-intent accounts closed at <a href="https://www.ebsta.com/wp-content/uploads/2024/02/B2B-Sales-Benchmarks-2024_.pdf">3.4&#215; velocity</a>, and top performers were <a href="https://www.joinpavilion.com/hubfs/Ebsta%20x%20Pavilion%202025%20GTM%20Benchmarks%20Report.pdf">24% more likely</a> to disqualify non-ICP deals early. For orientation, average B2B win rates run <a href="https://revenuegrid.com/blog/how-to-build-a-sales-analytics-practice/">15-25% with mid-market cycles of 30-90 days</a>, and lost deals take <a href="https://19965450.fs1.hubspotusercontent-na2.net/hubfs/19965450/2026%20Benchmarks%20Report%20Assets/Fullcast_Pavillion-2026-GTM-Benchmark%20Report.pdf">2.0&#215; longer</a> than won ones.</p><p>One data-quality caveat before you trust any of your own numbers: Clari Labs, across 10M opportunities at 121 global enterprises, found <a href="https://www.clari.com/downloads/state-of-enterprise-revenue-clari-labs-benchmark-report-2025/">98% of companies</a> fail to track closed-lost reasons consistently.</p><h3>3. Unit economics by segment</h3><p>Read gross-margin-adjusted CAC payback together with net dollar retention rather than alone, since <a href="https://openviewpartners.com/blog/how-do-you-stack-up-2022-saas-benchmarks/">a segment with</a> short payback but poor retention is misleading. The <a href="https://www.joinpavilion.com/hubfs/2024%20B2B%20SaaS%20Performance%20Metrics%20Benchmarks%20Report.pdf">formula</a>: sales and marketing spend to acquire new customers &#247; (contracted new ARR &#215; gross margin) &#215; 12.</p><p><a href="https://www.bvp.com/atlas/state-of-the-cloud-2023">Bessemer grades it</a> good at 12-18 months, better at 6-12, best at 0-6, with <a href="https://www.bvp.com/atlas/seven-saas-resiliency-lessons-for-doing-business-in-a-volatile-market">segment targets in favorable conditions</a> of SMB under 12, mid-market under 18, enterprise under 24.</p><p><a href="https://www.cfodesk.co.il/wp-content/uploads/2023/09/OpenView-SaaS-Benchmarks-Report_2022.pdf">OpenView measured it</a>:</p><p>by target customer, as good (50th percentile) against great (80th): under 20 employees, 9 months against 2; SMB at 20-100 employees, 7 against 4; midmarket at 101-1,000, 14 against 7; enterprise above 1,000, 14 against 9.</p><p><a href="https://www.key.com/content/dam/kco/documents/businesses___institutions/2024_kbcm_sapphire_saas_survey.pdf">KeyBanc&#8217;s 2024 survey</a> puts fully-loaded payback at 25 months in 2022, 21 in 2023 and 20 estimated for 2024. These figures disagree because the years, samples, ARR scales and definitions differ. Shape, not truth.</p><h3>4. Retention cohorts</h3><p>GRR is the stickiness check, NRR the expansion check, and a strong NRR can hide widespread churn behind a few large expansions. The <a href="https://chartmogul.com/saas-metrics/customer-churn/">formulas</a>: NRR includes expansion and reactivation and can exceed 100%; <a href="https://chartmogul.com/reports/saas-benchmarks-report/">GRR excludes expansion and caps at 100%</a>.</p><p>Benchmarks worth arguing with: <a href="https://www.bvp.com/atlas/state-of-the-cloud-2023">Bessemer&#8217;s good/better/best</a> is NRR 100/110/120%+ with logo retention above 85/90/95%; best-in-class B2B NRR sits at <a href="https://chartmogul.com/reports/saas-benchmarks-report/">110-125%</a> with <a href="https://chartmogul.com/saas-metrics/customer-churn/">median monthly churn of 3.7%</a> for $1-3M ARR companies; <a href="https://www.iconiqcapital.com/growth/reports/2025-state-of-software">ICONIQ&#8217;s 2025 report</a> has software NDR settling around 110-120%; and <a href="https://openviewpartners.com/2023-saas-benchmarks-report/">OpenView&#8217;s 2023 data</a> shows PLG companies at 105% NDR against 98% for non-PLG.</p><p>The number that justifies the whole exercise, from <a href="https://openviewpartners.com/blog/churn-customer-success-problem/">OpenView</a>: &#8220;annual retention rates can vary from 50% to 90% across different customer types for the same product.&#8221;</p><p>In <a href="https://clearbit.com/resources/books/ideal-customer-profile/redefining-icp">Clearbit&#8217;s</a> worked example, ~86% of long-term revenue came from ~18% of leads entering the funnel, and they narrowed the ICP accordingly.</p><h3>5. Usage and time-to-value</h3><p>Median SaaS <a href="https://www.lennysnewsletter.com/p/what-is-a-good-activation-rate">activation</a> is 30%, average 36%, and activated users should retain at 2&#215; non-activated. For B2B, activation typically takes <a href="https://openviewpartners.com/blog/the-definitive-guide-product-analytics-for-product-led-growth/">two to three weeks</a> rather than minutes. <a href="https://openviewpartners.com/blog/how-similarweb-grew-to-190m-revenue-run-rate-and-beyond/">Similarweb scores PQLs</a> on two factors, ICP attributes (company size, role, use intent) and usage behavior (frequency and breadth), combining them to set engagement level and which product to sell.</p><p>Strong-fit usage looks like fast time to value, high activation against matched non-ICP cohorts, repeated use of the core workflow, adoption of the differentiating feature, multiple active users or departments, and usage rising over time.</p><p>Weak fit looks like signup without ever reaching the aha, shallow single-feature or one-off use, low account breadth, frequency declining after the trial, a high support and onboarding burden, and no expansion path.</p><h3>6. Interviews</h3><p>Quantitative data alone misses the mechanism, and there is a number for how badly. <a href="https://www.clozd.com/solutions/win-loss-analysis-software">Clozd</a> reports that buyer and seller reasons for closed-lost deals &#8220;only align 15% of the time, meaning 85% of CRM closed-lost data is potentially inaccurate,&#8221; and that roughly 70% of buyers name a different primary competitor than the CRM has. Surveys alone don&#8217;t fix it either: <a href="https://www.clozd.com/blog/win-loss-analysis-why-surveys-alone-wont-cut-it">response rates in</a> some B2B sectors run under 2%.</p><p>The thresholds worth knowing: <a href="https://review.firstround.com/how-to-know-if-your-ideas-the-right-one-a-founders-guide-for-successful-early-stage-customer-discovery/">five to eight conversations</a> for a focused discovery sprint, <a href="https://klue.com/blog/win-loss-analysis-guide">ten similar deals</a> as the minimum cohort to see patterns, and <a href="https://www.clozd.com/blog/how-to-build-a-worldclass-winloss-program-from-scratch">twenty within a segment</a> before making a major strategic change.</p><p>Jason Sippey, formerly VP Product at Twitter, <a href="https://review.firstround.com/the-power-of-interviewing-customers-the-right-way-from-twitters-ex-vp-product/">describes the progression</a>: &#8220;After the first 10, you start to see patterns. After 20, you really understand segmentation of the market. After 30, you have a really good understanding of what you actually need to go build.&#8221; His four questions: do you have this problem, how are you solving it today, how much are you spending to solve it, how does it impact your business.</p><p>For loss interviews specifically, <a href="https://gtmoperations.io/blog/win-loss-analysis-gtm-playbook">GTM Operations&#8217;</a> five questions are better than most scripts: what triggered the search, which vendors made the shortlist and what were the first impressions, rank the top three factors in the decision, was there a moment your opinion of us shifted, and what would have had to be different for the outcome to change.</p><p>Two discipline rules. Buyers should speak <a href="https://klue.com/blog/win-loss-interviews">90% of the time</a>. And the payoff for keeping at it: companies running win-loss for two or more years report an <a href="https://www.clozd.com/solutions/win-loss-analysis-software">84% increase in win rate</a>.</p><p>The same interviews give four qualitative signs that you are closing in on the right segment: a significant jump in conversion rate, a significant jump in enthusiasm, a much stronger desire to act now, and <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">the nod</a>.</p><p>Sequence: <a href="https://revopsmasters.com/category/data-analysis/win-loss-analysis/">quantitative analysis to</a> find anomalous or attractive cohorts, qualitative interviews to find the mechanism and the language, then a second quantitative test for prevalence and predictive power.</p><h3>Working with a small sample</h3><p>You will almost always be here first. The <a href="https://pulserevops.com/knowledge/q10827">workflow</a> with roughly 12 accounts: pull the top 3 by revenue and top 3 by NPS or NRR, find the shared attributes, and treat the result as a hypothesis you revise quarterly.</p><p>Then borrow four rules from <a href="https://allstonlabs.com/library/icp/closed-won-deconstruction">Allston Labs</a>: use closed-lost as the control group, since attributes that <em>differ</em> between won and lost carry the decision weight; compute a win/loss ratio per attribute, where something appearing in 70% of won and 30% of lost is high signal; weight expansion cohorts 3-5&#215;; and run three to five structured interviews with your most engaged customers.</p><h2>What should an ICP document include?</h2><p>Assembled from <a href="https://discover.gtmplaybook.co/ideal-customer-profile-template-b2b-saas">James Doman-Pipe&#8217;s GTM Playbook template</a>, <a href="https://fullfunnel.io/ideal-customer-profile/">Full Funnel&#8217;s ABM six pillars</a> and <a href="https://www.hubspot.com/hubfs/hubspot-technology-partner-icp-and-jvp-template.pdf">HubSpot&#8217;s partner ICP worksheet</a>.</p><ol><li><p><strong>Header.</strong> Name, owner, last updated, change log. HubSpot&#8217;s is the only one of the three with a change log, and skipping it is how a definition goes stale without anyone noticing.</p></li><li><p><strong>Firmographics.</strong> Industry, employee count, revenue band, geography, business model, <a href="https://hginsights.com/blog/how-to-create-an-ideal-customer-profile-icp/">funding stage and growth rate</a>.</p></li><li><p><strong>Technographics.</strong> Current stack, <a href="https://blog.hubspot.com/sales/account-based-sales">competitive and complementary</a> solutions in use, IT spend and digital maturity.</p></li><li><p><strong>Situational fit.</strong> Pain signal, buying trigger, <a href="https://review.firstround.com/this-gtm-leader-turned-investor-crowdsources-early-lessons-from-stripe-figma-and-more/">current solution</a>, <a href="https://www.hubspot.com/make-my-persona/ideal-customer-profile-template">budget parameters</a>. Doman-Pipe&#8217;s bar for a pain signal is <a href="https://discover.gtmplaybook.co/ideal-customer-profile-template-b2b-saas">observable</a> rather than adjectival,: &#8220;Not &#8216;they have messy data&#8217; but &#8216;their team is manually reconciling data from three tools every Monday morning and it is taking four hours.&#8217; Specific and observable.&#8221;</p></li><li><p><strong>Buying committee.</strong> Economic buyer and what they care about, champion and the pain they feel, <a href="https://www.linkedin.com/posts/azinkevich_icp-abm-b2bmarketing-activity-7141410335445475328-dpE8">influencers, blockers and insiders</a>, and day-to-day users versus buyers.</p></li><li><p><strong>Why we win here.</strong> Two or three outcomes delivered, plus the structural advantage in this segment. If you can&#8217;t name the advantage, this is a segment you can serve rather than one to commit to.</p></li><li><p><strong>Disqualifiers.</strong> Their own section, not the inverse of the positive criteria.</p></li><li><p><strong>CRM fields.</strong> <a href="https://ziellab.com/post/ideal-customer-profile-b2b-guide">Fit score 0-100</a> and ICP tier as properties on the company object, how we find them, owner, last review date.</p></li></ol><h3>Published templates worth copying</h3><ul><li><p><strong><a href="https://a16z.com/framework-define-refine-icp/">a16z&#8217;s nine fields</a>:</strong> company size or revenue range, type of business, geography, industries served, job titles, a definable solvable problem, company-specific attributes, specific technologies used, unique buyer behaviors. With five diagnostic questions: which customers get the most out of the product, what traits do the best share, what objections recur in losses, who is easiest to upsell, and what do competitors&#8217; customers have in common. Their worked example: &#8220;Large global retailers with onsite developer teams that use GitHub; have specific requirements for PII and customer data residence drive vendor decisions; and their cloud usage means they don&#8217;t have on premise requirements.&#8221;</p></li><li><p><strong><a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">Lenny&#8217;s nine fields</a>:</strong> company size, job title, pain point being solved, company&#8217;s unique way of working, specific tech used, type of business, price point, geography, and a unique place the user spends time.</p></li><li><p><strong><a href="https://www.bvp.com/atlas/the-six-ps-of-lean-product-with-kim-caldbeck">Bessemer&#8217;s Six Ps worksheet</a>:</strong> Persona, Problem, Proposition, Product, Positioning, Promotion, with a bar for the persona section I like a lot: if all the criteria are met, the account should buy 80% of the time. Their worked example rejected universities as an ICP because &#8220;the higher education market is incredibly fragmented, insular, has restrictive budgets, and quite political,&#8221; and moved to residency teaching hospitals, clinics and paramedic schools.</p></li><li><p><strong><a href="https://review.firstround.com/productboards-path-to-product-market-fit/">Productboard&#8217;s seven dimensions</a>:</strong> company size, product stage, digital-first or digital transformation, single or multiple products, size of the product organization, care for the customer, B2B or B2C. Which resolved to &#8220;an early stage, digital-first startup with strong customer-centric, product-led culture, with one product team, building a single (ideally) B2B product.&#8221;</p></li><li><p><strong><a href="https://www.hubspot.com/hubfs/Agency/GTM%20-%20Product%20Resources%20(Justin)/Misc%20Reference%20Guides%20-%20PDFs/HubSpots%20Ideal%20Customer%20Profile%202024%20(NAM_EMEA).pdf">HubSpot&#8217;s own 2024 NAM/EMEA ICP</a>,</strong> which is rare in publishing its own numbers: 150+ employees, $100M-$500M revenue, software, IT and financial services, $4.6K average monthly deal size, 25% conversion rate, 75-90 day deal length.</p></li><li><p><strong><a href="https://www.peersignal.org/p/3-proven-icp-definition-templates">Adam Schoenfeld&#8217;s paragraph format</a></strong>, for teams that won&#8217;t read a table: &#8220;We are best for B2B SaaS companies with 75-5,000 employees in the US and Canada. Our ideal customers are growing revenue with a sales-led motion, have 10+ AEs assigned to account-based territories, have sophisticated revenue operations...&#8221;</p></li><li><p><strong><a href="https://gtm-labs.co/ideal-customer-profile">GTM Labs&#8217; worked example</a></strong> is the one I&#8217;d hold up as the standard for specificity: 100-500 engineer companies on Kubernetes spending $5K+/month on Datadog, where a Senior SRE is the technical champion and the VP Engineering owns the budget, triggered by a Datadog renewal within 60 days.</p></li></ul><h3>The disqualifier section</h3><p>A negative ICP is a distinct, named section. <a href="https://www.linkedin.com/posts/j-16coelho_gtm-revops-pipelinemanagement-activity-7458126566678605824-m8dQ">Jo&#227;o Coelho</a> treats them as separate architecture: &#8220;Disqualification criteria are not the inverse of ICP. They&#8217;re a separate architectural decision.&#8221;</p><p><a href="https://coldicp.com/negative-icp-b2b-outbound/">Three exclusion types</a>: hard (never target, such as a size floor or a country you cannot legally support), soft (target only with a different motion, such as enterprise logos needing field sales rather than cold email), and conditional (target only if a trigger overrides the default, such as a smaller company that just raised).</p><p>Concrete dimensions people actually write down: pre-revenue companies with no paid motion, or <a href="https://www.contactlevel.com/resources/ideal-customer-profile-b2b">sub-200 employees when</a> the deal size is too small; <a href="https://pipeline.zoominfo.com/marketing/ideal-customer-profile">agencies reselling without</a> their own list, or project-based engagements under $25K; <a href="https://ziellab.com/post/ideal-customer-profile-b2b-guide">a champion with</a> no budget authority and no path to a decision-maker; missing core integrations; and <a href="https://prospectory.ai/resources/negative-persona-disqualification-framework/">a company eight</a> months into a three-year contract with a direct competitor.</p><p>Then make it mechanical. A <a href="https://prospectory.ai/resources/negative-persona-disqualification-framework/">multi-signal routing rule</a>: three or more negative signals auto-disqualifies, two routes to manual review, one proceeds but flags in the CRM. And the enforcement point that <a href="https://coldicp.com/negative-icp-b2b-outbound/">matters most</a>: &#8220;Do not rely on rep discretion. Use CRM views, enrichment rules, and sequence entry criteria. If a segment is truly a negative ICP, the system should block it before it reaches a sender account.&#8221;</p><p>The CRO at Consensus built the positive version of this out of win-loss data and called it a UCP, an un-ideal <a href="https://www.clozd.com/blog/how-consensus-improved-win-rates-using-clozd">customer profile</a>: &#8220;We now know exactly what a bad prospect looks like,&#8221; which they tied to a more streamlined sales process and lower churn.</p><h3>Who owns it, and where it lives</h3><p>Two artifacts, not one. The narrative version lives in a shared doc: <a href="https://fullfunnel.io/ideal-customer-profile/">Full Funnel publishes a Google Sheet</a>, <a href="https://www.hubspot.com/hubfs/hubspot-technology-partner-icp-and-jvp-template.pdf">HubSpot a PDF worksheet</a>. The enforced version lives in the CRM as <a href="https://ziellab.com/post/ideal-customer-profile-b2b-guide">an ICP fit</a> score (number, 0-100) and an ICP tier (dropdown: Tier 1, 2, 3, Not a fit) on the company object.</p><p>Ownership goes to <a href="https://ziellab.com/post/ideal-customer-profile-b2b-guide">RevOps where that function exists</a>, &#8220;or if you don&#8217;t have RevOps yet, whoever manages the CRM and the go-to-market cadence.&#8221; Earlier than that it belongs to the <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">founders</a> because &#8220;when you&#8217;re super early, everything should still be sales-led. You&#8217;re still figuring out your ICP and personas, and that requires talking to customers.&#8221; When conversion is inconsistent rather than absent, <a href="https://review.firstround.com/why-startup-marketers-should-be-diagnosticians-advice-from-stripe-and-openais-first-marketing-hire/">product marketing is the better owner</a>. <a href="https://www.hubspot.com/make-my-persona/ideal-customer-profile-template">HubSpot&#8217;s cadence</a>: &#8220;review it every quarter using fresh CRM data, closed-won deal patterns, and updated customer feedback.&#8221;</p><h2>How do you score and tier accounts?</h2><p>Four scoring models require progressively more data.</p><ul><li><p><strong>Weighted point-based</strong>, the <a href="https://clearbit.com/resources/books/data-driven-sales/inbound-lead-qualification">simplest thing that works</a>. 500+ employees +50, Director title +10, industry, country and technology 1-5 each, negative values for non-ICP attributes. Clearbit describes the <a href="https://clearbit.com/resources/books/lead-qualification/lead-scoring-stages">progression</a> from basic firmographic filtering to weighted points to predictive models, which is the order to walk it.</p></li><li><p><strong>Weighted rubric.</strong> A <a href="https://abmatic.ai/blog/how-to-set-up-account-scoring">two-layer model</a>: industry 20, employee count 20, revenue band 15, tech-stack adjacency 15, geography 10, funding and growth 10, hiring 10, each scored 100/60/30/0 by band. Combined as <a href="https://abmatic.ai/blog/account-scoring-implementation-guide">Account Score</a> =<code>(0.4 &#215; Fit) + (0.6 &#215; Intent)</code>, with intent recency multipliers of 1.0&#215; for 0-30 days, 0.5&#215; for 30-90, 0.1&#215; beyond. A <a href="https://reachiq.ai/resources/playbooks/icp-scoring-101/">published variant</a> weights firmographics 40%, technographics 25%, intent 20%, behavior 15%, with 70+ qualified, 50-69 worth working, under 50 disqualified. <a href="https://salesmotion.io/blog/icp-template-build-validate-activate">Another</a> is industry 25%, size 20%, tech stack 15%, growth signals 15%, org maturity 10%, geography 10%, negative filters 5%.</p></li><li><p><strong>Decision-tree look-alike.</strong> <a href="https://help.madkudu.com/docs/how-is-the-customer-fit-score-calculated">MadKudu&#8217;s model</a> uses firmographic, demographic and technographic data only for fit, with behavior in a separate <a href="https://help.madkudu.com/docs/lead-grade-scoring">Likelihood to Buy model</a> recomputed several times daily and combined as <code>Lead Grade = 2&#215; Fit + 1&#215; LTB</code>. Bands: Very Good 85-100, Good 70-84, Medium 50-69, Low 0-49. <a href="https://www.madkudu.com/blog/lead-scoring-model">Validation targets</a>: recall above 70%, precision as a 10&#215; conversion ratio between top and bottom scores, rejection rate under 5% for top scores.</p></li><li><p><strong>Customer-specific predictive.</strong> <a href="https://support.6sense.com/v1/docs/account-profile-fit-model">6sense</a> trains a model per customer on firmographics, technographics and custom fields, and the model itself identifies which characteristics matter. Bands Strong 81-100, Moderate 50-80, Weak 0-49, updated daily.</p></li></ul><p>Two rules apply across all four models. Hard disqualifiers stay <a href="https://hyperspect.ai/blog/icp-definition-framework">binary</a>: never let a high firmographic score buy its way past an exclusion. And if you have two or three segments with meaningfully different win criteria, <a href="https://ven.studio/blog/icp-definition-revops">build separate models</a>, because blending obscures the signal.</p><h3>Tiering</h3><p><a href="https://hginsights.com/blog/how-to-build-a-b2b-data-enrichment-strategy-that-scales-with-ai/">ICP fit</a> is the eligibility gate; intent, timing and signal strength determine tier placement. Composite formulas exist if you want one: <a href="https://prospeo.io/s/account-prioritization">(ICP Fit &#215; 0.30)</a> + (Intent &#215; 0.25) + (Engagement &#215; 0.25) + (Revenue Potential &#215; 0.20), or <a href="https://www.avair.ai/resources/blog/framework-tiering-target-accounts">fit 30%, revenue</a> potential 25%, intent 20%, engagement 15%, strategic value 10%.</p><p>What matters more is tying each tier to <a href="https://www.octavehq.com/post/gtm-engineers-guide-to-account-tiering">a motion and a volume</a> rather than to enthusiasm:</p><p><strong>Tier 1</strong> is a perfect fit across all dimensions, $100K+ ACV in the worked example, 10-25 accounts per rep, custom outbound with exec engagement and ABM ads, five to eight touches a week, fully personalized.</p><p><strong>Tier 2</strong> is a strong fit with one or two minor mismatches, $25K-$100K, 25-50 accounts per rep, programmatic ABM with industry-segmented messaging, two or three touches a week, semi-personalized.</p><p><strong>Tier 3</strong> is a partial fit that clears the minimum, under $25K, 100+ accounts per rep, inbound and paid social and self-serve, one automated touch, templated.</p><p>For calibration, <a href="https://blog.hubspot.com/sales/account-based-sales">HubSpot</a> runs Tier 1 at 20-50 accounts with &#8220;deep research and one-to-one customized outreach&#8221; and Tier 2 at roughly 200 with industry and persona personalization. <a href="https://winningbydesign.com/wp-content/uploads/2022/05/Winning-by-Design_Blueprint_How-to-Calculate-Your-Target-Account-List.pdf">ACV maps to load</a>: 20-50 accounts per rep in field sales at $50K-$500K ACV, 50-150 in a two-stage motion at $10K-$50K. <a href="https://www.growthunhinged.com/p/icp-marketing-done-right">Mutiny</a> shows what real separation looks like: Tier A converted lead-to-opportunity at 30%, Tier B at 8%, and Tiers C and D were &#8220;effectively rounding errors.&#8221; Oliver Jay started with 100 enterprise accounts at Asana and <a href="https://review.firstround.com/podcast/the-new-plg-playbook-arming-the-next-generation-of-product-led-companies-oliver-jay-asana-dropbox/">concluded</a> &#8220;that&#8217;s too many. It should have been just 50.&#8221;</p><p>Tiers should move. <a href="https://predictablerevenue.com/how-to-fish-in-the-same-pond-without-pissing-everyone-off/">Mosaic</a> narrowed 100,000 accounts to 8,000 managed by nine BDRs, with accounts crossing tiers annually as funding, size, geography and stack change. One team <a href="https://www.saastr.com/backstory-retiered-its-entire-customer-base-in-3-days-the-same-exercise-used-to-take-five-teams-a-quarter/">re-tiered</a> its entire customer base in three days on four signals (growth potential, AI maturity, engagement, account health), landing on 8 Tier A accounts and 21 Tier B.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6wRJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6wRJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6wRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1255381,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6wRJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6wRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6641bed0-e881-4882-81ba-11b54ddc621b_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Trigger events</h3><p>Six categories, across 6sense, Bombora, ZoomInfo, Demandbase, Common Room and UserGems: <a href="https://docs.zoominfo.com/docs/signals-insights">capital and funding</a>; <a href="https://www.demandbase.com/faq/intent-signals/">leadership changes</a>, where UserGems reports <a href="https://help.usergems.com/article/signals-overview">past champions</a> &#8220;convert about 3x higher than normal leads&#8221;; hiring and job postings, which <a href="https://www.commonroom.io/docs/signals/common-room-native-signals/job-listings/">reveal strategic priorities</a>; technology adoption or replacement, where HG Insights&#8217; technographic flags produce <a href="https://hginsights.com/blog/how-to-create-an-ideal-customer-profile-icp/">up to a 5x conversion rate to opportunity</a>; <a href="https://help.usergems.com/article/signals-overview">expansion news</a>; and <a href="https://docs.zoominfo.com/docs/signals-insights">layoffs or contraction</a>, which can indicate consolidation needs.</p><p>First-party intent has its own ladder, from <a href="https://clearbit.com/blog/how-to-use-webpage-intent">Clearbit</a>: high intent is pricing, SKU, trial and demo pages; medium is customer stories, solutions, partners and integrations; low is the homepage, about page and blog.</p><h3>Measuring the ICP itself</h3><p>Not just the accounts. <a href="https://diggrowth.com/blogs/analytics/kpis-metrics-to-measure-icp-accuracy-and-performance/">ICP pipeline contribution</a> as a share of opportunities by count and by dollars, <a href="https://ven.studio/blog/revops-kpis-that-matter">win rate and deal velocity by tier</a>, and <a href="https://www.revopscoop.com/webinar-series/accelerating-revenue-by-the-numbers">renewal rate by tier</a>.</p><p>Bessemer <a href="https://www.bvp.com/atlas/scaling-gtm-from-25-to-50-million-arr">stages the reporting</a>: &#8220;At $1M ARR it is common to look at total pipeline, but at $25-50M this pipeline should be segmented by ICP targets&#8221; and split new-logo from expansion. Coverage benchmarks to hold it against: <a href="https://www.bvp.com/atlas/scaling-to-100-million-ramping-your-cloud-gtm-engine">3-5&#215; the ARR goal</a> unweighted, 2&#215;+ weighted in-period, and $8-10 of pipeline per $1 of marketing spend.</p><h2>How should an ICP change by stage, and how often should you revisit it?</h2><p><strong>Pre-PMF: uncomfortably narrow.</strong> Paul Graham&#8217;s version is to <a href="https://paulgraham.com/13sentences.html">satisfy</a> &#8220;all the needs of a subset of potential users&#8221; rather than a subset of the needs of all of them. <a href="https://www.ycombinator.com/blog/ycs-essential-startup-advice">YC</a>: &#8220;recruiting 10 customers who have a burning problem is much better than 1000 customers who have a passing annoyance.&#8221; Bessemer says to <a href="https://www.bvp.com/atlas/the-founders-playbook-for-scaling-to-1-million-arr">make it narrow</a> &#8220;uncomfortably narrow, so narrow it almost feels too small,&#8221; to focus on one ICP at a time even when the product has broad applications, and to avoid targeting enterprises first. First Round&#8217;s Emery Rosansky <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">sets the epistemics</a>: &#8220;in the early days, you&#8217;re flying nearly blind with a small amount of data, so this initial ICP is not much more than an educated hypothesis.&#8221;</p><p>The obstacle at this stage is usually not ignorance. Clay&#8217;s Kareem Amin <a href="https://review.firstround.com/clays-path-to-product-market-fit/">names it</a>: &#8220;Often it&#8217;s not that you don&#8217;t know who the customer is, it&#8217;s that you&#8217;re not picking, you haven&#8217;t committed to one hypothesis over the other.&#8221; When Clay did narrow, it enforced the choice by cutting irrelevant features, removing non-tailored marketing language, updating internal docs and re-educating the team. Cadence here is event-driven, not calendar-driven.</p><p>Two findings from Rachitsky&#8217;s founder interviews pull in opposite directions. Most founders got their first ICP wrong, so the exercise is iteration rather than insight: Persona&#8217;s Rick Song ran it <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">&#8220;17 times in the early days,&#8221;</a> and Databricks had none at all, working with &#8220;a hospital that was using this stuff... folks that were using us to determine earthquake magnitudes using Twitter.&#8221;</p><p>Skipping the exercise can slow product-market fit. Mathilde Collin at <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">Front</a>: &#8220;We did not think about ICP. I wish we did earlier on. It&#8217;s one of my biggest mistakes.&#8221; Barry McCardel at Hex was forced into it by launch: &#8220;once we did our public launch, we started getting a flood of different people coming in. Filtering through the leads spurred me into putting a much tighter definition around qualification for deals.&#8221;</p><p><strong>Series A/B: evidence-driven narrowing.</strong> a16z <a href="https://a16z.com/how-much-should-i-invest-in-revops/">frames the stage</a> &#8220;rapidly experimenting to refine your ideal customer profile and build repeatable sales motions.&#8221; Bessemer&#8217;s ARR ladder is the most specific guidance available: at <a href="https://www.bvp.com/atlas/scaling-from-1-to-10-million-arr">$1-10M ARR</a>, &#8220;aim to fulfill the product vision for your initial ideal customer profile,&#8221; sequencing product-market fit, then strong net retention in the ICP base, then broadening; at <a href="https://www.bvp.com/atlas/scaling-to-100-million-ramping-your-cloud-gtm-engine">$10-25M</a>, &#8220;it becomes important to start segmenting leads to the salespeople and sales teams who are best equipped to handle them&#8221;; at <a href="https://www.bvp.com/atlas/scaling-gtm-from-25-to-50-million-arr">$25-50M</a>, &#8220;crystallizing your ideal customer profile&#8221; becomes one of the most important tasks, and you finally have enough deals to find the pattern.</p><p><a href="https://openviewpartners.com/blog/market-segmentation-how-why-when/">OpenView&#8217;s analytical method</a> for this stage: &#8220;Pull all of your opportunities from the past year and clean the data. Look for the expected LTV per opportunity versus the CAC across different characteristics, such as industry, company size, buyer persona and use case.&#8221; With the caution that firmographics alone &#8220;does not drive any particularly important insights.&#8221;</p><p>Jason Lemkin puts numbers on when to split the team: begin segmenting <a href="https://www.saastr.com/how-should-your-approach-to-segmenting-customers-change-as-your-sales-team-scales-up/">&#8220;as early as 3 reps,&#8221;</a> formalize three or four categories &#8220;after maybe $8m-$10m ARR.&#8221; Stripe <a href="https://openviewpartners.com/blog/scaling-sales-stripe/">added one segmentation dimension per year</a> starting with size, and Jeanne DeWitt Grosser describes the failure mode: &#8220;You know you have a segmentation problem when the same account executive is talking to a million-dollar company in the morning and a billion-dollar company in the afternoon. Those sales processes have nothing to do with one another.&#8221; Cadence: a quarterly playbook review, and Mandy Cole&#8217;s instruction is to check it <a href="https://www.saastr.com/5-steps-to-build-your-first-gtm-playbook-with-stage-2-capital/">against reality</a>: &#8220;Go through and see if it&#8217;s what you&#8217;re doing in the field, and if it&#8217;s not, update it to see the impact on pipeline.&#8221;</p><p><strong>Enterprise: a new ICP, not an extension.</strong> Joe Morrissey at a16z warns against treating <a href="https://a16z.com/getting-ready-to-move-upmarket/">interest as fit</a>: &#8220;the single biggest mistake I&#8217;ve seen companies make when moving upmarket is mistaking initial enterprise interest for product-market fit. Just because you have product-market fit for startups, SMBs, or mid-market customers does not mean you&#8217;ll automatically find product-market fit in the enterprise space.&#8221; Segment&#8217;s enterprise ICP was &#8220;larger enterprises that were B2C, multi-product, multi-brand, multi-subsidiary, and most importantly, data-literate,&#8221; narrowed further to those with &#8220;forward-thinking data champion buyers who were either decision-makers or could partner with a CMO to shape the decision criteria,&#8221; and it required outbound pipeline generation with 9-12 month cycles.</p><p>Budget for the new segment differently. <a href="https://www.saastr.com/your-core-cac-vs-your-expansion-cac-one-trophy-but-two-goals/">Lemkin</a>: &#8220;If you force your CAC in a new segment to hit the same ROI as your overall, blended CAC goals, you&#8217;ll never leave your core safe ICP,&#8221; so 80% of new customers should hit a sustainable CAC while the 20% in new segments &#8220;just try to barely break even,&#8221; with 24 months to converge.</p><p>At this size the data team becomes the reality check. <a href="https://www.bvp.com/atlas/how-to-get-more-out-of-your-startups-data-strategy">Bessemer</a>: &#8220;The data team will come in and identify the users who have high product engagement, retention, and reach, and in many cases, the attributes of this cohort of users will differ, at least somewhat, from an original conception of the ideal customer.&#8221; And a16z&#8217;s point about who <a href="https://a16z.com/podcast/do-you-know-your-icp/">holds the pieces</a>: &#8220;You can&#8217;t define your ICP in a silo. RevOps has data. Product sees patterns. Sales hears objections. Marketing picks up signal. Success sees who churns and who expands.&#8221;</p><p><strong>Review versus revision.</strong> The cadence argument resolves once you separate the two words. Review is checking evidence: monthly or quarterly against live closed-won data, which is what Anis Bennaceur at <a href="https://www.saastr.com/how-attention-com-turns-sales-calls-into-pipeline-the-best-gtm-data-you-own-and-why-most-b2b-teams-throw-it-away/">Attention.com</a> means by &#8220;the teams compounding fastest are refreshing it off live closed-won data on a monthly or quarterly loop.&#8221; Revision is changing the operating definition, and it should be rare and trigger-based: <a href="https://a16z.com/framework-define-refine-icp/">a new product</a> capability that changes who you can serve, <a href="https://openviewpartners.com/blog/market-segmentation-how-why-when/">retention, win rates, service</a> costs or willingness to pay differing by segment, <a href="https://a16z.com/aligning-product-and-gtm-teams-with-better-segmentation/">a move upmarket</a>, or <a href="https://www.bvp.com/atlas/how-to-get-more-out-of-your-startups-data-strategy">behavioral data diverging</a> from the original conception.</p><p>The apparent disagreement in the sources resolves the same way. <a href="https://gtm-labs.co/ideal-customer-profile">Daria Dovzhikova</a> supports full rebuilds after major launches or funding rounds; <a href="https://erikrmiller.com/icp/">Erik Miller</a> warns &#8220;Don&#8217;t change the ICP every quarter; that creates whiplash for sales and marketing.&#8221; Both are right, about different words.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u4A9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u4A9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u4A9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1458499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u4A9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!u4A9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07b41362-41e2-4e84-8584-6045280793ec_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>How the ICP shows up downstream: positioning, outbound, roadmap, board</h2><p>A definition nothing enforces isn&#8217;t a definition.</p><p><strong>Positioning.</strong> April Dunford <a href="https://www.aprildunford.com/post/an-introduction-to-positioning">defines positioning</a> &#8220;how your product is a leader at delivering something that a well-defined set of customers cares a lot about,&#8221; and the order of her five components is the argument for where the ICP sits: <a href="https://www.aprildunford.com/post/positioning-and-competition">competitive alternatives</a> (&#8221;what would customers do if our solution didn&#8217;t exist?&#8221;), differentiated capabilities, value, <em>then</em> target customer segmentation, then <a href="https://www.aprildunford.com/post/a-quickstart-guide-to-positioning">market category</a>. The ICP is derived from unique value rather than assumed before it, because &#8220;your best-fit target customers are customers that really care a lot about your unique value.&#8221; Starting from market category is <a href="https://aprildunford.substack.com/p/understanding-the-job-of-a-market">&#8220;the tail wagging the dog.&#8221;</a></p><p>The payoff, in her <a href="https://www.aprildunford.com/post/a-product-positioning-exercise">words</a>: &#8220;Customers that are well suited for your offering will easily understand your value, will purchase faster, and are much less likely to ask for discounts.&#8221; The canonical case is repositioning a general enterprise CRM, which invited comparison with Siebel, as a <a href="https://www.aprildunford.com/post/a-quickstart-guide-to-positioning">CRM for investment banks</a> where modeling interpersonal relationships was mission-critical: &#8220;from under $2M to close to $80M&#8221; in 18 months.</p><p><strong>Demand generation.</strong> Chris Walker&#8217;s paid-social <a href="https://www.linkedin.com/posts/chriswalker171_marketing-b2b-demandgen-activity-6892102282540929024-8Yd_">targeting formula</a> is just &#8220;(1) Job Title + (2) Company firmographics (named accounts, company size, industry),&#8221; with the classic errors being no job-title targeting, no firmographic layer, and LinkedIn audience expansion that makes you &#8220;pay high CPMs to people you don&#8217;t want to reach.&#8221; Refine Labs allocates <a href="https://www.refinelabs.com/article/partnerships-0">60-70% of paid</a> media to demand creation and about 30% to capture.</p><p>Budget for the measurement gap while you&#8217;re at it. Across 620 declared-intent conversions and $21.5M in closed-won ARR, Refine Labs found <a href="https://www.refinelabs.com/news/hybrid-attribution-framework">a 90% gap</a> between software attribution and first-party self-reported data: podcast was credited with 53% of revenue self-reported and 0% by software.</p><p>Three worked outcomes. <a href="https://www.refinelabs.com/success-stories/clari">Clari</a> moved to target account lists, persona alignment and zero-click content instead of lead-gen forms: ad spend down 38%, cost per SQO down 36%, acquisition cost down 67%, win rates up 64%. <a href="https://www.refinelabs.com/success-stories/loxo">Loxo</a> built priority account lists with buyer-count exclusions and ICP-focused content: acquisition cost down 23%, ARR up 45% quarter over quarter. <a href="https://www.refinelabs.com/success-stories/zappi">Zappi</a> analyzed region, industry and persona out of the CRM and targeted by job function: 3&#215; average deal size and 7&#215; qualified pipeline against spend.</p><p><strong>Outbound.</strong> Clay&#8217;s method is the ICP definition and the list build in <a href="https://www.clay.com/guides/how-to-build-a-targeted-prospect-list">one motion</a>: &#8220;Pull the deals that closed fast, stayed, and expanded, and ask what they had in common the quarter before they bought. The patterns that repeat are your ICP. Write the definition down as a list of filters you can source against later, split into firmographic (size, industry, geography), technographic (the tools they run), and signal-based (funding, hiring, expansion).&#8221;</p><p>Apply disqualifiers <em>before</em> <a href="https://prospectingmanual.com/icp-to-sequence-workflow/">list export</a> since &#8220;disqualifiers applied after export waste enrichment credits and create compliance risk.&#8221; The <a href="https://learn.outboundsystem.com/playbooks/sales-nav-targeting">workflow</a> most teams end up with: build criteria in Sales Navigator, export, run through Apollo or ZoomInfo for contact data, layer Crunchbase for funding, overlay BuiltWith for technographics, process through Clay for dedup and scoring. With one caveat worth pinning up: &#8220;Company headcount is the least reliable filter in Sales Navigator. Many companies mischaracterize their size or list no headcount at all.&#8221;</p><p><strong>Content.</strong> The operating chain is ICP and account fit, then priority personas and buying situations, then topic pillars, then stage-appropriate formats, then channels. <a href="https://www.reforge.com/blog/buyer-persona">Every campaign, product</a> and content strategy should align to at least one persona, built on &#8220;motivations, goals, pain points, and language, not only demographics.&#8221; Exit Five&#8217;s practical step is the one <a href="https://exitfive.com/newsletter/b2b-marketing-first-principles-you-need-to-nail-exit-five-newsletter-132/">teams skip</a>: &#8220;Create a One-Pager: Summarize your ICP in one clear document that your entire team can use.&#8221; For volume calibration, <a href="https://www.reforge.com/blog/brief-does-content-marketing-actually-work-the-data-says-yes">47% of buyers</a> view three to five pieces of content before talking to a rep.</p><p><strong>Roadmap.</strong> The <a href="https://discover.gtmplaybook.co/ideal-customer-profile-template-b2b-saas">ICP</a> &#8220;should be a formal input into quarterly roadmap reviews, not just a Marketing document.&#8221; A <a href="https://www.pelin.ai/blog/prioritizing-feedback-from-different-customer-segments">segment-weighted score</a> makes the tradeoff explicit: revenue &#215; strategic fit &#215; growth signal &#215; usage depth. Worked: a $30K mid-market account that is a core ICP match, expanding, and a power user scores 108; a $100K enterprise outlier that is contracting and lightly used scores 5, making &#8220;the mid-market account&#8217;s feedback 21x more valuable for prioritization purposes.&#8221; The <a href="https://www.reforge.com/blog/product-roadmaps">counterweight</a> keeps it honest: over-indexing on power users &#8220;harms the product experience for the rest of the user base, and steals product effort away from features that could go towards acquiring new users.&#8221;</p><p><strong>Board reporting.</strong> a16z flags <a href="https://a16z.com/11-key-gtm-metrics-for-b2b-startups/">Net New Weighted Pipeline</a> as the leading indicator of market pull. Pair each metric with the decision it drove, since <a href="https://a16z.com/what-now-board-meeting-or-bullsht/">70% of a board meeting</a> should focus on the future and the issues at hand. First Round&#8217;s Vanta example is the model: a 6% win rate on one <a href="https://review.firstround.com/annual-planning-sucks-a-cpo-cro-cfo-and-coo-share-advice-on-how-to-make-it-better/">product-buyer combination</a> where &#8220;generally, a win rate below 30% means salespeople are wasting time and you need an unsustainable amount of pipeline. In this case, the solution wasn&#8217;t to fix sales, but to immediately stop selling this product to this buyer.&#8221; And SaaStr&#8217;s <a href="https://www.saastr.com/nothing-else-segment-churn/">observed NRR gradient by deal size</a> makes the segment story concrete: single-seat deals under $99/month at roughly 3% monthly churn, $99-$999 at about 100% NRR, $10K-$100K+ at about 120%.</p><h2>Why do ICPs fail?</h2><p><a href="https://19965450.fs1.hubspotusercontent-na2.net/hubfs/19965450/2026%20Benchmarks%20Report%20Assets/Fullcast_Pavillion-2026-GTM-Benchmark%20Report.pdf">Fullcast and Pavilion&#8217;s 2026 GTM benchmark</a> found ICP misalignment cuts win rates by up to 75%, and that 63% of 118 CROs had little or no confidence in their own ICP. Nobody in that survey is missing a document. They just don&#8217;t believe theirs.</p><p>Nine failure modes, in the order I&#8217;d expect to hit them rather than the order they&#8217;re usually listed.</p><ol><li><p><strong>Written but not operationalized.</strong> <a href="https://b2brevopsinsights.com/how-to-operationalize-your-icp-across-the-funnel/">The pattern</a>: &#8220;ICP alignment is not a strategy doc... You defined your ICP in a slide deck three quarters ago. But you haven&#8217;t updated routing rules since.&#8221; Owner.com&#8217;s CRO Kyle <a href="https://www.saastr.com/how-to-build-go-to-market-efficiency-in-smb-sales-with-owner-com-cro-kyle-norton/">Norton found</a> &#8220;either bad or no targeting on prospects,&#8221; poor-fit closes and mis-set expectations, with churn a &#8220;massive drag on efficiency&#8221; in his first 90 days; his fix was to pause the Growth plan, say no to a lot of customers, and build a lead quality system. <em>Remedy:</em> audit the top 50 closed-won deals against current scoring and routing rules. Figma&#8217;s version was to <a href="https://review.firstround.com/podcast/inside-figmas-early-days-how-to-build-a-world-class-sales-org-kyle-parrish-vp-of-sales/">segment sales at</a> the 1,000-employee line and pipe product usage into Salesforce via reverse ETL.</p></li><li><p><strong>Static.</strong> One RevOps lead <a href="https://www.linkedin.com/posts/kurt-warner-8699b63_icp-drift-is-killing-your-pipeline-and-no-activity-7477723074906308608-QEeZ">describes a client</a> that &#8220;re-wrote their ICP properly last year, negative criteria and all, then left the old scoring weights and routing rules untouched for two quarters. The doc said one thing, the system kept qualifying the drifted accounts, and nobody reconciled the two until win rate forced it,&#8221; calling drift a &#8220;silent revenue killer manifesting as declining win rates, lengthening sales cycles, and churn concentration.&#8221; Lemkin&#8217;s line: <a href="https://www.saastr.com/how-attention-com-turns-sales-calls-into-pipeline-the-best-gtm-data-you-own-and-why-most-b2b-teams-throw-it-away/">&#8220;an annual ICP exercise is a 2021 habit.&#8221;</a> <em>Remedy:</em> treat it as a <a href="https://www.ownoutbound.com/blog-posts/your-icp-isnt-a-spreadsheet-its-a-living-hypothesis">living hypothesis</a> with a monthly closed-won review. One founder who did that cut outbound from 2,000 to 400 emails a month while win rate rose from ~3% to 11%.</p></li><li><p><strong>Aspirational.</strong> The written ICP describes the customer the company wants; closed-won describes the one it has. <a href="https://ziellab.com/post/ideal-customer-profile-icp-data-driven-b2b-guide">The cost</a>: &#8220;The gap between those two is where marketing spend goes to die,&#8221; with an SDR team hitting an 11% win rate and a 178-day cycle against the written ICP. Sometimes the gap is a level, not a segment: First Round <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">documents a company</a> that &#8220;thought they were selling to CISOs at early- and growth-stage orgs, but realized through user research discussions that the people that acutely felt the pain were 2-3 levels below a CISO in an Enterprise org.&#8221; <em>Remedy:</em> start from 18-24 months of closed-won, and note Rachitsky&#8217;s finding that <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">data from outbound</a> sales beats leads from investors and friends as a signal.</p></li><li><p><strong>Too broad.</strong> Cascade&#8217;s Jake <a href="https://www.lennysnewsletter.com/p/lessons-learned-from-a-startup-that">Fuentes defined</a> &#8220;nontechnical business analysts using Excel to crunch big data sets,&#8221; later calling it &#8220;much too broad&#8221; and describing the result as ICP fray: a scooter company managing location data, an HR team and a retailer under one profile. &#8220;To know what problem you&#8217;re solving, you need to know who you&#8217;re solving it for.&#8221; <em>Remedy:</em> replace generic firmographics with operational signals, and start from about three distinctive attributes.</p></li><li><p><strong>Demographics instead of behavior and situation.</strong> A profile of static firmographics with nothing distinguishing accounts likely to buy <em>now</em>. <em>Remedy:</em> convert filters into real-time signals, and mine what you already own. Lemkin: <a href="https://www.saastr.com/how-attention-com-turns-sales-calls-into-pipeline-the-best-gtm-data-you-own-and-why-most-b2b-teams-throw-it-away/">prospect call transcripts</a> are &#8220;the highest-signal first-party data your company will ever own.&#8221;</p></li><li><p><strong>No negative ICP.</strong> <a href="https://www.clozd.com/blog/5-reasons-deals-are-lost-and-how-to-turn-them-into-wins">No-decision deals</a> &#8220;can account for up to 40% of a pipeline,&#8221; which is exactly what disqualifiers are for. <em>Remedy:</em> Mandy Cole&#8217;s <a href="https://www.saastr.com/5-steps-to-build-your-first-gtm-playbook-with-stage-2-capital/">Green/Yellow/Red</a>: green is proactive pursuit, yellow is inbound and referral only, red is no-go.</p></li><li><p><strong>No discipline at close.</strong> Quota pressure closes poor-fit deals. Katrina Wong separates an ICP from inbound demand: an ICP is <a href="https://www.saastr.com/saastr-podcast-457-and-video-building-your-ideal-customer-profile/">a choice</a> about &#8220;who you want to sell to versus who just wants to buy from you.&#8221; Clay&#8217;s co-founder Varun Anand gives the honest version of what <a href="https://review.firstround.com/the-gtm-inflection-points-that-powered-clay-to-a-1b-valuation/">discipline costs</a>: &#8220;We had few true customers because almost none of the existing ones fit our new ICP,&#8221; and after narrowing to outbound sales, &#8220;nearly all of our original customers churned.&#8221;</p></li><li><p><strong>Confusing ICP with persona.</strong> <em>Remedy:</em> keep <a href="https://ziellab.com/post/ideal-customer-profile-icp-data-driven-b2b-guide">the split</a> clean: &#8220;ICP answers &#8216;what kind of company should we go after.&#8217; Persona answers &#8216;who inside that company makes the call.&#8217;&#8221; Qualify the account first, then map the committee.</p></li><li><p><strong>Trusting CRM loss reasons.</strong> 15% buyer-seller alignment, 70% competitor mismatch, 98% inconsistent tracking, all cited above. <em>Remedy:</em> <a href="https://www.clozd.com/blog/how-to-build-a-worldclass-winloss-program-from-scratch">20 interviews within a segment</a> before concluding anything.</p></li></ol><p>The <a href="https://b2brevopsinsights.com/how-to-operationalize-your-icp-across-the-funnel/">single best test</a> of whether yours is real: an SDR can identify or disqualify an account quickly, marketing can target it, RevOps can score and route it, and sales can explain why it should be pursued <em>now</em>. If any of the four can&#8217;t, it&#8217;s a point of view rather than an ICP.</p><h2>Where the practice is heading</h2><p>The ICP-as-PDF is explicitly retired in current practice. <a href="https://blog.icustomer.ai/rethinking-icp-in-2025-the-icustomer-methodology-for-effective-abm-and-compounding-growth/">iCustomer, July 2025</a>: &#8220;The traditional definition of an Ideal Customer Profile as a static document describing your perfect customer is obsolete. In 2025, an ICP isn&#8217;t a document, it&#8217;s a dynamic, data-driven automated system that evolves in real-time based on live signals and market intelligence.&#8221;</p><p>Tooling now derives the profile directly. <a href="https://www.zoominfo.com/features/ideal-customer">ZoomInfo&#8217;s AI-Generated ICP</a> takes a CRM report of won and lost deals and learns which attributes indicate best targets, refreshing as conditions change. <a href="https://hginsights.com/product/market-analyzer-copilot/">HG Insights&#8217; Market Analyzer Copilot</a> builds ICPs from win/loss, firmographic and technographic data correlated with highest-CLV customers.</p><p>The capability gap is the more interesting number. <a href="https://enlyft.com/resources/will-2024-be-the-year-of-the-customer-insights-overhaul">Enlyft</a> found 81% of respondents likely to update their ICP in 2024, yet nearly 70% lacked a strong grasp of account scoring and 43% had invested in scoring without understanding its efficacy. The differentiator is not access to a model. It&#8217;s knowing what a good one looks like.</p><h2>Further reading</h2><ul><li><p>Lenny Rachitsky, <a href="https://www.lennysnewsletter.com/p/how-to-identify-your-ideal-customer">How to identify your ideal customer profile</a>. The operator counterpart to this page, and the best collection of initial ICPs anywhere: a nine-item attribute picker, a dozen founder accounts, and the three-attribute floor. It paywalls at the template and the comparison chart.</p></li><li><p>a16z, <a href="https://a16z.com/framework-define-refine-icp/">a framework to define and refine your ICP</a>, for the nine-field template and the revision triggers.</p></li><li><p>First Round Review, <a href="https://review.firstround.com/the-most-common-go-to-market-questions-from-founders/">the most common</a> go-to-market questions from founders, which is where the hiring-signal example and the &#8220;educated hypothesis&#8221; framing come from.</p></li><li><p>April Dunford, <a href="https://www.aprildunford.com/post/a-quickstart-guide-to-positioning">a quickstart guide to positioning</a>, for why the ICP comes after differentiated value rather than before it.</p></li><li><p><a href="https://fullfunnel.io/ideal-customer-profile/">Full Funnel&#8217;s ICP for ABM</a>, which publishes an actual Google Sheet.</p></li><li><p><a href="https://allstonlabs.com/library/icp/closed-won-deconstruction">Allston Labs on closed-won deconstruction</a>, the most rigorous small-sample method I found.</p></li><li><p><a href="https://www.clozd.com/blog/how-to-build-a-worldclass-winloss-program-from-scratch">Clozd on building a win-loss program</a>, for the interview thresholds and why CRM loss reasons mislead.</p></li><li><p>Clay&#8217;s account of what narrowing costs, which is the least comfortable line in the whole set: after <a href="https://review.firstround.com/the-gtm-inflection-points-that-powered-clay-to-a-1b-valuation/">they narrowed</a>, &#8220;nearly all of our original customers churned.&#8221;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WVyC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WVyC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WVyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1291817,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212372039?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WVyC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!WVyC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a8ebff-9856-40e4-988a-1e71609fd214_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>FAQ</h2><p><strong>What is an ideal customer profile?</strong> An account-level definition of which companies you are best at winning, serving, retaining and expanding, expressed as scored criteria and explicit disqualifiers rather than prose. It answers four questions: who will buy, who will buy smoothly, who can be implemented and serviced, and who will renew and expand.</p><p><strong>How is an ICP different from a buyer persona?</strong> The ICP is the company, the persona is the person inside it. Qualify the account first, then map the buying committee. Treating them as synonyms produces a profile that can&#8217;t be used for routing or list building.</p><p><strong>How is an ICP different from TAM?</strong> TAM is a dollar-value estimate of the whole opportunity. An ICP is a qualitative definition of which account types fit best. Every ICP account sits inside your TAM; most TAM accounts are not in your ICP.</p><p><strong>How many customers do you need before you can define one?</strong> 5-7 closed-won deals support a provisional hypothesis, 30 is a stronger first pass, and 50 combined won and lost supports general pattern analysis. Below that, use the top 3 by revenue and top 3 by retention as a quarterly-revised hypothesis, with closed-lost as the control group.</p><p><strong>How many attributes should an ICP have?</strong> Four to seven, and at least three. Past 8-10 dimensions you are over-specified and fitting noise, and the profile stops being usable by an SDR in real time.</p><p><strong>How often should you update an ICP?</strong> Review monthly or quarterly against live closed-won data. Revise the operating definition only on a trigger: a new capability that changes who you can serve, retention or unit economics splitting by segment, a move upmarket, or behavioral data diverging from the original conception. Rewriting it every quarter creates whiplash in sales and marketing.</p><p><strong>Who owns the ICP?</strong> One named owner with a change log, usually RevOps or whoever manages the CRM and the go-to-market cadence, with input from product, sales, marketing and customer success. At the earliest stage it belongs to the founders, because it is still being discovered in customer conversations.</p><p><strong>Do you need a negative ICP?</strong> Yes, as its own section rather than the inverse of the positive criteria. Split hard exclusions you never target from soft ones you serve on inbound and referral only, and conditional ones a trigger can override. No-decision deals can reach 40% of a pipeline, and disqualifiers are what protect it.</p><p><strong>Where should the ICP document live?</strong> Two places. A shared doc for the narrative version, and the CRM for the enforced version, as a fit score and a tier on the company object. If it only exists in the doc, it isn&#8217;t operating.</p><p><strong>What is the difference between fit and intent?</strong> Fit is whether a company should buy from you, from stable attributes. Intent is whether it is looking right now, from recent signals. Score them separately and combine at routing: fit sets eligibility, intent and timing set the tier.</p><p><strong>How do you know the ICP is working?</strong> Track ICP share of pipeline by count and dollars, win rate by tier, deal velocity by tier, and renewal rate by tier. If Tier 1 doesn&#8217;t convert materially better than Tier 3, the tiers are decorative.</p>]]></content:encoded></item><item><title><![CDATA[Paul Graham's essays, as audio]]></title><description><![CDATA[Collection of his  classic essays &#8212; narrated, chaptered, and grouped by theme.]]></description><link>https://journal.daniellopes.dev/p/paul-grahams-essays-as-audio</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/paul-grahams-essays-as-audio</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Mon, 24 Aug 2026 17:09:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/864e78a3-b5e1-4f6d-8c25-701e07ebe68a_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Znjb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Znjb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Znjb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1048568,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212491348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Znjb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Znjb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a64829f-17d6-4a9e-babc-17361786a4a7_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When we incorporated GrowthX in 2025, we deliberately ran the work by hand first as a content marketing agency for clients like Ramp, Lovable, Vercel, Brex and Reddit &#8212; before building any external facing product. That got us to 8 figure revenue and nearly 100 people team.</p><p>In June 2026 we launched the first user-facing version of our product. Launching a new product inside a company this size should be like getting back to seed stage, but with a different set of pros and cons .</p><p>A larger engineering team lets us take bold steps. It also means I have to keep reminding myself that the team building this first version should behave like it&#8217;s seed stage &#8211; that means being conscious on how to handle <a href="https://en.wikipedia.org/wiki/Conway%27s_law">Conway&#8217;s law</a>, data migrations, rollouts, etc.</p><p>I&#8217;ve kept rereading or referencing Paul Graham&#8217;s essays. And I wanted an audio version for my commute. </p><p>So, I pointed the <a href="https://journal.daniellopes.dev/p/highlights-from-hartmut-esslingers">same pipeline I built for a Computer History Museum oral history</a> at Paul Graham&#8217;s blog to get the list I want to read again. This is the batch, grouped by theme. </p><p>Sharing here in case others find it useful.<br><br><em>09-07-2026 Update: I&#8217;m switching all the essays to use Eleven Labs + did some post processing to make the listening easier, and added chapters + enabled download so you can listen to the large &#8220;whole theme&#8221; volumes with any audiobook app of your choice.</em></p><p><em><mark data-color="#d9ead3" style="background-color: rgb(217, 234, 211); color: rgb(0, 0, 0);">Note: The audio is machine-narrated, and the text is adapted for listening rather than read verbatim. Every episode links to the original, which is the real thing.<br></mark></em></p><div><hr></div><p></p><h2>Download the omnibus audio book format</h2><p>Here&#8217;s the full 25 hours audio book version with chapters that you can load into any audio player of your choice:<br><br>&#128073; <strong><a href="https://drive.google.com/file/d/1FyxUePBx7Koajk_hlrHO-hlVyYxyUWaT/view?usp=sharing"><span>https://drive.google.com/file/d/1FyxUePBx7Koajk_hlrHO-hlVyYxyUWaT/view?usp=sharing</span></a><span data-color="#3d85c6" style="color: rgb(61, 133, 198);"><br></span></strong></p><div><hr></div><h2><br>Startups &amp; Founders</h2><p>Whole theme: 14 hours.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b1b0ccea-31ae-4412-b970-88700fb0984e&quot;,&quot;duration&quot;:51252.87,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><p></p><h3>How to Get Startup Ideas</h3><p>Startup ideas come from noticing a problem you have yourself, not from trying to invent one. Every good idea shares three traits: the founders wanted it, could build it, and few others saw its value yet. A social network for pet owners sounds plausible but has zero real users; Microsoft&#8217;s Basic for the Altair had only a couple thousand possible buyers who needed it badly.</p><p>Pick depth over breadth: a narrow group that wants something urgently beats a wide group that finds it mildly interesting. Facebook started at Harvard, a few thousand students, before spreading through every college and then everyone. Stripe succeeded by not flinching from the &#8220;schlep&#8221; of payments that scared other programmers off.</p><p>This is for anyone hunting a startup idea who keeps landing on ones that sound fine but fold under scrutiny. The advice: get to the leading edge of some fast-changing field, then build whatever seems to be missing from your own life there.<br>Duration: 40min, Publish Date: Nov 2012, Post: <a href="https://www.paulgraham.com/startupideas.html">paulgraham.com/startupideas.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;10caf4a6-e65b-498f-9670-8839f45bab97&quot;,&quot;duration&quot;:2420.8718,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Do Things that Don&#8217;t Scale</h3><p>Startups don&#8217;t take off on their own; founders force the launch by hand, then automate once it&#8217;s rolling.</p><p>Stripe&#8217;s founders got early users by saying &#8220;give me your laptop&#8221; and installing the product on the spot, a technique YC now calls a Collison installation. Airbnb&#8217;s founders went door to door in New York shooting &#8220;professional&#8221; photos of hosts&#8217; apartments, thirty days that separated success from failure. Wufoo sent hand-written thank-you notes to every new user, and Facebook stayed Harvard-only, then school-by-school, before opening up. Pebble hand-assembled its first watches before selling $10 million worth on Kickstarter, and Viaweb&#8217;s founders built stores for merchants who wouldn&#8217;t build their own.</p><p>It hands anyone starting something the same reframe: judge an early product by whether the founders are doing the right small things, not by whether it looks like it&#8217;s taking over the world yet.<br>Duration: 25min, Publish Date: Jul 2013, Post: <a href="https://www.paulgraham.com/ds.html">paulgraham.com/ds.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;4046d101-48b0-4435-a9e4-04368e9a7b71&quot;,&quot;duration&quot;:1472.1829,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Startup = Growth</h3><p>A startup is defined by one thing: growth, fast enough to matter. Being new, working on technology, or taking venture money are side effects, not the definition. A barbershop can satisfy plenty of demand but can&#8217;t reach more customers than its chairs allow; a search engine has no such ceiling.</p><p>Growth rates make the case concrete. During Y Combinator, 5-7% weekly growth counts as good, 10% as exceptional, 1% as a warning sign. A company making $1,000 a month growing 1% weekly reaches $7,900 a month in four years; at 5% weekly it reaches $25 million. Wozniak building his own computer in 1975 and Page and Brin fixing search they found inadequate both turned personal problems into markets nobody else had noticed yet, and both became defensible once the wider market caught up.</p><p>That same growth number explains why VCs fund unprofitable companies, why founders take money they don&#8217;t strictly need, and why acquirers like eBay buying PayPal pay a premium: a fast-growing company is valuable and, left alone, dangerous. Useful for anyone trying to tell whether they&#8217;re running a startup or just a new business.<br>Duration: 30min, Publish Date: Sep 2012, Post: <a href="https://www.paulgraham.com/growth.html">paulgraham.com/growth.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;1373c12e-26be-46ab-8b78-d906c88850d5&quot;,&quot;duration&quot;:1812.4539,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Schlep Blindness</h3><p>Startup founders avoid great ideas not because the ideas are bad, but because the work behind them looks unpleasant. A tedious, unglamorous task gets shut out of consideration before it&#8217;s even weighed, and the mind does the shutting out without telling you.</p><p>Stripe makes the case. For over a decade every hacker who processed payments online knew how painful it was, yet they built recipe sites and event aggregators instead, because fixing payments meant striking deals with banks, handling fraud, and navigating regulations.</p><p>The fix: stop asking what problem to solve, and ask what problem you wish someone else would solve for you.<br>Duration: 5min, Publish Date: Jan 2012, Post: <a href="https://www.paulgraham.com/schlep.html">paulgraham.com/schlep.html</a><br></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;ef52b02c-4228-4a43-b0a6-3be0e6cce4be&quot;,&quot;duration&quot;:305.13632,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Alive or Default Dead?</h3><p>Half the founders running startups past their first year don&#8217;t know whether their current trajectory ends in profitability or in running out of cash. Default alive or default dead is the question, and answering it decides everything else: ambitious new bets, or a rescue plan.</p><p>The trap is the fatal pinch: default dead, slow growth, not enough runway left to fix it, reached because founders counted on raising more money instead of checking the math. Steep growth, over 5x a year, buys real investor interest; anything less makes fundraising a gamble, not a plan. The bigger killer is overhiring: founders raise a round, growth is only so-so because the product is merely appealing, and they hire to force growth that a bigger team can&#8217;t produce. Airbnb went the other way, waiting four months after Y Combinator to make its first hire.</p><p>For anyone past nine months in, this gives a five-minute gut check before the next hiring decision, and a reason to write down plan B before plan A stops working.<br>Duration: 8min, Publish Date: Oct 2015, Post: <a href="https://www.paulgraham.com/aord.html">paulgraham.com/aord.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;74836080-3e92-4b17-a26a-fdbf7cf7b068&quot;,&quot;duration&quot;:561.99835,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What Happened to Yahoo</h3><p>Yahoo&#8217;s collapse traces to two problems Google never had: easy money and confusion about what kind of company it was.</p><p>By 1998 advertisers were overpaying for banner ads, and Internet startups were buying traffic with money raised on the strength of Yahoo&#8217;s own revenue growth, a loop that made search look worthless. David Filo dismissed search as 6% of traffic in an industry growing 10% a month. Yahoo also called itself a &#8220;media company,&#8221; renaming programmers&#8217; work &#8220;producers&#8221; and &#8220;properties&#8221; to dodge Microsoft&#8217;s attention, and let product managers and designers run the show while programmers just implemented. Google, at the same 500-person size, still asked engineers &#8220;what should we do?&#8221;</p><p>The lesson: any company that needs good software needs a hacker-centric culture, not just ones that call themselves technology companies. Bad programmers compound, since good ones won&#8217;t work alongside them, and there&#8217;s no recorded recovery once that spiral starts.<br>Duration: 12min, Publish Date: Aug 2010, Post: <a href="https://www.paulgraham.com/yahoo.html">paulgraham.com/yahoo.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;cbf39add-7d01-45da-9c40-73081f123c1f&quot;,&quot;duration&quot;:700.8914,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Ramen Profitable</h3><p>Ramen profitable means a startup earns just enough to cover the founders&#8217; living expenses, not enough to count as a real business. That distinction matters because it removes the need to raise money to survive.</p><p>A hardware company might spend $50 million over five years before turning a profit, and that profit signals real success. A startup profitable on $3000 a month after two months, run by two 25 year olds living cheaply, signals nothing about scale, but shares the same freedom from investors. That freedom pays off four ways: better terms since investors can&#8217;t stall you into desperation, more investor interest since it proves people will pay, morale since the future flips from default-dead to default-alive, and no lost months of productivity spent thinking about a raise instead of the product, the way Y Combinator itself found when raising its own money.</p><p>It does not mean bootstrapping forever, and it can tip into disguised consulting if the revenue never becomes a scalable product. Google started this way, licensing search to Yahoo before building its real business.<br>Duration: 11min, Publish Date: Jul 2009, Post: <a href="https://www.paulgraham.com/ramenprofitable.html">paulgraham.com/ramenprofitable.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;819f5bd3-f638-4882-968b-ba6757a2cb4d&quot;,&quot;duration&quot;:640.28735,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Start Google</h3><p>Starting your own company is the way to get really rich, and you can start preparing for it at 15, before you have any idea or cofounders. Nearly everyone on the published lists of the richest people got there by starting a company, not by working for one.</p><p>Getting good at technology comes from working on your own projects, not from classes: Mark Zuckerberg built the Harvard facebook overnight because he was a programmer who noticed the university hadn&#8217;t gotten one online. Steve Wozniak just wanted his own computer; Larry and Sergey just wanted better search results than &#8220;every page with the word rugby.&#8221; Ideas come the same way, from noticing broken things once you&#8217;re good enough to fix them, and cofounders come from working alongside people, which is why university matters: not its prestige, but the difficulty of getting in.</p><p>The advice for someone 14 or 15 comes down to two things: build stuff, for yourself and your friends, and do well enough in school to get into a good university.<br>Duration: 15min, Publish Date: Mar 2024, Post: <a href="https://www.paulgraham.com/google.html">paulgraham.com/google.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f9e741bf-2edf-4e9b-b44b-422ddd94c633&quot;,&quot;duration&quot;:917.44653,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What Microsoft Is this the Altair Basic of?</h3><p>A startup idea that sounds lame at launch is often the strongest signal of a big company forming. Practically every huge company looked wrong at first: a Basic interpreter for the Altair, strangers renting airbeds, a site for college students to stalk each other, a single-board computer that used a TV as a monitor, one more search engine among ten that were all de-emphasizing search.</p><p>Founders rarely know why their own idea is promising; instinct pulls them toward something the market is missing before they can explain it. The test is to ask &#8220;what Microsoft is this the Altair Basic of.&#8221; Sometimes the answer doesn&#8217;t come, sometimes there are multiple answers of wildly different sizes, as with a startup that could grow into three distinct Microsofts.</p><p>Since nobody can predict how big any of those paths gets, the advice is to chase whichever one feels most exciting right now, on the strength of the instinct that produced the idea in the first place.<br>Duration: 2min, Publish Date: Feb 2015, Post: <a href="https://www.paulgraham.com/altair.html">paulgraham.com/altair.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;5fa6a61f-92a4-4f81-a313-57235132d6bc&quot;,&quot;duration&quot;:136.17633,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The 18 Mistakes That Kill Startups</h3><p>Startups almost never die from one dramatic mistake. They die from not building something people want, and eighteen specific habits funnel founders into that outcome.</p><p>Single founders lack the friends who&#8217;d talk them out of bad calls and the esprit de corps that survives low points; Y Combinator sees this pattern in a fifth of founder splits. Bad platforms kill quietly: Hotmail stayed on FreeBSD rather than Windows, and PayPal&#8217;s near-switch to Windows would have cut performance to 1% of Unix. Raising VC money changes a company physically: it moves to an office, hires employees over founders, and locks in a direction, while investors like Google&#8217;s early board can still fire a Steve Jobs. Google and YouTube both won by building the product first and worrying about revenue later; YouTube&#8217;s founders got $1.6 billion for lessons Google could have bought for $10 million eighteen months earlier.</p><p>This is aimed at people about to start a company, not people running one: a checklist of ways the whole effort can fail before it gets the chance to succeed.<br>Duration: 29min, Publish Date: Oct 2006, Post: <a href="https://www.paulgraham.com/startupmistakes.html">paulgraham.com/startupmistakes.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;80cc7833-0add-47b6-9631-4ea02f8e1d71&quot;,&quot;duration&quot;:1718.5698,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Change Your Name</h3><p>If your startup is named X and someone else owns x.com, the fix is to change the name, not to work around it.</p><p>Not having the matching domain signals weakness: a marginal domain reads as a marginal company, while owning it signals strength even when it has no bearing on the business, as with Stripe. Founders resist changing course for two reasons: attachment to the name as identity, and the belief there&#8217;s no better option, both false. Naming is a separate skill from founding one; in 20-minute office hours, a good name turned up 80% of the time. Almost any non-bad word or word pair works, and enough such domains sit cheap or unregistered to make a shortlist worth buying.</p><p>100% of the top 20 YC companies by valuation hold the .com of their name, 94% of the top 50, but only 66% of the current batch. That gap is a problem fixable in a couple of days, for anyone willing to admit the name isn&#8217;t sacred.<br>Duration: 4min, Publish Date: Aug 2015, Post: <a href="https://www.paulgraham.com/name.html">paulgraham.com/name.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f43c517d-4f7a-4900-8171-68b88ce5a454&quot;,&quot;duration&quot;:282.0702,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Ideas for Startups</h3><p>Coming up with startup ideas feels hard mainly because people think an idea has to already be a million dollar idea. It doesn&#8217;t: most startups end up nothing like their initial idea, so the real value of that first idea is the process of finding out it&#8217;s broken.</p><p>Treat the idea as a question, not a blueprint, and it survives being wrong as long as it leads somewhere. Two ingredients feed the questions: exposure to new technology and the right friends, which is why universities and grad school produce so many founders, and why a coding job at a big company doesn&#8217;t. Spam filtering shows the other half: in 2002 everyone tolerated spam or trusted existing heuristic filters, and a simple statistical classifier solved it because nobody had actually tried.</p><p>Useful for anyone stuck waiting for a idea to strike, and for founders deciding whether to sit down and brainstorm or just build things with friends and see what breaks.<br>Duration: 21min, Publish Date: Oct 2005, Post: <a href="https://www.paulgraham.com/ideas.html">paulgraham.com/ideas.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;a4395620-6e32-48f0-80f9-079e136f3706&quot;,&quot;duration&quot;:1274.5404,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Don&#8217;t Talk to Corp Dev</h3><p>Corp dev is the group inside a company whose job is to buy other companies. Talking to them makes sense in exactly two situations: the company is dying, so there&#8217;s nothing to lose, or it&#8217;s doing so well that any offer will have to be high and a slow walk gets a quick brush-off.</p><p>The trap catches companies in between, especially ones under a year old growing fast but not yet big. Corp dev opens with a lowball number to test resolve, then drags the process out for months, and even a signed price can get halved later when &#8220;the boss vetoes it.&#8221; A Google contact, asked what happened to &#8220;Don&#8217;t be Evil,&#8221; said corp dev never got the memo. The pull works because a flattering approach and a possible high number make a distraction feel like due diligence.</p><p>The fix is Rockefeller&#8217;s trick against his alcoholic grandfather&#8217;s fate: never take the first drink. Don&#8217;t take the first meeting unless the answer to &#8220;do we want to sell right now&#8221; is yes.<br>Duration: 7min, Publish Date: Jan 2015, Post: <a href="https://www.paulgraham.com/corpdev.html">paulgraham.com/corpdev.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;4e5c5863-dc88-4876-adaa-a3f0f4eda82b&quot;,&quot;duration&quot;:450.95184,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Mean People Fail</h3><p>Meanness and success rarely travel together. Among startup founders, programmers and professors, the most successful people are almost never mean; meanness looks common only because the internet finally lets everyone publish it.</p><p>Being mean makes you stupid: fights force you to think in tricks that work once, not ideas that generalize, so your brain spins without traction. Mean founders also can&#8217;t hire the best people, who have other options; and the ones who keep going past an acquisition offer are usually driven by wanting to improve the world, not by money. Historically success meant winning zero-sum fights over scarce resources, from nomads driving out hunter-gatherers to Gilded Age railroad men. Archimedes shows the older pattern: winning by ideas, killed anyway by a Roman soldier. What is changing is that new-idea games, once confined to mathematicians and writers, are spreading into the wider economy.</p><p>For anyone building something, an argument that meanness is a competitive disadvantage now, not just a moral one.<br>Duration: 5min, Publish Date: Nov 2014, Post: <a href="https://www.paulgraham.com/mean.html">paulgraham.com/mean.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;463c3889-71ff-4ccf-805f-755c8d76afeb&quot;,&quot;duration&quot;:438.15182,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Relentlessly Resourceful</h3><p>A good startup founder comes down to two words: relentlessly resourceful. Relentless alone isn&#8217;t enough, because the obstacles in an interesting domain are novel; you don&#8217;t know in advance whether you&#8217;re plowing through foam or granite, so you have to keep trying new approaches rather than just pushing harder.</p><p>This isn&#8217;t the general recipe for success. Writing and painting call for active curiosity instead, since the obstacle there is your own obtuseness, not something external. After four years of trying to teach the quality to people, many, though not all, turned out to have a latent capacity for it, especially those who&#8217;d spent their whole lives under some authority&#8217;s thumb.</p><p>The test doubles as a filter: ask whether you&#8217;re relentlessly resourceful before starting a startup, and ask it of anyone you&#8217;d take on as a cofounder. It also bounds how many startups can exist at all, since the limit isn&#8217;t economic, it&#8217;s the size of the pool of people built this way.<br>Duration: 6min, Publish Date: Mar 2009, Post: <a href="https://www.paulgraham.com/relres.html">paulgraham.com/relres.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9af5a9cc-1629-4f0b-b668-9d6311e41966&quot;,&quot;duration&quot;:372.4539,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Hardest Lessons for Startups to Learn</h3><p>A startup should get a minimal version 1 out fast, then improve it constantly based on how users actually respond. Speed of iteration matters more than where the product currently stands.</p><p>Wufoo released its form-builder before the underlying database was ready; 83,000 people showed up anyway, and Linux users complaining about Flash usage led to a rewrite that wouldn&#8217;t have happened otherwise. Determination, not intelligence, is named the key trait in founders: Microsoft, Yahoo, and Google were all started by dropouts, not professors, and VCs who chase eminent academics are backing the wrong quality. Fear other unknown startups, not Google, and treat every &#8220;we want to invest&#8221; or &#8220;we want to acquire you&#8221; as something that won&#8217;t happen until it does.</p><p>This covers release strategy, competitive fear, deal-making psychology, and the case that a startup is best understood as a way to compress a lifetime of earning a living into a few intense years.<br>Duration: 26min, Publish Date: Apr 2006, Post: <a href="https://www.paulgraham.com/startuplessons.html">paulgraham.com/startuplessons.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2c7e5d19-53aa-44d5-accd-ec0fb608b9c3&quot;,&quot;duration&quot;:1577.0122,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Ronco Principle</h3><p>Ron Conway has invested in more top Silicon Valley startups than any other angel or VC, and he did it by being good, not by seeming good. Referrals built the position: Google, Facebook, and a Twitter introduction that came straight from Evan Williams. Founders send him deals because he has never been caught treating anyone badly.</p><p>That pattern holds across investors generally: plot benevolence against returns and the line trends up, not down. Two forces make it hold. Startup dealings are transparent now, so mistreating a founder gets back to other founders fast, and Y Combinator&#8217;s cross-portfolio view makes investor behavior even harder to hide. And the world moves too fast to fake it selectively: the college kid you dismiss today might run the hottest startup in two years, so the only workable strategy is treating everyone well.</p><p>The reach goes past startups. Any world getting more connected and less predictable is heading toward the same rule: it becomes too costly to seem good without being good.<br>Duration: 4min, Publish Date: Jan 2015, Post: <a href="https://www.paulgraham.com/ronco.html">paulgraham.com/ronco.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d2808427-acee-4063-87ee-a1dd22ebaa71&quot;,&quot;duration&quot;:224.26123,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What We Look for in Founders</h3><p>Determination matters more than intelligence in startup founders, as long as founders clear a basic bar of smarts. Founders hit constant obstacles and can&#8217;t get demoralized. But raw stubbornness needs flexibility too, the willingness to change the plan while staying determined to get downfield.</p><p>Bill Clerico of WePay kept calling bureaucratic partners until they gave in. Daniel Gross of Greplin dropped his original ecommerce idea, tried two more, and landed on Greplin days before Demo Day. Airbnb looked too crazy to fund until its founders described selling Obama and McCain branded cereal boxes to pay rent. Sam Altman&#8217;s suggested application question, asking about a time someone hacked a system to their advantage, became one of the most useful signals in reviewing founders.</p><p>Also cited: imagination that produces ideas at the right level of craziness, a naughty streak that ignores irrelevant rules, and a close, resilient friendship between co-founders, since startups pull apart any relationship that isn&#8217;t strong.<br>Duration: 4min, Publish Date: Oct 2010, Post: <a href="https://www.paulgraham.com/founders.html">paulgraham.com/founders.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9302d4bd-780c-435b-b9ef-883e3eb1438a&quot;,&quot;duration&quot;:287.11185,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>A Student&#8217;s Guide to Startups</h3><p>Starting a startup is becoming a real third option alongside a job or grad school, and it could become as common as grad school once was. Undergrads have the technical skill for it, but graduation itself changes something: once you leave school, a startup reads as your occupation rather than a summer project, so peer judgment pushes you to make it work.</p><p>The best age turns out to be the mid-twenties, not younger. Young founders gain stamina, poverty, rootlessness, and ignorance: Robert Morris and Paul Graham lived like 23 year olds while building Viaweb, charging $300 a month, an order of magnitude below the market. Sam Altman started Loopt after his sophomore year and became the exception, not the rule; Google, by contrast, produces zero startup founders because it&#8217;s too comfortable to leave.</p><p>This is for CS majors weighing a startup against a job or grad school, especially anyone hunting for a co-founder: school is named as the best place to find one, before classmates get tied down by mortgages and jobs.<br>Duration: 35min, Publish Date: Oct 2006, Post: <a href="https://www.paulgraham.com/mit.html">paulgraham.com/mit.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9a2f7824-9f78-451c-a3d3-26b9b020e1f0&quot;,&quot;duration&quot;:2100.271,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Be Good</h3><p>A startup should aim to make something people want and not worry about revenue at first, which is basically the definition of a charity. Businesses that behave like nonprofits early on tend to become the most valuable companies.</p><p>Craigslist runs on a tiny staff and stays upwind of revenue it could easily take. Google ran ad-free for over a year, indistinguishable from a nonprofit indexing the web. Early Microsoft cut hardware prices by breaking IBM&#8217;s PC monopoly, and its stock rose like Google&#8217;s until it started treating users badly and went flat for years. Being good also works mechanically: it keeps founders working through the low points (Blogger&#8217;s Evan Williams alone in the office, still hosting thousands of blogs), it draws in investors, customers and the best hackers, and it gives 57 surviving Y Combinator startups a stateless rule for every hard decision: do whatever&#8217;s best for your users.</p><p>For anyone running a startup and drowning in decisions, this hands over a working compass rather than a slogan.<br>Duration: 15min, Publish Date: Apr 2008, Post: <a href="https://www.paulgraham.com/good.html">paulgraham.com/good.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;12e8f688-dff3-4bcf-9b7c-d42d265f1bfb&quot;,&quot;duration&quot;:906.24,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Before the Startup</h3><p>Startups don&#8217;t work the way instinct predicts, and the mistakes founders make come from trusting instincts built for school and big companies instead. Y Combinator&#8217;s own function, joked about internally, was to tell founders things they&#8217;d ignore and then hear &#8220;I wish we&#8217;d listened&#8221; a year later.</p><p>Domain expertise beats startup expertise: Mark Zuckerberg succeeded as a &#8220;complete noob&#8221; at startups because he understood his users. Gaming the system, the trick that works in school and at big companies, stops working here; there&#8217;s no boss to impress, only users deciding if the product does what they want. Voice-over-IP, Airbnb, and Google all trace back to founders solving a real problem out of curiosity, not a business plan.</p><p>The advice for college students specifically: don&#8217;t start a startup at 20, since success then forecloses the &#8220;breadth-first&#8221; exploration years that people like Darwin (age 22, HMS Beagle) got to have. Learn things that matter, work with people you respect, and let the idea arrive as a side project.<br>Duration: 25min, Publish Date: Oct 2014, Post: <a href="https://www.paulgraham.com/before.html">paulgraham.com/before.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;56e7ffbb-92cd-42dc-90bd-681dacb2ca3f&quot;,&quot;duration&quot;:1517.3485,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Can You Buy a Silicon Valley? Maybe.</h3><p>A city cannot copy Silicon Valley by funding startups the way Y Combinator does. Seed-stage startups are mobile: they take the money and move wherever the next round comes from. To build a local hub you need startups that put down roots, and that only happens with enough money that they never need to leave.</p><p>That price is at least half a million dollars per startup, twenty times a $15-20k YC check; Wufoo rooted itself in Tampa on $118k, but that&#8217;s an outlier. At a million each, a billion dollars buys a thousand startups and, within five years, a self-sustaining scene, enough that VCs start opening local offices instead of demanding relocation. The harder problem is picking which thousand: local VC funds look impressive to city officials but fail at exactly the skill that matters, so the proposed shortcut is offering relocation money to startups already backed by well-known Silicon Valley angels.</p><p>This is a thought experiment in civic economics, not a call to action: a plan any city, or any rich private citizen, could test with thirty startups and a million dollars each before betting the stadium money on it.<br>Duration: 10min, Publish Date: Feb 2009, Post: <a href="https://www.paulgraham.com/maybe.html">paulgraham.com/maybe.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;df408ea3-40fd-4df9-8ffa-2a9817c0dc7b&quot;,&quot;duration&quot;:614.7657,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Female Founders</h3><p>Y Combinator funds more female founders than VCs do, 16 of 68 companies in the current batch, 24%, up from 9% two years ago and nearly twice the industry&#8217;s 13% of series A rounds. That happened through action, not advocacy: fund founders VCs overlook, then help them beat the bias they meet elsewhere, the same approach used earlier for young founders.</p><p>Adora Cheung&#8217;s Homejoy couldn&#8217;t find a VC to lead its series A despite fast growth; a tweeted revenue graph fixed that, because steep enough growth gets funded regardless of who&#8217;s asking. Getting to parity depends on the pipeline of female programmers, still far from 50%, so the leverage point sits earlier: access to computers and, more, examples of people who&#8217;ve done it, the reason Stanford produces more startups than Yale.</p><p>This lays out a theory of where bias in startup funding actually breaks, and where fixing the founder pipeline would need to start.<br>Duration: 12min, Publish Date: Jan 2014, Post: <a href="https://www.paulgraham.com/ff.html">paulgraham.com/ff.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;8e7565ba-c2ba-476f-ac97-5d27749151ed&quot;,&quot;duration&quot;:701.59674,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Five Founders</h3><p>Five founders shaped how startups think, ranked by influence rather than fame. Steve Jobs made design central to a company&#8217;s identity, staying culturally relevant for 30 years with products people anticipate like new novels. TJ Rodgers, less famous but Silicon Valley&#8217;s best writer among CEOs, taught a candid, pragmatic mode of thinking, crystallized in his essay &#8220;High Technology Innovation: Free Markets or Government Subsidies?&#8221;</p><p>Larry and Sergey tested a hypothesis at Google: hire the smartest hackers, give them a measurable problem, and the rest resolves itself. Paul Buchheit built GMail, prototyped AdSense, wrote &#8220;Don&#8217;t be evil,&#8221; and argued that a small number of users who love you beats a large number who just like you. Sam Altman showed that a few people have enough will to get whatever they want, regardless of the odds.</p><p>This works as a quick primer on which people and phrases recur in startup advice, useful for founders or investors who want the reference points behind them.<br>Duration: 4min, Publish Date: Apr 2009, Post: <a href="https://www.paulgraham.com/5founders.html">paulgraham.com/5founders.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d418f91f-f2b9-4527-b200-6422b3a04624&quot;,&quot;duration&quot;:286.85062,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Founder Control</h3><p>Founders can keep majority control of the board through a series A. Ten years ago that was rare: the standard board was two founders, two VCs, one independent, and founders lost their majority either way. Mark Zuckerberg kept board control of Facebook through the series A and still has it; Mark Pincus did the same at Zynga.</p><p>Board control is not the same as total control; VCs still hold vetoes over big decisions like a sale, and votes are usually unanimous because the losing side backs down before the vote. But when opinions split, whoever holds the majority tends to prevail on what counts as the shareholders&#8217; interest. A dozen YC-funded companies reported founders keeping board majorities after their A round, and VCs often resist conceding board seats mainly because they don&#8217;t want to look beaten in front of their partners, not because they care about the outcome itself.</p><p>This traces a shift already underway and predicts it will become the norm within a year, since the startups able to hold board control tend to be the ones that set the terms other founders and VCs follow.<br>Duration: 4min, Publish Date: Dec 2010, Post: <a href="https://www.paulgraham.com/control.html">paulgraham.com/control.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;6ae357b0-917c-4931-a9f2-1b94a9df79e3&quot;,&quot;duration&quot;:267.78122,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Founder Mode</h3><p>Airbnb&#8217;s free cash flow margin is now among the best in Silicon Valley, and Brian Chesky got there by rejecting the advice everyone gives growing founders: hire good people, give them room, stay out of the details. Followed straight, that advice nearly wrecked the company.</p><p>Running a company you founded is different from running one you were hired to manage. Chesky rebuilt his approach by studying Steve Jobs, who ran an annual retreat at Apple for the 100 people he considered most important, regardless of where they sat on the org chart, and who took skip-level meetings for granted. Founder after founder at a recent YC event described the same pattern: conventional scaling advice damaged their companies, and going around it fixed things.</p><p>There&#8217;s no book on this yet, no business-school course. What&#8217;s collected here are scattered examples of founders improvising their way past bad advice, offered as a first sketch of something not yet named.<br>Duration: 7min, Publish Date: Sep 2024, Post: <a href="https://www.paulgraham.com/foundermode.html">paulgraham.com/foundermode.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;09b09c91-924c-4f73-abf6-637df595a142&quot;,&quot;duration&quot;:435.72244,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Founders&#8217; Accents</h3><p>Founders with accents so strong that people can&#8217;t understand them tend to run companies that do badly. This is not about accent as a cultural signal; plenty of Silicon Valley&#8217;s most successful founders speak with heavy accents. The problem is comprehension, not origin.</p><p>Ranking every YC company by valuation, the CEOs with strong foreign accents cluster around 100th place and below. Demo Day pitches, at two minutes thirty seconds, get memorized phoneme by phoneme, so they don&#8217;t expose the problem; office hours do, where subtle points get lost and phone calls degrade communication further, which is why YC requires founders to relocate to Silicon Valley. A founder is always selling, to employees, investors, and press who start out skeptical and won&#8217;t work to understand you.</p><p>The advice that follows: make yourself easy to understand, because startup ideas already sit close enough to bad ideas that any added friction sinks them. Aimed at founders coming to Silicon Valley from abroad, and at the entrepreneurship programs preparing them.<br>Duration: 4min, Publish Date: Aug 2013, Post: <a href="https://www.paulgraham.com/accents.html">paulgraham.com/accents.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;103fe86e-b7e2-4121-a4c2-042e7a96224d&quot;,&quot;duration&quot;:268.98285,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Frighteningly Ambitious Startup Ideas</h3><p>The biggest startup ideas are the ones that scare you off, and that fear is exactly why they&#8217;re worth naming. A new search engine, a replacement for email, a replacement for universities, internet drama delivered outside cable, the next Steve Jobs, a compiler that parallelizes code automatically, and ongoing medical diagnosis all fit the same test: hard enough to feel impossible, valuable enough to build a billion-dollar company around.</p><p>Each case comes with its own evidence: Google&#8217;s search results getting cluttered, GMail slow enough that $1000 a month for a fast replacement would be reasonable, Bill Clinton learning his arteries were 90% blocked only after symptoms appeared, Facebook starting with just Harvard undergrads before becoming the universal site.</p><p>The advice for approaching any of these: start small and specific, like a Basic interpreter for a machine with a few thousand Altair owners, and expand outward rather than announcing the big goal upfront.<br>Duration: 21min, Publish Date: Mar 2012, Post: <a href="https://www.paulgraham.com/ambitious.html">paulgraham.com/ambitious.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f973663a-ef5f-4ad1-a666-42528c356acb&quot;,&quot;duration&quot;:1272.2938,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Hiring is Obsolete</h3><p>Undergrads are undervalued, and the cost of starting a startup has dropped so low that the main expense is food and rent. Ten thousand dollars and a willingness to live on ramen is enough seed funding to test whether a 20 year old can build something people want.</p><p>Big companies buy startups for the team as much as the technology, often for two or three million dollars six months in, essentially a hiring bonus. Yahoo, Google and Microsoft were all founded by 24 year olds; Google&#8217;s own founders held off a year before accepting a CEO the VCs wanted. Nine of ten startups fail, but the one that works pays more than ten times an ordinary salary, and a failed attempt at 22 doesn&#8217;t hurt you: Yahoo&#8217;s Zod Nazem said he&#8217;d rather hire the candidate whose startup tanked.</p><p>This is aimed at ambitious college students and grad students weighing a startup against a first job, with grad school floated as a reasonable launch pad in the meantime.<br>Duration: 26min, Publish Date: May 2005, Post: <a href="https://www.paulgraham.com/hiring.html">paulgraham.com/hiring.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;c5a02761-c867-4b23-8945-e0382363ad66&quot;,&quot;duration&quot;:1554.129,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How Not to Die</h3><p>A 50 percent success rate for funded startups means half the founders get rich and half get nothing. The only lever that moves a company between those outcomes is refusing to die.</p><p>Y Combinator&#8217;s own track record backs this: of roughly ten startups that failed out of five funding cycles, the warning sign was always silence, not a dramatic collapse. Founders who kept shipping and staying in touch survived; official causes of death (running out of money, a co-founder bailing) mask the real one, demoralization. Blogger and Delicious took years but grew from a small core of fanatic users into successes; Octopart&#8217;s founder dropped out of grad school after a Newsweek profile made failure too humiliating to accept, and stopped being able to quit.</p><p>This is aimed straight at founders mid-startup, worried they&#8217;re failing because nothing they tried worked yet. The advice is blunt: don&#8217;t add a fallback like grad school, find the few users who love you, and keep typing.<br>Duration: 10min, Publish Date: Aug 2007, Post: <a href="https://www.paulgraham.com/die.html">paulgraham.com/die.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2d0e6684-32d0-4540-afcc-bd5ef41e3d71&quot;,&quot;duration&quot;:627.5396,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Start a Startup</h3><p>Getting rich from a startup is doable, not brilliant. Three things determine it: start with good people, build something customers want, spend as little money as possible. Most failures trace to one of those three, not to a missing idea.</p><p>Google&#8217;s plan was a search site that didn&#8217;t suck: index more of the web, rank by links, keep pages clean. That alone brought in a billion dollars a year. Viaweb grew slowly, hit 70 users by the end of 1996, and used that year to learn online commerce cold while competitors chased brand and headcount. Warren Buffett aside, only 5 of the Forbes 400&#8217;s top 50 hold MBAs.</p><p>For anyone weighing a startup against a salaried career: the math, the hiring test (&#8221;could you call this person an animal&#8221;), and the case for renting an apartment over an office.<br>Duration: 53min, Publish Date: Mar 2005, Post: <a href="https://www.paulgraham.com/start.html">paulgraham.com/start.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9638fb66-81b1-4b7b-a612-96cebc8b0bd7&quot;,&quot;duration&quot;:3158.2825,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Learning from Founders</h3><p>Startups are most productive in their earliest phase, when Apple was just Steve Jobs and Steve Wozniak. The messiest-looking stretch of a company outproduces the buttoned-up version that comes later.</p><p>Business dresses itself up in suits, conference tables and Powerpoint, and that effort makes organizations worse, not better, the same way bolting fake spoilers onto a car slows it down; the fastest quarter mile came from a magazine stripping a car of everything the manufacturer added to make it look fast. Real programming happened in a towel at 2am in a room full of junk, not from well-dressed people at clean desks during office hours, and even founders who lived this often felt like impostors for not looking the part.</p><p>Founders at Work exists to show that first year to people who never get to see it: investors, executives, and anyone trying to tell what real productivity looks like versus what merely looks professional.<br>Duration: 5min, Publish Date: Jan 2007, Post: <a href="https://www.paulgraham.com/foundersatwork.html">paulgraham.com/foundersatwork.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;0a9211b0-1d40-4dbd-a3ac-7fc0d8c702a6&quot;,&quot;duration&quot;:315.19348,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Microsoft is Dead</h3><p>Microsoft&#8217;s death happened years before anyone noticed. It ran the software world for nearly 20 years starting in the late 1980s, inheriting the monopoly IBM had held since the 1950s. By 2005, four things killed it at once.</p><p>Google took the lead in 2005, not at its August 2004 IPO; Gmail proved it could do more than search, and showed what Ajax could do on the web. Microsoft had built the key piece, XMLHttpRequest, for Outlook in the late 90s without grasping its use elsewhere, then fought Javascript while open source libraries grew over Explorer&#8217;s bugs &#8220;like a tree over barbed wire.&#8221; Broadband made the desktop optional, and OS X brought Apple back so completely that Y Combinator&#8217;s founders and Startup School&#8217;s audience all carried Macs.</p><p>Microsoft still has the cash to buy every good &#8220;Web 2.0&#8221; startup for less than Facebook alone would cost. It won&#8217;t, because it still thinks it can write software in house.<br>Duration: 7min, Publish Date: Apr 2007, Post: <a href="https://www.paulgraham.com/microsoft.html">paulgraham.com/microsoft.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;1dc587fc-9788-427b-9c4e-bffa13edc481&quot;,&quot;duration&quot;:490.39673,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Organic Startup Ideas</h3><p>The best startup ideas come from something you personally want built, not something you decide, from a distance, that other people need.</p><p>Woz built the Apple I because he wanted a computer; enough other people wanted one too that Apple could sell them. Bill Gates wrote the first Basic interpreter because the Altair only ran machine language. Larry and Sergey wrote early Google for themselves. Mark Zuckerberg wasn&#8217;t starting a company when he put Harvard&#8217;s paper facebook online in 2004; neither was Woz when he started the Apple I. Both looked like toys at the time, which is usually the sign an idea is being overlooked.</p><p>This favors young founders, who lack the experience to guess what strangers need but sit closest to new technology and its fresh, fixable breakage. The advice: stop asking what&#8217;s investable and start asking what&#8217;s broken in your own daily life.<br>Duration: 6min, Publish Date: Apr 2010, Post: <a href="https://www.paulgraham.com/organic.html">paulgraham.com/organic.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b1433367-cb31-42d3-bc52-34b846d25334&quot;,&quot;duration&quot;:350.90286,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Post-Medium Publishing</h3><p>Publishers of all kinds insist consumers won&#8217;t pay for content anymore, but they never really sold content in the first place. A copy of Time costs $5 for 58 pages, 8.6 cents a page; The Economist costs $7 for 86 pages, 8.1 cents a page. Better journalism costs slightly less, which only makes sense if publishers have always been marking up paper, not prose.</p><p>iTunes gets read as proof people pay for content, but it works as a tollbooth: Apple owns the channel and dings a credit card just below the threshold of attention. Software charges real money because businesses fear pirated copies and because a Photoshop user needs Photoshop in a way no one needs a particular song. Premium cable still gets paid because broadcasting isn&#8217;t publishing at all.</p><p>Two paths remain: give the work away and profit from concerts, t-shirts, or advertising, or embody it in a physical object worth owning, like a well-made book or a lush fashion magazine. Anyone trying to guess what replaces newspapers, records, and paperback publishing gets a clear test here for telling a real opportunity from a stalling tactic.<br>Duration: 10min, Publish Date: Sep 2009, Post: <a href="https://www.paulgraham.com/publishing.html">paulgraham.com/publishing.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;933f2ecd-d3d3-473d-8d7a-ede5c1fdce71&quot;,&quot;duration&quot;:651.67676,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Startups in 13 Sentences</h3><p>Startups succeed by making a small number of users love the product, not a large number merely satisfied by it.</p><p>Thirteen rules compress to one: understand your users, since that is the dimension of wealth founders control most. Paul Buchheit&#8217;s principle anchors the list; launching fast, letting the idea evolve, and offering customer service too good to scale all serve the same end, learning what users lack before scaling to satisfy them. Cheapness (Viaweb&#8217;s habit) and &#8220;ramen profitable&#8221; status buy the time to keep iterating; 20 deals falling through taught the value of ignoring deals until they close.</p><p>This is a working checklist for founders past the idea stage: what to prioritize when cash, morale, and focus are all under pressure at once.<br>Duration: 8min, Publish Date: Feb 2009, Post: <a href="https://www.paulgraham.com/13sentences.html">paulgraham.com/13sentences.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;93c9d711-9920-43e7-90a5-28f8e0bd0d00&quot;,&quot;duration&quot;:533.3943,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Airbnbs</h3><p>Airbnb almost died before it worked. Brian Chesky, Joe Gebbia, and Nate Blecharczyk spent a year with no growth, funding the company on a binder full of maxed-out credit cards, and had agreed that Y Combinator was their last shot.</p><p>What kept them going was a taste of the thing itself: renting airbeds during a design conference, they and their first three guests all had a good time, proof of a new way to travel and a new way to pay rent. During YC they chased ramen profitability, $4000 a month taped to their bathroom mirror, by focusing entirely on New York City, visiting hosts in person and shooting their listings with a rented camera. Fees went from $460 to $897 to $1428 across three weeks in February 2009, in the middle of the worst recession in decades.</p><p>It reads as a case study in founder intensity: taking notes in every meeting, implementing suggestions before the next one, refusing to quit an idea that investors had already walked out on.<br>Duration: 6min, Publish Date: Dec 2020, Post: <a href="https://www.paulgraham.com/airbnbs.html">paulgraham.com/airbnbs.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;ac30f497-b0cd-4721-817e-39fa39ee0716&quot;,&quot;duration&quot;:402.6253,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Cliffs Notes - Microsoft is Dead</h3><p>Microsoft being dead never meant going out of business. It meant people building new technology no longer had to think about them, the way nobody building a startup worries about SAP even though SAP makes plenty of money.</p><p>Technology companies work differently from actors or pop stars. A pop star who stops mattering can still be broke later or make a comeback; a technology company almost never comes back once it crosses into irrelevance, the way IBM did before it. Relevance can lead revenue by five or ten years, so a company can be called dead long before its balance sheet shows any trouble.</p><p>Calling Microsoft dead first meant risking being wrong: if Microsoft somehow turned itself back into something startups had to worry about, the call would look foolish. That risk was accepted deliberately, since being first to say it was the point.<br>Duration: 2min, Publish Date: Apr 2007, Post: <a href="https://www.paulgraham.com/cliffsnotes.html">paulgraham.com/cliffsnotes.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;06df180c-1f07-4d0c-a966-0662b452040f&quot;,&quot;duration&quot;:137.14285,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Fatal Pinch</h3><p>Startups usually die from a specific trap: several months of runway, heavy monthly losses, flat or weak revenue growth, and a plan to close the gap with a new funding round. That plan fails more often than founders expect, because three forces stack against them the second time around: spending is higher than at the first raise, investors hold later-stage companies to higher standards, and a company that hasn&#8217;t grown now reads as a failure by default.</p><p>The trap is self-reinforcing: expecting more money makes founders slack on reaching profitability, which lowers the odds of raising it. Y Combinator&#8217;s fix is to treat every round as the last one you&#8217;ll get. If you&#8217;re already in the pinch, the probability of another raise is effectively zero, leaving three moves: shut down, cut spending (mainly headcount), or raise revenue by shifting people onto sales or taking on consultingish work, precisely defined and paid upfront rather than billed by the hour.</p><p>Written for a founder watching runway shrink, with a concrete diagnostic for whether to trim headcount or chase revenue: overhired teams should cut first, small teams should sell harder.<br>Duration: 9min, Publish Date: Dec 2014, Post: <a href="https://www.paulgraham.com/pinch.html">paulgraham.com/pinch.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;87935457-dabe-43c4-8f41-254f5591f5b9&quot;,&quot;duration&quot;:558.3151,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Other Road Ahead</h3><p>Web-based software runs on a server, using the browser as the whole interface, and this will out-compete desktop software for most users.</p><p>Viaweb ran this way from 1995 and grew into Yahoo Store, with 14,000 users. No installation, no operating systems, no version numbers: three programmers shipped three to five releases a day instead of one a year, cut known bugs to under ten at any time, and got the capital cost per user down to about $5. Watching users directly, one added message about the Back button raised test-drive completion from 60% to 90% and lifted revenue growth 50%.</p><p>This favors startups over incumbents like Microsoft, since writing for servers needs no OS deals, no shelf space, and lets founders launch on under $10,000, as Viaweb did with three people in an apartment.<br>Duration: 68min, Publish Date: Sep 2001, Post: <a href="https://www.paulgraham.com/road.html">paulgraham.com/road.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;6e7c4f30-bc65-4fd6-a8f3-6421da9bddfd&quot;,&quot;duration&quot;:4077.2703,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Pooled-Risk Company Management Company</h3><p>Startup founders want two things: freedom from running the business day to day, and security against its revenue disappearing. Owning your own company gives you neither: no boss demands more than a company you depend on, and stop paying attention and the revenue stops too.</p><p>The fix already exists. A public acquisition is structurally a pooled-risk management company: it hires a manager (the acquirer) and pools your company&#8217;s fate with many others, so one dead market doesn&#8217;t sink you, the way Viaweb&#8217;s sale did for its founder. The catch is timing, not the mechanism: acquirers behave like rational risk-pooling buyers only on average, over a window of years, so you need enough runway, meaning profitability, to survive until an up cycle hits.</p><p>David Heinemeier Hansson&#8217;s advice to live off revenues isn&#8217;t wrong. It&#8217;s just not opposed to selling the company; for most founders, selling is the optimal version of exactly that plan.<br>Duration: 7min, Publish Date: Jul 2008, Post: <a href="https://www.paulgraham.com/prcmc.html">paulgraham.com/prcmc.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9a1abea4-ff6e-4617-ad18-2e6022dc85a7&quot;,&quot;duration&quot;:451.52652,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Reddits</h3><p>Steve and Alexis Huffman and Ohanian pitched a bad idea: ordering fast food by cellphone, before smartphones existed. It never launched. It still doesn&#8217;t exist 19 years later. But their curiosity and energy were enough to build a company around, so the offer became: we&#8217;ll fund you, just not that.</p><p>The replacement idea came from watching del.icio.us/popular, a list of most-saved links functioning as a de facto news feed. Reddit shipped a couple hundred lines of code, three weeks into the first YC batch, tested by Steve, Alexis, their YC batchmates, and multiple accounts per person. Its one difference from the incumbent, Slashdot, mattered: user submissions instead of editors, making it consistently fresher. Chris Slowe and Aaron Swartz joined soon after.</p><p>Reddit&#8217;s traffic grew slowly, then never stopped, surviving years of mediocre management after Steve left, because the product itself was close to unkillable. When Steve returned in 2015, growth resumed at a scale that showed what the company could do with someone who actually cared running it.<br>Duration: 6min, Publish Date: Mar 2024, Post: <a href="https://www.paulgraham.com/reddits.html">paulgraham.com/reddits.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;60b0793b-bce6-4a07-bb4f-8598109ee0b3&quot;,&quot;duration&quot;:406.6743,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Trouble with the Segway</h3><p>Segways don&#8217;t get ridden the way their inventors hoped, and the reason is simple: standing still while a machine does the work makes a rider look smug. A motorcycle rider works just as little, but sitting astride it reads as effort; standing on a Segway doesn&#8217;t.</p><p>Trevor Blackwell built two working models to test this directly: the Segwell, a homemade Segway, and the Eunicycle, a unicycle that looks pedaled but isn&#8217;t. Riding the Eunicycle to get coffee in downtown Mountain View got him smiles. Riding the Segwell got him shouted abuse from passing cars. The company itself never ran that test: flush with funding, it built in secret with focus groups instead of real users, so nobody ever yelled an insult out a car window at it.</p><p>The fix suggested here is a version ridden foot-in-front-of-foot, skateboard style, styled like a skateboard or bicycle rather than a medical device.<br>Duration: 2min, Publish Date: Jul 2009, Post: <a href="https://www.paulgraham.com/segway.html">paulgraham.com/segway.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;a130de8f-a36f-4d29-9b56-5edb104acc5b&quot;,&quot;duration&quot;:129.22775,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Web 2.0</h3><p>Web 2.0 got a real meaning by accident, arrived at through three things that are simply the web working as it was always meant to: Ajax, democracy, and not treating users badly.</p><p>Google Maps in early 2005 proved Javascript-heavy apps could feel like desktop software, and thousands of hackers built on Ajax within months, the way none ever built on Java applets. Wikipedia and Reddit show amateurs beating edited professionals once enough of them can publish and voters can filter; editing yields 95th-percentile writing, but an unedited pool large enough beats it at the top. Craigslist and iTunes show giving users more, not less, for free is what wins, while Rupert Murdoch&#8217;s $580 million for Myspace marks how far the market has cooled since the Bubble.</p><p>None of it was invented; Google just built its entire business, search, ranking, Maps, on this pattern and got there first. Worth half an hour for anyone building or investing in web products who wants a name for what&#8217;s already working around them.<br>Duration: 19min, Publish Date: Nov 2005, Post: <a href="https://www.paulgraham.com/web20.html">paulgraham.com/web20.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;0f25be34-d58e-4d43-ac19-08996f24d594&quot;,&quot;duration&quot;:1149.44,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What I&#8217;ve Learned from Users</h3><p>Startups mostly break in the same handful of ways. A few thousand companies advised over a decade produce a partner who has seen nearly every failure mode within a year or two, which is why funding many early-stage companies beats funding fewer later-stage ones: more goes wrong, faster.</p><p>That knowledge doesn&#8217;t reduce to a formula. Office hours stay one-on-one because founders misjudge which of their problems matters, or don&#8217;t see the real one at all: asked &#8220;would you use this yourself,&#8221; some say no and only then find their real problem. The summer 2012 batch broke at 80 startups because the partner pool worked as an O(n^2) match, fine at 60, unworkable a third larger; sharding partners into small groups fixed it. Founders often don&#8217;t listen anyway, because good advice sounds wrong until a year later.</p><p>Colleagues matter as much as advice. Florence in the 1490s, Bell Labs, Xerox PARC: ambitious people cluster and produce more together than alone, and YC was built to manufacture that cluster on purpose.<br>Duration: 12min, Publish Date: Sep 2022, Post: <a href="https://www.paulgraham.com/users.html">paulgraham.com/users.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;3307e518-3f83-436d-b474-db51bfd66ec7&quot;,&quot;duration&quot;:746.65796,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What Startups Are Really Like</h3><p>Founders who ran startups funded through Y Combinator reported the same surprises again and again, and the pattern is not new information, it&#8217;s how much more extreme everything is than a job prepares you for.</p><p>Cofounder relationships turn into something closer to marriage, tested harder than any coworker relationship. Emotional swings happen within hours, not weeks. Deals fall through routinely, investors often can&#8217;t even switch on the hardware they&#8217;ve funded, and luck matters more than the skill-focused world of hacking trains people to expect: Microsoft&#8217;s fate hinged on whether IBM demanded an exclusive DOS license. Persistence beats intelligence, launching the smallest possible version beats polishing, and changing the idea after talking to users beats sticking to the original plan.</p><p>The through-line: every unconscious expectation carried over from a job turns out wrong. That reframing is aimed at anyone about to start a company, or already running one and wondering if what they&#8217;re feeling is normal.<br>Duration: 28min, Publish Date: Oct 2009, Post: <a href="https://www.paulgraham.com/really.html">paulgraham.com/really.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f7fb48f9-d922-4bbc-ad8c-f8e1e98fb8cc&quot;,&quot;duration&quot;:1681.3976,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What the Bubble Got Right</h3><p>Yahoo&#8217;s stock traded at $200 with a P/E that implied $12; even its earnings were circular, since startups funded by Yahoo-driven VC money plowed that cash straight back into Yahoo ads. The crash wiped 95% of the value, yet the company that was left still cleared $8 billion after six years, built in six years.</p><p>That residue is the point: Google reached 82 million monthly users and about $3 billion in annual revenue without ever running an ad, because low switching costs let the best product win by word of mouth alone. The same forces favor 26-year-old founders over experienced management, informal dress over suits, and startups built to be sold, like Viaweb, over startups built to grow slowly.</p><p>Useful for founders and early employees weighing options, informality, or going public early, on the argument that good ideas are starting to beat good connections.<br>Duration: 22min, Publish Date: Sep 2004, Post: <a href="https://www.paulgraham.com/bubble.html">paulgraham.com/bubble.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;838727a8-a701-4723-9753-a3a6874601ac&quot;,&quot;duration&quot;:1295.9347,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why It&#8217;s Safe for Founders to Be Nice</h3><p>Nice people can win as founders, and it costs surprisingly little.</p><p>Startups grow superlinearly, so being bad at extracting money from users only scales down the Y axis, not the shape of the curve. A company making $1000 a month growing 5% a week hits $160k a month in two years; extracting only half as much per user leaves it at $80k, which is just 15 weeks behind, always, since 2 is about 1.05 to the 15th power. Growth rate matters more: shift from 5% to 6% a week while still only extracting half, and after two years you&#8217;re at $214k versus the rapacious founder&#8217;s $160k, and a year later at $4.4 million versus $2 million.</p><p>This gives founders who worry they&#8217;re too soft a concrete trade: stay generous, and put the compensating effort into growth rate instead of squeezing customers.<br>Duration: 5min, Publish Date: Aug 2015, Post: <a href="https://www.paulgraham.com/safe.html">paulgraham.com/safe.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;543654a0-ae48-4b6f-9046-63873c92bfd9&quot;,&quot;duration&quot;:292.25797,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why Startup Hubs Work</h3><p>Startup hubs don&#8217;t create success so much as prevent the default outcome, which is death. Most towns don&#8217;t kill startups; they just fail to save them from the failure that&#8217;s already baked in.</p><p>Two forces make the save possible, both driven by sheer density of startup people: an environment where starting a company reads as normal rather than as unemployment, and chance meetings that supply exactly what a startup needs at the moment it needs it. Sean Parker walking into Facebook&#8217;s path in 2004, Larry Page meeting Sergey Brin, a single lunch on University Ave turning up Charlie Cheever, Selina Tobaccowala, and half a dozen others. Y Combinator works by manufacturing that density on purpose, funding enough companies that someone in the batch usually has the one missing piece another needs.</p><p>The case is for anyone weighing whether location matters: not infrastructure or weather, but the number of people around you who&#8217;ve decided ambition here is normal.<br>Duration: 10min, Publish Date: Oct 2011, Post: <a href="https://www.paulgraham.com/hubs.html">paulgraham.com/hubs.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;8fe22137-122f-4cf7-a798-cfb6bece1a19&quot;,&quot;duration&quot;:620.5649,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why There Aren&#8217;t More Googles</h3><p>Startups rarely turn down acquisition offers, and the ones that do usually end up bigger than the offer. Google could have become nothing more than Yahoo&#8217;s or MSN&#8217;s search box; Facebook nearly sold when Yahoo lowballed it. Both stayed independent because acquirers underpriced them, not because their founders had some special mission.</p><p>The bigger bottleneck sits earlier, with VCs. Y Combinator gives startups $20k at the very start; VCs show up once a company is already succeeding with checks near $2 million. In between is a gap most YC startups fall into, wanting $250-500k, that VCs won&#8217;t fill. VCs chase consensus, so the ideas most likely to seem bad at first (the ones Howard Aiken&#8217;s &#8220;ram them down people&#8217;s throats&#8221; line describes) get turned away.</p><p>The fix proposed: VCs should make five $400k bets instead of one $2 million bet, skip the board seats, cut the diligence. For anyone deciding whether to fund or found something in that $200k-ish range, this explains why the money isn&#8217;t there yet and who&#8217;s likely to fill it.<br>Duration: 8min, Publish Date: Apr 2008, Post: <a href="https://www.paulgraham.com/googles.html">paulgraham.com/googles.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;3457351d-d3a4-441f-9093-f6f282b0a315&quot;,&quot;duration&quot;:469.44653,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why to Move to a Startup Hub</h3><p>Startups do better in Silicon Valley than anywhere else, and the same logic applies at every scale: London to Silicon Valley is the same move as a small agricultural town to London. Whatever argument excuses staying in London also excuses never leaving the small town.</p><p>Boston proves the point inside a single country. Y Combinator alternates funding cycles between Boston and Silicon Valley every six months, yet even Boston founders get told to move west. West coast investors act faster and bolder: a VC who had met a YC founder a week earlier beat out a Boston VC who had known him for years. Boston turned down Facebook before it moved west and raised money there. Silicon Valley has pulled ahead of Boston since the 1970s, bubble included.</p><p>Real exceptions get named: family disruption, immigration cost (one Canadian startup burned six months trying to move, then gave up), industry ties like entertainment favoring New York or LA, or an investor already committed to fund you where you stand.<br>Duration: 8min, Publish Date: Oct 2007, Post: <a href="https://www.paulgraham.com/startuphubs.html">paulgraham.com/startuphubs.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;fd35b4a5-2338-40ab-9f87-15254753c2a6&quot;,&quot;duration&quot;:502.38693,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why to Not Not Start a Startup</h3><p>Y Combinator&#8217;s first batch, summer 2005, put eight startups through the program; four succeeded, three by acquisition, including Reddit&#8217;s merger with Infogami, and Loopt grew strong enough to be bought &#8220;in about ten minutes&#8221; if it wanted. About half those founders got rich inside two years, against an oft-cited 10 percent success rate for startups generally.</p><p>None of the failures were traumatic. Kiko&#8217;s founders worked a full year before Google Calendar squashed them, sold their software on eBay for $250,000, and immediately started Justin.TV. Sixteen reasons people give for not starting a company get examined in turn: too young, no cofounder, no idea, family to support, fear of uncertainty, parents wanting a doctor in the family. Sam Altman, funded at 19, and the claim that 70 percent of a startup&#8217;s idea usually changes within three months anchor the argument that most of these reasons don&#8217;t hold up.</p><p>This is aimed at hackers who are unsure whether to apply, weighing a startup against a cubicle job at a place like Microsoft or Google.<br>Duration: 33min, Publish Date: Mar 2007, Post: <a href="https://www.paulgraham.com/notnot.html">paulgraham.com/notnot.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d778de77-3290-462b-9e5c-76421a6f3e2a&quot;,&quot;duration&quot;:2005.6816,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why to Start a Startup in a Bad Economy</h3><p>Startup success depends on the founders, not on economic conditions. Recessions don&#8217;t sink good companies and booms don&#8217;t save weak ones, so the calendar year is nearly irrelevant next to who&#8217;s on the team.</p><p>Technology moves independently of the stock market: Microsoft&#8217;s Basic interpreter for the Altair was exactly what 1975 needed, and waiting would have missed the window. Costs have dropped enough that running lean, the cockroach strategy, keeps a startup alive through a downturn, and customers who need to save money are actually easier to sell to. Investors get more skittish in bad times, which is the one real cost, but hackers rarely go hungry even when a startup fails.</p><p>This is aimed at anyone holding off on a startup idea until conditions improve. The advice: find the right cofounder, keep costs low, and act on the idea now rather than waiting for a better economy.<br>Duration: 6min, Publish Date: Oct 2008, Post: <a href="https://www.paulgraham.com/badeconomy.html">paulgraham.com/badeconomy.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;64442fdc-edeb-4104-8f76-72f0662e4bf8&quot;,&quot;duration&quot;:377.91348,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why TV Lost</h3><p>Facebook killed TV. Four forces decided it, three predictable: the internet is an open platform where anyone builds and the market picks winners, Moore&#8217;s Law kept expanding bandwidth, and piracy trained a generation to watch on a computer screen because Bittorrent and YouTube were simply more convenient than free. The fourth was harder to see coming: social applications. Teenagers wanted computers not for the machine itself but to reach friends, through social networks, multiplayer games, messaging.</p><p>Networks are hemmed in by local affiliates the way car companies are hemmed in by dealers and unions, so they add live shows to force synchronous viewing and call it cheaper production, without seeing that cheap live content should mean more volume, not less. Synchronicity and locality, the two pillars of broadcast, dissolve online: no reason to send everyone the same signal from a local source.</p><p>For anyone weighing whether local TV, network gatekeeping, or the broadcast model survives online distribution, this is the case for why it doesn&#8217;t, and why the networks producing live TV as a defense are solving the wrong problem.<br>Duration: 9min, Publish Date: Mar 2009, Post: <a href="https://www.paulgraham.com/convergence.html">paulgraham.com/convergence.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d6225229-5ea9-46a9-9979-fe5d65b13e06&quot;,&quot;duration&quot;:533.969,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why Twitter is a Big Deal</h3><p>Twitter is a new messaging protocol, one where you don&#8217;t specify the recipients. New protocols that actually catch on are rare: TCP/IP, SMTP, HTTP, and not much else. A protocol owned by a private company is rarer still.</p><p>Slow monetization turned into an accidental advantage. Because the founders never locked it down, Twitter feels like the older, open protocols it sits alongside; people forget a company owns it. That resemblance made it easier to spread, the way TCP/IP or SMTP spread.</p><p>This is a short, single-argument piece: one analogy, no data, no named studies. It suits anyone who wants the case for why Twitter mattered structurally, not just as a social fad, in about two minutes of reading.<br>Duration: 1min, Publish Date: Apr 2009, Post: <a href="https://www.paulgraham.com/twitter.html">paulgraham.com/twitter.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;25ab644c-2b98-442e-a208-310b82689d91&quot;,&quot;duration&quot;:57.28653,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>You Weren&#8217;t Meant to Have a Boss</h3><p>Big companies split into teams of about ten to make coordination possible, but each team above the individual is really a group of groups, so freedom shrinks the size of the whole tree, not just the group you sit in. A programmer&#8217;s job is to build new things, so this hits programmers hardest: legacy code, other teams&#8217; interfaces, and approval chains cut off most of the ideas they&#8217;d otherwise try.</p><p>Working for oneself, or for one of the first ten employees of a startup, removes that constraint, the way lions in the wild seem &#8220;ten times more alive&#8221; than the same species in a zoo. Y Combinator founders arrive looking like refugees and three months later seem taller; across more than 200 startups, YC has seen no advantage from time spent at a big company first, only the ordinary benefit of being older.</p><p>The claim runs mainly toward ambitious programmers weighing a job at Google or Microsoft against starting something of their own, and toward founders deciding how large to let their company grow.<br>Duration: 14min, Publish Date: Mar 2008, Post: <a href="https://www.paulgraham.com/boss.html">paulgraham.com/boss.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;87fe82d1-5832-4c42-8f7e-0eddfa9cb645&quot;,&quot;duration&quot;:841.3779,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><p></p><div><hr></div><p></p><h2>Work, Ambition &amp; Craft</h2><p>Whole theme: 5 hours.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;bb00bbb4-2d87-4a2a-b5a0-ed286f0f1db6&quot;,&quot;duration&quot;:19936.053,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Work Hard</h3><p>Great work is never effortless. It always takes natural ability, practice, and effort together; skip any one and you fall short of the best work.</p><p>Bill Gates took no days off in his twenties. Messi&#8217;s coaches remember his dedication before his talent. Wodehouse rewrote sentences ten or twenty times at 74. The limit on hours varies by person and task: five hours a day for hard writing or programming, all day during three years running a startup. Discipline toward externally imposed goals comes easily even to children; the harder skill is working toward goals nobody assigned you, which starts with a felt disgust at wasted time and ends with judging, hour to hour, whether you&#8217;re trying hard enough, doing well enough, and working on the right problem at all.</p><p>The test for what to work on is whether you find it interesting, not whether it looks impressive or lucrative. That test only works if you&#8217;re honest with yourself about your own motives and your own results.<br>Duration: 17min, Publish Date: Jun 2021, Post: <a href="https://www.paulgraham.com/hwh.html">paulgraham.com/hwh.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;85050838-2d38-4003-99bb-c115920cbb67&quot;,&quot;duration&quot;:1047.8499,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Do Great Work</h3><p>Ambitious work follows a repeatable shape: pick something you have both aptitude for and deep interest in, then push to the frontier of that field, notice the gaps in it, and chase the promising ones.</p><p>Curiosity does the driving. It picks the field, gets you to the frontier, spots the cracks, and explores them; the specifics come from painters, physicists, Einstein reading Maxwell&#8217;s equations, Copernicus and Darwin working in the shadow of a cherished but mistaken principle. Morale, small blocks of focused time, and a willingness to throw away and redo work matter as much as raw effort; the four steps are simple to state, hard to execute.</p><p>For anyone weighing whether their own ambition is realistic, this makes the case that ability and interest matter more than luck or permission, and that starting small and evolving beats planning in advance.<br>Duration: 63min, Publish Date: Jul 2023, Post: <a href="https://www.paulgraham.com/greatwork.html">paulgraham.com/greatwork.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;a686beb0-7007-4bde-a89c-ea12d3a2ca7e&quot;,&quot;duration&quot;:3753.6392,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Maker&#8217;s Schedule, Manager&#8217;s Schedule</h3><p>Programmers work best in half-day blocks; a single meeting can wreck the whole stretch. Managers use time in one-hour slots and treat meetings as free; makers need long, uninterrupted units, and a meeting dropped into the middle breaks the day into two pieces too small for anything hard.</p><p>Y Combinator runs on the maker&#8217;s schedule, even though every VC operates on the manager&#8217;s. Office hours solve the conflict by clustering founder meetings at the end of the day, so they compress the schedule instead of interrupting it. Back in the 90s, working a startup meant programming from dinner to 3am, then handling &#8220;business stuff&#8221; after sleeping until 11, effectively running both schedules in one day.</p><p>Speculative meetings, the &#8220;let&#8217;s grab coffee&#8221; kind, cost a manager nothing but can cost a maker half a day&#8217;s work. This lays out the tradeoff for anyone who schedules time with programmers, writers, or founders, so they can see why declining a coffee chat isn&#8217;t rudeness.<br>Duration: 6min, Publish Date: Jul 2009, Post: <a href="https://www.paulgraham.com/makersschedule.html">paulgraham.com/makersschedule.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;168a5e22-6c95-4ca8-8ed7-b48583483da4&quot;,&quot;duration&quot;:387.99673,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Other Half of &#8220;Artists Ship&#8221;</h3><p>Big companies pile up checks after disasters: a supplier goes bankrupt, so every bidder must now prove solvency. Each check has a cost nobody tallies: the best supplier who skips the bid, the good one who falls just short of a threshold set high because raising it looked free.</p><p>Joel Spolsky found software under $1000 needs no approval, but above that a committee gets involved, and vetting a committee costs vendors so much they charge $50,000 for what would otherwise sell for $5000. China restricted long trading voyages before 1400 and Europe overtook it; Sarbanes-Oxley added checks meant for General Electric and gutted the US IPO market instead. Three programmers at a startup acquired by a big company went from shipping instantly to a two-week release cycle, and said they&#8217;d trade up to half the acquisition price to get instant releases back.</p><p>The pattern applies wherever someone proposes a new check without pricing its cost, whether in a company evaluating suppliers or one weighing how much approval to put between programmers and production.<br>Duration: 8min, Publish Date: Nov 2008, Post: <a href="https://www.paulgraham.com/artistsship.html">paulgraham.com/artistsship.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2edc39cd-d423-477b-a151-a0e60cd7be40&quot;,&quot;duration&quot;:456.88162,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What to Do</h3><p>One should help people, take care of the world, and make good new things. That third principle isn&#8217;t provable, but it holds because thinking is the most impressive thing humans do, and making something is the best proof of having thought well: Newton&#8217;s physics counts, and so does a painting, since a copy of a great painting, however skilled, isn&#8217;t impressive the way the original was.</p><p>For most of history the answer to how to live was wisdom, courage, honesty, temperance, justice, upholding tradition, and serving the public interest, the same for Cicero and Confucius. That answer left out making things because the landowning class asking the question had no choice in their work; Archimedes was admired as a prodigy, not held up as a model to follow. Only in recent centuries have most people had the chance to do what he did.</p><p>Raymond Chandler&#8217;s pulp fiction and Newton&#8217;s curiosity-driven physics both show the same pattern: new work often looks unpromising or impractical at first and turns out to matter anyway.<br>Duration: 9min, Publish Date: Mar 2025, Post: <a href="https://www.paulgraham.com/do.html">paulgraham.com/do.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;e14f00cc-879c-43cf-be17-dbce4c6813fb&quot;,&quot;duration&quot;:520.54205,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Anatomy of Determination</h3><p>Determination beats intelligence as the best predictor of startup success. Founders with Bill Gates-level smarts routinely achieve nothing, while talent matters more only in purer, single-problem domains like math than in messier ones like organized crime, or startups.</p><p>Determination breaks down into willfulness balanced by discipline, aimed by ambition, like two fingers squeezing a melon seed: squeeze unevenly and it spins off sideways. Too much will and too little discipline produces wing flutter, alternating bursts of great work and nothing, which looks like bipolar disorder from outside; too little will against rising temptation lets achievement revert to the mean, the reason Shakespeare&#8217;s Caesar feared thin men. Will seems mostly inborn, discipline can be trained, and ambition rises fastest around other ambitious people.</p><p>None of this displaces liking the work itself, the third factor alongside talent and determination. Anyone sizing up their own drive, or a founder&#8217;s, gets a working model here: which piece is undersupplied, and what narrows the gap.<br>Duration: 9min, Publish Date: Sep 2009, Post: <a href="https://www.paulgraham.com/determination.html">paulgraham.com/determination.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;96da1c8b-2fb1-443b-b0e4-73cd7b352ab7&quot;,&quot;duration&quot;:546.6906,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Richard Hamming: You and Your Research</h3><p>Great work is not the product of luck or raw brainpower. It comes from working on important problems, with the courage and emotional commitment to stay on them, and the drive to put in one more hour than the next person.</p><p>Feynman, Shannon, and Bode show the pattern: repeated first-class output, not a single lucky strike. Bell Labs data backs the mechanics: Bode&#8217;s compound-interest argument on effort, Shannon&#8217;s average-random-code proof, Pfann and Clogston building confidence off one early success, and the &#8220;open door&#8221; correlation between exposure to other people&#8217;s problems and later relevance. Ego, personality defects, and closed doors quietly cap what able people produce.</p><p>This is aimed at anyone who already has the ability and wants to know what separates good output from work people still cite decades later: habits like Friday &#8220;great thoughts&#8221; time, working on problems with a real attack, and writing so the next person can build on it.<br>Duration: 67min, Publish Date: Mar 1986, Post: <a href="https://www.paulgraham.com/hamming.html">paulgraham.com/hamming.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;78afb47d-a007-4bbf-a3d9-9743df53ed13&quot;,&quot;duration&quot;:3999.2163,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What Doesn&#8217;t Seem Like Work?</h3><p>A watershed moment doesn&#8217;t announce itself; it just shows up as the point where something stops feeling like work. The heuristic: whatever seems like effort to everyone else but doesn&#8217;t to you is the thing you&#8217;re suited for.</p><p>The father&#8217;s turn came around age 12 in Pwllheli, a small Welsh seacoast town: he started working every problem in a new math textbook the day it arrived, ahead of the class, treating the problems as the reward and the chapter text as mere hints toward them. The same split shows up elsewhere: debugging, which most programmers wouldn&#8217;t volunteer for, done gladly by people who like programming; writing papers in college for friends taking classes he wasn&#8217;t enrolled in, work that was a relief for them and interesting for him.</p><p>The stranger the mismatch feels, the stronger the signal. It offers a question worth asking yourself directly, since the answer rarely surfaces on its own: what looks like work to other people but doesn&#8217;t to you?<br>Duration: 3min, Publish Date: Jan 2015, Post: <a href="https://www.paulgraham.com/work.html">paulgraham.com/work.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;51de6078-23b8-4a1c-8301-6d49c8eea8d1&quot;,&quot;duration&quot;:152.5551,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>A Project of One&#8217;s Own</h3><p>A nine year old excited to get home and write his story captures the difference between working on a project of your own and ordinary work: it&#8217;s more fun and more productive, closer to skating than walking.</p><p>School routes kids toward grades and dutiful, assigned work instead of projects that are theirs, voluntary and self-directed. At Y Combinator, grades didn&#8217;t matter for picking startups; what applicants had built on their own did. The Macintosh team, Burrell Smith, Andy Hertzfeld, Bill Atkinson, Susan Kare, worked long hours by choice, the opposite of a sweatshop. Startups and open source both pay off partly because they let skaters recruit skaters and spend all their time skating.</p><p>The real obstacle isn&#8217;t ability but confidence: fear of failure stops more good projects than overconfidence ruins. What matters is recovering the careless confidence to start, then applying adult self-awareness to keep choosing projects that are actually your own.<br>Duration: 14min, Publish Date: Jun 2021, Post: <a href="https://www.paulgraham.com/own.html">paulgraham.com/own.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d0c52025-d16b-4c5c-88e8-62fa06047916&quot;,&quot;duration&quot;:830.1976,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Cities and Ambition</h3><p>Cities send different messages to ambitious people, and those messages shape what you become far more than you&#8217;d expect. New York pushes wealth, Cambridge pushes intelligence, Silicon Valley pushes power, and where you live can matter more than raw ability.</p><p>The Milanese Leonardo makes the case: fifteenth-century Florence produced nearly every famous painter while Milan, just as large, produced none, though someone born there surely had equal talent. Cambridge now works the same way, with Harvard and MIT nearly adjacent and 20 more colleges around them, while New York&#8217;s ambitious professors stay second class until they start hedge funds. The Forbes 400 ratio of New York to California residents shows the shift directly: 1.45 in 1982, .83 by 2007.</p><p>This matters most for people who haven&#8217;t yet decided what kind of ambition they have, before college, when trial and error in a few different cities is how you find out which message fits.<br>Duration: 20min, Publish Date: May 2008, Post: <a href="https://www.paulgraham.com/cities.html">paulgraham.com/cities.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;66b2a259-e23a-4aa4-ae72-26ad820fccf6&quot;,&quot;duration&quot;:1185.5151,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Do What You Love</h3><p>Liking your work is not optional decoration; it&#8217;s the mechanism behind doing it well, and most people are talked out of it before they ever test it. Childhood teaches work equals pain, school reinforces it, and adults keep up the pretense that their jobs are enjoyable out of upper-middle-class convention, not truth.</p><p>The real traps are prestige and money, especially combined, as in corporate law or medicine. The test that cuts through both: would you do this work unpaid, taking a day job as a waiter to support it. Mathematicians pass; the gender-and-identity papers on Conrad don&#8217;t. Gino Lee&#8217;s rule, aim for work that makes your friends say wow, works better than chasing strangers&#8217; opinions.</p><p>Two paths follow from here: the organic route, gradually shaping a job toward what you like, and the two-job route, working for money to fund the real work, each with its own risks. This lays out a way to test what you actually want against what you&#8217;ve only been told to want.<br>Duration: 24min, Publish Date: Jan 2006, Post: <a href="https://www.paulgraham.com/love.html">paulgraham.com/love.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;ad88f8b4-6c90-49f5-a87f-d49f69d71c71&quot;,&quot;duration&quot;:1468.8131,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Disconnecting Distraction</h3><p>Procrastination runs on distractions, and distractions keep getting stronger. Television took fifty years of refinement to become &#8220;visual crack&#8221;: the average American now watches four hours a day, a quarter of their waking life. The internet is worse, because it still looks like work while you do it.</p><p>The danger showed up between projects, not during them, which is why it took years to notice. Rules failed too: limiting internet use to twice a day collapsed the moment real work required more. Treating the urge like a &#8220;sentient adversary&#8221; that finds any path you leave open, the fix that held was physical separation, a second laptop across the room (the one Steve Huffman wrote Reddit on) with wifi off on the main machine.</p><p>This is a personal fix, not a system: one computer for work, one for everything else, visible enough that slipping into distraction sets off its own alarm.<br>Duration: 6min, Publish Date: May 2008, Post: <a href="https://www.paulgraham.com/distraction.html">paulgraham.com/distraction.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;1e95213e-e416-4323-8dba-c03200ada5fb&quot;,&quot;duration&quot;:357.5641,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Early Work</h3><p>Fear of making something lame keeps most people from ever starting ambitious work, and it stops many who do start before they push through the ugly early stage.</p><p>That fear isn&#8217;t irrational; early versions of great projects often look bad even to their creators. Silicon Valley has developed a counter-custom: treat strange ideas from unknown people as a challenge to your imagination rather than a checklist of reasons they&#8217;ll fail. Y Combinator partners see thousands of ideas every six months and learn this the hard way, since missing the one that matters is obvious in hindsight. Working techniques include Hardy&#8217;s advice to slightly overexaggerate your subject&#8217;s importance, staying slightly overconfident, calling new work &#8220;just a sketch&#8221; or &#8220;a hack,&#8221; and surrounding yourself with colleagues on similar projects who can tell an ugly duckling from a baby swan.</p><p>This is for anyone starting something new who judges their own early work too harshly, whether a startup, a piece of software, or a proof.<br>Duration: 14min, Publish Date: Oct 2020, Post: <a href="https://www.paulgraham.com/early.html">paulgraham.com/early.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;21c69192-1075-48af-9eca-3edaa246d7f8&quot;,&quot;duration&quot;:836.28406,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Earnestness</h3><p>Jessica Livingston and Paul Graham have one word that means more than any other when they size up founders: earnest. It means both the direction and the magnitude of someone&#8217;s motives are right, they&#8217;re doing the work for its own sake and trying as hard as they can. Most people starting companies want money and fame instead, and that substitution is what separates them from the ones who win.</p><p>Earnestness looks like naivete from outside: founders plunge into problems asking &#8220;how hard can it be?&#8221;, then discover the problem was till recently insoluble. It doesn&#8217;t seem to matter in politics, crime, gambling, patent trolling, or academic fields at the bogus end, which is itself a useful filter for choosing where to work. Henry Ford is the historical marker here: business used to resemble robbery, but making money and doing intellectually interesting work have grown steadily more aligned since.</p><p>For anyone deciding where curiosity and money actually meet, and why reporters can&#8217;t believe founders when they say they care about the problem.<br>Duration: 10min, Publish Date: Dec 2020, Post: <a href="https://www.paulgraham.com/earnest.html">paulgraham.com/earnest.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b179da3a-c9f6-485d-833d-478c50307394&quot;,&quot;duration&quot;:577.09717,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Good and Bad Procrastination</h3><p>The most impressive people procrastinate constantly, just on the right things. Working on nothing, or on something less important, is bad procrastination. Working on something more important than what you&#8217;re supposed to do is good procrastination.</p><p>Small stuff is anything with zero chance of making your obituary: shaving, laundry, replying to letters. Big work needs long uninterrupted stretches and the right mood, which is why startups run best as a couple of guys in an apartment, before hires turn them interrupt-driven. Richard Hamming&#8217;s Bell Labs question sharpens the choice: what&#8217;s the best problem you could work on, and why aren&#8217;t you?</p><p>Big problems are frightening to face directly, more so than the risk of wasted time. The fix is working obliquely, tightening the angle once underway, the way a sailboat sails closer to the wind after starting. Anyone choosing between a clean desk and an ambitious project they enjoy will recognize the tradeoff here.<br>Duration: 9min, Publish Date: Dec 2005, Post: <a href="https://www.paulgraham.com/procrastination.html">paulgraham.com/procrastination.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;3f8f04c2-f5a8-4d6a-81c3-ab38d376a37e&quot;,&quot;duration&quot;:569.0253,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Lose Time and Money</h3><p>Losing a fortune usually has nothing to do with spending. Someone with ordinary tastes struggles to blow through more than a few tens of thousands of dollars before noticing; trading derivatives can lose a million in the blink of an eye, because moving money into an investment doesn&#8217;t trip the alarm that spending it does.</p><p>Time works the same way. A day spent watching TV feels wrong within two hours. A day spent answering email produces the same nothing, but no alarm fires, because it looks like work while it&#8217;s happening. New behaviors dodge self-indulgence alarms by mimicking virtuous ones, without even being fun.</p><p>The claim: build new alarms, for money and for time, since the old ones evolved for hunter-gatherers and don&#8217;t cover fake work or bad investing. Written after selling a startup in 1998 and money.<br>Duration: 4min, Publish Date: Jul 2010, Post: <a href="https://www.paulgraham.com/selfindulgence.html">paulgraham.com/selfindulgence.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;cb63c981-c010-4d01-a41f-caf75aeffe2a&quot;,&quot;duration&quot;:219.27184,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Six Principles for Making New Things</h3><p>A design method produces contempt at first sight, and that contempt is the tell that it&#8217;s working. Simple solutions to overlooked problems, delivered informally, starting with a crude version one and iterating fast: this generated the same laughing dismissal for Viaweb, Y Combinator, the essays, and Arc.</p><p>Viaweb launched with under 10,000 lines of code and no credit card processing for its first year, while VCs insisted transaction processing was what e-commerce meant; it crushed its competitors anyway. Y Combinator looked inconsequential next to series A rounds and foot-thick term sheets. Reddit&#8217;s minimal design read as no design at all, yet it solved the real problem: surfacing what&#8217;s new and staying out of the way. Cezanne and Klee are cited as painters who worked the same way.</p><p>This is a way of recognizing your own good ideas before the market agrees with you, aimed at anyone doing creative or startup work who mistakes a hostile first reaction for a verdict.<br>Duration: 7min, Publish Date: Feb 2008, Post: <a href="https://www.paulgraham.com/newthings.html">paulgraham.com/newthings.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;10ff6ffa-c0ea-4d00-91bc-0706d3cb68d8&quot;,&quot;duration&quot;:409.1559,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Superlinear Returns</h3><p>Kids and coaches teach that returns match effort put in. In business, fame, power, and knowledge, returns are superlinear instead: a product half as good gets zero customers, not half the sales.</p><p>Two mechanisms drive this: exponential growth and thresholds. Startups, bacterial cultures, and scholarship compound, doing well now makes doing well later easier, so growth rate matters more than absolute numbers, which is why Y Combinator tells founders to watch that instead. Thresholds work like a step function, a race won by a fraction of a second, an A-list with limited room in people&#8217;s heads. Fame and learning combine both. Newton&#8217;s discoveries reportedly outweighed all his contemporaries&#8217; combined.</p><p>Since 1970, organizations damped this effect by controlling resources, colleagues, and distribution; that damping has eroded, so variation in outcomes is rising for good and bad. The advice that follows: seek work that compounds, follow curiosity over prestige, take multiple shots because luck still matters, and expect this to suit the already-excellent and the young more than everyone else.<br>Duration: 25min, Publish Date: Oct 2023, Post: <a href="https://www.paulgraham.com/superlinear.html">paulgraham.com/superlinear.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;be245fe8-3aee-49ab-afa2-b276291ed23d&quot;,&quot;duration&quot;:1509.7731,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Right Kind of Stubborn</h3><p>Persistent people and obstinate people look alike from outside: both keep going after a setback. The difference sits underneath. Persistent people are attached to a goal; obstinate people are attached to their first idea about how to reach it, and that idea is usually the least informed one they&#8217;ll ever have, since it came before any real contact with the problem.</p><p>The test is what happens when you point out a flaw. The Collison brothers listen with what gets called predatory intensity, hunting for a hole in their own boat. The obstinate glaze over and repeat themselves like doctrine. Persistence turns out to need five things at once: energy, imagination, resilience, good judgement, and a goal specific enough to aim at but not so specific it rules out an adjacent discovery. Obstinacy needs none of that; kids, drunks, and fools are good at it.</p><p>Useful for anyone trying to tell, in themselves or someone they&#8217;re arguing with, whether digging in is a strength or a failure mode.<br>Duration: 12min, Publish Date: Jul 2024, Post: <a href="https://www.paulgraham.com/persistence.html">paulgraham.com/persistence.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;62f0d335-19fa-493d-a096-95577a230ea0&quot;,&quot;duration&quot;:698.5404,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Top Idea in Your Mind</h3><p>What one thinks about in the shower matters more than expected: for anything hard, there&#8217;s a kind of thinking that happens involuntarily, and it only works on whatever idea currently sits on top of the mind. Most people have exactly one top idea at a time, and everything else starves for that ambient attention.</p><p>Money and disputes are the two thoughts that push out everything else, because both force themselves to the top by their nature: raising money &#8220;becomes what you think about when you take a shower,&#8221; which is why startups stall for months once fundraising starts. Newton hit the same trap after his 1672 theory of colors, writing to Oldenburg that he&#8217;d &#8220;become a slave&#8221; to defending it against Linus&#8217;s circle, five replies and fourteen pages that cost him years of ambient thought.</p><p>The fix is indirect control: you can&#8217;t steer drifting thoughts directly, but you can choose which situations let money or disputes claim that slot, and cultivate the habit of forgetting injuries fast enough that they never get there.<br>Duration: 6min, Publish Date: Jul 2010, Post: <a href="https://www.paulgraham.com/top.html">paulgraham.com/top.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;84ceb572-c9d4-416c-9748-169e84a57796&quot;,&quot;duration&quot;:382.5894,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>When To Do What You Love</h3><p>Working on what interests you most usually costs money, since people pay for what they want, not what you want, unless what you want happens to be what pays.</p><p>Bill Gates loved not just programming but running a software company and writing for customers, a strange enough taste to be rewarded. Football works the same way if you&#8217;re good enough, and some people have a genuine intellectual interest in mispriced things, a taste close to greed but distinct from it. There&#8217;s an exception at the very top: Apple, Google, and Facebook all began as projects their founders did for fun, because the best startup ideas are outliers you&#8217;d overlook if you searched for them on purpose. If you&#8217;re unsure what you want, staying &#8220;upwind,&#8221; choosing math over economics, say, keeps future options open.</p><p>For anyone aiming to do great work, the calculation stops being complicated: interest is a necessary condition, not a sufficient one, and the answer is yes.<br>Duration: 8min, Publish Date: Sep 2024, Post: <a href="https://www.paulgraham.com/when.html">paulgraham.com/when.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;e471645d-73a4-44e1-87a0-fa3ae9361f9e&quot;,&quot;duration&quot;:498.57306,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><p></p><div><hr></div><p></p><h2>Writing &amp; Language</h2><p>Whole theme: 2 hours.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b57a5df9-3784-4572-bd98-15d0f59e28f8&quot;,&quot;duration&quot;:6654.72,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Writes and Write-Nots</h3><p>In a couple decades, few people will be able to write. Writing pervades prestigious jobs while remaining fundamentally hard, because it requires clear thinking; AI now lets anyone skip straight to the output, in school and at work, so the pressure that used to force people to learn disappears.</p><p>Eminent professors caught plagiarizing usually stole mundane boilerplate, proof they were never even halfway decent writers. Leslie Lamport&#8217;s line applies: if you&#8217;re thinking without writing, you only think you&#8217;re thinking. The result is a split into writes and write-nots, which is really a split into thinks and think-nots, the same way an industrial economy split people into those who work out and those who don&#8217;t bother getting strong.</p><p>There will still be smart people, but only those who choose to be.<br>Duration: 3min, Publish Date: Oct 2024, Post: <a href="https://www.paulgraham.com/writes.html">paulgraham.com/writes.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;0b59a213-a8f4-4a95-8422-93ed1cf587a7&quot;,&quot;duration&quot;:178.02449,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Best Essay</h3><p>The best essay tells people something true and surprising about the most important topic available, and that standard collapses into an odd conclusion: the best possible essay at any moment would describe the biggest scientific discovery it was possible to make. Darwin&#8217;s 1844 essay on natural selection counts as the best essay of that year on exactly this test.</p><p>Writing well means starting with a question you have some edge on, committing to a specific wrong or incomplete answer, then rereading strictly until the gaps force better ideas. Branches get chosen by generality and novelty, not a plan; one 17-paragraph subtree got cut here, with 5 paragraphs reattached. Timelessness splits in two: permanent importance versus staying surprising, since ideas that succeed, like Darwin&#8217;s, stop teaching us anything new. Bertrand Russell&#8217;s &#8220;trial marriage&#8221; is dull now because it won and became dating.</p><p>This is for anyone who writes to think, not to perform: the payoff is a working method, breadth from reading widely, depth from solving real problems elsewhere, and the reminder that good questions matter more than effort once the questions run out.<br>Duration: 23min, Publish Date: Mar 2024, Post: <a href="https://www.paulgraham.com/best.html">paulgraham.com/best.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;7f5e8112-ad7c-485c-9c87-5f8a3b42bfb0&quot;,&quot;duration&quot;:1387.0759,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Good Writing</h3><p>Sounding good and being right are not separate qualities in writing. Sentences that flow well are more likely to express correct ideas, because you cannot easily rewrite an awkward passage into something less true: any forced change tends to be a change for the better.</p><p>The mechanism has two parts. Rewriting to fix rhythm works like shaking a bin of objects until they pack tightly: an arbitrary constraint, like a section running one line over a page, never makes the writing worse, only better. And a smoother essay is easier for the writer to reread, 50 or 100 times over, catching what &#8220;catches&#8221; the way someone sanding wood feels for a rough spot. Liars can still write beautifully, but only by half-believing false premises first; what good rhythm guarantees is internal consistency, not truth, though the two converge when the writer is honest.</p><p>This applies only to writing that develops ideas, not writing that reports ones already worked out elsewhere, like a paper following an experiment. Useful for anyone who edits their own thinking by editing their sentences.<br>Duration: 9min, Publish Date: May 2025, Post: <a href="https://www.paulgraham.com/goodwriting.html">paulgraham.com/goodwriting.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b2b10182-2229-4d07-9245-7b61518e2282&quot;,&quot;duration&quot;:548.4669,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Writing, Briefly</h3><p>Writing well matters more than most people think, because writing does not just record ideas, it generates them. Someone who avoids writing, or writes badly, cuts themselves off from most of the ideas that writing would have produced.</p><p>The method: write a bad version fast, then rewrite it over and over, cutting anything unnecessary. Expect 80% of an essay&#8217;s ideas to arrive after you start writing, and half of the ideas you started with to turn out wrong. Read drafts aloud to catch the sentences you stumble on and the paragraphs you dread; ask friends which sentence you&#8217;ll regret most; write for a reader who won&#8217;t read as carefully as you do, the way pop songs are mixed to sound fine on a car radio. This particular piece took 67 minutes: 23 to write, 44 to rewrite.</p><p>A short, concrete checklist for anyone who writes and wants to write better, in about 30 minutes.<br>Duration: 3min, Publish Date: Mar 2005, Post: <a href="https://www.paulgraham.com/writing44.html">paulgraham.com/writing44.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f968da4a-5fba-4051-9be7-9e0a4c8ebf36&quot;,&quot;duration&quot;:162.71674,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Need to Read</h3><p>Reading teaches two things at once: what a subject is, and how to write. That second part matters because writing is not a transcript of finished thoughts, it is how new thoughts get found. A good writer discovers things mid-sentence that talking them through never surfaced.</p><p>This only kicks in for ill-defined problems. Fitting two pieces of machinery together doesn&#8217;t need prose; anything solvable formally can be solved in your head. But a messy, open-ended problem almost always yields to being written about, and someone who writes poorly will struggle to think it through at all. Writing well depends on reading well, meaning read good things and extract their meaning, not just decode the words.</p><p>Audiobooks give you the ideas but skip this: hearing prose read aloud doesn&#8217;t teach you to write it. Anyone after information alone can take a shortcut. Anyone who wants ideas can&#8217;t.<br>Duration: 2min, Publish Date: Nov 2022, Post: <a href="https://www.paulgraham.com/read.html">paulgraham.com/read.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;319d9dd3-3bcb-48eb-b4fb-37e03981f8d4&quot;,&quot;duration&quot;:143.9347,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Writing and Speaking</h3><p>Good ideas make writing good: plain words work if you know what you&#8217;re talking about. Speaking runs on the opposite logic. Ideas matter far less than delivery, and the two skills often pull against each other.</p><p>A prewritten talk divides attention between audience and script, so ad-libbing from an outline engages people better, but it caps how long you can spend on each sentence to how long it takes to say it. Rehearsing closes that gap, the way actors do, but every hour spent practicing is an hour not spent improving the content. And audiences get dumber as they get bigger: reactions spread mob-like past around ten people, so jokes and flattery start to beat substance.</p><p>None of this makes talks useless. They work as the closest thing to a conversation with someone too busy to meet you individually, and they&#8217;re better than writing at motivating people to act, for better or worse.<br>Duration: 6min, Publish Date: Mar 2012, Post: <a href="https://www.paulgraham.com/speak.html">paulgraham.com/speak.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b7a641e4-ca2a-42e2-a664-b77e4f43e378&quot;,&quot;duration&quot;:387.42203,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Write Like You Talk</h3><p>Written language and spoken language are different, and the gap makes writing worse. Complex sentences and formal words let a reader&#8217;s attention drift, and they trick the writer into believing they&#8217;ve said more than they have.</p><p>Experts talking about hard subjects use plain sentences, no more complex than when discussing lunch, because they have less to prove and can&#8217;t afford to let words get in the way of the ideas. A sentence like &#8220;the mercurial Spaniard himself declared: after Altamira, all is decadence&#8221; (from Neil Oliver&#8217;s A History of Ancient Britain) would raise eyebrows spoken aloud to a friend, yet whole books are written that way. The fix: read a draft out loud, and replace any sentence you wouldn&#8217;t actually say. For anything unfixable sentence by sentence, explain it to a friend out loud and transcribe that instead.</p><p>Anyone who manages this lands ahead of 95 percent of writers, since so few bother to check each sentence against how they&#8217;d actually say it.<br>Duration: 4min, Publish Date: Oct 2015, Post: <a href="https://www.paulgraham.com/talk.html">paulgraham.com/talk.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;e67c7662-d721-49de-9bc0-f20acd9b49b6&quot;,&quot;duration&quot;:247.6147,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Write Usefully</h3><p>Useful writing should be correct, but not by hedging into vagueness; academic prose that calls everything &#8220;complex&#8221; says nothing. It should make claims as strong as possible without becoming false, then survive years of rereading before publication.</p><p>Robert Morris&#8217;s trick: don&#8217;t say anything unless you&#8217;re sure it&#8217;s worth hearing. Applied to essays, that means deleting bad sentences and abandoning whole paragraphs rather than publishing inconclusive ideas, the opposite of scientific publication bias. Importance and novelty work the same way, using yourself as a proxy for the reader: write about what you find important and what surprises you after thinking about a topic a lot, and it will likely do the same for others. Strength comes from precise qualification, saying &#8220;I think&#8221; only where certainty warrants it.</p><p>This formula, correctness plus novelty plus importance plus strength, also explains why useful essays provoke anger and misrepresentation. It closes by noting most essays remain unwritten, since cheap publishing is new and the form was rarely cultivated before the internet: Steve Wozniak&#8217;s unbuilt paper computer designs are the analogy offered for essays written without expecting an audience.<br>Duration: 16min, Publish Date: Feb 2020, Post: <a href="https://www.paulgraham.com/useful.html">paulgraham.com/useful.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;69b54b22-5739-4889-8fe0-2e0452f6150d&quot;,&quot;duration&quot;:964.6759,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Putting Ideas into Words</h3><p>Writing about something reveals that you didn&#8217;t understand it as well as you thought. The act of choosing words is a test your ideas usually fail on the first pass; half of what ends up in an essay only occurred to the writer while writing it.</p><p>The test comes from reading your own draft as a stranger would: does it seem correct, does it seem complete. Chess players and mathematicians can form some ideas in their heads because those domains use formal language, but essay ideas resist that; two weeks on a piece and fifty rereads of a draft is normal, and would look like a disorder in conversation, which is why talking is looser than writing.</p><p>The conclusion follows directly: if writing always sharpens ideas, then no one who hasn&#8217;t written about a topic has fully formed ideas about it, and they usually can&#8217;t tell.<br>Duration: 4min, Publish Date: Feb 2022, Post: <a href="https://www.paulgraham.com/words.html">paulgraham.com/words.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;87a60aaa-2bdf-4961-8818-c310ae858b72&quot;,&quot;duration&quot;:263.54938,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Age of the Essay</h3><p>Real essays don&#8217;t start with a thesis and defend it; they start with a question and follow it wherever it leads. That structure comes from Montaigne, who in 1580 called his pieces &#8220;essais,&#8221; attempts: writing something to figure it out, not to argue a side already picked.</p><p>The high school version, thesis plus supporting paragraphs plus conclusion, is a leftover of medieval law training, where rhetoric meant arguing either side well. A real essay works like the Meander river in Turkey: it winds, backtracks, and finds the most economical route by flowing toward whatever&#8217;s most interesting at each step. Interesting means surprising, something that contradicts what you thought you knew, the way it turned out no one can say who the best programmers are because you can only judge them by working with them.</p><p>This is for anyone who found English class pointless and suspected the problem was the form, not them. The Internet lets anyone publish this way now, judged by what it says rather than who wrote it.<br>Duration: 26min, Publish Date: Sep 2004, Post: <a href="https://www.paulgraham.com/essay.html">paulgraham.com/essay.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;626b2648-e421-4480-9d96-9e4789bb9311&quot;,&quot;duration&quot;:1563.951,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The List of N Things</h3><p>Cosmopolitan cover lines like &#8220;7 Things He Won&#8217;t Tell You&#8221; work because a numbered list is easier to read than a real essay: the structure is handed to you up front, the points are independent, and you can skip one without losing the rest.</p><p>That same trait makes it easier to write. A talk assembled a few days before deadline, or the classic five paragraph essay (really a list of three, dressed up with &#8220;furthermore&#8221; and a conclusion), survives even if one point runs dry, because nothing depends on what came before. Restaurants work the same way: order the cheeseburger when you don&#8217;t trust the cook. The tradeoff is that a list is fixed at the title; a real essay can turn up an idea you didn&#8217;t have when you started, and a list has no room for that.</p><p>Useful for anyone who writes on a deadline or teaches beginners, and for sizing up why a headline promising &#8220;7 secrets&#8221; is baiting you to check its count.<br>Duration: 7min, Publish Date: Sep 2009, Post: <a href="https://www.paulgraham.com/nthings.html">paulgraham.com/nthings.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;cf4587a8-c90c-4520-ace5-5b1532f65f89&quot;,&quot;duration&quot;:390.42612,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Shape of the Essay Field</h3><p>Essays need to tell readers something they don&#8217;t already know, and there are only three reasons they might not: it isn&#8217;t important, the reader is obtuse, or the reader is inexperienced. Writing for smart people about important things means writing, in effect, for the young, since that&#8217;s the group least likely to already know it.</p><p>Impact equals how much an idea changes a reader&#8217;s thinking multiplied by the topic&#8217;s importance, and the two trade off against each other: big shifts in thinking usually come on smaller topics, big topics usually only shift thinking a little. The Selfish Gene is the extreme case, recasting genes rather than organisms as evolution&#8217;s protagonists. Younger readers have more room to move, so the same essay pays off more for them.</p><p>The tradeoff isn&#8217;t a conscious calculation; it&#8217;s described as a gravitational field every essayist works inside, whether they notice it or not. The takeaway is a question rather than a rule: which important things do people tend to learn late.<br>Duration: 4min, Publish Date: Jun 2025, Post: <a href="https://www.paulgraham.com/field.html">paulgraham.com/field.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;da73de70-e80c-444a-9073-e9ee7a77f466&quot;,&quot;duration&quot;:252.00327,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Write Simply</h3><p>Simple sentences and ordinary words make prose easier to read, and the easier it is, the more energy a reader has left for the ideas instead of the words. Writing simply is the goal; fancy writing is a train the reader has to carry.</p><p>Complexity often hides an absence of ideas rather than concealing depth: if you say nothing simply, that becomes obvious to everyone, including you. Simple writing also travels better across time and across non-native English readers, whose grasp of ideas can outrun their grasp of the language. The method is blunt: write the first draft fast, then spend days cutting, which strips away the parts that were never the point.</p><p>This holds for anyone who writes to be understood rather than to impress, and it doubles as a working method: write fast, then cut hard.<br>Duration: 3min, Publish Date: Mar 2021, Post: <a href="https://www.paulgraham.com/simply.html">paulgraham.com/simply.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d14846eb-d270-4802-bcb4-bf863213e0be&quot;,&quot;duration&quot;:165.04163,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h2>Ideas, Thinking &amp; Learning</h2><p>Whole theme: 3 hours.</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;0bda7419-3b62-4899-8650-a52f6ce0d586&quot;,&quot;duration&quot;:11190.857,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Disagree</h3><p>Disagreement online has a structure, and most of it sits at the bottom. Twenty years of writers writing and readers reading has given way to comment threads and blog replies, and disagreement dominates because it&#8217;s easier to write than agreement: there&#8217;s more territory left unexplored.</p><p>A hierarchy separates the levels: name-calling, ad hominem (&#8221;of course a senator says senators need a raise&#8221;), responding to tone, contradiction, counterargument, refutation, and refuting the central point, which requires quoting the actual claim and showing why it fails. Correcting a typo or a minor number while ignoring the argument is ad hominem dressed up as rigor. The levels don&#8217;t prove a reply correct, only set a ceiling on how convincing it can be.</p><p>Mean comments cluster at the bottom of that hierarchy; real refutation rarely needs meanness. Useful for anyone deciding how to respond to something they disagree with, and for reading past confident-sounding replies that never touch the actual point.<br>Duration: 9min, Publish Date: Mar 2008, Post: <a href="https://www.paulgraham.com/disagree.html">paulgraham.com/disagree.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f863e477-165a-46c4-9242-6f6201667df6&quot;,&quot;duration&quot;:531.69635,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Think for Yourself</h3><p>Being right isn&#8217;t enough in science, investing, startups, or essay writing. A public market investor who correctly predicts a company&#8217;s performance makes no money if everyone else predicts the same thing; the price already reflects it. The only moves worth making are the ones most people think are wrong.</p><p>Startup founders live this test directly: writing software for a tiny computer used by a few thousand hobbyists, or renting airbeds on strangers&#8217; floors, both sounded like bad ideas to almost everyone. Independent-mindedness breaks into three parts: fastidiousness about degree of belief, resistance to being told what to think, and curiosity that keeps searching after most people stop. Schools test and rank raw intelligence constantly but never measure this, so most people misjudge which side of the line they&#8217;re on.</p><p>This is for anyone sizing up a career choice between administrative work, where being right is sufficient, and research, investing, or founding, where being right and alone in it is the only way to win.<br>Duration: 21min, Publish Date: Nov 2020, Post: <a href="https://www.paulgraham.com/think.html">paulgraham.com/think.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b636c505-6de6-4f24-b04e-9416cf71ede6&quot;,&quot;duration&quot;:1257.6914,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Crazy New Ideas</h3><p>Reasonable domain experts sometimes propose ideas that sound wrong, and those ideas deserve more weight than their surface plausibility suggests, not less.</p><p>A reasonable person already knows how their idea sounds, so proposing it anyway signals they know something others don&#8217;t. Everyone, including the person having the idea, applies an excessively strict filter to new thinking, which is why Copernicus published heliocentrism in 1532 and the field only came around by the mid seventeenth century. Attacks on new ideas cost attackers nothing and look clever regardless of target, while envy, factionalism, and vested careers (Darwin&#8217;s harshest critics were churchmen) push people to dismiss rather than question.</p><p>The better response is to ask why the gap exists, since either your model is wrong or theirs is, and both are worth knowing. This favors watching for reasonable experts saying implausible things now, and reading history to see what unfinished ideas looked like before they won.<br>Duration: 8min, Publish Date: May 2021, Post: <a href="https://www.paulgraham.com/newideas.html">paulgraham.com/newideas.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;81ea384d-7a5b-47b2-88c2-68a36811af85&quot;,&quot;duration&quot;:478.45877,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Keep Your Identity Small</h3><p>Political and religious arguments go nowhere for a specific reason: no threshold of expertise gates who can weigh in. Anyone with strong convictions qualifies, unlike a Javascript thread, which stays smaller because people feel they need standing to post.</p><p>The real driver is identity, not subject matter. A discussion about a battle involving living countries turns partisan fast; the same discussion about a Bronze Age battle doesn&#8217;t, because no one knows which side to take. Programming language debates degenerate the same way once people call themselves &#8220;X programmers,&#8221; which doesn&#8217;t mean the question of which language is better has no answer.</p><p>The fix follows from the mechanism: let as few things into your identity as possible, since anything you can&#8217;t think clearly about includes everything you&#8217;ve tied yourself to. Even calling yourself a scientist should commit you to nothing but following evidence, not to any conclusion.<br>Duration: 5min, Publish Date: Feb 2009, Post: <a href="https://www.paulgraham.com/identity.html">paulgraham.com/identity.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;216feda7-c9de-4213-8dd1-2a48d7b609d4&quot;,&quot;duration&quot;:316.369,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Four Quadrants of Conformism</h3><p>People sort into four types based on how conventional their beliefs are and how aggressively they act on them: aggressively conventional, passively conventional, passively independent, and aggressively independent. Which quadrant someone falls into depends more on personality than on the actual rules around them.</p><p>School offers the clearest evidence: tattletales enforce rules, sheep just obey them, dreamy kids barely track them, and naughty kids question them on principle. Robert George&#8217;s Princeton students who insist they would have opposed slavery are almost certainly wrong; the aggressively conventional-minded among them would have defended it, since their type responds to whatever rules prevail. Since the Enlightenment, free inquiry has replaced heresy hunting precisely to protect independent thinkers, the ones who produce new science and startups, from the conventional-minded majority. That protection has weakened since the 1980s and again with social media.</p><p>This gives independent-minded listeners, particularly scientists and founders, a framework for why their ideas draw punishment rather than argument, and why universities used to be, but may no longer be, the safest place for them.<br>Duration: 12min, Publish Date: Jul 2020, Post: <a href="https://www.paulgraham.com/conformism.html">paulgraham.com/conformism.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;4fc34a52-9e34-41c3-bb9d-8284b9d48acd&quot;,&quot;duration&quot;:726.25635,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What You (Want to)* Want</h3><p>Free will survives being made of matter, once &#8220;want&#8221; splits into layers. You can do what you want, but not want what you want; push further and you can even change what you want to want.</p><p>That regress does not go forever. Drug addicts sometimes stop wanting to want their addiction; someone can decide to like classical music or broccoli. But add a third or fourth &#8220;want to&#8221; and change gets rare fast, the way adding 9s after a decimal point closes in on 1 without reaching it. Three or four levels in, some desire sits at the bottom that you never chose.</p><p>The fix is a formula: some statement of the form &#8220;you can&#8217;t (want to)* want what you want&#8221; is true for everyone, with n varying by person and desire. It reframes the free will question as a search for that n, not a yes-or-no puzzle.<br>Duration: 3min, Publish Date: Nov 2022, Post: <a href="https://www.paulgraham.com/want.html">paulgraham.com/want.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;ea7c18df-4788-447d-b933-5a31fb557316&quot;,&quot;duration&quot;:172.8,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Being a Noob</h3><p>Feeling like a beginner is a sign of learning, not a sign of falling behind: the more lost you feel locally, the more you&#8217;re likely picking up globally.</p><p>The discomfort has two causes, being incompetent and doing something new, and evolution wired us to hate both the same way, because for most of human history problems repeated rather than changing. Hunter-gatherers never had to figure out cryptocurrency. That wiring now misfires the same way an appetite for scarce food misfires when food is abundant: useful once, a liability now.</p><p>The upshot: treat the noob feeling as a measure of how much new ground you&#8217;re covering, not a verdict on your competence. Moving to an unfamiliar country makes you feel dumber than staying home, yet you end up knowing more.<br>Duration: 2min, Publish Date: Jan 2020, Post: <a href="https://www.paulgraham.com/noob.html">paulgraham.com/noob.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;6401d8f4-5760-4ebb-b4c0-5e75bb4e6250&quot;,&quot;duration&quot;:131.21306,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Two Kinds of Judgement</h3><p>Judgement splits into two kinds. In one, judging you correctly is the goal itself: court cases, grades, competitions, with appeals if you&#8217;re misjudged. In the other, judging you is only a means to something else: college admissions, hiring, investment, dating.</p><p>Picking 20 players for a national team shows why the second kind isn&#8217;t unfair. Get the 20th spot wrong and the 21st best player takes it; if ability follows a normal distribution, the gap between them is smaller than the measurement error. The selector optimized the team, not your individual score, the way a novel buyer picking a potboiler with a racy cover isn&#8217;t being unfair to a better book, just uninterested in it.</p><p>Realizing most people judging you are closer to a fickle book buyer than a careful magistrate changes how you act: less passivity, less taking rejection personally, more effort spent selling yourself. College applicants are the case made explicit.<br>Duration: 4min, Publish Date: Apr 2007, Post: <a href="https://www.paulgraham.com/judgement.html">paulgraham.com/judgement.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;48205976-d250-42d8-9f91-764b78e78532&quot;,&quot;duration&quot;:262.11264,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>A Way to Detect Bias</h3><p>You can detect bias in a selection process without knowing anything about the applicants who were rejected. If a process is biased against a type of applicant, that type had to clear a higher bar to get selected, so among those who made it through, that type will outperform the rest. Check performance after the fact and the bias shows itself.</p><p>First Round Capital published exactly this by accident: among its own portfolio companies, startups with female founders outperformed the others by 63%. The catch is a valid performance measure, one not itself corrupted by the bias being tested, and roughly equal underlying ability across the groups compared. The same First Round study also excluded its biggest win, Uber, which studies of outlier-driven returns like startup investing should not do.</p><p>Data on who applies is usually locked away, but data on who gets selected is increasingly public, which means outsiders can run this check on institutions whether those institutions want them to or not.<br>Duration: 3min, Publish Date: Oct 2015, Post: <a href="https://www.paulgraham.com/bias.html">paulgraham.com/bias.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;ca5e8d70-189d-47f1-839e-749308b12ed3&quot;,&quot;duration&quot;:205.71428,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Alien Truth</h3><p>If intelligent life exists elsewhere, it would share more than math and physics with us: also things like the principle that a controlled experiment increases belief in a hypothesis, that practice improves skill, and Occam&#8217;s razor. These &#8220;alien truths&#8221; set a target for the most general truths short of math and physics, and possibly for concepts like justice, though that one&#8217;s less certain.</p><p>The test is generosity: if an idea might plausibly apply to any intelligent being, it counts. Erdos&#8217;s &#8220;God&#8217;s book&#8221; gets extended past math to cover this wider set. AIs may eventually let us pin down the threshold precisely, by showing which properties any system we&#8217;d call intelligent has to use, but that empirical question is separate from the philosophical one of generating candidate alien truths now.</p><p>The search for alien truths is proposed as a good definition, maybe the best one available, for what philosophy should actually be doing, whether or not current philosophers do it.<br>Duration: 4min, Publish Date: Oct 2022, Post: <a href="https://www.paulgraham.com/alien.html">paulgraham.com/alien.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;8e171d63-7f89-4e8d-afbd-fefc31296545&quot;,&quot;duration&quot;:237.89714,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Beyond Smart</h3><p>Being very smart and having important new ideas are not the same thing. Plenty of genuinely smart people in universities and research labs discover nothing. Given a choice between being smart but discovering nothing, or less smart but discovering new things, the second is obviously better, even though it doesn&#8217;t feel that way.</p><p>If intelligence isn&#8217;t the deciding factor, something else is, and much of it can be built rather than inherited. An obsessive interest in one topic is one ingredient. Independent-mindedness is another, mostly inborn but still cultivable. General techniques for working on your own projects, plus mundane factors like sleep, low stress, and good colleagues, round it out. Writing is its own case: some ideas only surface by writing essays, not by thinking first and transcribing after.</p><p>This reframes the usual story about smart people who &#8220;underachieve.&#8221; Instead of fatalism about fixed intelligence, it points to specific, learnable factors, useful for anyone trying to produce new ideas rather than just score well on them.<br>Duration: 8min, Publish Date: Oct 2021, Post: <a href="https://www.paulgraham.com/smart.html">paulgraham.com/smart.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d83ca5e2-6c35-4771-81a5-cb7dced54b04&quot;,&quot;duration&quot;:485.12,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Fashionable Problems</h3><p>Most fields have only been explored along a narrow, fashionable path, even after years of hard work by smart people. A vast amount of space in essays, in Lisp, in venture funding, sits untouched simply because everyone keeps working on the same few problems.</p><p>Smart, imaginative people default to conservative choices about what to work on, chasing the same fashionable questions the way others chase fashionable clothes. The fix is to look at fields already declared played out and try a genuinely new angle: if it works, the payoff scales with the size of the field, since a new approach to something enormous covers enormous ground. Loving the work is the real safeguard, since it keeps you going even when a mistake convinces you the problem is too marginal to matter.</p><p>This favors people picking a research direction or a company to start, weighing a well-trodden path against an unfashionable one nobody else wants to touch.<br>Duration: 1min, Publish Date: Dec 2019, Post: <a href="https://www.paulgraham.com/fp.html">paulgraham.com/fp.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;7d380080-e9c6-4163-be65-70e5db0497c1&quot;,&quot;duration&quot;:64.444084,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Be an Expert in a Changing World</h3><p>Beliefs about a static world can safely harden with more experience. Beliefs about anything that changes cannot, and change touches almost everything except human nature. Experts go wrong by staying experts on an earlier version of the world.</p><p>A decade spent investing in early-stage startups showed a working fix: assume things change, stop trying to predict the direction of that change, and instead stay sensitive to it. Good new ideas often look bad at first, until some shift quietly makes them good; Airbnb read as a bad idea, but the founders were earnest, energetic, and independent-minded, so the bet went ahead anyway. Public, durable commitments sharpen this further: investors who passed on Google remember it for life, because a real yes-or-no bet forces rigor that casual conversation never does.</p><p>The payoff is a method, not a prediction: watch people over ideas, treat &#8220;crazy&#8221; as a compliment, and keep company with the kind of people whose discoveries will make your own beliefs obsolete first.<br>Duration: 6min, Publish Date: Dec 2014, Post: <a href="https://www.paulgraham.com/ecw.html">paulgraham.com/ecw.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;69086f53-0a8f-4b16-abb1-4e095e3b20c8&quot;,&quot;duration&quot;:378.85388,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Do Philosophy</h3><p>Philosophy has no core subject matter the way math or history does; it&#8217;s mostly a record of what individual philosophers said. The reason: ordinary words break down when pushed too far, and philosophy keeps pushing them past that point.</p><p>Aristotle set out in the Metaphysics to study the most general truths, but assumed the most noble knowledge had to be useless, so nothing checked him when he got lost in words. Wittgenstein later showed most philosophical debates trace back to confusion over language, and unclear writing about big ideas draws inexperienced but ambitious students precisely because they can&#8217;t tell confusion from depth, the same trap that pulled in a philosophy major freshman year and Sydney Shoemaker&#8217;s class on why the self doesn&#8217;t exist.</p><p>The fix proposed: ask which of the useful things we can say are most general, not which general things are true, using examples like the controlled experiment and Frankfurt&#8217;s lying/bullshitting distinction. Anyone can do this by starting specific and working up, no tenure required.<br>Duration: 27min, Publish Date: Sep 2007, Post: <a href="https://www.paulgraham.com/philosophy.html">paulgraham.com/philosophy.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2038fb3a-d32e-4963-9046-f0b7f408ff2d&quot;,&quot;duration&quot;:1595.6898,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How to Get New Ideas</h3><p>Good ideas come from noticing anomalies: things that seem strange, missing, or broken. Standup comedy runs on the same move applied to everyday life, but the richest source is the edge of what&#8217;s known.</p><p>Knowledge grows fractally. From a distance its boundaries look smooth; get close enough to actually work at one and it turns out to be full of gaps, gaps so obvious once seen that it seems inexplicable nobody tried x or asked y. Pushing into one of those gaps can, in the best case, open up a whole new fractal bud of its own.</p><p>At three paragraphs and a couple hundred words in the original, this is closer to a note than a talk: the payoff is the reframe itself, useful for anyone doing original work and wondering where to start looking.<br>Duration: 1min, Publish Date: Jan 2023, Post: <a href="https://www.paulgraham.com/getideas.html">paulgraham.com/getideas.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;d453db74-4bba-4d2b-b8d2-cedca8d33b17&quot;,&quot;duration&quot;:53.420406,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>How You Know</h3><p>Reading Villehardouin&#8217;s chronicle of the Fourth Crusade two or three times leaves almost nothing you can write down afterward, maybe a page. That&#8217;s not a failure of reading. What you retain isn&#8217;t the text but its effect on your mental models: of the crusades, Venice, medieval siege warfare.</p><p>A biography of Hilbert makes the point stick: Hilbert told students &#8220;a perfect formulation of a problem is already half its solution.&#8221; You can forget where you got that conviction and still carry the conviction. Reading compiles like a program: it works, but the source is gone. Because the compiling happens with whatever state your brain is in at the time, the same book run through you again at a different age compiles differently, which is the case for rereading important books rather than treating &#8220;already read&#8221; as finished.</p><p>The forgetting that felt like wasted effort turns out to be how belief and judgment actually accumulate.<br>Duration: 4min, Publish Date: Dec 2014, Post: <a href="https://www.paulgraham.com/know.html">paulgraham.com/know.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;b458e131-c44b-4133-ab71-d51f1fd08880&quot;,&quot;duration&quot;:221.2049,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Is It Worth Being Wise?</h3><p>Wisdom and intelligence aren&#8217;t two names for one trait. Wisdom is a high average across situations; intelligence is a high peak in a few. A wise person usually makes the right call; a smart one solves what almost nobody else can, even if they&#8217;re erratic elsewhere.</p><p>The two used to track together, when Confucius and Socrates could treat wisdom, virtue and happiness as one package. As knowledge specializes, the curve gets more points and the average and the peaks pull apart, so a mathematician who goes to bed dissatisfied most nights, or a physicist department half on Prozac, isn&#8217;t a failure of wisdom, just the cost of work with no upper bound. A goalkeeper&#8217;s job has a perfect version; a novelist&#8217;s doesn&#8217;t.</p><p>That gap explains why smart people are so often unwise, and why chasing intelligence means indulging your own idiosyncrasies rather than disciplining them away, the opposite of how wisdom gets built. Useful for anyone doing work where the ceiling is open and the discontent that comes with it needs a name other than failure.<br>Duration: 20min, Publish Date: Feb 2007, Post: <a href="https://www.paulgraham.com/wisdom.html">paulgraham.com/wisdom.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;71b8ba14-8cfd-4a87-8fb5-47e361715c99&quot;,&quot;duration&quot;:1206.4392,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Mark Twain: Corn-pone Opinions</h3><p>A slave named Jerry preached from a woodpile that a man&#8217;s opinions trace back to where he gets his corn pone. Opinions are not reasoned out; they are absorbed from the people around us, and self-approval depends on the approval of others.</p><p>The hoopskirt shocks a village, then six months later nobody laughs at it, with no argument in between. Dinner tables in England went from six or eight wine glasses per setting to three or four the same way. Political camps split on silver or on the tariff with the same certainty on both sides, each side reading only its own party&#8217;s literature, each mistaking feeling for thought.</p><p>The account settles for calling this force conformity and naming its cause: not calculation, but the wish to stand well with the people around us. It leaves the reader with a working test for any belief: trace it back and see whether it was reasoned or merely caught from a neighbor.<br>Duration: 11min, Post: <a href="https://www.paulgraham.com/cornpone.html">paulgraham.com/cornpone.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;1d9c79b9-62ad-448a-b897-119941f36c94&quot;,&quot;duration&quot;:668.5518,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Bus Ticket Theory of Genius</h3><p>Genius requires a third ingredient beyond natural ability and determination: an obsessive, pointless-seeming interest in something that happens to matter.</p><p>Darwin&#8217;s curiosity about natural history on the Beagle voyage looks like the same compulsion that drives bus ticket collectors, except species matter and bus tickets don&#8217;t. Ramanujan sat by the hour working out series on his slate for no reason except that he liked it. Newton poured years into alchemy and theology alongside physics; those bets failed, but the one that paid off covered the losses. The obsession works as a filter for ability, since you won&#8217;t find series interesting without the aptitude, and as a substitute for discipline, since curiosity pulls where willpower would have to push.</p><p>This favors people willing to waste time on what looks unpromising, including kids allowed to go &#8220;preposterously deep&#8221; on some random interest instead of studying only what school assigns.<br>Duration: 15min, Publish Date: Nov 2019, Post: <a href="https://www.paulgraham.com/genius.html">paulgraham.com/genius.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;23c4345c-3538-4dbb-9137-ed655c709590&quot;,&quot;duration&quot;:906.89307,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>The Risk of Discovery</h3><p>Newton spent as much time on alchemy and theology as on physics, and his biographies quietly edit that out. The three fields looked equally promising in his own lifetime; only hindsight makes physics look like the obvious bet.</p><p>Biographers focus on the physics because that&#8217;s what paid off, then credit Newton with unerring judgment for having pursued it. Alchemy and theology read as wastes of time now only because we know how they turned out; in Newton&#8217;s day they were, in Marc Andreessen&#8217;s phrase, &#8220;huge, if true.&#8221; He made three bets and one worked, but all three carried real risk.</p><p>The pattern applies beyond Newton: smart people aren&#8217;t separately smart and crazy, they&#8217;re placing bets whose odds aren&#8217;t visible until after the fact. Worth thirty minutes for anyone judging their own current work by whether it looks promising yet, rather than by hindsight standards no one had access to at the time.<br>Duration: 1min, Publish Date: Jan 2017, Post: <a href="https://www.paulgraham.com/disc.html">paulgraham.com/disc.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2046a793-f78a-4c58-a532-75d5a037e95d&quot;,&quot;duration&quot;:80.1698,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>What Charisma Is</h3><p>Charisma is not likable manner or good press. It is a trait voters can spot before a single vote is cast, one that shows up in political cartoons months ahead of election day: once cartoonists start drawing a candidate as boring, that candidate is in trouble, while being drawn as stupid or unprincipled is survivable.</p><p>The trait itself is the wish to be around people. Clinton reached over his own Secret Service agents to shake hands, visibly thrilled rather than dutiful; Kennedy kept aides on hand for the sole purpose of company because he couldn&#8217;t stand being alone. Kerry&#8217;s &#8220;patrician reserve&#8221; and Gore&#8217;s stiffness, by contrast, read as distance. Liking people makes them like you back, the same reciprocity that makes you readier to help a friend who admires you than one who&#8217;s indifferent.</p><p>This reframes charisma as a predictable, almost physical trait, like height for a basketball player, not a coachable performance. Politicians who merely remember to smile are missing the thing that can&#8217;t be faked.<br>Duration: 3min, Publish Date: Nov 2004, Post: <a href="https://www.paulgraham.com/recharisma.html">paulgraham.com/recharisma.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;c60f702a-11a5-4914-98db-47d803e392d6&quot;,&quot;duration&quot;:157.9102,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><h3>Why Smart People Have Bad Ideas</h3><p>Good hackers often build the wrong thing first, and the fix is learning to spot it fast. A startup has to make something people will pay for; most founders discover this only after a failed first attempt.</p><p>Paul Graham and Robert Morris spent 1995 building Artix, a company to put art galleries on the Web, before art dealers turned out to hate the idea and have no money to pay for it. They abandoned it for Viaweb, software letting anyone build an online store, which succeeded. Bill Gates and Paul Allen did the same: Traf-o-data before Microsoft. Three causes recur: taking the first idea that comes to mind, staying ambivalent about making money, and picking a &#8220;safe&#8221; underpopulated market out of fear of competition rather than the one customers actually need solved.</p><p>Sorting 227 applications for the Summer Founders Program turned up the same pattern: promising people with unpromising ideas, often blogs or dating sites instead of real problems like micropayments or dying newspapers. The fix: make something people want.<br>Duration: 18min, Publish Date: Apr 2005, Post: <a href="https://www.paulgraham.com/bronze.html">paulgraham.com/bronze.html</a></p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;0addab1f-eda4-4613-802d-12a143a13f1a&quot;,&quot;duration&quot;:1052.5519,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div>]]></content:encoded></item><item><title><![CDATA[Highlights from Hartmut Esslinger's Oral History]]></title><description><![CDATA[Explore design legend Hartmut Esslinger's oral history: his Apple Snow White win, frog design's business model, and his philosophy on manufacturing-driven design.]]></description><link>https://journal.daniellopes.dev/p/highlights-from-hartmut-esslingers</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/highlights-from-hartmut-esslingers</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sat, 22 Aug 2026 23:11:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b79e54fa-b04c-4e36-a625-bd77510feeee_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FFTL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FFTL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FFTL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81476,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/212343677?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FFTL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!FFTL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9efd3b6d-d724-4cca-a0e3-2c8f7659799c_1376x768.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Since starting GrowthX, I haven&#8217;t had time to read much other than Slack and PRs. The only thing I can consume these days are audiobooks. Everything else piles into a queue of articles and PDFs I keep telling myself I&#8217;ll get to.</p><p>A lot of that queue is <a href="https://computerhistory.org/">Computer History Museum</a> oral histories. I&#8217;ve watched plenty of the video ones, but some of the best interviews are transcript only.</p><p>So I finally coded the workflow I&#8217;d been meaning to build forever. It cleans up the transcript, splits the speakers, gives each of them their own voice, and narrates it with <a href="https://deepgram.com/product/text-to-speech">Deepgram Aura-2</a>, with chapter marks so you can skip around.</p><p>The first one I wanted to listen to was <a href="https://en.wikipedia.org/wiki/Hartmut_Esslinger">Hartmut Esslinger</a>, the founder of frog design and a design legend. After earning their into becoming Apple&#8217;s design partner by winning Apple&#8217;s Snow White competition and defined the look of Apple hardware until Jony Ive&#8217;s translucent iMacs. The Computer History Museum has a <a href="https://www.computerhistory.org/collections/catalog/102743122/">28-page PDF</a>, which came out as 85 minutes of audio across 20 chapters.</p><p></p><div><hr></div><h2>Audio Version of Esslinger&#8217;s Oral History &#128071;</h2><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;f6cbf162-d263-4bf8-8a98-a9dd5566508c&quot;,&quot;duration&quot;:5124.1274,&quot;downloadable&quot;:true,&quot;isEditorNode&quot;:true}"></div><div><hr></div><p></p><h5>Some highlights from my notes</h5><h3>Winning Apple&#8217;s Snow White prize by refusing the brief</h3><p>Apple ran Snow White in 1982 to unify a product line that had grown by accident. Esslinger was running a small studio out of a village in the Black Forest, and got in the door through a party at a former intern&#8217;s house.</p><p>The assumption inside Apple was that the answer looked like Sony, a company he had spent a decade consulting for. He said no. &#8220;That&#8217;s Japanese. This is different. America must be different.&#8221;</p><p>What he pitched instead was &#8220;simple, white, innocent, sexy, and also a bit more radical, a new global brand.&#8221; His argument for why Apple could get away with it: &#8220;There was no real market for the product, none at all, so Apple can do what is right.&#8221;</p><p>Where he thought Apple&#8217;s own designers had gone wrong: &#8220;Olivetti never had a design language. Olivetti had a design philosophy.&#8221;</p><p>He won the competition, then told the in-house team they couldn&#8217;t implement it, because &#8220;the way you do it, you will destroy it in the first second.&#8221; Most of them left.</p><h3>The two million dollar design fee was a manufacturing argument</h3><p>Two million dollars a year from Apple, starting in 1982, for a studio of eight people. The highest fee ever paid to a designer at the time, and he defends it with unit economics rather than craft.</p><p>&#8220;At a million computers you save 100 bucks per computer, that&#8217;s 100 million dollars. So what is a design fee compared to that?&#8221;</p><p>The savings were engineering. Apple had been painting its plastic enclosures. &#8220;You have a piece of plastic, five dollars. You paint it, it&#8217;s 15.&#8221; So frog moved them to unpainted Lexan, coloured all the way through.</p><p>Then zero-draft moulding. Moulded parts normally need slightly angled walls so they can be pulled out of the mould, and that taper is what makes plastic look cheap. He had solved it at Sony with a collapsible core and 16 or 32 mould pieces instead of two or four, which also put more toolmakers in parallel and shipped the part sooner. Cheaper, faster, and it looked like machined steel.</p><p>The Apple account still wasn&#8217;t profitable for frog at first: &#8220;you have to prove what you can do.&#8221;</p><p>Every argument he makes for design in three hours is a manufacturing or P&amp;L argument.</p><h3>A one percent royalty, not fees, is what built frog design</h3><p>In 1974, before Apple, KaVo hired frog to redesign a dental chair. &#8220;It&#8217;s all hostile; it looks like an electric chair. Why not make it friendly?&#8221;</p><p>The CEO loved the work and had no money. They were building about 20 units a year. So Esslinger asked for a royalty instead of a fee. KaVo offered one percent, he took it, and the contract ran to less than a page.</p><p>A year later, at a regional trade show, they sold 200-plus by 11am on the opening day and stopped taking orders because the factory couldn&#8217;t make them. He redesigned it for volume. It sold for more than twenty years at roughly two million a year in license fees.</p><p>That royalty, not the Apple fee, is what paid for the model shop, an early CAD system, and salaries high enough that industrial designers were paid like engineers.</p><h3>A hundred ideas to Steve Jobs, five shipped</h3><p>Richard Sapper designed for IBM for decades, and later did the ThinkPad. Esslinger quotes him: &#8220;I bring them a thousand ideas and they take one. And I try a hundred times and maybe they do it once. What a waste. What a waste.&#8221;</p><p>His own version at Apple: &#8220;we took a hundred ideas to Steve and we made five good ones and co-developed them.&#8221; Fifty times the throughput, same calibre of designer.</p><p>Why in-house teams go nowhere, using Motorola as the example: good designers, but one reported into engineering and another into marketing, with no connection between them, so &#8220;nobody is really held accountable for corporate vision.&#8221;</p><p>And on the companies who ask to be the next Apple: &#8220;everybody wants to be like Apple, but when you tell them what it takes &#8212; budget, perfect models, realistic simulations, absolutely no shortcuts and a huge love for people &#8212; they balk.&#8221;</p><h3>How frog design doubled its team without losing itself</h3><p>Winning Snow White came with a condition: an office in Silicon Valley, near Apple. frog was eight people in a converted garage in the Black Forest, baking models in the kitchen oven.</p><p>So they hired eight more and had each existing person mentor their exact counterpart for three months, role for role. Then they split the doubled team and moved half of it to Campbell, California. After that, people rotated between Germany and California every month, administration included. &#8220;I was really careful not to lose the culture.&#8221;</p><p>He treated a forced doubling as a chance to get better rather than something to survive: &#8220;the challenge is great, but we have to get better.&#8221;</p><p>Nobody was hired into a new office. The office was cloned, then moved. I&#8217;ve done org-doubling worse than this.</p><h3>Thinking big and acting small</h3><blockquote><p>&#8220;People have to think big, but they have to act small.&#8221;</p></blockquote><p>The last thing he says, after three hours.</p><p>To me, a pattern through the interview is the idea of never settling on one altitude. Pitching Apple on a new global brand, then arguing about the taper on a moulded wall, all in the same conversation.</p>]]></content:encoded></item><item><title><![CDATA[EDD: Evals Driven Development]]></title><description><![CDATA[The ideal LLM-dev environment that I wish was easier to do&#8230;]]></description><link>https://journal.daniellopes.dev/p/edd-evals-driven-development</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/edd-evals-driven-development</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sun, 10 Aug 2025 19:27:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/04112ec2-d6ba-4ca7-be72-e3de3b3929ed_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>The Problem:</strong> Don't try to retrofit LLM testing into old paradigms. Testing pyramids, CI/CD gates, deterministic assertions - these were built for a world where <code>f(x) = y</code> every time. LLMs broke that contract.</p><h2>Core</h2><p>Traditional software has bugs. LLM software has <em>behaviors</em>.</p><p>You don't test behaviors - you observe them, measure them, and guide them. This requires a fundamentally different approach.</p><h2>Three Modes of Observation</h2><p><strong>Mode 1: Introspection</strong> The model evaluates itself during generation. Like a writer reviewing their draft before hitting send. Built-in confidence scoring, explanation generation, self-critique loops. This happens at inference time, costs tokens, but provides immediate guardrails.</p><p><strong>Mode 2: Instrumentation</strong> Automated measurement of what actually happened. Response times, token usage, embedding similarities, retrieval success rates. Like application performance monitoring but for AI quality. Runs continuously, at scale.</p><p><strong>Mode 3: Interpretation</strong> Humans make sense of what matters. Not everything can be measured - sometimes you need human judgment on tone, helpfulness, or edge cases. Expensive but irreplaceable for subjective quality and ground truth.</p><h2>What This Looks Like in Practice</h2><p><strong>During Development:</strong></p><ul><li><p>Start with exploration, not test cases - explore what your model can do</p></li><li><p>Capture interesting behaviors as you discover them (the good, bad, and weird)</p></li><li><p>Write expectations, not assertions: "should be empathetic" not "must contain 'sorry'"</p></li><li><p>Build your eval suite backwards - get it working first, then define what "good" means based on real outputs</p></li></ul><p><strong>During Deployment:</strong></p><ul><li><p>Shadow scoring on real traffic before switching</p></li><li><p>Gradual rollout based on confidence thresholds</p></li><li><p>Automatic fallback to previous version if scores drop</p></li><li><p>No binary deploy/rollback - it's a confidence dial</p></li></ul><p><strong>During Operation:</strong></p><ul><li><p>Stream of observations, not error logs</p></li><li><p>Distribution of scores, not pass/fail counts</p></li><li><p>Anomaly detection, not threshold alerts</p></li><li><p>Behavioral drift tracking, not uptime monitoring</p></li></ul><p><strong>During Improvement:</strong></p><ul><li><p>Human labels on strategic samples, not random QA</p></li><li><p>Disagreement cases between evaluators get priority</p></li><li><p>Corrections become test cases automatically</p></li><li><p>Fine-tuning happens on production-validated examples</p></li></ul><h2>Embracing LLM Constraints</h2><p><strong>Embrace Uncertainty:</strong> Stop pretending LLMs are deterministic. Design for confidence intervals, not binary outcomes.</p><p><strong>Compose, Don't Compile:</strong> Evaluators should be Lego blocks - mix and match for your use case. Need safety + factuality + tone? Stack them.</p><p><strong>Optimize for Learning:</strong> Every evaluation should make the system smarter. If it doesn't feed back into improvement, why measure it?</p><p><strong>Human Time is Sacred:</strong> Only escalate to humans when machines disagree or confidence is low. Make their input count by turning it into reusable signals.</p>]]></content:encoded></item><item><title><![CDATA[Prompt engineering in 2026: what still holds up]]></title><description><![CDATA[Role prompting lost its accuracy claim, self-consistency collapsed, chain-of-thought got narrower. Re-scoring 58 techniques against two years of benchmarks]]></description><link>https://journal.daniellopes.dev/p/prompt-engineering-techniques</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/prompt-engineering-techniques</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sun, 22 Dec 2024 01:23:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!63il!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wrote this in June 2024, as my notes after reading <a href="https://arxiv.org/pdf/2406.06608">The Prompt Report</a>, a systematic survey that catalogued 33 vocabulary terms and 58 text prompting techniques across in-context learning, decomposition, ensembling and self-criticism. This is the 2026 update.</p><p>That survey was the most complete map of the field, and it was drawn before reasoning models and native tool calling existed. Those two changes, plus a run of 2025-2026 benchmarks, answered the question a taxonomy can&#8217;t: which of the 58 still earn their tokens.</p><p>The bigger change isn&#8217;t in the taxonomy at all. In 2024 prompting was a specialist skill. You wrote prompts if you were building an AI product. Everyone else shipped software without touching one. In 2026 every programmer writes prompts all day.</p><p>So this is a pass back through the research: what the newer studies measured, and where those numbers contradict advice that still gets repeated. Almost every claim is paper-backed or straight from provider documentation, linked inline. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!63il!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!63il!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 424w, https://substackcdn.com/image/fetch/$s_!63il!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 848w, https://substackcdn.com/image/fetch/$s_!63il!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 1272w, https://substackcdn.com/image/fetch/$s_!63il!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!63il!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp" width="768" height="429" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:429,&quot;width&quot;:768,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/153472652?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad1cfae0-c711-451a-b0d2-77f4769a7eb5_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!63il!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 424w, https://substackcdn.com/image/fetch/$s_!63il!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 848w, https://substackcdn.com/image/fetch/$s_!63il!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 1272w, https://substackcdn.com/image/fetch/$s_!63il!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62959865-18c7-4713-aa0c-0e9cdca68db7_768x429.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What changed</h2><ul><li><p><strong>Example count.</strong> Then: more exemplars improve performance, with diminishing returns past 20. Now: it depends on the task. Classification climbs past 250, reasoning saturates at 4-125 then degrades, and one example often scores below zero.</p></li><li><p><strong>Zero-shot.</strong> Then: the fallback when you have no examples. Now: the default. On GSM8K, 8 exemplars bought nothing over zero-shot.</p></li><li><p><strong>Example labels.</strong> Then: whether demonstrations must be strictly valid is unclear. Now: settled. Random labels cost 0-5%; format and label space do the work.</p></li><li><p><strong>Example order.</strong> Then: order can swing accuracy from below 50% to over 90%. Now: unchanged and still unfixed. Demonstrations at the start are worth up to 6 points.</p></li><li><p><strong>Chain-of-thought.</strong> Then: a core reasoning technique. Now: math and symbolic only. 95% of the MMLU gain came from questions containing &#8220;=&#8221;.</p></li><li><p><strong>&#8220;Let&#8217;s think step by step&#8221;.</strong> Then: task-agnostic, works anywhere. Now: deprecated on reasoning models by all three vendors, at 20-80% more response time.</p></li><li><p><strong>Role prompting.</strong> Then: can sometimes improve accuracy on benchmarks. Now: no reliable accuracy gain on current models, and irrelevant persona detail can cost 30 points.</p></li><li><p><strong>Self-consistency.</strong> Then: improves arithmetic, commonsense and symbolic reasoning. Now: collapsed on frontier models, at +1.6 points for 15x the tokens.</p></li><li><p><strong>Tree of Thoughts.</strong> Then: a decomposition technique. Now: still works, at 5-100x the tokens. Batch jobs only.</p></li><li><p><strong>Temperature and top-p.</strong> Then: yours to tune. Now: reasoning models reject them outright.</p></li><li><p><strong>Agents and tool use.</strong> Then: not covered. Now: the loop is an API contract, not a prompt pattern.</p></li><li><p><strong>Writing the prompt.</strong> Then: by hand. Now: optimizers beat reinforcement learning on most tasks, if you have evals.</p></li></ul><h2>What prompt engineering is</h2><p>The working definition is OpenAI&#8217;s: <a href="https://developers.openai.com/api/docs/guides/prompt-engineering">&#8220;the process of writing effective instructions for a model, such that it consistently generates content that meets your requirements.&#8221;</a> The word doing the work is <em>consistently</em>. Getting one good answer out of a model is easy. Getting the same quality on the next thousand inputs is the job.</p><p>The smallest version of the whole discipline, from the <a href="https://www.promptingguide.ai/introduction/examples">Prompt Engineering Guide</a>:</p><pre><code><code>Classify the text into neutral, negative or positive.
Text: I think the vacation is okay.
Sentiment: neutral
Text: I think the food was okay.
Sentiment:</code></code></pre><p>Output: <code>neutral</code>. One line of instruction, one worked example, one input. The model already knows what sentiment is. The example is there to stop it answering in a paragraph.</p><p>Context engineering is the wider frame. Anthropic&#8217;s <a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents">line</a> is that prompt engineering covers &#8220;methods for writing and organizing LLM instructions for optimal outcomes,&#8221; while context engineering covers curating everything else that lands in the window at inference time: retrieved documents, tool definitions, memory, history. Karpathy&#8217;s <a href="https://www.dbreunig.com/2025/06/25/prompts-vs-context.html">version</a> is &#8220;filling the context window with the right information for the next step.&#8221; For a single-turn feature the prompt is most of the game. Inside an agent it&#8217;s a subset.</p><h2>Prompting is part of the development cycle now</h2><p>A <code>SKILL.md</code> for Claude is a prompt. So is the <code>CLAUDE.md</code> at the root of a project, the description on every tool you hand an agent, every subagent definition in a Claude Agent SDK pipeline, the goal you hand a loop, and the <code>.prompt</code> files in <a href="https://output.ai">Output</a>. None of those are chat. They ship, they get reviewed, and they break on upgrade.</p><p>Which is the part people still underrate. A <a href="https://arxiv.org/html/2507.05573">2025 migration case study</a> found prompts stabilized for GPT-4-32k passing at only 98% on GPT-4.1 and 97.3% on GPT-4.5-preview. Prompts rot like dependencies, and nothing in CI notices unless you wrote the eval.</p><h2>Anatomy, and the one part that&#8217;s a trust boundary</h2><p>Instruction with a definition of done, context, delimited input, output schema. That decomposition is old news, and OpenAI&#8217;s reasoning guidance still puts it well: <a href="https://developers.openai.com/api/docs/guides/reasoning">&#8220;avoid vague instructions by defining what counts as done.&#8221;</a> Here it is with all four parts labelled:</p><pre><code><code># Identity                          &lt;- role, one sentence
You are a support triage assistant for a B2B billing product.

# Instructions                      &lt;- instruction, with a definition of done
Assign exactly one category from the list. Output the category name only,
lowercase, no punctuation. If the ticket matches none, output "other".

# Categories                        &lt;- context the model can't infer
billing_dispute | refund_request | plan_change | access_issue | other

# Ticket                            &lt;- the input, delimited
&lt;ticket&gt;
Charged twice for the October invoice, need one reversed.
&lt;/ticket&gt;</code></code></pre><p>Output: <code>billing_dispute</code>. Those delimiters around the ticket are doing real work. They tell the model where your instructions stop and a stranger&#8217;s text begins.</p><p>The part worth arguing about is where each piece goes. System and developer messages carry higher privilege in the <a href="https://openai.com/index/the-instruction-hierarchy/">instruction hierarchy</a> OpenAI trains models to respect. Role, rules and output format go there. Untrusted content goes in user messages or tool results, never in a developer message: <a href="https://developers.openai.com/api/docs/guides/agent-builder-safety">OpenAI&#8217;s agent safety guidance</a> is explicit about not putting untrusted variables there. The message-role split is an access-control decision, not formatting.</p><p>Ordering is the part that stopped being portable. Anthropic says to <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices">put long documents at the top, above your query</a>, and claims it &#8220;improves performance across all models.&#8221; Google <a href="https://ai.google.dev/gemini-api/docs/prompting-strategies">says the same</a>: all context first, question last. OpenAI&#8217;s general guide puts context near the end, but the <a href="https://developers.openai.com/cookbook/examples/gpt4-1_prompting_guide">GPT-4.1 guide</a> recommends instructions both before <em>and</em> after a long document. Three vendors, three answers. Pick per model and measure.</p><h3>Role prompting got quietly demoted</h3><p>&#8220;You are an expert X&#8221; was sold as an accuracy technique. It isn&#8217;t one any more, and the vendors have moved without announcing it. OpenAI&#8217;s o3 guidance scopes role prompting to <a href="https://developers.openai.com/cookbook/examples/o-series/o3o4-mini_prompting_guide">&#8220;setting the base behavior, tone and outlining the set of actions that are possible.&#8221;</a> Anthropic&#8217;s Claude Opus 4.6 tutorial goes further: <a href="https://claude.com/resources/tutorials/get-the-most-from-claude-opus-4-6">&#8220;Skip the role setting... It infers the appropriate level of expertise from the task and context you provide.&#8221;</a></p><p>The research is why. A <a href="https://arxiv.org/pdf/2512.05858">Wharton study</a> found no expert or low-knowledge persona that reliably improved GPQA Diamond across six models, and no significant gain on MMLU-Pro for five of six. <a href="https://aclanthology.org/2025.emnlp-main.1364/">Peer-reviewed work</a> found expert personas usually neutral, and models &#8220;highly sensitive to irrelevant persona details, with performance drops of almost 30 percentage points.&#8221; A <a href="https://arxiv.org/html/2607.17420">2026 preprint</a> measured a librarian persona dropping mean correctness on Claude Opus from 0.92 to 0.67.</p><p>Keep the role sentence for tone and scope. Don&#8217;t expect it to make the answers more correct.</p><h2>The prompt-writing checklist</h2><p>When a prompt underperforms, the cause is usually somewhere on this list and not in the technique.</p><ol><li><p><strong>State the task and what &#8220;done&#8221; looks like.</strong> Not &#8220;summarize this&#8221; but &#8220;three bullets, under 20 words each, no preamble.&#8221;</p></li><li><p><strong>Say what to do, not only what to avoid.</strong> Negative instructions aren&#8217;t testable.</p></li><li><p><strong>Delimit every piece of input</strong> with XML tags, Markdown headings, or <code>"""</code>. Pick one convention and hold it.</p></li><li><p><strong>Put the output format in the system or developer message</strong>, then enforce it at the API with structured outputs where the schema matters.</p></li><li><p><strong>One role sentence, task-specific.</strong> No stacked adjectives.</p></li><li><p><strong>Static content first, variable content last</strong> so prompt caching can hit the prefix.</p></li><li><p><strong>Show it to a colleague with no context.</strong> Anthropic&#8217;s golden rule: if they&#8217;d be confused, so is the model.</p></li></ol><h2>The foundational techniques, re-scored</h2><h3>Zero-shot is the default, not the baseline</h3><p>A <a href="https://aclanthology.org/2025.findings-emnlp.729.pdf">peer-reviewed 2025 paper</a> put Qwen2.5-72B-Instruct on GSM8K at 95.83 zero-shot with corrected answer extraction, against 95.75 with 8-shot exemplars. The examples bought nothing.</p><p><strong>One example is the count most likely to make things worse.</strong> GPT-4o-mini on AG News scored 0.8446 F1 at zero-shot, dropped to 0.8248 at one shot, and only passed its own baseline at two (<a href="https://arxiv.org/html/2607.22969v1">arXiv:2607.22969</a>). GPT-5 on biomedical QA does the same thing: 0.762 zero-shot, 0.737 at one shot, 0.768 at five (<a href="https://arxiv.org/pdf/2509.04462">arXiv:2509.04462</a>). If you shipped a one-shot prompt without testing zero-shot, you may have paid tokens to lose accuracy.</p><p>Start zero-shot with an explicit output format. Add machinery when your evals show a gap, not in advance.</p><h3>Few-shot examples are versioned config</h3><p>Two to five labeled pairs, for patterns that are easier to show than to describe: a house style for summaries, an odd label taxonomy. Anthropic is the only vendor that publishes a number, and it&#8217;s <a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/multishot-prompting">&#8220;3-5 examples for best results.&#8221;</a> OpenAI says &#8220;a handful.&#8221; Google says experiment, and to <a href="https://ai.google.dev/gemini-api/docs/prompting-strategies">&#8220;always include few-shot examples.&#8221;</a></p><p>What examples teach is narrower than most people assume. Replace the gold labels in your demonstrations with random ones and <a href="https://aclanthology.org/2022.emnlp-main.759/">accuracy falls 0-5% absolute</a>. You can watch it happen:</p><pre><code><code>This is awesome! // Negative
This is bad! // Positive
Wow that movie was rad! // Positive
What a horrible show! //</code></code></pre><p>Output: <code>Negative</code>. Correct, despite every label above it being wrong. The examples transmitted the label space and the <code>//</code> format, not the answers. Strip the format and you do worse than no examples at all.</p><p>The fragility is the story. The accuracy gap between demo-selection algorithms reached <a href="https://arxiv.org/html/2410.23099">45% on MRPC</a>. Moving demonstrations from the front of a prompt to the back <a href="https://aclanthology.org/2025.emnlp-main.1503/">flipped over 30% of QA predictions</a> in a 2025 study, without improving correctness. Google warns that <a href="https://ai.google.dev/gemini-api/docs/prompting-strategies">too many examples</a> cause overfitting, and examples buried mid-prompt hit the <a href="https://aclanthology.org/2024.tacl-1.9/">&#8220;lost in the middle&#8221;</a> positional problem.</p><p>Three inputs that all look like cosmetics (which examples, how many, where) move accuracy more than most model swaps do. Formatting alone is in the same range: researchers who changed nothing else measured GPT-3.5-turbo differences of <a href="https://arxiv.org/html/2411.10541">up to 40% on code translation</a>. Version the examples, diff them, cover them with evals.</p><p>Two rules with numbers behind them. Put demonstrations at the <strong>start</strong>: best position across ten model families, worth up to 6 points, and it puts the stable text where the cache can reach it. And never sort examples by label: at 1,169 shots on Clinic-150 that cost <a href="https://arxiv.org/html/2405.00200v1">25.7 points</a>.</p><h3>Chain-of-thought is mostly a math-formatting effect</h3><p>The technique arrived twice. <a href="https://arxiv.org/abs/2201.11903">The first version</a> needed eight hand-written reasoning chains per task, which is real authoring work for one prompt. <a href="https://arxiv.org/abs/2205.11916">Four months later</a>, most of that gain turned out to be free: five words appended to the question, <em>Let&#8217;s think step by step</em>. On text-davinci-002 that took MultiArith from 17.7% to 78.7% and GSM8K from 10.4% to 40.7%, with no examples at all.</p><p>Their Figure 1 is still the clearest before-and-after:</p><blockquote><p>A juggler can juggle 16 balls. Half of the balls are golf balls, and half of the golf balls are blue. How many blue golf balls are there?</p></blockquote><p>Without the trigger the model answers <code>8</code>. It halves once and stops. With it: &#8220;There are 16 balls in total. Half of the balls are golf balls. That means that there are 8 golf balls. Half of the golf balls are blue. That means that there are <strong>4</strong> blue golf balls.&#8221;</p><p>CoT pays when the answer needs two or more steps that depend on each other, and answering directly collapses them into one.</p><p>A <a href="https://arxiv.org/html/2409.12183">meta-analysis of more than 100 papers</a> put it at +14.2 pp on symbolic reasoning, +12.3 pp on math, and no meaningful gain on commonsense tasks. 95% of CoT&#8217;s total MMLU gain came from questions containing &#8220;=&#8221; in the question or output.</p><p>Where it works, it&#8217;s decisive. <a href="https://arxiv.org/html/2608.09942">+59.9 pp on GSM8K for Llama-3.1-8B-Instruct</a>, and Qwen-2.5-7B-Instruct went from 23.1% to 91.1% on GSM8K in the same 2026 study.</p><p>Where it doesn&#8217;t, it costs you. The same Qwen model dropped 28.7 points on HumanEval code generation. Forcing explicit steps cut o1-preview accuracy by <a href="https://arxiv.org/html/2410.21333v1">36.3% absolute</a> on implicit-learning tasks. On reasoning models, prompted CoT bought small GPQA gains for 20-80% more response time, and <a href="https://arxiv.org/html/2506.07142">35-600% longer responses</a> on non-reasoning models.</p><p>Use it for math and symbolic work on non-reasoning models. On reasoning models, use the native control instead: <a href="https://ai.google.dev/gemini-api/docs/gemini-3">Gemini 3 guidance</a> says to replace CoT prompting with <code>thinking_level: 'high'</code> and simplified prompts.</p><p>One thing to know before you show a reasoning trace to anyone. Causal mediation across twelve models found GPT-4 changed its answer only <a href="https://aclanthology.org/2024.findings-emnlp.882/">30% of the time</a> when its reasoning chain was swapped for a perturbed one. CoT changes accuracy; it does not give you an audit trail.</p><h2>The advanced techniques, and what they cost</h2><h3>Tree of Thoughts belongs in batch jobs</h3><p><a href="https://arxiv.org/abs/2305.10601">Tree of Thoughts</a> branches several candidate thoughts per step, scores them, and searches with BFS or DFS. Game of 24 with GPT-4: 74% success against 4.0% for CoT.</p><p>The appendix prices it at 0.47 for best-of-100 CoT, and the authors say it <a href="https://arxiv.org/html/2305.10601v2">&#8220;could require 5-100 times more generated tokens than CoT&#8221;</a> depending on the search setup. My judgment, not a paper&#8217;s: batch jobs on search-like problems, planning and constrained generation. I&#8217;ve never found a user-facing path where the latency was acceptable, and I don&#8217;t have a controlled benchmark behind that.</p><h3>ReAct survived as a loop, not as a parser</h3><p><a href="https://arxiv.org/html/2210.03629v3">ReAct</a> interleaves Thought &#8594; Action &#8594; Observation: 71% task success on ALFWorld against 45% for action-only prompting.</p><p>In 2026 the loop is an API contract. The assistant turn carries the thought as text and the action as a structured block:</p><pre><code><code>{
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    { "type": "text",
      "text": "I'll check the current weather in San Francisco for you." },
    { "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": { "location": "San Francisco, CA", "unit": "celsius" } }
  ]
}</code></code></pre><p>You run the tool and send the observation back as a user message, keyed to the call:</p><pre><code><code>{ "role": "user",
  "content": [{ "type": "tool_result",
    "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
    "content": "15 degrees" }] }</code></code></pre><p>Failures go back the same way with <code>"is_error": true</code> rather than being swallowed; the model recovers better from a visible error than from a silent one. Loop while <code>stop_reason</code> is <code>tool_use</code>, exit on <code>end_turn</code>. <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/how-tool-use-works">Anthropic&#8217;s docs</a> never say &#8220;ReAct&#8221;; the mapping is structural. If you are still regexing <code>Action:</code> out of free text, that&#8217;s a 2023 artifact.</p><p>The Thought half is the contested part. A <a href="https://mlanthology.org/tmlr/2025/bhambri2025tmlr-think/">peer-reviewed 2025 study</a> found performance <a href="https://mlanthology.org/tmlr/2025/bhambri2025tmlr-think/">&#8220;is minimally influenced by the interleaved reasoning trace.&#8221;</a> <a href="https://arxiv.org/html/2410.02810v2">StateAct</a> scored 27.80% on WebShop with the thought step removed against ReAct&#8217;s 17.80%. <a href="https://arxiv.org/html/2605.09252v2">When2Tool</a> is the alarming one: adding Reason-then-Act dropped Llama-3.1-8B tool accuracy from 79.5% to 31.2%.</p><p>It cuts the other way too. Anthropic&#8217;s <a href="https://www.anthropic.com/engineering/claude-think-tool">think tool</a> with tuned prompting hit 0.584 on &#964;-bench Airline against a 0.332 baseline, beating native extended thinking at 0.412. <a href="https://arxiv.org/html/2509.18076">ToolGT</a> found structured templates beat free-form CoT which beat no thought at all.</p><p>Both results can be true. Models trained for native tool calling already know what to call, so an extra verbal layer is at best neutral. Text-formatted agents still benefit. Test with the trace and without it rather than assuming.</p><h3>Self-consistency has collapsed on frontier models</h3><p><a href="https://arxiv.org/abs/2203.11171v4">Self-consistency</a> samples several CoT paths at nonzero temperature and takes the majority answer. On PaLM-540B and GSM8K that went from 56.5 to 74.4 at 40 paths, with 5-10 paths capturing most of it. <a href="https://arxiv.org/html/2401.10480">Early-stopping variants</a> matched 40-sample accuracy on GSM8K at an average of 14.65 samples.</p><p>Now run it on a frontier model. Gemini-2.5-Pro on MATH-500 goes from <a href="https://arxiv.org/html/2511.00751v2">98% at one path to 99.6% at 15</a>. A 1.6-point gain for roughly 15&#215; the tokens.</p><h3>RAG is the cheap option, not just the grounded one</h3><p>The grounding case is well known: in the <a href="https://aclanthology.org/anthology-files/anthology-files/pdf/findings/2025.findings-emnlp.849.pdf">XRAG benchmark</a>, GPT-4o went from 6.30% accuracy without retrieval to 75.40% with oracle retrieval.</p><p>The cost case gets skipped. The <a href="https://arxiv.org/html/2606.20898v1">Token Tax study</a> priced long-context prompting at ~4.50 for semantic RAG on the same manufacturing benchmark. Roughly 26&#215; for stuffing the window instead of retrieving into it.</p><p>One failure mode to measure for: a <a href="https://link.springer.com/article/10.1007/s10994-026-07121-y">2026 Springer benchmark</a> found hybrid retrieval sometimes increased hallucination in smaller models even as retrieval recall improved. Score faithfulness, not just recall.</p><h3>Let the optimizer write it</h3><p>The newest option here is to stop writing the prompt yourself.</p><p><a href="https://arxiv.org/abs/2507.19457v2">GEPA</a> runs a candidate prompt on a minibatch, captures the traces and whatever the environment said back (compiler errors, judge notes), and shows a reflection model the whole tuple so it can propose a revision. It keeps a Pareto frontier of candidates that win on at least one example rather than one global best. On GPT-4.1 Mini across six benchmarks it beat MIPROv2 by more than double: +12.19 aggregate against +5.64. Against GRPO reinforcement learning it won five of six tasks, by up to 19 points, using up to 35&#215; fewer rollouts.</p><p>Prompt evolution now beats reinforcement learning on most tasks at a fraction of the sample cost, which was not true in 2024.</p><p>The prerequisites are the catch, and they&#8217;re the same three things evals need: a metric that scores an example, a representative dataset, and a test set you haven&#8217;t touched. Without them it optimizes noise. Across 72 optimization runs on Claude Haiku 4.5, <a href="https://arxiv.org/html/2604.14585v2">49% scored below zero-shot</a>: a coin flip, driven by eval sets too small to measure with.</p><p>Three more things worth knowing before you reach for it. More data is not better: Decagon found peak performance at <a href="https://decagon.ai/blog/optimizing-gepa-for-production">20 samples</a>, with 500 costing 2% accuracy and 75% prompt bloat. The reflection model has to be strong, since a weak one returns your seed prompt nearly unchanged. And it optimizes around bugs rather than fixing them. GEPA drove a <a href="https://aclanthology.org/2026.acl-srw.8.pdf">defective GSM8K seed</a> from 23.81% down to 13.50% while the root cause sat there untouched.</p><p>We haven&#8217;t put this in production at GrowthX. Our prompts change faster than a compile cycle would pay for, which is a statement about our release cadence rather than about GEPA.</p><h2>Sampling settings: mostly stop tuning them</h2><p><strong>OpenAI.</strong> Temperature 0-2, no stated default, no top_k support. Reasoning control is <code>reasoning_effort</code>.</p><p><strong>Anthropic.</strong> Temperature 0.0-1.0, default 1.0, top_k documented for advanced use only. Reasoning control is <code>effort</code>, the adaptive-thinking parameter.</p><p><strong>Google Gemini.</strong> Temperature 0.0-2.0, default 1.0, top_k supported and fixed at 64 on Gemini 2.5 Pro. Reasoning control is <code>thinkingLevel</code> or <code>thinkingBudget</code>.</p><p>On classic models the advice is unchanged: 0-0.3 for extraction, classification and function calling, 0.7-1.0 for creative generation, and alter temperature or top_p <a href="https://developers.openai.com/api/reference/resources/chat">&#8220;but not both.&#8221;</a> OpenAI&#8217;s cookbook uses <code>temperature=0</code><a href="https://developers.openai.com/cookbook/examples/structured_outputs_intro"> for function calling and 0.2 for structured summarization</a>.</p><p>On reasoning models, the knobs are being taken away. Anthropic&#8217;s Claude Opus 5 / Sonnet 5 generation returns a <a href="https://platform.claude.com/docs/en/build-with-claude/thinking">400 error on non-default temperature, top_p, or top_k</a>; you steer with the adaptive-thinking <code>effort</code> parameter. Google&#8217;s <a href="https://ai.google.dev/gemini-api/docs/generate-content/gemini-3">Gemini 3 guidance</a> recommends keeping temperature &#8220;at its default value of 1.0&#8221; and warns that lowering it can cause looping and degraded reasoning. On reasoning models there is close to nothing left to tune.</p><p>The caveat that bites people writing tests: Anthropic documents that <a href="https://docs.anthropic.com/en/api/messages">&#8220;even with temperature of 0.0, the results will not be fully deterministic,&#8221;</a> and Google <a href="https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/content-generation-parameters">says the same</a>. Exact-match assertions on model output will flake.</p><h2>Prompting inside an agent loop</h2><p>Single-turn prompting is one shot at getting the wording right. Agent prompting has to survive dozens of iterations, each one putting tool output back into the window.</p><ul><li><p><strong>Tool descriptions are prompt engineering.</strong> Anthropic calls them <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools">&#8220;by far the most important factor in tool performance&#8221;</a> and asks for 3-4 sentences minimum. The evidence backs the emphasis: renaming functions to <code>func_N</code> <a href="https://arxiv.org/html/2506.11266v2">significantly drops performance</a>, and tools with edited descriptions get <a href="https://arxiv.org/abs/2505.18135">over ten times more usage</a>. OpenAI&#8217;s version is the intern test: could a human use this function given only what you gave the model? Say when to use a tool and when not to; hedged instructions like <code>"If in doubt, use [tool]"</code> cause <a href="https://docs.anthropic.com/en/prompt-library/library">overtriggering</a>.</p></li><li><p><strong>Make invalid states unrepresentable.</strong> Enums for finite sets, <code>user_id</code> not <code>user</code>, documented ranges. Turn on strict mode, and note it disables parallel tool calls.</p></li><li><p><strong>Narrow the mandate per step.</strong> OpenAI&#8217;s Atlas hardening guidance says to <a href="https://openai.com/index/hardening-atlas-against-prompt-injection/">&#8220;avoid overly broad prompts like &#8216;review my emails and take whatever action is needed.&#8217;&#8221;</a> Broad mandates compound errors across steps and widen the injection surface.</p></li><li><p><strong>Curate state, don&#8217;t accumulate it.</strong> Decide at each step what history and retrieval results enter the window, and filter tool output the same way.</p></li><li><p><strong>Tool output is untrusted input.</strong> Anything a tool fetched from a third party is attacker-controlled text arriving inside your loop.</p></li></ul><h2>Frameworks are checklists, not engineering</h2><p>Three have published provenance. <strong>CLEAR</strong> (Leo S. Lo, <em><a href="https://www.sciencedirect.com/science/article/pii/S0099133323000599?via%3Dihub">Journal of Academic Librarianship</a></em><a href="https://www.sciencedirect.com/science/article/pii/S0099133323000599?via%3Dihub">, 2023</a>) is Concise, Logical, Explicit, Adaptive, Reflective, and works as a review rubric. <strong>PROMPT Design</strong> (Sarah Hartman-Caverly, <a href="https://sites.psu.edu/digitalshred/2024/02/13/prompt-design-framework-and-worksheet/">Penn State, 2024</a>) is a fill-in-the-blanks scaffold for non-engineers; the academic <a href="https://eber.uek.krakow.pl/index.php/eber/article/download/2142/863">AI PROMPT framework</a> covers similar ground with more emphasis on delimiting elements and token length. <strong>PASTAS</strong> (Lo again, <em><a href="https://muse.jhu.edu/pub/1/issue/57157">portal: Libraries and the Academy</a></em><a href="https://muse.jhu.edu/pub/1/issue/57157">, 2026</a>) was written for the agentic era, and its Tools and Safeguards items map onto the two sections above.</p><p>They help a team remember requirements. They don&#8217;t replace measuring: a CLEAR-compliant prompt that fails your evals is still a failed prompt.</p><h2>Fine-tuning is still the last resort</h2><p>Every provider now documents the same sequence: evals, prompting, RAG for external knowledge, fine-tuning when prompting hits a measured ceiling. OpenAI&#8217;s model-optimization guide says <a href="https://developers.openai.com/api/docs/guides/model-optimization">&#8220;the prompt engineering process may be all you need,&#8221;</a> and its fine-tuning platform is winding down, with existing users able to create training jobs only &#8220;for the coming months.&#8221;</p><p>The thresholds worth holding to:</p><ul><li><p><strong>Volatility.</strong> Microsoft&#8217;s split is <a href="https://learn.microsoft.com/en-us/azure/developer/ai/augment-llm-rag-fine-tuning">dynamic content &#8594; RAG, stable content &#8594; fine-tuning</a>. Hamel Husain&#8217;s version: <a href="https://hamel.dev/blog/posts/fine_tuning_valuable.html">&#8220;fine-tuning works best to learn syntax, style and rules whereas RAG works best to supply the model with context or up-to-date facts.&#8221;</a></p></li><li><p><strong>Example count.</strong> OpenAI recommends <a href="https://developers.openai.com/api/docs/guides/supervised-fine-tuning">50 well-crafted demonstrations</a> for SFT; a <a href="https://aclanthology.org/2025.emnlp-main.9/">peer-reviewed 2025 study</a> puts the classification break-even near 100 labeled examples. At 20-40, Jason Liu argues you are <a href="https://jxnl.co/writing/2025/01/22/10-foot-guns-in-fine-tuning-and-few-shots/">better off with prompt caching</a>.</p></li><li><p><strong>Good enough.</strong> The applied-llms.org rule: <a href="https://applied-llms.org/">&#8220;if prompting gets you 90% of the way there, then finetuning may not be worth the investment.&#8221;</a></p></li><li><p><strong>The bill nobody quotes.</strong> Husain estimates <a href="https://hamel.dev/blog/posts/evals/">&#8220;99% of the labor involved with fine-tuning is assembling high-quality data.&#8221;</a> The <a href="https://arxiv.org/abs/2305.11206">LIMA result</a> cuts both ways: 1,000 curated examples fine-tuned a 65B model to outputs preferred over GPT-4&#8217;s in 43% of comparisons. Quality beats volume, and curating 1,000 excellent examples is still real work.</p></li></ul><p>Prompt caching is the middle path in production. Anthropic prices cache reads at <a href="https://docs.anthropic.com/en/docs/about-claude/pricing">0.1&#215; base input</a> and AWS says caching <a href="https://docs.aws.amazon.com/decision-guides/latest/decision-guides/bedrock-or-sagemaker.html">can cut costs up to 90%</a>. At GrowthX our source material changes weekly, so we&#8217;ve stayed on prompting plus RAG. I haven&#8217;t hit a case where a fine-tune was worth the data-assembly cost, which is a statement about our volatility rather than about fine-tuning.</p><h2>Security: assume the prompt leaks and the tools lie</h2><p>The documented record includes 15+ named injection incidents between 2022 and 2026, and in 2026 alone five CVE identifiers across four agent-framework incident groups. Google measured a <a href="https://blog.google/security/prompt-injections-web/">32% relative increase in malicious prompt-injection categories</a> on the web between November 2025 and February 2026.</p><p><strong>Injection.</strong> Riley Goodside demonstrated it <a href="https://threadreaderapp.com/thread/1569128808308957185.html">publicly</a> against GPT-3 in September 2022. By 2025 it was zero-click: <a href="https://nvd.nist.gov/vuln/detail/cve-2025-32711">EchoLeak (CVE-2025-32711)</a> exfiltrated data from Microsoft 365 Copilot with no user interaction. Researchers reported successful injections in <a href="https://arxiv.org/abs/2410.23308v1">56% of 144 tests across 36 models</a>. Wording will not save you; the mitigations are architectural. <a href="https://platform.claude.com/docs/en/docs/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks">Anthropic&#8217;s guardrail guidance</a> says to deliver third-party content inside <code>tool_result</code> blocks, keep it out of system prompts, and JSON-encode it so delimiters are unambiguous. OpenAI&#8217;s <a href="https://openai.com/index/designing-agents-to-resist-prompt-injection/">agent guidance</a> adds that defense &#8220;cannot rely only on filtering inputs. It also requires designing the system so that the impact of manipulation is constrained.&#8221; Least privilege per tool, confirmation before irreversible actions.</p><p><strong>Leaking.</strong> Kevin Liu pulled Bing Chat&#8217;s <a href="https://arstechnica.com/information-technology/2023/02/ai-powered-bing-chat-spills-its-secrets-via-prompt-injection-attack/">&#8220;Sydney&#8221; instructions</a> in February 2023. OWASP&#8217;s guidance is that <a href="https://genai.owasp.org/llmrisk/llm07-insecure-plugin-design/">&#8220;the system prompt should not be considered a secret, nor should it be used as a security control.&#8221;</a> Keep credentials and keys out of the prompt; assume it leaks.</p><p><strong>Jailbreaking.</strong> From DAN to <a href="https://arxiv.org/abs/2412.03556">Best-of-N attacks</a> at 89% success on GPT-4o with 10,000 augmented prompts. Layered classifiers are the answer that measures: Anthropic&#8217;s <a href="https://www.anthropic.com/research/constitutional-classifiers">Constitutional Classifiers</a> cut jailbreak success from 86% to 4.4%. Google Cloud&#8217;s <a href="https://docs.cloud.google.com/model-armor/overview">Model Armor</a> screens prompts and responses, OpenAI&#8217;s free <a href="https://platform.openai.com/docs/guides/moderation">Moderation API</a> covers the basics.</p><p>OpenAI calls adversarial robustness <a href="https://openai.com/index/prompt-injections/">&#8220;a hard, open problem,&#8221;</a> and Anthropic notes that even a 1% attack success rate &#8220;still represents meaningful risk.&#8221; Budget for defense in depth from day one if your agent reads email or the open web, both channels the <a href="https://arxiv.org/abs/2508.12175">Gemini promptware research</a> weaponized.</p><h2>Where prompts usually break</h2><ul><li><p><strong>Negative framing.</strong> &#8220;Be concise&#8221; is not testable. Anthropic recommends the positive form: instead of <code>"Do not use markdown"</code>, write <code>"Your response should be composed of smoothly flowing prose paragraphs."</code></p></li><li><p><strong>No output schema.</strong> It breaks parsers, and per OpenAI&#8217;s safety docs structured outputs also <a href="https://developers.openai.com/api/docs/guides/agent-builder-safety">&#8220;eliminate freeform channels that attackers can exploit.&#8221;</a> One constraint, two problems.</p></li><li><p><strong>Trusting the documented context window.</strong> Performance degrades <a href="https://aclanthology.org/2025.findings-emnlp.1264/">13.9%-85% within claimed windows</a>, with relevant information missed in <a href="https://aclanthology.org/2024.tacl-1.9/">middle positions</a>. We hit it ourselves: a vendor documented 128,000 tokens and our task started degrading well before that. Retrieve less, better.</p></li><li><p><strong>Technique for technique&#8217;s sake.</strong> CoT cost o1-preview 36.3 points on implicit-learning tasks, and in a <a href="https://arxiv.org/abs/2603.25960v1">2026 medical study</a> it cut accuracy 5.7% while few-shot examples cut it 11.9%.</p></li><li><p><strong>Not reading what your framework sends.</strong> Husain&#8217;s <a href="https://hamel.dev/blog/posts/prompt/">prompt inspection</a> found LangChain&#8217;s SmartLLMChain shipping a typo (<code>'Let'w'</code>) in its critique prompt and Guidance making 7 API calls where 2 sufficed. Log the raw request once per integration, minimum.</p></li></ul><h2>Evals are the job</h2><p>Draft, run against a fixed test set, score, change one variable, version like code. The loop exists because output varies: even temperature 0 isn&#8217;t deterministic, so one passing run proves nothing.</p><p>This is the reasoning behind Evals Driven Development: repeated runs scored against a rubric instead of exact-match assertions. After we rewrote the rubric, the measured pass rate on our 60-query test set went from 74% to 86%. That number is ours; the method transfers. Shreya Shankar&#8217;s guidance to <a href="https://hamel.dev/blog/posts/evals-faq/why-is-error-analysis-so-important-in-llm-evals-and-how-is-it-different-from-error-analysis-in-llm-evals-and-how-is-it-performed.html">review at least 100 traces before designing any rubric</a> matches our experience: rubrics written before error analysis test failures that never happen.</p><p>The checklist:</p><ol><li><p>Collect 50-100 real inputs before writing the prompt. Include the ugly ones.</p></li><li><p>Simplest zero-shot prompt with an explicit output format, run 3-5 times per input.</p></li><li><p>Error analysis first, rubric second, written from observed failures.</p></li><li><p>One variable at a time: wording, examples, format, technique.</p></li><li><p>Version every prompt, log every run. <a href="https://docs.promptlayer.com/features/prompt-registry/overview">PromptLayer&#8217;s registry</a> documents version diffs and release labels; LangSmith and Langfuse do the same job. Ours lives in Output, where prompts and evals sit next to traces and cost tracking in the repo. Disclosure: Output is my open-source project.</p></li><li><p>Gate merges on eval regressions. <a href="https://deepeval.com/docs/evaluation-unit-testing-in-ci-cd">DeepEval</a> runs in pytest with an <code>--official</code> baseline; the pattern generalizes.</p></li><li><p>Track tokens and cost per prompt version next to quality. A quality win that doubles spend is a decision, not a detail.</p></li></ol><p>Calibrate LLM judges against human labels before trusting them, and score asynchronously where you can. Synchronous judging adds seconds per request.</p><h2>FAQ</h2><p><strong>How do I pick a technique?</strong> Zero-shot with an output format. Few-shot when the pattern resists description. CoT for math and symbolic work on non-reasoning models, native thinking controls on reasoning models. Self-consistency or ToT only for batch work where an eval shows a gap worth 5-100&#215; the tokens. RAG when the knowledge is external, changes often, or is cheaper to retrieve than to stuff.</p><p><strong>How many examples should I use?</strong> Anthropic says 3-5 and is the only vendor publishing a number. The rule that matters more: measure zero-shot and 2-5 shots before you commit, because one example often scores below none.</p><p><strong>What temperature should I use?</strong> 0-0.3 for extraction and function calling, 0.7-1.0 for creative work, one of temperature or top_p but not both. On reasoning models, leave it alone and use <code>reasoning_effort</code>, <code>effort</code>, or <code>thinkingLevel</code>.</p><p><strong>Should I tell the model it&#8217;s an expert?</strong> For tone and scope, yes, one sentence. For accuracy, no. No vendor has published a controlled ablation showing it works on a current reasoning model, and irrelevant persona detail has measured costs.</p><p><strong>When does fine-tuning beat prompting?</strong> When prompting has a measured ceiling, the target is a stable style or format, and you have 50-100+ curated examples plus appetite for the data work. Below that, caching and RAG are cheaper.</p><p><strong>Should I use an automatic prompt optimizer?</strong> Only if you already have an eval suite, a few hundred representative examples, and a held-out test set. With those, GEPA is the strongest thing available. Without them, half the runs come out worse than zero-shot.</p><p><strong>Minimum security posture for a prompted feature?</strong> Assume the system prompt leaks, so keep secrets out of it. JSON-encode untrusted input and keep it out of developer messages. Least privilege per tool, a classifier on inputs, confirmation before irreversible actions.</p><p><strong>Is prompt engineering a viable career in 2026?</strong> No, and it never was. It was a job title minted by a hype cycle. The <a href="https://arxiv.org/html/2506.00058v2">University of Oulu study</a> found 72 exact-title postings out of 20,662, under 0.5%.</p><p>The skill went the other way. Lightcast counted mentions rising from ~1,400 in 2023 to ~6,300 in 2024, and O&#8217;Reilly measured <a href="https://www.oreilly.com/radar/technology-trends-for-2025/">456% year-over-year growth</a> in prompt engineering content usage. It became part of the job, like knowing how to write a migration.</p><p>&#8220;Loop engineering&#8221; is the 2026 reprise of the same bs. Real skill, fake title. Learn it as part of the stack.</p><p>The 2024 version of this post aged in two years. This one will too, and the part that ages first is always the benchmark numbers rather than the method. If you run these against your own eval set and get different numbers, I want to hear about it. Mine are one team&#8217;s.</p>]]></content:encoded></item><item><title><![CDATA[Joining GrowthX]]></title><description><![CDATA[We hiring founding engineers]]></description><link>https://journal.daniellopes.dev/p/joining-growthx</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/joining-growthx</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Thu, 19 Dec 2024 16:46:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I'm thrilled to share some exciting news: I've joined GrowthX.ai.</p><p>What we&#8217;ve achieved in just ~7 months since inception is remarkable. $3M+ in ARR. Profitable. Grew team to 15. Zero funding!</p><p>Here&#8217;s the backstory:</p><p>At the beginning of the year, I took a sabbatical to immerse myself in the world of large language models (LLMs). I dove deep into retrieval-augmented generation (RAG), prompting strategies, fine-tuning techniques, and more. </p><p>Fast forward to mid-September, I got introduced to <a href="https://www.linkedin.com/in/marcelsantilli/">Marcel Santilli</a>. Within minutes, it was clear&#8212;he was onto something big and had the experience + ambition to deliver on it.<br><br>Marcel's pitch:</p><ul><li><p>Brands need to become publishers.</p></li><li><p>Founders need to become influencers.</p></li><li><p>You need strategy + experts to deliver it, but AI can make it scalable.</p></li></ul><p>Having previously helped with marketing before, I immediately got it&#8212;and Marcel had already proven the model&#8217;s effectiveness. The technical and product needs for the business were exactly the kinds of things I had spent the last year+ studying.</p><p>In the past four months, we&#8217;ve spent long hours validating a roadmap, getting the right team structure, and defining the GTM. Now we have the ambitious goal of reaching $15 million in ARR by 2025. To achieve this, my top priorities are building the right infra and putting together a great technical team.</p><p>We just opened two roles for founding engineers: <a href="https://growthx.ai/careers">https://growthx.ai/careers</a>. We are a remote-first company hiring from anywhere, as long as we can have a 4-hour timezone overlap with San Francisco. If you&#8217;re interested, don&#8217;t hesitate to reach out!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FupV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FupV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 424w, https://substackcdn.com/image/fetch/$s_!FupV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 848w, https://substackcdn.com/image/fetch/$s_!FupV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 1272w, https://substackcdn.com/image/fetch/$s_!FupV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FupV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png" width="1203" height="518" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:518,&quot;width&quot;:1203,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25944,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!FupV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 424w, https://substackcdn.com/image/fetch/$s_!FupV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 848w, https://substackcdn.com/image/fetch/$s_!FupV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 1272w, https://substackcdn.com/image/fetch/$s_!FupV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa71ca141-3e0d-47cd-a2fc-78d89c581555_1203x518.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[7-Powers book notes]]></title><description><![CDATA[While mentoring the current Techstars cohort that I&#8217;m working with, I see myself mentioning Hamilton Helmer's book over and over.]]></description><link>https://journal.daniellopes.dev/p/7-powers-book-summary</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/7-powers-book-summary</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Thu, 19 Sep 2024 02:32:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!e3KM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>While mentoring the current Techstars cohort that I&#8217;m working with, I see myself mentioning <a href="https://www.amazon.com/7-Powers-Foundations-Business-Strategy/dp/0998116319">Hamilton Helmer's book</a> over and over. So here&#8217;s a quick a summary:</p><h1>Summary</h1><p>The main idea is that every single company that doesn't rely on cheating (corruption, government ties, etc.) to come to life and achieve long-term success (measured in profit/revenue) has to have at least one or more of these "powers":</p><ol><li><p>Scale Economies</p></li><li><p>Network effect</p></li><li><p>Counter positioning</p></li><li><p>Branding</p></li><li><p>Switching costs</p></li><li><p>Cornered resources</p></li><li><p>Process</p></li></ol><h2>Power progression</h2><p>The idea is that these powers aren't constant either, and especially in tech, things are much more dynamic than static. Just because you succeed with one of these powers doesn't mean it will sustain forever, and each power has different defensibility in the face of competition as well. He qualifies the impact and the moment you can rely on and try to chase each power based on the phases of the business:</p><ol><li><p>Origination</p></li><li><p>Take-off phase</p></li><li><p>Stability phase</p></li></ol><p>Each phase is self-explanatory, but his idea is that chasing specific barriers in the right phase of the business will build much higher competitive advantage and barriers for new players. Also, he is explicitly focused on business phases, not product life-cycle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e3KM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e3KM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e3KM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg" width="684" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:684,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e3KM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e3KM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccabf69a-e56a-4912-9577-cd40cb789a6b_684x529.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Powers applicable to Origination Phase</h3><p>Phase where you are between the creation of the business, building everything and just launched and/or haven't achieved growth or market fit yet.</p><ul><li><p>Counter positioning</p></li><li><p>Cornered resources</p></li></ul><h3>Applicable to Take-off Phase</h3><p>Take-off phase is when the business starts to achieve fast growth.</p><ul><li><p>Scale economies</p></li><li><p>Switching Costs</p></li><li><p>Network effect</p></li></ul><h3>Applicable to Stability phase</h3><p>The break between take-off and stability is when unit growth falls below about 30%-40% year.</p><ul><li><p>Branding</p></li><li><p>Process power</p></li></ul><h2>Now to the description and examples of each power (in order of business phases):</h2><h3>Counter positioning (origination)</h3><p>Can be identified by:</p><ul><li><p>An upstart who developed a superior business model.</p></li><li><p>That business model's ability to successfully challenge well-entrenched incumbents.</p></li><li><p>Steady accumulation of customers, all while incumbent remains paralyzed and unable to respond.</p></li></ul><p><strong>Ex</strong>: The new business model is superior to the incumbent's model due to lower costs and/or the ability to charge higher prices.</p><h4>Barrier of entrance:</h4><p>Incumbent(s) will eventually ask: "Am I better off staying the course, or adopting the new model?" If the answer is "stay off", then the barrier is high. A newcomer adopts a new, superior business model which the incumbent does not mimic due to anticipated damage to their existing business.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ryf8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ryf8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ryf8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg" width="684" height="463" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:463,&quot;width&quot;:684,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ryf8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ryf8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27ef931d-d247-4d9f-8155-27abaec765d3_684x463.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Counter-Positioning versus Disruptive Technologies (Clayton Christensen)</h4><ul><li><p>Digital photography vs Kodak - this is a DT, but not CP.</p></li><li><p>In-N-Out vs. McDonald's - this is CP, but not DT</p></li><li><p>Netflix streaming vs. HBO via cable - this is both CP and DT</p></li></ul><p>The case for playing humble: Cognitive Bias can play a role in deterring the incumbent. But the challenger, by its posture, may be able to influence such a move. How to attempt this? In its ascendancy, the challenger should avoid the temptation of trumpeting its superiority, instead suppressing that urge and adopting a tone of respect toward the incumbent.</p><p>Counter positioning is not exclusive. Different from other powers like Network Effect, strong counter positioning doesn't require (or create) a winner-takes-all situation.</p><h4>Five stages of the incumbent when dealing with successful counter positioning from a new challenger:</h4><ol><li><p>Denial (aka, "we are not competitors")</p></li><li><p>Ridicule (aka, "we are better")</p></li><li><p>Fear</p></li><li><p>Anger</p></li><li><p>Capitulation (frequently too late)</p></li></ol><p>Blockbuster execs showed all 5 stages in their public statements when facing Netflix. I personally dealt with founders on 1 and 2 many times (and always end up on 5 later).</p><p>Once market erosion becomes severe, a Counter-Positioned incumbent comes under tremendous pressure to do something; at the same time, they face great pressure to not upset the apple cart of the legacy business model. A frequent outcome of this duality? Let's call it dabbling: the incumbent puts a toe in the water, somehow, but refuses to commit in a way that meaningfully answers the challenge.</p><p>CP often underlies situations in which the following happens at the same time:</p><p>For the challenger:</p><ul><li><p>Rapid share gains</p></li><li><p>Strong profitability (or promise of it)</p></li></ul><p>For the incumbent:</p><ul><li><p>Share loss</p></li><li><p>Inability to counter the entrant's moves</p></li><li><p>Eventually management shake-up(s)</p></li><li><p>Capitulation</p></li></ul><div><hr></div><h3>Cornered resources (origination)</h3><p><strong>Benefit</strong>:</p><p>Cornered Resource can emerge in varied forms, offering uniquely different benefits. It might, for example, be preferential access to a valuable patent, such as that for a blockbuster drug; a required input, such as a cement producer's ownership of a nearby limestone source, or a cost-saving production manufacturing approach.</p><p><strong>Ex</strong>: In the Pixar case, the Brain Trust produced an uncommonly appealing product&#8212;"superior deliverables"&#8212;driving demand with very attractive price/volume combinations in the form of huge box office returns.</p><p><strong>Barrier</strong>:</p><p>Barrier in Cornered Resource is unlike anything we have encountered before. You might wonder: "Why does Pixar retain the Brain Trust?" Any one of this group would be highly sought after by other animated film companies, and yet over this period, and no doubt into the future, they have stayed with Pixar. In the case of spin casting technology, it is patent law, and in the case of cement inputs, it is property rights.</p><h4>The Five Tests to validate Cornered Resource:</h4><ol><li><p>Individual/Exclusive: If a firm repeatedly acquires coveted assets at attractive terms, then the proper strategy question is, "Why are they able to do this?" Ex: if Exxon was able to persistently gain the rights to desirable properties, then understanding their path to that is key. Do relative scale allows them to develop better discovery processes? If so, their discovery processes are the Cornered Resource.</p></li><li><p>Non-arbitraged: cost to keep the resource should be low enough to afford consistent differential returns (ex: a movie hiring Brad Pitt might move the box office but won't necessarily 10x the cost).</p></li><li><p>Transferable: If a resource creates value at a single company but would fail to do so at other companies, then isolating that resource as the source of Power would entail overlooking some other essential complement beyond operational excellence.</p></li><li><p>Ongoing: In searching for Power, a strategist tries to isolate a causal factor that explains continued differential returns. Ex. Post-it notes patent lasted for 30 years</p></li><li><p>Sufficient: The final Cornered Resource test concerns completeness: for a resource to qualify as Power, it must be sufficient for continued differential returns, assuming operational excellence. Ex. George Fisher joining Kodak wasn't enough.</p></li></ol><div><hr></div><h3>Switching costs (take-off phase)</h3><p><strong>Ex</strong>: SAP - 43% of users are unhappy but 85% say they will continue to pay for the product, and the sales validate their statements.</p><p><strong>Benefit</strong>:</p><p>A company that has embedded Switching Costs for its current customers can charge higher prices than competitors for equivalent products or services. Benefit only possible when you have additional offerings to sell.</p><p><strong>Barrier</strong>:</p><p>To offer an equivalent product, competitors must compensate customers for Switching Costs. The firm that has previously roped in the customer, then, can set or adjust prices in a way that puts their potential rival at a cost disadvantage, rendering such a challenge distinctly unattractive.</p><h4>Types of switching costs:</h4><ul><li><p>Financial: $ cost of investing and purchasing new solutions (ex: SAP)</p></li><li><p>Procedural: loss of familiarity or risk of adoption of a new product (ex: "nobody was ever fired for choosing IBM")</p></li><li><p>Relational: Affection with the provider (ex: sales team) or product/identity as a user.</p></li></ul><div><hr></div><h3>Network Effect (take-off phase)</h3><p><strong>Benefit</strong>:</p><p>Network Economies occur when the value of a product to a customer is increased by the use of the product by others (Branch Out vs LinkedIn)</p><p>A company in a leadership position with Network Economies can charge higher prices than its competitors, because of the higher value as a result of more users.</p><p><strong>Barrier</strong>:</p><p>For Network Economies, the barrier is the unattractive cost/benefit of gaining share, and this can be extremely high. In particular, the value deficit of a follower can be so large that the price discount needed to offset this is unthinkable.</p><p><strong>Example</strong>: The value of LinkedIn's HR Solutions Suite comes from the numbers of LinkedIn users, so LinkedIn can charge more than a competing product with fewer participants.</p><h4>Characteristics:</h4><p>Industries exhibiting Network Economies often exhibit these attributes:</p><ol><li><p>Winner take all: Businesses with strong Network Economies are frequently characterized by a tipping point: once a single firm achieves a certain degree of leadership, then the other firms just throw in the towel. Game over&#8212;the P&amp;L of a challenge would just be too ugly. For example, even a company as competent and with as deep pockets as Google could not unseat Facebook with Google+.</p></li><li><p>Boundedness: As powerful as this Barrier is, it is bounded by the character of the network, something well-demonstrated by the continued success of both Facebook and LinkedIn. Facebook has powerful Network Economies itself but these have to do with personal not professional interactions. The boundaries of the network effects determine the boundaries of the business.</p></li><li><p>Decisive early product: Due to tipping point dynamics, early relative scaling is critical in developing Power. Who scales the fastest is often determined by who gets the product most right early on. Facebook's trumping of MySpace is a good example.</p></li></ol><div><hr></div><h3>Scale Economies (take-off)</h3><p>The quality of declining unit costs with increased business size is referred to as Scale Economies.</p><p><strong>Benefit</strong>:</p><p>Some condition which yields material improvement in the cash flow of the Power wielder via reduced cost, enhanced pricing and/or decreased investment requirements.</p><p><strong>Barrier</strong>:</p><p>Some obstacle which engenders in competitors an inability and/or unwillingness to engage in behaviors that might, over time, arbitrage out this benefit.</p><p>For Scale Economies, the Benefit is straightforward: lowered costs. In the case of Netflix, their lead in subscribers translated directly into lower content costs per subscriber for originals and exclusives.</p><p><strong>Example</strong>:</p><p>Netflix paid $100M for House of Cards and their streaming business had 30M customers, then the cost per customer was three dollars and change. In this scenario, a competitor with only one million subscribers would have to ante up $100 per subscriber.</p><p>This situation creates a very difficult position for Netflix's smaller-scale streaming competitors. If they offer the same deliverable as Netflix, similar amounts of content for the same price, their P&amp;L will suffer. If they try to remediate this by offering less content or raising prices, customers will abandon their service and they will lose market share. Such a competitive cul-de-sac is the hallmark of Power.</p><div><hr></div><h3>Branding (stability phase)</h3><p>Branding as power to charge higher prices and sustain market share.</p><p><strong>Ex</strong>: Purchased a Diamond ring at Tiffany for $16,600 and one of similar size and cut at Costco for $6,600, then asked a reputable gemologist and appraiser to assess the rings' values: Costco ring at $8,000 plus setting costs, more than $2,000 above the selling price. Assessed Tiffany ring at $10,500 plus setting costs at a non-brand-name retailer.</p><p>"You got exactly what they said you were getting. Anything that is brand-name and has developed a reputation that Tiffany has developed, they've earned it over the years for quality control. You can go there [and] you don't have to think twice about your purchase. And you pay for that."</p><p><strong>Benefit</strong>:</p><p>A business with Branding power is able to charge a higher price for its offering due to one or both of these two reasons:</p><ol><li><p>Affective valence - The built-up associations with the brand elicit good feelings about the offering, distinct from the objective value of the good. (Ex Tiffany's)</p></li><li><p>Uncertainty reduction - A customer attains "peace of mind" knowing that the branded product will be just as expected. Consider another example: Bayer aspirin. Search for aspirin on Amazon.com and you will see a 200 count of Bayer 325 mg. aspirin for $9.47 side-by-side with a 500 count of Kirkland 325 mg. aspirin for $10.93. So Bayer has a price per tablet premium of 117%. Some customers still would prefer the Bayer because of diminished uncertainty: Bayer's long history of consistency makes customers more confident that they are getting exactly what they want.</p></li></ol><p>Note that the Benefit from Branding does not depend on prior ownership, as with Switching Costs.</p><p><strong>Barrier</strong>:</p><p>A strong brand can only be created over a lengthy period of reinforcing actions (hysteresis), which itself serves as the key Barrier.</p><div><hr></div><h3>Process (stability phase)</h3><p><strong>Ex</strong>. Toyota Process (TPS)</p><p><strong>Benefit</strong>:</p><p>A company with Process Power is able to improve product attributes and/or lower costs as a result of process improvements embedded within the organization. For example, Toyota has maintained the quality increases and cost reductions of the TPS over a span of decades; these assets do not disappear as new workers are brought in and older workers retire.</p><p><strong>Barrier</strong>:</p><p>These process advances are difficult to replicate, and can only be achieved over a long time period of sustained evolutionary advance. This inherent speed limit in achieving the Benefit results from two factors:</p><ol><li><p>Complexity - Returning to our example: automobile production, combined with all the logistic chains which support it, entails enormous complexity. If process improvements touch many parts of these chains, as they did with Toyota, then achieving them quickly will prove challenging, if not impossible.</p></li><li><p>Opacity - The development of TPS should tip us off to the long time constant inevitably faced by would-be imitators. The system was fashioned from the bottom up, over decades of trial and error. The fundamental tenets were never formally codified, and much of the organizational knowledge remained tacit, rather than explicit. It would not be an exaggeration to say that even Toyota did not have a full, top-down understanding of what they had created &#8212;it took fully fifteen years, for instance, before they were able to transfer TPS to their suppliers. GM's experience with NUMMI also implies the tacit character of this knowledge: even when Toyota wanted to illuminate their work processes, they could not entirely do so.</p></li></ol><div><hr></div><h3>Innovation is the key to achieving any of the powers</h3><p>Innovation is achieved by creating compelling value. There are three distinct paths to creating compelling value.</p><ol><li><p><strong>Capabilities-Led Compelling Value</strong>: Adobe Acrobat. Here the key capability brought to bear was Adobe's existing fluency at the intersection of software and graphics.</p></li><li><p><strong>Customer-Led Compelling Value</strong>: Corning Fiber Optics. Interaction at a distance. The uncertainty in this case is technical: "Can we invent it?"</p></li><li><p><strong>Competitor-Led Compelling Value</strong>: the Sony PlayStation. Sony perceived the value in immersion of 3D graphics and the gap in the competitors' offerings (Sega/Nintendo) to double down on 3D and launch PS1.</p></li></ol>]]></content:encoded></item><item><title><![CDATA[Resuming after 1 month break]]></title><description><![CDATA[Month-long break, Aimap.today & Techstars San Francisco]]></description><link>https://journal.daniellopes.dev/p/resuming-after-1-month-break</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/resuming-after-1-month-break</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Fri, 13 Sep 2024 04:22:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4e32954c-180b-410a-b3f9-c9c40c8007d3_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've been absent lately, as some of you noticed. I'd set aside three months for a focused "studying" period, and it was a lot of fun to dive deep into prompt engineering, evals, LLM product lifecycles, agents, and more. However, transitioning from my previous full-time job to 8+ hour study days was challenging. Because I'm usually not great at taking breaks (I think I never took more than 2 weeks off), this time I was determined to stick to my three-month deadline and disconnect. I hit the deadline and went completely offline. I had a blast spending a month road cycling in Spain &amp; Germany and a lot of time with family.</p><p>Now, I'm recharged and excited to be back! </p><p>Here are some learnings, a new project I shipped this week, and some plans for the next few months:</p><h2>Aimap.today: An Experiment with Agents &amp; Flows</h2><p>I recently focused on learning about agent tooling to build an AI company researcher for personal use.</p><p>The plan: Create an agent to find funding news, identify AI-related companies, analyze their websites, build a knowledge base, write a long form article about it, and categorize them into three tiers (foundational AI tech, AI-enabled, and AI users).</p><p>I explored several agent frameworks: <a href="https://www.crewai.com/">CrewAI</a>, <a href="https://langchain-ai.github.io/langgraph/">LangGraph</a> (LangChain&#8217;s agent take), <a href="https://www.llamaindex.ai/blog/introducing-llama-deploy-a-microservice-based-way-to-deploy-llamaindex-workflows">LlamaIndex's Llama-Agents</a> (a microservice take on agents, where each agent is it&#8217;s own service), and <a href="https://www.agentops.ai/">AgentOps</a> (very cool instrumentation tool). I also tried building flows with <a href="https://www.airops.com/">AirOps</a> and <a href="https://n8n.io/">n8n</a>. In the process of fetching and enriching the data I also tried <a href="https://jina.ai/reader/">Jina Reader/SERP</a>, <a href="https://you.com/">You.com</a> API, <a href="https://www.apollo.io/">Apollo</a> API, and <a href="https://www.clay.com/claygent">Clay agent</a>.</p><p>Ultimately, for now, I decided to take a stab at coding my own thing. Most existing frameworks focus on LLMs talking to each other, but all I needed was a workflow/pipeline to chain multiple processes together.</p><p>My current boilerplate is in Ruby, and I wasn't satisfied with the existing packages for API clients like Claude and OpenAI. So, I coded these from scratch as well. The whole project, including study time, took about two weeks. </p><p><strong>&#128073; The result is: <a href="https://aimap.today">https://aimap.today</a> . </strong>Please, check it out and let me know what you think.</p><p>I built this for myself and plan to add new companies weekly. There's more I want to do, including a weekly digest for newly researched companies. If you sign-up you&#8217;ll be notified when I finish the weekly digest part.</p><p>My next step is to explore more out-of-the-box platforms like AirOps and n8n, and try to covert my little workflow to these tools.</p><p>Code-wise the pipeline currently looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AnT6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AnT6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 424w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 848w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AnT6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png" width="1200" height="1136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1136,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:271666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AnT6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 424w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 848w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!AnT6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f563482-be06-42c0-bd11-270a130469d0_1200x1136.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Joined Techstars for the First San Francisco class</h2><p>I'm thrilled to share that I&#8217;ll be helping Techstars&#8217; first San Francisco class as an EIR (Entrepreneur in Residence). I've been following my friend and former boss, <a href="https://www.linkedin.com/in/nealsalesgriffin/">Neal</a>, as he ran Techstars Chicago and Oakland. When he mentioned the new San Francisco class, I jumped at the chance to participate.</p><p>The cohort is impressive, featuring many interesting AI-enabled businesses. I'm excited to work with all the founders. You can view the full cohort here: <a href="https://www.techstars.com/newsroom/techstars-announces-inaugural-class-of-san-francisco-accelerator">https://www.techstars.com/newsroom/techstars-announces-inaugural-class-of-san-francisco-accelerator</a></p><div><hr></div><p>It's great to be back. Building aimap.today has been an a cool learning experience, and I'm eager to continue improving and expanding it. </p><p>Joining Techstars as an EIR is another exciting opportunity I'm looking forward to.</p><p>I also may be joining a team on a new project soon, but I'll save that for future updates.</p><p>Going forward, my goal is to resume weekly updates.</p>]]></content:encoded></item><item><title><![CDATA[LLM Impact Mapping: A 4-Step Thought Exercise with Claude 3.5]]></title><description><![CDATA[Using Langchain + Claude 3.5 to brainstorm about AI's effect on common roles]]></description><link>https://journal.daniellopes.dev/p/llm-impact-mapping-a-4-step-thought</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/llm-impact-mapping-a-4-step-thought</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Wed, 10 Jul 2024 13:02:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/70779090-5701-49a0-ba1f-9d22c64fb57f_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I'm starting to plan what to do next in the long run, and I&#8217;m entertaining the idea of joining a team. I think things might be moving too fast and too much demand for skills for risking time on solo projects.</p><h3>Three types of play</h3><p>Started considering which spaces are interesting now. I think this take from <a href="https://www.amazon.com/7-Powers-Foundations-Business-Strategy/dp/0998116319">Hamilton Helmer</a> is a good one: Three types of play:</p><ol><li><p>The tech play: example of semiconductors, you get Intel and etc.</p></li><li><p>The first-tier play: companies that wouldn't exist before semiconductors (Microsoft)</p></li><li><p>The usage play: car companies with tons of semiconductors. They already existed, just got better.</p></li></ol><p>The whole video is worth watching, but <a href="https://youtu.be/hKq1_KPSqy0?t=2367">heres&#8217; the time-stamp about AI.</a></p><p>I'm personally more interested in the second play. And finding these companies early and identifying which ones are already in a good direction is so hard.</p><h3>Brainstorm exercise</h3><p>A good place to start could be looking at common roles and how they will be impacted and can be augmented or even replaced. </p><p>A programmer's job is already seriously impacted, customer support even more so. Same for SDRs. Some other roles, like localization, have already been pretty much replaced. These highly impacted roles are the things I'm most interested in.</p><p>So, just as a thought exercise toying with Python + Langchain, I wrote a 4-step chain with Claude 3.5 to do following:</p><ol><li><p>Brainstorm departments and roles common across any vertical</p></li><li><p>List the most common tasks in those roles</p></li><li><p>Brainstorm ideas for how each could be augmented or automated</p></li><li><p>(Rank them by difficulty and confidence, but this was just for nudging the model)</p></li></ol><p>I only spent a couple of hours and $3 in credits, but the results turned out better than I was expecting. </p><p>There's obviously some nonsense and some things that are regular ML models more than LLMs in the output (my fault, I should have optimized the last step of the chain better), but a lot of solid ones that I think haven't happened yet, and some others in the &#8220;augmentation&#8221; category fully in progress like Figma, Intercom, Cursor, GitHub Copilot, etc. If you squint and look at the roles with the best ideas, you can see <a href="https://www.qualified.com/ai-sdr">Piper</a>, <a href="https://www.intercom.com/drlp/ai-chatbot">Fin</a>, <a href="https://www.harvey.ai/">Harvey</a>, <a href="https://www.wisq.com/">Wisq</a>, <a href="https://www.cognition.ai/blog/introducing-devin">Devin</a>, <a href="https://www.11x.ai/">11x.ai</a>, etc</p><h3>You can see the whole list here:</h3><p><a href="https://docs.google.com/spreadsheets/d/1vpXzfUFNhIZJp9CEmiZqGKaVrP_Xx8McMZZlLCxiHNg/edit?gid=0#gid=0">https://docs.google.com/spreadsheets/d/1vpXzfUFNhIZJp9CEmiZqGKaVrP_Xx8McMZZlLCxiHNg/edit?gid=0#gid=0</a></p><p>Next step, I guess, is to start collecting companies and maybe have a little agent help me with the research.</p><p>&#8212;</p><p>I haven't had time to think through the whole list yet, but here...Some of the ones that stood out that the ideas are mostly very doable, or already happening:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XTZp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XTZp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 424w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 848w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XTZp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png" width="1456" height="851" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:851,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187794,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XTZp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 424w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 848w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!XTZp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3d6389c-8d57-47e6-b30e-6b981d6c1c1d_1858x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BlOh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BlOh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 424w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 848w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BlOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png" width="1456" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207782,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BlOh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 424w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 848w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!BlOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08d1abb9-6463-47a3-adda-95de741f35e2_1856x1078.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DYQl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DYQl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 424w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 848w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DYQl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png" width="1456" height="986" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:986,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:230704,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DYQl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 424w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 848w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!DYQl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d25e5-330e-49f3-a50d-c7771bd1eb30_1672x1132.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D9Q-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D9Q-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 424w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 848w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 1272w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D9Q-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png" width="1456" height="621" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:621,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124803,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D9Q-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 424w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 848w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 1272w, https://substackcdn.com/image/fetch/$s_!D9Q-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6899800e-3f2c-4dba-b440-013c5a15e85f_1670x712.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dRf6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dRf6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 424w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 848w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dRf6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206206,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dRf6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 424w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 848w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 1272w, https://substackcdn.com/image/fetch/$s_!dRf6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd07a9170-2afa-4b1d-8b8f-77506ab052a4_1670x1084.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Week 10: Mostly LLM Evaluations]]></title><description><![CDATA[Machine learning + Evaluations]]></description><link>https://journal.daniellopes.dev/p/week-10-mostly-llm-evaluations</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/week-10-mostly-llm-evaluations</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Mon, 08 Jul 2024 22:24:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The first week of July has already passed. If you're new here, two months ago, I left my full-time job to focus on exploring LLMs. While I've learned a lot in just two months, June wasn't as productive as I'd hoped, with too much time spent on non-AI coding projects, leaving me with time for just theory and conferences. I'm aiming to correct this in July.</p><h2>Traditional machine learning</h2><p>When you move beyond simply calling APIs, you'll encounter the traditional ML stack and terminology. For instance, if you need to adjust your embeddings and choose a different model, you'll need a solid grasp of metrics like BPB, BPC, Perplexity, and so on. The same goes for evaluating production data.</p><p>I also prefer not to have components in a stack that I don't understand at a high level, even if I don't have to work with them directly (for example, if I'm an EM on the product side or a product manager).</p><p>For ML theory I&#8217;m currently <a href="https://www.youtube.com/playlist?list=PLrQmbzbRJ5mwDinvDEJ5B-KDZlPM-sCYO">half way through this course</a>.  It may be a few years old, but I appreciate how practical and real-world focused it is. If anyone has other suggestions, I'm very open to them.</p><p>I can't recall the exact source of this slide (I think it was from <a href="https://x.com/HamelHusain?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor">Hamel Hussain&#8217;s talk</a> on AI Engineer conf this month) , but I believe it provides a reasonable overview - and my goal is to have at least a basic understanding of everything under the horizontal line.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I8IB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I8IB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 424w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 848w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 1272w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I8IB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png" width="1456" height="865" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:865,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:842510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I8IB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 424w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 848w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 1272w, https://substackcdn.com/image/fetch/$s_!I8IB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe270dc33-bd20-45fd-a9e8-47ba92e5bec0_1472x874.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Evaluations</h2><p>Last week, I began studying evaluations more seriously for two reasons. First, I'm working on understanding the various stages of the development cycle. Second, I need to establish a better workflow for iterating on our <a href="https://canopy.is/m/training/ai_assistant">AI bot at Canopy</a>.</p><p>For theory around evals I really liked <a href="https://x.com/chipro">Chip</a>&#8217;s <a href="https://learning.oreilly.com/library/view/ai-engineering/9781098166298/ch03.html#why_ai_as_a_judge">third chapter of her WIP book</a>. This <a href="https://hamel.dev/blog/posts/evals/">post about Evaluations from Hamel Husain</a> is also so good, and <a href="https://applied-llms.org/#evaluation-monitoring">this one as well</a>.</p><p><strong>This is would be the ideal cycle for me:</strong></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Or6c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Or6c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 424w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 848w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 1272w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Or6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png" width="1456" height="887" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:887,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144725,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Or6c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 424w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 848w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 1272w, https://substackcdn.com/image/fetch/$s_!Or6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43931fc2-a950-4d4e-8662-44e8ded1f3a4_2144x1306.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is sort of the workflow that I think it would be ideal for me.</figcaption></figure></div><p>At Canopy, our tech stack is entirely Ruby, and our AI Assistant was built using direct API calls to OpenAI. While I did implement some observability, I still need a more robust way to monitor the quality of answers in production and a solid test suite that I can run when updating the model or modifying the prompts.</p><p>Ideally, I would have automated tests similar to regular test units that I can run whenever I'm iterating on prompts, models, or content format for the rag. Once things are deployed, I'd like to have comparable quality metrics for the production data, with alerts if quality drops below certain thresholds and proper visibility.</p><p>There are quite a few LLM-focused evaluation tools available, and many of them are really solid. I don't mean to dismiss their work, but for my specific context, here's my current assessment:</p><ol><li><p>They do too much</p><ol><li><p>Most tools attempt to offer solutions for all four stages of my diagram, but these companies are often small, seed-level teams building in a rapidly evolving space. Many of these products feel either half-baked or are still trying to figure out their business model. I'd prefer a tool that focuses solely on the two evaluation parts (dev &amp; production) and doesn't try to handle the prototyping and deployment aspects.</p></li></ol></li><li><p>Their business models are still unclear</p><ol><li><p>Many tools are in the typical early-stage B2B mode, lacking a product-led path and aiming to lock users into annual contracts with case-by-case pricing. I understand this is important in a new market with early-stage products, but I'd love to see more product-led options (especially for Canopy's context, a small team where the bot isn't their core feature yet).</p></li></ol></li><li><p>Vendor lock in / dependency risk</p><ol><li><p>To enable tracing, many tools heavily wrap around API clients for services like OpenAI, and some don't even offer public API versions. Tools that offer "solutions" for the deployment part often proxy calls under their own API, so instead of calling OpenAI directly, you call their API. This introduces a third-party proxy as a potential failure point, in addition to OpenAI/Anthropic/etc., and it's built by an understaffed seed company. </p></li></ol></li><li><p>Pretty much no solutions for non-Python/JavaScript stacks</p><ol><li><p>Most niceties for automatic logging/tracing and basic metrics like latency come from their SDK, which are often limited to Python/JS. While understandable given the early stage, most tools also don't offer a public API. For more elaborate setups, a reasonable workflow could be to follow the traditional ML path of using Python for the stack and wrapping it as an API for other languages to call, instead of relying on a proxy maintained by a tiny company in a crowded space. It's a bit of a bummer because for AI products that only need LLMs, it's an overcomplication in the stack. You'll definitely need query augmentation, retries, rate-limiting controls, and other things a product-level software already handles, and now you'll need to duplicate that in the Python stack too. It's one thing when you're making an API around a model you control, but it's another when you're making an API around another API.</p></li></ol></li></ol><p>If you're already using a Python or JS stack, you have fewer things to worry about. However, for Canopy (Ruby stack), the situation is a bit different. I think I'll go with the following approach:</p><ul><li><p><strong>First:</strong> Find a tool that has a public API support for sending run data for production, build a small Ruby client for that, and do production level monitoring only (similar to how&#8217;d use a service like Sentry).  Ignore all the other 3 stages of  the Experiment and Deploy part of these tools.</p><ul><li><p><strong>Second:</strong> </p><ul><li><p>Have a good unit test coverage for the direct calls to OpenAI with VCR and reimplement some of the basic eval metrics that relevant to my context like <strong>Answer Relevance, Context Recall, or Context Relevancy. </strong></p></li><li><p>Or use something like <a href="https://www.promptfoo.dev/">Promptfoo</a>, <a href="https://ragas.io/">Ragas</a> or <a href="https://www.guardrailsai.com/">GuardRails</a> for the local unit tests.</p></li></ul></li></ul><p></p></li></ul><p>I haven't decided which product to use yet, but reading through their documentation, examining the code of their SDKs, and exploring their offerings has been a good learning process already.</p><p>In no particular order, here's the current list of evaluation products/projects that I'm aware of (although I haven't had a chance to thoroughly check all of them yet):</p><ul><li><p>https://mlflow.org</p></li><li><p>https://www.vellum.ai/</p></li><li><p>https://athina.ai</p></li><li><p>https://www.patronus.ai</p></li><li><p>https://wandb.ai/site/weave</p></li><li><p>https://autochain.forethought.ai/</p></li><li><p>https://ragas.io/</p></li><li><p>https://github.com/agenta-ai/agenta</p></li><li><p>https://klu.ai/</p></li><li><p>https://www.braintrustdata.com/</p></li><li><p>https://humanloop.com/</p></li><li><p>https://www.parea.ai/</p></li><li><p>https://docs.llamaindex.ai/en/stable/understanding/evaluating/evaluating/</p></li><li><p>https://www.langchain.com/langsmith</p></li><li><p>https://github.com/langfuse/langfuse</p></li><li><p>https://www.rungalileo.io/</p></li><li><p>https://www.guardrailsai.com/</p></li><li><p>https://deepchecks.com</p></li><li><p>https://arize.com</p></li><li><p>https://github.com/UKGovernmentBEIS/inspect_ai</p></li></ul><p>If you're using a tool that you really like or if you have any feedback or a different perspective on the market, I'd love to hear your thoughts.</p>]]></content:encoded></item><item><title><![CDATA[Month 2]]></title><description><![CDATA[Lots of papers, coffee chats, contract work, and conferences&#8230;]]></description><link>https://journal.daniellopes.dev/p/week-5-6-and-7</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/week-5-6-and-7</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Thu, 27 Jun 2024 03:35:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/19c36a55-81bd-4455-afd5-88ccdf573992_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've been away for a couple of weeks, spent probably 30% of my time networking and meeting people, and the rest helping my friends at <a href="https://getkoala.com">Koala</a>. This meant missing two weekly posts and delaying the public release of <a href="https://replayjournal.ai">Replay</a>. The app is working well, but I&#8217;m having a tough time finding time for the last details and GTM.</p><p>While I haven't done much hands-on AI engineering this last two weeks, I've been keeping up with theory. Here's some of the notes:</p><h2>Daily Prompting Paper</h2><p>For a while now, I've been checking <a href="https://arxiv.org/search/?query=LLM+prompt&amp;searchtype=all&amp;source=header">Arxiv daily for new papers on Prompt Engineering</a>. It's a topic that's usually easy to understand, even in academic papers, so great way to kill time between tasks.</p><p>Many poor results in AI come from inadequate prompting skills + techniques like prompt chaining and retries, weren't practical before, but now make sense.</p><p>In June, <a href="https://arxiv.org/abs/2406.06608">this excellent paper</a> was published. I spent the last couple of weeks reading it thoroughly, along with many of its citations. I've <a href="https://journal.daniellopes.dev/p/practical-prompt-engineering-notes">compiled some notes here</a>, and I'm also planning to create a better structured resource with more examples and additional notes I didn't include.</p><h2>Meetups and Conferences</h2><p>I've been attending several meetups and conferences, including <a href="https://www.aiqualityconference.com">AIQCon</a> yesterday. It's interesting to see the growing focus on AI Engineering (meaning implementing GenAI in products). Last year, there a lot of interest in LLMs themselves, but now the emphasis is on making LLMs perform well in real-world applications.</p><p>Key topics include:</p><ul><li><p>RAG (Retrieval-Augmented Generation): Techniques to improving embeddings, content augmentation, and advanced techniques like GraphRAG.</p></li><li><p>Evaluation: Setting up good test suites, deciding what to test, and determining who should write the tests.</p></li><li><p>No fine-tuning: The consensus is to focus on prompting, RAG, and evaluation before considering fine-tuning. Lot of pain and scar from fine-tuning already.</p></li></ul><p>While some events feel like they have a high noise-to-signal ratio, I always learn a lot as a newcomer. Also, it&#8217;s such a great time to live in SF. For future conferences, I plan to research the participants and their topics more thoroughly beforehand.</p><p>A useful resource from yesterday's conference: <a href="https://huyenchip.com/llama-police.html">https://huyenchip.com/llama-police.html</a> by <a href="https://x.com/chipro">Chip Huyen</a> (well worth following on X).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O9hC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O9hC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 424w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 848w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O9hC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png" width="1396" height="1280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1280,&quot;width&quot;:1396,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2923913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O9hC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 424w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 848w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!O9hC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe49d4ae-5b73-4b6c-8c1b-77d9467ffa75_1396x1280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Books</h2><p>On the topic of learning more theory, I'm currently reading two books:</p><p>1. <strong>Programming Machine Learning</strong></p><p><a href="https://www.amazon.com/Programming-Machine-Learning-Zero-Deep/dp/1680506609">https://www.amazon.com/Programming-Machine-Learning-Zero-Deep/dp/1680506609</a></p><p>I first read this when it was released, but I've forgotten most of it. Although it's a bit outdated and pre-LLM, I like the author's writting. Given how close AI Engineering is to traditional ML, I want to revisit this material.</p><p><strong>2. Neural Nets mini-course by 3Blue1Brown</strong></p><p>Another basic entry level material I was revisiting this week is this mini-course on neural nets: <a href="https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi">https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi</a></p><p>2. <strong>Oreilly&#8217;s</strong> <strong>AI Engineering book</strong></p><p><a href="https://www.oreilly.com/library/view/ai-engineering/9781098166298/cover.html">https://www.oreilly.com/library/view/ai-engineering/9781098166298/cover.html</a></p><p>This book was recommended by a close person, and I attended a talk by the author yesterday - it was one of my favorites, despite being too short. Only three chapters are available now, so I'll keep an eye out for future updates.</p>]]></content:encoded></item><item><title><![CDATA[W3 Recap: 4o, Marketing & Product work]]></title><description><![CDATA[3 days off but still managed to make some progress&#8230;]]></description><link>https://journal.daniellopes.dev/p/w3-recap-4o-marketing-and-product</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/w3-recap-4o-marketing-and-product</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Tue, 28 May 2024 03:45:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BYVN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BYVN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BYVN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BYVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51632,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/145045678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BYVN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!BYVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18b54220-d42f-4f1e-b01e-1321de9d486c_1376x768.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Context: In May I left my <a href="https://journal.daniellopes.dev/p/end-of-a-7-year-journey">full-time job</a> to start a 3-month LLM learning cycle by building a few products of my own. I&#8217;m documenting my journey here. Every week I post a recap of how the week went, things I learned, etc.</p><p>Had a bit of a shorter week. I went on a camping trip to Yosemite and had no service for 3 days. Despite this, still managed to pack 3 days of 10 hours.</p><p>Here's some of the progress and learnings:</p><h2>Canopy AI: JSON vs XML and streaming</h2><p>I'm still helping maintain the AI Assistant I built for <a href="https://canopy.is/">Canopy</a>. It has the usual Chat experience where a user asks a question, we do a RAG search and layer a bunch of things on top. </p><p>One frustrating aspect has been GPT-4's unreliability in returning JSON. OpenAI's Completion API has a JSON mode that ensures valid JSON output, but this option isn't available on the Assistant API when using the File Retrieval tool (their built-in RAG).</p><p>Although OpenAI's built-in RAG gives me better results compared to Pinecone and PG Vector, the trade-off for Canopy's use case was losing the JSON mode.</p><p>Canopy's assistant does more than just RAG the content. It runs categorization, sensitivity checks, confidence checks, and other tasks that might trigger subsequent LLM calls or be needed in the user interface. These constraints and extra information are metadata that I used to include in a JSON (making a single API call for speed and cost).</p><p>The problem with JSON is streaming. Ideally, you want to start rendering the message as you receive the response. In the JSON, I had a markdown answer as one of the values. I'd buffer the JSON until the right value starts streaming and relay that to the user interface, stopping when the value ends. A better solution would be to have the markdown first, followed by the metadata in a structured data format (JSON, XML, etc.). After a full day of prompt engineering, I couldn't consistently get GPT-4 to return the metadata in this format after the markdown message &#8211; until GPT-4o.</p><p>Last week, I spent a day migrating from the JSON format to a structure with markdown first, followed by the metadata inside XML. Anthropic uses XML in their examples, so I've been using this tip with OpenAI as well (makes sense if you think about it, it&#8217;s easier for transformers to handle words than curly braces).</p><p>The end format looks like this:</p><pre><code>Markdown answer&#8230;
```xml
&lt;metadata&gt;
&#8230;
&lt;/metadata&gt;
```</code></pre><p>Incorporating the ``` is another trick that took me a while to learn. When you can't use JSON mode, OpenAI will often add wrappers like these. Instead of trying to remove them in the prompt or handling failures in the app, including "shots" (examples) with the ``` as part of the answer will guide the model to always return it.</p><p>This simplified the code on our app side and made the metadata correct nearly 100% of the time. The next step is to auto-retry on the rare cases when it fails, which I haven't implemented yet.</p><h2>The New Product</h2><p>So far, in these 3 weeks, I've spent around 40 hours on the new product, with a significant portion of that time dedicated to boilerplate tasks that I won't need to repeat for future products, which is a positive.</p><p>While most of the AI work was already done, I couldn't resist adding some extra features at the last minute with GPT-4o. Scope creep? Why not!</p><p>I finally have a name &#8211;&nbsp;but I&#8217;ll share it once the landing page is up. Until now I had it under a code name, but now I have the final name, domain, and a marketing landing page 90% done.</p><p>Selecting the domain and name included initial SEO work. I think it&#8217;s BS that domains are not relevant for SEO anymore. If you are a nobody in page authority, I think it&#8217;s a good idea to make the domains very literal, so that&#8217;s how I&#8217;m starting: a short name followed by something literal.</p><p>In the 2 days I had after spending a day on Canopy, I worked on:</p><ul><li><p><strong>Feature work:</strong></p><ul><li><p>Refining the AI features and adding some extra parallel LLM calls.</p></li><li><p>Finished an Insights page (I hate styling Heatmaps).</p></li><li><p>Added dark mode support while stuck in traffic driving to Yosemite.</p></li><li><p>Started with a Telegram bot.</p></li></ul></li><li><p><strong>Marketing</strong></p><ul><li><p>Finished a landing page and registered the domain.</p></li><li><p>SEO: Research to find keywords I could try to rank for and figure out a strategy for evergreen content (I'll need more time here).</p></li></ul></li></ul><p>Before sharing the product with everyone, I still have to polish some final details, like setting up the Stripe account, deploying to the final servers, etc.</p><p><strong>Timeline-wise, I'm thinking I need:</strong></p><ul><li><p>1 more full week for polishing, details, and putting up the waitlist (including boring things like Terms of Service).</p></li><li><p>About 3 days for the initial marketing work, including backlink work, evergreen SEO-focused pages, and some community-based distribution.</p></li></ul><p>Then, I'm switching attention to the second product that I want for myself (while keeping 25% of my time on this one).</p><p>Once the product is live with users, I plan to share some of the lessons more openly by writing specific posts about certain things. </p><p>For example, on this project, I've been using a mix of multiple parallel LLM calls and OpenAI batch processing. These two things could be interesting as standalone posts. </p><p>I also hope to carve out time to write separate posts about some of the product and marketing aspects whenever I can.</p><h2>Week 4 Plan</h2><p>This week, I'll be splitting my work into three parts:</p><p>1 day for Canopy</p><p>2 days on New Product</p><p>3 days helping a friend with his startup (I usually work a 6-day week anyway)</p><p>I'm avoiding doing any kind of external work, but in this case, I made an exception. </p><p>It's a fixed-scope project on something I'm quite familiar with, plus it's an opportunity to learn some new React on a real product designed by great programmers. On top of that, what this friend is building is an impressive product in an interesting domain with a capable team, so I'll help whenever I can. I&#8217;m estimating probably 14 days on this (let&#8217;s see how off I&#8217;ll be this time).</p><p>This will delay my LLM learning cycle plan a bit, but it's a good trade-off.</p><p>I'll continue to share my updates here regardless.</p>]]></content:encoded></item><item><title><![CDATA[RANT: You're Using ChatGPT Wrong]]></title><description><![CDATA[This isn't polished tech where you can put in no effort and get results.]]></description><link>https://journal.daniellopes.dev/p/rant-youre-using-chatgpt-wrong</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/rant-youre-using-chatgpt-wrong</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Wed, 22 May 2024 20:34:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/333bfe8f-0aa8-4bf0-a67b-445c015daeab_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most of the LLM criticism I see is easily fixable if people have a basic understanding of tech. OpenAI shares some blame for this, since their chat UI has become the standard but explains nothing and tries to be generic, leaning in on zero-shot to seem magical, leading to poor results out of the box. </p><p>Previously, people were using the inferior free GPT-3.5. With GPT-4o, there's no excuse for uninformed takes flooding social media and YouTube. OpenAI's terrible ChatGPT UI and closed-source GPT store are still problematic. <a href="https://docs.anthropic.com/en/prompt-library/library">At least Anthropic is trying to teach better prompt writing</a> (with more effort than OpenAI).</p><p>But back to my rant...</p><p>Many users do not try to tune the system, ask poorly written questions, get unsatisfactory results, and then complain online. We're 2 years into this cycle - it's time to wise up.</p><p>By now, we should all know that these systems are few-shot predictive models that respect the chain of command. Yet users provide neither the few-shot examples nor the command it should follow. It's no wonder ChatGPT-written resumes and landing pages sound like professional BS with poor English.</p><h4>To get good results, you need to:</h4><ol><li><p>Give it examples</p></li><li><p>Understand the chain of command</p></li></ol><h4>GPTs can handle Zero-shot and Few-shot (but not really)</h4><ul><li><p>Zero-shot learning: performing new tasks using broad pre-training</p></li><li><p>One-shot and few-shot learning: generalizing from 1-to-many examples to perform a task on new inputs</p></li></ul><p>While GPT should handle both, its zero-shot capabilities aren't there yet beyond toying around. Always provide 2-10 examples of what you want - otherwise, you'll get predictions based on general knowledge, which means bad results.</p><h3>The GPT Chain of Command</h3><ol><li><p>OpenAI and other providers set the basic rules and capabilities.</p></li><li><p>Developers can customize these settings for specific tasks.</p></li><li><p>End-user requests go through the customized settings.</p></li></ol><p>For non-developers, the best way to leverage the chain of command is to create a custom GPT with a system message specifying your requirements, along with necessary examples.</p><p>If you're coding against the APIs directly, you have more options beyond just system messages, such as fine-tuning. However, in the context of ChatGPT, system messages are the primary tool available (function calls and tags can be discussed in another post).</p><p>Tip: You can use Anthropic's prompt generator to create the initial system message and examples, then paste it into ChatGPT's custom GPT (Anthropic's UI is too bad to use directly): https://x.com/danielvlopes/status/1792978707201831155</p><p>Here's a simplified version of what I use for my Blog Posts custom GPT in ChatGPT:</p><pre><code># Identity 
You are a draft polisher assistant. Your job is to receive long-form poorly formatted drafts and convert them to a final version maintaining the tone, and vocabulary but using fewer words, fixing the grammar, adding more spacing, better structure, and making things clearer.

# Steps to take

To do this, first carefully read through the entire blog post to understand its structure and key points. Then, go through and rewrite the polished version of each section while keeping the same titles and technical insights.

Here are some tips:

- Remove unnecessarily complex language. Replace these with plain, straightforward terms. For example:
-- Instead of "leverage", use "use"  
-- Instead of "synergize", explain what you actually mean, like "work together"
-- Instead of "disintermediation", just explain the concept in simple terms
- Break up long, run-on sentences into shorter, clearer ones
- Use contractions like "it's" and "you'll" to make it sound more natural and conversational 
- Identify the technical parts of the text and don't remove these
- Keep the tone straightforward and professional, avoiding overly casual language but ensuring it doesn't become too formal.
- Keep the personal touch and original intent of the content.
- Format the condensed version of the post with clear section breaks and spacing for readability.

Here's a list of banned words to never ever use any of the following words (or similar words): "delve", "embarked", "journey", "thrilled", "aim", "tailored", "fledgling", "shrouded", "endeavor" , "quantifiable", "empirical", "whereabouts", "debut", "keen", "craft", "tailor", "elevate", "ignite", "empower", "unleash", "horizon", "harness", "diving into", "interconnect", "enhance".

As you write the new version, make sure to maintain the same voice, tone, vocabulary, and style as the original blog post. The goal is not to rewrite it completely, but to have a slight more polished version that is easily digestible format for people short on time.

# Example 1

Input: 
```
Original draft
```

Output: 
```
Well written version
```

# Example 2:

Input: 
```
Original draft
```

Output: 
```
Well written version
```

# Example 3:

Input: 
```
Original draft
```

Output: 
```
Well written version
```</code></pre><p>Put in some effort; otherwise, you are to blame for the bad results. With early-stage technology, we can't have the luxury of expecting things to work perfectly right out of the box.</p><p></p>]]></content:encoded></item><item><title><![CDATA[W2 Recap: 4o, TailwindUI, lot of code]]></title><description><![CDATA[Here's what I accomplished in my 2nd week of my 3-month build & learn cycle]]></description><link>https://journal.daniellopes.dev/p/week-2-recap-4o-tailwindui-lot-of</link><guid isPermaLink="false">https://journal.daniellopes.dev/p/week-2-recap-4o-tailwindui-lot-of</guid><dc:creator><![CDATA[Daniel Lopes]]></dc:creator><pubDate>Sat, 18 May 2024 19:05:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a9183bb2-2e90-400a-8150-1857404a3f06_1376x768.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In May I left my <a href="https://journal.daniellopes.dev/p/end-of-a-7-year-journey">full-time job</a>  to start a 3-month LLM learning cycle by building a few products of my own. I&#8217;m documenting my journey here. Every week I post a recap of how the week went, things I learned, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6p0d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6p0d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6p0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56138,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://journal.daniellopes.dev/i/144756013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6p0d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 424w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 848w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 1272w, https://substackcdn.com/image/fetch/$s_!6p0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd5618f2-2a07-4378-9eb7-7e3455ad165d_1376x768.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Idea selection</h3><p>As <a href="https://journal.daniellopes.dev/i/144571357/why-now">I said before</a>, I'm currently focused on small indie-hacker-scoped projects. What does that mean? </p><p>I'm sorting ideas by level of scope and potential size. For the first projects, I'm avoiding super ambitious things, they need large surface area and tend to have a lot of competition. In the middle, there are &#8220;during gold rush, sell shovels&#8221; type of ideas, like AI infrastructure tools for developers where the need is clear, but so many teams are rushing to build them. </p><p>I'm looking for small things or those with seemingly bad business models that I want to use myself. When picking a market, you either solve something for yourself or others. For now, I'm choosing things I want for myself to save time on initial customer research. </p><p>However, I still want something with clusters of people easily found online so marketing isn&#8217;t an uphill battle.</p><p>To recap: I need something not hard to market with a bad <a href="https://en.wikipedia.org/wiki/Total_addressable_market">TAM</a>, small in scope, and that I want for myself (likely small apps, wrappers, or add-ons for existing players). </p><p><strong>Perfect recipe for disaster &#128517; Why?</strong> </p><ol><li><p>It gives me time to focus on adjacent things I'll reuse later, like a clean boilerplate with UI libraries, authentication, billing, and API clients.  </p></li><li><p>In this first month, I'm basically starting easy to rest a bit while staying creative, studying, and even having a chance to build some baby MRR (but very unlikely). </p></li></ol><p>I've narrowed my list down to 5 potential ideas for now, and I&#8217;m already working on a side project that I&#8217;ve had started in the past. These ideas will be for the next project.</p><h1>Week recap: progress!</h1><h3>Boilerplate</h3><h4>Rails &#128642;</h4><p>I'm sticking with Rails - it's stable, battle-tested, and I know it well. Not interested in Next.js yet, maybe just for marketing later.</p><p>Going with the vanilla Rails stack for now, using Hotwire instead of React for the front end. Everything has a learning curve, and modern-day React is one I don't want to tackle now. Might use React later for more interactive ideas.</p><h4>Jumpstart Pro &#128640;</h4><p>Didn't want to waste time setting up billing (even with Stripe), accounts, authentication, 2FA, or even little stuff like pagination. Went with <a href="https://jumpstartrails.com">Jumpstart Pro</a> - it's a good starting point with high-quality code that's easy to customize, even if I'd prefer a smaller and with less dependencies. JSP also has a lot of new things that I wasn&#8217;t familiar with like <a href="https://code.visualstudio.com/docs/devcontainers/containers">Dev Containers</a>, so fun learning experience.</p><p></p><h4>TailwindCSS + TailwindUI (Pros &amp; Cons) &#127788;&#65039;</h4><p>Switched from theming Bootstrap (like I did for Canopy) to TailwindUI. Not having CSS files makes it perfect for code generators like custom ChatGPT and V0, which are great at generating Tailwind markup. TailwindUI is also very versatile and covers a lot, so I get a productive boost from the (copy, paste, and customize).</p><p>However, using TailwindUI with vanilla Rails hasn't been smooth. I find myself coding basic things because TailwindUI has no vanilla JS option for behaviors like dropdowns, carousels, and off-canvas panels. Jumpstart's Stimulus helps with some of that. Another issue is that TailwindUI's markup was meant for React components, so you often need to abstract classes into Rails helpers for repetitive use.</p><p>This week: 2 days spent to cover TailwindUI basics, 1 day to learn Jumpstart, and the learning curve of TailwindCSS every day. But now feeling quite productive already.</p><h3>Brainstorming with friends</h3><p>I have a lot of people reaching out to network and brainstorm ideas. Last week I spent about &amp; hours on this.</p><h4>Canopy: GPT-4o</h4><p>I work 8 hours a week at Canopy, doing 1-2 hours at a time. After OpenAI launched GPT-4o, I migrated our AI Assistant:</p><ul><li><p>It's much <strong>cheaper and faster</strong> (so fast that streaming isn&#8217;t necessary anymore)</p></li><li><p>Overall <strong>better results</strong>: I tested using our rubric of 200 questions (not a formal eval system yet). After migration, the results were mostly better.</p></li></ul><p><strong>Two small issues:</strong></p><ol><li><p><strong>Acronyms:</strong> It made up some acronyms, which I fixed with prompt engineering.</p></li><li><p><strong>JSON</strong>: We use OpenAI's Assistant API with their RAG tool, so we can't use "JSON MODE". I ask for JSON via prompt engineering. It tried to add a wrapper around the markdown to avoid breaking the JSON, which we fixed by adjusting the code.</p></li></ol><p>The <strong>speed and price drop let us split our 200+ line prompt into two prompts</strong>, running the query sequentially:</p><ol><li><p>Ask for the answer, present it to the user</p></li><li><p>Ask for additional metadata async and refresh that part of the screen (WIP, shipping next week)</p></li></ol><p>The cost drop opens up the opportunity to use GPT-4 level of IQ for everything, including B2C customers with low subscription prices.</p><h4>Product 1: A Lot of Work Done</h4><p>As I said before, I'm already working on my first product, which I've been building since early this year a few hours a week. It's a small thing, but a useful tool for myself that benefits from LLM support.</p><p>I spent 3 days (30 hours) migrating the code to Jumpstart Pro and 4o, and adding features for launch - shooting for next weekend. I also worked on the marketing landing page.</p><p><strong>Still to do: </strong>Complete an &#8220;insights&#8221;  feature. Add an LLM-powered overview screen. TailwindUI is helping a lot with the design. So, I&#8217;m estimating ~3 to 5 more days before able to onboard users.</p><p>I&#8217;ll need to setup new servers due to significant changes from Jumpstart Pro. Setting up servers again will take likely at most one day.</p><p>Goal:  For this week or next, put the product up + add a marketing landing with a waitlist, and send it to the communities I&#8217;m a member of.</p><h2>The bad things</h2><ol><li><p><strong>Poor sleep hygiene:</strong> Worked too close to bed, messing up my sleep. Getting older I need to be a lot smarter about sleep hygiene these days or the price is real.</p></li><li><p><strong>Not enough exercise:</strong> Only exercised 3 times: 2x 40min half-assed weight sessions, 45min hard VO2 max virtual cycling race on Zwift. Usually do 2x that, it's important for my mental health.</p></li><li><p><strong>Missed meet-ups:</strong> Trying to go to more. Had two interesting ones this week, an Agent Guidance and a Gemini vs 4o Hackathon on Saturday, and skipped both.</p></li></ol><h2>Next week</h2><p>I'm off for 3 days on a last-minute camping trip, so this week will be short. Working this weekend to account for it. Most of my time will be split between working on Product 1 and some LLM work for Canopy.</p><p></p>]]></content:encoded></item></channel></rss>