AI & agent systems
Connecting models to tools and application data, with structured inputs, clear boundaries, and a way to inspect what happened.
- Go
- MCP
- Ollama
- Tool calling
- Structured outputs
- Local models
05TECHNICAL
I work across applications, backend systems, and AI integrations. These are the tools I use and the engineering details I pay attention to.
Engineering toolkit
The languages, frameworks, and habits behind my work.
Connecting models to tools and application data, with structured inputs, clear boundaries, and a way to inspect what happened.
APIs, background work, and the data underneath. I care about validation, migrations, and being able to recover when something fails.
Interfaces that make complex work easier to follow, from data-heavy React applications to fast, accessible websites.
Small, focused tools that feel at home on Apple platforms, with careful state, local storage, and sync where it belongs.
Tests, repeatable environments, and useful diagnostics. I want changes to be verifiable and failures to be understandable.
Selected work
A few examples of these choices in practice.
GO / STORAGE / TERMINAL UI
Encrypted, deduplicated backups to S3, with a terminal interface for schedules, snapshots, and restores.
A backup is only useful if I can restore it. That shaped the interface around browsing snapshots and checking schedules, alongside the work of chunking, encrypting, and uploading files.
Go · Bubble Tea · S3 · MCP
Read the buildSWIFT / MACOS
A native menu bar app for logging focus sessions, with local data, keyboard shortcuts, and a quiet interface.
Logging came first; the timer came later. Keeping it in a menu bar panel meant handling focus, popovers, and persistence carefully so a quick action could stay quick.
Swift · SwiftUI · Local storage
Explore the appWEB / INTERACTION
Astro pages, a scrolling video world, and small TypeScript interactions. Responsive layouts and reduced-motion fallbacks are part of the build.
The still images came first, then the motion. Short gaps between video keyframes make scroll-driven seeking smoother, while static fallbacks keep the same page useful when motion is off.
Astro · TypeScript · GSAP · Vercel
View the sourceUnderstand the behavior.
Then refine the experience.
That is the thread through my work: make something useful, keep its behavior legible, and pay attention to the details.