case studies
shipped, scoped, and one decision i’m proud of each.
four projects. each one with a case study, because a project i can’t defend in detail is a project i shouldn’t list.
wip · 2026
caduceus
reviews the prs. does the tickets. one daemon.
a self-hosted rust daemon + hermes plugin. reviews every new pr revision with an isolated worker and publishes one sticky pass/fail verdict. label a ticket autofix and it claims it, runs the harness, and lands the branch + pr.
caduceus status
state dir: /var/lib/caduceus
last outcome: Ok(())
pool state: idle
phases:
awaiting_review: 2
done: 3
queued: 1
next head: barkley-assistant/caduceus#428
live workers: (none)in development · 2026
k75-rgb
a keyboard ignored the docs, so i read the firmware instead.
the redthunder k75 ships windows-only lighting software. i dumped the firmware, disassembled it, and rebuilt the protocol from evidence — a rust library that can set the matrix and save to flash, verified live over 2.4 ghz.
// every constant traces to evidence. no invented bytes.
pub const VID: u16 = 0x258a;
pub const PID: u16 = 0x019d;
/// Report 0x09, command 0x08: paint all 126 matrix slots.
pub const MATRIX_SLOTS: usize = 21 * 6;
/// Report 0x09, command 0x06: commit config to flash.
/// Verified: survives replug and the 2.4 GHz dongle.
pub struct SaveFlashFrame(Report);
/// Firmware-traced only. Never sent without an observer.
pub struct EffectIndexWrite {
pub index: u8, // 0x0F3F -> 0x0F83, unproven mapping
}live · 2026
signal house
engineering health, in one quiet dashboard.
a self-hosted dashboard that reads github, local git, and the agent session databases, and tells you whether work is actually moving — without opening five tabs.
export function sum(values: ReadonlyArray<number | null>): number | null {
let acc = 0;
let seen = false;
for (const v of values) {
if (v !== null && Number.isFinite(v)) {
acc += v;
seen = true;
}
}
return seen ? acc : null; // unknown stays unknown
}live · 2026
sugarplum
paste a link. it tracks the price. no spreadsheet required.
a small self-hosted wishlist tracker. paste a product link, the server fetches title, price and image, and the list is shared between accounts. a bun-native pwa that runs as one process.
// A PURE function over a capped price series:
// no DB, no fetch, no IO. All money math is integer cents.
// There is no "buy now" verdict anywhere in this module.
export type TrendAdvice =
| "below-30d-avg"
| "near-30d-low"
| "near-30d-high"
| "trending-down"
| "stable"
| "insufficient";
export function deriveTrend(series: TrendPoint[], now: Date): PriceTrend | null {
if (series.length === 0) return null;