<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>anton kundenko · writing</title><description>essays and notes on vector databases, simd, allocators, and tiny vms.</description><link>https://anton.kundenko.dev/</link><language>en</language><item><title>datalog on a columnar engine</title><link>https://anton.kundenko.dev/writing/datalog-on-a-columnar-engine/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/datalog-on-a-columnar-engine/</guid><description>a new query surface landed this week. eav triples, semi-naive evaluation, and a fixpoint that fits the morsel pipeline naturally.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><category>rayforce2</category><category>datalog</category><category>query-language</category></item><item><title>writing down what i know</title><link>https://anton.kundenko.dev/writing/writing-down-what-i-know/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/writing-down-what-i-know/</guid><description>the experiment teidedb is built on. eighteen years of intuition into a spec dense enough that something else can deliver the implementation.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><category>teidedb</category><category>rayforce2</category><category>agents</category><category>methodology</category></item><item><title>morsel-driven, finally</title><link>https://anton.kundenko.dev/writing/morsel-driven-finally/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/morsel-driven-finally/</guid><description>rayforce2 with the teide pipeline underneath rayfall. morsels make cancellation, fusion, and profiling structurally simpler.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><category>rayforce2</category><category>performance</category><category>execution</category></item><item><title>merging teide with rayforce</title><link>https://anton.kundenko.dev/writing/merging-teide-with-rayforce/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/merging-teide-with-rayforce/</guid><description>the parallel research project and the production system are now one repo. keeping the language. swapping the engine.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><category>rayforce</category><category>rayforce2</category><category>teidedb</category><category>architecture</category></item><item><title>a week of ui frameworks</title><link>https://anton.kundenko.dev/writing/a-week-of-ui-frameworks/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/a-week-of-ui-frameworks/</guid><description>seven days, four desktop ui frameworks, and the decision to keep the database UI close to the engine.</description><pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate><category>rayforce</category><category>ui</category><category>retrospective</category></item><item><title>the day rayforce opened</title><link>https://anton.kundenko.dev/writing/the-day-rayforce-opened/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/the-day-rayforce-opened/</guid><description>five years of thinking, two and a half years of private commits. today rayforce is open source.</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>milestone</category></item><item><title>looking back at o, ten years in</title><link>https://anton.kundenko.dev/writing/looking-back-at-o-ten-years-in/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/looking-back-at-o-ten-years-in/</guid><description>ten years of theplatform. what i think now that i did not think then.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate><category>theplatform</category><category>o</category><category>retrospective</category></item><item><title>shelving axl</title><link>https://anton.kundenko.dev/writing/shelving-axl/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/shelving-axl/</guid><description>four months, one hundred and seventy-nine commits, then closed. what the experiment gave back and what it did not.</description><pubDate>Fri, 31 Oct 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>axl</category><category>design</category></item><item><title>what simdbench taught me</title><link>https://anton.kundenko.dev/writing/what-simdbench-taught-me/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/what-simdbench-taught-me/</guid><description>a single c file, a makefile, and a csv. the rule that emerged after four months of measuring.</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>performance</category><category>simd</category><category>benchmarking</category></item><item><title>axl is rayforce minus the database</title><link>https://anton.kundenko.dev/writing/axl-is-rayforce-minus-the-database/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/axl-is-rayforce-minus-the-database/</guid><description>axldb is the rayforce kernel with the database parts removed to test where the engine boundary actually sits.</description><pubDate>Sat, 07 Jun 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>axl</category><category>c</category><category>design</category></item><item><title>bindings before users</title><link>https://anton.kundenko.dev/writing/bindings-before-users/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/bindings-before-users/</guid><description>the repo is still private. i am writing the python orm anyway. it is the cheapest way to find out which parts of the c api are wrong.</description><pubDate>Fri, 18 Apr 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>python</category><category>api</category><category>design</category></item><item><title>per-thread heaps, no mutex on the hot path</title><link>https://anton.kundenko.dev/writing/per-thread-heaps/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/per-thread-heaps/</guid><description>every task carries its own allocator. cross-thread frees never touch a lock.</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><category>rayforce</category><category>c</category><category>performance</category><category>allocator</category><category>concurrency</category></item><item><title>the buddy allocator that finally works</title><link>https://anton.kundenko.dev/writing/the-buddy-allocator-that-finally-works/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/the-buddy-allocator-that-finally-works/</guid><description>a u64 bitmap, a mask, a count-trailing-zeroes. the smallest fitting order in two instructions.</description><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate><category>rayforce</category><category>c</category><category>performance</category><category>allocator</category></item><item><title>ksimple is a tutorial in compression</title><link>https://anton.kundenko.dev/writing/ksimple-is-a-tutorial-in-compression/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/ksimple-is-a-tutorial-in-compression/</guid><description>a week reading kparc&apos;s annotated minimal k. two ideas i stole and one i did not.</description><pubDate>Thu, 11 Jul 2024 00:00:00 GMT</pubDate><category>rayforce</category><category>rayfall</category><category>kdb</category></item><item><title>six grammars in under nine hundred lines</title><link>https://anton.kundenko.dev/writing/five-languages-in-six-hundred-lines/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/five-languages-in-six-hundred-lines/</guid><description>an audit of every peg grammar shipped under std/. the small line count is evidence for grammars-as-values.</description><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><category>theplatform</category><category>parsing</category><category>peg</category><category>dsl</category></item><item><title>what rayfall takes from k, and what it does not</title><link>https://anton.kundenko.dev/writing/what-rayfall-takes-from-k/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/what-rayfall-takes-from-k/</guid><description>a year in. writing down which of k&apos;s choices made it into rayfall and which i deliberately left behind.</description><pubDate>Mon, 29 Jan 2024 00:00:00 GMT</pubDate><category>rayforce</category><category>rayfall</category><category>kdb</category><category>design</category></item><item><title>arity-sharded crates</title><link>https://anton.kundenko.dev/writing/arity-sharded-crates/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/arity-sharded-crates/</guid><description>tachyon&apos;s workspace is one crate per arity class. the cleanest split i have tried.</description><pubDate>Tue, 19 Sep 2023 00:00:00 GMT</pubDate><category>theplatform</category><category>architecture</category><category>rust</category></item><item><title>the first monad</title><link>https://anton.kundenko.dev/writing/the-first-monad/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/the-first-monad/</guid><description>the kernel signature on day one is the kernel signature today, even though the discipline around it changed.</description><pubDate>Sat, 19 Aug 2023 00:00:00 GMT</pubDate><category>rayforce</category><category>rayfall</category><category>c</category><category>design</category></item><item><title>initial commit</title><link>https://anton.kundenko.dev/writing/initial-commit/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/initial-commit/</guid><description>the rayforce repo went on disk today. seven files, a hundred and three lines, no allocator, no test.</description><pubDate>Wed, 22 Feb 2023 00:00:00 GMT</pubDate><category>rayforce</category><category>c</category></item><item><title>two atomics, one cursor</title><link>https://anton.kundenko.dev/writing/two-atomics-one-cursor/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/two-atomics-one-cursor/</guid><description>the head-tail rewrite. one flag bit makes the difference between &quot;spin once and recover&quot; and &quot;lock to be safe&quot;. 0.2.5 ships tonight.</description><pubDate>Tue, 30 Aug 2022 00:00:00 GMT</pubDate><category>hyperbridge</category><category>rust</category><category>concurrency</category><category>atomics</category></item><item><title>move, borrow, mixed</title><link>https://anton.kundenko.dev/writing/move-borrow-mixed/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/move-borrow-mixed/</guid><description>three laziness modes for join reactions. the runtime knows them. the surface still does not expose them.</description><pubDate>Tue, 12 Jul 2022 00:00:00 GMT</pubDate><category>theplatform</category><category>concurrency</category><category>design</category></item><item><title>starting in c, again</title><link>https://anton.kundenko.dev/writing/starting-in-c-again/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/starting-in-c-again/</guid><description>a year and a half of thinking. the database i want to ship lives in someone else&apos;s binary, so it has to be in c.</description><pubDate>Tue, 12 Apr 2022 00:00:00 GMT</pubDate><category>rayforce</category><category>c</category><category>design</category></item><item><title>what happens when the last receiver drops</title><link>https://anton.kundenko.dev/writing/what-happens-when-the-last-receiver-drops/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/what-happens-when-the-last-receiver-drops/</guid><description>two months of using hyperbridge in theplatform. one bug class i had been ignoring is now closed.</description><pubDate>Mon, 31 Jan 2022 00:00:00 GMT</pubDate><category>hyperbridge</category><category>rust</category><category>async</category></item><item><title>wakers queue, briefly</title><link>https://anton.kundenko.dev/writing/wakers-queue-briefly/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/wakers-queue-briefly/</guid><description>two days trying to wake n receivers in order. one commit message that is more honest than i would normally write.</description><pubDate>Fri, 19 Nov 2021 00:00:00 GMT</pubDate><category>hyperbridge</category><category>rust</category><category>async</category><category>post-mortem</category></item><item><title>starting hyperbridge</title><link>https://anton.kundenko.dev/writing/starting-hyperbridge/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/starting-hyperbridge/</guid><description>i needed an mpmc channel with async support. hyperbridge separated that concurrency problem from theplatform.</description><pubDate>Wed, 17 Nov 2021 00:00:00 GMT</pubDate><category>hyperbridge</category><category>rust</category><category>concurrency</category></item><item><title>an http request handler in thirty-two lines</title><link>https://anton.kundenko.dev/writing/an-http-server-in-fifty-lines/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/an-http-server-in-fifty-lines/</guid><description>composing a socket, a parser, and a reaction across subsystem lines, with no boundary to pay for.</description><pubDate>Wed, 26 May 2021 00:00:00 GMT</pubDate><category>theplatform</category><category>o</category><category>parsing</category><category>concurrency</category></item><item><title>one judgment, three subsystems</title><link>https://anton.kundenko.dev/writing/one-judgment-three-subsystems/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/one-judgment-three-subsystems/</guid><description>the bet i made in 2016 that i am, finally, fairly sure was right.</description><pubDate>Sun, 04 Oct 2020 00:00:00 GMT</pubDate><category>theplatform</category><category>o</category><category>architecture</category></item><item><title>after theplatform</title><link>https://anton.kundenko.dev/writing/after-theplatform/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/after-theplatform/</guid><description>four years in production. an embeddable, smaller, c-shaped sibling has been quietly forming.</description><pubDate>Tue, 15 Sep 2020 00:00:00 GMT</pubDate><category>rayforce</category><category>theplatform</category><category>design</category></item><item><title>join patterns instead of mailboxes</title><link>https://anton.kundenko.dev/writing/join-patterns-instead-of-mailboxes/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/join-patterns-instead-of-mailboxes/</guid><description>the first reactor is in. join patterns provide atomic matching that actor mailboxes do not.</description><pubDate>Tue, 17 Mar 2020 00:00:00 GMT</pubDate><category>theplatform</category><category>concurrency</category><category>join-calculus</category></item><item><title>channels are not enough</title><link>https://anton.kundenko.dev/writing/channels-are-not-enough/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/channels-are-not-enough/</guid><description>channel selection works until a transaction needs values from two channels. the reaction has to be the unit.</description><pubDate>Fri, 30 Aug 2019 00:00:00 GMT</pubDate><category>theplatform</category><category>concurrency</category><category>design</category></item><item><title>grammars are values, not strings</title><link>https://anton.kundenko.dev/writing/grammars-are-values-not-strings/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/grammars-are-values-not-strings/</guid><description>when grammars become first-class, the language stops being two languages.</description><pubDate>Wed, 23 Jan 2019 00:00:00 GMT</pubDate><category>theplatform</category><category>parsing</category><category>peg</category><category>design</category></item><item><title>the day i gave up on a fix library</title><link>https://anton.kundenko.dev/writing/the-day-i-gave-up-on-a-fix-library/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/the-day-i-gave-up-on-a-fix-library/</guid><description>a notebook entry from work i cannot share publicly. why grammars-as-values landed for me on this protocol first.</description><pubDate>Wed, 11 Apr 2018 00:00:00 GMT</pubDate><category>theplatform</category><category>parsing</category><category>fix</category></item><item><title>no allocation in the inner loop</title><link>https://anton.kundenko.dev/writing/no-allocation-in-the-inner-loop/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/no-allocation-in-the-inner-loop/</guid><description>the only discipline that has stayed put after a year of writing the o kernel.</description><pubDate>Tue, 05 Sep 2017 00:00:00 GMT</pubDate><category>theplatform</category><category>performance</category><category>rust</category></item><item><title>vec&lt;f64&gt; over a row of structs</title><link>https://anton.kundenko.dev/writing/vec-f64-over-a-row-of-structs/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/vec-f64-over-a-row-of-structs/</guid><description>a layout note I keep having to reread. why columnar wins by 10x once two passes are involved.</description><pubDate>Sun, 19 Feb 2017 00:00:00 GMT</pubDate><category>theplatform</category><category>performance</category><category>vectors</category></item><item><title>first sketch of o</title><link>https://anton.kundenko.dev/writing/first-sketch-of-o/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/first-sketch-of-o/</guid><description>the language has a name. settling the dispatch rule before the syntax.</description><pubDate>Tue, 08 Nov 2016 00:00:00 GMT</pubDate><category>theplatform</category><category>o</category><category>design</category></item><item><title>what k got right</title><link>https://anton.kundenko.dev/writing/what-k-got-right/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/what-k-got-right/</guid><description>three months in. why arity-classed vector evaluation still gives modern systems a useful design challenge.</description><pubDate>Wed, 22 Jun 2016 00:00:00 GMT</pubDate><category>theplatform</category><category>kdb</category><category>vectors</category><category>design</category></item><item><title>starting something</title><link>https://anton.kundenko.dev/writing/starting-something/</link><guid isPermaLink="true">https://anton.kundenko.dev/writing/starting-something/</guid><description>kicking off theplatform - a new system, a small language, and three ideas to fit into one runtime.</description><pubDate>Mon, 14 Mar 2016 00:00:00 GMT</pubDate><category>theplatform</category><category>design</category></item></channel></rss>