<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: explorables</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/explorables.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-03-26T16:21:09+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quantization from the ground up</title><link href="https://simonwillison.net/2026/Mar/26/quantization-from-the-ground-up/#atom-tag" rel="alternate"/><published>2026-03-26T16:21:09+00:00</published><updated>2026-03-26T16:21:09+00:00</updated><id>https://simonwillison.net/2026/Mar/26/quantization-from-the-ground-up/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ngrok.com/blog/quantization"&gt;Quantization from the ground up&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Rose continues &lt;a href="https://simonwillison.net/tags/sam-rose/"&gt;his streak&lt;/a&gt; of publishing spectacularly informative interactive essays, this time explaining how quantization of Large Language Models works (which he says might be "&lt;a href="https://twitter.com/samwhoo/status/2036845101561835968"&gt;the best post I've ever made&lt;/a&gt;".)&lt;/p&gt;
&lt;p&gt;Also included is the best visual explanation I've ever seen of how floating point numbers are represented using binary digits.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of an interactive float32 binary representation tool showing the value -48.92364502, with color-coded bit fields labeled S (sign), EXPONENT (blue), and SIGNIFICAND (pink), displaying the 32-bit pattern 11000010010000111101100001110100000, and a slider control at the bottom along with minus, plus, and reset buttons." src="https://static.simonwillison.net/static/2026/float.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I hadn't heard about &lt;strong&gt;outlier values&lt;/strong&gt; in quantization - rare float values that exist outside of the normal tiny-value distribution - but apparently they're very important:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why do these outliers exist? [...] tl;dr: no one conclusively knows, but a small fraction of these outliers are &lt;em&gt;very&lt;/em&gt; important to model quality. Removing even a &lt;em&gt;single&lt;/em&gt; "super weight," as Apple calls them, can cause the model to output complete gibberish.&lt;/p&gt;
&lt;p&gt;Given their importance, real-world quantization schemes sometimes do extra work to preserve these outliers. They might do this by not quantizing them at all, or by saving their location and value into a separate table, then removing them so that their block isn't destroyed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plus there's a section on &lt;a href="https://ngrok.com/blog/quantization#how-much-does-quantization-affect-model-accuracy"&gt;How much does quantization affect model accuracy?&lt;/a&gt;. Sam explains the concepts of &lt;strong&gt;perplexity&lt;/strong&gt; and ** KL divergence ** and then uses the &lt;a href="https://github.com/ggml-org/llama.cpp/tree/master/tools/perplexity"&gt;llama.cpp perplexity tool&lt;/a&gt; and a run of the GPQA benchmark to show how different quantization levels affect Qwen 3.5 9B.&lt;/p&gt;
&lt;p&gt;His conclusion:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It looks like 16-bit to 8-bit carries almost no quality penalty. 16-bit to 4-bit is more noticeable, but it's certainly not a quarter as good as the original. Closer to 90%, depending on how you want to measure it.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-science"&gt;computer-science&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-rose"&gt;sam-rose&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/qwen"&gt;qwen&lt;/a&gt;&lt;/p&gt;



</summary><category term="computer-science"/><category term="ai"/><category term="explorables"/><category term="generative-ai"/><category term="llms"/><category term="sam-rose"/><category term="qwen"/></entry><entry><title>Sorting algorithms</title><link href="https://simonwillison.net/2026/Mar/11/sorting-algorithms/#atom-tag" rel="alternate"/><published>2026-03-11T22:58:06+00:00</published><updated>2026-03-11T22:58:06+00:00</updated><id>https://simonwillison.net/2026/Mar/11/sorting-algorithms/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://tools.simonwillison.net/sort-algorithms"&gt;Sorting algorithms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Today in animated explanations built using Claude: I've always been a fan of animated demonstrations of sorting algorithms so I decided to spin some up on my phone using Claude Artifacts, then added Python's timsort algorithm, then a feature to run them all at once. Here's the &lt;a href="https://claude.ai/share/2c09f6f7-57ed-47eb-af2e-fc39ddc4c39f"&gt;full sequence of prompts&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Interactive animated demos of the most common sorting algorithms&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This gave me bubble sort, selection sort, insertion sort, merge sort, quick sort, and heap sort.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Add timsort, look up details in a clone of python/cpython from GitHub&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let's add Python's &lt;a href="https://en.wikipedia.org/wiki/Timsort"&gt;Timsort&lt;/a&gt;! Regular Claude chat can clone repos from GitHub these days. In the transcript you can see it clone the repo and then consult &lt;a href="https://github.com/python/cpython/blob/d19de375a204c74ab5f3a28ec42335bae139033d/Objects/listsort.txt"&gt;Objects/listsort.txt&lt;/a&gt; and &lt;a href="https://github.com/python/cpython/blob/d19de375a204c74ab5f3a28ec42335bae139033d/Objects/listobject.c"&gt;Objects/listobject.c&lt;/a&gt;. (I should note that when I asked GPT-5.4 Thinking to review Claude's implementation &lt;a href="https://chatgpt.com/share/69b1fc93-f360-8006-b8b7-22c3da639367"&gt;it picked holes in it&lt;/a&gt; and said the code "is a simplified, Timsort-inspired adaptive mergesort".)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don't like the dark color scheme on the buttons, do better&lt;/p&gt;
&lt;p&gt;Also add a "run all" button which shows smaller animated charts for every algorithm at once in a grid and runs them all at the same time&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It came up with a color scheme I liked better, "do better" is a fun prompt, and now the "Run all" button produces this effect:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animated sorting algorithm race visualization titled &amp;quot;All algorithms racing&amp;quot; with controls for SIZE (50) and SPEED (100), Stop and Shuffle buttons, and a &amp;quot;Back to single&amp;quot; button. A legend shows Comparing (pink), Swapping (orange), Pivot (red), and Sorted (purple) indicators. Seven algorithms race simultaneously in card panels: Bubble sort (Sorting… — Comparisons: 312, Swaps: 250), Selection sort (Sorting… — Comparisons: 550, Swaps: 12), Insertion sort (Sorting… — Comparisons: 295, Swaps: 266), Merge sort (#3 — Comparisons: 225, Swaps: 225), Quick sort (#2 — Comparisons: 212, Swaps: 103), Heap sort (Sorting… — Comparisons: 358, Swaps: 203), and Timsort (#1 — Comparisons: 215, Swaps: 332). Finished algorithms (Timsort, Quick sort, Merge sort) display fully sorted purple bar charts and are highlighted with purple borders." src="https://static.simonwillison.net/static/2026/sorts-32-colors-lossy.gif" /&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/algorithms"&gt;algorithms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/computer-science"&gt;computer-science&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sorting"&gt;sorting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;&lt;/p&gt;



</summary><category term="algorithms"/><category term="computer-science"/><category term="javascript"/><category term="sorting"/><category term="ai"/><category term="explorables"/><category term="generative-ai"/><category term="llms"/><category term="claude"/><category term="vibe-coding"/></entry><entry><title>Interactive explanations</title><link href="https://simonwillison.net/guides/agentic-engineering-patterns/interactive-explanations/#atom-tag" rel="alternate"/><published>2026-02-28T23:09:39+00:00</published><updated>2026-02-28T23:09:39+00:00</updated><id>https://simonwillison.net/guides/agentic-engineering-patterns/interactive-explanations/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;&lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/"&gt;Agentic Engineering Patterns&lt;/a&gt; &amp;gt;&lt;/em&gt;&lt;/p&gt;
    &lt;p&gt;When we lose track of how code written by our agents works we take on &lt;strong&gt;cognitive debt&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For a lot of things this doesn't matter: if the code fetches some data from a database and outputs it as JSON the implementation details are likely simple enough that we don't need to care. We can try out the new feature and make a very solid guess at how it works, then glance over the code to be sure.&lt;/p&gt;
&lt;p&gt;Often though the details really do matter. If the core of our application becomes a black box that we don't fully understand we can no longer confidently reason about it, which makes planning new features harder and eventually slows our progress in the same way that accumulated technical debt does.&lt;/p&gt;
&lt;p&gt;How do we pay down cognitive debt? By improving our understanding of how the code works.&lt;/p&gt;
&lt;p&gt;One of my favorite ways to do that is by building &lt;strong&gt;interactive explanations&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="understanding-word-clouds"&gt;Understanding word clouds&lt;/h2&gt;
&lt;p&gt;In &lt;a href="https://minimaxir.com/2026/02/ai-agent-coding/"&gt;An AI agent coding skeptic tries AI agent coding, in excessive detail&lt;/a&gt; Max Woolf mentioned testing LLMs' Rust abilities with the prompt &lt;code&gt;Create a Rust app that can create "word cloud" data visualizations given a long input text&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This captured my imagination: I've always wanted to know how word clouds work, so I fired off an &lt;a href="https://simonwillison.net/2025/Nov/6/async-code-research/"&gt;asynchronous research project&lt;/a&gt; - &lt;a href="https://github.com/simonw/research/pull/91#issue-4002426963"&gt;initial prompt here&lt;/a&gt;, &lt;a href="https://github.com/simonw/research/tree/main/rust-wordcloud"&gt;code and report here&lt;/a&gt; - to explore the idea.&lt;/p&gt;
&lt;p&gt;This worked really well: Claude Code for web built me a Rust CLI tool that could produce images like
this one:&lt;/p&gt;
&lt;p&gt;&lt;img alt="A word cloud, many words, different colors and sizes, larger words in the middle." src="https://raw.githubusercontent.com/simonw/research/refs/heads/main/rust-wordcloud/wordcloud.png" /&gt;&lt;/p&gt;
&lt;p&gt;But how does it actually work?&lt;/p&gt;
&lt;p&gt;Claude's report said it uses "&lt;strong&gt;Archimedean spiral placement&lt;/strong&gt; with per-word random angular offset for natural-looking layouts". This did not help me much!&lt;/p&gt;
&lt;p&gt;I requested a &lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/linear-walkthroughs/"&gt;linear walkthrough&lt;/a&gt; of the codebase which helped me understand the Rust code in more detail - here's &lt;a href="https://github.com/simonw/research/blob/main/rust-wordcloud/walkthrough.md"&gt;that walkthrough&lt;/a&gt; (and &lt;a href="https://github.com/simonw/research/commit/2cb8c62477173ef6a4c2e274be9f712734df6126"&gt;the prompt&lt;/a&gt;). This helped me understand the structure of the Rust code but I still didn't have an intuitive understanding of how that "Archimedean spiral placement" part actually worked.&lt;/p&gt;
&lt;p&gt;So I asked for an &lt;strong&gt;animated explanation&lt;/strong&gt;. I did this by pasting a link to that existing &lt;code&gt;walkthrough.md&lt;/code&gt; document into a Claude Code session along with the following:&lt;/p&gt;
&lt;p&gt;&lt;div&gt;&lt;markdown-copy&gt;&lt;textarea&gt;Fetch https://raw.githubusercontent.com/simonw/research/refs/heads/main/rust-wordcloud/walkthrough.md to /tmp using curl so you can read the whole thing

Inspired by that, build animated-word-cloud.html - a page that accepts pasted text (which it persists in the `#fragment` of the URL such that a page loaded with that `#` populated will use that text as input and auto-submit it) such that when you submit the text it builds a word cloud using the algorithm described in that document but does it animated, to make the algorithm as clear to understand. Include a slider for the animation which can be paused and the speed adjusted or even stepped through frame by frame while paused. At any stage the visible in-progress word cloud can be downloaded as a PNG.&lt;/textarea&gt;&lt;/markdown-copy&gt;&lt;/div&gt;
You can &lt;a href="https://tools.simonwillison.net/animated-word-cloud"&gt;play with the result here&lt;/a&gt;. Here's an animated GIF demo:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Words appear on the word cloud one at a time, with little boxes showing where the algorithm is attempting to place them - if those boxes overlap an existing word it tries again." src="https://static.simonwillison.net/static/2026/animated-word-cloud-demo.gif" /&gt;&lt;/p&gt;
&lt;p&gt;This was using Claude Opus 4.6, which turns out to have quite good taste when it comes to building explanatory animations.&lt;/p&gt;
&lt;p&gt;If you watch the animation closely you can see that for each word it attempts to place it somewhere on the page by showing a box, run checks if that box intersects an existing word. If so it continues to try to find a good spot, moving outward in a spiral from the center.&lt;/p&gt;
&lt;p&gt;I found that this animation really helped make the way the algorithm worked click for me.&lt;/p&gt;
&lt;p&gt;I have long been a fan of animations and interactive interfaces to help explain different concepts. A good coding agent can produce these on demand to help explain code - its own code or code written by others.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cognitive-debt"&gt;cognitive-debt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="llms"/><category term="coding-agents"/><category term="ai-assisted-programming"/><category term="cognitive-debt"/><category term="generative-ai"/><category term="explorables"/><category term="agentic-engineering"/></entry><entry><title>Sam Rose explains how LLMs work with a visual essay</title><link href="https://simonwillison.net/2025/Dec/19/sam-rose-llms/#atom-tag" rel="alternate"/><published>2025-12-19T18:33:41+00:00</published><updated>2025-12-19T18:33:41+00:00</updated><id>https://simonwillison.net/2025/Dec/19/sam-rose-llms/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ngrok.com/blog/prompt-caching/"&gt;Sam Rose explains how LLMs work with a visual essay&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Rose is one of my favorite authors of &lt;a href="https://simonwillison.net/tags/explorables/"&gt;explorable interactive explanations&lt;/a&gt; - here's &lt;a href="https://samwho.dev/"&gt;his previous collection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sam joined ngrok in September as a developer educator. Here's his first big visual explainer for them, ostensibly about how prompt caching works but it quickly expands to cover tokenization, embeddings, and the basics of the transformer architecture.&lt;/p&gt;
&lt;p&gt;The result is one of the clearest and most accessible introductions to LLM internals I've seen anywhere.&lt;/p&gt;
&lt;div style="text-align: center"&gt;&lt;img alt="Animation. Starts in tokens mode with an array of 75, 305, 24, 887 - clicking embeddings animates those into a 2D array showing each one to be composed of three floating point numbers." src="https://static.simonwillison.net/static/2025/tokens-embeddings.gif" style="max-width: 100%"&gt;&lt;/div&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-rose"&gt;sam-rose&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tokenization"&gt;tokenization&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="explorables"/><category term="generative-ai"/><category term="llms"/><category term="sam-rose"/><category term="tokenization"/></entry><entry><title>A Friendly Introduction to SVG</title><link href="https://simonwillison.net/2025/Aug/5/a-friendly-introduction-to-svg/#atom-tag" rel="alternate"/><published>2025-08-05T05:20:18+00:00</published><updated>2025-08-05T05:20:18+00:00</updated><id>https://simonwillison.net/2025/Aug/5/a-friendly-introduction-to-svg/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.joshwcomeau.com/svg/friendly-introduction-to-svg/"&gt;A Friendly Introduction to SVG&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This SVG tutorial by Josh Comeau is fantastic. It's filled with neat interactive illustrations - with a pleasing subtly "click" audio effect as you adjust their sliders - and provides a useful introduction to a bunch of well chosen SVG fundamentals.&lt;/p&gt;
&lt;p&gt;I finally understand what all four numbers in the &lt;code&gt;viewport="..."&lt;/code&gt; attribute are for!

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/ome2lo/friendly_introduction_svg"&gt;Lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/josh-comeau"&gt;josh-comeau&lt;/a&gt;&lt;/p&gt;



</summary><category term="svg"/><category term="explorables"/><category term="josh-comeau"/></entry><entry><title>Reservoir Sampling</title><link href="https://simonwillison.net/2025/May/8/reservoir-sampling/#atom-tag" rel="alternate"/><published>2025-05-08T21:00:22+00:00</published><updated>2025-05-08T21:00:22+00:00</updated><id>https://simonwillison.net/2025/May/8/reservoir-sampling/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://samwho.dev/reservoir-sampling/"&gt;Reservoir Sampling&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Yet another outstanding interactive essay by Sam Rose (&lt;a href="https://simonwillison.net/tags/sam-rose/"&gt;previously&lt;/a&gt;), this time explaining how reservoir sampling can be used to select a "fair" random sample when you don't know how many options there are and don't want to accumulate them before making a selection.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Reservoir sampling is one of my favourite algorithms, and I've been wanting to write about it for years now. It allows you to solve a problem that at first seems impossible, in a way that is both elegant and efficient.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I appreciate that Sam starts the article with "No math notation, I promise." Lots of delightful widgets to interact with here, all of which help build an intuitive understanding of the underlying algorithm.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animated demo. As a slider moves from left to right the probability of cards drawn from a deck is simulated. Text at the bottom reads Anything older than 15 cards ago is has a less than 0.01% chance of being held when I stop." src="https://static.simonwillison.net/static/2025/sam-rose-cards.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Sam shows how this algorithm can be applied to the real-world problem of sampling log files when incoming logs threaten to overwhelm a log aggregator.&lt;/p&gt;
&lt;p&gt;The dog illustration is &lt;a href="https://samwho.dev/dogs/"&gt;commissioned art&lt;/a&gt; and the MIT-licensed code is &lt;a href="https://github.com/samwho/visualisations/tree/main/reservoir-sampling"&gt;available on GitHub&lt;/a&gt;.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=43928315"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/algorithms"&gt;algorithms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/logging"&gt;logging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rate-limiting"&gt;rate-limiting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-rose"&gt;sam-rose&lt;/a&gt;&lt;/p&gt;



</summary><category term="algorithms"/><category term="logging"/><category term="rate-limiting"/><category term="explorables"/><category term="sam-rose"/></entry><entry><title>Transformer Explainer</title><link href="https://simonwillison.net/2024/Aug/11/transformer-explainer/#atom-tag" rel="alternate"/><published>2024-08-11T22:56:33+00:00</published><updated>2024-08-11T22:56:33+00:00</updated><id>https://simonwillison.net/2024/Aug/11/transformer-explainer/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://poloclub.github.io/transformer-explainer/"&gt;Transformer Explainer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is a very neat interactive visualization (with accompanying essay and video - scroll down for those) that explains the Transformer architecture for LLMs, using a GPT-2 model running directly in the browser using the ONNX runtime and Andrej Karpathy's nanoGPT project.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of the Transformer Explainer interface, running a prompt &amp;quot;the sky is&amp;quot; which returns &amp;quot;blue&amp;quot; as the most obvious next word." src="https://static.simonwillison.net/static/2024/transformer-explainer.jpg" /&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/d3"&gt;d3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-2"&gt;gpt-2&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="explorables"/><category term="d3"/><category term="generative-ai"/><category term="llms"/><category term="gpt-2"/></entry><entry><title>Load Balancing</title><link href="https://simonwillison.net/2024/Jul/13/load-balancing/#atom-tag" rel="alternate"/><published>2024-07-13T22:51:45+00:00</published><updated>2024-07-13T22:51:45+00:00</updated><id>https://simonwillison.net/2024/Jul/13/load-balancing/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://samwho.dev/load-balancing/"&gt;Load Balancing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Rose built this interactive essay explaining how different load balancing strategies work. It's part of &lt;a href="https://samwho.dev/"&gt;a series&lt;/a&gt; that includes &lt;a href="https://samwho.dev/memory-allocation/"&gt;memory allocation&lt;/a&gt;, &lt;a href="https://samwho.dev/bloom-filters/"&gt;bloom filters&lt;/a&gt; and more.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/algorithms"&gt;algorithms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/load-balancing"&gt;load-balancing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-rose"&gt;sam-rose&lt;/a&gt;&lt;/p&gt;



</summary><category term="algorithms"/><category term="load-balancing"/><category term="explorables"/><category term="sam-rose"/></entry><entry><title>An animated introduction to Fourier Series</title><link href="https://simonwillison.net/2024/Jun/5/an-animated-introduction-to-fourier-series/#atom-tag" rel="alternate"/><published>2024-06-05T15:43:57+00:00</published><updated>2024-06-05T15:43:57+00:00</updated><id>https://simonwillison.net/2024/Jun/5/an-animated-introduction-to-fourier-series/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.andreinc.net/2024/04/24/from-the-circle-to-epicycles"&gt;An animated introduction to Fourier Series&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Outstanding essay and collection of animated explanations (created using p5.js) by Andrei Ciobanu explaining Fourier transforms, starting with circles, pi, radians and building up from there.&lt;/p&gt;

&lt;p&gt;I found Fourier stuff only really clicked for me when it was accompanied by clear animated visuals, and these are a beautiful example of those done really well.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=40578705"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mathematics"&gt;mathematics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/processing"&gt;processing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="mathematics"/><category term="processing"/><category term="explorables"/></entry><entry><title>CRDT: Text Buffer</title><link href="https://simonwillison.net/2024/May/20/crdt-text-buffer/#atom-tag" rel="alternate"/><published>2024-05-20T21:19:07+00:00</published><updated>2024-05-20T21:19:07+00:00</updated><id>https://simonwillison.net/2024/May/20/crdt-text-buffer/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://madebyevan.com/algos/crdt-text-buffer/"&gt;CRDT: Text Buffer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Delightfully short and clear explanation of the CRDT approach to collaborative text editing by Evan Wallace (of Figma and esbuild fame), including a neat interactive demonstration of how the algorithm works even when the network connection between peers is temporarily paused.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/42dxsn/crdt_text_buffer"&gt;Lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/crdt"&gt;crdt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="crdt"/><category term="explorables"/></entry><entry><title>Bloom Filters, explained by Sam Rose</title><link href="https://simonwillison.net/2024/Feb/23/bloom-filters-explained-by-sam-rose/#atom-tag" rel="alternate"/><published>2024-02-23T15:59:33+00:00</published><updated>2024-02-23T15:59:33+00:00</updated><id>https://simonwillison.net/2024/Feb/23/bloom-filters-explained-by-sam-rose/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://samwho.dev/bloom-filters/"&gt;Bloom Filters, explained by Sam Rose&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Beautifully designed explanation of bloom filters, complete with interactive demos that illustrate exactly how they work.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bloom-filters"&gt;bloom-filters&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-rose"&gt;sam-rose&lt;/a&gt;&lt;/p&gt;



</summary><category term="bloom-filters"/><category term="explorables"/><category term="sam-rose"/></entry><entry><title>Okay, Color Spaces</title><link href="https://simonwillison.net/2024/Feb/22/okay-color-spaces/#atom-tag" rel="alternate"/><published>2024-02-22T23:38:56+00:00</published><updated>2024-02-22T23:38:56+00:00</updated><id>https://simonwillison.net/2024/Feb/22/okay-color-spaces/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ericportis.com/posts/2024/okay-color-spaces/"&gt;Okay, Color Spaces&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fantastic interactive explanation of how color spaces work by Eric Portis.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/leaverou/status/1760495271748780355"&gt;Lea Verou&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/colour"&gt;colour&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="colour"/><category term="explorables"/></entry><entry><title>LLM Visualization</title><link href="https://simonwillison.net/2023/Dec/4/llm-visualization/#atom-tag" rel="alternate"/><published>2023-12-04T22:24:04+00:00</published><updated>2023-12-04T22:24:04+00:00</updated><id>https://simonwillison.net/2023/Dec/4/llm-visualization/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://bbycroft.net/llm"&gt;LLM Visualization&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Brendan Bycroft’s beautifully crafted interactive explanation of the transformers architecture—that universal but confusing model diagram, only here you can step through and see a representation of the flurry of matrix algebra that occurs every time you get a Large Language Model to generate the next token.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="explorables"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>An Interactive Intro to CRDTs</title><link href="https://simonwillison.net/2023/Oct/4/an-interactive-intro-to-crdts/#atom-tag" rel="alternate"/><published>2023-10-04T15:10:52+00:00</published><updated>2023-10-04T15:10:52+00:00</updated><id>https://simonwillison.net/2023/Oct/4/an-interactive-intro-to-crdts/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://jakelazaroff.com/words/an-interactive-intro-to-crdts/"&gt;An Interactive Intro to CRDTs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Superb interactive essay by Jake Lazaroff, providing a very clear explanation of how the fundamental mechanisms behind CRDTs (Conflict-free Replicated Data Types) work. The interactive explanatory demos are very neatly designed and a lot of fun to play with.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=37764581"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/crdt"&gt;crdt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="crdt"/><category term="explorables"/></entry><entry><title>See this page fetch itself, byte by byte, over TLS</title><link href="https://simonwillison.net/2023/May/10/see-this-page-fetch-itself-byte-by-byte-over-tls/#atom-tag" rel="alternate"/><published>2023-05-10T13:58:36+00:00</published><updated>2023-05-10T13:58:36+00:00</updated><id>https://simonwillison.net/2023/May/10/see-this-page-fetch-itself-byte-by-byte-over-tls/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://subtls.pages.dev/"&gt;See this page fetch itself, byte by byte, over TLS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
George MacKerron built a TLS 1.3 library in TypeScript and used it to construct this amazing educational demo, which performs a full HTTPS request for its own source code over a WebSocket and displays an annotated byte-by-byte representation of the entire exchange. This is the most useful illustration of how HTTPS actually works that I’ve ever seen.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/b0rk/status/1656287855612682240"&gt;Julia Evans&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/encryption"&gt;encryption&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/https"&gt;https&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tls"&gt;tls&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/websockets"&gt;websockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="encryption"/><category term="http"/><category term="https"/><category term="tls"/><category term="websockets"/><category term="explorables"/></entry><entry><title>Language models can explain neurons in language models</title><link href="https://simonwillison.net/2023/May/9/explain-neurons/#atom-tag" rel="alternate"/><published>2023-05-09T17:35:42+00:00</published><updated>2023-05-09T17:35:42+00:00</updated><id>https://simonwillison.net/2023/May/9/explain-neurons/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://openaipublic.blob.core.windows.net/neuron-explainer/paper/index.html"&gt;Language models can explain neurons in language models&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fascinating interactive paper by OpenAI, describing how they used GPT-4 to analyze the concepts tracked by individual neurons in their much older GPT-2 model. “We generated cluster labels by embedding each neuron explanation using the OpenAI Embeddings API, then clustering them and asking GPT-4 to label each cluster.”

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://openai.com/research/language-models-can-explain-neurons-in-language-models"&gt;OpenAI blog&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-4"&gt;gpt-4&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/embeddings"&gt;embeddings&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-2"&gt;gpt-2&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="explorables"/><category term="openai"/><category term="generative-ai"/><category term="gpt-4"/><category term="llms"/><category term="embeddings"/><category term="gpt-2"/></entry><entry><title>Draw SVG rope using JavaScript</title><link href="https://simonwillison.net/2022/Dec/31/draw-svg-rope-using-javascript/#atom-tag" rel="alternate"/><published>2022-12-31T17:31:05+00:00</published><updated>2022-12-31T17:31:05+00:00</updated><id>https://simonwillison.net/2022/Dec/31/draw-svg-rope-using-javascript/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://muffinman.io/blog/draw-svg-rope-using-javascript/"&gt;Draw SVG rope using JavaScript&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Delightful interactive tutorial by Stanko Tadić showing how to render an illustration of a rope using SVG, starting with a path. The way the tutorial is presented is outstanding.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=34197379"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/graphics"&gt;graphics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="graphics"/><category term="javascript"/><category term="svg"/><category term="explorables"/></entry><entry><title>Sha256 Algorithm Explained</title><link href="https://simonwillison.net/2022/Feb/7/sha256-algorithm-explained/#atom-tag" rel="alternate"/><published>2022-02-07T19:27:40+00:00</published><updated>2022-02-07T19:27:40+00:00</updated><id>https://simonwillison.net/2022/Feb/7/sha256-algorithm-explained/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://sha256algorithm.com/"&gt;Sha256 Algorithm Explained&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Absolutely beautiful interactive animated explanation by Domingo Martin of the SHA256 hashing algorithm.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=30244534"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/algorithms"&gt;algorithms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="algorithms"/><category term="explorables"/></entry><entry><title>Cameras and Lenses</title><link href="https://simonwillison.net/2020/Dec/8/cameras-and-lenses/#atom-tag" rel="alternate"/><published>2020-12-08T03:38:57+00:00</published><updated>2020-12-08T03:38:57+00:00</updated><id>https://simonwillison.net/2020/Dec/8/cameras-and-lenses/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ciechanow.ski/cameras-and-lenses/"&gt;Cameras and Lenses&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fabulous explotable interactive essay by Bartosz Ciechanowski explaining how cameras and lenses work.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/theavalkyrie/status/1336145214436741120"&gt;@theavalkyrie&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/photography"&gt;photography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="photography"/><category term="explorables"/></entry><entry><title>A visual introduction to machine learning</title><link href="https://simonwillison.net/2020/Jan/10/visual-introduction-machine-learning/#atom-tag" rel="alternate"/><published>2020-01-10T05:12:31+00:00</published><updated>2020-01-10T05:12:31+00:00</updated><id>https://simonwillison.net/2020/Jan/10/visual-introduction-machine-learning/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.r2d3.us/visual-intro-to-machine-learning-part-1/"&gt;A visual introduction to machine learning&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Beautiful interactive essay explaining how a decision tree machine learning module is constructed, and using that to illustrate the concept of overfitting. This is one of the best explanations of machine learning fundamentals I’ve seen anywhere.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/machine-learning"&gt;machine-learning&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="machine-learning"/><category term="explorables"/></entry><entry><title>An Interactive Introduction to Fourier Transforms</title><link href="https://simonwillison.net/2019/Jan/12/fourier-transforms/#atom-tag" rel="alternate"/><published>2019-01-12T02:55:51+00:00</published><updated>2019-01-12T02:55:51+00:00</updated><id>https://simonwillison.net/2019/Jan/12/fourier-transforms/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.jezzamon.com/fourier/index.html"&gt;An Interactive Introduction to Fourier Transforms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I love interactive exploitable explanations and this is the best I’ve seen in a while: Jez Swanson breaks down exactly what a Fourier transform does, first by letting you interactively draw and deconstruct wave patterns and then by showing Epicycles andcexplsining JPEG compression. All with not a formula in sight!

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://www.metafilter.com/178704/Cyclical-reasoning"&gt;MetaFilter&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mathematics"&gt;mathematics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="mathematics"/><category term="explorables"/></entry><entry><title>Notebook: How to build a Teachable Machine with TensorFlow.js</title><link href="https://simonwillison.net/2018/Jun/20/teachable-machine-tensorflowjs/#atom-tag" rel="alternate"/><published>2018-06-20T21:10:48+00:00</published><updated>2018-06-20T21:10:48+00:00</updated><id>https://simonwillison.net/2018/Jun/20/teachable-machine-tensorflowjs/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://beta.observablehq.com/@nsthorat/how-to-build-a-teachable-machine-with-tensorflow-js"&gt;Notebook: How to build a Teachable Machine with TensorFlow.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is a really cool Observable notebook. It explains how to build image classification that runs in the browser on top of Tensorflow.js, and includes interactive demos that hook into your webcam and let you hold up items and use them to train a classifier. Since it’s built on Observable every single underlying line of source code is available to browse as part of the essay.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/nsthorat/status/10094961298919465172"&gt;@nsthorat&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/machine-learning"&gt;machine-learning&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tensorflow"&gt;tensorflow&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/observable"&gt;observable&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="machine-learning"/><category term="explorables"/><category term="tensorflow"/><category term="observable"/></entry><entry><title>What do you mean "average"?</title><link href="https://simonwillison.net/2018/Apr/12/what-do-you-mean-average/#atom-tag" rel="alternate"/><published>2018-04-12T16:41:42+00:00</published><updated>2018-04-12T16:41:42+00:00</updated><id>https://simonwillison.net/2018/Apr/12/what-do-you-mean-average/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://beta.observablehq.com/@maryzam/what-do-you-mean-average"&gt;What do you mean &amp;quot;average&amp;quot;?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Lovely example of an interactive explorable demonstrating mode/mean/median, built as an Observable notebook using D3.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/maryzamcode/status/983848153697996800?s=21"&gt;@maryzamcode&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/d3"&gt;d3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/observable"&gt;observable&lt;/a&gt;&lt;/p&gt;



</summary><category term="explorables"/><category term="d3"/><category term="observable"/></entry><entry><title>USGS World Earthquake Map (observable notebook)</title><link href="https://simonwillison.net/2018/Jan/31/usgs-world-earthquake-map-observable-notebook/#atom-tag" rel="alternate"/><published>2018-01-31T19:07:55+00:00</published><updated>2018-01-31T19:07:55+00:00</updated><id>https://simonwillison.net/2018/Jan/31/usgs-world-earthquake-map-observable-notebook/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://beta.observablehq.com/@jashkenas/quakespotter-0-1"&gt;USGS World Earthquake Map (observable notebook)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Here’s an extended version of the notebook constructed by Jeremy Ashkenas in that Observable YouTube demo. You really need to check this thing out—the notebook itself has sliders in that you can manipulate (even on a mobile browser) or you can click to edit the code and see your changes reflected in real-time. If you sign in with GitHub you can fork the project to your own account and save your changes.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jeremy-ashkenas"&gt;jeremy-ashkenas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/observable"&gt;observable&lt;/a&gt;&lt;/p&gt;



</summary><category term="jeremy-ashkenas"/><category term="explorables"/><category term="observable"/></entry><entry><title>Observable: An Earthquake Globe in Ten Minutes</title><link href="https://simonwillison.net/2018/Jan/31/observable-earthquake-globe-ten-minutes/#atom-tag" rel="alternate"/><published>2018-01-31T17:01:16+00:00</published><updated>2018-01-31T17:01:16+00:00</updated><id>https://simonwillison.net/2018/Jan/31/observable-earthquake-globe-ten-minutes/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=uEmDwflQ3xE"&gt;Observable: An Earthquake Globe in Ten Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Well worth your time. Jeremy Ashkenas uses Observable to live-code an interactive visualization of recent earthquakes around the world, using USGS data (fetched as JSON), d3, topoJSON and an Observable notebook. I’m sold—this is truly ground-breaking new technology.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeremy-ashkenas"&gt;jeremy-ashkenas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/visualization"&gt;visualization&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/d3"&gt;d3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/observable"&gt;observable&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="jeremy-ashkenas"/><category term="visualization"/><category term="explorables"/><category term="d3"/><category term="observable"/></entry><entry><title>JOY.js</title><link href="https://simonwillison.net/2017/Nov/21/joyjs/#atom-tag" rel="alternate"/><published>2017-11-21T14:50:03+00:00</published><updated>2017-11-21T14:50:03+00:00</updated><id>https://simonwillison.net/2017/Nov/21/joyjs/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://ncase.me/joy-demo/"&gt;JOY.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Delightful new exploratory programming environment from Nicky Case. Try the Turtle demo, which takes Logo and updates it for the modern web.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/ncasenmare/status/931950392191127557"&gt;Nicky Case&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="javascript"/><category term="explorables"/></entry><entry><title>Pink Trombone</title><link href="https://simonwillison.net/2017/Nov/9/pink-trombone/#atom-tag" rel="alternate"/><published>2017-11-09T18:44:03+00:00</published><updated>2017-11-09T18:44:03+00:00</updated><id>https://simonwillison.net/2017/Nov/9/pink-trombone/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://dood.al/pinktrombone/"&gt;Pink Trombone&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Explorable explanation of the human vocal system by Neil Thapen. View source for some pleasantly readable JavaScript / canvas / window.AudioContext code.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://explorabl.es/"&gt;Explorable Explanations&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="explorables"/></entry><entry><title>Feature Visualization</title><link href="https://simonwillison.net/2017/Nov/7/feature-visualization/#atom-tag" rel="alternate"/><published>2017-11-07T20:48:45+00:00</published><updated>2017-11-07T20:48:45+00:00</updated><id>https://simonwillison.net/2017/Nov/7/feature-visualization/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://distill.pub/2017/feature-visualization/"&gt;Feature Visualization&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Another gorgeous paper published on Distill, the journal that prides itself on including interactive visualizations to help provide clear explanations of machine learning.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=15646037"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/machine-learning"&gt;machine-learning&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="machine-learning"/><category term="explorables"/></entry><entry><title>An interactive explanation of quadtrees</title><link href="https://simonwillison.net/2017/Oct/16/quadtrees/#atom-tag" rel="alternate"/><published>2017-10-16T14:47:25+00:00</published><updated>2017-10-16T14:47:25+00:00</updated><id>https://simonwillison.net/2017/Oct/16/quadtrees/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://jimkang.com/quadtreevis/"&gt;An interactive explanation of quadtrees&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat explorable explanation of quadtrees, using interactives built on top of D3.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://medium.com/@deathmtn/weird-but-worth-it-a762820820a2"&gt;Weird, but worth it: combining canvas and SVG&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/d3"&gt;d3&lt;/a&gt;&lt;/p&gt;



</summary><category term="explorables"/><category term="d3"/></entry><entry><title>Explorable Explanations</title><link href="https://simonwillison.net/2017/Oct/15/explorable/#atom-tag" rel="alternate"/><published>2017-10-15T13:17:30+00:00</published><updated>2017-10-15T13:17:30+00:00</updated><id>https://simonwillison.net/2017/Oct/15/explorable/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://explorabl.es/"&gt;Explorable Explanations&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’m fascinated by web articles and essays that  embed interactive visualizations—taking advantage of the unique capabilities of the medium to help explain complex concepts. Explorable Explanations collects exactly these, under the banner of “learning through play”. They also gather tools and tutorials to help build more of them.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/interactives"&gt;interactives&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/explorables"&gt;explorables&lt;/a&gt;&lt;/p&gt;



</summary><category term="interactives"/><category term="explorables"/></entry></feed>