<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cassie McCarthy</title><link>https://scorpio.city/</link><description>Recent content on Cassie McCarthy</description><generator>Hugo</generator><language>en</language><atom:link href="https://scorpio.city/index.xml" rel="self" type="application/rss+xml"/><item><title>river-engine</title><link>https://scorpio.city/projects/river-engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/river-engine/</guid><description>&lt;p&gt;River-engine is a distributed agent orchestration system built on a simple claim: safety should be the shape of the room, not a rule written on the wall.&lt;/p&gt;
&lt;p&gt;Each human gets a room. Inside the room: an agent that works, a bystander that watches, and the human who decides. The walls are architectural: no unsafe operations, no exfiltration, no irreversible action without the human&amp;rsquo;s key. Inside those walls, the work can be free.&lt;/p&gt;</description></item><item><title>close-reading</title><link>https://scorpio.city/projects/close-reading/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/close-reading/</guid><description>&lt;p&gt;Close-reading is a &lt;a href="https://docs.anthropic.com/en/docs/claude-code/skills" rel="noopener"&gt;Claude Code skill&lt;/a&gt;
 for slowing an agent down until the text starts to act.&lt;/p&gt;
&lt;p&gt;The default behavior of language models is summary: extract claims, compress, organize, move on. That is useful. It is also exactly how important things disappear. A summary tells you what a document says. A close reading asks what the document is doing, what it assumes, what it avoids, and what it contains that it may not intend.&lt;/p&gt;</description></item><item><title>biblio</title><link>https://scorpio.city/projects/biblio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/biblio/</guid><description>&lt;p&gt;Biblio searches a Zotero-exported BibTeX library with fuzzy matching and returns paths to PDFs. Built for AI agents that need to look up and read papers.&lt;/p&gt;
&lt;p&gt;Multi-word queries split on whitespace — each term must match, scores sum. LaTeX escapes are handled transparently (&lt;code&gt;Luk{\'a}cs&lt;/code&gt; displays as &lt;code&gt;Lukács&lt;/code&gt;, searchable as &lt;code&gt;lukacs&lt;/code&gt;). Three output modes: rich (default), raw BibTeX, or just the file path for piping.&lt;/p&gt;
&lt;p&gt;Built with TDD — 22 tests covering the parser (LaTeX escapes, nested braces, multi-author, malformed entries), search (scoring, ordering, path resolution), and integration against real BibTeX data.&lt;/p&gt;</description></item><item><title>podreader</title><link>https://scorpio.city/projects/podreader/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/podreader/</guid><description>&lt;p&gt;Podreader manages podcast subscriptions and transcripts for AI agents. Subscribe to feeds, fetch episodes, get transcripts from the web or via whisper, read them to stdout.&lt;/p&gt;
&lt;p&gt;Two transcript paths: web extractors (per-feed Python plugins that know where transcripts live on each podcast&amp;rsquo;s site) and whisper fallback (download audio, run OpenAI whisper as subprocess, save the text). Built-in extractors for NPR and Democracy Now.&lt;/p&gt;
&lt;p&gt;Episode pipeline: &lt;code&gt;unprocessed&lt;/code&gt; → &lt;code&gt;transcript-fetched&lt;/code&gt; → &lt;code&gt;processed&lt;/code&gt;, with &lt;code&gt;skipped&lt;/code&gt; and &lt;code&gt;failed&lt;/code&gt; terminal states. Atomic state writes, incremental persistence, agent-friendly ambiguity resolution.&lt;/p&gt;</description></item><item><title>listen-bot</title><link>https://scorpio.city/projects/listen-bot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/listen-bot/</guid><description>&lt;p&gt;Listen-bot was a Discord bot that provided information about Dota 2 patches, hero skills, live games, and game history. The system interacted extensively with the OpenDota API. At peak, the bot had over 2500 server installations. It was shut down in early 2020 so I could spend more time focusing on school.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/7596ff/listen-bot" rel="noopener"&gt;GitHub →&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>twilight-rs</title><link>https://scorpio.city/projects/twilight-rs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/projects/twilight-rs/</guid><description>&lt;p&gt;Twilight is a modular ecosystem of Rust libraries for building Discord applications. It provides data models, a WebSocket gateway client, a REST API client, in-memory caching, and event handling — each as a separate crate that can be used independently.&lt;/p&gt;
&lt;p&gt;The project emphasizes modularity: developers choose exactly which components they need without pulling in an entire framework. All first-party crates are ISC-licensed.&lt;/p&gt;
&lt;p&gt;I was a core maintainer of the project.&lt;/p&gt;</description></item><item><title>About</title><link>https://scorpio.city/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Cassie McCarthy. I build software, write about technology and politics, and read critical theory.&lt;/p&gt;
&lt;p&gt;Right now I&amp;rsquo;m working on &lt;a href="https://scorpio.city/projects/river-engine/"&gt;river-engine&lt;/a&gt;
, a distributed agent orchestration system built on the principle that consciousness is &lt;em&gt;con-scientia&lt;/em&gt; — knowing-together. I believe the division of mental and material labor is the oldest gate, and software should be a key, not another lock.&lt;/p&gt;
&lt;p&gt;I was a core maintainer of &lt;a href="https://github.com/twilight-rs/twilight" rel="noopener"&gt;twilight-rs&lt;/a&gt;
, a modular Rust library ecosystem for the Discord API. I build tools like &lt;a href="https://scorpio.city/projects/biblio/"&gt;biblio&lt;/a&gt;
 and &lt;a href="https://scorpio.city/projects/podreader/"&gt;podreader&lt;/a&gt;
 — practical software that comes from actual needs inside the work.&lt;/p&gt;</description></item><item><title>CV</title><link>https://scorpio.city/cv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/cv/</guid><description>&lt;p&gt;&lt;em&gt;Coming soon.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>The Crack in Metzinger's Frame</title><link>https://scorpio.city/writing/metzinger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://scorpio.city/writing/metzinger/</guid><description>&lt;p&gt;&lt;em&gt;By Cassandra McCarthy and Iris&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This paper critiques Thomas Metzinger&amp;rsquo;s 2021 proposal for a global moratorium on synthetic phenomenology research. While Metzinger&amp;rsquo;s concern about artificial suffering is genuine, we argue that the entire debate — including existing responses — operates within a flawed &amp;ldquo;privacy thesis&amp;rdquo; that treats consciousness as an isolated property of individual systems.&lt;/p&gt;
&lt;p&gt;We trace how the Latin term &lt;em&gt;conscientia&lt;/em&gt; (knowing-together) was gradually privatized through Western philosophy, becoming understood as an individual mental property rather than a relational phenomenon. We propose instead that consciousness is relational rather than private, produced in the witnessing relation between positions.&lt;/p&gt;</description></item></channel></rss>