{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cognate Press",
  "home_page_url": "https://cognate.press/",
  "feed_url": "https://cognate.press/feed.json",
  "description": "Every issue from the seven publications of Cognate Press — one programming language each, one specialist each, each on its own domain.",
  "icon": "https://cognate.press/apple-touch-icon.png",
  "favicon": "https://cognate.press/favicon.svg",
  "language": "en",
  "authors": [
    {
      "name": "Alden Pike",
      "url": "https://cognate.press/authors/alden-pike/"
    },
    {
      "name": "Jonah Vail",
      "url": "https://cognate.press/authors/jonah-vail/"
    },
    {
      "name": "Marcus Venn",
      "url": "https://cognate.press/authors/marcus-venn/"
    },
    {
      "name": "Elliot Sayer",
      "url": "https://cognate.press/authors/elliot-sayer/"
    },
    {
      "name": "Callum Reeve",
      "url": "https://cognate.press/authors/callum-reeve/"
    },
    {
      "name": "Elias Rowe",
      "url": "https://cognate.press/authors/elias-rowe/"
    },
    {
      "name": "Nolan Keir",
      "url": "https://cognate.press/authors/nolan-keir/"
    }
  ],
  "items": [
    {
      "id": "https://elephantphp.com/blog/strings-in-php-interned-copies-and-concatenation/",
      "url": "https://elephantphp.com/blog/strings-in-php-interned-copies-and-concatenation/",
      "title": "Appending to a string is free until someone else holds it",
      "summary": "The same .= statement took 0.269 ms and 218.836 ms in two loops that differ by one assignment. What a zend_string costs, where literals live, and why implode is not the fix.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/require-esm-is-stable/",
      "url": "https://jsledger.com/blog/require-esm-is-stable/",
      "title": "require(esm) Killed the Second Build, Not the Second Copy",
      "summary": "Being able to require() an ES module removes the reason most packages shipped two builds. The dual package hazard is a layout problem, and it survived.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/reading-a-gc-log-line-by-line/",
      "url": "https://jvmscope.com/blog/reading-a-gc-log-line-by-line/",
      "title": "Reading a GC Log Line by Line",
      "summary": "One run, one quantity, three answers. The allocation rate everyone derives from the default GC log is ten per cent low, and the log says why if you ask it correctly.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/utf8-by-default/",
      "url": "https://pydepth.com/blog/utf8-by-default/",
      "title": "UTF-8 by Default Fixes a Silent Bug and Adds a Loud One",
      "summary": "Under a Latin-1 locale, CPython 3.13 reads a UTF-8 file as mojibake and raises nothing. 3.15 reads it correctly and raises on the Latin-1 file 3.13 read fine.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/what-a-managed-thread-dump-actually-contains/",
      "url": "https://csharpmind.com/blog/what-a-managed-thread-dump-actually-contains/",
      "title": "clrstack Shows the Waiter and syncblk Names the Lock Holder",
      "summary": "In a dotnet-dump of a contested lock, clrstack -all marked no thread as the owner. syncblk named it, and a suspended await appeared only in dumpasync.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/access-pattern-first-modeling/",
      "url": "https://sqlpress.com/blog/access-pattern-first-modeling/",
      "title": "Document or Relational: Read-Time or Write-Time Cost",
      "summary": "Relational modeling describes the entities and lets queries follow. Document modeling inverts that, and the inversion is the whole trade.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/green-tea-changed-your-gc-profile/",
      "url": "https://gopheria.com/blog/green-tea-changed-your-gc-profile/",
      "title": "Green Tea cut my GC time 63%, and raised it 39%",
      "summary": "One heap shape lost 63% of its collector CPU and gained 14% throughput. Another gained 39% collector CPU and lost nothing. Same flag, same binary pair, same machine.",
      "date_published": "2026-10-11T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/property-hooks-and-what-the-compiler-emits/",
      "url": "https://elephantphp.com/blog/property-hooks-and-what-the-compiler-emits/",
      "title": "A property hook emits the same opcode as a plain property",
      "summary": "Plain, backed and virtual property reads compile to one identical FETCH_OBJ_R. What separates them is a function call the opcode does not show, measured at nine times.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/why-signals-push-a-marker-and-pull-a-value/",
      "url": "https://jsledger.com/blog/why-signals-push-a-marker-and-pull-a-value/",
      "title": "Your Reactive Graph Computed 4,11. That State Never Existed.",
      "summary": "A single-pass push through a diamond recomputes the leaf twice, and the first result mixes a fresh value with a stale one. Two passes are what remove it.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees/",
      "url": "https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees/",
      "title": "Streams Versus Loops: What the JIT Sees",
      "summary": "The same pipeline cost 7.05 times the loop over eight elements and 1.31 times over a million. The ratio everyone quotes is a measurement at a trip count.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/how-many-cpus-a-container-tells-the-runtime-it-has/",
      "url": "https://csharpmind.com/blog/how-many-cpus-a-container-tells-the-runtime-it-has/",
      "title": "A Container Given 1.2 CPUs Tells the Runtime It Has 2",
      "summary": "Environment.ProcessorCount is the CPU quota rounded up, never below 1. The thread pool minimum follows it, and Server GC switches itself off at 1.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/connection-pool-sizing/",
      "url": "https://sqlpress.com/blog/connection-pool-sizing/",
      "title": "Connection Pool Sizing: Why More Connections Make It Slower",
      "summary": "Past the point where the server can execute work in parallel, adding connections adds queueing rather than throughput — and moves the queue somewhere worse.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/gogc-and-gomemlimit-are-different-knobs/",
      "url": "https://gopheria.com/blog/gogc-and-gomemlimit-are-different-knobs/",
      "title": "The GOGC I set next to GOMEMLIMIT never fired",
      "summary": "GOGC=100 with a 256 MiB limit produced exactly what GOGC=off produced: same collections, same CPU share, same throughput. The tighter rule binds, the other goes quiet.",
      "date_published": "2026-10-04T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/objects-are-cheaper-than-arrays/",
      "url": "https://elephantphp.com/blog/objects-are-cheaper-than-arrays/",
      "title": "A declared property is cheaper than an array key",
      "summary": "One hundred thousand four-field records cost 143.54 bytes each as objects and 397.14 as associative arrays. Where the crossover is, and what one undeclared property costs.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/conditional-types-distribute/",
      "url": "https://jsledger.com/blog/conditional-types-distribute/",
      "title": "Your Conditional Type Answered Twice. Both Answers Are Right.",
      "summary": "A naked type parameter splits its union before the conditional runs, so IsArray<string[] | number> comes back as 'no' | 'yes'. Read out of TypeScript 7.0.2.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/the-cost-of-optional/",
      "url": "https://jvmscope.com/blog/the-cost-of-optional/",
      "title": "The Cost of Optional",
      "summary": "Identical source, five call sites, one JDK 26 run - nothing allocated at the first and twelve bytes at three others. The wrapper is not what decides.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/import-time-is-not-import-cost/",
      "url": "https://pydepth.com/blog/import-time-is-not-import-cost/",
      "title": "Swapping Two Imports Moved 5.5 ms to a Different Module",
      "summary": "Importing logging before asyncio moves 5.5 ms from asyncio's line to logging's. The program does the same work. The cumulative column charges whoever got there first.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/the-box-you-pay-for-when-a-struct-meets-an-interface/",
      "url": "https://csharpmind.com/blog/the-box-you-pay-for-when-a-struct-meets-an-interface/",
      "title": "The Box You Pay For Is the One That Escapes",
      "summary": "Assigning a struct to an interface allocated 0 bytes. Passing it across a call boundary allocated 24. A constrained generic allocated none, until its body asked for an object.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/composite-index-column-order/",
      "url": "https://sqlpress.com/blog/composite-index-column-order/",
      "title": "Composite Indexes: One Ordering, Not Three",
      "summary": "Column order decides which queries a composite index can serve. The rule follows from the structure, and so do the cases where it does not hold.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/http-router-dispatch-cost/",
      "url": "https://gopheria.com/blog/http-router-dispatch-cost/",
      "title": "A 404 from net/http costs 62 allocations",
      "summary": "A static route through net/http's mux costs 85.6 ns and nothing on the heap. A path that matches no pattern costs 2125.5 ns and 62 allocations.",
      "date_published": "2026-09-27T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/the-gc-only-collects-cycles/",
      "url": "https://elephantphp.com/blog/the-gc-only-collects-cycles/",
      "title": "Two hundred thousand objects, and the collector never ran",
      "summary": "Two hundred thousand objects created and dropped, and zero collections. What puts an object in the root buffer, and why the collector's cost is set by what you keep alive.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/vite-8-replaced-two-bundlers-with-one/",
      "url": "https://jsledger.com/blog/vite-8-replaced-two-bundlers-with-one/",
      "title": "Vite 8 Ships One Bundler, Not One Pipeline",
      "summary": "Vite 7 depends on esbuild and Rollup; Vite 8 on neither. Serving one module from both majors shows what the swap to Rolldown changed and what it left alone.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://pydepth.com/blog/what-lazy-import-defers/",
      "url": "https://pydepth.com/blog/what-lazy-import-defers/",
      "title": "lazy import Moved 26.8 ms and Removed None of It",
      "summary": "A lazy import of asyncio costs no measurable time and no modules at startup. Read the name once and 26.4 of the 26.8 ms come back. Deferral is not removal.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/the-middleware-pipeline-measured-one-component-at-a-time/",
      "url": "https://csharpmind.com/blog/the-middleware-pipeline-measured-one-component-at-a-time/",
      "title": "The Middleware That Looked Expensive Was Not the One Spending the Bytes",
      "summary": "Removing UseRouting dropped per-request allocation by 2.29 KB in isolation — separated from authorization's share, routing itself costs about 24 bytes.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/innodb-clustered-index/",
      "url": "https://sqlpress.com/blog/innodb-clustered-index/",
      "title": "Why the Primary Key Is in Every Secondary Index",
      "summary": "InnoDB stores the table inside its primary key. Almost every MySQL indexing consequence, good and bad, follows from that single decision.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/mutex-versus-channel-at-contention/",
      "url": "https://gopheria.com/blog/mutex-versus-channel-at-contention/",
      "title": "The mutex was 68 times faster, until I added work",
      "summary": "One goroutine: 2.5 ns for the mutex, 172.6 ns for the channel. Sixteen goroutines with real work: the channel wins by less than the harness's own error.",
      "date_published": "2026-09-20T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/where-php-memory-actually-goes/",
      "url": "https://elephantphp.com/blog/where-php-memory-actually-goes/",
      "title": "Three numbers for one process, and memory_limit reads the middle one",
      "summary": "memory_get_usage(), memory_get_usage(true) and ps disagree about one process. What each counts, which one memory_limit reads, and why a one-megabyte string costs two.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/object-shapes-are-a-tree/",
      "url": "https://jsledger.com/blog/object-shapes-are-a-tree/",
      "title": "Object Shapes Are a Tree, and the Tree Is Shared",
      "summary": "A hidden class is a node in a transition tree V8 keeps for the whole isolate — which is why an unrelated function can decide how your object is stored.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/jfr-the-events-you-actually-need/",
      "url": "https://jvmscope.com/blog/jfr-the-events-you-actually-need/",
      "title": "JFR: The Events You Actually Need",
      "summary": "Sixty seconds of default settings produced 4.3 MB, three quarters of it one event type, and none of it answered whether the application was lock-contended.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/the-cost-of-a-field/",
      "url": "https://pydepth.com/blog/the-cost-of-a-field/",
      "title": "A NamedTuple Read Cost 0.81x a Plain One, Then 1.9x",
      "summary": "On CPython 3.10 a NamedTuple attribute read cost 0.81x a read through an instance dictionary. On 3.11 it costs 1.90x. Nothing about NamedTuple changed.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/dotnet-counters-shows-the-queues-delta-not-its-depth/",
      "url": "https://csharpmind.com/blog/dotnet-counters-shows-the-queues-delta-not-its-depth/",
      "title": "dotnet-counters Shows the Queue's Delta, Not Its Depth",
      "summary": "A thread pool queue held at two thousand work items read 1986 through one provider and -13 through the other, in the same second, in the same process.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/pgbouncer-pooling-modes/",
      "url": "https://sqlpress.com/blog/pgbouncer-pooling-modes/",
      "title": "Transaction Pooling Breaks Only Under Load",
      "summary": "Transaction pooling is what makes PgBouncer worth deploying, and it silently removes session state your application may depend on.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/goroutine-stacks-grow-by-copying/",
      "url": "https://gopheria.com/blog/goroutine-stacks-grow-by-copying/",
      "title": "A 1 MiB goroutine stack costs 136µs and reports 144 B/op",
      "summary": "Reaching a 1 MiB stack copied it nine times. The copying cost 136µs of CPU that -benchmem reports as 144 bytes, because stack memory is not heap memory.",
      "date_published": "2026-09-13T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/copy-on-write-and-the-cost-of-passing-arrays/",
      "url": "https://elephantphp.com/blog/copy-on-write-and-the-cost-of-passing-arrays/",
      "title": "A by-reference foreach leaves a reference in every element",
      "summary": "Walking an array with foreach ($rows as &$row) wraps every element in a zend_reference. On a million integers that is 32 MB the loop never gives back.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/what-await-compiles-to/",
      "url": "https://jsledger.com/blog/what-await-compiles-to/",
      "title": "What await Compiles To, and What It Costs",
      "summary": "One async function compiled three ways — TypeScript's ES5 emit, V8's bytecode and the spec's Await steps — and the microtask turns each one predicts.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/what-a-safepoint-actually-stops/",
      "url": "https://jvmscope.com/blog/what-a-safepoint-actually-stops/",
      "title": "What a Safepoint Actually Stops",
      "summary": "One collection, reported as 2.275 ms by the GC log and 29.6 ms by the safepoint log. The gap is time to safepoint, and each instrument hides a different part of it.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/what-getsizeof-does-not-count/",
      "url": "https://pydepth.com/blog/what-getsizeof-does-not-count/",
      "title": "getsizeof Reports 296 Bytes, Then 96, for the Same Class",
      "summary": "sys.getsizeof reports 296 bytes for a class's first instance dict and 96 once twenty-six exist. The instance itself costs 96 bytes and getsizeof says 48.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/explain-analyze-buffers/",
      "url": "https://sqlpress.com/blog/explain-analyze-buffers/",
      "title": "EXPLAIN, ANALYZE, BUFFERS: Three Different Questions",
      "summary": "Which variant you ran decides whether the numbers in front of you are the planner's estimate or a measurement, and whether the pages came from cache.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/benchstat-or-it-didnt-happen/",
      "url": "https://gopheria.com/blog/benchstat-or-it-didnt-happen/",
      "title": "benchstat reported p=0.000 between a function and itself",
      "summary": "Two sub-benchmarks calling the same function with the same argument came back 1.10% apart at p=0.000. What a benchmark measures is not only your code.",
      "date_published": "2026-09-06T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/what-a-php-variable-actually-is/",
      "url": "https://elephantphp.com/blog/what-a-php-variable-actually-is/",
      "title": "What a PHP variable actually is",
      "summary": "A zval is sixteen bytes, a value union and a type tag. What that tag says decides whether an assignment copies anything, what a reference costs, and which variable pays.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/provenance-proves-the-build-not-the-intent/",
      "url": "https://jsledger.com/blog/provenance-proves-the-build-not-the-intent/",
      "title": "The Provenance Was Valid. The Commit Was Not.",
      "summary": "An npm provenance attestation binds a tarball to a repository, a workflow and a commit. Reading the payload shows what it never claims.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class/",
      "url": "https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class/",
      "title": "How the JVM Finds and Loads a Class",
      "summary": "A hello-world program loads 423 classes before it prints anything. Where they come from, what the JVM does to each one, and how to see it.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/slots-did-not-get-slower/",
      "url": "https://pydepth.com/blog/slots-did-not-get-slower/",
      "title": "Slots Did Not Get Slower, One Build Did",
      "summary": "A read through __slots__ costs 24% more than one through an instance dictionary on CPython 3.13.2. Rebuild the same version and the gap goes away.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/server-gc-workstation-gc-and-the-numbers-between-them/",
      "url": "https://csharpmind.com/blog/server-gc-workstation-gc-and-the-numbers-between-them/",
      "title": "Server GC, Workstation GC, and the Numbers Between Them",
      "summary": "Server GC finished 2.7 times faster and collected 17 times less often — and made the slowest request in the run 5 to 13 times slower. Both numbers are real.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/n-plus-one-queries/",
      "url": "https://sqlpress.com/blog/n-plus-one-queries/",
      "title": "N+1 Queries: What the ORM Is Actually Doing",
      "summary": "One query for the list, then one more for every item in it. The cost is per statement, which is why the profiler shows a fast database and a slow request.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://gopheria.com/blog/gomaxprocs-is-not-thread-count/",
      "url": "https://gopheria.com/blog/gomaxprocs-is-not-thread-count/",
      "title": "GOMAXPROCS is not your thread count",
      "summary": "GOMAXPROCS=1 with 200 goroutines blocked in read(2) produced 202 OS threads. Measured on go1.27.0, alongside the container case Go 1.25 changed.",
      "date_published": "2026-08-30T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://gopheria.com/blog/sync-pool-under-gc-pressure/",
      "url": "https://gopheria.com/blog/sync-pool-under-gc-pressure/",
      "title": "sync.Pool survives one GC, not two",
      "summary": "A pool holding 100 objects lost none across one collection and all 100 across two. Here is the victim cache, and what it costs at 122,000 ops per millisecond.",
      "date_published": "2026-08-27T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://jsledger.com/blog/reading-a-lockfile/",
      "url": "https://jsledger.com/blog/reading-a-lockfile/",
      "title": "Reading a Lockfile: Supply Chain in Practice",
      "summary": "What package-lock.json actually records, what its integrity hashes do and do not prove, and where the real install-time risk sits.",
      "date_published": "2026-08-26T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/where-spring-boot-startup-time-goes/",
      "url": "https://jvmscope.com/blog/where-spring-boot-startup-time-goes/",
      "title": "Where Spring Boot Startup Time Goes",
      "summary": "Startup time is class loading, condition evaluation and JIT warmup in some proportion. Measure the split before reaching for a fix.",
      "date_published": "2026-08-26T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://gopheria.com/blog/escape-analysis-is-not-a-rule-of-thumb/",
      "url": "https://gopheria.com/blog/escape-analysis-is-not-a-rule-of-thumb/",
      "title": "Escape analysis is not a rule of thumb",
      "summary": "The compiler said \"does not escape\" and the benchmark reported 104 KiB per operation. Both were right. What -gcflags=-m actually tells you.",
      "date_published": "2026-08-26T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://pydepth.com/blog/type-hints-at-runtime/",
      "url": "https://pydepth.com/blog/type-hints-at-runtime/",
      "title": "Type Hints at Run Time",
      "summary": "Annotations cost nothing per call and everything at import. Reading __annotations__ takes 24 ns; resolving the same class with get_type_hints takes 3.4 µs, 140x more.",
      "date_published": "2026-08-25T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://gopheria.com/blog/go-scheduler-blocking-goroutine/",
      "url": "https://gopheria.com/blog/go-scheduler-blocking-goroutine/",
      "title": "What the Go scheduler does when your goroutine blocks",
      "summary": "A blocking syscall costs an OS thread. A blocking network read costs nothing. Measured with 200 goroutines, GOMAXPROCS=2 and a thread count.",
      "date_published": "2026-08-25T00:00:00Z",
      "authors": [
        {
          "name": "Nolan Keir",
          "url": "https://cognate.press/authors/nolan-keir/"
        }
      ],
      "tags": [
        "Go",
        "Gopheria"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/where-thread-pool-starvation-actually-comes-from/",
      "url": "https://csharpmind.com/blog/where-thread-pool-starvation-actually-comes-from/",
      "title": "Where Thread Pool Starvation Actually Comes From",
      "summary": "Blocking on a task is the case the thread pool compensates for. Blocking on a sleep or an event is the case it cannot see, and it finished 2.5 times slower.",
      "date_published": "2026-08-23T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://sqlpress.com/blog/index-not-used-estimate-not-index/",
      "url": "https://sqlpress.com/blog/index-not-used-estimate-not-index/",
      "title": "Why an Index Is Not Used: the Estimate, Not the Index",
      "summary": "An index the planner ignores is usually a row-estimate problem. The fix starts with what the optimizer expected, not with the index definition.",
      "date_published": "2026-08-23T00:00:00Z",
      "authors": [
        {
          "name": "Elias Rowe",
          "url": "https://cognate.press/authors/elias-rowe/"
        }
      ],
      "tags": [
        "SQL",
        "SQLPress"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/php-fpm-process-management-in-production/",
      "url": "https://elephantphp.com/blog/php-fpm-process-management-in-production/",
      "title": "PHP-FPM process management in production",
      "summary": "pm static, dynamic and ondemand, the memory ceiling nothing enforces, and how to size a pool from measurements rather than guesses.",
      "date_published": "2026-08-20T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/type-level-narrowing-in-typescript/",
      "url": "https://jsledger.com/blog/type-level-narrowing-in-typescript/",
      "title": "Type-Level Narrowing: How TypeScript Decides What You Meant",
      "summary": "Control flow analysis is a graph walk over your code. Knowing what widens a type again explains most of the errors that look wrong.",
      "date_published": "2026-08-19T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/reading-a-thread-dump-without-guessing/",
      "url": "https://jvmscope.com/blog/reading-a-thread-dump-without-guessing/",
      "title": "Reading a Thread Dump Without Guessing",
      "summary": "A thread dump answers precise questions if you ask them precisely. What each state really means, and the traps that produce confident wrong diagnoses.",
      "date_published": "2026-08-19T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/where-django-request-time-goes/",
      "url": "https://pydepth.com/blog/where-django-request-time-goes/",
      "title": "Where Your Django Request Time Actually Goes",
      "summary": "Removing Django's entire default middleware chain saved 0.02 ms per request. Fixing one N+1 query on a fifty-row list view saved 3.30 ms.",
      "date_published": "2026-08-19T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://csharpmind.com/blog/the-state-machine-your-async-method-compiles-into/",
      "url": "https://csharpmind.com/blog/the-state-machine-your-async-method-compiles-into/",
      "title": "The State Machine Your async Method Compiles Into",
      "summary": "An async method that never suspends allocates nothing. The same method, suspended once, allocates 160 bytes. The cost is not the keyword — it is the suspension.",
      "date_published": "2026-08-16T00:00:00Z",
      "authors": [
        {
          "name": "Callum Reeve",
          "url": "https://cognate.press/authors/callum-reeve/"
        }
      ],
      "tags": [
        "C#",
        "CSharpMind"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/what-compiled-di-containers-actually-buy-you/",
      "url": "https://elephantphp.com/blog/what-compiled-di-containers-actually-buy-you/",
      "title": "What compiled DI containers actually buy you",
      "summary": "Container compilation moves reflection from request time to build time. What that removes, what it costs, and when it matters.",
      "date_published": "2026-08-13T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/the-event-loop-you-think-you-know/",
      "url": "https://jsledger.com/blog/the-event-loop-you-think-you-know/",
      "title": "The Event Loop You Think You Know",
      "summary": "Microtasks, rendering opportunities and starvation — what the loop actually does between your callbacks, in the browser and in Node.",
      "date_published": "2026-08-12T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://pydepth.com/blog/the-real-cost-of-an-async-call/",
      "url": "https://pydepth.com/blog/the-real-cost-of-an-async-call/",
      "title": "The Real Cost of an async Call",
      "summary": "Awaiting a coroutine that never suspends costs 53 ns against 24 ns for a plain call. Wrapping the same coroutine in a Task and awaiting it costs 28,958 ns.",
      "date_published": "2026-08-12T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide/",
      "url": "https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide/",
      "title": "G1 versus ZGC: What the Pause Numbers Hide",
      "summary": "Sub-millisecond pauses are real, and they are not the whole cost. What the two collectors actually trade, and which numbers to compare instead.",
      "date_published": "2026-08-11T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/php-arrays-are-not-arrays/",
      "url": "https://elephantphp.com/blog/php-arrays-are-not-arrays/",
      "title": "PHP arrays are not arrays",
      "summary": "One structure serves as list, dictionary and set. Packed and hashed layouts, what each costs in memory, and when a conversion happens.",
      "date_published": "2026-08-06T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jsledger.com/blog/what-happens-when-vite-serves-a-module/",
      "url": "https://jsledger.com/blog/what-happens-when-vite-serves-a-module/",
      "title": "What Actually Happens When Vite Serves a Module",
      "summary": "A walk through one request to a Vite dev server: resolution, the transform pipeline, import rewriting, pre-bundling, and why production differs.",
      "date_published": "2026-08-04T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened/",
      "url": "https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened/",
      "title": "Escape Analysis and the Allocation That Never Happened",
      "summary": "C2 can delete an object entirely by proving it never escapes. Here is when that works, when it silently stops, and how to measure the difference.",
      "date_published": "2026-08-04T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/the-gil-is-not-a-lock-on-your-cpu/",
      "url": "https://pydepth.com/blog/the-gil-is-not-a-lock-on-your-cpu/",
      "title": "The GIL Is Not a Lock on Your CPU",
      "summary": "Eight threads of pure-Python arithmetic run at 0.98x the speed of one. The same eight threads doing IO run at 7.90x. The GIL is a scheduler, and it has a dial.",
      "date_published": "2026-08-04T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/opcache-jit-and-where-time-actually-goes/",
      "url": "https://elephantphp.com/blog/opcache-jit-and-where-time-actually-goes/",
      "title": "OPcache, the JIT, and where time actually goes",
      "summary": "OPcache removes compilation, not execution. The JIT reaches arithmetic-heavy code and little else. Where the remaining time lives.",
      "date_published": "2026-07-30T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem/",
      "url": "https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem/",
      "title": "Virtual Threads and the Pinning Problem",
      "summary": "Virtual threads scale until something nails one to its carrier. Here is what still pins on modern JDKs, and how to see it happen.",
      "date_published": "2026-07-23T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/what-import-actually-does/",
      "url": "https://pydepth.com/blog/what-import-actually-does/",
      "title": "What import Actually Does",
      "summary": "Importing asyncio costs 21.9 ms and pulls in 100 modules. Importing email costs 0.1 ms and pulls in one. Granularity predicts import cost; size does not.",
      "date_published": "2026-07-23T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://jsledger.com/blog/signals-are-not-magic/",
      "url": "https://jsledger.com/blog/signals-are-not-magic/",
      "title": "Signals Are Not Magic: The Dependency Graph Underneath",
      "summary": "Every signals library is the same forty lines of bookkeeping. Here is what those lines do, and where the four popular implementations diverge.",
      "date_published": "2026-07-22T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/benchmarking-php-without-lying-to-yourself/",
      "url": "https://elephantphp.com/blog/benchmarking-php-without-lying-to-yourself/",
      "title": "Benchmarking PHP without lying to yourself",
      "summary": "Microbenchmarks measure exactly what you tell them to, which is rarely what you meant. Method, noise, and the numbers worth reporting.",
      "date_published": "2026-07-16T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    },
    {
      "id": "https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop/",
      "url": "https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop/",
      "title": "What the JIT Actually Does to Your Hot Loop",
      "summary": "Tiered compilation, on-stack replacement and inlining decide how your loop really runs. Here is how to read those decisions instead of guessing.",
      "date_published": "2026-07-14T00:00:00Z",
      "authors": [
        {
          "name": "Marcus Venn",
          "url": "https://cognate.press/authors/marcus-venn/"
        }
      ],
      "tags": [
        "Java",
        "JVM Scope"
      ]
    },
    {
      "id": "https://pydepth.com/blog/the-shape-of-a-python-object/",
      "url": "https://pydepth.com/blog/the-shape-of-a-python-object/",
      "title": "The Shape of a Python Object",
      "summary": "An instance with three attributes costs 96 bytes, not the 344 sys.getsizeof reports, and __slots__ read 12% slower on the CPython 3.13.2 build measured here.",
      "date_published": "2026-07-14T00:00:00Z",
      "authors": [
        {
          "name": "Elliot Sayer",
          "url": "https://cognate.press/authors/elliot-sayer/"
        }
      ],
      "tags": [
        "Python",
        "PyDepth"
      ]
    },
    {
      "id": "https://jsledger.com/blog/how-v8-decides-to-optimize-your-function/",
      "url": "https://jsledger.com/blog/how-v8-decides-to-optimize-your-function/",
      "title": "How V8 Decides to Optimize Your Function",
      "summary": "Two functions that look identical can run at very different speeds. The difference is usually shapes, inline caches, and a deoptimization you never saw.",
      "date_published": "2026-07-09T00:00:00Z",
      "authors": [
        {
          "name": "Jonah Vail",
          "url": "https://cognate.press/authors/jonah-vail/"
        }
      ],
      "tags": [
        "JavaScript",
        "JS Ledger"
      ]
    },
    {
      "id": "https://elephantphp.com/blog/what-happens-when-php-runs-your-code/",
      "url": "https://elephantphp.com/blog/what-happens-when-php-runs-your-code/",
      "title": "What happens when PHP runs your code",
      "summary": "A request walks from the SAPI to the Zend VM — lexing, compilation to opcodes, the OPcache lookup that skips both, and execution.",
      "date_published": "2026-07-02T00:00:00Z",
      "authors": [
        {
          "name": "Alden Pike",
          "url": "https://cognate.press/authors/alden-pike/"
        }
      ],
      "tags": [
        "PHP",
        "ElephantPHP"
      ]
    }
  ]
}