Skip to content
View scadoshi's full-sized avatar
🙉
eating bananas
🙉
eating bananas

Block or report scadoshi

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
scadoshi/README.md

Hey!

🦀 I'm Scotty. A Rust engineer in Washington state.

⚙️ I build systems from the bottom up: chickadee, an LSM-tree storage engine, and steller, a Redis-compatible server that talks to real redis-cli. Both hand-written, no protocol crates. steller is in production behind heron, my own server, which serves every number on scottyfermo.com: commits and a year of contributions from GitHub, lines and tests it counts itself from each repo after a push.

📱 I also built Zwipe (source), a swipe-first MTG deck builder, live on the iOS and Android app stores with ~1,000 users. Over 143,000 lines of Rust across 6 workspace crates, 770+ tests, self-hosted, built and operated by me.

🔨 I build things from scratch to understand how they actually work.

scottyfermo.com · LinkedIn

⚡ Stats

I joined GitHub 2 years ago and have since pushed 5,945 commits across 54 personal projects, 34 of them public.

Rust HTML CSS C#

Counted from the GitHub API on 2 Oct 2026. Forks excluded.

🌀 Projects

Databases & Systems Apps & Tools
• chickadee - A key-value storage engine, evolved from Bitcask to an LSM-tree: WAL, memtables, SSTable compaction, bloom filters, CRC32 corruption recovery
• steller - A Redis-compatible server in Rust: hand-written RESP parser, snapshot + append-only durability, works with real redis-cli. In production since Sep 2026, where its first real workload found a framing bug its 240 tests had not
• heron - My personal server. Reads GitHub for scottyfermo.com, and for the numbers GitHub does not have it downloads a tarball of each repo after a push, counts lines, tests and lints, and throws it away. Layered cache, steller first and memory behind it. Hexagonal, on its own box behind a Cloudflare Tunnel
• gotcha - Cross-platform security camera: raw evdev with nix::poll on Linux, Accessibility API callbacks on macOS, unlocks on a secret key sequence. The decisions are a tested domain module; the platforms only own the devices
• Zwipe - Full-stack MTG deck builder (Axum + Dioxus + PostgreSQL), live on both app stores (source)
• halo_action_importer - Production CLI that bulk-imports actions into Halo from CSV/Excel: runs unattended for hours against unreliable APIs, per-failure retry logic. Weeks of manual work, automated
• halo_custom_field_builder - Production CLI that bulk-creates custom fields across Halo products: OAuth2 with cached tokens, type-safe domain modeling. Hours to minutes, used across Fortune 500 client implementations
• marvin - Interactive CLI chatbot built on Rig with Claude: streaming responses, web + math tools, chat persistence, dynamic model discovery. Found deprecated model constants in Rig, filed the issue and a 17-file fix
• upsee - Real-time pullup counter: webcam frames through MoveNet on tract, on-device, with a hysteresis rep counter that is a pure function with tests
• cairn - Lifetime rep counter for iOS in Rust and Dioxus: local SQLite, no server, no account. On my phone daily with 98,300 reps across 225 days
• rustmas - Advent of Code client: input fetcher and solutions
• sharpmas - rustmas ported to C#, same tooling rebuilt on .NET
• portfolio - scottyfermo.com, written in Rust. Every number on it is heron's, fetched while you read with the build's copy as the fallback, drawn as charts the site renders itself, the year of contributions on the front page; a test fails if a number is typed by hand
• rusty-aoc - Archived Advent of Code solutions in Rust

🛠️ What am I working on?

Category Description
Building Zwipe (source), under daily development and shipping weekly releases.
Shipping cairn, a lifetime counter I use every day. On my own phone now, App Store review next.
Iterating rustmas and sharpmas in lockstep: the same Advent of Code tooling maintained in Rust and C#, every refactor ported both ways.
Extending steller: pub/sub and SET options landed, now serving heron in production; MULTI/EXEC transactions next on the roadmap.
Learning C#, by writing all sorts of projects in it and comparing notes on Rust vs C# in online forums.
Operating Two Hetzner boxes: the one Zwipe runs on (CI/CD, structured tracing, nightly backups, production metrics) and the one heron and steller share, deployed by a self-hosted runner on every push, where heron sweeps thirteen repos for a fresh count whenever one is pushed to.

Popular repositories Loading

  1. zwipe zwipe Public

    a swipeable magic the gathering deck building application in Rust

    Rust 12

  2. rustmas rustmas Public template

    Advent of Code Client in Rust: input fetcher and solutions

    Rust 6

  3. sharpmas sharpmas Public template

    Advent of Code tooling in C#. The same tool as rustmas, rebuilt on .NET.

    C# 6

  4. halo_action_importer halo_action_importer Public

    Production CLI for bulk-importing actions into Halo Software from CSV and Excel. Runs unattended for hours, recovers from transient failures.

    Rust 5

  5. marvin marvin Public

    Interactive CLI chatbot built on Rig with Claude: streaming, tools, persistence. Includes an upstream fix to Rig.

    Rust 5

  6. gotcha gotcha Public

    Cross-platform security camera in Rust: raw evdev on Linux, Accessibility API on macOS, secret-key photo release.

    Rust 5