<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tom Ryan</title><description>Tom Ryan. Mecha Ops Machina @ Fly, with security research, apps, open-source software, music, and consciousness research on the side.</description><link>https://tomryan.dev/</link><language>en-us</language><item><title>AI Can&apos;t Drink Protein Shakes</title><link>https://tomryan.dev/writing/ai-cant-drink-protein-shakes/</link><guid isPermaLink="true">https://tomryan.dev/writing/ai-cant-drink-protein-shakes/</guid><description>The missing piece in artificial intelligence might not be intelligence. It might be the body that gives intelligence a stake in the world.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>consciousness</category><category>meta</category></item><item><title>I Think I Love Fear</title><link>https://tomryan.dev/writing/i-think-i-love-fear/</link><guid isPermaLink="true">https://tomryan.dev/writing/i-think-i-love-fear/</guid><description>I used to think fear was the thing standing between me and the life I wanted. Now I think it might be the thing showing me where that life is.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>meta</category></item><item><title>A cross-tenant replay bug in trigger.dev, and what a route&apos;s own siblings tell you about it</title><link>https://tomryan.dev/writing/trigger-dev-cross-tenant-replay/</link><guid isPermaLink="true">https://tomryan.dev/writing/trigger-dev-cross-tenant-replay/</guid><description>GHSA-9fq3-68cw-r7p2: trigger.dev&apos;s task-replay endpoints let a remote attacker clone any organization&apos;s task run into an environment they own and read its payload. The dashboard route was fully unauthenticated; the API route authenticated the caller but never scoped the lookup to their tenant. The tell was sitting one file over the whole time — the sibling cancel and reschedule routes did it right. The writeup, the method, and what a five-reporter pileup says about the surface.</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><category>security</category><category>ai</category></item><item><title>A Small Look At ONE (1) WORLD</title><link>https://tomryan.dev/writing/a-small-look-at-one-world/</link><guid isPermaLink="true">https://tomryan.dev/writing/a-small-look-at-one-world/</guid><description>An early look at ONE (1) WORLD, a top-down pixel sandbox RPG about building a home on a strange audited island.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><category>meta</category></item><item><title>The Model Is Not The Whole Thing</title><link>https://tomryan.dev/writing/where-continuity-lives/</link><guid isPermaLink="true">https://tomryan.dev/writing/where-continuity-lives/</guid><description>I keep thinking about AI agents, memory, long-running work, and the weird question underneath all of it: where does continuity actually live?</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><category>consciousness</category><category>ai</category><category>meta</category></item><item><title>The Weird Seriousness of Merch</title><link>https://tomryan.dev/writing/the-weird-seriousness-of-merch/</link><guid isPermaLink="true">https://tomryan.dev/writing/the-weird-seriousness-of-merch/</guid><description>Merch sounds silly until you realize it is another way to make a private motto physical. Brick by Brick became a book, then a tiny shop, then something that can leave the laptop.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>meta</category></item><item><title>Brick by Brick is live</title><link>https://tomryan.dev/writing/brick-by-brick-is-live/</link><guid isPermaLink="true">https://tomryan.dev/writing/brick-by-brick-is-live/</guid><description>I published Brick by Brick, a short book about drift, proof, pressure, taste, tools, the body, and building a life one uneven brick at a time.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>meta</category></item><item><title>What survives the move? A benchmark for mind preservation claims</title><link>https://tomryan.dev/writing/what-survives-the-move/</link><guid isPermaLink="true">https://tomryan.dev/writing/what-survives-the-move/</guid><description>Paper 3 turns mind preservation into a benchmark question: after a transfer, which source-specific functions are still active, and which are just copied traces, mimicry, or proxy reward?</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><category>consciousness</category><category>ai</category></item><item><title>Stay in the Weirdness</title><link>https://tomryan.dev/writing/stay-in-the-weirdness/</link><guid isPermaLink="true">https://tomryan.dev/writing/stay-in-the-weirdness/</guid><description>It&apos;s Friday afternoon and my life looks amazing from just about every angle except, sometimes, my own. On purpose, ambition, the bet you make with the only time you&apos;ve got, and learning to sit in the weird part.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><category>meta</category><category>consciousness</category></item><item><title>A Vaultwarden SSO bug found five weeks after someone else found it, and what the duplicate tells you</title><link>https://tomryan.dev/writing/vaultwarden-sso-email-verified/</link><guid isPermaLink="true">https://tomryan.dev/writing/vaultwarden-sso-email-verified/</guid><description>CVE-2026-47164: the SSO existing-user binding branch in Vaultwarden skipped the email_verified check that the new-user branch enforced. I reported it on April 29. ch1nhpd reported it on March 22. Same root cause, found five weeks apart by two independent auditors. The writeup, the surface, and what the duplicate signal is worth.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>security</category><category>ai</category></item><item><title>An uninitialized read in V8&apos;s Maglev JIT, and what made it a P2 instead of a vulnerability</title><link>https://tomryan.dev/writing/v8-maglev-saved-mode-uninit/</link><guid isPermaLink="true">https://tomryan.dev/writing/v8-maglev-saved-mode-uninit/</guid><description>A use-of-uninitialized-value in Maglev&apos;s SaveCallSpeculationScope destructor. The audit workflow that found it, the one-line fix, and why the V8 team correctly reclassified it from Vulnerability to Bug — the speculation-mode flag isn&apos;t the load-bearing safety layer; the deopt guards are.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><category>security</category><category>v8</category><category>ai</category></item><item><title>What must be preserved? An audit of eight theories of consciousness from the engineering side</title><link>https://tomryan.dev/writing/what-must-be-preserved/</link><guid isPermaLink="true">https://tomryan.dev/writing/what-must-be-preserved/</guid><description>Brain preservation proceeds as if we know what to scan. We don&apos;t. Eight major theories of consciousness give answers that disagree by ten orders of magnitude on data volume and span the range from tractable engineering to physical impossibility. The bottleneck isn&apos;t compute or scanning. It&apos;s the theory itself.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>consciousness</category><category>meta</category></item><item><title>Finding an io_uring OOB read with Claude, and the limits of LLM-assisted kernel auditing</title><link>https://tomryan.dev/writing/iouring-sqe-mixed-oob/</link><guid isPermaLink="true">https://tomryan.dev/writing/iouring-sqe-mixed-oob/</guid><description>A deterministic, unprivileged 64-byte OOB read in io_uring&apos;s SQE_MIXED path, the audit workflow that found it, and an honest accounting of what LLM-assisted kernel review does and doesn&apos;t do well.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><category>security</category><category>kernel</category><category>ai</category></item></channel></rss>