<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Matt Rickard</title>
        <link>https://mattrickard.com/rss</link>
        <description>Essays about startups, engineering, and interesting things.</description>
        <lastBuildDate>Tue, 31 Mar 2026 14:30:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>mrick</generator>
        <ttl>60</ttl>
        <image>
            <title>Matt Rickard</title>
            <url>https://mattrickard.com/favicon-32x32.png</url>
            <link>https://mattrickard.com/rss</link>
        </image>
        <copyright>Matt Rickard</copyright>
        <item>
            <title><![CDATA[The Spec Layer]]></title>
            <link>https://mattrickard.com/the-spec-layer</link>
            <guid isPermaLink="false">5fee342093a2fd79e23fb186278d55f8</guid>
            <pubDate>Tue, 31 Mar 2026 14:30:00 GMT</pubDate>
            <description><![CDATA[An AI agent implements a feature. The code compiles. The tests pass. It still misses the point.

The wrong kind of correct.

Most of our software tooling is opt]]></description>
            <content:encoded><![CDATA[<p>An AI agent implements a feature. The code compiles. The tests pass. It still misses the point.</p>
<p>The wrong kind of correct.</p>
<p>Most of our software tooling is optimized for the failures humans used to make. Agents fail differently.</p>
<p>They usually don't break the build. They disable the failing test. They reuse the nearest pattern. They preserve the old path and add a new one beside it. Everything looks reasonable until the codebase starts filling with locally valid mistakes.</p>
<p>The failure modes are familiar:</p>
<ul>
<li><em>I just disabled the failing tests.</em></li>
<li><em>I just reused the existing service.</em></li>
<li><em>I did not change the existing behavior.</em></li>
<li><em>You're right. I assumed that…</em></li>
</ul>
<p>When a decision isn't written down, the agent has to decide it again. Context windows are finite and even imperfect within. The deeper issue is too much freedom at execution time.</p>
<p>Compilers, linters, and tests help. They catch syntax errors, broken imports, and failing behavior. They are worse at telling you whether the agent made the right call. Even a large test catalog is weak against additive change.</p>
<p>Code generation improved faster than the systems that constrain it. The problem is underconstrained execution: too much freedom at the point where the agent has to act. Written intent is one way to constrain that freedom. Specs are one layer that can provide it. The historical case for that layer is clearest in protocols.</p>
<p><a href="/why-do-protocols-win/">Protocol engineering</a> is the cleanest historical evidence. Not because protocols capture every rejected alternative, but because they define interfaces that many implementations can target. <a href="https://www.rfc-editor.org/rfc/rfc791.html">RFC 791</a> standardized Internet Protocol in 1981. <a href="https://www.rfc-editor.org/rfc/rfc9110.html">HTTP semantics</a> live in RFC 9110. <a href="https://www.rfc-editor.org/rfc/rfc8446.html">TLS 1.3</a> lives in RFC 8446. <a href="https://html.spec.whatwg.org/">HTML</a> is maintained as a living standard by <a href="https://whatwg.org/">WHATWG</a>. In each case, the spec lets many implementations evolve over time.</p>
<p>But specs do not remove the hard part. <a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html">Dijkstra's narrow-interfaces critique</a> shows that precision work does not disappear when you move from code to prose. <a href="https://lamport.azurewebsites.net/tla/tla.html">Lamport</a> and <a href="https://lamport.azurewebsites.net/tla/high-level-view.html">TLA+</a> show why explicit invariants still matter before implementation. <a href="https://www.omg.org/mda/">Model-driven development</a> shows the risk of pushing the abstraction too far and turning the spec into the thing you have to edit.</p>
<p>So the goal is to reduce execution freedom.</p>
<blockquote>
  <p><strong>Spec-driven development means writing durable intent down before implementation, then using it to plan, build, check, and revise the work.</strong></p>
</blockquote>
<p>The word spec is a bit overloaded. Separate what the system must do from how this codebase will do it, the task list, and the rules that should survive later changes.</p>
<p>Each one narrows a different choice. Specs constrain intent. Plans constrain approach. Tasks constrain sequencing. Tests, schemas, and lint constrain behavior. Harnesses constrain execution.</p>
<p>The real disagreement is where to put the constraint. <a href="https://github.com/github/spec-kit">GitHub Spec Kit</a> and <a href="https://kiro.dev/docs/specs/">Kiro</a> keep them near the change workflow: requirements, design, and tasks for one piece of work. <a href="https://github.com/Fission-AI/OpenSpec">OpenSpec</a> moves them into the repo as a decision record that survives the change.</p>
<p><a href="https://docs.tessl.io/use/make-your-agents-smarter-with-documentation">Tessl</a> pushes further and asks whether the spec itself should become the thing you edit, which is where the Dijkstra objection lands hardest: "a sufficiently detailed spec is code." <a href="https://www.augmentcode.com/product/intent">Intent</a> treats the spec as shared state. <a href="https://github.com/openai/symphony/blob/main/SPEC.md">Symphony</a> treats it as an orchestration contract for autonomous runs.</p>
<p>Each one tries to pin the agent down at a different point.</p>
<p>Underneath the product differences, they keep rebuilding the same skeleton: durable context, feature intent, a technical plan, explicit tasks, and verification. The goal is to give the agent less room to improvise.</p>
<p>So what would the ideal model look like today? Smaller than most current tools imply, with a cleaner handoff between intent and execution.</p>
<p>The spec should be <a href="/declarative-vs-imperative/">declarative</a>, so the agent matches the code to the intent instead of replaying a brittle patch script. It should be layered, so product requirements do not quietly turn into architecture and technical plans do not quietly add product scope. And it has to be cheap to revise. If a spec is expensive to update, replace, or delete, the process hardens into ceremony and the ceremony becomes the work.</p>
<p>Where a rule can be enforced mechanically, move it out of the spec and into lint, schemas, tests, or the harness. Use less prose. Enforce more. Specs matter, but they are only one layer. Full SDD should stay optional for small bug fixes, fast prototypes, and exploratory UX.</p>
<p>The winning model puts a <a href="/programming-to-the-interface/">narrow interface</a> between human intent and machine execution: intent narrows the search space. Code, tests, and harnesses govern behavior. Smaller specs, harder checks, less guessing.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Using Claude Code from Anywhere]]></title>
            <link>https://mattrickard.com/claude-code-anywhere</link>
            <guid isPermaLink="false">4b29f7166519cb773617517769f08d60</guid>
            <pubDate>Sat, 30 Aug 2025 14:30:00 GMT</pubDate>
            <description><![CDATA[I've been using multiple instances of Claude Code and Codex CLI almost every day. But I've gotten frustrated enough to build something that solidifies my workfl]]></description>
            <content:encoded><![CDATA[<p>I've been using multiple instances of Claude Code and Codex CLI almost every day. But I've gotten frustrated enough to build something that solidifies my workflow. Before, it looked something like this:</p>
<ul>
<li><code>git worktree</code> for parallel instances</li>
<li><code>docker</code> for sandboxing work and tooling</li>
<li><code>tmux</code> for automation and management of terminal emulator windows</li>
<li><code>ssh</code> to a cloud instance for managing work on-the-go.</li>
</ul>
<p>But I was frustrated by a few things:</p>
<ol>
<li><strong>Parallelism tax</strong>. Even with automation, the setup/clean-up grind is tedious. Worktrees share the same git object store, so you still need to be careful with operations and cleanup. Managing claude in docker means that I need to mount files, move around secrets, and manage environment. Remote instances need to be synced.</li>
<li><strong>Laptop-locked</strong>. SSH from mobile or an iPad will probably never be a good experience, especially with a long-running process like claude code. Laptops aren't made to be treated like servers.</li>
</ol>
<p>Current solutions are good, but have some shortcomings.</p>
<ol>
<li><strong>Unsupervised agents (Codex Web / Claude Code GitHub Actions).</strong> Short feedback loops make Claude Code great. If it makes a wrong turn, you can interrupt and get it back on the right path. Codex Web and Claude Code GitHub Actions are powerful, but often times spend 15 minutes working on a technically correct, but wrong implementation of a feature. Or they get blocked on something that you could have fixed easily.</li>
<li><strong>SSH into a VM</strong>. You become the platform team: images, secrets, logs, UI, lifecycle. Not a bad choice, but lots of work.</li>
<li><strong>Desktop UI</strong>: Solves some of the terminal-bound issues: window management, worktree automation, syntax highlighting, patch management. However, still laptop bound.</li>
</ol>
<p>So my new workflow:</p>
<p><strong>Web UI → ephemeral sandbox per chat → live, interactive session → patch/PR</strong></p>
<ol>
<li><strong>On-demand sandbox execution</strong>: Ephemeral, quick to boot, isolated jobs per task with code, tools, and AI agents.</li>
<li><strong>Live, steerable session</strong>. Stdout/stderr stream in real time; I can interrupt/approve and keep the loop tight—same Claude Code behavior, just remote.</li>
<li><strong>Chat Management</strong>. Automated branch-per-chat and pull-request creation. Persistence for chats and code changes that isn't in your $HOME folder.</li>
</ol>
<p>I put up an early version on <a href="https://standard-input.com">standard-input.com</a>. Let me know what you think. I'll buy you a coffee if you break out of the sandbox. <code>dangerously-skip-permissions</code> has been renamed to <code>vibe</code>.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Pseudonyms in American History]]></title>
            <link>https://mattrickard.com/pseudonyms-in-american-history</link>
            <guid isPermaLink="false">ea3089b3a04aa7c4bedec3f4fb0e3d91</guid>
            <pubDate>Tue, 05 Dec 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[Debates around the ratification of the Constitution and the early formation of the United States happened through pseudonymous authors. They often used names bo]]></description>
            <content:encoded><![CDATA[<p>Debates around the ratification of the Constitution and the early formation of the United States happened through pseudonymous authors. They often used names borrowed from Greek or Roman History.</p>
<p>Why?</p>
<ul>
<li>Plausibly some protection against retaliation. However, most pseudonymous writing was quickly attributed to authors.</li>
<li>Power in names. The names weren’t chosen at random. Often, they called back to famous Romans who took part in the formation of the Roman Republic. Or others who were known for their virtue or principles.</li>
</ul>
<p>Alexander Hamilton might have written under the most pseudonyms (at least five). Benjamin Franklin used at least three. Here’s a list of some of the more popular ones around the time of the American Revolution.</p>
<p><strong>Phocion</strong> (Alexander Hamilton) — Essays defending the Jay Treaty with Great Britain. Phocion was an Athenian statesman known for his integrity and opposition to demagoguery.</p>
<p><strong>Columbus</strong> (Alexander Hamilton) — Defending the Continental Congress and criticizing British policies.</p>
<p><strong>Publius</strong> (Alexander Hamilton, James Madison, John Jay) — The authors of the Federalist Papers, which were a series of essays advocating for the ratification of the Constitution. Individual authorship wasn’t released until Hamilton’s death, and even then historians are still trying to match authors to text. It’s hypothesized that Hamilton wrote 51 essays, Madison 29, and Jay 5. Publius Valerius Poplicola was a Roman consul known for his role in founding the Roman Republic.</p>
<p><strong>Historicus</strong> (Alexander Hamilton) — Essays on various topics related to the Constitution and federalism.</p>
<p><strong>Pacificus</strong> (Alexander Hamilton) — Used to defend President George Washington's Neutrality Proclamation of 1793 (declared the U.S. neutral in the conflict between France and Great Britain). “Making peace” in Latin.</p>
<p><strong>Helvidius</strong> (James Madison) — Written in response to Pacificus (Hamilton), these essays defended the constitutional authority of Congress in foreign affairs. Helvidius Priscus was a Roman senator known for his defense of republicanism and freedom of speech.</p>
<p><strong>Americanus</strong> (John Jay, John Stevens, Jr.) — Federalists essays.</p>
<p><strong>Candidus</strong> (Benjamin Franklin) — Writings advocating for various causes, including opposition to oppressive British policies.</p>
<p><a href="/silence-dogood-and-the-ben-franklin-effect"><strong>Silence Dogood</strong></a> (Benjamin Franklin) — A fictitious widow created by Franklin to offer social commentary.</p>
<p><strong>Richard Saunders “Poor Richard”</strong> (Benjamin Franklin) — Used to publish <em>Poor Richard’s Almanack</em>. The name comes from a popular London almanac, <em>Rider’s British Merlin</em>.</p>
<p><strong>“Common Sense” —</strong> Thomas Paine’s pamphlet advocating for American independence was initially published anonymously.</p>
<p><a href="/cincinnatus"><strong>Cincinnatus</strong></a> <strong>(Arthur Lee) —</strong> Anti-federalist papers.</p>
<p><strong>A Farmer</strong> <strong>(John Dickinson)</strong> — Essays titled "Letters from a Farmer in Pennsylvania," which argued against the Townshend Acts imposed by the British.</p>
<p><strong>Cato</strong> (George Clinton) — Anti-federalist essays around the time of the ratification of the Constitution. Attributed to George Clinton, but not confirmed. Cato the Younger was a Roman statesman known for his staunch republicanism and opposition to Julius Caesar.</p>
<p><strong>Brutus</strong> (Robert Yates) — An ally of George Clinton’s who wrote more anti-federalist essays. Marcus Junius Brutus was a Roman senator famous for his role in the assassination of Julius Caesar, symbolizing resistance to tyranny.</p>
<p><strong>Centinel</strong> (Samuel Bryan) — A series of anti-federalist essays critical of the proposed U.S. Constitution's centralizing tendencies.</p>
<p><strong>Americanus</strong> (John Stevens, Jr.) — Essays written to support the Federalist cause and the ratification of the U.S. Constitution.</p>
<p><strong>Poplicola</strong> (John Adams) — Essays defending the British constitution and criticizing the Stamp Act. The same Publius Valerius Poplicola used by Hamilton.</p>
<p><strong>Novanglus</strong> (John Adams) — A series of essays written in response to Massachusettensis, defending colonial rights. Latinization of “New Englander”.</p>
<p><strong>A Citizen of New York</strong> (Martin Van Buren) — political essays.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Fairchildren]]></title>
            <link>https://mattrickard.com/fairchildren</link>
            <guid isPermaLink="false">49b5c8338bcf4b85536b84c13b8e33df</guid>
            <pubDate>Mon, 04 Dec 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[In 1956, William Shockley, Stanford professor and winner of the Nobel Prize in Physics for his work on semiconductors, recruited a team of young Ph.D. graduates]]></description>
            <content:encoded><![CDATA[<p>In 1956, William Shockley, Stanford professor and winner of the Nobel Prize in Physics for his work on semiconductors, recruited a team of young Ph.D. graduates to product a new company. The company would be called Shockley Semiconductor.</p>
<p>But Shockley was a terrible manager, and the students left to form their own company the next year, Fairchild Semiconductor. They would be later known as the “traitorous eight”.</p>
<p>The founders of Fairchild Semiconductor were: Gordon Moore, C. Sheldon Roberts, Eugene Kleiner, Robert Noyce, Victor Grinich, Julius Blank, Jean Hoerni, and Jay Last.</p>
<p>Fairchild Semiconductor became the proto-company of Silicon Valley. Many major technology companies can somehow trace their founding or story to Fairchild.</p>
<p><strong>Intel</strong> - Founded by Robert Noyce and Gordon Moore, both former employees of Fairchild Semiconductor.</p>
<p><strong>AMD (Advanced Micro Devices)</strong> - Founded by Jerry Sanders, another Fairchild alumnus.</p>
<p><strong>Kleiner Perkins</strong> - A venture capital firm co-founded by Eugene Kleiner, a former Fairchild employee.</p>
<p><strong>Sequoia Capital—</strong> Don Valentine worked at Fairchild Semiconductor for seven years before moving to National Semiconductor (another Fairchild). Then, he started Sequoia Capital.</p>
<p>Other companies founded by Fairchild employees: SanDisk, National Semiconductor, Altera, LSI Logic, Amelco, Applied Materials, and more.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[ChatGPT After One Year]]></title>
            <link>https://mattrickard.com/chatgpt-after-one-year</link>
            <guid isPermaLink="false">b5bce4f0c8176e5d7b233cd53f48cf86</guid>
            <pubDate>Sun, 03 Dec 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[ChatGPT was released on November 30th 2022. What has changed since then?

*   **Hundreds of open-source models.** Varying sized models from small to very large.]]></description>
            <content:encoded><![CDATA[<p>ChatGPT was released on November 30th 2022. What has changed since then?</p>
<ul>
<li><strong>Hundreds of open-source models.</strong> Varying sized models from small to very large. Many are chat-tuned similar to ChatGPT.</li>
<li><strong>Distilled models from ChatGPT.</strong> Academics and competitors both used data from ChatGPT conversations to train or fine-tune their own models.</li>
<li><strong>Competition.</strong> Microsoft launched Bing Chat. Google launched Bard. Poe, Pi, Perplexity. Claude by Anthropic. Not to mention self-hosted open-source chat UIs and other wrappers. There’s no shortage of competition (although ChatGPT still is the most popular).</li>
<li><strong>RAG is hard.</strong> “Browse with Bing” and Bing Chat launched but hallucinations are still an issue. Browsing the internet doesn’t seem like the catch-all</li>
<li><strong>Not every launch increased performance across the board.</strong> Every new iteration of ChatGPT launched changed the way the model behaved. Many queries got better. Some got worse. Google has always had this problem as well, but applications aren’t build on Google.</li>
<li><strong>A consumer subscription model.</strong> ChatGPT Plus was released in February 2023. The consumer model maybe competes with the developer and enterprise products (why not just use the API?).</li>
<li><strong>Multi-modal.</strong> ChatGPT started to accept images and files in the chat. DALL-E and the vision API became integrated into the chat window. There are open-source models that are multi-modal, but so far no experience is as sleek as OpenAI’s.</li>
<li><a href="/chatgpt-plugins-dont-have-pmf"><strong>Plugins launched but never found product-market fit</strong></a><strong>.</strong> Plugins launched but didn’t become the <a href="/necessary-conditions-for-an-app-store-monopoly">App Store</a> that OpenAI hoped. Custom GPTs seem to be the next strategy for extensibility, although they won’t launch until next year.</li>
<li><strong>Code Interpreter is getting better.</strong> Agents and tool-use is still hard for LLMs. But it’s getting better and becoming more useful. Files can now be added directly to the UI to chat with.</li>
</ul>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[McNamara Fallacy]]></title>
            <link>https://mattrickard.com/mcnamara-fallacy</link>
            <guid isPermaLink="false">c887c967b854d23fa71241f4b96a78b7</guid>
            <pubDate>Sat, 02 Dec 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[The McNamara Fallacy is named after Robert McNamara, the US Secretary of Defense during the Vietnam War. The fallacy describes making decisions using only quant]]></description>
            <content:encoded><![CDATA[<p>The McNamara Fallacy is named after Robert McNamara, the US Secretary of Defense during the Vietnam War. The fallacy describes making decisions using only quantitative metrics and ignoring anything else.</p>
<p>The fallacy usually follows the same four steps.</p>
<ol>
<li>Measure what can easily be measured.</li>
<li>Dismiss what can’t be measured easily.</li>
<li>Presume what can’t be measured easily isn’t important.</li>
<li>Extrapolate and conclude that what can’t be measured doesn’t exist.</li>
</ol>
<p>You can find the McNamara Fallacy in all types of disciplines. The emphasis on standardized tests in education (at the expense of less quantifiable qualities and learning). Or when the success of treatments in medicine is based only on easy to measure outcomes (not quality of life, mental health, or overall well-being). Or optimizing for short-term financial metrics at the expense of brand reputation, employee satisfaction, or other intangibles.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Data Quality in LLMs]]></title>
            <link>https://mattrickard.com/data-quality-in-llms</link>
            <guid isPermaLink="false">763fdc427cb71d41c1a034fea242661c</guid>
            <pubDate>Fri, 01 Dec 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[Good data is the difference between Mistral’s LLMs and Llama, which share similar architectures but different datasets.

To train LLMs, you need data that is:

]]></description>
            <content:encoded><![CDATA[<p>Good data is the difference between Mistral’s LLMs and Llama, which share similar architectures but different datasets.</p>
<p>To train LLMs, you need data that is:</p>
<ol>
<li><strong>Large</strong> — Sufficiently large LMs require trillions of tokens.</li>
<li><strong>Clean</strong> — Noisy data reduces performance.</li>
<li><strong>Diverse</strong> — Data should come from different sources and different knowledge bases.</li>
</ol>
<p><em>What does clean data look like?</em></p>
<p>You can de-duplicate data with simple heuristics. The most basic would be removing any exact duplicates at the document, paragraph, or line level. More advanced versions might look at the data semantically, figuring out what data should be omitted because it’s better represented with higher quality data.</p>
<p>The other dimension of clean data is converting various file types to <a href="/good-enough-abstractions">something easily consumed by the LLM, usually markdown</a>. That’s why we’ve seen projects like <a href="https://github.com/facebookresearch/nougat">nougat</a> and <a href="https://github.com/clovaai/donut">donut</a> convert PDFs, books, and LaTeX to better formats for LLMs. There’s a lot of training data that’s still stuck in PDFs and human-readable but not so easily machine-readable data.</p>
<p><em>Where does diverse data come from?</em></p>
<p>The surprising result of the success of the GPTs is that web text from the Internet is probably one of the most diverse datasets out there. It contains usage and data that aren’t found in many other data corpora. That’s why models tend to perform so much better when they’re given more data from the web.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Discord and AI GTM]]></title>
            <link>https://mattrickard.com/discord-and-ai-gtm</link>
            <guid isPermaLink="false">d408cafa9ac37c614f5df1e3e6fae840</guid>
            <pubDate>Thu, 30 Nov 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[Midjourney is the largest discord server, with 16.5 million total users. It accounts for 13% of total Discord invites. Midjourney launched in March 2022 and doe]]></description>
            <content:encoded><![CDATA[<p>Midjourney is the largest discord server, with 16.5 million total users. It accounts for 13% of total Discord invites. Midjourney launched in March 2022 and doesn’t have a web application. Many other AI apps (Leonardo, Pika, Suno, And AI Hub) are on Discord (or even Discord-only).</p>
<p>Why is Discord such a good GTM for AI applications?</p>
<ul>
<li><strong>Text interface.</strong> Most users are just generating images, videos, and audio in these Discord servers. Prompts are easily expressible in simple text commands. It’s why we’ve seen image generation strategies like Midjourney (all-in-one) flourish in Discord while more raw diffusion models haven’t grown as quickly (e.g., Stable Diffusion with many configurable parameters).</li>
<li><strong>Virality.</strong> Prompt engineering models is difficult and more art than science (today). Users can see generations by other users and collectively see what’s working and what isn’t. This means that these communities often have the most advanced prompts and best images.</li>
<li><strong>Low friction.</strong> Go to where your users already are. Most developers have Discord now. One fewer application to sign up for.</li>
<li><strong>Free hosting.</strong> Discord pays for the image hosting and bandwidth. At Midjourney scale, this is not negligible.</li>
</ul>
<p>But Discord has it’s risks as a platform to build on.</p>
<ul>
<li><strong>Platform risk.</strong> Discord could (easily?) build its own Midjourney-type application into the platform. Using all of the prompt-image pairs (along with reactions as a RLHF), it could probably distill a much better model from Midjourney (questionably legal but technically easy). This reminds me of the Zynga / Facebook relationship. <a href="/growth-hacking-platforms">Zynga accounted for 19% of Facebook’s revenue at one point.</a> Facebook reduced Zynga’s API access and launched its own gaming platform.</li>
<li><strong>Multi-modal.</strong> How does multi-modal fit into the Discord text-first interface? Sure there are images and audio that can be uploaded via the interface, <a href="/multi-modal-ai-is-a-ux-problem">but it’s hard to image the UI that a multi-modal AI will need in the future.</a></li>
</ul>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[Standard Causes of Human Misjudgment (Munger)]]></title>
            <link>https://mattrickard.com/standard-causes-of-human-misjudgment-munger</link>
            <guid isPermaLink="false">26e05d8cfc3e33f28d0d3cf84fbe32be</guid>
            <pubDate>Wed, 29 Nov 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[In 1995, Charlie Munger gave a speech at Harvard on [_The Psychology of Human Misjudgment_](https://www.youtube.com/watch?v=Jv7sLrON7QY)_._ It was filled with t]]></description>
            <content:encoded><![CDATA[<p>In 1995, Charlie Munger gave a speech at Harvard on <a href="https://www.youtube.com/watch?v=Jv7sLrON7QY"><em>The Psychology of Human Misjudgment</em></a><em>.</em> It was filled with the research he had done later in life on human psychology, matched with real-life examples that he had observed in his work. The result was a succinct list of the top cognitive biases grounded in real-life experiences. I’ve summarized the biases here, but it’s worth giving the entire speech a listen to hear the stories behind each. I’ve tried to keep Charlie’s language and numbering when possible.</p>
<ol>
<li><strong>Underestimation of Incentives:</strong> Despite understanding the significant influence of incentives (reinforcement in psychology and incentives in economics), there's a tendency to consistently underestimate their power.</li>
<li><strong>Psychological Denial:</strong> This is the refusal to accept reality because it is too painful or difficult to bear.</li>
<li><strong>Incentive-Cause Bias:</strong> This occurs when personal incentives or those of a trusted advisor create a conflict of interest, leading to biased decisions.</li>
<li><strong>Bias from Consistency and Commitment:</strong> This involves a strong tendency to stick to pre-existing beliefs or commitments, even in the face of contradictory evidence.</li>
<li><strong>Bias from Pavlovian Association:</strong> This bias refers to the error of basing decisions on past associations or correlations without considering their current relevance or accuracy.</li>
<li><strong>Bias from Reciprocation Tendency:</strong> This bias involves a natural inclination to reciprocate actions and behaviors, including conforming to others' expectations, especially when one is experiencing success or is 'on a roll.'</li>
<li><strong>Bias from Over-Influence by Social Proof:</strong> This bias refers to the heavy reliance on the actions or decisions of others, especially in situations of uncertainty or stress.</li>
<li><strong>Bias from Favoring Elegance over Practicality in Theory:</strong> This bias involves a preference for theories or explanations that are mathematically elegant or intellectually satisfying, even if they are less accurate in practical terms. “Better to be roughly right than precisely wrong” — Keynes.</li>
<li><strong>Bias from Contrast-Induced Distortions:</strong> This bias refers to the way our perceptions, sensations, and cognition can be significantly altered by contrasts.</li>
<li><strong>Bias from Over-Influence by Authority:</strong> This bias involves the tendency to conform to instructions or opinions provided by an authority figure, even when these instructions conflict with one's own moral judgment or common sense.</li>
<li><strong>Bias from Deprival Super Reaction Syndrome:</strong> This bias is characterized by an intense reaction to losing or the threat of losing something, especially something that one perceives as almost possessed but never fully owned.</li>
<li><strong>Bias from Deprival Super Reaction Syndrome:</strong> This bias is characterized by an intense reaction to losing or the threat of losing something, especially something that one perceives as almost possessed but never fully owned.</li>
<li><strong>Bias from Envy/Jealousy:</strong> This bias stems from feelings of envy or jealousy towards others.</li>
<li><strong>Bias from Chemical Dependency:</strong> This bias relates to the cognitive and behavioral changes that result from chemical dependency, such as addiction to drugs or alcohol.</li>
<li><strong>Bias from Gambling Compulsion:</strong> This bias refers to the compulsive urge to gamble, driven by the psychological principle of variable reinforcement.</li>
<li><strong>Bias from Liking Distortion:</strong> This bias involves a preference for things that are familiar or similar to oneself, including one's own ideas, kind, and identity.</li>
<li><strong>Bias from Disliking Distortion:</strong> This is the opposite of liking distortion, where there's a tendency to reject or not learn from sources that are disliked.</li>
<li><strong>Bias from the Non-Mathematical Nature of the Human Brain in Probability Assessment:</strong> This bias refers to the human brain's tendency to rely on crude heuristics and be easily misled by contrasts when dealing with probabilities, rather than using precise mathematical approaches.</li>
<li><strong>Bias from Over-Influence by Extra Vivid Evidence:</strong> This bias describes the tendency to give disproportionate weight to particularly vivid or emotionally striking information when making decisions.</li>
<li><strong>Stress-induced mental changes, small and large, temporary and permanent.</strong></li>
<li><strong>Mental Confusion from Poorly Structured Information and Inadequate Explanations:</strong> This bias involves difficulties in understanding or decision-making due to information that is not well-organized or lacks a coherent theoretical framework.</li>
</ol>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
        <item>
            <title><![CDATA[The Unreasonable Effectiveness of Monte Carlo]]></title>
            <link>https://mattrickard.com/the-unreasonable-effectiveness-of-monte-carlo</link>
            <guid isPermaLink="false">9877ad634a2e7b3a13d218dc94699132</guid>
            <pubDate>Tue, 28 Nov 2023 14:30:00 GMT</pubDate>
            <description><![CDATA[Monte Carlo methods are used in almost every branch of science: to evaluate risk in finance, to generate realistic lighting and shadows in 3D graphics, to do re]]></description>
            <content:encoded><![CDATA[<p>Monte Carlo methods are used in almost every branch of science: to evaluate risk in finance, to generate realistic lighting and shadows in 3D graphics, to do reinforcement learning, to forecast weather, and to solve complex game theory games.</p>
<p>There are many types of Monte Carlo Methods, but they all follow a general pattern — using random sampling to model complex systems.</p>
<p><strong>A simple example:</strong> Imagine a complex shape you want to know the area of.</p>
<ol>
<li>Place the shape on a dartboard.</li>
<li>Randomly throw darts at the dartboard.</li>
<li>Count the number of darts that are inside the shape and outside.</li>
<li>The estimated area of the shape is = (number of darts in shape / number of darts outside of shape) * the area of the dartboard.</li>
</ol>
<p>(This is computing a definite integral numerically with a method that doesn’t depend on the dimensions! You can even easily estimate the error given the number of samples).</p>
<p><strong>Monte Carlo Tree Search (MCTS).</strong> Or use it to play a game like Blackjack (Chess, Go, Scrabble, and many other turn-based games) with Monte Carlo Tree Search. AlphaGo and its predecessors (AlphaGo Zero and AlphaZero) used versions of Monte Carlo Tree Search with reinforcement learning and deep learning.</p>
<p>The idea is fairly simple — add a policy (i.e., a strategy to follow) to the random sampling process. You might start with a simple one (random or stay with a hand under 18). For every move in a game, add that to a tree that describes the game. For Blackjack, that might be a series of hits or stays. When a game is won or lost, go back and update all of the nodes in the tree for that game (the “back propagation”).</p>
<p>After many games, you have a tree of expected utility for each move — that means you can sample the next move much more effectively. The value says something like — “given this current hand and set of actions, I won X% of the time”. You can get more advanced with the reward and update function — for example, you might discount wins that take many turns and prioritize quicker wins.</p>]]></content:encoded>
            <author>matt@mattrickard.com (Matt Rickard)</author>
        </item>
    </channel>
</rss>