Garage

Tools, systems, and finished builds I'm turning into reusable parts of my workflow. For now, this is also the deeper project gallery and public contribution record behind the homepage showcase.

Hapax project cover

Built

Hapax

2026

A crash-durable task store for AI agents that guarantees a side effect happens exactly once, even under kill -9 at any point. 500 randomized crashes produced 0 double charges; a naive implementation under the identical harness produced 121.

Why: Built because the MCP Tasks spec defines a store interface and ships only an in-memory implementation, leaving persistence to implementers — and an agent that charges a card twice is a real failure rather than a theoretical one. Peak 4,949 tasks/s, with the ceiling traced to Postgres's commit path by elimination and confirmed by a Go port that hit the same limit.

PythonGoPostgreSQLDistributed SystemsOpenTelemetry
GitHub
Aporia project cover

Built

Aporia

2026

Semantic search over primary-source philosophy that classifies whether a passage argues for or against a claim, not merely whether it is about the topic. On a held-out set written after the fix, 20 of 21 queries surfaced the philosopher who actually holds the position.

Why: Built after finding that embedding search matches vocabulary and imagery rather than the conclusion an argument reaches — so a query about free will returns everyone who mentions it, on either side, undifferentiated. Fixed with HyDE query expansion over a from-scratch HNSW index, and validated on queries written afterwards so the result could not be tuned into existence.

PythonFastAPINext.jsTypeScriptVector Search
GitHub
Peras project cover

Built

Peras

2026

A metrics ingest pipeline that survives the label explosion that OOM-kills a naive one — proven by exit code. Same 20M-sample workload in the same 256 MB container: the naive ingester dies at 8M samples; Peras completes all 20M at 1.67M samples/s with ~3 MB of heap.

Why: Built after measuring, while instrumenting Hapax, what one high-cardinality label costs: adding task_id took an export from 22 series to 30,019 and the payload up 1,488x. Peras is the ingest-side defense — it attributes a breach to the exploding label dimension at runtime and aggregates it away instead of crashing, and CI re-proves the die-vs-survive contrast on every push.

GogRPCOpenTelemetryKubernetesObservability
GitHub
Personal Ecosystem Portfolio project cover

Built

Personal Ecosystem Portfolio

2026

A Next.js portfolio platform that unifies project case studies, in-repo writing, a curated Shelf, and an optional Mind Map in one personal system.

Why: Built to turn a personal site into a living ecosystem for projects, writing, experiments, and tools instead of a static resume page.

Next.jsTypeScriptTailwindVercelPortfolio
GitHub
SubHub project cover

MVP

SubHub

2026

Full-stack subscription tracking MVP for monitoring recurring spend, upcoming renewals, and user-reviewed subscription data.

Why: Built to solve a real personal-finance workflow while practicing authenticated data ownership, database-backed CRUD, and product-quality dashboard design. Gmail discovery is experimental and still being hardened.

Next.jsTypeScriptPrismaPostgreSQLAuth
GitHub
Modular Context Abstraction project cover

Prototype

Modular Context Abstraction

2026

Streamlit prototype that extracts messy AI collaboration transcripts into reusable context modules and assembles transfer prompts under token and privacy constraints.

Why: Built to make long-running AI workflows easier to resume, audit, and hand off without copying entire conversations or leaking private context.

PythonStreamlitOpenAI APIContext Engineering
GitHub
VoicePress project cover

Built

VoicePress

2026

Flask blogging platform with voice-assisted drafting, Markdown publishing, authentication, comments, likes, bookmarks, and a public posts API.

Why: Built to explore how a standalone writing tool can integrate cleanly into a broader portfolio ecosystem instead of living as an isolated app.

FlaskSQLiteMarkdownAuthTesting
GitHub
LeetCode Log project cover

Active

LeetCode Log

2026

Public practice journal with solved interview problems, final Python solutions, pitfalls, complexity notes, and reusable mental models.

Why: Built to make algorithm practice inspectable: not just final answers, but how mistakes, patterns, and interview triggers get turned into repeatable judgment.

PythonAlgorithmsInterview PrepWriting
GitHub

Open Source

A growing record of merged contributions to external tools, SDKs, and developer-facing projects.

open-telemetry/opentelemetry-collector-contrib

Merged

Bound decompressed size of gzip request bodies

Fixed a decompression-bomb vector in the Cloudflare receiver: the compressed request body was bounded, but the gzip stream was decompressed with no limit of its own, so a small request could expand without bound in memory.

Impact: Hardens a production telemetry receiver against memory exhaustion; over-limit requests are now rejected with a 422, matching the existing uncompressed path.

GoSecurityOpenTelemetry Collector
View Pull Request

open-telemetry/opentelemetry-collector-contrib

Merged

Map the Rate metric intake type in the Datadog exporter

Rate metrics reached Datadog's intake as UNSPECIFIED because the type mapping only handled Count and Gauge; added the missing Rate case with table-driven tests covering all three.

Impact: Rate metrics exported through the Collector now carry the correct Datadog intake type instead of an unspecified one.

GoDatadogMetrics
View Pull Request

open-telemetry/opentelemetry-collector

Merged

Clarify processor ordering relative to batching

Updated the core Collector's processor documentation to recommend placing filtering, transformation, and enrichment processors before batching, with the rationale spelled out.

Impact: Keeps pipelines from batching telemetry that is later discarded and ensures data reaches its final form before export.

DocumentationOpenTelemetry CollectorPipelines
View Pull Request

microsoft/agent-governance-toolkit

Merged

Microsoft Agent Governance Toolkit

Added a standalone TypeScript SDK quickstart showing AgentMeshClient initialization, governance checks, and result handling.

Impact: Improves onboarding for developers trying the TypeScript SDK with a concise runnable example.

TypeScriptSDK ExamplesGitHub Actions
View Pull Request