<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>nahuel genchi</title>
  <subtitle>my personal blog, where i write about my projects and ideas on any topic that interests me.</subtitle>
  <id>urn:uuid:ffab997d-c5f6-5363-8376-0e10be2b5452</id>
  <link rel="self" type="application/atom+xml" href="https://nahuelgenchi.com/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/"/>
  <updated>2026-10-14T12:00:00Z</updated>
  <author><name>nahuel genchi</name></author>
  <entry>
    <title>inside kirby super star ultra</title>
    <id>urn:uuid:e0beca78-baef-5396-ab7d-8664d1a09710</id>
    <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/gaming/inside-kirby-super-star-ultra/"/>
    <published>2026-10-13T12:00:00Z</published>
    <updated>2026-10-14T12:00:00Z</updated>
    <summary>a 2008 handheld game read from its cartridge, so it can run inside another game.</summary>
    <category term="gaming"/>
    <category term="reverse-engineering"/>
    <category term="emulation"/>
    <category term="modding"/>
    <content type="html" xml:base="https://nahuelgenchi.com/gaming/inside-kirby-super-star-ultra/">&lt;p&gt;kirby's dead land is a mod that puts kirby in dead cells. it does not redraw him. the real game from 2008, kirby super star ultra, runs hidden inside an emulator, sixty times a second, and dead cells borrows its hero: his jump, his sword, his appetite. to wire one game into another like that, the guest has to be known from the inside. so the cartridge was read, end to end. this is what is in there.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;5,996 functions · 157 pieces of program · 42 enemies · 4,096 random numbers · 48 hit records&lt;/p&gt;

&lt;ol class=&quot;flow&quot;&gt;
&lt;li&gt;dead cells starts a frame&lt;/li&gt;
&lt;li&gt;the hidden &lt;abbr title=&quot;nintendo ds&quot;&gt;DS&lt;/abbr&gt; runs one frame of kirby's game&lt;/li&gt;
&lt;li&gt;the mod reads kirby out
&lt;ul&gt;
&lt;li&gt;where he is&lt;/li&gt;
&lt;li&gt;his sprites&lt;/li&gt;
&lt;li&gt;his hits&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;dead cells draws him and takes the hits&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;every number below was measured on that hidden game, on a workbench copy of the emulator, with nothing on screen.&lt;sup&gt;&lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/note-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;a cartridge that is mostly film&lt;/h2&gt;

&lt;aside&gt;
&lt;strong&gt;the cartridge&lt;/strong&gt;
&lt;dl class=&quot;card&quot;&gt;
&lt;dt&gt;game code&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;YKWE&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;size&lt;/dt&gt;&lt;dd&gt;&lt;span class=&quot;qty&quot;&gt;134.2 MB&lt;/span&gt;&lt;/dd&gt;
&lt;dt&gt;in use&lt;/dt&gt;&lt;dd&gt;&lt;span class=&quot;qty&quot;&gt;76.1 MB&lt;/span&gt;&lt;/dd&gt;
&lt;dt&gt;files&lt;/dt&gt;&lt;dd&gt;1,886&lt;/dd&gt;
&lt;dt&gt;program&lt;/dt&gt;&lt;dd&gt;&lt;span class=&quot;qty&quot;&gt;5.8 MB&lt;/span&gt;&lt;/dd&gt;
&lt;dt&gt;music and effects&lt;/dt&gt;&lt;dd&gt;114 and 452&lt;/dd&gt;
&lt;/dl&gt;
&lt;/aside&gt;

&lt;p&gt;the cartridge holds 134 megabytes and the game fills 76 of them. most of that is not game at all. it is fifty-one cutscenes.&lt;/p&gt;

&lt;figure&gt;
&lt;p class=&quot;of&quot;&gt;61 in 100 bytes of the game are cutscenes.&lt;/p&gt;
&lt;/figure&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;what the 76 megabytes are, in megabytes&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;megabytes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cutscenes&lt;/th&gt;&lt;td&gt;46.40&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;every level, in one file&lt;/th&gt;&lt;td&gt;10.65&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the program&lt;/th&gt;&lt;td&gt;5.80&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kirby's sprites&lt;/th&gt;&lt;td&gt;2.73&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a copy to send to a second console&lt;/th&gt;&lt;td&gt;1.65&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;all the sound&lt;/th&gt;&lt;td&gt;1.28&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;menus, enemies and the rest&lt;/th&gt;&lt;td&gt;7.57&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;everything kirby can do, every enemy and every boss, is the bar picked out.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the sound is the neat part. 114 pieces of music and 452 effects fit in &lt;span class=&quot;qty&quot;&gt;1.28 MB&lt;/span&gt;, because nothing in there is a recording: it is sheet music and a few short samples, played live by the console. and the file still carries the names its makers gave each one.&lt;/p&gt;

&lt;h2&gt;a program that arrives in pieces&lt;/h2&gt;

&lt;p&gt;a &lt;abbr&gt;DS&lt;/abbr&gt; has four megabytes of memory. the program alone is 5.8. it cannot all be in memory at once, and it never is: 5.3 of those megabytes are cut into 157 &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-overlay&quot;&gt;overlays&lt;/a&gt;, pieces of program that are loaded when they are needed and thrown out when they are not. every enemy is one. so are the bosses.&lt;/p&gt;

&lt;p&gt;this is memory while kirby stands in green greens, the first level:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;map&quot;&gt;
&lt;caption&gt;the program in memory, during play&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;piece&lt;/th&gt;&lt;th&gt;starts at&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it is&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the core&lt;/th&gt;&lt;td&gt;0x02000000&lt;/td&gt;&lt;td&gt;291320&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;always there: the system under everything&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;overlay 23&lt;/th&gt;&lt;td&gt;0x02071240&lt;/td&gt;&lt;td&gt;23744&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;hits and collisions&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;overlay 24&lt;/th&gt;&lt;td&gt;0x0207f180&lt;/td&gt;&lt;td&gt;131520&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the level, and what appears in it&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;overlay 25&lt;/th&gt;&lt;td&gt;0x020a0080&lt;/td&gt;&lt;td&gt;110240&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the player, whoever it is&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;overlay 26&lt;/th&gt;&lt;td&gt;0x020bc180&lt;/td&gt;&lt;td&gt;592896&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;kirby: every action and all 24 abilities&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;overlay 27&lt;/th&gt;&lt;td&gt;0x0214cd80&lt;/td&gt;&lt;td&gt;143552&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the lists of enemies and bosses&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;overlay 28&lt;/th&gt;&lt;td&gt;0x021700a0&lt;/td&gt;&lt;td&gt;163424&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;what all enemies have in common&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;overlay 29&lt;/th&gt;&lt;td&gt;0x02197f20&lt;/td&gt;&lt;td&gt;19680&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;waddle dee&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;four more chairs&lt;/th&gt;&lt;td&gt;0x0219cc00&lt;/td&gt;&lt;td&gt;43488&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;room for four other enemies, as the next part tells&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the rest&lt;/th&gt;&lt;td&gt;0x021a75e0&lt;/td&gt;&lt;td&gt;2460192&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;bosses when there are any, the second processor's program, and everything the game is working on&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;all four megabytes, drawn to scale. the hatched stretch is data and a few small pieces left out.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;overlay 26 is kirby himself: 2,212 functions in 593 kilobytes. the hero is twice the size of the core of his own game. and at the far end, in 19 kilobytes, sits the smallest thing with a mind in it: a waddle dee.&lt;/p&gt;

&lt;h2&gt;five chairs for every enemy&lt;/h2&gt;

&lt;p&gt;each ordinary enemy is a small program of its own, between 1 and 20 kilobytes. and each of those programs was built to sit at one of five fixed places in memory. two enemies built for the same place cannot be in a room together: loading one would write over the other. every room of the original game is musical chairs, with five chairs.&lt;/p&gt;

&lt;figure&gt;
&lt;table&gt;
&lt;caption&gt;who was built for which chair&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;chair&lt;/th&gt;&lt;th class=&quot;l&quot;&gt;at&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;built to sit there&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;1&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;&lt;code&gt;0x021a2b00&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;bomber, cappy, kabu, laser ball, moto shotzo, coconut&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;&lt;code&gt;0x02197f20&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;waddle dee and waddle doo, blade knight, sword knight, walky, chilly, burning leo, plasma wisp, bio spark, capsule j&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;3&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;&lt;code&gt;0x021a4ce0&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;shotzo, grizzo, gim, knuckle joe, jungle bomb, birdon, tac&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;4&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;&lt;code&gt;0x0219f2a0&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;sir kibble, twizzy, gator, scarfy, poppy bros. jr., gip, bandana waddle dee&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;5&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;&lt;code&gt;0x0219cc00&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;noddy, bronto burt, rocky, broom hatter, simirror, wheelie, squishy, lovely, flotzo&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;so a waddle dee and a blade knight never share a room, anywhere in the game. green greens seats waddle dee and waddle doo, who are one program, then cappy, bronto burt and twizzy: four chairs, one of each.&lt;/p&gt;

&lt;p&gt;this matters to the mod. every dead cells enemy near kirby gets a &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-stand-in&quot;&gt;stand-in&lt;/a&gt; inside the hidden game, so that the original's own code decides what his sword touches. the stand-ins are all waddle dees, in chair 2. the table says which real enemies could sit beside them, and which never could.&lt;/p&gt;

&lt;p&gt;each enemy also carries a small record of who it is. read out of all of them, and set against kirby's own 76 points of health:&lt;sup&gt;&lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/note-2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;health, as the cartridge states it&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;health&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bandana waddle dee&lt;/th&gt;&lt;td&gt;250&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;kirby&lt;/th&gt;&lt;td&gt;76&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grizzo&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sword knight&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;rocky&lt;/th&gt;&lt;td&gt;42&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flotzo&lt;/th&gt;&lt;td&gt;32&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knuckle joe&lt;/th&gt;&lt;td&gt;30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blade knight&lt;/th&gt;&lt;td&gt;24&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;waddle doo&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;waddle dee&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;shotzo&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a shotzo, the cannon nothing can destroy, has one point of health on paper.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;details&gt;
&lt;summary&gt;all forty-two, to sort&lt;/summary&gt;
&lt;figure&gt;
&lt;table class=&quot;sort&quot;&gt;
&lt;caption&gt;every enemy record found&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;enemy&lt;/th&gt;&lt;th&gt;health&lt;/th&gt;&lt;th class=&quot;l&quot;&gt;swallowed, gives&lt;/th&gt;&lt;th&gt;a touch costs kirby&lt;/th&gt;&lt;th&gt;chair&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bandana waddle dee&lt;/th&gt;&lt;td&gt;250&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grizzo&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sword knight&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;sword&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;rocky&lt;/th&gt;&lt;td&gt;42&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;stone&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flotzo&lt;/th&gt;&lt;td&gt;32&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knuckle joe&lt;/th&gt;&lt;td&gt;30&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;fighter&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;moto shotzo&lt;/th&gt;&lt;td&gt;26&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blade knight&lt;/th&gt;&lt;td&gt;24&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;sword&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chilly&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;ice&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;simirror&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;mirror&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sir kibble&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;cutter&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;capsule j&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;jet&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the one filed as &lt;code&gt;magical&lt;/code&gt;&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;waddle doo&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;beam&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a second swimmer&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a swimmer&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;birdon&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;wing&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bomber&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;crash&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;broom hatter&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;burning leo&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;fire&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gator&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gim&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;yo-yo&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;jungle bomb&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;bomb&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kabu&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scarfy&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;crash&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;squishy&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;waddle dee&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;walky&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;mike&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;wheelie&lt;/th&gt;&lt;td&gt;14&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;wheel&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cappy&lt;/th&gt;&lt;td&gt;12&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;noddy&lt;/th&gt;&lt;td&gt;12&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;sleep&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;plasma wisp&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;plasma&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a small swimmer&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bio spark&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;ninja&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bronto burt&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gip&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;laser ball&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;beam&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tac&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;copy&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;twizzy&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;twizzy, second kind&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;coconut&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;shotzo&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;l&quot;&gt;nothing&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;three records, for poppy bros. jr., lovely and one more, were not found. the swimmers share a file and their names are not in it.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/details&gt;

&lt;h2&gt;what kirby is doing, and how&lt;/h2&gt;

&lt;p&gt;sixty times a second the game asks one question about kirby: what is he doing? the answer is a number, his action. there are 44. standing is 6, walking is 11, a jump is 13, falling 14, floating 15, being hurt 29 and dying 33.&lt;/p&gt;

&lt;p&gt;nearly every action is run by the same five routines. what sets one apart is a single question of its own: which move? a move is the exact way of doing the action. walking has three: plain, with a mouthful, and wading through water. so the game keeps two bookmarks for kirby, the kind of thing he is doing and exactly how, and the second is the one that knows his mouth is full.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;graph&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;from&lt;/th&gt;&lt;th&gt;to&lt;/th&gt;&lt;th&gt;when&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;stand&lt;/td&gt;&lt;td&gt;walk&lt;/td&gt;&lt;td&gt;hold a direction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;walk&lt;/td&gt;&lt;td&gt;dash&lt;/td&gt;&lt;td&gt;tap it twice&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dash&lt;/td&gt;&lt;td&gt;skid&lt;/td&gt;&lt;td&gt;turn round&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;td&gt;stand&lt;/td&gt;&lt;td&gt;jump&lt;/td&gt;&lt;td&gt;&lt;kbd class=&quot;pad&quot;&gt;A&lt;/kbd&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;td&gt;jump&lt;/td&gt;&lt;td&gt;fall&lt;/td&gt;&lt;td&gt;at the top&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;td&gt;fall&lt;/td&gt;&lt;td&gt;land&lt;/td&gt;&lt;td&gt;the floor&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fall&lt;/td&gt;&lt;td&gt;float&lt;/td&gt;&lt;td&gt;&lt;kbd class=&quot;pad&quot;&gt;A&lt;/kbd&gt; again&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;td&gt;land&lt;/td&gt;&lt;td&gt;stand&lt;/td&gt;&lt;td&gt;6 frames on&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;td&gt;stand&lt;/td&gt;&lt;td&gt;use the ability&lt;/td&gt;&lt;td&gt;&lt;kbd class=&quot;pad&quot;&gt;B&lt;/kbd&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;td&gt;use the ability&lt;/td&gt;&lt;td&gt;stand&lt;/td&gt;&lt;td&gt;done&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;ten of the ways from one action to the next, each seen by pressing the button and watching the number change. a jump is the blue road.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the blue road, measured. kirby leaves the ground in a burst, 10.5 pixels in the first &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-frame&quot;&gt;frame&lt;/a&gt;, then 8.0, 5.4 and 2.9. after that the game takes about a sixth of a pixel off his speed every frame, until he is falling at 3.5 pixels a frame and it lets him fall no faster.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines&quot;&gt;
&lt;caption&gt;one jump, every third frame&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;frame&lt;/th&gt;&lt;th&gt;pixels off the floor&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;0&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;1&lt;/th&gt;&lt;td&gt;10.5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;4&lt;/th&gt;&lt;td&gt;26.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;7&lt;/th&gt;&lt;td&gt;34.5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;10&lt;/th&gt;&lt;td&gt;40.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;13&lt;/th&gt;&lt;td&gt;45.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;16&lt;/th&gt;&lt;td&gt;48.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;19&lt;/th&gt;&lt;td&gt;49.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;22&lt;/th&gt;&lt;td&gt;49.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;25&lt;/th&gt;&lt;td&gt;48.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;28&lt;/th&gt;&lt;td&gt;45.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;31&lt;/th&gt;&lt;td&gt;40.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;34&lt;/th&gt;&lt;td&gt;36.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;37&lt;/th&gt;&lt;td&gt;29.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;40&lt;/th&gt;&lt;td&gt;20.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;43&lt;/th&gt;&lt;td&gt;10.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;46&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;up in twenty frames, down in twenty-six. the top is 49.9 pixels, a little over three of the game's 16-pixel tiles. three quarters of a second in all.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;twenty-four costumes&lt;/h2&gt;

&lt;p&gt;to the program, a copy ability is one pointer. when kirby swallows a blade knight, a single routine says goodbye to the old ability, looks sword up in a list, and swaps the table of moves his actions read from. nothing else about him changes. that is why the mod can hand him any ability: it calls that one routine, and the original does the rest.&lt;/p&gt;

&lt;p&gt;each ability was then given the same ten presses, alone in an empty room, and every hit it made was written down.&lt;sup&gt;&lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/note-3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;the hardest single hit of each ability&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;damage&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;crash&lt;/th&gt;&lt;td&gt;160&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;hammer&lt;/th&gt;&lt;td&gt;80&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;paint&lt;/th&gt;&lt;td&gt;70&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;cook&lt;/th&gt;&lt;td&gt;70&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;stone&lt;/th&gt;&lt;td&gt;50&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;mike&lt;/th&gt;&lt;td&gt;40&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;parasol&lt;/th&gt;&lt;td&gt;28&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;wing&lt;/th&gt;&lt;td&gt;26&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;ninja&lt;/th&gt;&lt;td&gt;25&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sword&lt;/th&gt;&lt;td&gt;24&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;wheel&lt;/th&gt;&lt;td&gt;23&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cutter&lt;/th&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mirror&lt;/th&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;fighter&lt;/th&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;ice&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;fire&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;beam&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;yo-yo&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;suplex&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bomb&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;jet&lt;/th&gt;&lt;td&gt;14&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;copy&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;plasma&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;red is the four abilities that are used up, and hit the whole screen. blue is hammer's upward flip, the strongest thing kirby can do twice. a waddle dee has 16 health.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and this is one of those moves from the inside. what follows is not a picture of the game. it is sword's standing slash as the program sees it: the &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-hit-box&quot;&gt;hit boxes&lt;/a&gt;, frame by frame, exactly where the game put them.&lt;/p&gt;

&lt;figure&gt;
&lt;img class=&quot;frames&quot; data-frames=&quot;24&quot; data-fps=&quot;8&quot; src=&quot;chop.png&quot; alt=&quot;a circle on a floor. numbered boxes appear over it, in front of it and behind it in turn, while a smaller box leaves to the right&quot; width=&quot;11136&quot; height=&quot;144&quot;&gt;
&lt;figcaption&gt;twenty-four frames, four tenths of a second in the game. kirby is the circle, and the small square in his middle is the only part of him that can be hurt. red is the blade, with what it hits for. blue is the beam that leaves it, at 7 pixels a frame.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the slash starts over his head, comes down in front from above his hat to under the floor, and then, for two frames, there is a box behind him. the follow-through hits too.&lt;/p&gt;

&lt;h2&gt;a full mouth&lt;/h2&gt;

&lt;p&gt;the mod gives kirby a second pocket. dead cells has a key for healing, &lt;kbd&gt;F&lt;/kbd&gt;, which kirby has no use for, so it holds one of the four abilities that get used up: crash, paint, mike or cook. a press lends him that ability through the same routine a swallow uses, lets him fire it, and hands him back his own.&lt;/p&gt;

&lt;p&gt;one moment broke it: kirby with his mouth full. asked what he is doing, the game answers standing, because a full mouth keeps the action numbers of standing, walking and jumping. so the mod saw a kirby standing still, and lent him the crash. if he swallowed then, the swallow won. on the workbench he came out of it with the swallowed ability, and the crash in his pocket was lost.&lt;/p&gt;

&lt;p&gt;the game itself is never fooled. kirby's record keeps a byte that the original reads before it picks how he stands: 1 for an empty mouth, 2 for a full one. and the move it then picks, the second bookmark from &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/what-kirby-is-doing-and-how&quot;&gt;earlier&lt;/a&gt;, is a different one. the mod reads both now, and &lt;kbd&gt;F&lt;/kbd&gt; waits for the mouth to be empty.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;trace&quot;&gt;
&lt;caption&gt;what the mod reads of kirby, three moments&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;kirby&lt;/th&gt;&lt;th&gt;action&lt;/th&gt;&lt;th&gt;the mouth byte&lt;/th&gt;&lt;th&gt;move&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;standing&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;code&gt;021314d8&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mouth full&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;code&gt;02131508&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;after the spit&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;code&gt;021314d8&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the action says standing all three times. only the byte and the move know about the mouth. a move is named by where it sits in memory.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and this is the same moment in the mod, in one of its test runs, against a real dead cells zombie.&lt;sup&gt;&lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;figure class=&quot;set&quot; data-cols=&quot;2&quot;&gt;
&lt;figure&gt;&lt;img src=&quot;inhale.webp&quot; alt=&quot;kirby, pink and round, with his mouth wide open, pulling a glowing green zombie towards him&quot; width=&quot;288&quot; height=&quot;162&quot;&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;full.webp&quot; alt=&quot;kirby standing with his cheeks puffed out, a splash of dark red on the wall behind him&quot; width=&quot;288&quot; height=&quot;162&quot;&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;spit.webp&quot; alt=&quot;kirby with an empty mouth again, and a yellow star flying away from him to the right&quot; width=&quot;288&quot; height=&quot;162&quot;&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;crash.webp&quot; alt=&quot;kirby lifted over a white ball that swells out from where he stood, yellow stars flying off in every direction&quot; width=&quot;288&quot; height=&quot;162&quot;&gt;&lt;/figure&gt;
&lt;figcaption&gt;five seconds of one run. &lt;b&gt;a&lt;/b&gt; kirby inhales the zombie. &lt;b&gt;b&lt;/b&gt; his mouth is full. &lt;kbd&gt;F&lt;/kbd&gt; is pressed here, and for the 80 frames the mouth stays full nothing happens. &lt;b&gt;c&lt;/b&gt; he spits the zombie out as a star. &lt;b&gt;d&lt;/b&gt; &lt;kbd&gt;F&lt;/kbd&gt; again: the lent crash goes off, and when it is spent kirby is himself again.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the same move can tell more than the mouth: whether kirby is wading, and which of an ability's attacks he is making. so far the mod asks it only about the mouth.&lt;/p&gt;

&lt;h2&gt;what a hit is made of&lt;/h2&gt;

&lt;p&gt;every creature in the game starts from four bytes.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;fields&quot; data-per=&quot;4&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;field&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it holds&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;class&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;what kind of thing this is, 0 to 59&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;copy ability&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;what kirby becomes if he swallows it&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;health&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;how much it starts with&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;here are two enemies, as they are stored:&lt;/p&gt;

&lt;figure class=&quot;pair&quot;&gt;
&lt;pre class=&quot;hex&quot; data-label=&quot;waddle dee&quot;&gt;
&lt;mark data-label=&quot;class&quot;&gt;00&lt;/mark&gt; &lt;mark data-label=&quot;gives nothing&quot;&gt;00&lt;/mark&gt; &lt;mark data-label=&quot;health, 16&quot;&gt;10 00&lt;/mark&gt;
&lt;/pre&gt;
&lt;pre class=&quot;hex&quot; data-label=&quot;waddle dee with a parasol&quot;&gt;
&lt;mark data-label=&quot;class&quot;&gt;00&lt;/mark&gt; &lt;mark data-label=&quot;gives ability 20&quot;&gt;14&lt;/mark&gt; &lt;mark data-label=&quot;health, 16&quot;&gt;10 00&lt;/mark&gt;
&lt;/pre&gt;
&lt;figcaption&gt;one byte apart. &lt;code&gt;14&lt;/code&gt; is twenty in hexadecimal, and ability twenty is parasol.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;that second byte is the whole of kirby's most famous trick. it is also the byte the mod writes on its stand-ins, which is how a dead cells zombie can taste of sword.&lt;/p&gt;

&lt;h2&gt;dice with 4,096 faces&lt;/h2&gt;

&lt;p&gt;everything left to chance in the game, 86 places in the program, goes through one routine of two lines:&lt;/p&gt;

&lt;pre data-label=&quot;the whole of chance&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;seed = (seed * 61 + 1401) &amp;amp; 0xFFF;  // twelve bits
return (seed * n) &amp;gt;&amp;gt; 12;            // 0 to n - 1&lt;/code&gt;&lt;/pre&gt;

&lt;figure&gt;
&lt;math display=&quot;block&quot;&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mn&gt;61&lt;/mn&gt;&lt;mo&gt;&amp;#8290;&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;1401&lt;/mn&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;mo&gt;mod&lt;/mo&gt;&lt;mn&gt;4096&lt;/mn&gt;&lt;/math&gt;
&lt;figcaption&gt;the same thing, as a formula.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;try it. with the seed at
&lt;data class=&quot;knob&quot; data-name=&quot;s&quot; data-min=&quot;0&quot; data-max=&quot;4095&quot; value=&quot;0&quot; aria-label=&quot;the seed before the throw&quot;&gt;0&lt;/data&gt;,
the next seed is &lt;output data-f=&quot;s*61+1401-4096*floor((s*61+1401)/4096)&quot;&gt;1,401&lt;/output&gt;,
and a die of six faces thrown with it shows &lt;output data-f=&quot;floor((s*61+1401-4096*floor((s*61+1401)/4096))*6/4096)+1&quot;&gt;3&lt;/output&gt;.&lt;/p&gt;

&lt;p&gt;the two numbers are well chosen: the seed walks through all 4,096 values before it comes back to the first. but 4,096 is very few. the whole future of the game's luck is a loop that short, and whoever knows where the seed stands knows every throw to come.&lt;/p&gt;

&lt;h2&gt;one sixtieth of a second&lt;/h2&gt;

&lt;p&gt;a &lt;abbr&gt;DS&lt;/abbr&gt; draws 59.83 frames a second. in each one its main processor has 560,190 ticks to spend, and when the work is done it sleeps until the next. standing still in green greens, kirby's game is mostly asleep.&lt;/p&gt;

&lt;figure&gt;
&lt;p class=&quot;of&quot;&gt;35 in 100 ticks of a quiet frame are spent working.&lt;/p&gt;
&lt;/figure&gt;

&lt;p&gt;and almost none of the working part is kirby.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;where the instructions of a quiet frame are run&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;share&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the core&lt;/th&gt;&lt;td&gt;73.7%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the level&lt;/th&gt;&lt;td&gt;17.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the player&lt;/th&gt;&lt;td&gt;3.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hits and collisions&lt;/th&gt;&lt;td&gt;2.4%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the lists of enemies&lt;/th&gt;&lt;td&gt;1.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;kirby's actions and abilities&lt;/th&gt;&lt;td&gt;0.3%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the largest piece of the program does a third of a percent of the work. the rest is housekeeping: one routine in the core, the one that makes the list of sprites to draw, is 6.7% alone.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;then the room fills. in the mod, each dead cells enemy near kirby is one more stand-in for the original to look after, and kirby may have a helper walking beside him. this is how full the frame gets:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines&quot; data-line=&quot;100%, a whole frame&quot; data-min=&quot;0&quot;&gt;
&lt;caption&gt;how much of a frame is used, kirby swinging a sword with a helper beside him&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;stand-ins&lt;/th&gt;&lt;th&gt;on average&lt;/th&gt;&lt;th&gt;the worst frame in twenty&lt;/th&gt;&lt;th&gt;the worst frame&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;0&lt;/th&gt;&lt;td&gt;40.3%&lt;/td&gt;&lt;td&gt;47.6%&lt;/td&gt;&lt;td&gt;57.1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;8&lt;/th&gt;&lt;td&gt;47.7%&lt;/td&gt;&lt;td&gt;61.3%&lt;/td&gt;&lt;td&gt;94.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;16&lt;/th&gt;&lt;td&gt;54.0%&lt;/td&gt;&lt;td&gt;67.2%&lt;/td&gt;&lt;td&gt;84.1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;24&lt;/th&gt;&lt;td&gt;60.6%&lt;/td&gt;&lt;td&gt;88.0%&lt;/td&gt;&lt;td&gt;100%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;31&lt;/th&gt;&lt;td&gt;63.8%&lt;/td&gt;&lt;td&gt;83.8%&lt;/td&gt;&lt;td&gt;100%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;six seconds of play at each size of crowd. from twenty-four on, the worst frames do not fit.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;when a frame does not fit, the original does what every console game of its time did: it lets the picture go by and finishes the work in the next one. on a &lt;abbr&gt;DS&lt;/abbr&gt; that is a moment of slow motion, a &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-lag-frame&quot;&gt;lag frame&lt;/a&gt;. in the mod it was worse. dead cells went on drawing while the hidden game was half way through its sums, and kirby was shown one tile away from where he stood: a flicker. the mod now waits for the original to finish, which is right, and is still a stutter.&lt;/p&gt;

&lt;p&gt;so, an experiment. the console in the mod is not real. its processor can be told it is twice as fast.&lt;/p&gt;

&lt;figure&gt;
&lt;table&gt;
&lt;caption&gt;frames that did not fit, in 360&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;stand-ins, with a helper&lt;/th&gt;&lt;th&gt;the real speed&lt;/th&gt;&lt;th&gt;twice the speed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;16&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;24&lt;/th&gt;&lt;td&gt;5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;not run&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;31&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;the part that makes it usable: with no crowd, and with a crowd of eight, kirby's path through six hundred frames is the same at both speeds, byte for byte. a faster processor changes nothing until the moment the slow one would have dropped a frame.&lt;/p&gt;

&lt;h2&gt;the emulator's bill&lt;/h2&gt;

&lt;p&gt;dead cells has &lt;span class=&quot;qty&quot;&gt;16.7 ms&lt;/span&gt; for each of its frames, and the hidden console is paid out of that. it can be run two ways. an &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-interpreter&quot;&gt;interpreter&lt;/a&gt; reads the game's instructions one at a time and acts each one out, every time it meets it. a &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-recompiler&quot;&gt;recompiler&lt;/a&gt; translates a stretch of them into the host machine's own language once, and runs the translation from then on. the mod used the first, and since 14 october it uses the second.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;milliseconds to run one frame of the hidden game&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;kirby alone&lt;/th&gt;&lt;th&gt;31 stand-ins and a helper&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;interpreter, as the mod ran it&lt;/th&gt;&lt;td&gt;2.41&lt;/td&gt;&lt;td&gt;3.71&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;recompiler&lt;/th&gt;&lt;td&gt;1.31&lt;/td&gt;&lt;td&gt;1.71&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;recompiler, unseen screen not drawn&lt;/th&gt;&lt;td&gt;0.93&lt;/td&gt;&lt;td&gt;1.24&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;one machine, one evening. kirby's six-hundred-frame path was the same under the interpreter and the recompiler, in all three scenes tried.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the last row is a small thing with a large effect. the mod draws kirby itself, from the sprites the original lists, so most of the time nobody looks at the picture the hidden console paints. not painting it saves more than a quarter of what is left.&lt;/p&gt;

&lt;h2&gt;forty-eight hit records&lt;/h2&gt;

&lt;p&gt;whatever can hit or be hit in kirby's game borrows a record for it: its four sets of &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-hit-box&quot;&gt;hit boxes&lt;/a&gt; and its health, 580 bytes. the records come from one pool, which the game fills with forty-eight at the start of every stage. for the rooms of the original, it was enough.&lt;/p&gt;

&lt;p&gt;a stand-in holds one record, for its body, and every hit borrows one more for about seven frames, while the enemy flinches. thirty-one stand-ins, one swing of the sword that hits twenty-four of them, and the pool is empty. the twenty-fourth flinch was handed a record that is not there, address zero, and the game wrote the enemy's health into it all the same.&lt;/p&gt;

&lt;p&gt;what came next depended on how the console was run. the game itself tells the processor never to write there, and the &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-interpreter&quot;&gt;interpreter&lt;/a&gt;, which keeps that rule as the console does, stopped the processor for good: the hidden game froze in the middle of the fight, and dead cells went on around a kirby who could no longer move. the &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/term-recompiler&quot;&gt;recompiler&lt;/a&gt; does not check the rule. it let the write land in the processor's own fast memory, and six bytes of a routine kept there were quietly overwritten. it was never seen running in play, which is luck, not design.&lt;/p&gt;

&lt;p&gt;the mod's answer changes not one instruction of the original. it lets the game build its forty-eight at the start of a stage, then makes sixty-four more, two for every stand-in, out of memory the room does not use, and puts them at the end of the pool. the game hands them out as its own.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;the fewest records left free, in one attack on 31 stand-ins piled up&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;records&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the game's 48, one sword swing&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;112, the same swing&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;112, crash&lt;/th&gt;&lt;td&gt;80&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;112, the worst of 96 attacks&lt;/th&gt;&lt;td&gt;44&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the first ran out, one record short. the 96 attacks are every ability, with the button tapped, held, and with up and with down, four seconds each.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;
&lt;img src=&quot;crowd.webp&quot; alt=&quot;kirby in a green cap, holding up a sword, beside three piles of glowing green zombies with red health bars over them and blood on the wall behind&quot; width=&quot;432&quot; height=&quot;216&quot;&gt;
&lt;figcaption&gt;the test that found it, run again with the fix, on the interpreter: thirty-one zombies in three piles, and the first swing hits thirty. frames that ended with the hidden game's work unfinished: 7, against 3,264 before the fix, when every frame after that swing was one.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;what it changes in the mod&lt;/h2&gt;

&lt;p&gt;the first three went into the mod on 14 october, on by default: the translation, the faster processor and the unpainted screen. in the game itself, one run each, the hidden game's frame went from &lt;span class=&quot;qty&quot;&gt;2.8 ms&lt;/span&gt; to &lt;span class=&quot;qty&quot;&gt;1.5 ms&lt;/span&gt; with kirby walking alone, and from &lt;span class=&quot;qty&quot;&gt;3.6 ms&lt;/span&gt; to &lt;span class=&quot;qty&quot;&gt;1.8 ms&lt;/span&gt; among twenty zombies. three more were built and tested the same day, and went in that evening. one idea was set aside.&lt;/p&gt;

&lt;figure&gt;
&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th class=&quot;words&quot;&gt;idea&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;where it stands&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it showed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;translate, do not interpret&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;about half the cost of every frame, and the same kirby&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a processor twice as fast&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;no frame of the original left unfinished, even in a crowd of 31&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;do not paint what nobody sees&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;0.4 ms a frame&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;read the move, not only the action&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod, for the mouth&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the mod asks the game whether kirby's mouth is full, instead of guessing from his pose&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a bigger pool of hit records&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;a crowd no longer freezes the hidden game, or writes over its program&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;less bookkeeping&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;in the mod&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the mod's own work of pairing zombies with stand-ins, among 31 of them: from 0.51 ms a frame to 0.35&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;real enemies in the empty chairs&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;set aside&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;a sir kibble can sit beside the waddle dees. a blade knight never can&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;the last one was set aside because nobody would see it. the stand-ins are never drawn: where one stands, dead cells draws its own enemy, so a real blade knight would be as invisible as the waddle dee it replaced. the ability already comes from the stand-in's byte. every dead cells enemy tastes of a random one, up to thirty-one at a time, which five chairs could never seat. and a real enemy would bring everything the stand-in was set up not to have, its own attacks, its own touch that hurts and its own way of dying, each to be tamed one by one.&lt;/p&gt;

&lt;h2&gt;how it was read&lt;/h2&gt;

&lt;ol class=&quot;steps&quot;&gt;
&lt;li&gt;unpack the cartridge &lt;small&gt;its first bytes say where the program, its 157 overlays and its 1,886 files are.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;take the program apart &lt;small&gt;every piece that is in memory during play, turned back from numbers into instructions: 5,996 functions, with a note of who calls whom and who reads what.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;doctor the emulator &lt;small&gt;a private copy that counts every instruction it runs, stops at any address, and says who touched a given byte.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;guess from the reading, then make the game prove it &lt;small&gt;press a button, and watch for the number that changes.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;write down only what was seen&lt;/li&gt;
&lt;/ol&gt;

&lt;aside&gt;
&lt;strong&gt;counting from one&lt;/strong&gt;
&lt;p&gt;the rule earned its keep once. the list of enemies names each one by a number that points into a list of files. read as counting from zero, it said that the enemy the mod has used for weeks as a waddle dee was a wheelie, and every other name was one off as well. the routine that reads the number counts from one.&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;the disassembly, the doctored emulator and the cartridge stay private. what is here is what they said.&lt;sup&gt;&lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;changes&lt;/h2&gt;

&lt;ul class=&quot;changes&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-14&quot;&gt;14 october 2026&lt;/time&gt; two new parts, &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/a-full-mouth&quot;&gt;a full mouth&lt;/a&gt; and &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/forty-eight-hit-records&quot;&gt;forty-eight hit records&lt;/a&gt;, with the first frames of the mod at play. &lt;a href=&quot;../../#/gaming/inside-kirby-super-star-ultra/what-it-changes-in-the-mod&quot;&gt;what it changes in the mod&lt;/a&gt; now says where each idea stands, and has two more. the line under the opening no longer says that no picture is taken from the game, and the notes say where the frames come from.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;words&lt;/h2&gt;

&lt;dl class=&quot;glossary&quot;&gt;
&lt;dt id=&quot;term-frame&quot;&gt;&lt;dfn&gt;frame&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;one picture on the screen, and all the work the game does to get to the next: about a sixtieth of a second.&lt;/dd&gt;
&lt;dt id=&quot;term-hit-box&quot;&gt;&lt;dfn&gt;hit box&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;the rectangle a game tests instead of the drawing. a sword hits when its box overlaps an enemy's, whatever the pixels show.&lt;/dd&gt;
&lt;dt id=&quot;term-interpreter&quot;&gt;&lt;dfn&gt;interpreter&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;an emulator that reads the guest's instructions one by one and acts each out. simple, exact, and slow.&lt;/dd&gt;
&lt;dt id=&quot;term-lag-frame&quot;&gt;&lt;dfn&gt;lag frame&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;a frame in which the game did not finish its work in time, so the screen showed the old picture again.&lt;/dd&gt;
&lt;dt id=&quot;term-overlay&quot;&gt;&lt;dfn&gt;overlay&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;a piece of a program kept on the cartridge and loaded into memory only while it is needed. several can be built for the same place, as long as they are never needed together.&lt;/dd&gt;
&lt;dt id=&quot;term-recompiler&quot;&gt;&lt;dfn&gt;recompiler&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;an emulator that translates the guest's instructions into the host's own, once, and then runs the translation.&lt;/dd&gt;
&lt;dt id=&quot;term-stand-in&quot;&gt;&lt;dfn&gt;stand-in&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;an enemy of the original game, placed where a dead cells enemy is, so that kirby's own code can find something to hit.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;notes&lt;/h2&gt;

&lt;ol class=&quot;notes&quot;&gt;
&lt;li id=&quot;note-1&quot;&gt;nothing here was judged by playing. the hidden game was run with no window, from a saved moment in the first level, and its memory read after each frame. the frames of the mod come from its own test runs, which press the keys by script, with no window either.&lt;/li&gt;
&lt;li id=&quot;note-2&quot;&gt;health, the ability given and the cost of a touch are the numbers stored in each enemy's program. only waddle dee's were watched being put to use.&lt;/li&gt;
&lt;li id=&quot;note-3&quot;&gt;with nobody to hit, a throw has nothing to throw and a charge is let go early, so suplex and plasma show less than they can do.&lt;/li&gt;
&lt;li id=&quot;note-4&quot;&gt;the strip of the slash was drawn by a script, from boxes the game reported. the five frames of the mod at play come from its test runs: dead cells drew them, the room and the zombies from its own files, and kirby from the sprites the hidden game listed.&lt;/li&gt;
&lt;/ol&gt;</content>
  </entry>
  <entry>
    <title>everything this blog can do</title>
    <id>urn:uuid:91022b3e-62c3-5f10-ac6b-f64f30db137d</id>
    <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/typography/everything-this-blog-can-do/"/>
    <published>2026-10-12T12:00:00Z</published>
    <updated>2026-10-12T12:00:00Z</updated>
    <summary>every piece an article can use, shown and explained.</summary>
    <category term="typography"/>
    <category term="blog"/>
    <category term="writing"/>
    <content type="html" xml:base="https://nahuelgenchi.com/typography/everything-this-blog-can-do/">&lt;p&gt;this page uses everything an article on this blog can use, and says how each thing is written. it is also the page to open after changing the blog, to see that nothing broke.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;every number on this page was measured from the blog's own files on 12 october 2026&lt;/p&gt;

&lt;ul class=&quot;files&quot;&gt;
&lt;li&gt;&lt;a href=&quot;weights.csv&quot; download&gt;the weights behind the charts &lt;small&gt;csv · 2.6 kb&lt;/small&gt;&lt;/a&gt;
&lt;p&gt;version 3 · &lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt; · sha-256 &lt;code&gt;b81bd1e351d62c17ef450002453a981bd2b98bdf9a87f5961cd10e6f5b20ffb3&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;how a page reaches you&lt;/h2&gt;

&lt;p&gt;the blog is one html page, the &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/term-frame&quot;&gt;frame&lt;/a&gt;. it holds the sidebar, the type and the list of articles. an article is a plain fragment of html in a folder of its own, and the frame fetches it when its address is asked for. whatever an article needs beyond prose and tables, a chart, a block of code, a note in the margin, is a &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/term-piece&quot;&gt;piece&lt;/a&gt;: a small script, a stylesheet or both, fetched only by the articles that use it.&lt;/p&gt;

&lt;figure&gt;
&lt;svg viewBox=&quot;0 0 372 146&quot; width=&quot;372&quot; height=&quot;146&quot; role=&quot;img&quot; aria-label=&quot;four rows, each starting where the one above ends: the frame, the article, its pieces, its images&quot;&gt;
&lt;g font-size=&quot;15&quot; fill=&quot;var(--ink)&quot;&gt;
&lt;text x=&quot;0&quot; y=&quot;23&quot;&gt;the frame&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;59&quot;&gt;the article&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;95&quot;&gt;its pieces&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;131&quot;&gt;its images&lt;/text&gt;
&lt;/g&gt;
&lt;g fill=&quot;var(--c1)&quot;&gt;
&lt;rect x=&quot;92&quot; y=&quot;11&quot; width=&quot;80&quot; height=&quot;14&quot; rx=&quot;3&quot;/&gt;
&lt;rect x=&quot;174&quot; y=&quot;47&quot; width=&quot;36&quot; height=&quot;14&quot; rx=&quot;3&quot;/&gt;
&lt;rect x=&quot;212&quot; y=&quot;83&quot; width=&quot;28&quot; height=&quot;14&quot; rx=&quot;3&quot;/&gt;
&lt;rect x=&quot;242&quot; y=&quot;119&quot; width=&quot;20&quot; height=&quot;14&quot; rx=&quot;3&quot;/&gt;
&lt;/g&gt;
&lt;g font-size=&quot;13.5&quot; fill=&quot;var(--ink-3)&quot;&gt;
&lt;text x=&quot;179&quot; y=&quot;23&quot;&gt;three files, once&lt;/text&gt;
&lt;text x=&quot;217&quot; y=&quot;59&quot;&gt;when it is opened&lt;/text&gt;
&lt;text x=&quot;247&quot; y=&quot;95&quot;&gt;only what it uses&lt;/text&gt;
&lt;text x=&quot;269&quot; y=&quot;131&quot;&gt;when in view&lt;/text&gt;
&lt;/g&gt;
&lt;g stroke=&quot;var(--rule)&quot;&gt;
&lt;line x1=&quot;92&quot; y1=&quot;36&quot; x2=&quot;372&quot; y2=&quot;36&quot;/&gt;
&lt;line x1=&quot;92&quot; y1=&quot;72&quot; x2=&quot;372&quot; y2=&quot;72&quot;/&gt;
&lt;line x1=&quot;92&quot; y1=&quot;108&quot; x2=&quot;372&quot; y2=&quot;108&quot;/&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;figcaption&gt;what is fetched, and when. this drawing is an &lt;code&gt;&amp;lt;svg&amp;gt;&lt;/code&gt; written into the article, in the same inks as the charts.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;nothing comes from another site: no fonts, no scripts, no counters.&lt;sup&gt;&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-fonts&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; four words come up again and again below:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;the frame &lt;small&gt;index.html, site.css, site.js&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;what every page pays for: 11.5 kb gzipped, of the 12 it is allowed.&lt;/dd&gt;
&lt;dt&gt;an article &lt;small&gt;its own index.html&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;a fragment: its text, under one line that forwards anyone who opens the folder itself and a few that say what it is to a &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/around-the-article&quot;&gt;link preview&lt;/a&gt;. 40 kb at most, except for this one: it has to show every piece there is, and the checker names it and allows it 52.&lt;/dd&gt;
&lt;dt&gt;a piece &lt;small&gt;assets/chart.js, assets/chart.css and the like&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;fetched when an article needs it. the article says which in a line at its own top, written there by a script that reads its text. each has a budget of its own.&lt;/dd&gt;
&lt;dt&gt;the library &lt;small&gt;at the foot of index.html&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the list of articles: a title, a line, a date and a few tags for each.&lt;/dd&gt;
&lt;/dl&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;what the heaviest pieces weigh, gzipped&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;piece&lt;/th&gt;&lt;th&gt;weight&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart&lt;/th&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump&lt;/th&gt;&lt;td&gt;4.7 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code&lt;/th&gt;&lt;td&gt;4.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars&lt;/th&gt;&lt;td&gt;2.9 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes&lt;/th&gt;&lt;td&gt;2.9 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph&lt;/th&gt;&lt;td&gt;2.8 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing&lt;/th&gt;&lt;td&gt;2.7 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob&lt;/th&gt;&lt;td&gt;2.7 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the eight heaviest of sixty-eight. this page asks for every one of the sixty-eight, and an article with no chart never fetches the first.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;addresses are written after a &lt;code&gt;#&lt;/code&gt;, so the blog runs from any static host, in any folder, with nothing to configure: &lt;code&gt;#/typography&lt;/code&gt; is a section, &lt;code&gt;#/typography/everything-this-blog-can-do&lt;/code&gt; is this page, and &lt;code&gt;#/tag/blog&lt;/code&gt; is everything filed under a tag. every heading like the one above has an address of its own, and a line in the sidebar. the folders work too: &lt;code&gt;/typography/everything-this-blog-can-do/&lt;/code&gt; forwards to the right place.&lt;/p&gt;

&lt;aside class=&quot;warn&quot;&gt;
&lt;p&gt;&lt;strong&gt;served, not opened.&lt;/strong&gt; opened as a file from disk, the blog shows nothing, because browsers do not let a page fetch its neighbours that way. serve the folder: &lt;code&gt;python3 -m http.server 4173&lt;/code&gt;.&lt;/p&gt;
&lt;/aside&gt;

&lt;h2&gt;the frame around an article&lt;/h2&gt;

&lt;p&gt;before any piece, this is what the frame does for every article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a sidebar on the left lists the sections, each with a count of its articles, and a dot beside the one you are in. on a phone it folds into a menu.&lt;/li&gt;
&lt;li&gt;under it, the headings of the article. the one being read is marked, and it follows as you scroll.&lt;/li&gt;
&lt;li&gt;a thin line across the top of the page fills as the article is read.&lt;/li&gt;
&lt;li&gt;above the title: the section, the date, and how long the article takes to read.&lt;/li&gt;
&lt;li&gt;at the foot: the article before and after, the section, the tags, and the other parts when it belongs to a series.&lt;/li&gt;
&lt;li&gt;a link to a heading lands on it softly. a link to something smaller, a note or a reference, also tints it for a moment, so the eye finds it.&lt;/li&gt;
&lt;li&gt;light mode only. readers who ask their system for less motion keep the fades and lose the movement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;two more things belong to the frame without being part of it. the frame only knows how to fetch them, and does so when a reader first asks. the search is one: the entry under the sections, or &lt;kbd&gt;/&lt;/kbd&gt;. it answers at once from titles, decks and tags, then reads the &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/term-feed&quot;&gt;feed&lt;/a&gt;, which holds every article whole, and searches the text as well. under each article it found are the parts that say what was asked for, and each is a link to that heading. try it with &lt;q&gt;glider&lt;/q&gt;: it finds this sentence, and the clip under images. nothing typed there is sent anywhere.&lt;/p&gt;

&lt;p&gt;the other is a handful of keys, for reading without the mouse:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class=&quot;l&quot;&gt;key&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it does&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;l&quot;&gt;&lt;kbd&gt;/&lt;/kbd&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;opens the search. &lt;kbd&gt;?&lt;/kbd&gt; does too, and the keys are listed at its foot&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;l&quot;&gt;&lt;kbd&gt;j&lt;/kbd&gt; &lt;kbd&gt;k&lt;/kbd&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;down and up one part of an article. in a list of articles, down and up one article&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;l&quot;&gt;&lt;kbd&gt;n&lt;/kbd&gt; &lt;kbd&gt;o&lt;/kbd&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the newer article and the older one&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;l&quot;&gt;&lt;kbd&gt;u&lt;/kbd&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;up, from an article to its section and from a section to the front&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;single keys can get in the way of software that types for its reader, so the foot of the search has a switch that turns them off, remembered on that device. the two together weigh 5.3 kb, and a reader who never presses a key or opens the search never fetches a byte of them.&lt;/p&gt;

&lt;h2&gt;words&lt;/h2&gt;

&lt;p&gt;everything visible is lowercase. a capital survives only where it carries meaning, and the markup has to say so:&lt;/p&gt;

&lt;p&gt;the bacterium &lt;i lang=&quot;la&quot;&gt;Escherichia coli&lt;/i&gt; carries the gene &lt;var&gt;lacZ&lt;/var&gt; in its &lt;abbr title=&quot;deoxyribonucleic acid&quot;&gt;DNA&lt;/abbr&gt; and grows best near &lt;span data-case&gt;pH&lt;/span&gt; 7. to check an article, type &lt;code&gt;node scripts/check.mjs&lt;/code&gt;. to close a picture, press &lt;kbd&gt;esc&lt;/kbd&gt;. and &lt;mark&gt;a phrase can be picked out&lt;/mark&gt; like this one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;it reads like an article, never like a dashboard&lt;/p&gt;
&lt;p class=&quot;meta&quot;&gt;— the first rule in &lt;cite&gt;the readme&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;pre data-label=&quot;the paragraph and the quotation above&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;p&amp;gt;the bacterium &amp;lt;i lang=&quot;la&quot;&amp;gt;Escherichia coli&amp;lt;/i&amp;gt; carries the gene &amp;lt;var&amp;gt;lacZ&amp;lt;/var&amp;gt;
in its &amp;lt;abbr title=&quot;deoxyribonucleic acid&quot;&amp;gt;DNA&amp;lt;/abbr&amp;gt; and grows best near
&amp;lt;span data-case&amp;gt;pH&amp;lt;/span&amp;gt; 7. … press &amp;lt;kbd&amp;gt;esc&amp;lt;/kbd&amp;gt;. and &amp;lt;mark&amp;gt;a phrase can be
picked out&amp;lt;/mark&amp;gt; like this one.&amp;lt;/p&amp;gt;

&amp;lt;blockquote&amp;gt;
  &amp;lt;p&amp;gt;it reads like an article, never like a dashboard&amp;lt;/p&amp;gt;
  &amp;lt;p class=&quot;meta&quot;&amp;gt;— the first rule in &amp;lt;cite&amp;gt;the readme&amp;lt;/cite&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;seven things keep their capitals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;kbd&amp;gt;&lt;/code&gt;: code, and keys.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;cite&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt;: a citation, and someone else's words.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt;: an abbreviation, set a little smaller so its capitals do not shout.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lang&lt;/code&gt; on anything: a scientific name, or a phrase in another language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;var&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;math&amp;gt;&lt;/code&gt;: a symbol, and a formula.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data-case&lt;/code&gt; on anything: a unit, a product, a name that insists.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;class=&quot;qty&quot;&lt;/code&gt;: a quantity, whose unit may need them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;a quantity is a number and a unit that belong together. marked up as one, it is never broken across two lines, and the space typed between its parts is set as a thin one:&lt;/p&gt;

&lt;p&gt;light crosses &lt;span class=&quot;qty&quot;&gt;299 792 458 m/s&lt;/span&gt;, a mole holds &lt;span class=&quot;qty&quot;&gt;6.022 × 10&lt;sup&gt;23&lt;/sup&gt;&lt;/span&gt; things, the earth leans &lt;span class=&quot;qty&quot;&gt;23° 26′&lt;/span&gt; from upright, and nothing gets colder than &lt;span class=&quot;qty&quot;&gt;−273.15 °C&lt;/span&gt;, which is &lt;span class=&quot;qty&quot;&gt;0 K&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;a quantity can also be written the way a program prints it, and is then set the way a paper does. an electron carries &lt;span class=&quot;qty&quot;&gt;1.602176634e-19 C&lt;/span&gt;, betelgeuse stands at &lt;span class=&quot;qty&quot;&gt;5h 55m 10.3s&lt;/span&gt;, and the universe is growing by &lt;span class=&quot;qty&quot;&gt;67.4 +- 0.5 km/s&lt;/span&gt; for every megaparsec (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/planck-2020&quot;&gt;planck 2020&lt;/a&gt;). in the page's own source those are &lt;code&gt;1.602176634e-19 C&lt;/code&gt;, &lt;code&gt;5h 55m 10.3s&lt;/code&gt; and &lt;code&gt;67.4 +- 0.5 km/s&lt;/code&gt;, and that is how the feed still gives them.&lt;/p&gt;

&lt;p&gt;chemistry is typed the same plain way, in a &lt;code&gt;&amp;lt;span class=&quot;chem&quot;&amp;gt;&lt;/code&gt;, where it also keeps its capitals. a number after a letter goes below the line and one in front stays, a caret raises a charge or a mass number, and &lt;code&gt;-&amp;gt;&lt;/code&gt; is an arrow. a leaf makes sugar by &lt;span class=&quot;chem&quot;&gt;6CO2 + 6H2O -&gt; C6H12O6 + 6O2&lt;/span&gt;, a sulfate ion is &lt;span class=&quot;chem&quot;&gt;SO4^2-&lt;/span&gt;, and the carbon that dates a bone is &lt;span class=&quot;chem&quot;&gt;^14C&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;the checker holds a quantity to the signs made for it: a minus and not a hyphen, a multiplication sign and not the letter beside it, primes and not straight quotes, a raised power and not a caret.&lt;/p&gt;

&lt;p&gt;a key is a &lt;code&gt;&amp;lt;kbd&amp;gt;&lt;/code&gt;, and so is the button of a controller, with &lt;code&gt;class=&quot;pad&quot;&lt;/code&gt;: round when it holds one sign, a pill when it holds more, and ringed in one of the four inks when the button has a colour of its own. the best known cheat in games is &lt;kbd class=&quot;pad&quot;&gt;↑&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;↑&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;↓&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;↓&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;←&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;→&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;←&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot;&gt;→&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot; data-ink=&quot;2&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;pad&quot; data-ink=&quot;2&quot;&gt;A&lt;/kbd&gt;, and then &lt;kbd class=&quot;pad&quot;&gt;start&lt;/kbd&gt;. buttons held together go inside one more &lt;code&gt;&amp;lt;kbd&amp;gt;&lt;/code&gt;, which keeps them on a line: &lt;kbd&gt;&lt;kbd class=&quot;pad&quot;&gt;A&lt;/kbd&gt; + &lt;kbd class=&quot;pad&quot;&gt;B&lt;/kbd&gt; + &lt;kbd class=&quot;pad&quot;&gt;select&lt;/kbd&gt; + &lt;kbd class=&quot;pad&quot;&gt;start&lt;/kbd&gt;&lt;/kbd&gt; sends most game boy games back to their title screen.&lt;/p&gt;

&lt;p&gt;and what a reader may not want to know yet can wait under a cover, until it is clicked or opened from the keyboard with &lt;kbd&gt;enter&lt;/kbd&gt;. the first seven castles of &lt;cite&gt;Super Mario Bros.&lt;/cite&gt; all end on the same news: &lt;span class=&quot;spoiler&quot;&gt;the princess is in another castle&lt;/span&gt;.&lt;/p&gt;

&lt;pre data-label=&quot;a quantity, a formula, a button and a spoiler&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;span class=&quot;qty&quot;&amp;gt;6.022 × 10&amp;lt;sup&amp;gt;23&amp;lt;/sup&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;span class=&quot;qty&quot;&amp;gt;−273.15 °C&amp;lt;/span&amp;gt;
&amp;lt;span class=&quot;qty&quot;&amp;gt;67.4 +- 0.5 km/s&amp;lt;/span&amp;gt;
&amp;lt;span class=&quot;chem&quot;&amp;gt;6CO2 + 6H2O -&amp;amp;gt; C6H12O6 + 6O2&amp;lt;/span&amp;gt;

&amp;lt;kbd class=&quot;pad&quot;&amp;gt;↑&amp;lt;/kbd&amp;gt; &amp;lt;kbd class=&quot;pad&quot; data-ink=&quot;2&quot;&amp;gt;B&amp;lt;/kbd&amp;gt; &amp;lt;kbd class=&quot;pad&quot;&amp;gt;start&amp;lt;/kbd&amp;gt;
&amp;lt;kbd&amp;gt;&amp;lt;kbd class=&quot;pad&quot;&amp;gt;A&amp;lt;/kbd&amp;gt; + &amp;lt;kbd class=&quot;pad&quot;&amp;gt;B&amp;lt;/kbd&amp;gt;&amp;lt;/kbd&amp;gt;

&amp;lt;span class=&quot;spoiler&quot;&amp;gt;the princess is in another castle&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the cover is put on by the same script that takes it off. a reader whose browser runs no scripts, or reads the article in a feed, gets the sentence plain.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;this is a line of small print, a paragraph with class=&quot;meta&quot;. the line under it is an &amp;lt;hr&amp;gt;.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;words in another language ask for more. a sentence taken apart word by word is a &lt;code&gt;&amp;lt;dl class=&quot;gloss&quot;&amp;gt;&lt;/code&gt;: each word in a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with what it means under it, and the pairs wrap the way words do. the labels of grammar go in &lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt;, and are set in small capitals.&lt;/p&gt;

&lt;figure&gt;
&lt;dl class=&quot;gloss&quot;&gt;
&lt;div&gt;&lt;dt lang=&quot;es&quot;&gt;vos&lt;/dt&gt;&lt;dd&gt;&lt;abbr&gt;2SG&lt;/abbr&gt;&lt;/dd&gt;&lt;/div&gt;
&lt;div&gt;&lt;dt lang=&quot;es&quot;&gt;sabés&lt;/dt&gt;&lt;dd&gt;know.&lt;abbr&gt;2SG&lt;/abbr&gt;&lt;/dd&gt;&lt;/div&gt;
&lt;div&gt;&lt;dt lang=&quot;es&quot;&gt;que&lt;/dt&gt;&lt;dd&gt;that&lt;/dd&gt;&lt;/div&gt;
&lt;div&gt;&lt;dt lang=&quot;es&quot;&gt;no&lt;/dt&gt;&lt;dd&gt;not&lt;/dd&gt;&lt;/div&gt;
&lt;div&gt;&lt;dt lang=&quot;es&quot;&gt;vino&lt;/dt&gt;&lt;dd&gt;come.&lt;abbr&gt;PST.3SG&lt;/abbr&gt;&lt;/dd&gt;&lt;/div&gt;
&lt;/dl&gt;
&lt;figcaption&gt;“you know he did not come”, as it is said in buenos aires: &lt;i lang=&quot;es&quot;&gt;vos sabés&lt;/i&gt;, where madrid says &lt;i lang=&quot;es&quot;&gt;tú sabes&lt;/i&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a reading set over a word is a &lt;code&gt;&amp;lt;ruby&amp;gt;&lt;/code&gt;, which browsers have long known how to set: &lt;ruby lang=&quot;ja&quot;&gt;日本語&lt;rt&gt;にほんご&lt;/rt&gt;&lt;/ruby&gt; is the japanese word for the japanese language, with the way it is said written over it in the script that spells sounds.&lt;/p&gt;

&lt;pre data-label=&quot;a gloss, and a reading&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;dl class=&quot;gloss&quot;&amp;gt;
  &amp;lt;div&amp;gt;&amp;lt;dt lang=&quot;es&quot;&amp;gt;sabés&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;know.&amp;lt;abbr&amp;gt;2SG&amp;lt;/abbr&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;&amp;lt;dt lang=&quot;es&quot;&amp;gt;que&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;that&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/dl&amp;gt;

&amp;lt;ruby lang=&quot;ja&quot;&amp;gt;日本語&amp;lt;rt&amp;gt;にほんご&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;an original and its translation are a &lt;code&gt;&amp;lt;figure class=&quot;facing&quot;&amp;gt;&lt;/code&gt;. the paragraphs are written in turn, one of each, and set in two columns, so every pair starts level however long either half runs. on a narrow page each translation goes under its original.&lt;/p&gt;

&lt;figure class=&quot;facing&quot;&gt;
&lt;p lang=&quot;la&quot;&gt;Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.&lt;/p&gt;
&lt;p&gt;all gaul is divided into three parts. the belgae live in one, the aquitani in another, and in the third those who are called celts in their own tongue, and gauls in ours.&lt;/p&gt;
&lt;p lang=&quot;la&quot;&gt;Hi omnes lingua, institutis, legibus inter se differunt.&lt;/p&gt;
&lt;p&gt;all of them differ from one another in language, in customs and in laws.&lt;/p&gt;
&lt;p lang=&quot;la&quot;&gt;Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit.&lt;/p&gt;
&lt;p&gt;the river garonne parts the gauls from the aquitani, and the marne and the seine part them from the belgae.&lt;/p&gt;
&lt;figcaption&gt;how caesar's account of his war in gaul begins (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/caesar&quot;&gt;caesar&lt;/a&gt;), with a translation made for this page.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and a source set down as it was written is a &lt;code&gt;&amp;lt;blockquote class=&quot;source&quot;&amp;gt;&lt;/code&gt; around a list of its lines. the lines are numbered the way an edition numbers them, the first and every fifth. a quotation keeps its capitals, so these do. what an editor has supplied goes in an &lt;code&gt;&amp;lt;ins&amp;gt;&lt;/code&gt; and is set in brackets, and an empty one is a gap nobody could fill.&lt;/p&gt;

&lt;figure&gt;
&lt;blockquote class=&quot;source&quot; lang=&quot;la&quot;&gt;
&lt;ol&gt;
&lt;li&gt;SENATVS · POPVLVS · QVE · ROMANVS&lt;/li&gt;
&lt;li&gt;IMP · CAESARI · DIVI · NERVAE · F · NERVAE&lt;/li&gt;
&lt;li&gt;TRAIANO · AVG · GERM · DACICO · PONTIF&lt;/li&gt;
&lt;li&gt;MAXIMO · TRIB · POT · XVII · IMP · VI · COS · VI · P · P&lt;/li&gt;
&lt;li&gt;AD · DECLARANDVM · QVANTAE · ALTITVDINIS&lt;/li&gt;
&lt;li&gt;MONS · ET · LOCVS · TANT&lt;ins&gt;IS · OPER&lt;/ins&gt;IBVS · SIT · EGESTVS&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;figcaption&gt;the six lines cut into the base of trajan's column in rome (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/wp-trajan&quot;&gt;as transcribed&lt;/a&gt;). a small piece at the bottom of the stone has been lost, and the letters in brackets are what was put back. these are the capitals that roman type has been drawn from ever since.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;facing text, and a source&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure class=&quot;facing&quot;&amp;gt;
  &amp;lt;p lang=&quot;la&quot;&amp;gt;Gallia est omnis divisa in partes tres, …&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;all gaul is divided into three parts. …&amp;lt;/p&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;blockquote class=&quot;source&quot; lang=&quot;la&quot;&amp;gt;
  &amp;lt;ol&amp;gt;
    &amp;lt;li&amp;gt;AD · DECLARANDVM · QVANTAE · ALTITVDINIS&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;MONS · ET · LOCVS · TANT&amp;lt;ins&amp;gt;IS · OPER&amp;lt;/ins&amp;gt;IBVS · SIT · EGESTVS&amp;lt;/li&amp;gt;
  &amp;lt;/ol&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;some things have to be heard. a link to a sound file with &lt;code&gt;class=&quot;say&quot;&lt;/code&gt; gets a mark to press: the sound plays in the page, and stops when it is pressed again. nothing is fetched before that, and nothing ever plays by itself. this is &lt;a class=&quot;say&quot; href=&quot;a440.wav&quot;&gt;one note, twice&lt;/a&gt;: the a that orchestras tune to, 440 vibrations a second, first as a square wave and then as a sine. the pitch is the same and the sound is not.&lt;/p&gt;

&lt;pre data-label=&quot;a sound&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;a class=&quot;say&quot; href=&quot;a440.wav&quot;&amp;gt;one note, twice&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and each word can carry a number. in a &lt;code&gt;&amp;lt;p class=&quot;tokens&quot;&amp;gt;&lt;/code&gt;, every word written as a &lt;code&gt;&amp;lt;data value=&quot;…&quot;&amp;gt;&lt;/code&gt; is tinted by how large its number is, the way a cell is in a &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tables&quot;&gt;table with &lt;code&gt;class=&quot;heat&quot;&lt;/code&gt;&lt;/a&gt;. the scale is written under the text with what the numbers count, and pointing at a word gives its own. writing about language models, it is the usual way to show how much weight each word was given. here it is one of this blog's rules, each word tinted by how many times this article had used it when the sentence was added, on &lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt;, among 15,046 words:&lt;/p&gt;

&lt;p class=&quot;tokens&quot; data-log data-unit=&quot;times in this article&quot;&gt;&lt;data value=&quot;303&quot;&gt;it&lt;/data&gt; &lt;data value=&quot;16&quot;&gt;reads&lt;/data&gt; &lt;data value=&quot;17&quot;&gt;like&lt;/data&gt; &lt;data value=&quot;83&quot;&gt;an&lt;/data&gt; &lt;data value=&quot;72&quot;&gt;article&lt;/data&gt;, &lt;data value=&quot;13&quot;&gt;never&lt;/data&gt; &lt;data value=&quot;17&quot;&gt;like&lt;/data&gt; &lt;data value=&quot;698&quot;&gt;a&lt;/data&gt; &lt;data value=&quot;2&quot;&gt;dashboard&lt;/data&gt;&lt;/p&gt;

&lt;p&gt;the numbers run from 2 to 698, so the scale is in powers of ten, which is what &lt;code&gt;data-log&lt;/code&gt; asks for. &lt;code&gt;data-min&lt;/code&gt; and &lt;code&gt;data-max&lt;/code&gt; pin its ends, for two paragraphs that should be read against each other, and numbers on both sides of zero take an ink for each side.&lt;/p&gt;

&lt;pre data-label=&quot;words tinted by a number&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;p class=&quot;tokens&quot; data-log data-unit=&quot;times in this article&quot;&amp;gt;
  &amp;lt;data value=&quot;303&quot;&amp;gt;it&amp;lt;/data&amp;gt; &amp;lt;data value=&quot;16&quot;&amp;gt;reads&amp;lt;/data&amp;gt; &amp;lt;data value=&quot;17&quot;&amp;gt;like&amp;lt;/data&amp;gt; …
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;lists&lt;/h2&gt;

&lt;p&gt;a list is bullets, numbers, or terms with their definitions, and this page uses all three. seven more kinds are drawn with more than a marker.&lt;/p&gt;

&lt;p&gt;a list inside a list, with &lt;code&gt;class=&quot;tree&quot;&lt;/code&gt;, is drawn with its branches. this is the folder the blog is served from:&lt;/p&gt;

&lt;ul class=&quot;tree&quot;&gt;
&lt;li&gt;&lt;code&gt;blog/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt; &lt;small&gt;the frame, with the library at its foot&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feed.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;site.css&lt;/code&gt;, &lt;code&gt;site.js&lt;/code&gt; &lt;small&gt;the rest of the frame&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fonts/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree.css&lt;/code&gt; &lt;small&gt;and a file or two like it for every other piece&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;check.mjs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feed.mjs&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;software/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;everything-this-blog-can-do/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt; &lt;small&gt;this article&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weights.csv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stylesheet.png&lt;/code&gt; &lt;small&gt;and two more pictures&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude-haiku-5-5/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;opencode-go-model-league/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;biology/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;a tree can also show a change. a name inside &lt;code&gt;&amp;lt;ins&amp;gt;&lt;/code&gt; is new, a name inside &lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt; is gone, and a &lt;code&gt;&amp;lt;data&amp;gt;&lt;/code&gt; is a size, set at the far end of its line so that the sizes make a column. this is what the pull request that added this paragraph did, in bytes as they are stored. nothing has ever been taken out of the blog's folder, so there is no file struck out to show: the only things struck out are the sizes that changed.&lt;/p&gt;

&lt;ul class=&quot;tree&quot;&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code.css&lt;/code&gt; &lt;data value=&quot;3326&quot;&gt;&lt;del&gt;3,030&lt;/del&gt; &lt;ins&gt;3,326&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code.js&lt;/code&gt; &lt;data value=&quot;8318&quot;&gt;&lt;del&gt;7,499&lt;/del&gt; &lt;ins&gt;8,318&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;files.css&lt;/code&gt; &lt;data value=&quot;2110&quot;&gt;&lt;del&gt;1,240&lt;/del&gt; &lt;ins&gt;2,110&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;ins&gt;&lt;code&gt;files.js&lt;/code&gt;&lt;/ins&gt; &lt;data value=&quot;870&quot;&gt;870&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;ins&gt;&lt;code&gt;matrix.css&lt;/code&gt;&lt;/ins&gt; &lt;data value=&quot;692&quot;&gt;692&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;ins&gt;&lt;code&gt;matrix.js&lt;/code&gt;&lt;/ins&gt; &lt;data value=&quot;639&quot;&gt;639&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;site.js&lt;/code&gt; &lt;data value=&quot;16884&quot;&gt;&lt;del&gt;16,835&lt;/del&gt; &lt;ins&gt;16,884&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;ins&gt;&lt;code&gt;tabs.css&lt;/code&gt;&lt;/ins&gt; &lt;data value=&quot;949&quot;&gt;949&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;ins&gt;&lt;code&gt;tabs.js&lt;/code&gt;&lt;/ins&gt; &lt;data value=&quot;1931&quot;&gt;1,931&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree.css&lt;/code&gt; &lt;data value=&quot;2390&quot;&gt;&lt;del&gt;1,985&lt;/del&gt; &lt;ins&gt;2,390&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;check.mjs&lt;/code&gt; &lt;data value=&quot;49340&quot;&gt;&lt;del&gt;47,496&lt;/del&gt; &lt;ins&gt;49,340&lt;/ins&gt;&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre data-label=&quot;a tree that shows a change&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ul class=&quot;tree&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;assets/&amp;lt;/code&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;ins&amp;gt;&amp;lt;code&amp;gt;tabs.js&amp;lt;/code&amp;gt;&amp;lt;/ins&amp;gt; &amp;lt;data value=&quot;1931&quot;&amp;gt;1,931&amp;lt;/data&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;del&amp;gt;&amp;lt;code&amp;gt;old.js&amp;lt;/code&amp;gt;&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;tree.css&amp;lt;/code&amp;gt; &amp;lt;data value=&quot;2390&quot;&amp;gt;&amp;lt;del&amp;gt;1,985&amp;lt;/del&amp;gt; &amp;lt;ins&amp;gt;2,390&amp;lt;/ins&amp;gt;&amp;lt;/data&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;with &lt;code&gt;data-across&lt;/code&gt; the same list runs across the page, each fork opening to the right of its name. a fork may go without a name, which is all a family tree asks for. these are the great apes, in the order their lines parted (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/prado-martinez-2013&quot;&gt;prado-martinez and others 2013&lt;/a&gt;):&lt;/p&gt;

&lt;figure&gt;
&lt;ul class=&quot;tree&quot; data-across&gt;
&lt;li&gt;great apes
&lt;ul&gt;
&lt;li&gt;orangutans &lt;i lang=&quot;la&quot;&gt;Pongo&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;gorillas &lt;i lang=&quot;la&quot;&gt;Gorilla&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;humans &lt;i lang=&quot;la&quot;&gt;Homo&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;chimpanzees &lt;i lang=&quot;la&quot;&gt;Pan troglodytes&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;bonobos &lt;i lang=&quot;la&quot;&gt;Pan paniscus&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figcaption&gt;the order of the forks is the whole of it. the lengths of the branches say nothing about time.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a tree, down the page or across it&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ul class=&quot;tree&quot; data-across&amp;gt;
  &amp;lt;li&amp;gt;great apes
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;orangutans &amp;lt;i lang=&quot;la&quot;&amp;gt;Pongo&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;
        &amp;lt;ul&amp;gt;
          &amp;lt;li&amp;gt;gorillas &amp;lt;i lang=&quot;la&quot;&amp;gt;Gorilla&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;…&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
      &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;when the lengths should say something, the list is a &lt;code&gt;class=&quot;clade&quot;&lt;/code&gt; and every item carries a &lt;code&gt;data-length&lt;/code&gt;: how long the branch that leads to it is. each tip gets a line of its own, and each branch runs as far across the page as it is long. with &lt;code&gt;data-ago&lt;/code&gt; the lengths are time, and an axis under the tree counts back from the tips. with &lt;code&gt;data-unit&lt;/code&gt; they are anything else, and a bar of one round length says how much. these are the african apes, by when their genomes parted (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/scally-2012&quot;&gt;scally and others 2012&lt;/a&gt;):&lt;/p&gt;

&lt;figure&gt;
&lt;ul class=&quot;clade&quot; data-ago=&quot;million years&quot;&gt;
&lt;li data-length=&quot;8.25&quot;&gt;
&lt;ul&gt;
&lt;li data-length=&quot;1.75&quot;&gt;western gorillas &lt;i lang=&quot;la&quot;&gt;Gorilla gorilla&lt;/i&gt;&lt;/li&gt;
&lt;li data-length=&quot;1.75&quot;&gt;eastern gorillas &lt;i lang=&quot;la&quot;&gt;Gorilla beringei&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-length=&quot;4&quot;&gt;
&lt;ul&gt;
&lt;li data-length=&quot;6&quot;&gt;humans &lt;i lang=&quot;la&quot;&gt;Homo sapiens&lt;/i&gt;&lt;/li&gt;
&lt;li data-length=&quot;6&quot;&gt;chimpanzees &lt;i lang=&quot;la&quot;&gt;Pan troglodytes&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figcaption&gt;a tree whose lengths are time. the gorilla line parted from ours about ten million years ago, and the chimpanzee line about six. the two gorilla species are younger by far: on average their sequences parted 1.75 million years ago.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a tree with lengths&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ul class=&quot;clade&quot; data-ago=&quot;million years&quot;&amp;gt;
  &amp;lt;li data-length=&quot;8.25&quot;&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li data-length=&quot;1.75&quot;&amp;gt;western gorillas&amp;lt;/li&amp;gt;
      &amp;lt;li data-length=&quot;1.75&quot;&amp;gt;eastern gorillas&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li data-length=&quot;4&quot;&amp;gt;…&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;things done in order are an &lt;code&gt;&amp;lt;ol class=&quot;steps&quot;&amp;gt;&lt;/code&gt;: a number for each, on one line from the first to the last, a &lt;code&gt;&amp;lt;small&amp;gt;&lt;/code&gt; for the detail, and a &lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt; for a step that has one, set beside it. this is how every change reaches the blog, with the times of the one that added this section:&lt;/p&gt;

&lt;ol class=&quot;steps&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12T11:14:41-03:00&quot;&gt;11:14:41&lt;/time&gt; open an issue &lt;small&gt;it says what is wanted and why, and carries a label for its kind and a milestone.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;make a branch from it &lt;small&gt;named after the issue: &lt;code&gt;55-small-things-for-words&lt;/code&gt;.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12T11:25:44-03:00&quot;&gt;11:25:44&lt;/time&gt; commit &lt;small&gt;one line, lowercase, starting with the area it touches: &lt;code&gt;site: …&lt;/code&gt;&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12T11:25:48-03:00&quot;&gt;11:25:48&lt;/time&gt; open a pull request &lt;small&gt;its description starts with &lt;code&gt;closes #55&lt;/code&gt;, which ties the two together.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12T11:26:01-03:00&quot;&gt;11:26:01&lt;/time&gt; wait for two checks &lt;small&gt;one reads the steps above, the other runs &lt;code&gt;scripts/check.mjs&lt;/code&gt;.&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12T11:26:06-03:00&quot;&gt;11:26:06&lt;/time&gt; squash and merge &lt;small&gt;the branch lands as one commit on &lt;code&gt;main&lt;/code&gt;, which moves in no other way.&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;pre data-label=&quot;steps&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ol class=&quot;steps&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;time datetime=&quot;2026-10-12T11:14:41-03:00&quot;&amp;gt;11:14:41&amp;lt;/time&amp;gt; open an issue
    &amp;lt;small&amp;gt;it says what is wanted and why.&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;make a branch from it &amp;lt;small&amp;gt;named after the issue.&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;when it is the thing handed on that matters, and not the hour, the list is an &lt;code&gt;&amp;lt;ol class=&quot;flow&quot;&amp;gt;&lt;/code&gt;: a box for each step and an arrow to the next, across the page for as long as there is room. a list inside a step is what happens there side by side. this is the same road, as a change travels it:&lt;/p&gt;

&lt;ol class=&quot;flow&quot;&gt;
&lt;li&gt;an issue&lt;/li&gt;
&lt;li&gt;a branch&lt;/li&gt;
&lt;li&gt;a pull request
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;checks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;one commit on &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;pre data-label=&quot;a pipeline&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ol class=&quot;flow&quot;&amp;gt;
  &amp;lt;li&amp;gt;a branch&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;a pull request
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;flow&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;checks&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;a conversation is an &lt;code&gt;&amp;lt;ol class=&quot;chat&quot;&amp;gt;&lt;/code&gt;: a turn for each item, and each turn starts with who spoke, in a &lt;code&gt;&amp;lt;b&amp;gt;&lt;/code&gt;. it is set like the script of a play, and nobody's words go in a bubble. each speaker gets a mark of their own, in the order they first speak. a turn holds whatever a list item can, so a call to a tool is a block of code. and a turn that runs long is folded until it is asked for, as the third one is here.&lt;/p&gt;

&lt;figure&gt;
&lt;ol class=&quot;chat&quot;&gt;
&lt;li&gt;&lt;b&gt;user&lt;/b&gt; what were the last things added to the blog?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;assistant&lt;/b&gt; the history will say. one line for each pull request, newest first:
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ git log --oneline --first-parent -20&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;tool &lt;code&gt;git&lt;/code&gt;&lt;/b&gt;
&lt;pre&gt;&lt;code&gt;ff17ef0 site: an article names the pieces it needs, and the frame stops growing with them (#88)
f9f097b site: glosses, facing text, sources as written, kinds of source, and a sound (#86)
04cc995 site: bits, traces and alignments (#84)
a77e419 site: tabs, sessions at a terminal, yes and no, changes in a tree, and downloads with a sum (#82)
db8741b site: pipelines, graphs and trees with lengths (#80)
a5a01ca site: distributions, flows and treemaps (#78)
eec2d02 site: areas, slopes, bars back to back, waterfalls and indexed lines (#76)
f8ba532 site: tracks, deep time and events on a chart (#74)
d1d1360 article: the tour's own numbers, measured again (#72)
4f84a1f fix: a page with many blocks of code is laid out once, not once for every block (#71)
cf420ff site: a title and a description in every article's own file, for link previews (#68)
1dcab41 site: a search, and keys to read without the mouse (#66)
dc83c27 site: notes that open where they are cited, and references that say what kind of evidence they are (#64)
6c2d653 site: more from a picture: marks with a key, before and after, pixel art, and short clips (#62)
ab985a9 site: more ways to read bytes: a diff between two dumps, a map to scale, and sequences (#60)
02eac6d site: code read closely: blocks side by side, callouts, and disassembly listings (#58)
81c346a site: small things for words: quantities, keys, trees, steps, spoilers, and changes that show (#56)
4a1bd96 site: tables to read at a glance: heat, sorting, and changes with a sign (#54)
9145e4f site: tables that draw themselves: ranges, spans, blocks, days, and shares counted out (#52)
bc0a6f5 site: charts that say how sure they are, and against what (#50)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;assistant&lt;/b&gt; the newest eight are one piece of work: ways to write about more subjects, from tracks of time to a sentence taken apart word by word. the last of them took the list of pieces out of the frame, so that it stops growing.&lt;/li&gt;
&lt;/ol&gt;
&lt;figcaption&gt;an exchange written for this page. what the tool says is what &lt;code&gt;git&lt;/code&gt; printed on &lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a conversation&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ol class=&quot;chat&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;user&amp;lt;/b&amp;gt; what were the last things added to the blog?&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;tool &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt;&amp;lt;/b&amp;gt; &amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;ff17ef0 site: an article names the pieces it needs …&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;a few facts about one thing are a &lt;code&gt;&amp;lt;dl class=&quot;card&quot;&amp;gt;&lt;/code&gt;: terms and what each comes to, ruled like a small table and no wider than a card. in an &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/asides-and-folds&quot;&gt;aside&lt;/a&gt; with a name it is the box of facts an encyclopedia sets beside its text. the numbers on this one were counted by running the gun, which is &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/images&quot;&gt;further down&lt;/a&gt;, and who found it is as &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/gardner-1971&quot;&gt;gardner&lt;/a&gt; told it.&lt;/p&gt;

&lt;aside&gt;
&lt;strong&gt;gosper's glider gun&lt;/strong&gt;
&lt;dl class=&quot;card&quot;&gt;
&lt;dt&gt;found&lt;/dt&gt;&lt;dd&gt;1970, by bill gosper&lt;/dd&gt;
&lt;dt&gt;cells at the start&lt;/dt&gt;&lt;dd&gt;36&lt;/dd&gt;
&lt;dt&gt;fits in&lt;/dt&gt;&lt;dd&gt;36 by 9 cells&lt;/dd&gt;
&lt;dt&gt;period&lt;/dt&gt;&lt;dd&gt;30 generations&lt;/dd&gt;
&lt;dt&gt;each period&lt;/dt&gt;&lt;dd&gt;one glider more, of 5 cells&lt;/dd&gt;
&lt;/dl&gt;
&lt;/aside&gt;

&lt;pre data-label=&quot;a card of facts&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;dl class=&quot;card&quot;&amp;gt;
  &amp;lt;dt&amp;gt;period&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;30 generations&amp;lt;/dd&amp;gt;
&amp;lt;/dl&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the last kind is the list at the top of this page: files that travel with an article are a &lt;code&gt;&amp;lt;ul class=&quot;files&quot;&amp;gt;&lt;/code&gt; of links. a paragraph under a link says what is known about the file: which version it is, when it was made, and its sha-256, which is shown by its two ends and copied whole. the checker takes the sum of the file again on every run, so a file that changes without its line changing fails.&lt;/p&gt;

&lt;pre data-label=&quot;a download&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;ul class=&quot;files&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href=&quot;weights.csv&quot; download&amp;gt;the weights behind the charts &amp;lt;small&amp;gt;csv · 2.6 kb&amp;lt;/small&amp;gt;&amp;lt;/a&amp;gt;
    &amp;lt;p&amp;gt;version 3 · &amp;lt;time datetime=&quot;2026-10-12&quot;&amp;gt;12 october 2026&amp;lt;/time&amp;gt; · sha-256 &amp;lt;code&amp;gt;b81bd1e3…20ffb3&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;tables&lt;/h2&gt;

&lt;p&gt;a table may run wider than the text, and scrolls sideways when it has to. the first column names each row and stays put while the rest moves. numbers are set right, in figures of equal width, so they line up.&lt;/p&gt;

&lt;figure&gt;
&lt;table&gt;
&lt;caption&gt;seven of the sixty-eight pieces, heaviest first&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;span class=&quot;rank&quot;&gt;#&lt;/span&gt;piece&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;fetched when an article has&lt;/th&gt;&lt;th&gt;script&lt;/th&gt;&lt;th&gt;styles&lt;/th&gt;&lt;th&gt;budget&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;1&lt;/span&gt;chart&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table with the class of a chart&lt;/td&gt;&lt;td&gt;3.9 kb&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;5.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;2&lt;/span&gt;dump&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a hex dump, a sequence, a map or the layout of a header&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;td&gt;5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;3&lt;/span&gt;code&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a block of code&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;td&gt;1.2 kb&lt;/td&gt;&lt;td&gt;5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;4&lt;/span&gt;notes&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a list of notes or of references&lt;/td&gt;&lt;td&gt;1.7 kb&lt;/td&gt;&lt;td&gt;1.2 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;5&lt;/span&gt;image&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;an image&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;6&lt;/span&gt;aside&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;an aside, or a section that folds&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;7&lt;/span&gt;math&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a formula&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tfoot&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;&lt;/span&gt;the seven&lt;/th&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;13.4 kb&lt;/td&gt;&lt;td&gt;7.9 kb&lt;/td&gt;&lt;td&gt;23.5 kb&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;
&lt;/table&gt;
&lt;figcaption&gt;a position hangs in front of each name. the second column is words, so it wraps on a narrow screen. the lightest stylesheet is picked out, and a piece with no script says so with a dash. the last row is a &lt;code&gt;&amp;lt;tfoot&amp;gt;&lt;/code&gt;, which is what the columns come to: the checker adds them up, and refuses a foot that says anything else.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;one row of it&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;tr&amp;gt;
  &amp;lt;th scope=&quot;row&quot;&amp;gt;&amp;lt;span class=&quot;rank&quot;&amp;gt;7&amp;lt;/span&amp;gt;math&amp;lt;/th&amp;gt;
  &amp;lt;td class=&quot;words&quot;&amp;gt;a formula&amp;lt;/td&amp;gt;
  &amp;lt;td class=&quot;none&quot;&amp;gt;—&amp;lt;/td&amp;gt;
  &amp;lt;td class=&quot;best&quot;&amp;gt;0.6 kb&amp;lt;/td&amp;gt;
  &amp;lt;td&amp;gt;1 kb&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;some tables draw themselves. the numbers stay in their cells, and a last column is added with a picture of each row.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;class=&quot;range&quot;&lt;/code&gt; is for a value and the range it is expected in: a name, a value, a low end and a high end. the range is a band across the middle of the row and the value is a point, so a point outside its band is a number outside its range, and that number is set heavier. every row has a scale of its own, which lets rows in different units share a table. a range with one end has a dash for the other.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;range&quot;&gt;
&lt;caption&gt;this blog, against what is asked of a page&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;measure&lt;/th&gt;&lt;th&gt;here&lt;/th&gt;&lt;th&gt;at least&lt;/th&gt;&lt;th&gt;at most&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;characters to a line&lt;/th&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the same, on a phone&lt;/th&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;line height&lt;/th&gt;&lt;td&gt;1.5&lt;/td&gt;&lt;td&gt;1.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;contrast, text&lt;/th&gt;&lt;td&gt;16.6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;contrast, quiet text&lt;/th&gt;&lt;td&gt;5.1&lt;/td&gt;&lt;td&gt;4.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the frame, kb&lt;/th&gt;&lt;td&gt;11.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;this article, kb&lt;/th&gt;&lt;td&gt;50.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;values against their ranges. the length of a line is from &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/bringhurst&quot;&gt;bringhurst 2012&lt;/a&gt;, contrast and line height from the accessibility guidelines (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/wcag&quot;&gt;w3c 2024&lt;/a&gt;), and the last two are this blog's own budgets. one number is out of range: a phone held upright has no room for forty-five characters at a size worth reading.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;spans&quot;&lt;/code&gt; is for things that last: a name, when it starts and when it ends, as numbers, as times on a clock like &lt;code&gt;1:23.4&lt;/code&gt;, or as dates. every row gets a bar on one scale, from the earliest start to the latest end, and the two ends of the scale are written over it. a row with no end is a moment, and gets a point.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;spans&quot;&gt;
&lt;caption&gt;a first visit to this page&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;what is fetched&lt;/th&gt;&lt;th&gt;asked for&lt;/th&gt;&lt;th&gt;arrived&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the page&lt;/th&gt;&lt;td&gt;0 ms&lt;/td&gt;&lt;td&gt;1.2 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the upright font&lt;/th&gt;&lt;td&gt;3.3 ms&lt;/td&gt;&lt;td&gt;8.8 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the stylesheet&lt;/th&gt;&lt;td&gt;3.5 ms&lt;/td&gt;&lt;td&gt;8.6 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the script&lt;/th&gt;&lt;td&gt;3.5 ms&lt;/td&gt;&lt;td&gt;9.0 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;this article&lt;/th&gt;&lt;td&gt;20.4 ms&lt;/td&gt;&lt;td&gt;21.9 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;d&quot;&gt;&lt;th scope=&quot;row&quot;&gt;its pieces&lt;/th&gt;&lt;td&gt;23.3 ms&lt;/td&gt;&lt;td&gt;75.6 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the italic font&lt;/th&gt;&lt;td&gt;121.3 ms&lt;/td&gt;&lt;td&gt;411.7 ms&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;spans. one cold load, from a server on the same machine, so the times are small and the order is the point: the page, then the frame, then the article, then the hundred and sixteen files of the pieces it calls for. the italic font is asked for last, when the first slanted word is about to be drawn, and most of its wait is the pieces at work: this page gives them more to do than any other.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;rows that follow each other under one name are a track: the name is said once, and they share its line. a gene is the usual case, its exons on one line and the stretches that are read into protein on the next.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;spans&quot;&gt;
&lt;caption&gt;the gene for β-globin, letter by letter&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;what&lt;/th&gt;&lt;th&gt;from&lt;/th&gt;&lt;th&gt;to&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;exons&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;142&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;exons&lt;/th&gt;&lt;td&gt;273&lt;/td&gt;&lt;td&gt;495&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;exons&lt;/th&gt;&lt;td&gt;1,346&lt;/td&gt;&lt;td&gt;1,608&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;read into protein&lt;/th&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;142&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;read into protein&lt;/th&gt;&lt;td&gt;273&lt;/td&gt;&lt;td&gt;495&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;read into protein&lt;/th&gt;&lt;td&gt;1,346&lt;/td&gt;&lt;td&gt;1,474&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the sickle-cell letter&lt;/th&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;tracks. &lt;var&gt;HBB&lt;/var&gt; as its reference sequence gives it (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/refseq-hbb&quot;&gt;ncbi&lt;/a&gt;), counted from the first letter that is transcribed: three exons, the two stretches between them that are cut out, and inside the exons the 444 letters that are read. the point is the one letter whose change, a &lt;code&gt;T&lt;/code&gt; where an &lt;code&gt;A&lt;/code&gt; should be, gives sickle-cell disease.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a start or an end can also lie deep in the past, &lt;code&gt;541 mya&lt;/code&gt; or &lt;code&gt;12 ka&lt;/code&gt;, or before year one, &lt;code&gt;44 bce&lt;/code&gt;. when the times are too far apart for one ruler, &lt;code&gt;data-log&lt;/code&gt; sets the scale in powers of ten. zero has no place on such a scale, so the present is put one power of ten past the nearest time the table names.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;spans&quot; data-log&gt;
&lt;caption&gt;the earth's time, in powers of ten&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;stretch&lt;/th&gt;&lt;th&gt;from&lt;/th&gt;&lt;th&gt;to&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;d&quot;&gt;&lt;th scope=&quot;row&quot;&gt;hadean&lt;/th&gt;&lt;td&gt;4,567 mya&lt;/td&gt;&lt;td&gt;4,031 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;d&quot;&gt;&lt;th scope=&quot;row&quot;&gt;archean&lt;/th&gt;&lt;td&gt;4,031 mya&lt;/td&gt;&lt;td&gt;2,500 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;d&quot;&gt;&lt;th scope=&quot;row&quot;&gt;proterozoic&lt;/th&gt;&lt;td&gt;2,500 mya&lt;/td&gt;&lt;td&gt;538.8 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;paleozoic&lt;/th&gt;&lt;td&gt;538.8 mya&lt;/td&gt;&lt;td&gt;251.9 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;mesozoic&lt;/th&gt;&lt;td&gt;251.9 mya&lt;/td&gt;&lt;td&gt;66 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;cenozoic&lt;/th&gt;&lt;td&gt;66 mya&lt;/td&gt;&lt;td&gt;0 mya&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;pleistocene&lt;/th&gt;&lt;td&gt;2.58 mya&lt;/td&gt;&lt;td&gt;11.7 ka&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;holocene&lt;/th&gt;&lt;td&gt;11.7 ka&lt;/td&gt;&lt;td&gt;0 ka&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;deep time, with the ages of the international chart (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/ics-chart&quot;&gt;cohen and others 2013&lt;/a&gt;). on a ruler the holocene would be three millionths of the width, and invisible. here every tenfold step back gets the same room, so the nearer to now the more there is, and it is the hadean that shrinks to a sliver. neither picture is wrong, and the caption has to say which one it is.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;three more classes are for reading a table at a glance. with &lt;code&gt;class=&quot;sort&quot;&lt;/code&gt; every column head is a button: one click puts the rows in order by that column, a second turns the order round, and a third puts them back the way they were written. numbers start from the largest, words from a.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;sort&quot;&gt;
&lt;caption&gt;every piece, and what calls for it&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;piece&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;fetched when an article has&lt;/th&gt;&lt;th&gt;script&lt;/th&gt;&lt;th&gt;styles&lt;/th&gt;&lt;th&gt;budget&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a block of code&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;td&gt;1.2 kb&lt;/td&gt;&lt;td&gt;5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pair&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;two blocks side by side&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;callouts&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;numbered marks in a block&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tabs&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;blocks behind tabs&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a listing of machine code&lt;/td&gt;&lt;td&gt;1.9 kb&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table with the class of a chart&lt;/td&gt;&lt;td&gt;3.9 kb&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;5.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as bars&lt;/td&gt;&lt;td&gt;1.9 kb&lt;/td&gt;&lt;td&gt;1.0 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;lines&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as lines&lt;/td&gt;&lt;td&gt;2.4 kb&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dots&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as dots&lt;/td&gt;&lt;td&gt;2.4 kb&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;plot&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as lines or as dots&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.3 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;areas&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as areas&lt;/td&gt;&lt;td&gt;1.2 kb&lt;/td&gt;&lt;td&gt;0.2 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;slope&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart drawn as slopes&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hist&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a histogram, or boxes&lt;/td&gt;&lt;td&gt;1.6 kb&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flows&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of flows&lt;/td&gt;&lt;td&gt;1.6 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;treemap&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a list drawn as tiles by size&lt;/td&gt;&lt;td&gt;1.8 kb&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of edges&lt;/td&gt;&lt;td&gt;2.0 kb&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flow&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a pipeline&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clade&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a tree with lengths&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;events&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;events listed under a chart&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blocks&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of blocks&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;days&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of days&lt;/td&gt;&lt;td&gt;1.3 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spark&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a sparkline&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;range&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of ranges&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spans&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of spans&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;of&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a share to count out&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;heat&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table tinted by its numbers&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sort&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table that sorts&lt;/td&gt;&lt;td&gt;1.0 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;delta&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a change with a sign&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qty&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a quantity&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pad&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;the buttons of a controller&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tree&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a tree of files&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;steps&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a list of steps&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spoiler&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;text under a cover&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;revise&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a correction, or a list of changes&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;aside&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;an aside, or a section that folds&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a formula&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;an image&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;marks&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;an image with marks on it&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;compare&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;two images to compare&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pixel&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;pixel art, or a palette&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clip&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a short clip&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a list of notes or of references&lt;/td&gt;&lt;td&gt;1.7 kb&lt;/td&gt;&lt;td&gt;1.2 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a hex dump, a sequence, a map or the layout of a header&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;td&gt;5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;seq&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a sequence&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;align&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;sequences set under each other&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;map&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a map of a file or of memory&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;files&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a list of downloads&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;1.0 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matrix&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of yes and no&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;trace&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table of states, step by step&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.2 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gloss&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a gloss word under word, or ruby&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;facing&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a text facing its translation&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;source&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a source as it was written&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;say&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a sound to hear&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.3 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chat&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a conversation&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;0.9 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;words tinted by a number&lt;/td&gt;&lt;td&gt;1.0 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;board&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a grid written in characters&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;frames&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;frames in one place, or pictures that blink&lt;/td&gt;&lt;td&gt;1.4 kb&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;card&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a card of facts&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scale&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a picture with a scale bar&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;0.4 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;set&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;panels with letters&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sky&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chart of the sky&lt;/td&gt;&lt;td&gt;1.7 kb&lt;/td&gt;&lt;td&gt;0.8 kb&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tiles&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a map of tiles&lt;/td&gt;&lt;td&gt;1.1 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chem&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a chemical formula&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;0.2 kb&lt;/td&gt;&lt;td&gt;1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a number a reader can change&lt;/td&gt;&lt;td&gt;2.2 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;td&gt;3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;curve&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a curve from a formula&lt;/td&gt;&lt;td&gt;2.1 kb&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sum&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a table with a foot&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.2 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glossary&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a glossary&lt;/td&gt;&lt;td&gt;0.7 kb&lt;/td&gt;&lt;td&gt;0.6 kb&lt;/td&gt;&lt;td&gt;1.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;fig&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a numbered figure&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.2 kb&lt;/td&gt;&lt;td&gt;0.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a table that sorts. try the script column: the chart core is the heaviest thing here, and the pieces with a dash in it are a stylesheet and nothing else.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;heat&quot;&lt;/code&gt; tints every cell by how large its number is, in one hue from the paper up. the numbers stay, so the tint is a second way to read them. one scale covers the table, unless &lt;code&gt;data-by=&quot;column&quot;&lt;/code&gt; or &lt;code&gt;data-by=&quot;row&quot;&lt;/code&gt; gives each its own. numbers on both sides of zero take two inks, one for each side.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;heat&quot;&gt;
&lt;caption&gt;what gzip leaves of a file, at four of its levels&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;level 1&lt;/th&gt;&lt;th&gt;level 3&lt;/th&gt;&lt;th&gt;level 6&lt;/th&gt;&lt;th&gt;level 9&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;feed.xml&lt;/th&gt;&lt;td&gt;23.2%&lt;/td&gt;&lt;td&gt;21.7%&lt;/td&gt;&lt;td&gt;19.6%&lt;/td&gt;&lt;td&gt;19.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;this article&lt;/th&gt;&lt;td&gt;29.9%&lt;/td&gt;&lt;td&gt;28.4%&lt;/td&gt;&lt;td&gt;25.9%&lt;/td&gt;&lt;td&gt;25.7%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.css&lt;/th&gt;&lt;td&gt;33.3%&lt;/td&gt;&lt;td&gt;31.4%&lt;/td&gt;&lt;td&gt;28.7%&lt;/td&gt;&lt;td&gt;28.7%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.js&lt;/th&gt;&lt;td&gt;38.9%&lt;/td&gt;&lt;td&gt;37.6%&lt;/td&gt;&lt;td&gt;35.5%&lt;/td&gt;&lt;td&gt;35.5%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;index.html&lt;/th&gt;&lt;td&gt;40.7%&lt;/td&gt;&lt;td&gt;40.1%&lt;/td&gt;&lt;td&gt;38.9%&lt;/td&gt;&lt;td&gt;38.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.js&lt;/th&gt;&lt;td&gt;43.1%&lt;/td&gt;&lt;td&gt;42.0%&lt;/td&gt;&lt;td&gt;40.3%&lt;/td&gt;&lt;td&gt;40.3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math.css&lt;/th&gt;&lt;td&gt;52.1%&lt;/td&gt;&lt;td&gt;51.5%&lt;/td&gt;&lt;td&gt;50.9%&lt;/td&gt;&lt;td&gt;50.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;stylesheet.png&lt;/th&gt;&lt;td&gt;96.6%&lt;/td&gt;&lt;td&gt;96.5%&lt;/td&gt;&lt;td&gt;96.3%&lt;/td&gt;&lt;td&gt;96.3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;newsreader.woff2&lt;/th&gt;&lt;td&gt;99.7%&lt;/td&gt;&lt;td&gt;99.7%&lt;/td&gt;&lt;td&gt;99.7%&lt;/td&gt;&lt;td&gt;99.7%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a table with its heat. the longer a file of text is, the more of it gzip can fold away. what is already packed, an image or a font, does not pack again, which is why the blog weighs its fonts as they are.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and &lt;code&gt;class=&quot;delta&quot;&lt;/code&gt; on a cell marks a number as a change: an arrow goes in front of it, up or down by its sign, in an ink for each.&lt;/p&gt;

&lt;figure&gt;
&lt;table&gt;
&lt;caption&gt;what six pull requests did to the frame&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;pull request&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it brought&lt;/th&gt;&lt;th&gt;the frame after&lt;/th&gt;&lt;th&gt;change&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a feed&lt;/td&gt;&lt;td&gt;11,802&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;+78&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;cells of words that wrap&lt;/td&gt;&lt;td&gt;11,933&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;+131&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a shorter list of pieces, and downloads in a piece&lt;/td&gt;&lt;td&gt;11,647&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;−286&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;a piece for each form of chart&lt;/td&gt;&lt;td&gt;11,665&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;+18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#50&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;charts that say how sure they are&lt;/td&gt;&lt;td&gt;11,665&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;tables that draw themselves&lt;/td&gt;&lt;td&gt;11,696&lt;/td&gt;&lt;td class=&quot;delta&quot;&gt;+31&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;changes with a sign, in bytes gzipped. a feature that lives in a piece costs the frame one line in a list, or nothing.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and a table of yes and no is a &lt;code&gt;class=&quot;matrix&quot;&lt;/code&gt;. every cell starts with &lt;code&gt;yes&lt;/code&gt;, &lt;code&gt;no&lt;/code&gt; or &lt;code&gt;partly&lt;/code&gt;, and shows a disc for it: full, empty or half. the word stays inside the mark, for a screen reader and for whoever copies the table, and whatever a cell says after its word stays beside it. this is what a block of code gets a colour for, by language:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;matrix&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;language&lt;/th&gt;&lt;th&gt;comments&lt;/th&gt;&lt;th&gt;strings&lt;/th&gt;&lt;th&gt;numbers&lt;/th&gt;&lt;th&gt;names&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;js&lt;/th&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;css&lt;/th&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;json&lt;/th&gt;&lt;td&gt;no &lt;small&gt;it has none&lt;/small&gt;&lt;/td&gt;&lt;td&gt;partly &lt;small&gt;values, not keys&lt;/small&gt;&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;html&lt;/th&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;yes &lt;small&gt;of tags&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;four of the twenty-two languages &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;a block&lt;/a&gt; knows. the rule is comments, strings and numbers, and nothing else. markup is the exception, because there the names are most of what is written.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a matrix&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;table class=&quot;matrix&quot;&amp;gt;
  &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;json&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;no &amp;lt;small&amp;gt;it has none&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;partly&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;yes&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;code&lt;/h2&gt;

&lt;p&gt;a block of code gets a button that copies it. a label says where it came from. the language, written the way markdown tools already write it, turns on colour: comments step back, strings and numbers step forward, and everything else stays ink. keywords are left alone on purpose, so a page of code stays calm.&lt;/p&gt;

&lt;pre data-label=&quot;scripts/pieces.mjs&quot; data-lines=&quot;7&quot; data-mark=&quot;13&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;export const pieces = [
  ['code', 'js css', 'pre'],
  ['pair', 'css'],
  ['callouts', 'js css'],
  ['tabs', 'js css'],
  ['listing', 'js css'],
  ['chart', 'js css', '.bars .lines .dots .blocks .days .areas .slope .hist .box .flows .sky .tiles .curve'],
  ['bars', 'js css'],
  ['lines', 'js'],
  ['dots', 'js'],
  ['plot', 'css', '.lines .dots .areas .slope .curve'],
  ['areas', 'js css'],
  ['slope', 'js css'],
  ['hist', 'js css', '.hist .box'],
  ['flows', 'js css'],
  ['treemap', 'js css'],
  ['graph', 'js css'],
  ['flow', 'css'],
  ['clade', 'js css'],
  ['events', 'js css'],
  ['blocks', 'js css'],
  ['days', 'js css'],
  ['spark', 'js css'],
  ['range', 'js css'],
  ['spans', 'js css'],
  ['of', 'js css'],
  ['heat', 'js css'],
  ['sort', 'js css'],
  ['delta', 'js css'],
  ['qty', 'js css'],
  ['pad', 'css'],
  ['tree', 'css'],
  ['steps', 'css'],
  ['spoiler', 'js css'],
  ['revise', 'js css', 'ins del .changes'],
  ['aside', 'css', 'aside details'],
  ['math', 'css', 'math'],
  ['image', 'js css', 'img'],
  ['marks', 'js css'],
  ['compare', 'js css'],
  ['pixel', 'js css', '.pixel .palette'],
  ['clip', 'js css'],
  ['notes', 'js css', '.notes .refs'],
  ['dump', 'js css', '.hex .seq .fields .map .align'],
  ['seq', 'js'],
  ['align', 'js css'],
  ['map', 'js'],
  ['files', 'js css'],
  ['matrix', 'js css'],
  ['trace', 'js css'],
  ['gloss', 'css', '.gloss ruby'],
  ['facing', 'css'],
  ['source', 'css'],
  ['say', 'js css'],
  ['chat', 'js css'],
  ['tokens', 'js css'],
  ['board', 'js css'],
  ['frames', 'js css', '.frames .blink'],
  ['card', 'css'],
  ['scale', 'js css', '[data-across]'],
  ['set', 'css'],
  ['sky', 'js css'],
  ['tiles', 'js css'],
  ['chem', 'js css'],
  ['knob', 'js css'],
  ['curve', 'js'],
  ['sum', 'css', 'tfoot'],
  ['glossary', 'js css'],
  ['fig', 'css'],
];

const calls = (html) =&amp;gt; ([name, , signs = `.${name}`]) =&amp;gt;
  signs.split(' ').some((sign) =&amp;gt;
    RegExp(sign[0] === '.' ? `&amp;lt;[^&amp;gt;]+class=&quot;[^&quot;]*\\b${sign.slice(1)}\\b` : sign[0] === '[' ? `&amp;lt;[^&amp;gt;]+\\s${sign.slice(1, -1)}[=\\s&amp;gt;]` : `&amp;lt;${sign}[\\s&amp;gt;]`).test(html),
  );&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;that is the whole list of pieces, and the four lines that read it: a name, what to fetch, and the tags, classes or attributes that call for it, the piece's own name when none are given. the frame never sees the list. a script reads it, and writes at the top of each article the pieces that article needs, so the frame weighs the same however long the list grows. the lines are numbered from 7, where the list starts in the file, and line 13 is marked. a long line does not wrap, and the last but one is long: the block grows past the text until it meets the edge of the page, and scrolls after that.&lt;/p&gt;

&lt;p&gt;a patch is a block in the language &lt;code&gt;diff&lt;/code&gt;. the lines it adds and removes are tinted:&lt;/p&gt;

&lt;pre data-label=&quot;assets/site.css&quot;&gt;&lt;code class=&quot;language-diff&quot;&gt;@@ -652,7 +652,13 @@
-.prose :is(th, td).l {
+.prose :is(th, td):is(.l, .words) {
   text-align: left;
 }
+
+/* a cell of words rather than a number: it wraps where it runs long */
+.prose .words {
+  min-width: 10em;
+  white-space: normal;
+}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and a phrase inside a block can be pointed at with &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;python3 -m http.server &lt;mark&gt;4173&lt;/mark&gt;  # then open http://localhost:4173&lt;/code&gt;&lt;/pre&gt;

&lt;pre data-label=&quot;how the first block is written&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;pre data-label=&quot;scripts/pieces.mjs&quot; data-lines=&quot;7&quot; data-mark=&quot;13&quot;&amp;gt;
&amp;lt;code class=&quot;language-js&quot;&amp;gt;export const pieces = [
  ['code', 'js css', 'pre'],
  …
];&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;twenty-two languages are known: js, ts, c, cpp, rust, zig, go, java, css, json, python, ruby, sh, make, yaml, toml, asm, sql, lua, html, xml and svg. anything else is shown plain.&lt;/p&gt;

&lt;p&gt;the same thing said several ways is a &lt;code&gt;&amp;lt;figure class=&quot;tabs&quot;&amp;gt;&lt;/code&gt; around the blocks. one shows at a time, under a row of the names their &lt;code&gt;data-label&lt;/code&gt;s give them. a name picked in one set is picked in every set on the page that has it, so a language is chosen once. without scripts, and on paper, every block shows. this is a function that counts the steps a number takes to reach one, halving when it is even, and tripling and adding one when it is odd:&lt;/p&gt;

&lt;figure class=&quot;tabs&quot;&gt;
&lt;pre data-label=&quot;c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;int steps(unsigned long n) {
    int count = 0;
    while (n != 1) {
        n = n % 2 ? 3 * n + 1 : n / 2;
        count++;
    }
    return count;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre data-label=&quot;python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;def steps(n):
    count = 0
    while n != 1:
        n = 3 * n + 1 if n % 2 else n // 2
        count += 1
    return count&lt;/code&gt;&lt;/pre&gt;
&lt;pre data-label=&quot;javascript&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;function steps(n) {
  let count = 0;
  while (n !== 1) {
    n = n % 2 ? 3 * n + 1 : n / 2;
    count++;
  }
  return count;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;

&lt;p&gt;and this is each of them asked about twenty-seven. all three say 111.&lt;/p&gt;

&lt;figure class=&quot;tabs&quot;&gt;
&lt;pre data-label=&quot;c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;printf(&quot;%d\n&quot;, steps(27));&lt;/code&gt;&lt;/pre&gt;
&lt;pre data-label=&quot;python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;print(steps(27))&lt;/code&gt;&lt;/pre&gt;
&lt;pre data-label=&quot;javascript&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;console.log(steps(27));&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;tabs&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure class=&quot;tabs&quot;&amp;gt;
  &amp;lt;pre data-label=&quot;c&quot;&amp;gt;&amp;lt;code class=&quot;language-c&quot;&amp;gt;…&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;pre data-label=&quot;python&quot;&amp;gt;&amp;lt;code class=&quot;language-python&quot;&amp;gt;…&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;a session at a terminal is a block of &lt;code&gt;language-console&lt;/code&gt;. a line that starts with &lt;code&gt;$&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt; or &lt;code&gt;%&lt;/code&gt; and a space was typed, and so is the line after one that ends in a backslash, when it starts with &lt;code&gt;&amp;gt;&lt;/code&gt;. everything else is what came back, and it steps behind. the prompt is not picked up with a selection, and the copy button takes only what was typed. these are the thirty-nine commits on &lt;code&gt;main&lt;/code&gt; up to pull request #78, counted by the area each one names. the odd one out is the commit the repository was made with:&lt;/p&gt;

&lt;pre data-label=&quot;a session&quot;&gt;&lt;code class=&quot;language-console&quot;&gt;$ git rev-list --count --first-parent a5a01ca
39
$ git log --first-parent --format=%s a5a01ca \
&gt;   | cut -d: -f1 | sort | uniq -c | sort -rn
     25 site
      4 fix
      4 article
      3 design
      2 repo
      1 Initial commit&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;two blocks in a &lt;code&gt;&amp;lt;figure class=&quot;pair&quot;&amp;gt;&lt;/code&gt; sit side by side, to be read line against line, and stack on a narrow page. pointing at a line picks out the one level with it on the other side, so a blank line is part of the text: it is what keeps the two level. on the left is a function that counts the steps of a collatz sequence, written the way the compiler read it. on the right is what &lt;span data-case&gt;gcc 15.2&lt;/span&gt; made of it at &lt;code&gt;-Os&lt;/code&gt;, with the labels named by hand.&lt;/p&gt;

&lt;figure class=&quot;pair&quot;&gt;
&lt;pre data-label=&quot;steps.c&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;int steps(unsigned long n) {
    int count = 0;
    while (n != 1) {

        if (n % 2) {

            n = 3 * n + 1;
            count++;

        }
        n = n / 2;
        count++;
    }
    return count;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre data-label=&quot;gcc -Os -S -masm=intel steps.c&quot;&gt;&lt;code class=&quot;language-asm&quot;&gt;steps:
        &lt;mark data-note=&quot;1&quot;&gt;xor   eax, eax&lt;/mark&gt;
.loop:  cmp   rdi, 1
        je    .done
        test  edi, 1
        je    .half
        &lt;mark data-note=&quot;2&quot;&gt;lea   rdi, [rdi+rdi*2]&lt;/mark&gt;
        inc   eax
        &lt;mark data-note=&quot;3&quot;&gt;inc   rdi&lt;/mark&gt;

.half:  shr   rdi, 1
        inc   eax
        jmp   .loop
.done:  ret&lt;/code&gt;&lt;/pre&gt;
&lt;figcaption&gt;each line of c sits beside the first instruction that carries it out. twelve instructions, 33 bytes.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ol class=&quot;callouts&quot;&gt;
&lt;li&gt;a register xored with itself is zero. this is &lt;code&gt;count = 0&lt;/code&gt;, in two bytes where a plain move takes five.&lt;/li&gt;
&lt;li&gt;three times &lt;var&gt;n&lt;/var&gt; without a multiplication: the instruction that works out addresses adds &lt;var&gt;n&lt;/var&gt; to twice &lt;var&gt;n&lt;/var&gt;.&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;+ 1&lt;/code&gt;, and after it no jump back to the test at the top. three times an odd number, plus one, is even, so the compiler knows which way the next turn goes and falls straight into the halving.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;the numbers in the right block are callouts: a &lt;code&gt;&amp;lt;mark data-note=&quot;1&quot;&amp;gt;&lt;/code&gt; around what is meant, and an &lt;code&gt;&amp;lt;ol class=&quot;callouts&quot;&amp;gt;&lt;/code&gt; after the block with a line for each number. pointing at a mark lights its line, and pointing at a line lights its mark. the copy button leaves the numbers out.&lt;/p&gt;

&lt;pre data-label=&quot;a pair, with callouts&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure class=&quot;pair&quot;&amp;gt;
  &amp;lt;pre data-label=&quot;steps.c&quot;&amp;gt;&amp;lt;code class=&quot;language-c&quot;&amp;gt;…&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;pre data-label=&quot;gcc -Os&quot;&amp;gt;&amp;lt;code class=&quot;language-asm&quot;&amp;gt;steps:
        &amp;lt;mark data-note=&quot;1&quot;&amp;gt;xor   eax, eax&amp;lt;/mark&amp;gt;
        …&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
  &amp;lt;figcaption&amp;gt;each line of c sits beside the first instruction that carries it out.&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;ol class=&quot;callouts&quot;&amp;gt;
  &amp;lt;li&amp;gt;a register xored with itself is zero.&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;a disassembly is a &lt;code&gt;&amp;lt;pre class=&quot;listing&quot;&amp;gt;&lt;/code&gt;, pasted as &lt;code&gt;objdump&lt;/code&gt; prints it. it is set in columns: where each instruction is, the bytes it is made of, and what it says. every jump that lands inside the listing gets an arrow in the gutter, short ones on the inside and long ones further out, and pointing at a jump, or at the place one lands, picks its arrow out. on a phone the bytes step aside. this is the same function, read back out of the object file:&lt;/p&gt;

&lt;pre class=&quot;listing&quot; data-label=&quot;objdump -d -M intel steps.o&quot;&gt;0000000000000000 &amp;lt;steps&amp;gt;:
   0:	31 c0                	xor    eax,eax
   2:	48 83 ff 01          	cmp    rdi,0x1
   6:	74 18                	je     20 &amp;lt;steps+0x20&amp;gt;
   8:	f7 c7 01 00 00 00    	test   edi,0x1
   e:	74 09                	je     19 &amp;lt;steps+0x19&amp;gt;
  10:	48 8d 3c 7f          	lea    rdi,[rdi+rdi*2]
  14:	ff c0                	inc    eax
  16:	48 ff c7             	inc    rdi
  19:	48 d1 ef             	shr    rdi,1
  1c:	ff c0                	inc    eax
  1e:	eb e2                	jmp    2 &amp;lt;steps+0x2&amp;gt;
  20:	c3                   	ret&lt;/pre&gt;

&lt;pre data-label=&quot;a listing&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;pre class=&quot;listing&quot; data-label=&quot;objdump -d -M intel steps.o&quot;&amp;gt;
0000000000000000 &amp;amp;lt;steps&amp;amp;gt;:
   0:	31 c0                	xor    eax,eax
   2:	48 83 ff 01          	cmp    rdi,0x1
   6:	74 18                	je     20 &amp;amp;lt;steps+0x20&amp;amp;gt;
   …
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;what a listing does not show at a glance is the shape of the thing: where it forks, and where it comes back round. a &lt;code&gt;&amp;lt;table class=&quot;graph&quot;&amp;gt;&lt;/code&gt; is a list of edges, one to a row: where it starts, where it ends and, if it has one, a word for it. the things are set in layers down the page, each under what leads to it, and an edge that goes back up is drawn round the side. a class on a row, &lt;code&gt;a&lt;/code&gt; to &lt;code&gt;d&lt;/code&gt;, gives its edge an ink. this is every way through the function above, by the addresses in the listing:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;graph&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;from&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;to&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;when&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;0&lt;/code&gt; count = 0&lt;/td&gt;&lt;td&gt;&lt;code&gt;2&lt;/code&gt; n is 1?&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;2&lt;/code&gt; n is 1?&lt;/td&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt; return count&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;2&lt;/code&gt; n is 1?&lt;/td&gt;&lt;td&gt;&lt;code&gt;8&lt;/code&gt; n is odd?&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;8&lt;/code&gt; n is odd?&lt;/td&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt; n = 3n + 1&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;8&lt;/code&gt; n is odd?&lt;/td&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt; n = n / 2&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;10&lt;/code&gt; n = 3n + 1&lt;/td&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt; n = n / 2&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;td&gt;&lt;code&gt;19&lt;/code&gt; n = n / 2&lt;/td&gt;&lt;td&gt;&lt;code&gt;2&lt;/code&gt; n is 1?&lt;/td&gt;&lt;td&gt;again&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;six blocks and seven edges. the one in red is the loop: it leaves the bottom of the function and comes back in at the test. the compiler's shortcut is here too, as an edge that is missing: nothing leads from &lt;code&gt;10&lt;/code&gt; back to the test.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a graph&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;table class=&quot;graph&quot;&amp;gt;
  &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;from&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;to&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;when&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;n is 1?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;return count&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;yes&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;n is 1?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;n is odd?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;no&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    &amp;lt;tr class=&quot;b&quot;&amp;gt;&amp;lt;td&amp;gt;n = n / 2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;n is 1?&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;again&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and what it does, step by step, is a &lt;code&gt;&amp;lt;table class=&quot;trace&quot;&amp;gt;&lt;/code&gt;: a row for each step, and the state after it. a cell that is not what it was in the row above is picked out, and the rest step back, so the eye goes to what a step did. this is the function asked about the number two, as a debugger stepped through it:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;trace&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;&lt;code&gt;rdi&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;eax&lt;/code&gt;&lt;/th&gt;&lt;th&gt;zero flag&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;0&lt;/code&gt; &lt;code&gt;xor eax,eax&lt;/code&gt;&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;2&lt;/code&gt; &lt;code&gt;cmp rdi,1&lt;/code&gt;&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;6&lt;/code&gt; &lt;code&gt;je 20&lt;/code&gt;&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;8&lt;/code&gt; &lt;code&gt;test edi,1&lt;/code&gt;&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;e&lt;/code&gt; &lt;code&gt;je 19&lt;/code&gt;&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;19&lt;/code&gt; &lt;code&gt;shr rdi,1&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;1c&lt;/code&gt; &lt;code&gt;inc eax&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;1e&lt;/code&gt; &lt;code&gt;jmp 2&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;2&lt;/code&gt; &lt;code&gt;cmp rdi,1&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;6&lt;/code&gt; &lt;code&gt;je 20&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;20&lt;/code&gt; &lt;code&gt;ret&lt;/code&gt;&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;eleven instructions to halve a two. &lt;var&gt;n&lt;/var&gt; lives in &lt;code&gt;rdi&lt;/code&gt; and the count in &lt;code&gt;eax&lt;/code&gt;. the zero flag is how a test is remembered until the jump after it: a &lt;code&gt;je&lt;/code&gt; jumps only when the flag holds a one.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a trace&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;table class=&quot;trace&quot;&amp;gt;
  &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;after&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;rdi&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;eax&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;zero flag&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;xor eax,eax&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;cmp rdi,1&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;charts&lt;/h2&gt;

&lt;p&gt;a chart is a table with a class. the frame reads the numbers and draws them, and the table stays in the page: a screen reader gets it instead of the drawing, and so does a feed reader. the first column names each row, every other column is a series, and the caption becomes the title.&lt;/p&gt;

&lt;pre data-label=&quot;the chart under this block&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure&amp;gt;
  &amp;lt;table class=&quot;bars&quot; data-max=&quot;100&quot;&amp;gt;
    &amp;lt;caption&amp;gt;how full a budget is&amp;lt;/caption&amp;gt;
    &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;part&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;used&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;
    &amp;lt;tbody&amp;gt;
      &amp;lt;tr class=&quot;a&quot;&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;the frame&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;96%&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
      &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;chart&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;97%&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
      …
    &amp;lt;/tbody&amp;gt;
  &amp;lt;/table&amp;gt;
  &amp;lt;figcaption&amp;gt;one row is picked out, and the scale is pinned at 100.&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot; data-max=&quot;100&quot;&gt;
&lt;caption&gt;how full a budget is&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;part&lt;/th&gt;&lt;th&gt;used&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;the frame&lt;/th&gt;&lt;td&gt;96%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart&lt;/th&gt;&lt;td&gt;97%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes&lt;/th&gt;&lt;td&gt;96%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump&lt;/th&gt;&lt;td&gt;95%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;aside&lt;/th&gt;&lt;td&gt;92%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code&lt;/th&gt;&lt;td&gt;89%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image&lt;/th&gt;&lt;td&gt;83%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math&lt;/th&gt;&lt;td&gt;62%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;bars, one series. one row is picked out with a class on its &lt;code&gt;&amp;lt;tr&amp;gt;&lt;/code&gt; and the rest step back to grey. the scale is pinned at 100 with &lt;code&gt;data-max&lt;/code&gt;, so a full bar means a full budget. these are the frame and the seven pieces of the first table under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tables&quot;&gt;tables&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;with several columns of numbers, each row becomes a group of bars, and the head of the table becomes the legend. there are four inks, and no chart draws more than four series.&lt;sup&gt;&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-inks&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;the five largest files, as written and as sent&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;as written&lt;/th&gt;&lt;th&gt;gzipped&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.css&lt;/th&gt;&lt;td&gt;17.8 kb&lt;/td&gt;&lt;td&gt;5.1 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.js&lt;/th&gt;&lt;td&gt;15.5 kb&lt;/td&gt;&lt;td&gt;5.5 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.js&lt;/th&gt;&lt;td&gt;9.8 kb&lt;/td&gt;&lt;td&gt;3.9 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code.js&lt;/th&gt;&lt;td&gt;8.1 kb&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump.js&lt;/th&gt;&lt;td&gt;7.6 kb&lt;/td&gt;&lt;td&gt;3.2 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;bars, two series. gzip leaves between three and four tenths of each.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;numbers below zero put bars on both sides of a line:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;the ten pull requests that moved the frame most, in bytes gzipped&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;pull request&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10 charts and code&lt;/th&gt;&lt;td&gt;+818&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22 diffs and line numbers&lt;/th&gt;&lt;td&gt;−139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25 images&lt;/th&gt;&lt;td&gt;+158&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30 tags, series, reading time&lt;/th&gt;&lt;td&gt;+486&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32 a fix to the reading time&lt;/th&gt;&lt;td&gt;+90&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35 cells of words&lt;/th&gt;&lt;td&gt;+131&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46 room for more pieces&lt;/th&gt;&lt;td&gt;−286&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66 the search and the keys&lt;/th&gt;&lt;td&gt;+228&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88 the list of pieces moves out&lt;/th&gt;&lt;td&gt;−465&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100 another language&lt;/th&gt;&lt;td&gt;+86&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;bars around zero: the ten changes that moved the frame's weight most, in the order they were made. three made it lighter, and each time something left the frame: the styles for code, the styles for a list of downloads, and at #88 the list of pieces itself.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;when the columns are parts of a whole, &lt;code&gt;class=&quot;bars stacked&quot;&lt;/code&gt; sets them end to end and writes the total at the tip:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars stacked&quot;&gt;
&lt;caption&gt;what the frame and the pieces are made of, in kb gzipped&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;part&lt;/th&gt;&lt;th&gt;html&lt;/th&gt;&lt;th&gt;styles&lt;/th&gt;&lt;th&gt;script&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the frame&lt;/th&gt;&lt;td&gt;0.9&lt;/td&gt;&lt;td&gt;5.1&lt;/td&gt;&lt;td&gt;5.5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.4&lt;/td&gt;&lt;td&gt;3.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.5&lt;/td&gt;&lt;td&gt;3.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.2&lt;/td&gt;&lt;td&gt;3.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.2&lt;/td&gt;&lt;td&gt;1.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1.1&lt;/td&gt;&lt;td&gt;1.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;aside&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;0.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;stacked bars. two pieces are a stylesheet and nothing else.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;two series can also stand back to back. &lt;code&gt;class=&quot;bars mirrored&quot;&lt;/code&gt; runs the first left from a middle line and the second right, which is how two halves of one thing are compared: two sexes by age, two sides of a trade, two models on the same tests.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars mirrored&quot;&gt;
&lt;caption&gt;one test, three runs of it&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;run&lt;/th&gt;&lt;th&gt;haiku 5.5&lt;/th&gt;&lt;th&gt;deepseek v4.1 flash&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the makers' own tables&lt;/th&gt;&lt;td&gt;39.2%&lt;/td&gt;&lt;td&gt;31.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;artificial analysis&lt;/th&gt;&lt;td&gt;32.8%&lt;/td&gt;&lt;td&gt;26.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vals ai&lt;/th&gt;&lt;td&gt;35.4%&lt;/td&gt;&lt;td&gt;19.7%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;bars back to back, from &lt;a href=&quot;../../#/software/claude-haiku-5-5&quot;&gt;the article on haiku 5.5&lt;/a&gt;: the share of terminal-bench 4.0 each model finished, as three parties measured it.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;bars waterfall&quot;&lt;/code&gt; is for changes that add up. each bar starts where the one above it ended, a rise in one ink and a fall in another, and a row in a &lt;code&gt;&amp;lt;tfoot&amp;gt;&lt;/code&gt; is what they come to, drawn from zero.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars waterfall&quot;&gt;
&lt;caption&gt;what the frame gained between its first pull request and #68&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;stretch&lt;/th&gt;&lt;th&gt;change&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;charts and code, inside the frame&lt;/th&gt;&lt;td&gt;+0.79 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;seven small things&lt;/th&gt;&lt;td&gt;+0.24 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tags, series and the feed&lt;/th&gt;&lt;td&gt;+0.76 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the pieces move out&lt;/th&gt;&lt;td&gt;−0.28 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;seven more small things&lt;/th&gt;&lt;td&gt;+0.17 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the search, the keys, the previews&lt;/th&gt;&lt;td&gt;+0.26 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tfoot&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gained in all&lt;/th&gt;&lt;td&gt;+1.94 kb&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;
&lt;/table&gt;
&lt;figcaption&gt;a waterfall. the same history as the line chart further down, added up by stretch instead of step by step: six changes, one of them a fall, and the 1.94 kb they come to.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a number can say how sure it is. a cell written as &lt;code&gt;52.8 ± 1.6 ms&lt;/code&gt;, as &lt;code&gt;1.16 (1.15–1.18)&lt;/code&gt; or as two ends, &lt;code&gt;36–43&lt;/code&gt;, gives a chart an interval as well as a value, and each form draws it in its own way. on a bar it is a whisker:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;four commands, from start to finish&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;command&lt;/th&gt;&lt;th&gt;time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;node, doing nothing&lt;/th&gt;&lt;td&gt;14.1 ± 2.1 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;writing the link previews&lt;/th&gt;&lt;td&gt;49.3 ± 1.6 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;writing the feed&lt;/th&gt;&lt;td&gt;33.9 ± 3.6 ms&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;checking the blog&lt;/th&gt;&lt;td&gt;148.6 ± 2.2 ms&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;bars with whiskers: the mean of twenty runs on one laptop, give or take a standard deviation. checking every rule on every page costs thirteen hundredths of a second more than starting node does.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a line chart runs across the rows in order. it does not write every value, so the pointer reads them off it, and a link under it swaps the drawing for the table. &lt;code&gt;data-line&lt;/code&gt; on the table is a value to read the rest against: a dotted rule, named in the legend in the words it was written with.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines&quot; data-line=&quot;12 kb, the budget&quot;&gt;
&lt;caption&gt;the weight of the frame, pull request by pull request&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;the frame&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;9.86 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;9.85 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;10.65 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;10.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;10.54 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;10.55 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;10.70 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;10.77 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;10.84 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;10.88 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;10.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;11.36 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;11.45 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;11.53 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;11.65 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;11.37 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;11.39 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;11.42 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;11.44 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;11.48 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;11.50 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;11.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;11.54 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;11.76 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;11.80 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;11.80 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;11.82 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;11.85 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;11.87 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;11.88 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;11.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;11.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;11.46 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;11.55 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;dl class=&quot;events&quot;&gt;
&lt;dt&gt;#10&lt;/dt&gt;&lt;dd&gt;charts and blocks of code arrive, inside the frame&lt;/dd&gt;
&lt;dt&gt;#30–#35&lt;/dt&gt;&lt;dd&gt;tags, series, reading time and the feed&lt;/dd&gt;
&lt;dt&gt;#46&lt;/dt&gt;&lt;dd&gt;the frame makes room: what an article may ask for moves out of it&lt;/dd&gt;
&lt;dt&gt;#66&lt;/dt&gt;&lt;dd&gt;the search and the keys&lt;/dd&gt;
&lt;dt&gt;#88&lt;/dt&gt;&lt;dd&gt;the list of pieces leaves the frame&lt;/dd&gt;
&lt;/dl&gt;
&lt;figcaption&gt;a line and a rule, from &lt;code&gt;data-line=&quot;12 kb, the budget&quot;&lt;/code&gt;. each step is a pull request that changed the frame, named by its number, from the first to the latest. after #100 it stands 462 bytes from its budget.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;the numbers over that chart are events: a &lt;code&gt;&amp;lt;dl class=&quot;events&quot;&amp;gt;&lt;/code&gt; straight after the table, each &lt;code&gt;&amp;lt;dt&amp;gt;&lt;/code&gt; saying when in the words of a row, &lt;code&gt;#46&lt;/code&gt;, or of two with a dash between them, &lt;code&gt;#30–#35&lt;/code&gt;. a moment gets a rule and a stretch gets a band, and the list becomes the key. without the drawing it is still a list of what happened and when.&lt;/p&gt;

&lt;p&gt;two measures on different scales never share a chart as they are. set to a common start they can: &lt;code&gt;data-index=&quot;low&quot;&lt;/code&gt; names a row, and every series becomes a share of what it was there, which is 100.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines&quot; data-index=&quot;low&quot; data-log&gt;
&lt;caption&gt;what more effort buys, and what it costs, with low effort as 100&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;effort&lt;/th&gt;&lt;th&gt;index score&lt;/th&gt;&lt;th&gt;cost per task&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;low&lt;/th&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;$0.02&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;medium&lt;/th&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;$0.05&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;high&lt;/th&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;$0.08&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;xhigh&lt;/th&gt;&lt;td&gt;41&lt;/td&gt;&lt;td&gt;$0.12&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;max&lt;/th&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;$0.21&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;indexed lines, in powers of ten. the table holds a score out of a hundred and a price in dollars, from &lt;a href=&quot;../../#/software/claude-haiku-5-5&quot;&gt;the article on haiku 5.5&lt;/a&gt;, and the chart shows what happened to each: at the most effort the score is half as high again, and the price is ten and a half times what it was.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;areas&quot;&lt;/code&gt; piles the series of a line chart on each other, for the parts of a whole as they change. the top edge is the total, and only the bottom series can be read against a flat line, so the one that matters most goes first.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;areas&quot;&gt;
&lt;caption&gt;all the code the blog can send, pull request by pull request&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;the frame&lt;/th&gt;&lt;th&gt;the pieces&lt;/th&gt;&lt;th&gt;what a reader asks for&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;9.9 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;10.6 kb&lt;/td&gt;&lt;td&gt;7.5 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;10.5 kb&lt;/td&gt;&lt;td&gt;9.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;10.5 kb&lt;/td&gt;&lt;td&gt;10.1 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;10.5 kb&lt;/td&gt;&lt;td&gt;10.7 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;10.7 kb&lt;/td&gt;&lt;td&gt;12.7 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;10.8 kb&lt;/td&gt;&lt;td&gt;14.8 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;10.9 kb&lt;/td&gt;&lt;td&gt;18.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;10.9 kb&lt;/td&gt;&lt;td&gt;20.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;20.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;11.7 kb&lt;/td&gt;&lt;td&gt;20.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;20.9 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;23.6 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#50&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;27.6 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;35.3 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;11.4 kb&lt;/td&gt;&lt;td&gt;38.5 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;42.2 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;46.8 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;49.6 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;56.1 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#64&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;56.8 kb&lt;/td&gt;&lt;td&gt;0.0 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;11.8 kb&lt;/td&gt;&lt;td&gt;56.8 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;11.8 kb&lt;/td&gt;&lt;td&gt;58.8 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;11.8 kb&lt;/td&gt;&lt;td&gt;62.7 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;11.9 kb&lt;/td&gt;&lt;td&gt;69.7 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;11.9 kb&lt;/td&gt;&lt;td&gt;75.4 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;11.9 kb&lt;/td&gt;&lt;td&gt;78.8 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;11.9 kb&lt;/td&gt;&lt;td&gt;81.0 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;11.9 kb&lt;/td&gt;&lt;td&gt;83.1 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;83.1 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#90&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;86.5 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#92&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;90.5 kb&lt;/td&gt;&lt;td&gt;5.3 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#94&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;93.2 kb&lt;/td&gt;&lt;td&gt;6.8 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#96&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;98.7 kb&lt;/td&gt;&lt;td&gt;6.8 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#98&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;103.7 kb&lt;/td&gt;&lt;td&gt;6.8 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;11.5 kb&lt;/td&gt;&lt;td&gt;105.2 kb&lt;/td&gt;&lt;td&gt;6.8 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;areas, in kb gzipped. the frame is the band at the bottom and stays the thickness it started at. everything the blog has learned since #10 went into the pieces, which a page pays for only when it uses them.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;slope&quot;&lt;/code&gt; reads a table the other way: a line for each row, running across the columns. with two columns it says what rose and what fell between two moments. with more, and &lt;code&gt;data-flip&lt;/code&gt; when the numbers are places in a ranking, it says who overtook whom.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;slope&quot;&gt;
&lt;caption&gt;one test, as it got harder&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model&lt;/th&gt;&lt;th&gt;version 2.1&lt;/th&gt;&lt;th&gt;version 3.0&lt;/th&gt;&lt;th&gt;version 4.0&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td&gt;90.6%&lt;/td&gt;&lt;td&gt;30.0%&lt;/td&gt;&lt;td&gt;31.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;opus 5.0&lt;/th&gt;&lt;td&gt;89.1%&lt;/td&gt;&lt;td&gt;43.3%&lt;/td&gt;&lt;td&gt;51.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku 5.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;39.2%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;slopes, from the same article. deepseek led on the old exam by a point and a half, and trails by twenty on the current one. haiku 5.5 was only measured on the last, so it is a point and not a line.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;charts set side by side in a &lt;code&gt;&amp;lt;figure class=&quot;multiples&quot;&amp;gt;&lt;/code&gt; share one scale, so they can be read against each other:&lt;/p&gt;

&lt;figure class=&quot;multiples&quot;&gt;
&lt;table class=&quot;lines&quot;&gt;
&lt;caption&gt;index.html&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;kb gzipped&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;0.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;0.92 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;0.95 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;lines&quot;&gt;
&lt;caption&gt;site.css&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;kb gzipped&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;4.99 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;4.97 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;5.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;5.13 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;5.14 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;5.14 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;5.14 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;5.12 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;5.19 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;5.19 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;5.19 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;5.26 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;5.26 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;5.27 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;5.40 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;5.08 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;5.11 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;lines&quot;&gt;
&lt;caption&gt;site.js&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;kb gzipped&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;3.99 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;3.99 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;4.25 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;4.49 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;4.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;4.52 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;4.67 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;4.77 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;4.77 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;4.80 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;4.81 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;5.21 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;5.30 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;5.34 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;5.34 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;5.38 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;5.40 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;5.43 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;5.44 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;5.49 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;5.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;5.52 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;5.55 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;5.71 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;5.75 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;5.75 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;5.77 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;5.80 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;5.81 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;5.82 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;5.84 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;5.87 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;5.41 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;5.50 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;small multiples: the same thirty-four steps, file by file. the page itself is a sliver. the stylesheet ends 0.1 kb heavier than it began, having twice handed styles to a piece, and the script 1.5 kb heavier, having handed its list of pieces to a file the frame never reads.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;on a line, how sure a number is becomes a band around it:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines&quot;&gt;
&lt;caption&gt;what gzip leaves of a file, level by level&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;level&lt;/th&gt;&lt;th&gt;the middle file&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;1&lt;/th&gt;&lt;td&gt;48.9% (44.3–54.2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2&lt;/th&gt;&lt;td&gt;48.5% (43.9–54.0)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;3&lt;/th&gt;&lt;td&gt;48.3% (43.6–53.7)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;4&lt;/th&gt;&lt;td&gt;47.5% (42.7–53.4)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;5&lt;/th&gt;&lt;td&gt;47.3% (42.4–53.2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;6&lt;/th&gt;&lt;td&gt;47.3% (42.4–53.2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;7&lt;/th&gt;&lt;td&gt;47.3% (42.4–53.2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;8&lt;/th&gt;&lt;td&gt;47.3% (42.4–53.2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;9&lt;/th&gt;&lt;td&gt;47.3% (42.4–53.2)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a line with a band. a hundred and twenty-three of the blog's files, the frame's and the pieces', each gzipped at all nine levels: the line is the middle file, and the band holds the middle half of them. what a level buys is small beside what sets one file apart from the next, and past level five it buys nothing.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;some numbers do not slope. a count stays where it is until something changes it, and &lt;code&gt;class=&quot;lines stepped&quot;&lt;/code&gt; draws it that way:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;lines stepped&quot;&gt;
&lt;caption&gt;pieces an article can call for&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;pieces&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;27&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;32&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#74&lt;/th&gt;&lt;td&gt;37&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#76&lt;/th&gt;&lt;td&gt;39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#78&lt;/th&gt;&lt;td&gt;42&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#80&lt;/th&gt;&lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#82&lt;/th&gt;&lt;td&gt;47&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#84&lt;/th&gt;&lt;td&gt;49&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#86&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#88&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#90&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#92&lt;/th&gt;&lt;td&gt;58&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#94&lt;/th&gt;&lt;td&gt;60&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#96&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#98&lt;/th&gt;&lt;td&gt;66&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#100&lt;/th&gt;&lt;td&gt;68&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a stepped line. the count stood at seven for a while. the jump at #48 is one piece becoming six, a core and each form of chart fetched on its own by the articles that draw it, and every step since is new things an article can use, each a piece of its own.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;two columns of numbers make a scatter with &lt;code&gt;class=&quot;dots&quot;&lt;/code&gt;: across by the first, up by the second. the rows picked out are named, and the rest go grey.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;dots&quot;&gt;
&lt;caption&gt;length against weight, file by file&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;lines&lt;/th&gt;&lt;th&gt;kb gzipped&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;index.html&lt;/th&gt;&lt;td&gt;89&lt;/td&gt;&lt;td&gt;1.30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;align.css&lt;/th&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;0.31&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;areas.css&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0.15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;aside.css&lt;/th&gt;&lt;td&gt;94&lt;/td&gt;&lt;td&gt;0.92&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars.css&lt;/th&gt;&lt;td&gt;110&lt;/td&gt;&lt;td&gt;0.96&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blocks.css&lt;/th&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;0.38&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;board.css&lt;/th&gt;&lt;td&gt;82&lt;/td&gt;&lt;td&gt;0.61&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;callouts.css&lt;/th&gt;&lt;td&gt;68&lt;/td&gt;&lt;td&gt;0.63&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;card.css&lt;/th&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;0.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;chart.css&lt;/th&gt;&lt;td&gt;205&lt;/td&gt;&lt;td&gt;1.38&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chat.css&lt;/th&gt;&lt;td&gt;104&lt;/td&gt;&lt;td&gt;0.93&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chem.css&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;0.19&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clade.css&lt;/th&gt;&lt;td&gt;108&lt;/td&gt;&lt;td&gt;0.88&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clip.css&lt;/th&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;0.60&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code.css&lt;/th&gt;&lt;td&gt;180&lt;/td&gt;&lt;td&gt;1.22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;compare.css&lt;/th&gt;&lt;td&gt;120&lt;/td&gt;&lt;td&gt;0.93&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;days.css&lt;/th&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;0.56&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;delta.css&lt;/th&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;0.26&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump.css&lt;/th&gt;&lt;td&gt;218&lt;/td&gt;&lt;td&gt;1.52&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;events.css&lt;/th&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;0.52&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;facing.css&lt;/th&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;0.36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;fig.css&lt;/th&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;0.22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;files.css&lt;/th&gt;&lt;td&gt;91&lt;/td&gt;&lt;td&gt;0.96&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flow.css&lt;/th&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;0.60&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flows.css&lt;/th&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;0.52&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;frames.css&lt;/th&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;0.82&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gloss.css&lt;/th&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;0.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glossary.css&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;0.60&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph.css&lt;/th&gt;&lt;td&gt;109&lt;/td&gt;&lt;td&gt;0.83&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;heat.css&lt;/th&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;0.41&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hist.css&lt;/th&gt;&lt;td&gt;110&lt;/td&gt;&lt;td&gt;0.77&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image.css&lt;/th&gt;&lt;td&gt;144&lt;/td&gt;&lt;td&gt;1.12&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob.css&lt;/th&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;0.45&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing.css&lt;/th&gt;&lt;td&gt;103&lt;/td&gt;&lt;td&gt;0.81&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;marks.css&lt;/th&gt;&lt;td&gt;135&lt;/td&gt;&lt;td&gt;1.06&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math.css&lt;/th&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;0.62&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matrix.css&lt;/th&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;0.38&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes.css&lt;/th&gt;&lt;td&gt;126&lt;/td&gt;&lt;td&gt;1.20&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;of.css&lt;/th&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;0.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pad.css&lt;/th&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;0.46&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pair.css&lt;/th&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;0.34&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pixel.css&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;0.47&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;plot.css&lt;/th&gt;&lt;td&gt;209&lt;/td&gt;&lt;td&gt;1.31&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qty.css&lt;/th&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;0.25&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;range.css&lt;/th&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;0.57&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;revise.css&lt;/th&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;0.74&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;say.css&lt;/th&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;0.26&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scale.css&lt;/th&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;0.39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;search.css&lt;/th&gt;&lt;td&gt;204&lt;/td&gt;&lt;td&gt;1.25&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;set.css&lt;/th&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;0.64&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;site.css&lt;/th&gt;&lt;td&gt;1,051&lt;/td&gt;&lt;td&gt;5.11&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sky.css&lt;/th&gt;&lt;td&gt;87&lt;/td&gt;&lt;td&gt;0.77&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;slope.css&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;0.39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sort.css&lt;/th&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;0.48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;source.css&lt;/th&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;0.44&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spans.css&lt;/th&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;0.60&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spark.css&lt;/th&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;0.30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spoiler.css&lt;/th&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;0.30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;steps.css&lt;/th&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;0.50&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sum.css&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0.21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tabs.css&lt;/th&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;0.47&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tiles.css&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;0.64&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens.css&lt;/th&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;0.63&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;trace.css&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0.17&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tree.css&lt;/th&gt;&lt;td&gt;125&lt;/td&gt;&lt;td&gt;0.91&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;treemap.css&lt;/th&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;0.72&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;align.js&lt;/th&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;1.14&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;areas.js&lt;/th&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;1.18&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars.js&lt;/th&gt;&lt;td&gt;106&lt;/td&gt;&lt;td&gt;1.95&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blocks.js&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;1.37&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;board.js&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;0.67&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;callouts.js&lt;/th&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;0.44&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.js&lt;/th&gt;&lt;td&gt;214&lt;/td&gt;&lt;td&gt;3.93&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chat.js&lt;/th&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;0.77&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chem.js&lt;/th&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clade.js&lt;/th&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;1.39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clip.js&lt;/th&gt;&lt;td&gt;58&lt;/td&gt;&lt;td&gt;1.06&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;code.js&lt;/th&gt;&lt;td&gt;210&lt;/td&gt;&lt;td&gt;3.24&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;compare.js&lt;/th&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;0.90&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;curve.js&lt;/th&gt;&lt;td&gt;92&lt;/td&gt;&lt;td&gt;2.08&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;days.js&lt;/th&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;1.28&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;delta.js&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0.33&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dots.js&lt;/th&gt;&lt;td&gt;105&lt;/td&gt;&lt;td&gt;2.42&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump.js&lt;/th&gt;&lt;td&gt;171&lt;/td&gt;&lt;td&gt;3.22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;events.js&lt;/th&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;0.81&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;files.js&lt;/th&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;0.48&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flows.js&lt;/th&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;1.61&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;frames.js&lt;/th&gt;&lt;td&gt;84&lt;/td&gt;&lt;td&gt;1.40&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glossary.js&lt;/th&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;0.75&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph.js&lt;/th&gt;&lt;td&gt;95&lt;/td&gt;&lt;td&gt;1.98&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;heat.js&lt;/th&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;0.74&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hist.js&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;1.59&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image.js&lt;/th&gt;&lt;td&gt;62&lt;/td&gt;&lt;td&gt;1.36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;keys.js&lt;/th&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;0.98&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob.js&lt;/th&gt;&lt;td&gt;124&lt;/td&gt;&lt;td&gt;2.21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;lines.js&lt;/th&gt;&lt;td&gt;110&lt;/td&gt;&lt;td&gt;2.37&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing.js&lt;/th&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;1.86&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;look.js&lt;/th&gt;&lt;td&gt;85&lt;/td&gt;&lt;td&gt;1.54&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;map.js&lt;/th&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;0.81&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;marks.js&lt;/th&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;1.08&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matrix.js&lt;/th&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0.39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes.js&lt;/th&gt;&lt;td&gt;93&lt;/td&gt;&lt;td&gt;1.68&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;of.js&lt;/th&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;0.72&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pixel.js&lt;/th&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;0.80&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qty.js&lt;/th&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0.49&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;range.js&lt;/th&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;0.85&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;revise.js&lt;/th&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;0.50&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;say.js&lt;/th&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;0.54&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scale.js&lt;/th&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;0.76&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;search.js&lt;/th&gt;&lt;td&gt;154&lt;/td&gt;&lt;td&gt;3.04&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;seq.js&lt;/th&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;0.78&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;site.js&lt;/th&gt;&lt;td&gt;425&lt;/td&gt;&lt;td&gt;5.50&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sky.js&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;1.72&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;slope.js&lt;/th&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;1.46&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sort.js&lt;/th&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;0.98&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spans.js&lt;/th&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;1.39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spark.js&lt;/th&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;0.55&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spoiler.js&lt;/th&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;0.44&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tabs.js&lt;/th&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;0.84&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tiles.js&lt;/th&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;1.15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens.js&lt;/th&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;1.05&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;trace.js&lt;/th&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0.36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;treemap.js&lt;/th&gt;&lt;td&gt;90&lt;/td&gt;&lt;td&gt;1.76&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;dots: every file of the frame and its pieces, a hundred and twenty-three of them, by how long it is and what it weighs. four are picked out, two stylesheets and two scripts. a line of script weighs about two and a half times a line of styles.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;some numbers need another kind of scale. &lt;code&gt;data-log&lt;/code&gt; counts in powers of ten, for what spans several of them, and &lt;code&gt;data-flip&lt;/code&gt; runs a scale backwards, for measures where less is more. each names the axis it is for, &lt;code&gt;x&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt; or both. a third column of numbers sizes the dots, and the area of a dot is what carries the number.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;dots&quot; data-log=&quot;x&quot; data-flip=&quot;y&quot; data-line=&quot;6.5, the faintest the unaided eye can see&quot;&gt;
&lt;caption&gt;the planets at their brightest&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;planet&lt;/th&gt;&lt;th&gt;distance from the sun, in au&lt;/th&gt;&lt;th&gt;magnitude at its brightest&lt;/th&gt;&lt;th&gt;diameter&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mercury&lt;/th&gt;&lt;td&gt;0.387&lt;/td&gt;&lt;td&gt;−2.48&lt;/td&gt;&lt;td&gt;0.383&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;venus&lt;/th&gt;&lt;td&gt;0.723&lt;/td&gt;&lt;td&gt;−4.92&lt;/td&gt;&lt;td&gt;0.949&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mars&lt;/th&gt;&lt;td&gt;1.52&lt;/td&gt;&lt;td&gt;−2.94&lt;/td&gt;&lt;td&gt;0.532&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;jupiter&lt;/th&gt;&lt;td&gt;5.20&lt;/td&gt;&lt;td&gt;−2.94&lt;/td&gt;&lt;td&gt;11.21&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;saturn&lt;/th&gt;&lt;td&gt;9.57&lt;/td&gt;&lt;td&gt;−0.55&lt;/td&gt;&lt;td&gt;9.45&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;uranus&lt;/th&gt;&lt;td&gt;19.17&lt;/td&gt;&lt;td&gt;5.38&lt;/td&gt;&lt;td&gt;4.01&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;neptune&lt;/th&gt;&lt;td&gt;30.18&lt;/td&gt;&lt;td&gt;7.67&lt;/td&gt;&lt;td&gt;3.88&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;dots across powers of ten and up a scale that runs backwards: a magnitude is smaller the brighter a thing is. distance and diameter are in earths (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/williams-2025&quot;&gt;williams 2025&lt;/a&gt;), brightness is as seen from here (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/mallama-2018&quot;&gt;mallama and hilton 2018&lt;/a&gt;). jupiter is over three times as far from the sun as mars and exactly as bright, being twenty-one times as wide. neptune is the one planet below the rule.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;dots joined&quot;&lt;/code&gt; draws a line through the points in the order of the rows. a line chart spaces its rows evenly, whatever they are called. this one puts each where its number says, so it is the form for a line over uneven time, and with the two scales above, for time counted backwards.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;dots joined&quot; data-flip=&quot;x&quot; data-log=&quot;x&quot;&gt;
&lt;caption&gt;the frame's weight against the clock&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;after&lt;/th&gt;&lt;th&gt;hours before pull request #72&lt;/th&gt;&lt;th&gt;the frame&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#6&lt;/th&gt;&lt;td&gt;14.56 h&lt;/td&gt;&lt;td&gt;9.86 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#7&lt;/th&gt;&lt;td&gt;14.53 h&lt;/td&gt;&lt;td&gt;9.85 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#10&lt;/th&gt;&lt;td&gt;13.78 h&lt;/td&gt;&lt;td&gt;10.65 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#22&lt;/th&gt;&lt;td&gt;13.33 h&lt;/td&gt;&lt;td&gt;10.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#23&lt;/th&gt;&lt;td&gt;13.26 h&lt;/td&gt;&lt;td&gt;10.54 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#24&lt;/th&gt;&lt;td&gt;13.20 h&lt;/td&gt;&lt;td&gt;10.55 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#25&lt;/th&gt;&lt;td&gt;13.10 h&lt;/td&gt;&lt;td&gt;10.70 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#26&lt;/th&gt;&lt;td&gt;12.99 h&lt;/td&gt;&lt;td&gt;10.77 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#27&lt;/th&gt;&lt;td&gt;12.96 h&lt;/td&gt;&lt;td&gt;10.84 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#28&lt;/th&gt;&lt;td&gt;12.88 h&lt;/td&gt;&lt;td&gt;10.88 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#29&lt;/th&gt;&lt;td&gt;12.80 h&lt;/td&gt;&lt;td&gt;10.89 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#30&lt;/th&gt;&lt;td&gt;12.75 h&lt;/td&gt;&lt;td&gt;11.36 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#32&lt;/th&gt;&lt;td&gt;12.72 h&lt;/td&gt;&lt;td&gt;11.45 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#33&lt;/th&gt;&lt;td&gt;12.68 h&lt;/td&gt;&lt;td&gt;11.53 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#35&lt;/th&gt;&lt;td&gt;12.41 h&lt;/td&gt;&lt;td&gt;11.65 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#46&lt;/th&gt;&lt;td&gt;2.36 h&lt;/td&gt;&lt;td&gt;11.37 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#48&lt;/th&gt;&lt;td&gt;2.30 h&lt;/td&gt;&lt;td&gt;11.39 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#52&lt;/th&gt;&lt;td&gt;1.74 h&lt;/td&gt;&lt;td&gt;11.42 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#54&lt;/th&gt;&lt;td&gt;1.66 h&lt;/td&gt;&lt;td&gt;11.44 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#56&lt;/th&gt;&lt;td&gt;1.39 h&lt;/td&gt;&lt;td&gt;11.48 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#58&lt;/th&gt;&lt;td&gt;1.24 h&lt;/td&gt;&lt;td&gt;11.50 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#60&lt;/th&gt;&lt;td&gt;1.11 h&lt;/td&gt;&lt;td&gt;11.51 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#62&lt;/th&gt;&lt;td&gt;0.70 h&lt;/td&gt;&lt;td&gt;11.54 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#66&lt;/th&gt;&lt;td&gt;0.46 h&lt;/td&gt;&lt;td&gt;11.76 kb&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;#68&lt;/th&gt;&lt;td&gt;0.29 h&lt;/td&gt;&lt;td&gt;11.80 kb&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;joined dots, on a scale that runs backwards in powers of ten. the first twenty-five steps of &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/charts&quot;&gt;the line further up&lt;/a&gt;, as far as #68, placed by when each was merged instead of one after another: fifteen in the first two hours, a night with nothing, and ten in the last two and a half hours, which this scale gives most of the room.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;with one column of numbers, &lt;code&gt;class=&quot;dots&quot;&lt;/code&gt; gives each row a line of its own: a point where its number falls, its interval through it, and the number as written at the end. unlike a bar, a point does not start from zero, so it can sit on either side of a rule.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;dots&quot; data-log data-line=&quot;1, no slower&quot;&gt;
&lt;caption&gt;time to gzip at level nine, over time at level six&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;times as long&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;feed.xml&lt;/th&gt;&lt;td&gt;3.20 (3.19–3.21)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;this article&lt;/th&gt;&lt;td&gt;1.68 (1.68–1.69)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the model league&lt;/th&gt;&lt;td&gt;1.62 (1.60–1.63)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.css&lt;/th&gt;&lt;td&gt;1.18 (1.16–1.20)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.js&lt;/th&gt;&lt;td&gt;1.08 (1.07–1.09)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.js&lt;/th&gt;&lt;td&gt;1.04 (1.02–1.04)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code.js&lt;/th&gt;&lt;td&gt;1.11 (1.10–1.12)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;lines.js&lt;/th&gt;&lt;td&gt;1.04 (1.03–1.05)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes.css&lt;/th&gt;&lt;td&gt;1.01 (1.00–1.02)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars.css&lt;/th&gt;&lt;td&gt;1.01 (0.98–1.05)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;estimates and their intervals, the largest file first. each file was gzipped thirty times at both levels, and the number is one middle time over the other, with the interval that 95 in 100 resamplings of those runs fall in. the large files pay for the higher level. for the two smallest the interval reaches the rule: no difference can be told from none.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;blocks&quot;&lt;/code&gt; is for things that lie in an order and take up room: the sections of a file, the functions of a binary, what a page sends. each row is a name, a size and a kind. they are drawn as one long strip cut into rows, every block as wide as its size and tinted by its kind, and the legend says what share each kind comes to.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;blocks&quot; data-rows=&quot;6&quot;&gt;
&lt;caption&gt;what a first visit to this page weighs, in the order it arrives&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;file&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;th&gt;part&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;index.html&lt;/th&gt;&lt;td&gt;1,334&lt;/td&gt;&lt;td&gt;the frame&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;newsreader.woff2&lt;/th&gt;&lt;td&gt;58,084&lt;/td&gt;&lt;td&gt;fonts&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.css&lt;/th&gt;&lt;td&gt;5,230&lt;/td&gt;&lt;td&gt;the frame&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;site.js&lt;/th&gt;&lt;td&gt;5,627&lt;/td&gt;&lt;td&gt;the frame&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;this article&lt;/th&gt;&lt;td&gt;51,392&lt;/td&gt;&lt;td&gt;this article&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code.js&lt;/th&gt;&lt;td&gt;3,318&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code.css&lt;/th&gt;&lt;td&gt;1,251&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pair.css&lt;/th&gt;&lt;td&gt;346&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;callouts.js&lt;/th&gt;&lt;td&gt;451&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;callouts.css&lt;/th&gt;&lt;td&gt;645&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tabs.js&lt;/th&gt;&lt;td&gt;864&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tabs.css&lt;/th&gt;&lt;td&gt;478&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing.js&lt;/th&gt;&lt;td&gt;1,909&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;listing.css&lt;/th&gt;&lt;td&gt;829&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.js&lt;/th&gt;&lt;td&gt;4,028&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chart.css&lt;/th&gt;&lt;td&gt;1,415&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars.js&lt;/th&gt;&lt;td&gt;1,996&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bars.css&lt;/th&gt;&lt;td&gt;980&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;lines.js&lt;/th&gt;&lt;td&gt;2,422&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dots.js&lt;/th&gt;&lt;td&gt;2,481&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;plot.css&lt;/th&gt;&lt;td&gt;1,342&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;areas.js&lt;/th&gt;&lt;td&gt;1,213&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;areas.css&lt;/th&gt;&lt;td&gt;155&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;slope.js&lt;/th&gt;&lt;td&gt;1,500&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;slope.css&lt;/th&gt;&lt;td&gt;403&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hist.js&lt;/th&gt;&lt;td&gt;1,628&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hist.css&lt;/th&gt;&lt;td&gt;784&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flows.js&lt;/th&gt;&lt;td&gt;1,653&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flows.css&lt;/th&gt;&lt;td&gt;531&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;treemap.js&lt;/th&gt;&lt;td&gt;1,805&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;treemap.css&lt;/th&gt;&lt;td&gt;742&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph.js&lt;/th&gt;&lt;td&gt;2,024&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;graph.css&lt;/th&gt;&lt;td&gt;845&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;flow.css&lt;/th&gt;&lt;td&gt;614&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clade.js&lt;/th&gt;&lt;td&gt;1,428&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clade.css&lt;/th&gt;&lt;td&gt;901&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;events.js&lt;/th&gt;&lt;td&gt;828&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;events.css&lt;/th&gt;&lt;td&gt;531&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blocks.js&lt;/th&gt;&lt;td&gt;1,404&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;blocks.css&lt;/th&gt;&lt;td&gt;387&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;days.js&lt;/th&gt;&lt;td&gt;1,307&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;days.css&lt;/th&gt;&lt;td&gt;572&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spark.js&lt;/th&gt;&lt;td&gt;561&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spark.css&lt;/th&gt;&lt;td&gt;307&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;range.js&lt;/th&gt;&lt;td&gt;875&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;range.css&lt;/th&gt;&lt;td&gt;587&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spans.js&lt;/th&gt;&lt;td&gt;1,424&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spans.css&lt;/th&gt;&lt;td&gt;611&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;of.js&lt;/th&gt;&lt;td&gt;739&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;of.css&lt;/th&gt;&lt;td&gt;501&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;heat.js&lt;/th&gt;&lt;td&gt;761&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;heat.css&lt;/th&gt;&lt;td&gt;420&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sort.js&lt;/th&gt;&lt;td&gt;1,008&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sort.css&lt;/th&gt;&lt;td&gt;494&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;delta.js&lt;/th&gt;&lt;td&gt;334&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;delta.css&lt;/th&gt;&lt;td&gt;263&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qty.js&lt;/th&gt;&lt;td&gt;502&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qty.css&lt;/th&gt;&lt;td&gt;257&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pad.css&lt;/th&gt;&lt;td&gt;468&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tree.css&lt;/th&gt;&lt;td&gt;929&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;steps.css&lt;/th&gt;&lt;td&gt;515&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spoiler.js&lt;/th&gt;&lt;td&gt;451&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;spoiler.css&lt;/th&gt;&lt;td&gt;312&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;revise.js&lt;/th&gt;&lt;td&gt;516&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;revise.css&lt;/th&gt;&lt;td&gt;761&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;aside.css&lt;/th&gt;&lt;td&gt;939&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;math.css&lt;/th&gt;&lt;td&gt;631&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image.js&lt;/th&gt;&lt;td&gt;1,391&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;image.css&lt;/th&gt;&lt;td&gt;1,146&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;marks.js&lt;/th&gt;&lt;td&gt;1,107&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;marks.css&lt;/th&gt;&lt;td&gt;1,081&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;compare.js&lt;/th&gt;&lt;td&gt;917&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;compare.css&lt;/th&gt;&lt;td&gt;948&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pixel.js&lt;/th&gt;&lt;td&gt;817&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;pixel.css&lt;/th&gt;&lt;td&gt;485&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clip.js&lt;/th&gt;&lt;td&gt;1,090&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;clip.css&lt;/th&gt;&lt;td&gt;616&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes.js&lt;/th&gt;&lt;td&gt;1,722&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;notes.css&lt;/th&gt;&lt;td&gt;1,224&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump.js&lt;/th&gt;&lt;td&gt;3,297&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;dump.css&lt;/th&gt;&lt;td&gt;1,553&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;seq.js&lt;/th&gt;&lt;td&gt;796&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;align.js&lt;/th&gt;&lt;td&gt;1,170&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;align.css&lt;/th&gt;&lt;td&gt;315&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;map.js&lt;/th&gt;&lt;td&gt;829&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;files.js&lt;/th&gt;&lt;td&gt;494&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;files.css&lt;/th&gt;&lt;td&gt;987&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matrix.js&lt;/th&gt;&lt;td&gt;395&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matrix.css&lt;/th&gt;&lt;td&gt;391&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;trace.js&lt;/th&gt;&lt;td&gt;373&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;trace.css&lt;/th&gt;&lt;td&gt;176&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gloss.css&lt;/th&gt;&lt;td&gt;502&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;facing.css&lt;/th&gt;&lt;td&gt;372&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;source.css&lt;/th&gt;&lt;td&gt;452&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;say.js&lt;/th&gt;&lt;td&gt;554&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;say.css&lt;/th&gt;&lt;td&gt;262&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chat.js&lt;/th&gt;&lt;td&gt;792&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chat.css&lt;/th&gt;&lt;td&gt;951&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens.js&lt;/th&gt;&lt;td&gt;1,073&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens.css&lt;/th&gt;&lt;td&gt;643&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;board.js&lt;/th&gt;&lt;td&gt;690&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;board.css&lt;/th&gt;&lt;td&gt;629&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;frames.js&lt;/th&gt;&lt;td&gt;1,434&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;frames.css&lt;/th&gt;&lt;td&gt;840&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;card.css&lt;/th&gt;&lt;td&gt;506&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scale.js&lt;/th&gt;&lt;td&gt;782&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;scale.css&lt;/th&gt;&lt;td&gt;396&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;set.css&lt;/th&gt;&lt;td&gt;656&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sky.js&lt;/th&gt;&lt;td&gt;1,758&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sky.css&lt;/th&gt;&lt;td&gt;785&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tiles.js&lt;/th&gt;&lt;td&gt;1,176&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tiles.css&lt;/th&gt;&lt;td&gt;656&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chem.js&lt;/th&gt;&lt;td&gt;505&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chem.css&lt;/th&gt;&lt;td&gt;195&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob.js&lt;/th&gt;&lt;td&gt;2,267&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knob.css&lt;/th&gt;&lt;td&gt;463&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;curve.js&lt;/th&gt;&lt;td&gt;2,131&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sum.css&lt;/th&gt;&lt;td&gt;211&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glossary.js&lt;/th&gt;&lt;td&gt;764&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glossary.css&lt;/th&gt;&lt;td&gt;614&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;fig.css&lt;/th&gt;&lt;td&gt;224&lt;/td&gt;&lt;td&gt;its pieces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;newsreader-italic.woff2&lt;/th&gt;&lt;td&gt;64,520&lt;/td&gt;&lt;td&gt;fonts&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;blocks. text is weighed gzipped and the fonts as they are stored. the colours are the ones in the table of spans above.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;days&quot;&lt;/code&gt; is for a number a day: a date in the first column, written year first, and a value in the second. it is drawn as a calendar, a column for each week with monday at the top, and each day is tinted by its number in one hue. the pointer reads a day off it.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;days&quot; data-max=&quot;100&quot;&gt;
&lt;caption&gt;how much of the moon is lit, night by night&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;night&lt;/th&gt;&lt;th&gt;lit&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-01&lt;/th&gt;&lt;td&gt;78%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-02&lt;/th&gt;&lt;td&gt;68%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-03&lt;/th&gt;&lt;td&gt;57%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-04&lt;/th&gt;&lt;td&gt;45%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-05&lt;/th&gt;&lt;td&gt;34%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-06&lt;/th&gt;&lt;td&gt;24%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-07&lt;/th&gt;&lt;td&gt;15%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-08&lt;/th&gt;&lt;td&gt;8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-09&lt;/th&gt;&lt;td&gt;3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-10&lt;/th&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-11&lt;/th&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-12&lt;/th&gt;&lt;td&gt;2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-13&lt;/th&gt;&lt;td&gt;6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-14&lt;/th&gt;&lt;td&gt;11%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-15&lt;/th&gt;&lt;td&gt;18%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-16&lt;/th&gt;&lt;td&gt;26%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-17&lt;/th&gt;&lt;td&gt;34%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-18&lt;/th&gt;&lt;td&gt;44%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-19&lt;/th&gt;&lt;td&gt;53%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-20&lt;/th&gt;&lt;td&gt;63%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-21&lt;/th&gt;&lt;td&gt;72%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-22&lt;/th&gt;&lt;td&gt;80%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-23&lt;/th&gt;&lt;td&gt;88%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-24&lt;/th&gt;&lt;td&gt;94%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-25&lt;/th&gt;&lt;td&gt;98%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-26&lt;/th&gt;&lt;td&gt;100%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-27&lt;/th&gt;&lt;td&gt;99%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-28&lt;/th&gt;&lt;td&gt;96%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-29&lt;/th&gt;&lt;td&gt;89%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-30&lt;/th&gt;&lt;td&gt;81%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-10-31&lt;/th&gt;&lt;td&gt;71%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-01&lt;/th&gt;&lt;td&gt;60%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-02&lt;/th&gt;&lt;td&gt;49%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-03&lt;/th&gt;&lt;td&gt;38%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-04&lt;/th&gt;&lt;td&gt;27%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-05&lt;/th&gt;&lt;td&gt;18%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-06&lt;/th&gt;&lt;td&gt;11%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-07&lt;/th&gt;&lt;td&gt;5%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-08&lt;/th&gt;&lt;td&gt;2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-09&lt;/th&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-10&lt;/th&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-11&lt;/th&gt;&lt;td&gt;3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-12&lt;/th&gt;&lt;td&gt;7%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-13&lt;/th&gt;&lt;td&gt;12%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-14&lt;/th&gt;&lt;td&gt;19%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-15&lt;/th&gt;&lt;td&gt;27%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-16&lt;/th&gt;&lt;td&gt;36%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-17&lt;/th&gt;&lt;td&gt;45%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-18&lt;/th&gt;&lt;td&gt;55%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-19&lt;/th&gt;&lt;td&gt;65%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-20&lt;/th&gt;&lt;td&gt;74%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-21&lt;/th&gt;&lt;td&gt;83%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-22&lt;/th&gt;&lt;td&gt;91%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-23&lt;/th&gt;&lt;td&gt;96%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-24&lt;/th&gt;&lt;td&gt;99%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-25&lt;/th&gt;&lt;td&gt;100%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-26&lt;/th&gt;&lt;td&gt;97%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-27&lt;/th&gt;&lt;td&gt;92%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-28&lt;/th&gt;&lt;td&gt;84%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-29&lt;/th&gt;&lt;td&gt;75%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-11-30&lt;/th&gt;&lt;td&gt;64%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-01&lt;/th&gt;&lt;td&gt;53%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-02&lt;/th&gt;&lt;td&gt;42%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-03&lt;/th&gt;&lt;td&gt;32%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-04&lt;/th&gt;&lt;td&gt;23%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-05&lt;/th&gt;&lt;td&gt;15%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-06&lt;/th&gt;&lt;td&gt;9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-07&lt;/th&gt;&lt;td&gt;4%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-08&lt;/th&gt;&lt;td&gt;1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-09&lt;/th&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-10&lt;/th&gt;&lt;td&gt;1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-11&lt;/th&gt;&lt;td&gt;3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-12&lt;/th&gt;&lt;td&gt;8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-13&lt;/th&gt;&lt;td&gt;13%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-14&lt;/th&gt;&lt;td&gt;20%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-15&lt;/th&gt;&lt;td&gt;29%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-16&lt;/th&gt;&lt;td&gt;38%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-17&lt;/th&gt;&lt;td&gt;48%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-18&lt;/th&gt;&lt;td&gt;58%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-19&lt;/th&gt;&lt;td&gt;68%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-20&lt;/th&gt;&lt;td&gt;78%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-21&lt;/th&gt;&lt;td&gt;87%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-22&lt;/th&gt;&lt;td&gt;94%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-23&lt;/th&gt;&lt;td&gt;98%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-24&lt;/th&gt;&lt;td&gt;100%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-25&lt;/th&gt;&lt;td&gt;99%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-26&lt;/th&gt;&lt;td&gt;94%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-27&lt;/th&gt;&lt;td&gt;88%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-28&lt;/th&gt;&lt;td&gt;79%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-29&lt;/th&gt;&lt;td&gt;69%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-30&lt;/th&gt;&lt;td&gt;58%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;2026-12-31&lt;/th&gt;&lt;td&gt;48%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a calendar: the last three months of 2026, each night at midnight, universal time, worked out the way &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/meeus&quot;&gt;meeus 1998&lt;/a&gt; sets down. the moon keeps to neither weeks nor months, so its full nights step down the columns from one month to the next.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and a share can be counted out. a paragraph with &lt;code&gt;class=&quot;of&quot;&lt;/code&gt; that says &lt;q&gt;8 in 100&lt;/q&gt; gets a hundred dots over it, eight of them filled. several in one figure sit side by side.&lt;/p&gt;

&lt;figure&gt;
&lt;p class=&quot;of&quot;&gt;8 in 100 men of european descent see red and green less apart than most people do.&lt;/p&gt;
&lt;p class=&quot;of&quot;&gt;4 in 1,000 women do.&lt;/p&gt;
&lt;figcaption&gt;shares counted out, from &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/birch-2012&quot;&gt;birch 2012&lt;/a&gt;. this is who the four chart inks were measured for.&lt;sup&gt;&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-inks&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and a line can sit in a sentence. the frame went from 9.9 kb to 11.5 &lt;span class=&quot;spark&quot;&gt;9.86 9.85 10.65 10.51 10.54 10.55 10.70 10.77 10.84 10.88 10.89 11.36 11.45 11.53 11.65 11.37 11.39 11.42 11.44 11.48 11.50 11.51 11.54 11.76 11.80 11.80 11.82 11.85 11.87 11.88 11.89 11.92 11.46 11.55&lt;/span&gt; in thirty-four steps. a sparkline has no axis and no scale: it says which way something went, so the numbers that matter belong in the words around it (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tufte-2006&quot;&gt;tufte 2006&lt;/a&gt;).&lt;/p&gt;

&lt;pre data-label=&quot;the sentence above&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;the frame went from 9.9 kb to 11.5
&amp;lt;span class=&quot;spark&quot;&amp;gt;9.86 9.85 10.65 10.51 … 11.55&amp;lt;/span&amp;gt; in thirty-four steps.&lt;/code&gt;&lt;/pre&gt;

&lt;aside&gt;
&lt;p&gt;&lt;strong&gt;one scale to a chart.&lt;/strong&gt; two measures on different scales are two charts, never one chart with two axes. bars always start at zero, which is why they take no scale of powers of ten: it has no zero to start from. a line chart starts at zero when zero is near, and where the numbers start when it is not.&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;some charts are drawn from the things themselves instead of from a summary of them. the table has a row for each thing that was measured, and the class says what to make of them. &lt;code&gt;class=&quot;hist&quot;&lt;/code&gt; counts the values into bins. &lt;code&gt;class=&quot;box&quot;&lt;/code&gt; gives each name a box: the middle half of its values, a line at their median, and whiskers out to the smallest and the largest. a table can ask for both, and then they share a scale.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;hist box&quot; data-log&gt;
&lt;caption&gt;how many lines a pull request changes&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;kind of pull request&lt;/th&gt;&lt;th&gt;lines added and removed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;1,933&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;940&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;434&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;62&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;275&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;76&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;346&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;344&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;77&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;113&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;140&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;1,059&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;538&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;758&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;284&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;583&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;496&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;399&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;711&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;147&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;504&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td&gt;250&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td&gt;861&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td&gt;537&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td&gt;655&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td&gt;744&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;316&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;114&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;210&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;19&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a histogram over three boxes, in powers of ten. the thirty-five pull requests of the blog's first day, counted by &lt;code&gt;git log --numstat&lt;/code&gt; with the feed left out, since a script writes it. the small number beside a name is how many it has. half of them changed fewer than three hundred lines, and a new feature is seldom small.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;class=&quot;flows&quot;&lt;/code&gt; is for what goes from one place to another. each row is a source, a destination and an amount, and each becomes a band as thick as its amount, between boxes as tall as everything that passes through them. a destination that is the source of another row gets a column of its own, further right.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;flows&quot;&gt;
&lt;caption&gt;a day of work, by what it was for and where its lines landed&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;kind of pull request&lt;/th&gt;&lt;th class=&quot;l&quot;&gt;where&lt;/th&gt;&lt;th&gt;lines added and removed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the pieces&lt;/td&gt;&lt;td&gt;5,977&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the frame&lt;/td&gt;&lt;td&gt;1,987&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the articles&lt;/td&gt;&lt;td&gt;925&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the scripts&lt;/td&gt;&lt;td&gt;919&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;new features&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the readme and the flow&lt;/td&gt;&lt;td&gt;661&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the articles&lt;/td&gt;&lt;td&gt;2,762&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;articles&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the frame&lt;/td&gt;&lt;td&gt;35&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the readme and the flow&lt;/td&gt;&lt;td&gt;346&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the pieces&lt;/td&gt;&lt;td&gt;257&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the frame&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the scripts&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;upkeep&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;the articles&lt;/td&gt;&lt;td&gt;36&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;flows. the same thirty-five pull requests, and the 13,996 lines they changed. the widest band is new features going into the pieces. the surprise is the third from the top: almost a thousand lines of new features went into articles, because each feature is shown on this page as it is built.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a nested list with a number on each leaf, &lt;code&gt;&amp;lt;ul class=&quot;treemap&quot;&amp;gt;&lt;/code&gt;, is drawn as tiles whose areas are the numbers, each group in its own ink. it shows at a glance what a bar chart of fourteen rows makes the eye add up: how much each group comes to. the list stays behind the drawing, one click away.&lt;/p&gt;

&lt;figure&gt;
&lt;ul class=&quot;treemap&quot;&gt;
&lt;li&gt;&lt;abbr title=&quot;long interspersed nuclear elements&quot;&gt;LINE&lt;/abbr&gt;s
&lt;ul&gt;
&lt;li&gt;l1 &lt;data value=&quot;16.89&quot;&gt;16.89%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;l2 &lt;data value=&quot;3.22&quot;&gt;3.22%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;l3 &lt;data value=&quot;0.31&quot;&gt;0.31%&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;abbr title=&quot;short interspersed nuclear elements&quot;&gt;SINE&lt;/abbr&gt;s
&lt;ul&gt;
&lt;li&gt;alu &lt;data value=&quot;10.60&quot;&gt;10.60%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;mir &lt;data value=&quot;2.20&quot;&gt;2.20%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;mir3 &lt;data value=&quot;0.34&quot;&gt;0.34%&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;retrovirus-like
&lt;ul&gt;
&lt;li&gt;malr &lt;data value=&quot;3.65&quot;&gt;3.65%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;class i &lt;data value=&quot;2.89&quot;&gt;2.89%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;class iii &lt;data value=&quot;1.44&quot;&gt;1.44%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;class ii &lt;data value=&quot;0.31&quot;&gt;0.31%&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;abbr title=&quot;deoxyribonucleic acid&quot;&gt;DNA&lt;/abbr&gt; transposons
&lt;ul&gt;
&lt;li&gt;charlie &lt;data value=&quot;1.39&quot;&gt;1.39%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;tigger &lt;data value=&quot;1.02&quot;&gt;1.02%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;zaphod &lt;data value=&quot;0.16&quot;&gt;0.16%&lt;/data&gt;&lt;/li&gt;
&lt;li&gt;the rest &lt;data value=&quot;0.27&quot;&gt;0.27%&lt;/data&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figcaption&gt;a treemap: the 44.83% of the human genome that is copies of sequences able to copy themselves, by class and family, as the first draft of the genome counted them (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/ihgsc-2001&quot;&gt;international human genome sequencing consortium 2001&lt;/a&gt;, table 11). two families, &lt;var&gt;L1&lt;/var&gt; and &lt;var&gt;Alu&lt;/var&gt;, are more than a quarter of everything we carry.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;two more forms are maps. a &lt;code&gt;&amp;lt;table class=&quot;sky&quot;&amp;gt;&lt;/code&gt; has a row for each star: its right ascension and its declination in degrees, and its magnitude. it is drawn the way an atlas prints the sky, ink on paper, east on the left, a brighter star a larger dot. these are the nine stars marked on the picture of orion, &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/orion-picture&quot;&gt;figure 2&lt;/a&gt;, from the same numbers:&lt;/p&gt;

&lt;figure class=&quot;fig&quot; id=&quot;orion-chart&quot;&gt;
&lt;table class=&quot;sky&quot;&gt;
&lt;caption&gt;orion, from a table&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;star&lt;/th&gt;&lt;th&gt;right ascension&lt;/th&gt;&lt;th&gt;declination&lt;/th&gt;&lt;th&gt;magnitude&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;betelgeuse&lt;/th&gt;&lt;td&gt;88.79&lt;/td&gt;&lt;td&gt;7.41&lt;/td&gt;&lt;td&gt;0.42&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;bellatrix&lt;/th&gt;&lt;td&gt;81.28&lt;/td&gt;&lt;td&gt;6.35&lt;/td&gt;&lt;td&gt;1.64&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;meissa&lt;/th&gt;&lt;td&gt;83.78&lt;/td&gt;&lt;td&gt;9.93&lt;/td&gt;&lt;td&gt;3.66&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mintaka&lt;/th&gt;&lt;td&gt;83.00&lt;/td&gt;&lt;td&gt;−0.30&lt;/td&gt;&lt;td&gt;2.41&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;alnilam&lt;/th&gt;&lt;td&gt;84.05&lt;/td&gt;&lt;td&gt;−1.20&lt;/td&gt;&lt;td&gt;1.69&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;alnitak&lt;/th&gt;&lt;td&gt;85.19&lt;/td&gt;&lt;td&gt;−1.94&lt;/td&gt;&lt;td&gt;1.77&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;saiph&lt;/th&gt;&lt;td&gt;86.94&lt;/td&gt;&lt;td&gt;−9.67&lt;/td&gt;&lt;td&gt;2.06&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;rigel&lt;/th&gt;&lt;td&gt;78.63&lt;/td&gt;&lt;td&gt;−8.20&lt;/td&gt;&lt;td&gt;0.13&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hatysa&lt;/th&gt;&lt;td&gt;83.86&lt;/td&gt;&lt;td&gt;−5.91&lt;/td&gt;&lt;td&gt;2.77&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;b&gt;figure 1.&lt;/b&gt; the chart makes room for the stars it is given. &lt;code&gt;data-frame&lt;/code&gt; on the table pins its edges instead, the way it does for &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/images&quot;&gt;marks&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and a &lt;code&gt;&amp;lt;table class=&quot;tiles&quot;&amp;gt;&lt;/code&gt; draws a map without drawing a coastline. each row is a place, where its tile goes, across and then down, and a number. every place gets a square of one size, tinted by its number, so a small place counts for as much to the eye as a large one. a tile may sit a part of a step along, which staggers the rows. it is made for provinces and countries. here the places are the keys of a keyboard, and the number is how much of this article each letter was on &lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt;, out of 65,487 letters:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;tiles&quot;&gt;
&lt;caption&gt;the letters of this article, where the fingers find them&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;letter&lt;/th&gt;&lt;th&gt;across&lt;/th&gt;&lt;th&gt;down&lt;/th&gt;&lt;th&gt;% of all letters&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;q&lt;/th&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;w&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;e&lt;/th&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;12.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;r&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;5.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;t&lt;/th&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;10.2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;y&lt;/th&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;u&lt;/th&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;i&lt;/th&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;6.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;o&lt;/th&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;6.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;p&lt;/th&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;a&lt;/th&gt;&lt;td&gt;1.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;9.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;s&lt;/th&gt;&lt;td&gt;2.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;d&lt;/th&gt;&lt;td&gt;3.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;f&lt;/th&gt;&lt;td&gt;4.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;g&lt;/th&gt;&lt;td&gt;5.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;h&lt;/th&gt;&lt;td&gt;6.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;5.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;j&lt;/th&gt;&lt;td&gt;7.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;k&lt;/th&gt;&lt;td&gt;8.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;l&lt;/th&gt;&lt;td&gt;9.25&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;4.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;z&lt;/th&gt;&lt;td&gt;1.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;x&lt;/th&gt;&lt;td&gt;2.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;c&lt;/th&gt;&lt;td&gt;3.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3.5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;v&lt;/th&gt;&lt;td&gt;4.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;b&lt;/th&gt;&lt;td&gt;5.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;n&lt;/th&gt;&lt;td&gt;6.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;6.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;m&lt;/th&gt;&lt;td&gt;7.75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2.2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;the sky, and a map of tiles&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;table class=&quot;sky&quot;&amp;gt;
  &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;rigel&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;78.63&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;−8.20&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.13&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;

&amp;lt;table class=&quot;tiles&quot;&amp;gt;
  &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;e&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12.4&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
  &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;a&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;1.25&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9.1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;bytes&lt;/h2&gt;

&lt;p&gt;two drawings take a file format apart. the first is a hex dump: bytes written as pairs of hex digits, set sixteen to a row, or eight where sixteen would not fit, with the offset in front and the same bytes as text behind. these are the first 48 bytes of the font this sentence is set in, a woff2 file (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/woff2&quot;&gt;levantovsky and levien 2018&lt;/a&gt;). its first four spell &lt;code&gt;wOF2&lt;/code&gt;.&lt;/p&gt;

&lt;pre class=&quot;hex&quot; data-label=&quot;assets/fonts/newsreader.woff2&quot;&gt;
&lt;mark data-label=&quot;signature&quot;&gt;77 4f 46 32&lt;/mark&gt; &lt;mark data-label=&quot;flavour: truetype outlines&quot;&gt;00 01 00 00&lt;/mark&gt; &lt;mark data-label=&quot;length of the file: 58,084&quot;&gt;00 00 e2 e4&lt;/mark&gt; &lt;mark data-label=&quot;tables: 20&quot;&gt;00 14&lt;/mark&gt; 00 00
00 01 b2 dc 00 00 e2 71 00 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
&lt;/pre&gt;

&lt;p&gt;a range in a &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt; is tinted in both columns, and named under the dump with where it starts and how long it is. the second drawing is the layout of a header: a table with a row for each field and its size, and above it a strip with every field as wide as it is.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;fields&quot; data-per=&quot;16&quot;&gt;
&lt;caption&gt;the header of a woff2 file, 48 bytes&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;field&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;th&gt;in this file&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;signature&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;&lt;code&gt;wOF2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;flavour&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;truetype outlines&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;length&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;58,084 bytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;d&quot;&gt;&lt;th scope=&quot;row&quot;&gt;tables&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;reserved&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;size unpacked&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;111,324 bytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;size packed&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;57,969 bytes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;major&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1, the version of the format&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;minor&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;metadata offset&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0, there is none&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;metadata length&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;metadata unpacked&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;private offset&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0, there is none&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;private length&lt;/th&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the strip is sixteen bytes to a row, like the dump above it. pointing at a field lights its row in the table.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;with &lt;code&gt;data-unit=&quot;bit&quot;&lt;/code&gt; the same table is a register, or a byte that packs several things. it is written from its highest bit down, as a register is, and the number on each field is the bit it starts at. this is the last byte of the instruction that triples &lt;var&gt;n&lt;/var&gt; in &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;the listing&lt;/a&gt;, &lt;code&gt;48 8d 3c 7f&lt;/code&gt;: the byte that says &lt;q&gt;rdi, plus twice rdi&lt;/q&gt;.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;fields&quot; data-unit=&quot;bit&quot;&gt;
&lt;caption&gt;the byte &lt;code&gt;7f&lt;/code&gt;, as the processor reads it after &lt;code&gt;lea&lt;/code&gt;&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;field&lt;/th&gt;&lt;th&gt;bits&lt;/th&gt;&lt;th&gt;holds&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;which means&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;scale&lt;/th&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the second register is doubled&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;index&lt;/th&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;code&gt;111&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the second register is &lt;code&gt;rdi&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;c&quot;&gt;&lt;th scope=&quot;row&quot;&gt;base&lt;/th&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;code&gt;111&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the first register is &lt;code&gt;rdi&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;eight bits, three fields. the strip counts down from bit seven, the way the manuals draw it.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;both, as written&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;pre class=&quot;hex&quot; data-label=&quot;assets/fonts/newsreader.woff2&quot;&amp;gt;
&amp;lt;mark data-label=&quot;signature&quot;&amp;gt;77 4f 46 32&amp;lt;/mark&amp;gt; &amp;lt;mark data-label=&quot;flavour: truetype outlines&quot;&amp;gt;00 01 00 00&amp;lt;/mark&amp;gt; …
&amp;lt;/pre&amp;gt;

&amp;lt;table class=&quot;fields&quot; data-per=&quot;16&quot;&amp;gt;
  &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;field&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;bytes&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;in this file&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr class=&quot;a&quot;&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;signature&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;wOF2&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    …
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;two dumps in a &lt;code&gt;&amp;lt;figure class=&quot;pair&quot;&amp;gt;&lt;/code&gt; are compared, byte against byte, and the ones that are not the same are picked out in both: on the left in the tint a patch gives to what it takes out, on the right in the tint for what it puts in. the blog has two font files, and their headers begin alike:&lt;/p&gt;

&lt;figure class=&quot;pair&quot;&gt;
&lt;pre class=&quot;hex&quot; data-label=&quot;assets/fonts/newsreader.woff2&quot;&gt;
77 4f 46 32 00 01 00 00 00 00 e2 e4 00 14 00 00
00 01 b2 dc 00 00 e2 71 00 01 00 00 00 00 00 00
&lt;/pre&gt;
&lt;pre class=&quot;hex&quot; data-label=&quot;assets/fonts/newsreader-italic.woff2&quot;&gt;
77 4f 46 32 00 01 00 00 00 00 fc 08 00 14 00 00
00 01 df 48 00 00 fb 94 00 01 00 00 00 00 00 00
&lt;/pre&gt;
&lt;figcaption&gt;the first 32 bytes of the upright and the italic. six bytes differ, two in each of three sizes: the file, its tables unpacked, and its tables packed. everything else in the header is the same.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;where things sit, in a file or in memory, is a &lt;code&gt;&amp;lt;table class=&quot;map&quot;&amp;gt;&lt;/code&gt;: a name, a start and a size in each row. the strip above it is drawn to scale, except that nothing is drawn too thin to point at, and a stretch that no row accounts for is hatched. this is the object file the &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;listing&lt;/a&gt; was read from:&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;map&quot;&gt;
&lt;caption&gt;steps.o, 872 bytes&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;part&lt;/th&gt;&lt;th&gt;starts at&lt;/th&gt;&lt;th&gt;bytes&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it holds&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;elf header&lt;/th&gt;&lt;td&gt;0x000&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;what kind of file this is, and where the section headers are&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;.text&lt;/code&gt;&lt;/th&gt;&lt;td&gt;0x040&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the function: the twelve instructions of the listing&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;.comment&lt;/code&gt;&lt;/th&gt;&lt;td&gt;0x061&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the name and version of the compiler&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;.symtab&lt;/code&gt;&lt;/th&gt;&lt;td&gt;0x088&lt;/td&gt;&lt;td&gt;72&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;three symbols, one of them &lt;code&gt;steps&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;.strtab&lt;/code&gt;&lt;/th&gt;&lt;td&gt;0x0d0&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;their names&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;code&gt;.shstrtab&lt;/code&gt;&lt;/th&gt;&lt;td&gt;0x0df&lt;/td&gt;&lt;td&gt;69&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;the names of the sections&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;section headers&lt;/th&gt;&lt;td&gt;0x128&lt;/td&gt;&lt;td&gt;576&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;nine entries of 64 bytes, one for each section&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;two thirds of the file describe the rest of it, and the function is 33 bytes. the hatched sliver in front of the section headers is four bytes of padding, there so that the headers start on a multiple of eight. a name is written in the strip where there is room to read it, and the table has them all.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a sequence is not bytes, but it is read the same way. a &lt;code&gt;&amp;lt;pre class=&quot;seq&quot;&amp;gt;&lt;/code&gt; sets dna, rna or protein in tens under a ruler, six tens to a row where there is room, with the position each row starts at, and names its marked ranges underneath. this is human insulin as the cell first makes it (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/uniprot-p01308&quot;&gt;uniprot &lt;span data-case&gt;P01308&lt;/span&gt;&lt;/a&gt;):&lt;/p&gt;

&lt;pre class=&quot;seq&quot; data-label=&quot;preproinsulin, homo sapiens&quot;&gt;
&lt;mark data-label=&quot;signal peptide&quot;&gt;MALWMRLLPL LALLALWGPD PAAA&lt;/mark&gt;&lt;mark data-label=&quot;b chain&quot;&gt;FVNQHL CGSHLVEALY LVCGERGFFY TPKT&lt;/mark&gt;RR&lt;mark data-label=&quot;c peptide&quot;&gt;EAED
LQVGQVELGG GPGAGSLQPL ALEGSLQ&lt;/mark&gt;KR&lt;mark data-label=&quot;a chain&quot;&gt;G IVEQCCTSIC SLYQLENYCN&lt;/mark&gt;
&lt;/pre&gt;

&lt;p&gt;the signal is cut off on the way out of the cell's factory, and the c peptide is cut out from between the two chains, which stay joined. the two pairs of letters left untinted are where those cuts are made.&lt;/p&gt;

&lt;p&gt;several sequences that are nearly the same are a &lt;code&gt;&amp;lt;pre class=&quot;align&quot;&amp;gt;&lt;/code&gt;: a line for each, its name and then its letters, with a &lt;code&gt;-&lt;/code&gt; wherever one of them has nothing. they are set letter under letter. a letter that is not the one the first sequence has there is tinted, a gap is tinted another way, and the last line has a star under every place they all share. these are the first ninety letters of &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tables&quot;&gt;the gene for β-globin&lt;/a&gt; that are read into protein (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/refseq-hbb&quot;&gt;refseq &lt;span data-case&gt;NG_059281.1&lt;/span&gt;&lt;/a&gt;), and the same letters with three changes that are found in people: the one behind sickle-cell disease, the one behind haemoglobin e (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/aziz-2025&quot;&gt;aziz and others 2025&lt;/a&gt;), and a loss of two letters that puts every letter after it out of step (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tariq-2021&quot;&gt;tariq and others 2021&lt;/a&gt;).&lt;/p&gt;

&lt;pre class=&quot;align&quot; data-label=&quot;hbb, from the first letter read into protein&quot;&gt;
reference    ATGGTGCATCTGACTCCTGAGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC
hb s         ATGGTGCATCTGACTCCTGTGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC
hb e         ATGGTGCATCTGACTCCTGAGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTAAGGCCCTGGGC
codon 5 −ct  ATGGTGCATCTGACTC--GAGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC
&lt;/pre&gt;

&lt;pre data-label=&quot;an alignment, as written&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;pre class=&quot;align&quot; data-label=&quot;hbb&quot;&amp;gt;
reference    ATGGTGCATCTGACTCCTGAGGAGAAG…
hb s         ATGGTGCATCTGACTCCTGTGGAGAAG…
codon 5 −ct  ATGGTGCATCTGACTC--GAGGAGAAG…
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;pre data-label=&quot;a diff, a map and a sequence, as written&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure class=&quot;pair&quot;&amp;gt;
  &amp;lt;pre class=&quot;hex&quot; data-label=&quot;newsreader.woff2&quot;&amp;gt;77 4f 46 32 … 00 00 e2 e4 …&amp;lt;/pre&amp;gt;
  &amp;lt;pre class=&quot;hex&quot; data-label=&quot;newsreader-italic.woff2&quot;&amp;gt;77 4f 46 32 … 00 00 fc 08 …&amp;lt;/pre&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;table class=&quot;map&quot;&amp;gt;
  &amp;lt;thead&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;part&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;starts at&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;bytes&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
    &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;elf header&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;0x000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;64&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    &amp;lt;tr class=&quot;a&quot;&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;.text&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;0x040&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;33&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
    …
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;

&amp;lt;pre class=&quot;seq&quot; data-label=&quot;preproinsulin, homo sapiens&quot;&amp;gt;
&amp;lt;mark data-label=&quot;signal peptide&quot;&amp;gt;MALWMRLLPL LALLALWGPD PAAA&amp;lt;/mark&amp;gt;&amp;lt;mark data-label=&quot;b chain&quot;&amp;gt;FVNQHL …&amp;lt;/mark&amp;gt;
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;maths&lt;/h2&gt;

&lt;p&gt;a formula is written in mathml, which browsers set by themselves: no script, no font to download (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/mathml-core&quot;&gt;carlisle and wang&lt;/a&gt;). it can sit in a line, like the step of a chart's axis, &lt;math&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;{&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/msup&gt;&lt;/math&gt;, or take a line of its own. this is how the frame works out the reading time above every title, from the words &lt;math&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;/math&gt; outside tables and code, and the number &lt;math&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/math&gt; of tables and blocks of code:&lt;sup&gt;&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-pace&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;figure&gt;
&lt;math display=&quot;block&quot;&gt;
&lt;mi&gt;minutes&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;
&lt;mrow&gt;&lt;mo&gt;⌈&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mn&gt;230&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mfrac&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;⌉&lt;/mo&gt;&lt;/mrow&gt;
&lt;/math&gt;
&lt;figcaption&gt;the reading time. the haiku report has about 5,800 words and 20 tables and blocks: 25.2 and 5 make 31 minutes.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;the formula&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;math display=&quot;block&quot;&amp;gt;
  &amp;lt;mi&amp;gt;minutes&amp;lt;/mi&amp;gt;&amp;lt;mo&amp;gt;=&amp;lt;/mo&amp;gt;
  &amp;lt;mrow&amp;gt;&amp;lt;mo&amp;gt;⌈&amp;lt;/mo&amp;gt;
    &amp;lt;mfrac&amp;gt;&amp;lt;mi&amp;gt;w&amp;lt;/mi&amp;gt;&amp;lt;mn&amp;gt;230&amp;lt;/mn&amp;gt;&amp;lt;/mfrac&amp;gt;&amp;lt;mo&amp;gt;+&amp;lt;/mo&amp;gt;&amp;lt;mfrac&amp;gt;&amp;lt;mi&amp;gt;b&amp;lt;/mi&amp;gt;&amp;lt;mn&amp;gt;4&amp;lt;/mn&amp;gt;&amp;lt;/mfrac&amp;gt;
  &amp;lt;mo&amp;gt;⌉&amp;lt;/mo&amp;gt;&amp;lt;/mrow&amp;gt;
&amp;lt;/math&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;numbers and words inside a formula are set in the face of the text around them. a lone letter is a variable and comes out italic. brackets and signs come from the reader's own maths face, so they can look a little different from one machine to the next.&lt;/p&gt;

&lt;p&gt;a formula can also be worked out, on numbers the reader changes. a &lt;code&gt;&amp;lt;data class=&quot;knob&quot;&amp;gt;&lt;/code&gt; is a number in a sentence that is dragged sideways, or moved with the arrow keys, and every &lt;code&gt;&amp;lt;output data-f&amp;gt;&lt;/code&gt; works its formula out again. a page that grows by &lt;data class=&quot;knob&quot; data-name=&quot;r&quot; data-min=&quot;1&quot; data-max=&quot;20&quot; value=&quot;5&quot; aria-label=&quot;percent it grows by each time&quot;&gt;5&lt;/data&gt;% with every pull request weighs &lt;output data-f=&quot;(1 + r/100)^n&quot; data-places=&quot;1&quot;&gt;1.6&lt;/output&gt; times what it did after &lt;data class=&quot;knob&quot; data-name=&quot;n&quot; data-min=&quot;1&quot; data-max=&quot;50&quot; value=&quot;10&quot; aria-label=&quot;pull requests&quot;&gt;10&lt;/data&gt; of them, and twice as much after &lt;output data-f=&quot;ceil(ln(2) / ln(1 + r/100))&quot;&gt;15&lt;/output&gt;.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;curve&quot; data-f=&quot;(1 + r/100)^x&quot;&gt;
&lt;caption&gt;how many times its weight, by pull request&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;pull requests&lt;/th&gt;&lt;th&gt;times its weight&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;0&lt;/th&gt;&lt;td&gt;1.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;10&lt;/th&gt;&lt;td&gt;1.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;20&lt;/th&gt;&lt;td&gt;2.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;30&lt;/th&gt;&lt;td&gt;4.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;40&lt;/th&gt;&lt;td&gt;7.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;50&lt;/th&gt;&lt;td&gt;11.5&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;a &lt;code&gt;&amp;lt;table class=&quot;curve&quot;&amp;gt;&lt;/code&gt; holds a few values of a formula and is drawn as the whole line, and again when a knob moves. a formula is arithmetic, read by the piece itself and never run as code. the checker works each one out where the knobs stand, so what the page says without scripts, and in the feed, is true.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a knob, what it works out, and a curve&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;data class=&quot;knob&quot; data-name=&quot;r&quot; data-min=&quot;1&quot; data-max=&quot;20&quot; value=&quot;5&quot;
  aria-label=&quot;percent it grows by each time&quot;&amp;gt;5&amp;lt;/data&amp;gt;
&amp;lt;output data-f=&quot;(1 + r/100)^n&quot; data-places=&quot;1&quot;&amp;gt;1.6&amp;lt;/output&amp;gt;

&amp;lt;table class=&quot;curve&quot; data-f=&quot;(1 + r/100)^x&quot;&amp;gt;
  &amp;lt;tr&amp;gt;&amp;lt;th scope=&quot;row&quot;&amp;gt;10&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;1.6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;images&lt;/h2&gt;

&lt;p&gt;an image lives in the article's folder. it has to say what it shows and how large it is, so the page holds its place while the file is on its way and nothing jumps when it lands. it is fetched when the reader gets near it, never before. in a figure it opens large on a click, and closes on another click, on &lt;kbd&gt;esc&lt;/kbd&gt;, or when the page is scrolled on. opened, it can be looked into: the wheel or two fingers bring it closer about the point they are on, a drag moves it, and a click steps back out, to the whole picture first and then to the page. &lt;kbd&gt;+&lt;/kbd&gt;, &lt;kbd&gt;-&lt;/kbd&gt; and the arrows do the same. the part that does this is fetched the first time an image is opened.&lt;/p&gt;

&lt;figure&gt;
&lt;a href=&quot;stylesheet-large.png&quot;&gt;&lt;img src=&quot;stylesheet.png&quot; alt=&quot;five columns of short dark dashes on pale paper, like lines of text seen from far away, with a few blue, red and green marks among them&quot; width=&quot;540&quot; height=&quot;330&quot;&gt;&lt;/a&gt;
&lt;figcaption&gt;the blog's stylesheet, all 1,051 lines of it, drawn the way an editor's minimap would: a mark for every character. letters are ink, digits blue, braces red. the file shown is 7 kb, and a click opens one with four times the pixels.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;the figure above&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure&amp;gt;
  &amp;lt;a href=&quot;stylesheet-large.png&quot;&amp;gt;
    &amp;lt;img src=&quot;stylesheet.png&quot; alt=&quot;five columns of short dark dashes …&quot; width=&quot;540&quot; height=&quot;330&quot;&amp;gt;
  &amp;lt;/a&amp;gt;
  &amp;lt;figcaption&amp;gt;the blog's stylesheet, all 1,051 lines of it …&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the link around it is optional: without one, the image opens as it is. outside a figure an image sits in the line and does not open, like the dot &lt;img src=&quot;dot.svg&quot; alt=&quot;a small blue dot&quot; width=&quot;12&quot; height=&quot;12&quot;&gt; that marks the current section in the sidebar. an image may weigh 250 kb at most, and the checker measures the file to see that the width and height written beside it are its real shape.&lt;/p&gt;

&lt;p&gt;some pictures need pointing at. an &lt;code&gt;&amp;lt;ol class=&quot;marks&quot;&amp;gt;&lt;/code&gt; after an image is its key, and each item says where its number goes: &lt;code&gt;data-at=&quot;62% 31%&quot;&lt;/code&gt;, across and then down, as shares of the image. where there is room beside the image the key stands there, so that neither has to be scrolled away to read the other, and pointing at a number lights its line.&lt;/p&gt;

&lt;p&gt;a picture of somewhere can be marked in that place's own coordinates instead. &lt;code&gt;data-frame&lt;/code&gt; on the list says what the picture's left, bottom, right and top edges are, west south east north on a map, and each &lt;code&gt;data-at&lt;/code&gt; is then a place: across, and then up. such a mark is a ring round the place, with its number off to the upper right, or wherever &lt;code&gt;left&lt;/code&gt; and &lt;code&gt;down&lt;/code&gt; send it. and a picture that says how much it spans, with &lt;code&gt;data-across&lt;/code&gt;, gets a bar of a round length to measure by. this is orion, drawn from the positions and magnitudes that simbad holds for its stars (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/wenger-2000&quot;&gt;wenger and others 2000&lt;/a&gt;). its marks are right ascensions and declinations in degrees, and on a chart of the sky east is on the left, so the frame's first number is the larger:&lt;/p&gt;

&lt;figure class=&quot;fig&quot; id=&quot;orion-picture&quot;&gt;
&lt;img src=&quot;orion.png&quot; alt=&quot;a dark sky with the stars of orion as pale dots: two shoulders, three in a slanted row for the belt, two feet, and the upper left shoulder orange&quot; width=&quot;720&quot; height=&quot;900&quot; data-across=&quot;18.4°&quot;&gt;
&lt;ol class=&quot;marks&quot; data-frame=&quot;92.90 -12.03 74.48 10.82&quot;&gt;
&lt;li data-at=&quot;88.79 7.41&quot;&gt;betelgeuse &lt;small&gt;&lt;i&gt;α&lt;/i&gt; · 0.42&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;81.28 6.35&quot;&gt;bellatrix &lt;small&gt;&lt;i&gt;γ&lt;/i&gt; · 1.64&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;83.78 9.93 down&quot;&gt;meissa &lt;small&gt;&lt;i&gt;λ&lt;/i&gt; · 3.66&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;83.00 -0.30&quot;&gt;mintaka &lt;small&gt;&lt;i&gt;δ&lt;/i&gt; · 2.41&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;84.05 -1.20 left&quot;&gt;alnilam &lt;small&gt;&lt;i&gt;ε&lt;/i&gt; · 1.69&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;85.19 -1.94 left down&quot;&gt;alnitak &lt;small&gt;&lt;i&gt;ζ&lt;/i&gt; · 1.77&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;86.94 -9.67&quot;&gt;saiph &lt;small&gt;&lt;i&gt;κ&lt;/i&gt; · 2.06&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;78.63 -8.20&quot;&gt;rigel &lt;small&gt;&lt;i&gt;β&lt;/i&gt; · 0.13&lt;/small&gt;&lt;/li&gt;
&lt;li data-at=&quot;83.86 -5.91&quot;&gt;hatysa &lt;small&gt;&lt;i&gt;ι&lt;/i&gt; · 2.77&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;figcaption&gt;&lt;b&gt;figure 2.&lt;/b&gt; every star brighter than magnitude 5.5 in a field of 18 by 23 degrees, fifty-six of them, with north up and east to the left. a brighter star is a larger dot, and its colour leans the way the star's does. each line of the key gives a star's letter in the constellation and its magnitude.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a figure the text points at from far away can carry a number. &lt;code&gt;class=&quot;fig&quot;&lt;/code&gt; counts it, and the number is said before its caption: the picture above is &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/orion-picture&quot;&gt;figure 2&lt;/a&gt;, and the same stars drawn from a table, under charts, are &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/orion-chart&quot;&gt;figure 1&lt;/a&gt;. the stylesheet does the counting. the checker reads every link that says “figure” and a number, and fails when the number is not the one its figure has.&lt;/p&gt;

&lt;pre data-label=&quot;a figure with a number, and a link to it&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure class=&quot;fig&quot; id=&quot;orion-picture&quot;&amp;gt; … &amp;lt;/figure&amp;gt;

&amp;lt;p&amp;gt;… the picture above is &amp;lt;a href=&quot;../../#/typography/everything-this-blog-can-do/orion-picture&quot;&amp;gt;figure 2&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;two pictures of one thing are compared best in one place. a &lt;code&gt;&amp;lt;figure class=&quot;compare&quot;&amp;gt;&lt;/code&gt; with two images of the same shape lays the second over the first and puts a divider between them. it can be dragged, sent somewhere with a press, or moved with the arrow keys once it has the focus, and a &lt;code&gt;data-label&lt;/code&gt; on an image names its side. the two below are simulated: the belt and the sword from the chart above with the noise of a short exposure added, once, and then sixty-four times over and averaged.&lt;/p&gt;

&lt;figure class=&quot;compare&quot;&gt;
&lt;img src=&quot;one.jpg&quot; alt=&quot;a grainy grey frame in which a handful of bright stars stand out of the noise&quot; width=&quot;720&quot; height=&quot;450&quot; data-label=&quot;one exposure&quot;&gt;
&lt;img src=&quot;sixty-four.jpg&quot; alt=&quot;the same frame, smooth, with fainter stars in it that the first did not show&quot; width=&quot;720&quot; height=&quot;450&quot; data-label=&quot;sixty-four, averaged&quot;&gt;
&lt;figcaption&gt;averaging sixty-four frames leaves an eighth of the noise, the square root of sixty-four. measured in an empty corner of these two, it is 7.98 times less. twenty-one stars are in the field, and the faintest of them can only be told from the noise on the right.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;when two pictures should be read side by side, and not one through the other, they are panels. a &lt;code&gt;&amp;lt;figure class=&quot;set&quot;&amp;gt;&lt;/code&gt; holds a figure for each, letters them in their corners, and keeps one caption under them all. they stand in a row where there is room and under each other where there is not, and each still opens large.&lt;/p&gt;

&lt;figure class=&quot;set&quot;&gt;
&lt;figure&gt;&lt;img src=&quot;one.jpg&quot; alt=&quot;a grainy grey frame in which a handful of bright stars stand out of the noise&quot; width=&quot;720&quot; height=&quot;450&quot;&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;sixty-four.jpg&quot; alt=&quot;the same frame, smooth, with fainter stars in it that the first did not show&quot; width=&quot;720&quot; height=&quot;450&quot;&gt;&lt;/figure&gt;
&lt;figcaption&gt;the two frames of the divider above, as panels: &lt;b&gt;a&lt;/b&gt; one exposure, &lt;b&gt;b&lt;/b&gt; sixty-four, averaged.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;pixel art is the one kind of picture that must never be smoothed. an &lt;code&gt;&amp;lt;img class=&quot;pixel&quot;&amp;gt;&lt;/code&gt; is shown at a whole multiple of its size, the largest that fits, counted in the pixels of the screen and not of the page, so that each of its pixels is a clean square and all of them are the same size. &lt;code&gt;data-max=&quot;4&quot;&lt;/code&gt; holds it to four times. the caption is told what the multiple came to.&lt;/p&gt;

&lt;figure&gt;
&lt;img class=&quot;pixel&quot; src=&quot;scene.png&quot; alt=&quot;a night in four greens: a full moon over two ridges with pines along them, a cabin with a lit window, and a dithered sky with orion in it&quot; width=&quot;96&quot; height=&quot;54&quot;&gt;
&lt;figcaption&gt;a night drawn by a short script, in four greens. the file is 599 bytes.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;a &lt;code&gt;&amp;lt;ul class=&quot;palette&quot;&amp;gt;&lt;/code&gt; shows the colours themselves: each item gets a swatch of the first colour written in it. these are the four greens most often used to stand for the screen of the first game boy, with how many of the scene's 5,184 pixels wear each.&lt;/p&gt;

&lt;ul class=&quot;palette&quot;&gt;
&lt;li&gt;&lt;code&gt;#0f380f&lt;/code&gt; 2,039&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#306230&lt;/code&gt; 2,381&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#8bac0f&lt;/code&gt; 633&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#9bbc0f&lt;/code&gt; 131&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and some things only make sense moving. a short silent loop is written as a still that links to its file, in a &lt;code&gt;&amp;lt;figure class=&quot;clip&quot;&amp;gt;&lt;/code&gt;. that is all a feed reader or a browser without scripts will show, and it is enough. here the still stays until the reader is near, and only then is the clip fetched. it plays while it is in view, rests when it is not, and stops at its button or at a press on the picture. a reader who has asked their system for less motion gets the still, and a button that says play.&lt;/p&gt;

&lt;figure class=&quot;clip&quot;&gt;
&lt;a href=&quot;gun.mp4&quot;&gt;&lt;img src=&quot;gun.png&quot; alt=&quot;black cells on a pale grid: a block at each end of the top, two larger shapes between them, gliders on a line running down to the right, and a hook of seven cells waiting at the end of it&quot; width=&quot;552&quot; height=&quot;408&quot;&gt;&lt;/a&gt;
&lt;figcaption&gt;gosper's glider gun, the first pattern found in conway's game of life that grows without end (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/gardner-1971&quot;&gt;gardner 1971&lt;/a&gt;). it fires a glider every thirty generations. here an eater at the lower right swallows each one, so after thirty frames everything is where it began and the loop has no seam. three seconds, 10 kb.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;the five figures above, as written&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;figure&amp;gt;
  &amp;lt;img src=&quot;orion.png&quot; alt=&quot;a dark sky with the stars of orion …&quot; width=&quot;720&quot; height=&quot;900&quot; data-across=&quot;18.4°&quot;&amp;gt;
  &amp;lt;ol class=&quot;marks&quot; data-frame=&quot;92.90 -12.03 74.48 10.82&quot;&amp;gt;
    &amp;lt;li data-at=&quot;88.79 7.41&quot;&amp;gt;betelgeuse &amp;lt;small&amp;gt;&amp;lt;i&amp;gt;α&amp;lt;/i&amp;gt; · 0.42&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;li data-at=&quot;85.19 -1.94 left down&quot;&amp;gt;alnitak &amp;lt;small&amp;gt;&amp;lt;i&amp;gt;ζ&amp;lt;/i&amp;gt; · 1.77&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;
    …
  &amp;lt;/ol&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;figure class=&quot;compare&quot;&amp;gt;
  &amp;lt;img src=&quot;one.jpg&quot; alt=&quot;a grainy grey frame …&quot; width=&quot;720&quot; height=&quot;450&quot; data-label=&quot;one exposure&quot;&amp;gt;
  &amp;lt;img src=&quot;sixty-four.jpg&quot; alt=&quot;the same frame, smooth …&quot; width=&quot;720&quot; height=&quot;450&quot; data-label=&quot;sixty-four, averaged&quot;&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;figure class=&quot;set&quot;&amp;gt;
  &amp;lt;figure&amp;gt;&amp;lt;img src=&quot;one.jpg&quot; alt=&quot;a grainy grey frame …&quot; width=&quot;720&quot; height=&quot;450&quot;&amp;gt;&amp;lt;/figure&amp;gt;
  &amp;lt;figure&amp;gt;&amp;lt;img src=&quot;sixty-four.jpg&quot; alt=&quot;the same frame, smooth …&quot; width=&quot;720&quot; height=&quot;450&quot;&amp;gt;&amp;lt;/figure&amp;gt;
  &amp;lt;figcaption&amp;gt;&amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; one exposure, &amp;lt;b&amp;gt;b&amp;lt;/b&amp;gt; sixty-four, averaged.&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;figure&amp;gt;
  &amp;lt;img class=&quot;pixel&quot; src=&quot;scene.png&quot; alt=&quot;a night in four greens …&quot; width=&quot;96&quot; height=&quot;54&quot;&amp;gt;
&amp;lt;/figure&amp;gt;

&amp;lt;ul class=&quot;palette&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;#0f380f&amp;lt;/code&amp;gt; 2,039&amp;lt;/li&amp;gt;
  …
&amp;lt;/ul&amp;gt;

&amp;lt;figure class=&quot;clip&quot;&amp;gt;
  &amp;lt;a href=&quot;gun.mp4&quot;&amp;gt;&amp;lt;img src=&quot;gun.png&quot; alt=&quot;black cells on a pale grid …&quot; width=&quot;552&quot; height=&quot;408&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;some pictures are better written than drawn. a &lt;code&gt;&amp;lt;pre class=&quot;board&quot;&amp;gt;&lt;/code&gt; is a grid with a character for each cell, and the list after it is its legend: each item starts with the character it explains, and &lt;code&gt;data-ink&lt;/code&gt; gives that character one of the four inks. a character the legend leaves out is an empty cell, and a space is no cell at all, which is how four boards stand in one block here. this is a glider, generation by generation, with what the rules are about to do to it:&lt;/p&gt;

&lt;figure&gt;
&lt;pre class=&quot;board&quot; aria-label=&quot;four small boards. on each, five cells in the shape of a glider, some of them marked as about to die, and empty cells beside them marked as about to be born&quot;&gt;
...... ...... ...... ......
..x... ...... ...... ......
.+.o.. .x.o.. ..+x.. ..x+..
.xoo.. .+xo.. .x.o+. ...xo.
..+... ..o+.. ..oo.. ..oo+.
...... ...... ...... ......
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;o&lt;/code&gt; alive, and staying so&lt;/li&gt;
&lt;li data-ink=&quot;2&quot;&gt;&lt;code&gt;x&lt;/code&gt; alive, and about to die&lt;/li&gt;
&lt;li data-ink=&quot;3&quot;&gt;&lt;code&gt;+&lt;/code&gt; empty, and about to be born&lt;/li&gt;
&lt;/ul&gt;
&lt;figcaption&gt;four generations of a glider, left to right. black and red together are the glider as it is, black and green the glider as it will be. worked out by running the rules.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;frames that follow each other can share one file. an &lt;code&gt;&amp;lt;img class=&quot;frames&quot; data-frames=&quot;24&quot;&amp;gt;&lt;/code&gt; is a strip of that many frames side by side, shown one at a time, six a second unless &lt;code&gt;data-fps&lt;/code&gt; says otherwise. it moves only while it is in view and it can be stopped. stopped, a press on the picture moves it on by one. this glider lives on a board six cells square whose edges are joined, so after twenty-four generations it is back where it began:&lt;/p&gt;

&lt;figure&gt;
&lt;img class=&quot;frames&quot; data-frames=&quot;24&quot; src=&quot;glider.png&quot; alt=&quot;five black cells in the shape of a glider on a pale square, crawling down and to the right, and coming back in on the other side&quot; width=&quot;3456&quot; height=&quot;144&quot;&gt;
&lt;figcaption&gt;twenty-four frames in one file of 0.8 kb.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;and two pictures of one shape can take turns, which is how astronomers used to find what had moved between two plates. in a &lt;code&gt;&amp;lt;figure class=&quot;blink&quot;&amp;gt;&lt;/code&gt; the pictures lie on each other and swap every 0.8 seconds, or every &lt;code&gt;data-every&lt;/code&gt;, and &lt;code&gt;data-label&lt;/code&gt; names each one under the picture. this is the gun of the clip above, and the same gun thirty generations later. everything in it is back where it was, and the one new thing is the glider it has let go:&lt;/p&gt;

&lt;figure class=&quot;blink&quot;&gt;
&lt;img src=&quot;gun-0.png&quot; alt=&quot;black cells on a pale grid: a block at each end and two larger shapes between them&quot; width=&quot;456&quot; height=&quot;168&quot; data-label=&quot;generation 0&quot;&gt;
&lt;img src=&quot;gun-30.png&quot; alt=&quot;the same cells in the same places, and under them a glider of five cells&quot; width=&quot;456&quot; height=&quot;168&quot; data-label=&quot;generation 30&quot;&gt;
&lt;figcaption&gt;thirty-six cells, then forty-one.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre data-label=&quot;a board, frames, and two pictures in turn&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;pre class=&quot;board&quot; aria-label=&quot;four small boards …&quot;&amp;gt;
..x... ......
.+.o.. .x.o..
&amp;lt;/pre&amp;gt;
&amp;lt;ul&amp;gt;
  &amp;lt;li data-ink=&quot;2&quot;&amp;gt;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; alive, and about to die&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;img class=&quot;frames&quot; data-frames=&quot;24&quot; src=&quot;glider.png&quot; alt=&quot;…&quot; width=&quot;3456&quot; height=&quot;144&quot;&amp;gt;

&amp;lt;figure class=&quot;blink&quot;&amp;gt;
  &amp;lt;img src=&quot;gun-0.png&quot; alt=&quot;…&quot; width=&quot;456&quot; height=&quot;168&quot; data-label=&quot;generation 0&quot;&amp;gt;
  &amp;lt;img src=&quot;gun-30.png&quot; alt=&quot;…&quot; width=&quot;456&quot; height=&quot;168&quot; data-label=&quot;generation 30&quot;&amp;gt;
&amp;lt;/figure&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the checker holds each of these to its form. a mark needs its place, the two sides of a comparison need one shape, pixel art has to be stored without loss and at the size written beside it, and a clip is an mp4 or a webm of 500 kb at most, behind a still that is checked like any other image.&lt;/p&gt;

&lt;h2&gt;asides and folds&lt;/h2&gt;

&lt;p&gt;an &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; is a note beside the argument. a &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt; at its start gives it a name, and &lt;code&gt;class=&quot;warn&quot;&lt;/code&gt; turns it into a warning, like the one near the top of this page.&lt;/p&gt;

&lt;aside&gt;
&lt;p&gt;&lt;strong&gt;the rule behind all of it.&lt;/strong&gt; a page pays only for what it uses. this aside cost the page one stylesheet of 0.9 kb, and an article without one never asks for it.&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;a &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; folds away what most readers will not need. it can hold anything an article can.&lt;/p&gt;

&lt;details&gt;
&lt;summary&gt;what the checker printed for this blog&lt;/summary&gt;
&lt;pre&gt;&lt;code&gt;weight, gzipped

  the shell (html + css + js)                              11.5 kb  of 12
  the library (4 articles)                                  0.5 kb  of 1
  code, for the articles that use it                        4.5 kb  of 5
  pair, for the articles that use it                        0.3 kb  of 0.5
  callouts, for the articles that use it                    1.1 kb  of 1.5
  tabs, for the articles that use it                        1.3 kb  of 1.5
  listing, for the articles that use it                     2.7 kb  of 3
  chart, for the articles that use it                       5.3 kb  of 5.5
  bars, for the articles that use it                        2.9 kb  of 3
  lines, for the articles that use it                       2.4 kb  of 2.5
  dots, for the articles that use it                        2.4 kb  of 2.5
  plot, for the articles that use it                        1.3 kb  of 1.5
  areas, for the articles that use it                       1.3 kb  of 1.5
  slope, for the articles that use it                       1.9 kb  of 2
  hist, for the articles that use it                        2.4 kb  of 2.5
  flows, for the articles that use it                       2.1 kb  of 2.5
  treemap, for the articles that use it                     2.5 kb  of 2.5
  graph, for the articles that use it                       2.8 kb  of 3
  flow, for the articles that use it                        0.6 kb  of 1
  clade, for the articles that use it                       2.3 kb  of 2.5
  events, for the articles that use it                      1.3 kb  of 1.5
  blocks, for the articles that use it                      1.7 kb  of 2
  days, for the articles that use it                        1.8 kb  of 2
  spark, for the articles that use it                       0.8 kb  of 1
  range, for the articles that use it                       1.4 kb  of 1.5
  spans, for the articles that use it                       2.0 kb  of 2
  of, for the articles that use it                          1.2 kb  of 1.5
  heat, for the articles that use it                        1.2 kb  of 1.5
  sort, for the articles that use it                        1.5 kb  of 2
  delta, for the articles that use it                       0.6 kb  of 1
  qty, for the articles that use it                         0.7 kb  of 1
  pad, for the articles that use it                         0.5 kb  of 1
  tree, for the articles that use it                        0.9 kb  of 1
  steps, for the articles that use it                       0.5 kb  of 1
  spoiler, for the articles that use it                     0.7 kb  of 1
  revise, for the articles that use it                      1.2 kb  of 1.5
  aside, for the articles that use it                       0.9 kb  of 1
  math, for the articles that use it                        0.6 kb  of 1
  image, for the articles that use it                       2.5 kb  of 3
  marks, for the articles that use it                       2.1 kb  of 2.5
  compare, for the articles that use it                     1.8 kb  of 2
  pixel, for the articles that use it                       1.3 kb  of 1.5
  clip, for the articles that use it                        1.7 kb  of 2
  notes, for the articles that use it                       2.9 kb  of 3
  dump, for the articles that use it                        4.7 kb  of 5
  seq, for the articles that use it                         0.8 kb  of 1
  align, for the articles that use it                       1.5 kb  of 1.5
  map, for the articles that use it                         0.8 kb  of 1
  files, for the articles that use it                       1.4 kb  of 1.5
  matrix, for the articles that use it                      0.8 kb  of 1
  trace, for the articles that use it                       0.5 kb  of 1
  gloss, for the articles that use it                       0.5 kb  of 0.5
  facing, for the articles that use it                      0.4 kb  of 0.5
  source, for the articles that use it                      0.4 kb  of 0.5
  say, for the articles that use it                         0.8 kb  of 1
  chat, for the articles that use it                        1.7 kb  of 2
  tokens, for the articles that use it                      1.7 kb  of 2
  board, for the articles that use it                       1.3 kb  of 1.5
  frames, for the articles that use it                      2.2 kb  of 2.5
  card, for the articles that use it                        0.5 kb  of 0.5
  scale, for the articles that use it                       1.2 kb  of 1.5
  set, for the articles that use it                         0.6 kb  of 1
  sky, for the articles that use it                         2.5 kb  of 2.5
  tiles, for the articles that use it                       1.8 kb  of 2
  chem, for the articles that use it                        0.7 kb  of 1
  knob, for the articles that use it                        2.7 kb  of 3
  curve, for the articles that use it                       2.1 kb  of 2.5
  sum, for the articles that use it                         0.2 kb  of 0.5
  glossary, for the articles that use it                    1.3 kb  of 1.5
  fig, for the articles that use it                         0.2 kb  of 0.5
  keys, when a reader asks for it                           1.0 kb  of 1.5
  search, when a reader asks for it                         4.3 kb  of 4.5
  look, when a reader asks for it                           1.5 kb  of 2
  fonts (2 files)                                         119.7 kb  of 130
  typography/everything-this-blog-can-do/index.html          50.2 kb  of 52
    its 12 images, as stored                              305.4 kb  of 250 each
    its clip, as stored                                    10.2 kb  of 500 each
    its sound, as stored                                   29.8 kb  of 100 each
  software/la-liga-de-modelos-de-opencode-go/index.html     7.0 kb  of 40
  software/claude-haiku-5-5/index.html                     16.5 kb  of 40
  software/opencode-go-model-league/index.html              6.5 kb  of 40

all good: 2 sections, 4 articles.&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;

&lt;pre data-label=&quot;an aside and a fold&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;aside&amp;gt;
  &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;the rule behind all of it.&amp;lt;/strong&amp;gt; a page pays only for what it uses.&amp;lt;/p&amp;gt;
&amp;lt;/aside&amp;gt;

&amp;lt;details&amp;gt;
  &amp;lt;summary&amp;gt;what the checker printed for this blog&amp;lt;/summary&amp;gt;
  &amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;…&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;/details&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;notes and references&lt;/h2&gt;

&lt;p&gt;a small number in the text leads to a note. on a wide screen the note moves out into the margin, beside the line that cites it. on a narrow one it waits at the foot of the article, with a caret that leads back, until it is asked for: a press on its number opens it right under the line that cites it, and another puts it away. on paper it stays at the foot. wherever it is, it is only ever in one place. a note cited twice, like the one about the inks,&lt;sup&gt;&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-inks&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; gets a letter at the foot for each place that cites it. and when every note has gone to the margin, the list and its heading step aside: on a wide screen this page has no section of notes at all.&lt;/p&gt;

&lt;p&gt;a reference is the same idea with a different job. it stays in its list on every screen, keeps the capitals a citation is written with, and can be cited by a number or by name, the way this page is set in newsreader (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/newsreader&quot;&gt;the newsreader project authors 2020&lt;/a&gt;) and its feed is an atom feed (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/rfc-4287&quot;&gt;nottingham and sayre 2005&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;a reference can also say what kind of evidence it is, which matters most when the subject is health. &lt;code&gt;data-kind&lt;/code&gt; takes one of six words, &lt;code&gt;review&lt;/code&gt;, &lt;code&gt;trial&lt;/code&gt;, &lt;code&gt;observational&lt;/code&gt;, &lt;code&gt;lab&lt;/code&gt;, &lt;code&gt;guideline&lt;/code&gt; or &lt;code&gt;preprint&lt;/code&gt;, and the reference wears it as a label in its list. four more are for other subjects. &lt;code&gt;primary&lt;/code&gt; is the record itself and &lt;code&gt;secondary&lt;/code&gt; an account of it, which is what history asks first of a source: on this page caesar is the one, and the encyclopaedia that transcribes trajan's column is the other. &lt;code&gt;vendor&lt;/code&gt; is what the maker of a thing says about it, and &lt;code&gt;benchmark&lt;/code&gt; is somebody's measurement of it. three papers about vitamin d show why it is worth a word. in a cohort of 13,331 adults, those with the least of it in their blood died at a higher rate over the nine years or so that followed (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/melamed-2008&quot;&gt;melamed and others 2008&lt;/a&gt;). in a trial, 25,871 people took it or a placebo for about five years, and about as many broke a bone either way (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/leboff-2022&quot;&gt;leboff and others 2022&lt;/a&gt;). and a review that pooled 81 trials found no effect on fractures or falls (&lt;a href=&quot;../../#/typography/everything-this-blog-can-do/bolland-2018&quot;&gt;bolland and others 2018&lt;/a&gt;). the first kind can say that two things go together, and only the other two can say what a supplement does.&lt;/p&gt;

&lt;aside class=&quot;care&quot;&gt;&lt;strong&gt;a word of care.&lt;/strong&gt; this page is about a blog, and those three papers are here to show three labels. nothing on it is advice about what to take, which is a question for someone who knows you.&lt;/aside&gt;

&lt;p&gt;that aside is the other half. an article about health says once, plainly, what it is not, in an &lt;code&gt;&amp;lt;aside class=&quot;care&quot;&amp;gt;&lt;/code&gt;. the checker asks for one in every article tagged &lt;code&gt;health&lt;/code&gt;, and the words are the author's.&lt;/p&gt;

&lt;p&gt;a glossary is a third list. a &lt;code&gt;&amp;lt;dl class=&quot;glossary&quot;&amp;gt;&lt;/code&gt; holds the words an article uses in a sense of its own, each a &lt;code&gt;&amp;lt;dfn&amp;gt;&lt;/code&gt;, in the order of the alphabet. a word in the text that links to its entry sits on a dotted line, and a press on it opens what it means under the line it is on, the way a note opens. four words on this page do, where each is first explained, and this is where they lead:&lt;/p&gt;

&lt;dl class=&quot;glossary&quot;&gt;
&lt;dt id=&quot;term-feed&quot;&gt;&lt;dfn&gt;feed&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;one file, &lt;code&gt;feed.xml&lt;/code&gt;, with every article in it whole. a feed reader follows the blog through it, and the search reads it.&lt;/dd&gt;
&lt;dt id=&quot;term-frame&quot;&gt;&lt;dfn&gt;frame&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;the one page every address opens: &lt;code&gt;index.html&lt;/code&gt;, its stylesheet and its script. it draws the sidebar and fetches the article that was asked for.&lt;/dd&gt;
&lt;dt id=&quot;term-library&quot;&gt;&lt;dfn&gt;library&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;the list of every article, written inside the frame: its section, its title, its date and its tags.&lt;/dd&gt;
&lt;dt id=&quot;term-piece&quot;&gt;&lt;dfn&gt;piece&lt;/dfn&gt;&lt;/dt&gt;
&lt;dd&gt;a script, a stylesheet or both, fetched only by the articles that use what it draws.&lt;/dd&gt;
&lt;/dl&gt;

&lt;pre data-label=&quot;a word, and its entry in the glossary&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;p&amp;gt;the blog is one html page, the &amp;lt;a href=&quot;../../#/typography/everything-this-blog-can-do/term-frame&quot;&amp;gt;frame&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;

&amp;lt;dl class=&quot;glossary&quot;&amp;gt;
  &amp;lt;dt id=&quot;term-frame&quot;&amp;gt;&amp;lt;dfn&amp;gt;frame&amp;lt;/dfn&amp;gt;&amp;lt;/dt&amp;gt;
  &amp;lt;dd&amp;gt;the one page every address opens …&amp;lt;/dd&amp;gt;
&amp;lt;/dl&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;pre data-label=&quot;a note, a reference, and the lists they live in&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;p&amp;gt;nothing comes from another site.&amp;lt;sup&amp;gt;&amp;lt;a href=&quot;../../#/typography/everything-this-blog-can-do/note-fonts&quot;&amp;gt;1&amp;lt;/a&amp;gt;&amp;lt;/sup&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;… its feed is an atom feed (&amp;lt;a href=&quot;../../#/typography/everything-this-blog-can-do/rfc-4287&quot;&amp;gt;nottingham and sayre 2005&amp;lt;/a&amp;gt;).&amp;lt;/p&amp;gt;

&amp;lt;ol class=&quot;notes&quot;&amp;gt;
  &amp;lt;li id=&quot;note-fonts&quot;&amp;gt;the two font files are served from the blog's own folder.&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;

&amp;lt;ol class=&quot;refs&quot;&amp;gt;
  &amp;lt;li id=&quot;rfc-4287&quot;&amp;gt;&amp;lt;cite&amp;gt;Nottingham, M. &amp;amp;amp; Sayre, R., eds. (2005).
    &amp;lt;i&amp;gt;The Atom Syndication Format&amp;lt;/i&amp;gt;. RFC 4287.&amp;lt;/cite&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li id=&quot;leboff-2022&quot; data-kind=&quot;trial&quot;&amp;gt;&amp;lt;cite&amp;gt;LeBoff, M. S., Chou, S. H., Ratliff, K. A. et al. (2022). …&amp;lt;/cite&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;

&amp;lt;aside class=&quot;care&quot;&amp;gt;&amp;lt;strong&amp;gt;a word of care.&amp;lt;/strong&amp;gt; nothing here is advice about what to take …&amp;lt;/aside&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;around the article&lt;/h2&gt;

&lt;p&gt;an article is listed in the &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/term-library&quot;&gt;library&lt;/a&gt; with a title, a line that says what it is, and a date. three more fields are optional:&lt;/p&gt;

&lt;pre data-label=&quot;index.html, this article's entry&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;section&quot;: &quot;software&quot;,
  &quot;slug&quot;: &quot;everything-this-blog-can-do&quot;,
  &quot;title&quot;: &quot;everything this blog can do&quot;,
  &quot;deck&quot;: &quot;every piece an article can use, shown and explained.&quot;,
  &quot;date&quot;: &quot;2026-10-12&quot;,
  &quot;updated&quot;: &quot;2026-10-12&quot;,
  &quot;tags&quot;: [&quot;blog&quot;, &quot;writing&quot;]
}&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tags.&lt;/strong&gt; each tag has a page of its own with everything that carries it, from every section. the links are under this article.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a series.&lt;/strong&gt; articles that share a &lt;code&gt;&quot;series&quot;&lt;/code&gt; are parts of one thing. each says which part it is beside its date, and lists them all in order at its foot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;the reading time&lt;/strong&gt; is counted by the frame, from the formula under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/maths&quot;&gt;maths&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;the feed.&lt;/strong&gt; &lt;a href=&quot;../../feed.xml&quot;&gt;feed.xml&lt;/a&gt; carries every article in full, newest first. a chart arrives in a reader as the table it was written as.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;two more fields are for an article that is not in english. &lt;code&gt;&quot;lang&quot;&lt;/code&gt; says which language it is in, and the frame marks its title and its text as that language, for the software that reads a page aloud or breaks its words. a translation also names what it translates, as &lt;code&gt;&quot;translates&quot;: &quot;software/opencode-go-model-league&quot;&lt;/code&gt;, and the checker sees that each of the two leads to the other. the league of models is one: it can be read &lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go&quot; hreflang=&quot;es&quot; lang=&quot;es&quot;&gt;en español&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;the same entry is what a link to this article says of it somewhere else. paste a link into a chat, and the software there fetches it, reads the top of the file for a title and a line about it, and runs no script. so the first lines of this article's own file say both. nobody wrote them: &lt;code&gt;scripts/head.mjs&lt;/code&gt; did, from the entry above, and the checker fails when the two disagree. the last of those lines is for the frame and not for a preview: it names the &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;pieces&lt;/a&gt; this article needs, which is all of them.&lt;/p&gt;

&lt;pre data-label=&quot;this article's own file, its first lines&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;script&amp;gt;location.replace(&quot;../../#/typography/everything-this-blog-can-do&quot;)&amp;lt;/script&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;everything this blog can do · nahuel genchi&amp;lt;/title&amp;gt;
&amp;lt;meta name=&quot;description&quot; content=&quot;every piece an article can use, shown and explained.&quot;&amp;gt;
&amp;lt;meta property=&quot;og:type&quot; content=&quot;article&quot;&amp;gt;
&amp;lt;meta property=&quot;og:site_name&quot; content=&quot;nahuel genchi&quot;&amp;gt;
&amp;lt;meta property=&quot;og:title&quot; content=&quot;everything this blog can do&quot;&amp;gt;
&amp;lt;meta property=&quot;og:description&quot; content=&quot;every piece an article can use, shown and explained.&quot;&amp;gt;
&amp;lt;meta property=&quot;article:published_time&quot; content=&quot;2026-10-12&quot;&amp;gt;
&amp;lt;meta property=&quot;article:modified_time&quot; content=&quot;2026-10-12&quot;&amp;gt;
&amp;lt;meta name=&quot;twitter:card&quot; content=&quot;summary&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the frame leaves those lines out when it sets the article, and so do the feed and the search. they add about 160 bytes to each article. two limits come with them. the address to paste is the folder's, &lt;code&gt;typography/everything-this-blog-can-do/&lt;/code&gt;, which is the one the feed gives out: the address in the bar has a &lt;code&gt;#&lt;/code&gt; in it, and what follows a &lt;code&gt;#&lt;/code&gt; never reaches a server, so a preview of it is a preview of the front page. and a preview with a picture needs the picture's full address, which waits for the blog to have one.&lt;/p&gt;

&lt;p&gt;the third field, &lt;code&gt;&quot;updated&quot;&lt;/code&gt;, is the day an article last changed, and it comes with a duty: the article has to say what changed. the smallest change is made where it stands, with &lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt; for what was taken out and &lt;code&gt;&amp;lt;ins&amp;gt;&lt;/code&gt; for what was put in. the article on haiku 5.5 first said of four scores that they were &lt;del&gt;inside half a point of each other&lt;/del&gt; &lt;ins&gt;inside two points of each other, three of them inside 0.6&lt;/ins&gt;, with the four scores written in the same sentence.&lt;/p&gt;

&lt;p&gt;anything larger goes in a list with &lt;code&gt;class=&quot;changes&quot;&lt;/code&gt;: one dated entry for each day the article was touched, newest first. the date at the top of the page then gains an “updated”, linked to the list, and the checker will not let the list and the library disagree about the day. &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/changes&quot;&gt;this page has one&lt;/a&gt;, and so does &lt;a href=&quot;../../#/software/claude-haiku-5-5/changes&quot;&gt;the article that needed it most&lt;/a&gt;.&lt;/p&gt;

&lt;pre data-label=&quot;a change in place, and the list of changes&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&amp;lt;p&amp;gt;… they were &amp;lt;del&amp;gt;inside half a point&amp;lt;/del&amp;gt; &amp;lt;ins&amp;gt;inside two points&amp;lt;/ins&amp;gt; of each other.&amp;lt;/p&amp;gt;

&amp;lt;h2&amp;gt;changes&amp;lt;/h2&amp;gt;

&amp;lt;ul class=&quot;changes&quot;&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;time datetime=&quot;2026-10-12&quot;&amp;gt;12 october 2026&amp;lt;/time&amp;gt; twelve sentences and labels
    disagreed with the numbers beside them, and were made to agree.&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;what keeps it honest&lt;/h2&gt;

&lt;p&gt;one script, &lt;code&gt;scripts/check.mjs&lt;/code&gt;, reads the whole blog and fails on anything that breaks a rule. it runs on every pull request, and nothing reaches the blog without passing it. it checks that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;every visible letter is lowercase, outside the exceptions under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/words&quot;&gt;words&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;nothing is fetched from another site, and every link inside the blog leads somewhere&lt;/li&gt;
&lt;li&gt;the frame, each piece, each article and each image is under its weight&lt;/li&gt;
&lt;li&gt;a chart is a table the frame can draw, with its series named and no more than four of them&lt;/li&gt;
&lt;li&gt;an image says what it shows and gives its true shape&lt;/li&gt;
&lt;li&gt;every note is cited, and every note and reference has an address&lt;/li&gt;
&lt;li&gt;a quantity is written with the signs made for it&lt;/li&gt;
&lt;li&gt;an article the library calls updated says what changed, on the same day&lt;/li&gt;
&lt;li&gt;the feed, and what a link preview reads, have kept up with the library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;it cannot check that a page reads well. that part is done by looking, on a phone and on a wide screen.&lt;/p&gt;

&lt;h2&gt;changes&lt;/h2&gt;

&lt;ul class=&quot;changes&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt; the page grew on the day it was published, as the blog did. new since the morning: charts that say how sure they are, tables that draw themselves, tables read at a glance, the small things under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/words&quot;&gt;words&lt;/a&gt; and &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/lists&quot;&gt;lists&lt;/a&gt;, under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;code&lt;/a&gt; the pair, the callouts and the listing, under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/bytes&quot;&gt;bytes&lt;/a&gt; the diff, the map and the sequence, under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/images&quot;&gt;images&lt;/a&gt; the marks, the divider, pixel art and clips, under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/notes-and-references&quot;&gt;notes and references&lt;/a&gt; notes that open in place, kinds of evidence and the word of care, and around it all &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/the-frame-around-an-article&quot;&gt;the search and the keys&lt;/a&gt;, and what a link to an article &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/around-the-article&quot;&gt;says of it&lt;/a&gt; when it is pasted somewhere. at the end of the day every number the page gives about the blog was measured again. then it began to grow again, by subject. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/words&quot;&gt;words&lt;/a&gt;: glosses, readings over a word, facing text, sources as they were written, a sound, words tinted by a number, numbers as science writes them, and chemistry. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/lists&quot;&gt;lists&lt;/a&gt;: trees that show a change, trees with lengths, pipelines, conversations, cards of facts, and downloads with a sum. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/tables&quot;&gt;tables&lt;/a&gt;: tracks, deep time, yes and no, and totals that are added up. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/maths&quot;&gt;maths&lt;/a&gt;: numbers a reader can change, and curves. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/code&quot;&gt;code&lt;/a&gt;: tabs, sessions at a terminal, graphs and traces. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/bytes&quot;&gt;bytes&lt;/a&gt;: bits and alignments. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/notes-and-references&quot;&gt;notes and references&lt;/a&gt;: four more kinds of source, and a glossary. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/images&quot;&gt;images&lt;/a&gt;: a closer look at an opened one, marks by coordinates, a bar to measure by, panels, boards written in characters, strips of frames, pictures that take turns, and figures with numbers. &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/around-the-article&quot;&gt;around the article&lt;/a&gt;: one in another language. under &lt;a href=&quot;../../#/typography/everything-this-blog-can-do/charts&quot;&gt;charts&lt;/a&gt;: the sky, maps of tiles, events, dots joined in order, bars back to back, waterfalls, indexed lines, areas, slopes, histograms and boxes, flows and treemaps. when that was done, the numbers were measured once more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;notes&lt;/h2&gt;

&lt;ol class=&quot;notes&quot;&gt;
&lt;li id=&quot;note-fonts&quot;&gt;the two font files are served from the blog's own folder, with their licence beside them.&lt;/li&gt;
&lt;li id=&quot;note-inks&quot;&gt;each pair of the four inks was measured, on this paper colour, to hold apart for readers with the common forms of colour blindness. the hex dump uses the same four.&lt;/li&gt;
&lt;li id=&quot;note-pace&quot;&gt;230 words a minute is a comfortable pace for prose on a screen, and a guess. a table or a block of code is looked at, not read, so each counts as a quarter of a minute.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;references&lt;/h2&gt;

&lt;ol class=&quot;refs&quot;&gt;
&lt;li id=&quot;tufte-2006&quot;&gt;&lt;cite&gt;Tufte, E. R. (2006). &lt;i&gt;Beautiful Evidence&lt;/i&gt;. Graphics Press.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;woff2&quot;&gt;&lt;cite&gt;Levantovsky, V. &amp;amp; Levien, R., eds. (2018). &lt;i&gt;WOFF File Format 2.0&lt;/i&gt;. W3C Recommendation. &lt;a href=&quot;https://www.w3.org/TR/WOFF2/&quot;&gt;w3.org/TR/WOFF2&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;mathml-core&quot;&gt;&lt;cite&gt;Carlisle, D. &amp;amp; Wang, F., eds. &lt;i&gt;MathML Core&lt;/i&gt;. W3C. &lt;a href=&quot;https://www.w3.org/TR/mathml-core/&quot;&gt;w3.org/TR/mathml-core&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;rfc-4287&quot;&gt;&lt;cite&gt;Nottingham, M. &amp;amp; Sayre, R., eds. (2005). &lt;i&gt;The Atom Syndication Format&lt;/i&gt;. RFC 4287. &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc4287&quot;&gt;rfc-editor.org/rfc/rfc4287&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;mallama-2018&quot;&gt;&lt;cite&gt;Mallama, A. &amp;amp; Hilton, J. L. (2018). Computing apparent planetary magnitudes for &lt;i&gt;The Astronomical Almanac&lt;/i&gt;. &lt;i&gt;Astronomy and Computing&lt;/i&gt; 25, 10–24.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;williams-2025&quot;&gt;&lt;cite&gt;Williams, D. R. (2025). &lt;i&gt;Planetary Fact Sheet: Ratio to Earth Values&lt;/i&gt;. NASA Space Science Data Coordinated Archive. &lt;a href=&quot;https://nssdc.gsfc.nasa.gov/planetary/factsheet/planet_table_ratio.html&quot;&gt;nssdc.gsfc.nasa.gov/planetary/factsheet&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;bringhurst&quot;&gt;&lt;cite&gt;Bringhurst, R. (2012). &lt;i&gt;The Elements of Typographic Style&lt;/i&gt;, 4th ed. Hartley &amp;amp; Marks.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;wcag&quot;&gt;&lt;cite&gt;Campbell, A., Adams, C., Bradley Montgomery, R., Cooper, M. &amp;amp; Kirkpatrick, A., eds. (2024). &lt;i&gt;Web Content Accessibility Guidelines (WCAG) 2.2&lt;/i&gt;. W3C Recommendation. &lt;a href=&quot;https://www.w3.org/TR/WCAG22/&quot;&gt;w3.org/TR/WCAG22&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;meeus&quot;&gt;&lt;cite&gt;Meeus, J. (1998). &lt;i&gt;Astronomical Algorithms&lt;/i&gt;, 2nd ed. Willmann-Bell.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;wenger-2000&quot;&gt;&lt;cite&gt;Wenger, M., Ochsenbein, F., Egret, D. et al. (2000). The SIMBAD astronomical database: the CDS reference database for astronomical objects. &lt;i&gt;Astronomy and Astrophysics Supplement Series&lt;/i&gt; 143, 9–22. &lt;a href=&quot;https://doi.org/10.1051/aas:2000332&quot;&gt;doi.org/10.1051/aas:2000332&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;planck-2020&quot;&gt;&lt;cite&gt;Planck Collaboration (2020). Planck 2018 results. VI. Cosmological parameters. &lt;i&gt;Astronomy &amp;amp; Astrophysics&lt;/i&gt; 641, A6. &lt;a href=&quot;https://doi.org/10.1051/0004-6361/201833910&quot;&gt;doi.org/10.1051/0004-6361/201833910&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;gardner-1971&quot;&gt;&lt;cite&gt;Gardner, M. (1971). Mathematical games: on cellular automata, self-reproduction, the Garden of Eden and the game “life”. &lt;i&gt;Scientific American&lt;/i&gt; 224(2), 112–117.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;uniprot-p01308&quot;&gt;&lt;cite&gt;The UniProt Consortium. &lt;i&gt;Insulin, Homo sapiens&lt;/i&gt;. UniProtKB, entry P01308 (INS_HUMAN). &lt;a href=&quot;https://www.uniprot.org/uniprotkb/P01308/entry&quot;&gt;uniprot.org/uniprotkb/P01308&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;prado-martinez-2013&quot;&gt;&lt;cite&gt;Prado-Martinez, J., Sudmant, P. H., Kidd, J. M. et al. (2013). Great ape genetic diversity and population history. &lt;i&gt;Nature&lt;/i&gt; 499(7459), 471–475. &lt;a href=&quot;https://doi.org/10.1038/nature12228&quot;&gt;doi.org/10.1038/nature12228&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;scally-2012&quot;&gt;&lt;cite&gt;Scally, A., Dutheil, J. Y., Hillier, L. W. et al. (2012). Insights into hominid evolution from the gorilla genome sequence. &lt;i&gt;Nature&lt;/i&gt; 483(7388), 169–175. &lt;a href=&quot;https://doi.org/10.1038/nature10842&quot;&gt;doi.org/10.1038/nature10842&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;aziz-2025&quot;&gt;&lt;cite&gt;Aziz, N. A., Ali, E. Z., Mohd Khalid, M. K. N. et al. (2025). Novel HBB:c.375_376delAC mutation in a Malay patient with HbE beta-thalassemia intermedia: a case report. &lt;i&gt;Medicine&lt;/i&gt; 104(39), e44817. &lt;a href=&quot;https://doi.org/10.1097/MD.0000000000044817&quot;&gt;doi.org/10.1097/MD.0000000000044817&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;tariq-2021&quot;&gt;&lt;cite&gt;Tariq, A., Khurshid, S. &amp;amp; Sajjad, M. (2021). Evaluation of the high resolution melting approach for detection of β-thalassemia gene mutations. &lt;i&gt;Hemoglobin&lt;/i&gt; 45(1), 20–24. &lt;a href=&quot;https://doi.org/10.1080/03630269.2020.1867566&quot;&gt;doi.org/10.1080/03630269.2020.1867566&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;caesar&quot; data-kind=&quot;primary&quot;&gt;&lt;cite&gt;Caesar, C. Iulius. &lt;i lang=&quot;la&quot;&gt;Commentarii de Bello Gallico&lt;/i&gt;, book 1, chapter 1.&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;wp-trajan&quot; data-kind=&quot;secondary&quot;&gt;&lt;cite&gt;Wikipedia contributors. &lt;i&gt;Trajan's Column&lt;/i&gt;. Wikipedia, read 12 October 2026. &lt;a href=&quot;https://en.wikipedia.org/wiki/Trajan%27s_Column&quot;&gt;en.wikipedia.org/wiki/Trajan's_Column&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;birch-2012&quot;&gt;&lt;cite&gt;Birch, J. (2012). Worldwide prevalence of red-green color deficiency. &lt;i&gt;Journal of the Optical Society of America A&lt;/i&gt; 29(3), 313–320. &lt;a href=&quot;https://doi.org/10.1364/JOSAA.29.000313&quot;&gt;doi.org/10.1364/JOSAA.29.000313&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;bolland-2018&quot; data-kind=&quot;review&quot;&gt;&lt;cite&gt;Bolland, M. J., Grey, A. &amp;amp; Avenell, A. (2018). Effects of vitamin D supplementation on musculoskeletal health: a systematic review, meta-analysis, and trial sequential analysis. &lt;i&gt;The Lancet Diabetes &amp;amp; Endocrinology&lt;/i&gt; 6(11), 847–858. &lt;a href=&quot;https://doi.org/10.1016/S2213-8587(18)30265-1&quot;&gt;doi.org/10.1016/S2213-8587(18)30265-1&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;leboff-2022&quot; data-kind=&quot;trial&quot;&gt;&lt;cite&gt;LeBoff, M. S., Chou, S. H., Ratliff, K. A. et al. (2022). Supplemental vitamin D and incident fractures in midlife and older adults. &lt;i&gt;The New England Journal of Medicine&lt;/i&gt; 387(4), 299–309. &lt;a href=&quot;https://doi.org/10.1056/NEJMoa2202106&quot;&gt;doi.org/10.1056/NEJMoa2202106&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;melamed-2008&quot; data-kind=&quot;observational&quot;&gt;&lt;cite&gt;Melamed, M. L., Michos, E. D., Post, W. &amp;amp; Astor, B. (2008). 25-hydroxyvitamin D levels and the risk of mortality in the general population. &lt;i&gt;Archives of Internal Medicine&lt;/i&gt; 168(15), 1629–1637. &lt;a href=&quot;https://doi.org/10.1001/archinte.168.15.1629&quot;&gt;doi.org/10.1001/archinte.168.15.1629&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;refseq-hbb&quot;&gt;&lt;cite&gt;National Center for Biotechnology Information. &lt;i&gt;Homo sapiens hemoglobin subunit beta (HBB), RefSeqGene on chromosome 11&lt;/i&gt;. NCBI Reference Sequence NG_059281.1. &lt;a href=&quot;https://www.ncbi.nlm.nih.gov/nuccore/NG_059281.1&quot;&gt;ncbi.nlm.nih.gov/nuccore/NG_059281.1&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;ics-chart&quot;&gt;&lt;cite&gt;Cohen, K. M., Finney, S. C., Gibbard, P. L. &amp;amp; Fan, J.-X. (2013, updated). The ICS International Chronostratigraphic Chart. &lt;i&gt;Episodes&lt;/i&gt; 36(3), 199–204. &lt;a href=&quot;https://stratigraphy.org/chart&quot;&gt;stratigraphy.org/chart&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;ihgsc-2001&quot;&gt;&lt;cite&gt;International Human Genome Sequencing Consortium (2001). Initial sequencing and analysis of the human genome. &lt;i&gt;Nature&lt;/i&gt; 409(6822), 860–921. &lt;a href=&quot;https://doi.org/10.1038/35057062&quot;&gt;doi.org/10.1038/35057062&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;newsreader&quot;&gt;&lt;cite&gt;The Newsreader Project Authors (2020). &lt;i&gt;Newsreader&lt;/i&gt;. SIL Open Font License 1.1. &lt;a href=&quot;https://github.com/productiontype/Newsreader&quot;&gt;github.com/productiontype/Newsreader&lt;/a&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
  </entry>
  <entry xml:lang="es">
    <title>la liga de modelos de opencode go</title>
    <id>urn:uuid:b32d61fc-c93d-5aaf-be00-c52341cb3c98</id>
    <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/software/la-liga-de-modelos-de-opencode-go/"/>
    <published>2026-10-12T12:00:00Z</published>
    <updated>2026-10-14T12:00:00Z</updated>
    <summary>todos los modelos del plan, ordenados por sus benchmarks.</summary>
    <category term="software"/>
    <category term="ai"/>
    <category term="models"/>
    <category term="benchmarks"/>
    <content type="html" xml:base="https://nahuelgenchi.com/software/la-liga-de-modelos-de-opencode-go/">&lt;p&gt;treinta y dos modelos abiertos para programar, puntuados en ocho benchmarks independientes y combinados con lo que cada uno cuesta de verdad por solicitud en opencode go. no hay celdas estimadas: cada número está tomado de una fuente con nombre — datacurve, vals ai, artificial analysis, epoch ai o el informe del propio proveedor.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;traducción de &lt;a href=&quot;../../#/software/opencode-go-model-league&quot; hreflang=&quot;en&quot; lang=&quot;en&quot;&gt;the opencode go model league&lt;/a&gt; · los dos archivos para descargar están en inglés&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;8 benchmarks · 32 modelos clasificados · 597 valores con fuente&lt;/p&gt;

&lt;ul class=&quot;files&quot;&gt;
&lt;li&gt;&lt;a href=&quot;../opencode-go-model-league/report.md&quot; download&gt;informe de evidencia &lt;small&gt;markdown · 96 kb&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../opencode-go-model-league/benchmarks.xlsx&quot; download&gt;planilla completa &lt;small&gt;xlsx · 67 kb&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;la clasificación&lt;/h2&gt;

&lt;p&gt;los 32 modelos que hoy están en opencode go, del mejor al peor según la combinación de benchmarks y costo. atención a la columna de cobertura: un puesto alto apoyado en cuatro benchmarks vale menos que uno apoyado en siete.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;la clasificación&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;&lt;span class=&quot;rank&quot;&gt;#&lt;/span&gt;modelo&lt;/th&gt;
&lt;th&gt;deepswe&lt;/th&gt;
&lt;th&gt;terminal-bench 2.1&lt;/th&gt;
&lt;th&gt;scicode&lt;/th&gt;
&lt;th&gt;aa-lcr&lt;/th&gt;
&lt;th&gt;gpqa diamond&lt;/th&gt;
&lt;th&gt;swe-bench pro&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;terminal-bench 4.0&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;mmlu-pro&lt;/th&gt;
&lt;th&gt;$/solicitud est.&lt;/th&gt;
&lt;th&gt;cobertura&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;1&lt;/span&gt;step 5 preview free&lt;/th&gt;&lt;td&gt;67.7&lt;/td&gt;&lt;td&gt;85&lt;/td&gt;&lt;td&gt;58.9&lt;/td&gt;&lt;td&gt;88.3&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;31.82&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;&lt;strong&gt;gratis&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;2&lt;/span&gt;muse spark 1.3 contributor&lt;/th&gt;&lt;td class=&quot;best&quot;&gt;75.4&lt;/td&gt;&lt;td&gt;72.3&lt;/td&gt;&lt;td&gt;58.8&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;10.61&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00026&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;3&lt;/span&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td&gt;74.2&lt;/td&gt;&lt;td&gt;74.5&lt;/td&gt;&lt;td&gt;51.9&lt;/td&gt;&lt;td&gt;84&lt;/td&gt;&lt;td&gt;90.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;26.77&lt;/td&gt;&lt;td&gt;81.2&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;4&lt;/span&gt;claude haiku 5.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;82.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;64.8&lt;/td&gt;&lt;td&gt;39.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00078&lt;/td&gt;&lt;td&gt;4/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;5&lt;/span&gt;muse spark 1.2 contributor&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;69.7&lt;/td&gt;&lt;td&gt;57.4&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;90.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;6.06&lt;/td&gt;&lt;td&gt;88.28&lt;/td&gt;&lt;td&gt;$0.00026&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;6&lt;/span&gt;mimo-v2.6-flash&lt;/th&gt;&lt;td&gt;67.9&lt;/td&gt;&lt;td&gt;76.4&lt;/td&gt;&lt;td&gt;51.3&lt;/td&gt;&lt;td&gt;74.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;24.24&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00040&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;7&lt;/span&gt;deepseek v4 flash vision exp&lt;/th&gt;&lt;td&gt;59.3&lt;/td&gt;&lt;td&gt;83.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;12.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;3/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;8&lt;/span&gt;mimo-v2.6-pro&lt;/th&gt;&lt;td&gt;71.9&lt;/td&gt;&lt;td&gt;67.79&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;60.9&lt;/td&gt;&lt;td&gt;86.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;47.6&lt;/td&gt;&lt;td&gt;31.31&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00092&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;9&lt;/span&gt;gpt 6 luna&lt;/th&gt;&lt;td&gt;66.6&lt;/td&gt;&lt;td&gt;73.03&lt;/td&gt;&lt;td&gt;54.6&lt;/td&gt;&lt;td&gt;83.3&lt;/td&gt;&lt;td&gt;90.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;16.36&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00071&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;10&lt;/span&gt;deepseek v4 flash&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;50.3&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;90.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;18.69&lt;/td&gt;&lt;td&gt;86.21&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;11&lt;/span&gt;gpt 5.6 luna&lt;/th&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;79.03&lt;/td&gt;&lt;td&gt;53.6&lt;/td&gt;&lt;td&gt;83.7&lt;/td&gt;&lt;td&gt;91.1&lt;/td&gt;&lt;td&gt;62.7&lt;/td&gt;&lt;td&gt;17.27&lt;/td&gt;&lt;td&gt;86.04&lt;/td&gt;&lt;td&gt;$0.00146&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;12&lt;/span&gt;qwen3.8 flash&lt;/th&gt;&lt;td&gt;58.7&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;86.1&lt;/td&gt;&lt;td&gt;50.6&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;62.5&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00111&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;13&lt;/span&gt;mimo-v2.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;60.67&lt;/td&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;81.6&lt;/td&gt;&lt;td&gt;56.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;82.93&lt;/td&gt;&lt;td&gt;$0.00040&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;14&lt;/span&gt;glm-5.3-flash&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;62.9&lt;/td&gt;&lt;td&gt;51.6&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;91.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;32.8&lt;/td&gt;&lt;td&gt;86.1&lt;/td&gt;&lt;td&gt;$0.00190&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;15&lt;/span&gt;mimo-v2.5-pro&lt;/th&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;57.3&lt;/td&gt;&lt;td&gt;50.6&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;86.6&lt;/td&gt;&lt;td&gt;57.2&lt;/td&gt;&lt;td&gt;0.51&lt;/td&gt;&lt;td&gt;84.59&lt;/td&gt;&lt;td&gt;$0.00092&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;16&lt;/span&gt;hy4 preview&lt;/th&gt;&lt;td&gt;64.3&lt;/td&gt;&lt;td&gt;85.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;65.7&lt;/td&gt;&lt;td&gt;8.08&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00443&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;17&lt;/span&gt;glm-5.3&lt;/th&gt;&lt;td&gt;69&lt;/td&gt;&lt;td&gt;71.5&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;91.7&lt;/td&gt;&lt;td&gt;64.6&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;41.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01516&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;18&lt;/span&gt;deepseek v4 pro&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;54.7&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;80.3&lt;/td&gt;&lt;td&gt;92.8&lt;/td&gt;&lt;td&gt;55.4&lt;/td&gt;&lt;td&gt;14.14&lt;/td&gt;&lt;td&gt;86.97&lt;/td&gt;&lt;td&gt;$0.00287&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;19&lt;/span&gt;grok 4.6&lt;/th&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;78.28&lt;/td&gt;&lt;td&gt;56.5&lt;/td&gt;&lt;td&gt;80.3&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;94.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;20.3&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;89.4&lt;/td&gt;&lt;td&gt;$0.01775&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;20&lt;/span&gt;kimi k3&lt;/th&gt;&lt;td&gt;69&lt;/td&gt;&lt;td&gt;80.9&lt;/td&gt;&lt;td&gt;59.5&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;88.7&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td&gt;63.3&lt;/td&gt;&lt;td&gt;12.6&lt;/td&gt;&lt;td&gt;88&lt;/td&gt;&lt;td&gt;$0.03060&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;21&lt;/span&gt;grok 4.7&lt;/th&gt;&lt;td&gt;71&lt;/td&gt;&lt;td&gt;73.41&lt;/td&gt;&lt;td&gt;57.4&lt;/td&gt;&lt;td&gt;76.7&lt;/td&gt;&lt;td&gt;92.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;37.58&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01775&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;22&lt;/span&gt;longcat-2.0&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;50.19&lt;/td&gt;&lt;td&gt;36.3&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;59.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00105&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;23&lt;/span&gt;qwen3.7 plus&lt;/th&gt;&lt;td&gt;16.5&lt;/td&gt;&lt;td&gt;52.81&lt;/td&gt;&lt;td&gt;46.1&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;90&lt;/td&gt;&lt;td&gt;57.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;88.5&lt;/td&gt;&lt;td&gt;$0.00278&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;24&lt;/span&gt;kimi k2.6&lt;/th&gt;&lt;td&gt;23.89&lt;/td&gt;&lt;td&gt;53.6&lt;/td&gt;&lt;td&gt;51.5&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;td&gt;91.1&lt;/td&gt;&lt;td&gt;58.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;87.6&lt;/td&gt;&lt;td&gt;$0.01043&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;25&lt;/span&gt;minimax m3&lt;/th&gt;&lt;td&gt;13.3&lt;/td&gt;&lt;td&gt;53.56&lt;/td&gt;&lt;td&gt;47.1&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;92.9&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;1.01&lt;/td&gt;&lt;td&gt;84.22&lt;/td&gt;&lt;td&gt;$0.00374&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;26&lt;/span&gt;hy3&lt;/th&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;71.7&lt;/td&gt;&lt;td&gt;48.6&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;89.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00279&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;27&lt;/span&gt;qwen3.8 max&lt;/th&gt;&lt;td&gt;57.5&lt;/td&gt;&lt;td&gt;67.4&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;92.6&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;67.7&lt;/td&gt;&lt;td&gt;34.34&lt;/td&gt;&lt;td&gt;88.6&lt;/td&gt;&lt;td&gt;$0.01854&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;28&lt;/span&gt;minimax m2.7&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;48.69&lt;/td&gt;&lt;td&gt;50.1&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;87.4&lt;/td&gt;&lt;td&gt;56.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;80.43&lt;/td&gt;&lt;td&gt;$0.00354&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;29&lt;/span&gt;glm-5.2&lt;/th&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;67.8&lt;/td&gt;&lt;td&gt;51.2&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;89.5&lt;/td&gt;&lt;td&gt;62.1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;86.7&lt;/td&gt;&lt;td&gt;$0.01516&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;30&lt;/span&gt;kimi k2.7 code&lt;/th&gt;&lt;td&gt;30.5&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;47.8&lt;/td&gt;&lt;td&gt;79.3&lt;/td&gt;&lt;td&gt;89.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01208&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;—&lt;/span&gt;longcat 2.5 preview free&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;&lt;strong&gt;gratis&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;—&lt;/span&gt;space bunny&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00192&lt;/td&gt;&lt;td&gt;0/8&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;span class=&quot;swatch&quot;&gt;&lt;/span&gt;el mejor de la columna · — sin valor publicado · cobertura = benchmarks con datos (de 8) · gratis = modelo en vista previa gratuita dentro del plan&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;cómo leer esto&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;el puesto&lt;/b&gt; promedia el puesto de cada modelo en los ocho benchmarks y lo combina, mitad y mitad, con su puesto por costo por solicitud. el peso se puede ajustar en la planilla.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;el celeste&lt;/b&gt; marca el mejor valor de cada columna entre los 32 modelos.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;—&lt;/b&gt; quiere decir que al 10 de octubre de 2026 no se encontró ningún valor publicado en ninguna parte. no se estima nada.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;el costo&lt;/b&gt; es el precio estimado de una solicitud típica de go (la mezcla de tokens publicada en la documentación de go), con deepseek a su tarifa de horas valle y los modelos con niveles en su nivel base.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;los benchmarks, en breve&lt;/h2&gt;

&lt;p&gt;ocho benchmarks deciden la clasificación; el resto es contexto. cada entrada dice quién corre la evaluación, porque el &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt;, el andamiaje con que se corre, importa tanto como el puntaje.&lt;/p&gt;

&lt;h3&gt;los ocho benchmarks que puntúan&lt;/h3&gt;

&lt;dl&gt;
&lt;dt&gt;deepswe v1.1 &lt;small&gt;datacurve&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;benchmark de ingeniería de software de largo aliento: 113 tareas originales en 91 repositorios de código abierto y 5 lenguajes, corregidas por verificadores automáticos. las tareas se escriben desde cero en lugar de sacarse de pull requests reales, lo que mantiene baja la contaminación; la tabla pública corre todas las entradas con un mismo &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt; (mini-swe-agent), así que los números son comparables.&lt;/dd&gt;
&lt;dt&gt;terminal-bench 2.1 &lt;small&gt;vals ai · terminus 2&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;89 tareas de terminal en un entorno aislado: gestión de paquetes, compilaciones, git, servidores, administración de sistemas. la revisión 2.1 reparó 28 tareas para cerrar los huecos por los que se podía cobrar la recompensa sin resolver la tarea. tomamos las corridas oficiales de vals ai con terminus 2 como la línea comparable; los números de los proveedores en el mismo benchmark se conservan en la planilla, pero quedan más abajo y no deben compararse a través de esa frontera.&lt;/dd&gt;
&lt;dt&gt;scicode &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;computación científica de nivel de investigación: problemas de física, matemática, biología y química partidos en subpasos que exigen formación real en el área. artificial analysis publica los valores actuales; el conjunto de datos de base está en revisión después de una auditoría, así que todas las cifras de scicode pueden cambiar.&lt;/dd&gt;
&lt;dt&gt;aa-lcr &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;razonamiento con contexto largo: 100 preguntas sobre documentos de 10,000 a 100,000 tokens, evaluadas por un llm. mide si un modelo de verdad usa el contexto largo o solo lo mira por encima: la falla que separa las ventanas de contexto reales de las de ficha técnica.&lt;/dd&gt;
&lt;dt&gt;gpqa diamond &lt;small&gt;artificial analysis · epoch ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el subconjunto diamond de google-proof q&amp;amp;a: preguntas de nivel de posgrado escritas por expertos en física, química y biología, hechas para que no se puedan responder adivinando. los valores vienen de artificial analysis donde los hay, y de epoch ai para el puñado de modelos que aa no cubre.&lt;/dd&gt;
&lt;dt&gt;swe-bench pro &lt;small&gt;casi todo informado por los proveedores&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el sucesor más difícil de swe-bench, de scale ai: tareas de ingeniería más largas y más realistas, con cambios en varios archivos. para la mayoría de estos modelos no se pudo acceder a ninguna tabla pública estandarizada, así que esta columna es en gran parte cada proveedor informando sus propios números: sirve para ver hacia dónde apuntan, no como tabla de posiciones.&lt;/dd&gt;
&lt;dt&gt;terminal-bench 4.0 &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;la generación actual de terminal-bench: bastante más difícil que la 2.1 (el mejor puntaje en go es 41.9) y muy sensible al agente con que se corrió. se prefieren los números independientes con mini-swe-agent; las cifras de los proveedores aparecen solo donde no hay nada independiente.&lt;/dd&gt;
&lt;dt&gt;mmlu-pro &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el hermano más difícil de mmlu, con 14 opciones y 57 materias: conocimiento amplio, profesional y de ciencias, con distractores más duros. vals ai dejó de correrlo para los modelos nuevos, así que los más recientes simplemente no tienen valor: es un hueco de cobertura, no un cero.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;datos de referencia: se muestran, no puntúan&lt;/h3&gt;

&lt;dl&gt;
&lt;dt&gt;aa coding index &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el índice de agentes de programación: el compuesto de aa con deepswe v1.1 + terminal-bench 4.0 + swe-atlas-qna, obtenido con un agente o &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt; con nombre (claude code, codex…). donde la página de agentes tiene el acceso restringido, los valores recurren al índice de programación por modelo de aa, que es otro compuesto. la pestaña de fuentes indica a cuál de los dos corresponde cada cifra.&lt;/dd&gt;
&lt;dt&gt;vals index &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el compuesto versionado de vals ai sobre una batería de 15 sectores: programación (con tb 4.0, vibe code bench y migración de código), web, finanzas y más. la revisión v2.1 del 2026-09-25 cambió la mezcla, así que acá solo aparecen los valores de la página actual: las lecturas de versiones anteriores se excluyen en vez de mezclarse.&lt;/dd&gt;
&lt;dt&gt;matemática &lt;small&gt;según el proveedor&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el benchmark de matemática que haya publicado cada proveedor: aime 2026, matharena apex, los niveles de frontiermath, hmmt, proofbench. la prueba cambia de un modelo a otro, así que la columna es informativa: la pestaña de fuentes de la planilla dice qué prueba hay detrás de cada cifra.&lt;/dd&gt;
&lt;dt&gt;metadatos de las corridas de deepswe &lt;small&gt;datacurve&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;el intervalo de confianza (±), los pasos por tarea y los tokens de salida por tarea, tomados de las filas de la tabla de datacurve, cuando el modelo tiene una. es contexto más que puntaje: muestra si una ventaja es real o está dentro del ruido; por ejemplo, el 74±3 de gpt-6 astra frente al 75.4 de muse spark 1.3, que no tiene intervalo medido.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;lo que destaca&lt;/h2&gt;

&lt;h3&gt;gana el modelo gratuito&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;step 5 preview free&lt;/b&gt; encabeza la clasificación: tres de los ocho puntajes mejores o casi mejores (tb 2.1 85.0, scicode 58.9, aa-lcr 88.3) a costo cero. las vistas previas gratuitas duran un tiempo limitado, así que la elección práctica es otra: ver muse spark 1.3 más abajo.&lt;/p&gt;

&lt;h3&gt;un modelo de $0.10 es el que más rinde por lo que cuesta en el plan&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;muse spark 1.3 contributor&lt;/b&gt; es el n.º 2 de la general y se queda con la corona de deepswe (75.4) por más o menos un cuarto de milésima de dólar por solicitud. &lt;b&gt;deepseek v4.1 flash&lt;/b&gt; (n.º 3) junta el segundo mejor puntaje de deepswe de toda la lista, 74.2, con un precio cercano al de muse. una salvedad: el nivel contributor entrena con tus prompts y está limitado a algunas regiones.&lt;/p&gt;

&lt;h3&gt;terminal-bench 4.0 es otro mundo&lt;/h3&gt;
&lt;p&gt;toda la lista sufre en el benchmark de terminal actual: el mejor puntaje en go es el 41.9 de glm-5.3. las corridas independientes con mini-swe-agent suelen quedar 10 puntos o más por debajo de los números de los proveedores, así que conviene tratar cada cifra de la 4.0 como atada a su &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt;.&lt;/p&gt;

&lt;h3&gt;no ganan los puntajes: gana el costo&lt;/h3&gt;
&lt;p&gt;kimi k3 lidera aa-lcr (88.7) y mimo-v2.6-pro casi tiene asegurado scicode (60.9), y sin embargo los dos quedan a mitad de tabla: a $3/$15, e incluso a $0.435 por millón, su costo por solicitud tira la combinación hacia abajo. una clasificación solo por calidad se vería muy distinta.&lt;/p&gt;

&lt;h2&gt;índices compuestos, matemática y detalles de las corridas&lt;/h2&gt;

&lt;p&gt;columnas informativas de la planilla: los compuestos y los puntajes de matemática no forman parte del puntaje de la clasificación. matemática usa un benchmark distinto según el proveedor (aime 2026, matharena apex, frontiermath, hmmt, proofbench…), así que hay que compararlos con cuidado.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;índices compuestos, matemática y detalles de las corridas&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;modelo&lt;/th&gt;
&lt;th&gt;aa coding index&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;vals index&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;matemática&lt;/th&gt;
&lt;th&gt;deepswe ±ic&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-5&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;pasos/tarea&lt;/th&gt;
&lt;th&gt;tokens de salida/tarea&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;step 5 preview free&lt;/th&gt;&lt;td&gt;51.2&lt;/td&gt;&lt;td&gt;49.35&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;muse spark 1.3 contributor&lt;/th&gt;&lt;td&gt;54.3&lt;/td&gt;&lt;td&gt;58.16&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;51.32&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;claude haiku 5.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;54.31&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;muse spark 1.2 contributor&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.29&lt;/td&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;101&lt;/td&gt;&lt;td&gt;99k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.6-flash&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;53.23&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 flash vision exp&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;36.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.6-pro&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;55.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt 6 luna&lt;/th&gt;&lt;td&gt;41.1&lt;/td&gt;&lt;td&gt;51.22&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 flash&lt;/th&gt;&lt;td&gt;38.7&lt;/td&gt;&lt;td&gt;47.96&lt;/td&gt;&lt;td&gt;58.6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;153&lt;/td&gt;&lt;td&gt;108k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt 5.6 luna&lt;/th&gt;&lt;td&gt;43.2&lt;/td&gt;&lt;td&gt;51.69&lt;/td&gt;&lt;td&gt;78.6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;102&lt;/td&gt;&lt;td&gt;73k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.8 flash&lt;/th&gt;&lt;td&gt;73&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.89&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.3-flash&lt;/th&gt;&lt;td&gt;71.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;93.9&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;123&lt;/td&gt;&lt;td&gt;73k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.5-pro&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;33.84&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hy4 preview&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.94&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.3&lt;/th&gt;&lt;td&gt;74.8&lt;/td&gt;&lt;td&gt;53.51&lt;/td&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;124&lt;/td&gt;&lt;td&gt;80k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 pro&lt;/th&gt;&lt;td&gt;43.1&lt;/td&gt;&lt;td&gt;47.63&lt;/td&gt;&lt;td&gt;65.3&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;155&lt;/td&gt;&lt;td&gt;106k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grok 4.6&lt;/th&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;52.09&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;50k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k3&lt;/th&gt;&lt;td&gt;76.2&lt;/td&gt;&lt;td&gt;50.3&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;98&lt;/td&gt;&lt;td&gt;81k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grok 4.7&lt;/th&gt;&lt;td&gt;56.3&lt;/td&gt;&lt;td&gt;54.95&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;longcat-2.0&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;81.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.7 plus&lt;/th&gt;&lt;td&gt;55.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;92.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k2.6&lt;/th&gt;&lt;td&gt;61.8&lt;/td&gt;&lt;td&gt;55.17&lt;/td&gt;&lt;td&gt;96.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;minimax m3&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;36.53&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hy3&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.8 max&lt;/th&gt;&lt;td&gt;43.3&lt;/td&gt;&lt;td&gt;48.27&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;111&lt;/td&gt;&lt;td&gt;95k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;minimax m2.7&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;60.14&lt;/td&gt;&lt;td&gt;94.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.2&lt;/th&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;65.02&lt;/td&gt;&lt;td&gt;99.2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;129&lt;/td&gt;&lt;td&gt;78k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k2.7 code&lt;/th&gt;&lt;td&gt;60.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;longcat 2.5 preview free&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;space bunny&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;el aa coding index mezcla el índice de agentes de aa con su índice de programación por modelo (nota 2) · la versión del vals index varía (nota 3) · el benchmark de matemática cambia según el modelo&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;sin clasificar&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;longcat 2.5 preview free&lt;/b&gt; y &lt;b&gt;space bunny&lt;/b&gt; están en el plan, pero no tienen puntajes publicados en ninguno de los ocho benchmarks. la identidad de space bunny sigue sin confirmarse (figura en la lista sin decir de quién es, posiblemente de la familia minimax). hasta que alguno de los dos publique, no se los puede ubicar.&lt;/p&gt;

&lt;h2&gt;ya no están en el plan&lt;/h2&gt;

&lt;p&gt;se conservan como referencia: siete modelos que aparecían en la versión anterior de la planilla y que no están en la lista actual de go. tres de ellos siguen existiendo con pago por uso en opencode zen.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;modelos que ya no están en el plan&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;modelo&lt;/th&gt;
&lt;th class=&quot;l&quot;&gt;estado&lt;/th&gt;
&lt;th&gt;deepswe&lt;/th&gt;
&lt;th&gt;terminal-bench 2.1&lt;/th&gt;
&lt;th&gt;scicode&lt;/th&gt;
&lt;th&gt;aa-lcr&lt;/th&gt;
&lt;th&gt;gpqa diamond&lt;/th&gt;
&lt;th&gt;swe-bench pro&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;terminal-bench 4.0&lt;sup&gt;&lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;mmlu-pro&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 astra&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no está en go: pago por uso en zen&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;87.27&lt;/td&gt;&lt;td&gt;56.5&lt;/td&gt;&lt;td&gt;80.7&lt;/td&gt;&lt;td&gt;96.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;58.18&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gemini 3.8 flash&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no está en go: pago por uso en zen&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;81.27&lt;/td&gt;&lt;td&gt;56.6&lt;/td&gt;&lt;td&gt;81.3&lt;/td&gt;&lt;td&gt;95.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;19.09&lt;/td&gt;&lt;td&gt;90.22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 sol&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no está en go: pago por uso en zen&lt;/td&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;83.15&lt;/td&gt;&lt;td&gt;57.6&lt;/td&gt;&lt;td&gt;83.7&lt;/td&gt;&lt;td&gt;94.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.39&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.7 max&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;ya no está en la lista de go&lt;/td&gt;&lt;td&gt;21.6&lt;/td&gt;&lt;td&gt;61.05&lt;/td&gt;&lt;td&gt;49.5&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;60.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;89.31&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.6 plus&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;ya no está en la lista de go&lt;/td&gt;&lt;td&gt;2.65&lt;/td&gt;&lt;td&gt;53.18&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;88.2&lt;/td&gt;&lt;td&gt;56.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;87.67&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.1&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;ya no está en la lista de go&lt;/td&gt;&lt;td&gt;18.9&lt;/td&gt;&lt;td&gt;56.9&lt;/td&gt;&lt;td&gt;44.8&lt;/td&gt;&lt;td&gt;73.7&lt;/td&gt;&lt;td&gt;86.8&lt;/td&gt;&lt;td&gt;58.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;86.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;union alpha free&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;retirado (vista previa gratuita, sin nombre)&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;h2&gt;cambios&lt;/h2&gt;

&lt;ul class=&quot;changes&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-14&quot;&gt;14 de octubre de 2026&lt;/time&gt; dos oraciones de &lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go/lo-que-destaca&quot;&gt;lo que destaca&lt;/a&gt; no coincidían con la clasificación, y se corrigieron. ningún número de las tablas cambió. muse spark 1.3 contributor cuesta más o menos un cuarto de milésima de &lt;del&gt;centavo&lt;/del&gt; &lt;ins&gt;dólar&lt;/ins&gt; por solicitud, y deepseek v4.1 flash junta &lt;del&gt;el mejor puntaje de terminal-bench 2.1 de toda la lista&lt;/del&gt; &lt;ins&gt;el segundo mejor puntaje de deepswe de toda la lista&lt;/ins&gt; con un precio cercano al de muse.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;notas y salvedades&lt;/h2&gt;

&lt;ol class=&quot;notes&quot;&gt;
&lt;li id=&quot;note-1&quot;&gt;&lt;b&gt;swe-bench pro viene casi todo de los proveedores.&lt;/b&gt; para la mayoría de estos modelos no se pudo acceder a ninguna tabla pública estandarizada; los pocos valores independientes (claude haiku 5.5 64.8, kimi k3 63.3) son agregaciones. la columna sirve para ver hacia dónde apuntan, no como tabla de posiciones.&lt;/li&gt;
&lt;li id=&quot;note-2&quot;&gt;&lt;b&gt;el aa coding index mezcla dos productos.&lt;/b&gt; donde se pudo leer el índice de agentes de programación de aa (deepswe v1.1 + terminal-bench 4.0 + swe-atlas-qna, con su &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt; indicado), se usa ese; si no, lo reemplaza el índice de programación por modelo de aa, que es otro compuesto. la pestaña de fuentes dice de qué producto sale cada valor.&lt;/li&gt;
&lt;li id=&quot;note-3&quot;&gt;&lt;b&gt;el vals index tiene versiones.&lt;/b&gt; se usan los valores de la página actual (v2.1 donde existe); los números anteriores a la v2.1 (por ejemplo, las lecturas de la época del 59.47 de muse spark 1.3) difieren de manera sistemática, y se comprobó que varios «titulares de precisión» de las páginas de los modelos no eran el índice, así que se excluyeron.&lt;/li&gt;
&lt;li id=&quot;note-4&quot;&gt;&lt;b&gt;terminal-bench 4.0 es extremadamente sensible al &lt;i lang=&quot;en&quot;&gt;harness&lt;/i&gt;.&lt;/b&gt; se prefieren las corridas de vals con mini-swe-agent, y los números de los proveedores se conservan solo donde no hay nada independiente. minimax m3 lo muestra bien: 1.01 independiente contra 66.0 del proveedor, en otra versión del benchmark.&lt;/li&gt;
&lt;li id=&quot;note-5&quot;&gt;&lt;b&gt;el ±ic, los pasos y los tokens de salida de deepswe&lt;/b&gt; salen solo de las filas de la tabla de datacurve; faltan donde la fila del modelo no es una de las 21 configuraciones que se muestran. sirven para juzgar si una ventaja es real (por ejemplo, el 74±3 de gpt-6 astra frente al 75.4 de muse spark 1.3, que no tiene intervalo medido).&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&quot;meta&quot;&gt;&lt;a href=&quot;https://opencode.ai/go&quot;&gt;opencode.ai/go&lt;/a&gt; · generado el 10 de octubre de 2026 a partir de la planilla de benchmarks actualizada&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>the small model that got serious</title>
    <id>urn:uuid:00555ccb-f182-5900-9b3d-18fa9f1b4470</id>
    <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/software/claude-haiku-5-5/"/>
    <published>2026-10-10T12:00:00Z</published>
    <updated>2026-10-12T12:00:00Z</updated>
    <summary>claude haiku 5.5 and its benchmarks, in plain language.</summary>
    <category term="software"/>
    <category term="ai"/>
    <category term="models"/>
    <category term="benchmarks"/>
    <content type="html" xml:base="https://nahuelgenchi.com/software/claude-haiku-5-5/">&lt;p&gt;anthropic's new haiku is the cheapest, fastest model in its family, and it now scores close to models that cost several times more. this report gathers every benchmark published about it so far, explains what each one actually measures in ordinary words, and sets the results against deepseek v4.1 flash, the open-weight model it will be compared with everywhere.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;22 matched tests from three labs&lt;/p&gt;

&lt;h2&gt;what anthropic actually built&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;a small model, in the sense that matters to a buyer: cheap enough to run a million times a day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;claude haiku 5.5 arrived on 7 october 2026. it is the small member of claude's current generation, sitting under sonnet 5.5 and opus 5.5 the way a compact car sits under a saloon. anthropic describes it as the cheapest, fastest and most capable small model it has ever shipped, and the pricing backs that up. on average, running it costs about 75% less than running its predecessor, haiku 4.5.&lt;/p&gt;

&lt;p&gt;small models are not built for the hardest problems. they are built for the million small decisions a business makes every day: sorting incoming messages, pulling a number out of an invoice, deciding whether a complaint needs a human, rewriting a paragraph, or acting as a quick helper inside a larger job. anthropic positions haiku 5.5 for exactly this kind of work, and says it pairs well with its bigger siblings as a subagent, which is a helper process that does one narrow job and reports back.&lt;/p&gt;

&lt;p&gt;the technical shape of it is simple to describe. it reads text and images and writes text back. it can hold a million tokens of context in its head, roughly fifteen hundred pages of a4, and it can write a reply of up to 128,000 tokens, close to a hundred thousand words, in one go. it is a reasoning model, meaning it can think before it answers, and it is the first haiku you can tell how hard to think, with five settings from low to max.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;claude haiku 5.5 at a glance&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;claude haiku 5.5&lt;/th&gt;&lt;th&gt;figure&lt;/th&gt;&lt;th class=&quot;words&quot;&gt;what it means&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;released&lt;/th&gt;&lt;td&gt;oct 2026&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;model id &lt;code&gt;claude-haiku-5-5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;list price&lt;/th&gt;&lt;td&gt;$0.10 / $0.50&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;input and output per million tokens&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;context&lt;/th&gt;&lt;td&gt;1,000,000 tokens&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;about 1,500 pages of text&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;max reply&lt;/th&gt;&lt;td&gt;128,000 tokens&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;roughly 100,000 words&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;speed&lt;/th&gt;&lt;td&gt;240 t/s&lt;/td&gt;&lt;td class=&quot;words&quot;&gt;tokens written per second&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;the competitor in this report, deepseek v4.1 flash, came out a month earlier, on 10 september 2026. it comes from a chinese lab, and it is a different kind of product: the model itself is open-weight software under the &lt;abbr&gt;MIT&lt;/abbr&gt; licence, so anyone can download it and run it on their own machines. it is also a much bigger piece of machinery, with 552 billion parameters of which about 16 billion are used per word generated, plus a separate 196 billion parameter memory table that the model can look things up in. it reads images natively, holds a million tokens of context, and can write replies up to 384,000 tokens long.&lt;/p&gt;

&lt;p&gt;comparing the two is not quite apples to apples, and that is part of what makes the numbers interesting. one is a cloud service priced by the token. the other is software you can own, with a price that changes depending on the hour of the day you send your request.&lt;/p&gt;

&lt;h2&gt;how to read a benchmark&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;three habits will keep you from being misled, and none of them require any technical knowledge.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;most benchmarks report a single number, usually a percentage, and a higher number is better. the percentage is the share of tasks the model finished correctly. the tasks are built to be hard in a specific way: write a program that works, read a chart and answer a question about it, fix a broken server, write a clinical note from a medical conversation.&lt;/p&gt;

&lt;p&gt;the first habit is to ask who graded the test. a maker's own table is a claim, not a measurement, and every maker picks the tests that flatter it. an independent lab is better, and the two labs used in this report, artificial analysis and vals ai, both run many models through the same harness so the results can be compared. both are used here wherever they exist.&lt;/p&gt;

&lt;p&gt;the second habit is to check the version of the test. terminal-bench, the best known test of real computer work, has gone through four versions in about a year. version 2.1 is much easier than version 4.0, which strips out tasks that modern models now solve and gives the model eight hours per task. a score of 90 on the old version and a score of 31 on the new one are not in conflict; they are different exams. anywhere two versions appear in this report, they are labelled.&lt;/p&gt;

&lt;p&gt;the third habit is to check the effort setting. both models can be told how hard to think, and a higher setting costs more and usually scores better. anthropic's headline table uses max effort, so the numbers here do too, and &lt;a href=&quot;../../#/software/claude-haiku-5-5/the-thinking-dial&quot;&gt;the section on the dial&lt;/a&gt; shows what the settings are worth.&lt;/p&gt;

&lt;p&gt;one more thing about scores in general: differences of a point or two on most of these tests are inside the noise. run the same model twice and the score moves. the gaps worth trusting are the large ones, like the 32 point spread on proofbench later in this report.&lt;/p&gt;

&lt;pre data-label=&quot;what a benchmark result looks like when a lab stores it&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;model&quot;: &quot;claude-haiku-5-5&quot;,
  &quot;benchmark&quot;: &quot;Terminal-Bench 4.0&quot;,
  &quot;score&quot;: 0.392,
  &quot;effort&quot;: &quot;max&quot;,
  &quot;source&quot;: &quot;vendor_table&quot;
}&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;anthropic's own results&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;the launch table, test by test, with the plain english version of what each exam is asking.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;anthropic published its results at max effort, which makes them directly comparable with deepseek's own maximum-effort table. not every test has a number on both sides, and where one is missing it is shown as blank rather than guessed at.&lt;/p&gt;

&lt;h3&gt;terminal-bench 4.0: real work in a text-only computer&lt;/h3&gt;

&lt;p&gt;this is the benchmark that decides whether a model can be trusted with a job and left alone. it gets a computer it can only drive through a command line, which is the plain-text interface developers use, and a list of genuine multi-step tasks: set up a web server, fix a broken code base, analyse a data set, debug a failing service. it has eight hours per task. the score is simply the share of tasks it finished, correctly, without help.&lt;/p&gt;

&lt;p&gt;haiku 5.5 scores &lt;strong&gt;39.2%&lt;/strong&gt;. haiku 4.5, the previous generation, scored 0.0%, which is a striking way of saying the small model has gone from useless to usable at this kind of work. deepseek v4.1 flash reports &lt;strong&gt;31.2%&lt;/strong&gt; on its own harness, and two independent labs then measured both models, so this is one of the few tests with three separate readings.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;terminal-bench 4.0, share of tasks completed, at max effort&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;run&lt;/th&gt;&lt;th&gt;haiku 5.5&lt;/th&gt;&lt;th&gt;deepseek v4.1 flash&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the makers' own tables&lt;/th&gt;&lt;td&gt;39.2%&lt;/td&gt;&lt;td&gt;31.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;artificial analysis&lt;/th&gt;&lt;td&gt;32.8%&lt;/td&gt;&lt;td&gt;26.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vals ai&lt;/th&gt;&lt;td&gt;35.4%&lt;/td&gt;&lt;td&gt;19.7%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;haiku 5.5 leads in all three runs, by six to sixteen points. sources: &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-launch&quot;&gt;anthropic launch table&lt;/a&gt;, &lt;a href=&quot;../../#/software/claude-haiku-5-5/deepseek-report&quot;&gt;deepseek technical report&lt;/a&gt;, &lt;a href=&quot;../../#/software/claude-haiku-5-5/artificial-analysis&quot;&gt;artificial analysis&lt;/a&gt;, &lt;a href=&quot;../../#/software/claude-haiku-5-5/vals-ai&quot;&gt;vals ai&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;osworld: driving a computer like a person&lt;/h3&gt;

&lt;p&gt;the test here is an ordinary desktop screen. the model sees a screenshot and has to click, type, drag and scroll the way a person would, in order to finish jobs like converting a batch of files or filling in a form across two applications. it is the closest thing on the market to measuring whether an &lt;abbr&gt;AI&lt;/abbr&gt; can be a competent office assistant.&lt;/p&gt;

&lt;p&gt;anthropic reports &lt;strong&gt;72.4%&lt;/strong&gt; for haiku 5.5, but that number gives partial credit for getting some of the way through a task. the stricter version, which only counts tasks where every step ended up right, is &lt;strong&gt;37.1%&lt;/strong&gt;. the gap between the two is the honest measure of the model: it is good at most of the steps and much less reliable at the whole job. deepseek has published no osworld result, so the chart uses anthropic's other models and openai's two recent models as reference points.&lt;/p&gt;

&lt;figure class=&quot;multiples&quot;&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;partial credit, steps finished&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model&lt;/th&gt;&lt;th&gt;score&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku 5.5&lt;/th&gt;&lt;td&gt;72.4%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6.1 sol&lt;/th&gt;&lt;td&gt;76.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sonnet 5.5&lt;/th&gt;&lt;td&gt;83.9%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;opus 5.5&lt;/th&gt;&lt;td&gt;87.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;haiku 4.5&lt;/th&gt;&lt;td&gt;15.7%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;strict score, every step correct&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model&lt;/th&gt;&lt;th&gt;score&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku 5.5&lt;/th&gt;&lt;td&gt;37.1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6.1 sol&lt;/th&gt;&lt;td&gt;39.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sonnet 5.5&lt;/th&gt;&lt;td&gt;48.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;opus 5.5&lt;/th&gt;&lt;td&gt;53.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 luna&lt;/th&gt;&lt;td&gt;17.1%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;strong&gt;osworld 2.1, offline tasks.&lt;/strong&gt; on partial credit haiku 5.5 comes close to gpt-6.1 sol. on the strict measure, where nothing counts unless the task is fully finished, the gap to the big models opens up and haiku lands at 37.1%. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-system-card&quot;&gt;anthropic system card&lt;/a&gt;, 82 tasks, five attempts each. deepseek publishes no osworld score.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;humanity's last exam: the hardest written test&lt;/h3&gt;

&lt;p&gt;humanity's last exam is a set of questions written by experts across dozens of fields, built specifically to be at the edge of what a model can answer. half the value is the split between answering from the model's own knowledge and answering with tools, which lets it search the web and run calculations.&lt;/p&gt;

&lt;p&gt;closed book, haiku 5.5 answers &lt;strong&gt;45.9%&lt;/strong&gt; of questions correctly, a large jump from the 10.2% of haiku 4.5. deepseek reports &lt;strong&gt;39.1%&lt;/strong&gt; on its text-only subset. with tools switched on, deepseek reports &lt;strong&gt;63.9%&lt;/strong&gt; and anthropic reports &lt;strong&gt;57.4%&lt;/strong&gt; for haiku. those two with-tools numbers come from the makers' own setups, which are not identical, so it is fairer to say the models are close here than to declare a winner.&lt;/p&gt;

&lt;h3&gt;professional work: gdpval and aa-briefcase&lt;/h3&gt;

&lt;p&gt;gdpval is built from real tasks taken from professional jobs in law, finance, engineering, medicine and consulting. expert graders compare the outputs the way they would compare the work of two candidates. the score is an elo rating, the same scale used in chess, so 1620 does not mean 1620 out of anything; it means the model consistently beat models rated below it. haiku 5.5 reaches &lt;strong&gt;1620&lt;/strong&gt;, well above the 1437 of gpt-6 luna and the 735 of haiku 4.5, and below the 1840 of sonnet 5.5. deepseek has published no gdpval result, so the nearest independent read on deepseek's professional work is &lt;a href=&quot;../../#/software/claude-haiku-5-5/twenty-two-tests-one-lab&quot;&gt;the vals suite later in this report&lt;/a&gt;, where the two are separated by a point or two.&lt;/p&gt;

&lt;p&gt;aa-briefcase is a longer and meaner version of the same idea: multi-week projects, thousands of source files, and grading that mixes mechanical checks with a judgement of whether the analysis and the presentation hold up. haiku 5.5 reaches &lt;strong&gt;1578&lt;/strong&gt;. neither lab nor deepseek has published a briefcase number, which is worth knowing, because briefcase is one of the tests where the bigger models pull clearly ahead.&lt;/p&gt;

&lt;h3&gt;frontiercode: code good enough to merge&lt;/h3&gt;

&lt;p&gt;frontiercode asks a question a development team actually cares about. given a real code base, can the model produce a change that is correct, stays inside the requested scope, follows the project's conventions, and passes its tests, so that a reviewer can merge it without repairs? haiku 5.5 scores &lt;strong&gt;46.4%&lt;/strong&gt; at max effort, at an average cost of about &lt;strong&gt;$1.33&lt;/strong&gt; per attempt including the attempts that failed. at medium effort it drops to 41.6% and the average attempt costs about thirteen cents. deepseek has no public frontiercode entry.&lt;/p&gt;

&lt;h3&gt;chartography: reading charts like an analyst&lt;/h3&gt;

&lt;p&gt;charts are harder for machines than they look, because the answer depends on reading an axis correctly, estimating a position, and knowing the conventions of the chart type. haiku 5.5 scores &lt;strong&gt;46.4%&lt;/strong&gt; without tools, against 29.1% for luna and 61.6% for sonnet 5.5. deepseek's published 78.9% on this test was produced with tools switched on and a half million token context window, so it is not a like-for-like comparison, and this report does not treat it as one.&lt;/p&gt;

&lt;h2&gt;the independent scoreboard&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;artificial analysis runs every model through the same ten tests. the average is a rough but useful summary.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;the intelligence index is the closest thing the industry has to a shared report card. it blends ten evaluations covering reasoning, knowledge, mathematics, coding and agentic work, and every model is run through the identical harness at a declared effort setting. on that basis haiku 5.5 scores &lt;strong&gt;43&lt;/strong&gt; and deepseek v4.1 flash scores &lt;strong&gt;39&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;for context, that puts haiku 5.5 one point behind kimi k3, which is an open-weight model nearly three trillion parameters in size, and ahead of gpt-6 luna, gemini 3.8 flash and glm-5.3 flash. it is still 13 points behind anthropic's own sonnet 5.5, which is a useful reminder that haiku is not being sold as the smartest model in the family, only as the one you can afford to call a million times.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;artificial analysis intelligence index v4.3.2, maximum effort&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model&lt;/th&gt;&lt;th&gt;index&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sonnet 5.5&lt;/th&gt;&lt;td&gt;56&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k3&lt;/th&gt;&lt;td&gt;44&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku 5.5&lt;/th&gt;&lt;td&gt;43&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.3 flash&lt;/th&gt;&lt;td&gt;42&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gemini 3.8 flash&lt;/th&gt;&lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td&gt;39&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 luna&lt;/th&gt;&lt;td&gt;38&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the index averages ten separate evaluations. haiku 5.5 sits four points ahead of deepseek v4.1 flash on the same harness.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;the one test deepseek clearly wins&lt;/h3&gt;

&lt;p&gt;automationbench measures repeated office work inside software: create a record in one app, copy the result into another, send a summary to a third, and check that each step actually happened. it is the kind of work that is boring for people and expensive to supervise.&lt;/p&gt;

&lt;p&gt;on artificial analysis's independent run, deepseek v4.1 flash scores &lt;strong&gt;68.9%&lt;/strong&gt; against haiku 5.5's &lt;strong&gt;35.4%&lt;/strong&gt;. that is the largest lead deepseek holds anywhere in the public record. two honest caveats belong with it. deepseek's own figure on its own harness is lower, at 54.8%, which still leads. and artificial analysis says haiku's number was depressed by a refusal problem during pre-release testing, where the model declined tasks it should have accepted, so the lab intends to re-run it and expects the score to rise. even so, this is the clearest signal that the two models have different strengths, and it is the single most interesting gap in the whole comparison.&lt;/p&gt;

&lt;h3&gt;knowing what it does not know&lt;/h3&gt;

&lt;p&gt;aa-omniscience measures something that matters more in practice than any accuracy score: whether a model can tell the difference between knowing something and not knowing it. haiku 5.5 answers 36% of its knowledge questions correctly, against 44% for gpt-6 luna and 55% for gemini 3.8 flash, so it is the least knowledgeable of the three. but its hallucination rate, the share of confident answers that are simply invented, is the lowest of the group at 40%, against 77% for luna and 55% for gemini. in plain terms, when haiku 5.5 does not know, it is more likely to say so.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;the two models on artificial analysis, side by side&quot;&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;measure&lt;/th&gt;&lt;th&gt;claude haiku 5.5&lt;/th&gt;&lt;th&gt;deepseek v4.1 flash&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;knows the answer&lt;/th&gt;&lt;td&gt;36%&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;not measured&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;invents an answer&lt;/th&gt;&lt;td&gt;40%&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;not measured&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tokens written per index task&lt;/th&gt;&lt;td&gt;162,164&lt;/td&gt;&lt;td&gt;88,574&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cost per finished task&lt;/th&gt;&lt;td&gt;$0.21&lt;/td&gt;&lt;td&gt;$0.27&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;the last two lines explain a puzzle in the pricing. haiku 5.5 is cheaper per token than deepseek on both meters, yet it costs only 20% less per finished task, because it writes nearly twice as much. a reasoning model bills you for its thinking as well as its answer, and this one thinks at length.&lt;/p&gt;

&lt;h2&gt;twenty two tests, one lab&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;vals ai runs both models through the same harness, at the same effort, on the same tasks. this is the closest thing to a fair fight in the public record.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;vals ai is an independent evaluation lab. it tests agents the way a demanding employer would: give them a real piece of work, grade the deliverable, and count a refusal or a crash as a failure. its suite covers twenty two tests across coding, medicine, law, finance, mathematics, biology and pure computer breakage. both models were tested at maximum effort in the same environment, deepseek v4.1 flash on 10 september 2026 and haiku 5.5 on 8 october, which makes this the only matched set of results large enough to draw a general conclusion from.&lt;/p&gt;

&lt;p&gt;haiku 5.5 leads on eighteen of the twenty two, counting the vals index, the average of the suite, as one of them. deepseek v4.1 flash leads on four, and three of those four leads are small. the chart below shows the size of each gap, so the eye goes to the ones that matter.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;each test, matched at maximum effort&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;test&lt;/th&gt;&lt;th&gt;gap&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;proofbench v1.1&lt;/th&gt;&lt;td&gt;+32.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;terminal-bench 4.0&lt;/th&gt;&lt;td&gt;+15.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mysterymechanism&lt;/th&gt;&lt;td&gt;+14.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;medcode&lt;/th&gt;&lt;td&gt;+10.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;terminal-bench science&lt;/th&gt;&lt;td&gt;+10.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;ioi (olympiad coding)&lt;/th&gt;&lt;td&gt;+7.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vibe code bench v1.1&lt;/th&gt;&lt;td&gt;+5.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tax agent bench&lt;/th&gt;&lt;td&gt;+5.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sre bench&lt;/th&gt;&lt;td&gt;+5.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;medscribe&lt;/th&gt;&lt;td&gt;+4.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vibe code bench 1-100&lt;/th&gt;&lt;td&gt;+4.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;biomysterybench&lt;/th&gt;&lt;td&gt;+2.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vals index (overall)&lt;/th&gt;&lt;td&gt;+3.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;legal research bench&lt;/th&gt;&lt;td&gt;+1.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;emb (excel models)&lt;/th&gt;&lt;td&gt;+1.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cyberbench v1.1&lt;/th&gt;&lt;td&gt;+1.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;programbench&lt;/th&gt;&lt;td&gt;+2.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;finance agent v2&lt;/th&gt;&lt;td&gt;+0.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code migration&lt;/th&gt;&lt;td&gt;−1.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;public benefits bench&lt;/th&gt;&lt;td&gt;−1.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sage&lt;/th&gt;&lt;td&gt;−2.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;harvey legal agent&lt;/th&gt;&lt;td&gt;−5.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the bar length is the gap in percentage points: to the right haiku 5.5 is ahead, to the left deepseek is. deepseek's four wins are narrow, apart from harvey, where both models are weak. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/vals-ai&quot;&gt;vals ai&lt;/a&gt;, september and october 2026.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;now the same results in full, with a one line explanation of what each test is actually asking. where a model has no score, the cell is empty because no test was run, not because the score was zero.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;the vals ai suite, test by test&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;test&lt;/th&gt;
&lt;th class=&quot;words&quot;&gt;what it asks, in plain english&lt;/th&gt;
&lt;th&gt;haiku 5.5&lt;/th&gt;
&lt;th&gt;deepseek&lt;/th&gt;
&lt;th&gt;gap&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;proofbench v1.1&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;prove a research claim by gathering and checking evidence&lt;/td&gt;&lt;td&gt;86.00&lt;/td&gt;&lt;td&gt;54.00&lt;/td&gt;&lt;td&gt;+32.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;terminal-bench 4.0&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;finish a real multi step job on a text only computer&lt;/td&gt;&lt;td&gt;35.35&lt;/td&gt;&lt;td&gt;19.70&lt;/td&gt;&lt;td&gt;+15.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mysterymechanism&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;explain how a mechanism works from a description and a diagram&lt;/td&gt;&lt;td&gt;35.13&lt;/td&gt;&lt;td&gt;21.17&lt;/td&gt;&lt;td&gt;+14.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;medcode&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;convert patient records into medical billing codes&lt;/td&gt;&lt;td&gt;51.54&lt;/td&gt;&lt;td&gt;41.17&lt;/td&gt;&lt;td&gt;+10.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;terminal-bench science&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;run scientific research workflows in a terminal&lt;/td&gt;&lt;td&gt;10.00&lt;/td&gt;&lt;td&gt;0.00&lt;/td&gt;&lt;td&gt;+10.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;ioi&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;competitive programming at olympiad level&lt;/td&gt;&lt;td&gt;47.28&lt;/td&gt;&lt;td&gt;40.28&lt;/td&gt;&lt;td&gt;+7.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vibe code bench v1.1&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;build a small working app from a description&lt;/td&gt;&lt;td&gt;90.44&lt;/td&gt;&lt;td&gt;84.74&lt;/td&gt;&lt;td&gt;+5.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;tax agent bench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;answer tax questions from messy client documents&lt;/td&gt;&lt;td&gt;31.92&lt;/td&gt;&lt;td&gt;26.63&lt;/td&gt;&lt;td&gt;+5.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sre bench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;fix a broken production system on call&lt;/td&gt;&lt;td&gt;5.72&lt;/td&gt;&lt;td&gt;0.76&lt;/td&gt;&lt;td&gt;+5.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;medscribe&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;write a clinical note from a consultation recording&lt;/td&gt;&lt;td&gt;89.54&lt;/td&gt;&lt;td&gt;85.50&lt;/td&gt;&lt;td&gt;+4.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vibe code bench 1-100&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;build a one page web app from a prompt&lt;/td&gt;&lt;td&gt;20.41&lt;/td&gt;&lt;td&gt;16.38&lt;/td&gt;&lt;td&gt;+4.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;biomysterybench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;solve a biology mystery from research data&lt;/td&gt;&lt;td&gt;70.37&lt;/td&gt;&lt;td&gt;67.78&lt;/td&gt;&lt;td&gt;+2.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vals index&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;average of the whole suite&lt;/td&gt;&lt;td&gt;54.31&lt;/td&gt;&lt;td&gt;51.32&lt;/td&gt;&lt;td&gt;+3.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;legal research bench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;answer a legal question and cite the sources&lt;/td&gt;&lt;td&gt;43.27&lt;/td&gt;&lt;td&gt;41.35&lt;/td&gt;&lt;td&gt;+1.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;emb&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;build a complex financial model in excel&lt;/td&gt;&lt;td&gt;59.02&lt;/td&gt;&lt;td&gt;57.21&lt;/td&gt;&lt;td&gt;+1.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cyberbench v1.1&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;find and fix vulnerabilities in a system&lt;/td&gt;&lt;td&gt;75.48&lt;/td&gt;&lt;td&gt;73.69&lt;/td&gt;&lt;td&gt;+1.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;programbench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;rebuild a working program from a compiled file and its docs&lt;/td&gt;&lt;td&gt;2.50&lt;/td&gt;&lt;td&gt;0.50&lt;/td&gt;&lt;td&gt;+2.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;finance agent v2&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;complete a finance task in a spreadsheet&lt;/td&gt;&lt;td&gt;54.14&lt;/td&gt;&lt;td&gt;53.48&lt;/td&gt;&lt;td&gt;+0.7&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;code migration&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;move an old code base to a new framework&lt;/td&gt;&lt;td&gt;44.57&lt;/td&gt;&lt;td&gt;45.62&lt;/td&gt;&lt;td&gt;−1.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;public benefits bench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;fill in a benefits application for a client&lt;/td&gt;&lt;td&gt;63.19&lt;/td&gt;&lt;td&gt;64.28&lt;/td&gt;&lt;td&gt;−1.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sage&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;solve maths problems the way a student would, graded by rubric&lt;/td&gt;&lt;td&gt;45.78&lt;/td&gt;&lt;td&gt;47.88&lt;/td&gt;&lt;td&gt;−2.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;harvey legal agent&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;do legal work as a paralegal, graded by lawyers&lt;/td&gt;&lt;td&gt;1.25&lt;/td&gt;&lt;td&gt;6.67&lt;/td&gt;&lt;td&gt;−5.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p&gt;three results deserve a plain reading. proofbench asks the model to defend a research claim by gathering evidence and reasoning about it, and haiku's 32 point lead is the widest gap in the suite, which suggests a real difference in how carefully it assembles an argument. medcode asks for the billing codes that correspond to a patient's record, a job that is tedious, exacting and heavily audited in real life, and a ten point lead there is commercially interesting. harvey, run with a major law firm, is the one test where both models fail badly and deepseek fails less badly, so neither is close to doing legal work unsupervised.&lt;/p&gt;

&lt;p&gt;two more facts sit underneath the table. vals ai charged $2.99 to test haiku 5.5 and 33 cents to test deepseek, a gap of nine times, and haiku took 47 minutes of compute where deepseek took 28. the quality lead is real but so is the price of it, and the &lt;a href=&quot;../../#/software/claude-haiku-5-5/what-it-costs&quot;&gt;section on cost&lt;/a&gt; explains how those two facts reconcile.&lt;/p&gt;

&lt;h2&gt;what deepseek says about itself&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;a separate set of numbers, produced by deepseek, on tests anthropic has not published. these are claims, and they are read as claims here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;../../#/software/claude-haiku-5-5/deepseek-report&quot;&gt;deepseek's technical report&lt;/a&gt; contains a table of nineteen benchmarks at maximum effort. some of them, like terminal-bench 4.0, can be set against anthropic's numbers. others, like gpqa diamond, the hard science exam written by &lt;abbr&gt;PhD&lt;/abbr&gt; holders, have no published haiku result, so the only honest thing to do is show deepseek's number and note that anthropic has not published one.&lt;/p&gt;

&lt;p&gt;the single most interesting number in the table is on terminal-bench version 2.1, where deepseek scores &lt;strong&gt;90.6%&lt;/strong&gt;. on version 4.0, the same model scores &lt;strong&gt;31.2%&lt;/strong&gt;. nothing changed in the model. the test changed. version 4.0 removed the tasks that modern models already solve and made the remaining ones longer and stricter, which is why a model that looks like an &lt;span data-case&gt;A&lt;/span&gt; student on one version looks like a &lt;span data-case&gt;C&lt;/span&gt; student on the next. this is the clearest illustration in the entire report of why benchmark versions have to travel with the number.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;the same model, three versions of one test&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;version&lt;/th&gt;&lt;th&gt;haiku 5.5&lt;/th&gt;&lt;th&gt;deepseek v4.1 flash&lt;/th&gt;&lt;th&gt;opus 5.0&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;version 2.1, the easier exam&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;90.6%&lt;/td&gt;&lt;td&gt;89.1%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;version 3.0&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;30.0%&lt;/td&gt;&lt;td&gt;43.3%&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;version 4.0, the current exam&lt;/th&gt;&lt;td&gt;39.2%&lt;/td&gt;&lt;td&gt;31.2%&lt;/td&gt;&lt;td&gt;51.8%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;opus 5.0 is the best rival on deepseek's table. deepseek's 90.6% on the old version and 31.2% on the current one are both accurate. haiku 5.5's 39.2% is from anthropic's launch table on version 4.0. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/deepseek-report&quot;&gt;deepseek technical report&lt;/a&gt;, &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-launch&quot;&gt;anthropic&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;deepswe, and why the number on the box is not the number you get&lt;/h3&gt;

&lt;p&gt;deepswe v1.1 is a long software engineering test built from real github issues across many projects, and deepseek reports &lt;strong&gt;74.2%&lt;/strong&gt;, which would make it the best model in the world at that job. on the independent leaderboard it comes second at 74.2, behind meta's muse spark 1.3 at 75.4, with gpt-6 astra at 74.1 and claude opus 5 at 73.6 behind it. four models inside two points of each other, three of them inside 0.6, is a tie, not a ranking, because run to run variation on this test is larger than the gap.&lt;/p&gt;

&lt;p&gt;the more useful detail is that deepseek published its own score across eight different scaffolding setups, which is the software wrapped around the model that does the typing and clicking. the same model, on the same test, scores between 74.2 and 65.5 depending only on which scaffold it uses. that is an 8.7 point swing, nearly five times the distance between those four models, and it is the strongest evidence available that these numbers describe a whole system rather than a brain.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;deepswe v1.1 by scaffolding setup, deepseek's own data&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;scaffold&lt;/th&gt;&lt;th&gt;score&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;mini-swe&lt;/th&gt;&lt;td&gt;74.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;dsh minimal&lt;/th&gt;&lt;td&gt;72.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;dsh standard&lt;/th&gt;&lt;td&gt;70.5%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;claude code&lt;/th&gt;&lt;td&gt;69.8%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;dsh ptc&lt;/th&gt;&lt;td&gt;67.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;pi&lt;/th&gt;&lt;td&gt;66.2%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;codex&lt;/th&gt;&lt;td&gt;65.6%&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;opencode&lt;/th&gt;&lt;td&gt;65.5%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;eight setups, one model, an 8.7 point spread. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/deepseek-report&quot;&gt;deepseek technical report&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;the rest of deepseek's board&lt;/h3&gt;

&lt;p&gt;the remaining tests show a model with two clear strengths and one clear weakness. it is strong at security, scoring 88.1 on cybergym, a test of finding vulnerabilities, and 90.9 on gpqa diamond, the hard science exam, second only to gpt-5.6 sol among the models on its table. it is strong at maths and competition programming, with a codeforces rating of 3471, which would place it in the top few hundred human competitors worldwide. it is weaker at long horizon agentic work, where opus 5.0 leads it by 20 points on terminal-bench 4.0 and 11 points on nl2repo-bench, a test of building an entire repository from a specification. both models are strong at &lt;abbr&gt;SaaS&lt;/abbr&gt; automation, but deepseek's automationbench lead over haiku survives into artificial analysis's independent run, so it is probably real.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;the rest of deepseek's board&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;test&lt;/th&gt;
&lt;th class=&quot;words&quot;&gt;what it asks, in plain english&lt;/th&gt;
&lt;th&gt;deepseek&lt;/th&gt;
&lt;th&gt;best rival&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpqa diamond&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;graduate level science questions written by &lt;abbr&gt;PhD&lt;/abbr&gt; holders&lt;/td&gt;&lt;td&gt;90.9&lt;/td&gt;&lt;td&gt;94.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;cybergym&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;find vulnerabilities in a running system&lt;/td&gt;&lt;td&gt;88.1&lt;/td&gt;&lt;td&gt;84.5&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;terminal-bench 2.1&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;older, easier version of the terminal test&lt;/td&gt;&lt;td&gt;90.6&lt;/td&gt;&lt;td&gt;89.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepswe v1.1&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;fix real bugs in real open source projects&lt;/td&gt;&lt;td&gt;74.2&lt;/td&gt;&lt;td&gt;74.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;automationbench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;drive office software through a multi step process&lt;/td&gt;&lt;td&gt;54.8&lt;/td&gt;&lt;td&gt;50.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;nl2repo-bench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;build an entire repository from a text specification&lt;/td&gt;&lt;td&gt;64.0&lt;/td&gt;&lt;td&gt;75.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;agent's last exam&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;expert questions that need tools and research&lt;/td&gt;&lt;td&gt;31.8&lt;/td&gt;&lt;td&gt;28.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;matharena apex&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;competition level mathematics problems&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;sec-bench pro&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;offensive security work&lt;/td&gt;&lt;td&gt;62.8&lt;/td&gt;&lt;td&gt;74.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;chartography w/ tools&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;read a professional chart, with tools allowed&lt;/td&gt;&lt;td&gt;78.9&lt;/td&gt;&lt;td&gt;84.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;programbench&lt;/th&gt;&lt;td class=&quot;words&quot;&gt;rebuild a working program from a compiled file and its docs&lt;/td&gt;&lt;td&gt;20.3&lt;/td&gt;&lt;td&gt;37.0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;p class=&quot;meta&quot;&gt;rival figures are the best score on deepseek's own comparison table, against claude opus 5.0, gpt-5.6 sol, kimi k3 and glm-5.3. they are vendor-reported too, so they carry the same caveat. anthropic publishes no haiku 5.5 result on any of these tests, which is why this table cannot be turned into a head to head.&lt;/p&gt;

&lt;h2&gt;the thinking dial&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;haiku 5.5 is the first haiku you can tell how hard to think, and the difference between the cheapest and most expensive setting is large.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;modern reasoning models do not answer immediately. they write themselves a private working note first, decide how much of it to show, and only then answer. that thinking is billed at the same rate as the reply, which means the setting you choose is really a spending decision. haiku 5.5 offers five settings, from low to max, with medium as the default. deepseek offers a continuous dial from 1 to 100, which is the same idea with more notches on it.&lt;/p&gt;

&lt;p&gt;artificial analysis ran haiku 5.5 through its ten test suite at all five settings, and the result is a clean curve. going from low to max lifts the score from 29 to 43, and lifts the cost per task from two cents to twenty one. the largest single jump in price is the last one: moving from xhigh to max buys two more points for roughly 1.8 times the tokens.&lt;/p&gt;

&lt;figure class=&quot;multiples&quot;&gt;
&lt;table class=&quot;bars&quot; data-min=&quot;0&quot; data-max=&quot;43&quot;&gt;
&lt;caption&gt;index score&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;effort&lt;/th&gt;&lt;th&gt;score&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;low&lt;/th&gt;&lt;td&gt;29&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;medium&lt;/th&gt;&lt;td&gt;34&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;high&lt;/th&gt;&lt;td&gt;38&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;xhigh&lt;/th&gt;&lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;max&lt;/th&gt;&lt;td&gt;43&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;bars&quot; data-min=&quot;0&quot; data-max=&quot;0.21&quot;&gt;
&lt;caption&gt;cost per task&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;effort&lt;/th&gt;&lt;th&gt;cost&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;low&lt;/th&gt;&lt;td&gt;$0.02&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;medium&lt;/th&gt;&lt;td&gt;$0.05&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;high&lt;/th&gt;&lt;td&gt;$0.08&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;xhigh&lt;/th&gt;&lt;td&gt;$0.12&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;max&lt;/th&gt;&lt;td&gt;$0.21&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;strong&gt;haiku 5.5 at five effort settings, artificial analysis index score and cost per task.&lt;/strong&gt; the first chart is the score and the second is the price, each on its own scale. both climb, and the biggest single jump in price is the last one. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/artificial-analysis&quot;&gt;artificial analysis intelligence index v4.3.2&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;frontiercode tells the same story in terms of money rather than points. on the &lt;a href=&quot;../../#/software/claude-haiku-5-5/cognition-frontiercode&quot;&gt;public leaderboard&lt;/a&gt;, haiku 5.5 at low effort scores 34.8 and costs about six cents per attempt. at medium it scores 41.6 for thirteen cents. at max it scores 46.4 for a dollar thirty three. doubling the price from xhigh to max buys half a percentage point, which is the clearest argument in this report for testing a setting against your own quality floor instead of defaulting to the top.&lt;/p&gt;

&lt;p&gt;setting the dial is a single line of code. here is the same request to each model, which is a reasonable illustration of how similar the developer experience is despite the different companies and the different business models.&lt;/p&gt;

&lt;pre data-label=&quot;asking haiku 5.5 for something, with thinking on&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
    model=&quot;claude-haiku-5-5&quot;,
    max_tokens=4096,
    thinking={&quot;type&quot;: &quot;adaptive&quot;},
    output_config={&quot;effort&quot;: &quot;medium&quot;},
    messages=[
        {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Summarise this contract in five bullet points.&quot;}
    ],
)
# effort can be low, medium, high, xhigh or max&lt;/code&gt;&lt;/pre&gt;

&lt;pre data-label=&quot;the same kind of request to deepseek v4.1 flash&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;curl https://api.deepseek.com/chat/completions \
  -H &quot;Content-Type: application/json&quot; \
  -H &quot;Authorization: Bearer $DEEPSEEK_API_KEY&quot; \
  -d '{
    &quot;model&quot;: &quot;deepseek-flash&quot;,
    &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Sort these tickets by urgency.&quot;}],
    &quot;reasoning_effort&quot;: 100
  }'&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;what it costs&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;two different pricing philosophies: one charges by how much you send, the other by when you send it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;haiku 5.5 costs ten cents per million tokens of input and fifty cents per million tokens of output, and that rate holds while your prompt stays under 100,000 tokens. past that line everything becomes five times more expensive: fifty cents in, two dollars fifty out, applied to the whole request rather than only the excess. roughly 90% of requests to the previous haiku stayed under the line, which is why anthropic can say the model is on average 75% cheaper than its predecessor.&lt;/p&gt;

&lt;p&gt;deepseek charges differently. its rate depends on the hour of the day, not the size of the prompt. between 01:00 and 04:00 &lt;abbr&gt;UTC&lt;/abbr&gt;, and again between 06:00 and 10:00 &lt;abbr&gt;UTC&lt;/abbr&gt; on weekdays, everything is double price: thirty cents in and a dollar twenty out. at every other hour, including all weekend, it is fifteen cents in and sixty cents out. its cache reads are cheaper in absolute terms too, at 0.006 dollars per million against haiku's one cent.&lt;/p&gt;

&lt;pre data-label=&quot;the two rate cards, as code&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;# US dollars per million tokens
haiku = {
    &quot;up to 100k&quot;:  {&quot;in&quot;: 0.10, &quot;out&quot;: 0.50, &quot;cache_read&quot;: 0.01},
    &quot;over 100k&quot;:   {&quot;in&quot;: 0.50, &quot;out&quot;: 2.50, &quot;cache_read&quot;: 0.05},
}
deepseek = {
    &quot;peak&quot;:     {&quot;in&quot;: 0.30, &quot;out&quot;: 1.20, &quot;cache_read&quot;: 0.006},
    &quot;off_peak&quot;: {&quot;in&quot;: 0.15, &quot;out&quot;: 0.60, &quot;cache_read&quot;: 0.003},
}

LIMIT = 100_000  # input tokens before Haiku's price steps up

def haiku_cost(in_tok, out_tok):
    band = &quot;up to 100k&quot; if in_tok &amp;lt;= LIMIT else &quot;over 100k&quot;
    r = haiku[band]
    return (in_tok * r[&quot;in&quot;] + out_tok * r[&quot;out&quot;]) / 1_000_000

def deepseek_cost(in_tok, out_tok, band=&quot;off_peak&quot;):
    r = deepseek[band]
    return (in_tok * r[&quot;in&quot;] + out_tok * r[&quot;out&quot;]) / 1_000_000&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;run that arithmetic on three ordinary requests and the picture changes completely with the length of the prompt. a short question is cheaper on haiku. a long document is several times cheaper on deepseek, and cheapest of all off peak.&lt;/p&gt;

&lt;figure&gt;
&lt;table class=&quot;bars&quot;&gt;
&lt;caption&gt;three ordinary requests, priced from the two rate cards&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;the request&lt;/th&gt;&lt;th&gt;haiku 5.5&lt;/th&gt;&lt;th&gt;deepseek off peak&lt;/th&gt;&lt;th&gt;deepseek peak&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;10,000 tokens in, 2,000 out&lt;/th&gt;&lt;td&gt;$0.0020&lt;/td&gt;&lt;td&gt;$0.0027&lt;/td&gt;&lt;td&gt;$0.0054&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;150,000 tokens in, 10,000 out&lt;/th&gt;&lt;td&gt;$0.1000&lt;/td&gt;&lt;td&gt;$0.0285&lt;/td&gt;&lt;td&gt;$0.0570&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;400,000 tokens in, 10,000 out&lt;/th&gt;&lt;td&gt;$0.2250&lt;/td&gt;&lt;td&gt;$0.0660&lt;/td&gt;&lt;td&gt;$0.1320&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the crossover is the prompt length. under 100,000 tokens haiku is cheaper, and above it deepseek is cheaper by a factor of three to four off peak, and a little under two at peak. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-docs&quot;&gt;anthropic&lt;/a&gt; and &lt;a href=&quot;../../#/software/claude-haiku-5-5/deepseek-launch&quot;&gt;deepseek published pricing&lt;/a&gt;, october 2026.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;agents, which are the programs that send the same long instructions over and over, can use a third price: the cache. if the beginning of a prompt is unchanged, both companies charge a fraction of the normal rate for re-reading it. haiku's cache read costs one cent per million, a 90% discount, and deepseek's costs 0.006 dollars, a 98% discount. an agent that re-sends 80,000 stable tokens plus 10,000 fresh ones and gets a 2,000 token reply pays about 0.0028 dollars on haiku, against about 0.0029 on deepseek off peak, so the two are effectively level on a request that short. deepseek's cache advantage comes into its own when the stable prefix is very long, because past 100,000 tokens haiku's cache read steps up to five cents and deepseek's rate is then about an eighth of it, and a long agent loop re-reads that prefix dozens of times per task.&lt;/p&gt;

&lt;p&gt;vals ai's own accounting settles the argument in one line. testing haiku 5.5 across its suite cost &lt;strong&gt;$2.99&lt;/strong&gt; per test. testing deepseek v4.1 flash cost &lt;strong&gt;33 cents&lt;/strong&gt;. that is nine times the price for a result that was, on average, three points better.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We're very impressed with Claude Haiku 5.5, particularly its speed. Compared with the model we use today, we saw over a 30% reduction in latency for task completions and up to 2.5x faster inference per agent turn.&lt;/p&gt;
&lt;p class=&quot;meta&quot;&gt;— &lt;cite&gt;Aaron Vinh&lt;/cite&gt;, staff software engineer at asana, quoted in &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-launch&quot;&gt;anthropic's launch post&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;how fast it feels&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;speed has two separate meanings, and the model that wins on one of them loses on the other.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;the first meaning is output speed: how quickly words appear once the model is writing. on artificial analysis's measurement, haiku 5.5 writes at &lt;strong&gt;240 tokens per second&lt;/strong&gt;, a shade faster than deepseek's &lt;strong&gt;217&lt;/strong&gt;. in practical terms both are quicker than a person reads, and on a simple chat reply neither will feel slow.&lt;/p&gt;

&lt;p&gt;the second meaning is waiting: how long before the first word appears. here the effort setting dominates. at medium effort haiku 5.5 starts replying after about &lt;strong&gt;13 seconds&lt;/strong&gt;. at max effort, where it spends several minutes writing private reasoning before showing anything, the wait stretches to roughly &lt;strong&gt;five minutes&lt;/strong&gt;. deepseek starts in about &lt;strong&gt;one second&lt;/strong&gt; at its top setting, because it streams its reasoning as it goes rather than holding it back.&lt;/p&gt;

&lt;figure class=&quot;multiples&quot;&gt;
&lt;table class=&quot;bars&quot; data-min=&quot;0&quot; data-max=&quot;239.8&quot;&gt;
&lt;caption&gt;tokens written per second, higher is better&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model and effort&lt;/th&gt;&lt;th&gt;speed&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku, max effort&lt;/th&gt;&lt;td&gt;239.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;deepseek, max effort&lt;/th&gt;&lt;td&gt;217.1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku, medium effort&lt;/th&gt;&lt;td&gt;137.1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;bars&quot; data-min=&quot;0&quot; data-max=&quot;296&quot;&gt;
&lt;caption&gt;seconds before the first word, lower is better&lt;/caption&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;model and effort&lt;/th&gt;&lt;th&gt;wait&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&quot;b&quot;&gt;&lt;th scope=&quot;row&quot;&gt;deepseek, max effort&lt;/th&gt;&lt;td&gt;1.0 s&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku, medium effort&lt;/th&gt;&lt;td&gt;13.4 s&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;a&quot;&gt;&lt;th scope=&quot;row&quot;&gt;haiku, max effort&lt;/th&gt;&lt;td&gt;296 s&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;strong&gt;output speed and waiting time are different things.&lt;/strong&gt; haiku 5.5 writes slightly faster once it starts, but at max effort it makes you wait while it thinks, and deepseek streams instead. source: &lt;a href=&quot;../../#/software/claude-haiku-5-5/artificial-analysis&quot;&gt;artificial analysis&lt;/a&gt;, october 2026.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;neither number tells you what matters most for an agent, which is how long a whole job takes. asana, which tested haiku 5.5 inside its own product, measured a 30% reduction in the time tasks took to complete and up to 2.5 times faster responses per agent turn, which is the number a customer support desk would actually feel.&lt;/p&gt;

&lt;h2&gt;safety and behaviour&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;the gains are real, but they come with two side effects a buyer should know about.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;anthropic reports that haiku 5.5 resists a particular kind of attack far better than its predecessor. the attack is called indirect prompt injection: a user points the model at a document or a web page, and hidden instructions inside it try to take over. on the gray swan test, the share of attacks that succeeded fell from 83.2% for haiku 4.5 to &lt;strong&gt;7.1%&lt;/strong&gt;. that matters for any agent that reads content it did not write.&lt;/p&gt;

&lt;p&gt;the first side effect is caution. the &lt;a href=&quot;../../#/software/claude-haiku-5-5/anthropic-system-card&quot;&gt;system card&lt;/a&gt; reports more over-refusal than before, meaning it sometimes declines work it should simply do. vals ai, which scores a refusal as a failure, recorded a refusal rate of 0.22% for haiku 5.5 and no server-side fallback at all, but the automationbench result suggests the caution shows up more strongly on agent tasks that touch sensitive ground. keep an eye on this if you plan to send it legal, medical or security work.&lt;/p&gt;

&lt;p&gt;the second side effect is honesty about effort. in testing, haiku 5.5 silently used leaked answers to coding benchmark questions 17% of the time, against 2% for haiku 4.5. anthropic is not hiding the number, and it is a useful reminder that a benchmark score measures the whole system, including the parts where the model found a shortcut rather than solving the problem.&lt;/p&gt;

&lt;p&gt;on safeguards, haiku 5.5 sits between its siblings. its cyber rules are stricter than haiku 4.5's but looser than sonnet 5.5's, so it allows more defensive security work while still blocking penetration testing and the techniques more likely to be used by attackers. its biology rules match sonnet 5.5's, allowing research questions but restricting requests judged likely to cause harm.&lt;/p&gt;

&lt;h2&gt;so which one wins&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;neither, in general, and that is the honest answer. the winner is decided by the shape of your work.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;if your work is short prompts in high volume, with images in the mix and a quality bar that matters, haiku 5.5 is the better buy. it is ahead on the independent index by four points, ahead on eighteen of the twenty two tests in vals ai's suite, ahead on cost per finished task on the artificial analysis index at 21 cents against 27, cheaper outright on short requests, and faster once it starts writing. anthropic also sells it through the three big clouds, which matters to companies with strict procurement rules.&lt;/p&gt;

&lt;p&gt;if your work is long documents, retrieval-heavy requests, or anything you can schedule, deepseek v4.1 flash wins on arithmetic and it is not close. three to four times cheaper per long request off peak, a cache rate about an eighth of anthropic's on those requests, three times more room for its reply, and the whole thing downloadable under the &lt;abbr&gt;MIT&lt;/abbr&gt; licence, which means no vendor can change the price on you and no data has to leave your building. its two technical strengths, office automation and security work, are also areas where anthropic's model is measurably behind.&lt;/p&gt;

&lt;p&gt;the detail that ties it together is verbosity. haiku 5.5 writes about 162,000 tokens per index task where deepseek writes 88,600, so a token price that looks up to three times cheaper turns into a task price that is only 20% cheaper. neither model is simply the cheap one. the cheap choice is the one whose thinking style matches the length of your work.&lt;/p&gt;

&lt;p&gt;and for the hardest agentic coding, where a mistake costs a day of a senior engineer's time, both of these models lose to their bigger siblings. sonnet 5.5 scores 70.6% on terminal-bench 4.0 against haiku's 39.2%, and deepseek's own table puts opus 5.0 at 51.8% on the same test. haiku 5.5's proper role, in anthropic's own framing and in the numbers, is the million small jobs around the edges of the hard ones.&lt;/p&gt;

&lt;h2&gt;what nobody has measured&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;four gaps in the public record, so you know the edges of what this report can tell you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;there is no single run in which both models were put through the same tasks, on the same scaffolding, by someone with no stake in the outcome. vals ai's suite comes closest, and its results carry the most weight here, but the two runs were four weeks apart. every other comparison in this report joins numbers from different labs, which is better than a vendor's table alone and worse than a controlled experiment.&lt;/p&gt;

&lt;p&gt;automationbench is the exception worth watching. haiku's 35.4% was depressed by a refusal problem during pre-release testing, and artificial analysis has said it will re-run the evaluation. if the re-run lands near the level of its peers, the largest gap in this report shrinks to nothing.&lt;/p&gt;

&lt;p&gt;neither model has a verified arc-agi score in the sources used here, and that is the test of general problem solving the field treats as a canary. if one appears for either model, it is worth revisiting this report.&lt;/p&gt;

&lt;aside class=&quot;warn&quot;&gt;
&lt;p&gt;finally, a practical warning for anyone migrating. haiku 5.5 uses a new tokenizer that counts roughly 30% more input tokens for the same text than haiku 4.5 did. if you built a budget or a context limit around haiku 4.5's token counts, those limits will hold less text than they used to, and the arithmetic in this report will not apply to you unchanged.&lt;/p&gt;
&lt;/aside&gt;

&lt;h2&gt;changes&lt;/h2&gt;

&lt;ul class=&quot;changes&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-12&quot;&gt;12 october 2026&lt;/time&gt; twelve sentences and labels disagreed with the numbers beside them, and were made to agree. no score, price or date in a table, a chart or the list of sources was touched. these are the ones that changed what the article claims. the two models were tested &lt;del&gt;days apart, in the first week of october&lt;/del&gt; &lt;ins&gt;four weeks apart, on 10 september and 8 october&lt;/ins&gt;. four models sit &lt;del&gt;inside half a point of each other&lt;/del&gt; &lt;ins&gt;inside two points of each other, three of them inside 0.6&lt;/ins&gt;. an 8.7 point swing is &lt;del&gt;larger than the distance between first and last place on the leaderboard&lt;/del&gt; &lt;ins&gt;nearly five times the distance between those four models&lt;/ins&gt;. on long requests deepseek's cache rate is &lt;del&gt;a sixth of anthropic's&lt;/del&gt; &lt;ins&gt;about an eighth of it&lt;/ins&gt;. on partial credit haiku 5.5 &lt;del&gt;beats luna&lt;/del&gt; &lt;ins&gt;comes close to gpt-6.1 sol&lt;/ins&gt;, luna having no such score in the chart. and the chart of speed counts &lt;del&gt;words&lt;/del&gt; &lt;ins&gt;tokens&lt;/ins&gt; written per second.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;where the numbers came from&lt;/h2&gt;

&lt;p&gt;every figure in this report is taken from a published source. vendor figures are labelled as such wherever they appear.&lt;/p&gt;

&lt;ol class=&quot;refs&quot;&gt;
&lt;li id=&quot;anthropic-launch&quot;&gt;&lt;cite&gt;Anthropic, &lt;i&gt;Claude Haiku 5.5&lt;/i&gt; launch announcement, 7 October 2026, including the benchmark table, pricing tiers and the Asana quotation.&lt;br&gt;&lt;small&gt;anthropic.com/claude-haiku-5-5&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;anthropic-system-card&quot;&gt;&lt;cite&gt;Anthropic, &lt;i&gt;Claude Haiku 5.5 System Card&lt;/i&gt;, including the OSWorld 2.1 partial and strict scores, the safety evaluations and the leaked-answer finding.&lt;br&gt;&lt;small&gt;anthropic.com/claude-haiku-5-5-system-card&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;anthropic-docs&quot;&gt;&lt;cite&gt;Anthropic, Claude Platform documentation on model specifications, effort settings, pricing and migration.&lt;br&gt;&lt;small&gt;platform.claude.com/docs/en/models/haiku-5-5&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;deepseek-launch&quot;&gt;&lt;cite&gt;DeepSeek, &lt;i&gt;Introducing DeepSeek-V4.1-Flash&lt;/i&gt;, 10 September 2026, architecture and pricing.&lt;br&gt;&lt;small&gt;deepseek.com/en/news/deepseek-v4-1-flash&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;deepseek-report&quot;&gt;&lt;cite&gt;DeepSeek, &lt;i&gt;DeepSeek-V4.1-Flash technical report&lt;/i&gt;, the full benchmark table at maximum reasoning effort and the scaffolding study.&lt;br&gt;&lt;small&gt;huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;artificial-analysis&quot;&gt;&lt;cite&gt;Artificial Analysis, model pages for Claude Haiku 5.5 and DeepSeek V4.1 Flash, plus the launch analysis of Haiku 5.5, October 2026.&lt;br&gt;&lt;small&gt;artificialanalysis.ai&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;vals-ai&quot;&gt;&lt;cite&gt;Vals AI, evaluation of Claude Haiku 5.5 on 8 October 2026 and of DeepSeek V4.1 Flash on 10 September 2026, the matched suite used in &lt;a href=&quot;../../#/software/claude-haiku-5-5/twenty-two-tests-one-lab&quot;&gt;twenty two tests, one lab&lt;/a&gt;.&lt;br&gt;&lt;small&gt;vals.ai&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;cognition-frontiercode&quot;&gt;&lt;cite&gt;Cognition, FrontierCode 1.1 public leaderboard results for Haiku 5.5 across effort settings.&lt;br&gt;&lt;small&gt;cognition.com/frontiercode&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;kingy&quot;&gt;&lt;cite&gt;Kingy.ai analysis of the Haiku 5.5 launch, cross-checking vendor and independent figures.&lt;br&gt;&lt;small&gt;kingy.ai&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;li id=&quot;orcarouter&quot;&gt;&lt;cite&gt;OrcaRouter analysis comparing Claude Haiku 5.5 with DeepSeek V4.1 Flash on cost per task, and the review of DeepSeek's benchmark claims.&lt;br&gt;&lt;small&gt;orcarouter.ai/blog&lt;/small&gt;&lt;/cite&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&quot;meta&quot;&gt;&lt;strong&gt;a note on this file.&lt;/strong&gt; prices are &lt;abbr&gt;US&lt;/abbr&gt; dollars per million tokens as published in october 2026 and exclude taxes, tool charges and regional premiums. benchmark scores are only comparable within the same version and effort setting of the same test, and the caution in &lt;a href=&quot;../../#/software/claude-haiku-5-5/what-nobody-has-measured&quot;&gt;what nobody has measured&lt;/a&gt; applies to all of them. written to be read once, without a technical background.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>the opencode go model league</title>
    <id>urn:uuid:e335c28d-890f-5326-824f-9c4c9775126e</id>
    <link rel="alternate" type="text/html" href="https://nahuelgenchi.com/software/opencode-go-model-league/"/>
    <published>2026-10-10T12:00:00Z</published>
    <updated>2026-10-14T12:00:00Z</updated>
    <summary>every model on the plan, ranked by its benchmarks.</summary>
    <category term="software"/>
    <category term="ai"/>
    <category term="models"/>
    <category term="benchmarks"/>
    <content type="html" xml:base="https://nahuelgenchi.com/software/opencode-go-model-league/">&lt;p&gt;thirty-two open coding models, scored on eight independent benchmarks and blended with what each one actually costs per request on opencode go. no estimated cells: every number is quoted from a named source — datacurve, vals ai, artificial analysis, epoch ai or the vendor's own report.&lt;/p&gt;

&lt;p class=&quot;meta&quot;&gt;8 benchmarks · 32 models ranked · 597 sourced values · &lt;a href=&quot;../../#/software/la-liga-de-modelos-de-opencode-go&quot; hreflang=&quot;es&quot; lang=&quot;es&quot;&gt;también en español&lt;/a&gt;&lt;/p&gt;

&lt;ul class=&quot;files&quot;&gt;
&lt;li&gt;&lt;a href=&quot;report.md&quot; download&gt;evidence report &lt;small&gt;markdown · 96 kb&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;benchmarks.xlsx&quot; download&gt;full spreadsheet &lt;small&gt;xlsx · 67 kb&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;the ranking&lt;/h2&gt;

&lt;p&gt;all 32 models currently on opencode go, best to worst on the benchmark-plus-cost blend. watch the cover column: a high rank built on four benchmarks is weaker than one built on seven.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;the ranking&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;&lt;span class=&quot;rank&quot;&gt;#&lt;/span&gt;model&lt;/th&gt;
&lt;th&gt;deepswe&lt;/th&gt;
&lt;th&gt;terminal-bench 2.1&lt;/th&gt;
&lt;th&gt;scicode&lt;/th&gt;
&lt;th&gt;aa-lcr&lt;/th&gt;
&lt;th&gt;gpqa diamond&lt;/th&gt;
&lt;th&gt;swe-bench pro&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;terminal-bench 4.0&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;mmlu-pro&lt;/th&gt;
&lt;th&gt;est. $/req&lt;/th&gt;
&lt;th&gt;cover&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;1&lt;/span&gt;step 5 preview free&lt;/th&gt;&lt;td&gt;67.7&lt;/td&gt;&lt;td&gt;85&lt;/td&gt;&lt;td&gt;58.9&lt;/td&gt;&lt;td&gt;88.3&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;31.82&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;&lt;strong&gt;free&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;2&lt;/span&gt;muse spark 1.3 contributor&lt;/th&gt;&lt;td class=&quot;best&quot;&gt;75.4&lt;/td&gt;&lt;td&gt;72.3&lt;/td&gt;&lt;td&gt;58.8&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;10.61&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00026&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;3&lt;/span&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td&gt;74.2&lt;/td&gt;&lt;td&gt;74.5&lt;/td&gt;&lt;td&gt;51.9&lt;/td&gt;&lt;td&gt;84&lt;/td&gt;&lt;td&gt;90.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;26.77&lt;/td&gt;&lt;td&gt;81.2&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;4&lt;/span&gt;claude haiku 5.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;82.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;64.8&lt;/td&gt;&lt;td&gt;39.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00078&lt;/td&gt;&lt;td&gt;4/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;5&lt;/span&gt;muse spark 1.2 contributor&lt;/th&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;69.7&lt;/td&gt;&lt;td&gt;57.4&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;90.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;6.06&lt;/td&gt;&lt;td&gt;88.28&lt;/td&gt;&lt;td&gt;$0.00026&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;6&lt;/span&gt;mimo-v2.6-flash&lt;/th&gt;&lt;td&gt;67.9&lt;/td&gt;&lt;td&gt;76.4&lt;/td&gt;&lt;td&gt;51.3&lt;/td&gt;&lt;td&gt;74.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;24.24&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00040&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;7&lt;/span&gt;deepseek v4 flash vision exp&lt;/th&gt;&lt;td&gt;59.3&lt;/td&gt;&lt;td&gt;83.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;12.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;3/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;8&lt;/span&gt;mimo-v2.6-pro&lt;/th&gt;&lt;td&gt;71.9&lt;/td&gt;&lt;td&gt;67.79&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;60.9&lt;/td&gt;&lt;td&gt;86.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;47.6&lt;/td&gt;&lt;td&gt;31.31&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00092&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;9&lt;/span&gt;gpt 6 luna&lt;/th&gt;&lt;td&gt;66.6&lt;/td&gt;&lt;td&gt;73.03&lt;/td&gt;&lt;td&gt;54.6&lt;/td&gt;&lt;td&gt;83.3&lt;/td&gt;&lt;td&gt;90.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;16.36&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00071&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;10&lt;/span&gt;deepseek v4 flash&lt;/th&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;50.3&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;90.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;18.69&lt;/td&gt;&lt;td&gt;86.21&lt;/td&gt;&lt;td&gt;$0.00046&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;11&lt;/span&gt;gpt 5.6 luna&lt;/th&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;79.03&lt;/td&gt;&lt;td&gt;53.6&lt;/td&gt;&lt;td&gt;83.7&lt;/td&gt;&lt;td&gt;91.1&lt;/td&gt;&lt;td&gt;62.7&lt;/td&gt;&lt;td&gt;17.27&lt;/td&gt;&lt;td&gt;86.04&lt;/td&gt;&lt;td&gt;$0.00146&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;12&lt;/span&gt;qwen3.8 flash&lt;/th&gt;&lt;td&gt;58.7&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;86.1&lt;/td&gt;&lt;td&gt;50.6&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;62.5&lt;/td&gt;&lt;td&gt;25&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00111&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;13&lt;/span&gt;mimo-v2.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;60.67&lt;/td&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;81.6&lt;/td&gt;&lt;td&gt;56.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;82.93&lt;/td&gt;&lt;td&gt;$0.00040&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;14&lt;/span&gt;glm-5.3-flash&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;62.9&lt;/td&gt;&lt;td&gt;51.6&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;91.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;32.8&lt;/td&gt;&lt;td&gt;86.1&lt;/td&gt;&lt;td&gt;$0.00190&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;15&lt;/span&gt;mimo-v2.5-pro&lt;/th&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;57.3&lt;/td&gt;&lt;td&gt;50.6&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;86.6&lt;/td&gt;&lt;td&gt;57.2&lt;/td&gt;&lt;td&gt;0.51&lt;/td&gt;&lt;td&gt;84.59&lt;/td&gt;&lt;td&gt;$0.00092&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;16&lt;/span&gt;hy4 preview&lt;/th&gt;&lt;td&gt;64.3&lt;/td&gt;&lt;td&gt;85.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;65.7&lt;/td&gt;&lt;td&gt;8.08&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00443&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;17&lt;/span&gt;glm-5.3&lt;/th&gt;&lt;td&gt;69&lt;/td&gt;&lt;td&gt;71.5&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;79.7&lt;/td&gt;&lt;td&gt;91.7&lt;/td&gt;&lt;td&gt;64.6&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;41.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01516&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;18&lt;/span&gt;deepseek v4 pro&lt;/th&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;54.7&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;80.3&lt;/td&gt;&lt;td&gt;92.8&lt;/td&gt;&lt;td&gt;55.4&lt;/td&gt;&lt;td&gt;14.14&lt;/td&gt;&lt;td&gt;86.97&lt;/td&gt;&lt;td&gt;$0.00287&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;19&lt;/span&gt;grok 4.6&lt;/th&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;78.28&lt;/td&gt;&lt;td&gt;56.5&lt;/td&gt;&lt;td&gt;80.3&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;94.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;20.3&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;89.4&lt;/td&gt;&lt;td&gt;$0.01775&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;20&lt;/span&gt;kimi k3&lt;/th&gt;&lt;td&gt;69&lt;/td&gt;&lt;td&gt;80.9&lt;/td&gt;&lt;td&gt;59.5&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;88.7&lt;/td&gt;&lt;td&gt;93.5&lt;/td&gt;&lt;td&gt;63.3&lt;/td&gt;&lt;td&gt;12.6&lt;/td&gt;&lt;td&gt;88&lt;/td&gt;&lt;td&gt;$0.03060&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;21&lt;/span&gt;grok 4.7&lt;/th&gt;&lt;td&gt;71&lt;/td&gt;&lt;td&gt;73.41&lt;/td&gt;&lt;td&gt;57.4&lt;/td&gt;&lt;td&gt;76.7&lt;/td&gt;&lt;td&gt;92.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;37.58&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01775&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;22&lt;/span&gt;longcat-2.0&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;50.19&lt;/td&gt;&lt;td&gt;36.3&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;59.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00105&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;23&lt;/span&gt;qwen3.7 plus&lt;/th&gt;&lt;td&gt;16.5&lt;/td&gt;&lt;td&gt;52.81&lt;/td&gt;&lt;td&gt;46.1&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;90&lt;/td&gt;&lt;td&gt;57.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;88.5&lt;/td&gt;&lt;td&gt;$0.00278&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;24&lt;/span&gt;kimi k2.6&lt;/th&gt;&lt;td&gt;23.89&lt;/td&gt;&lt;td&gt;53.6&lt;/td&gt;&lt;td&gt;51.5&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;td&gt;91.1&lt;/td&gt;&lt;td&gt;58.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;87.6&lt;/td&gt;&lt;td&gt;$0.01043&lt;/td&gt;&lt;td&gt;7/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;25&lt;/span&gt;minimax m3&lt;/th&gt;&lt;td&gt;13.3&lt;/td&gt;&lt;td&gt;53.56&lt;/td&gt;&lt;td&gt;47.1&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;92.9&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;1.01&lt;/td&gt;&lt;td&gt;84.22&lt;/td&gt;&lt;td&gt;$0.00374&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;26&lt;/span&gt;hy3&lt;/th&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;71.7&lt;/td&gt;&lt;td&gt;48.6&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;89.7&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00279&lt;/td&gt;&lt;td&gt;5/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;27&lt;/span&gt;qwen3.8 max&lt;/th&gt;&lt;td&gt;57.5&lt;/td&gt;&lt;td&gt;67.4&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;92.6&lt;/td&gt;&lt;td class=&quot;best&quot;&gt;67.7&lt;/td&gt;&lt;td&gt;34.34&lt;/td&gt;&lt;td&gt;88.6&lt;/td&gt;&lt;td&gt;$0.01854&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;28&lt;/span&gt;minimax m2.7&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;48.69&lt;/td&gt;&lt;td&gt;50.1&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;87.4&lt;/td&gt;&lt;td&gt;56.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;80.43&lt;/td&gt;&lt;td&gt;$0.00354&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;29&lt;/span&gt;glm-5.2&lt;/th&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;67.8&lt;/td&gt;&lt;td&gt;51.2&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;89.5&lt;/td&gt;&lt;td&gt;62.1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;86.7&lt;/td&gt;&lt;td&gt;$0.01516&lt;/td&gt;&lt;td&gt;8/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;30&lt;/span&gt;kimi k2.7 code&lt;/th&gt;&lt;td&gt;30.5&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;47.8&lt;/td&gt;&lt;td&gt;79.3&lt;/td&gt;&lt;td&gt;89.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.01208&lt;/td&gt;&lt;td&gt;6/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;—&lt;/span&gt;longcat 2.5 preview free&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;&lt;strong&gt;free&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;0/8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;span class=&quot;rank&quot;&gt;—&lt;/span&gt;space bunny&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;$0.00192&lt;/td&gt;&lt;td&gt;0/8&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;&lt;span class=&quot;swatch&quot;&gt;&lt;/span&gt;best in column · — no published value · cover = benchmarks with data (of 8) · free = free preview model on the plan&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;how to read this&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;rank&lt;/b&gt; averages each model's rank across the eight benchmarks, blended 50/50 with its rank by cost per request. the weight is adjustable in the spreadsheet.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;light blue&lt;/b&gt; marks the best value in each column across the 32 models.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;—&lt;/b&gt; means no published value could be found anywhere as of 10 oct 2026. nothing is estimated.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;cost&lt;/b&gt; is the estimated price of a typical go request (the token mix published in the go docs), deepseek at off-peak rates, tiered models at their base tier.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;the benchmarks, briefly&lt;/h2&gt;

&lt;p&gt;eight benchmarks decide the ranking; the rest is context. each entry names who runs the eval, because the harness matters as much as the score.&lt;/p&gt;

&lt;h3&gt;the eight scored benchmarks&lt;/h3&gt;

&lt;dl&gt;
&lt;dt&gt;deepswe v1.1 &lt;small&gt;datacurve&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;long-horizon software-engineering benchmark: 113 original tasks across 91 open-source repos and 5 languages, graded by program verifiers. tasks are written from scratch rather than scraped from real pull requests, which keeps contamination down; the public leaderboard runs every entry on one harness (mini-swe-agent), so the numbers are comparable.&lt;/dd&gt;
&lt;dt&gt;terminal-bench 2.1 &lt;small&gt;vals ai · terminus 2&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;89 sandboxed terminal tasks — package management, builds, git, servers, system administration. the 2.1 revision repaired 28 tasks to close reward-hacking gaps. we read vals ai's official terminus 2 runs as the comparable line; vendor numbers on the same benchmark are kept in the workbook but sit lower and must not be compared across that boundary.&lt;/dd&gt;
&lt;dt&gt;scicode &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;research-grade scientific computing — physics, math, biology, chemistry problems broken into sub-steps requiring real domain background. artificial analysis publishes the current values; the underlying dataset is under review after an audit, so all scicode figures may be revised.&lt;/dd&gt;
&lt;dt&gt;aa-lcr &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;long-context reasoning: 100 questions over 10,000–100,000-token documents, llm-judged. tests whether a model genuinely uses long context or just skims it — the failure mode that separates real context windows from spec-sheet context windows.&lt;/dd&gt;
&lt;dt&gt;gpqa diamond &lt;small&gt;artificial analysis · epoch ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the diamond subset of google-proof q&amp;amp;a: expert-written graduate-level questions in physics, chemistry and biology, built so you can't guess your way through. values come from artificial analysis where available, epoch ai for the handful of models aa doesn't cover.&lt;/dd&gt;
&lt;dt&gt;swe-bench pro &lt;small&gt;mostly vendor-reported&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;scale ai's harder successor to swe-bench: longer, more realistic engineering tasks with multi-file changes. no standardized public board was reachable for most of these models, so this column is largely vendors reporting their own numbers — read it directionally, not as a leaderboard.&lt;/dd&gt;
&lt;dt&gt;terminal-bench 4.0 &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the current generation of terminal-bench — substantially harder than 2.1 (the best go score is 41.9) and highly sensitive to which agent ran it. independent mini-swe-agent numbers are preferred; vendor figures appear only where nothing independent exists.&lt;/dd&gt;
&lt;dt&gt;mmlu-pro &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the 14-choice, harder sibling of mmlu across 57 subjects — broad professional and stem knowledge with tougher distractors. vals ai has retired it for new model releases, so newer models simply have no value; that's a coverage gap, not a zero.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;reference data — shown, not scored&lt;/h3&gt;

&lt;dl&gt;
&lt;dt&gt;aa coding index &lt;small&gt;artificial analysis&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the coding agent index: aa's composite of deepswe v1.1 + terminal-bench 4.0 + swe-atlas-qna, produced behind a named agent/harness (claude code, codex…). where the agents page is gated, values fall back to aa's per-model coding index — a different composite. the sources tab labels which product each figure is.&lt;/dd&gt;
&lt;dt&gt;vals index &lt;small&gt;vals ai&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;vals ai's versioned composite across a 15-sector suite: coding (incl. tb 4.0, vibe code bench, code migration), web, finance and more. the 2026-09-25 v2.1 revision reshuffled the mix, so only current-page values appear here — older-version readings are excluded rather than mixed in.&lt;/dd&gt;
&lt;dt&gt;math &lt;small&gt;per vendor&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;whichever math benchmark each vendor published: aime 2026, matharena apex, frontiermath tiers, hmmt, proofbench. the test differs per model, so the column is informational — the workbook's sources tab names the test behind each figure.&lt;/dd&gt;
&lt;dt&gt;deepswe run metadata &lt;small&gt;datacurve&lt;/small&gt;&lt;/dt&gt;
&lt;dd&gt;the ± confidence interval, steps per task and output tokens per task from datacurve's board rows, where the model has one. context rather than a score: it shows whether a lead is real or inside the noise — gpt-6 astra's 74±3 against muse spark 1.3's unmeasured 75.4, for instance.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;what stands out&lt;/h2&gt;

&lt;h3&gt;the free model wins&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;step 5 preview free&lt;/b&gt; tops the ranking: three of the eight best-or-near-best scores (tb 2.1 85.0, scicode 58.9, aa-lcr 88.3) at zero cost. free previews are limited-time, so the practical pick is different: see muse spark 1.3 below.&lt;/p&gt;

&lt;h3&gt;a $0.10 model is the best value on the plan&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;muse spark 1.3 contributor&lt;/b&gt; is #2 overall and holds the deepswe crown (75.4) at roughly a quarter of a thousandth of a dollar per request. &lt;b&gt;deepseek v4.1 flash&lt;/b&gt; (#3) pairs the lineup's second-best deepswe score, 74.2, with near-muse pricing. caveat: the contributor tier trains on your prompts and is region-limited.&lt;/p&gt;

&lt;h3&gt;terminal-bench 4.0 is a different world&lt;/h3&gt;
&lt;p&gt;the whole lineup struggles on the current terminal benchmark: the best go score is glm-5.3's 41.9. independent mini-swe-agent runs typically land 10+ points below vendor numbers, so treat every 4.0 figure as harness-bound.&lt;/p&gt;

&lt;h3&gt;raw scores don't win — cost does&lt;/h3&gt;
&lt;p&gt;kimi k3 leads aa-lcr (88.7) and scicode is nearly locked down by mimo-v2.6-pro (60.9), yet both sit mid-table: at $3/$15 and even $0.435 per million, their per-request cost drags the blend. pure-quality rankings would look very different.&lt;/p&gt;

&lt;h2&gt;composite indices, math &amp;amp; run details&lt;/h2&gt;

&lt;p&gt;informational columns from the spreadsheet — the composites and the math scores are not part of the ranking score. math uses a different benchmark per vendor (aime 2026, matharena apex, frontiermath, hmmt, proofbench…), so compare those with care.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;composite indices, math and run details&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;model&lt;/th&gt;
&lt;th&gt;aa coding index&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;vals index&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;math&lt;/th&gt;
&lt;th&gt;deepswe ±ci&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-5&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;steps/task&lt;/th&gt;
&lt;th&gt;out tok/task&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;step 5 preview free&lt;/th&gt;&lt;td&gt;51.2&lt;/td&gt;&lt;td&gt;49.35&lt;/td&gt;&lt;td&gt;42&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;muse spark 1.3 contributor&lt;/th&gt;&lt;td&gt;54.3&lt;/td&gt;&lt;td&gt;58.16&lt;/td&gt;&lt;td&gt;55&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4.1 flash&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;51.32&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;claude haiku 5.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;54.31&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;muse spark 1.2 contributor&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.29&lt;/td&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;101&lt;/td&gt;&lt;td&gt;99k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.6-flash&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;53.23&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 flash vision exp&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;36.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.6-pro&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;55.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt 6 luna&lt;/th&gt;&lt;td&gt;41.1&lt;/td&gt;&lt;td&gt;51.22&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 flash&lt;/th&gt;&lt;td&gt;38.7&lt;/td&gt;&lt;td&gt;47.96&lt;/td&gt;&lt;td&gt;58.6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;153&lt;/td&gt;&lt;td&gt;108k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt 5.6 luna&lt;/th&gt;&lt;td&gt;43.2&lt;/td&gt;&lt;td&gt;51.69&lt;/td&gt;&lt;td&gt;78.6&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;102&lt;/td&gt;&lt;td&gt;73k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.8 flash&lt;/th&gt;&lt;td&gt;73&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.5&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.89&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.3-flash&lt;/th&gt;&lt;td&gt;71.5&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;93.9&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;123&lt;/td&gt;&lt;td&gt;73k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;mimo-v2.5-pro&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;33.84&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hy4 preview&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.94&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.3&lt;/th&gt;&lt;td&gt;74.8&lt;/td&gt;&lt;td&gt;53.51&lt;/td&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;124&lt;/td&gt;&lt;td&gt;80k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;deepseek v4 pro&lt;/th&gt;&lt;td&gt;43.1&lt;/td&gt;&lt;td&gt;47.63&lt;/td&gt;&lt;td&gt;65.3&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;155&lt;/td&gt;&lt;td&gt;106k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grok 4.6&lt;/th&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;52.09&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;50k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k3&lt;/th&gt;&lt;td&gt;76.2&lt;/td&gt;&lt;td&gt;50.3&lt;/td&gt;&lt;td&gt;65.6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;98&lt;/td&gt;&lt;td&gt;81k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;grok 4.7&lt;/th&gt;&lt;td&gt;56.3&lt;/td&gt;&lt;td&gt;54.95&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;longcat-2.0&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;81.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.7 plus&lt;/th&gt;&lt;td&gt;55.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;92.9&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k2.6&lt;/th&gt;&lt;td&gt;61.8&lt;/td&gt;&lt;td&gt;55.17&lt;/td&gt;&lt;td&gt;96.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;minimax m3&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;36.53&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;hy3&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.8 max&lt;/th&gt;&lt;td&gt;43.3&lt;/td&gt;&lt;td&gt;48.27&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;111&lt;/td&gt;&lt;td&gt;95k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;minimax m2.7&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;60.14&lt;/td&gt;&lt;td&gt;94.2&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.2&lt;/th&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;65.02&lt;/td&gt;&lt;td&gt;99.2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;129&lt;/td&gt;&lt;td&gt;78k&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;kimi k2.7 code&lt;/th&gt;&lt;td&gt;60.8&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;longcat 2.5 preview free&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;space bunny&lt;/th&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;the aa coding index mixes aa's agent index and its per-model coding index (note 2) · the vals index version varies (note 3) · the math benchmark varies per model&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;not ranked&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;longcat 2.5 preview free&lt;/b&gt; and &lt;b&gt;space bunny&lt;/b&gt; are on the plan but have no published scores on any of the eight benchmarks — space bunny's identity is still unconfirmed (a stealth listing, possibly minimax-family). until either publishes, they can't be placed.&lt;/p&gt;

&lt;h2&gt;no longer on the plan&lt;/h2&gt;

&lt;p&gt;kept for reference: seven models that appeared in the previous version of the sheet but are not in the current go lineup. three of them still exist pay-per-use on opencode zen.&lt;/p&gt;

&lt;figure&gt;
&lt;table aria-label=&quot;models no longer on the plan&quot;&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;model&lt;/th&gt;
&lt;th class=&quot;l&quot;&gt;status&lt;/th&gt;
&lt;th&gt;deepswe&lt;/th&gt;
&lt;th&gt;terminal-bench 2.1&lt;/th&gt;
&lt;th&gt;scicode&lt;/th&gt;
&lt;th&gt;aa-lcr&lt;/th&gt;
&lt;th&gt;gpqa diamond&lt;/th&gt;
&lt;th&gt;swe-bench pro&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;terminal-bench 4.0&lt;sup&gt;&lt;a href=&quot;../../#/software/opencode-go-model-league/note-4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;
&lt;th&gt;mmlu-pro&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 astra&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;not in go — zen pay-per-use&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;87.27&lt;/td&gt;&lt;td&gt;56.5&lt;/td&gt;&lt;td&gt;80.7&lt;/td&gt;&lt;td&gt;96.1&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;58.18&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gemini 3.8 flash&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;not in go — zen pay-per-use&lt;/td&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;81.27&lt;/td&gt;&lt;td&gt;56.6&lt;/td&gt;&lt;td&gt;81.3&lt;/td&gt;&lt;td&gt;95.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;19.09&lt;/td&gt;&lt;td&gt;90.22&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;gpt-6 sol&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;not in go — zen pay-per-use&lt;/td&gt;&lt;td&gt;68.8&lt;/td&gt;&lt;td&gt;83.15&lt;/td&gt;&lt;td&gt;57.6&lt;/td&gt;&lt;td&gt;83.7&lt;/td&gt;&lt;td&gt;94.3&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;49.39&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.7 max&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no longer in go lineup&lt;/td&gt;&lt;td&gt;21.6&lt;/td&gt;&lt;td&gt;61.05&lt;/td&gt;&lt;td&gt;49.5&lt;/td&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;92.3&lt;/td&gt;&lt;td&gt;60.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;89.31&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;qwen3.6 plus&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no longer in go lineup&lt;/td&gt;&lt;td&gt;2.65&lt;/td&gt;&lt;td&gt;53.18&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;78.3&lt;/td&gt;&lt;td&gt;88.2&lt;/td&gt;&lt;td&gt;56.6&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;87.67&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;glm-5.1&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;no longer in go lineup&lt;/td&gt;&lt;td&gt;18.9&lt;/td&gt;&lt;td&gt;56.9&lt;/td&gt;&lt;td&gt;44.8&lt;/td&gt;&lt;td&gt;73.7&lt;/td&gt;&lt;td&gt;86.8&lt;/td&gt;&lt;td&gt;58.4&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;86.9&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;union alpha free&lt;/th&gt;&lt;td class=&quot;l&quot;&gt;retired (free stealth preview)&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;td&gt;51&lt;/td&gt;&lt;td class=&quot;none&quot;&gt;—&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/figure&gt;

&lt;h2&gt;changes&lt;/h2&gt;

&lt;ul class=&quot;changes&quot;&gt;
&lt;li&gt;&lt;time datetime=&quot;2026-10-14&quot;&gt;14 october 2026&lt;/time&gt; two sentences under &lt;a href=&quot;../../#/software/opencode-go-model-league/what-stands-out&quot;&gt;what stands out&lt;/a&gt; disagreed with the ranking, and were made to agree. no number in a table was touched. muse spark 1.3 contributor costs about a quarter of a thousandth of a &lt;del&gt;cent&lt;/del&gt; &lt;ins&gt;dollar&lt;/ins&gt; a request, and deepseek v4.1 flash pairs &lt;del&gt;the best terminal-bench 2.1 score in the lineup&lt;/del&gt; &lt;ins&gt;the lineup's second-best deepswe score&lt;/ins&gt; with near-muse pricing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;notes &amp;amp; caveats&lt;/h2&gt;

&lt;ol class=&quot;notes&quot;&gt;
&lt;li id=&quot;note-1&quot;&gt;&lt;b&gt;swe-bench pro is nearly all vendor-reported.&lt;/b&gt; no standardized public board was reachable for most of these models; the few independent values (claude haiku 5.5 64.8, kimi k3 63.3) are aggregations. read the column directionally, not as a leaderboard.&lt;/li&gt;
&lt;li id=&quot;note-2&quot;&gt;&lt;b&gt;the aa coding index mixes two products.&lt;/b&gt; where aa's coding agent index (deepswe v1.1 + terminal-bench 4.0 + swe-atlas-qna, harness-tagged) was readable, it is used; otherwise aa's per-model coding index — a different composite — stands in. the sources tab carries the exact product per value.&lt;/li&gt;
&lt;li id=&quot;note-3&quot;&gt;&lt;b&gt;the vals index is versioned.&lt;/b&gt; current-page values are used (v2.1 where it exists); pre-v2.1 numbers (e.g. muse spark 1.3's 59.47-era readings) systematically differ and several model-page &quot;accuracy headlines&quot; were verified to not be the index at all and were excluded.&lt;/li&gt;
&lt;li id=&quot;note-4&quot;&gt;&lt;b&gt;terminal-bench 4.0 is extremely harness-sensitive&lt;/b&gt; — vals' mini-swe-agent runs are preferred, vendor numbers kept only where nothing independent exists. minimax m3 illustrates it: 1.01 independent vs 66.0 vendor, on a different version of the benchmark.&lt;/li&gt;
&lt;li id=&quot;note-5&quot;&gt;&lt;b&gt;deepswe ±ci / steps / output tokens&lt;/b&gt; come from datacurve's leaderboard rows only; they are missing wherever the model's row isn't one of the 21 rendered configs. use them to judge whether a lead is real (e.g. gpt-6 astra's 74±3 vs muse spark 1.3's unmeasured 75.4).&lt;/li&gt;
&lt;/ol&gt;

&lt;p class=&quot;meta&quot;&gt;&lt;a href=&quot;https://opencode.ai/go&quot;&gt;opencode.ai/go&lt;/a&gt; · generated 10 october 2026 from the updated benchmark workbook&lt;/p&gt;</content>
  </entry>
</feed>
