What I’m working on
What I build
Projects across four disciplines. Pick a category to explore.
Recent Activity
Overhauled the shows page with paginated upcoming shows, a past shows accordion grouped by year, and expanded the admin panel to surface all legacy photo types for full content management visibility.
Overhauled the shows page with paginated upcoming shows, a past shows accordion grouped by year, and expanded the admin panel to surface all legacy photo types for full content management visibility.
Completed evaluation sweep: integrated Sentry error monitoring with automatic capture and session replay, extended content moderation to all user-generated content types, and mapped auth errors to user-friendly messages — hardening the platform for beta launch.
Landing page generator with AI-assisted campaign builder, accordion-based editor with section visibility toggles, Cloudinary image uploads, and 11-block template system. Collapsible admin sidebar with fixed positioning. Three database migrations powering campaign scheduling, content storage, and quiz definitions.
SEO, accessibility, and media UX hardening. Added JSON-LD structured data (MusicGroup + MusicEvent) for Google rich results. Fixed WCAG AA contrast failures across the color palette and added keyboard focus indicators. Implemented position-based media ordering with cross-boundary reordering, and sequential audio playback that auto-advances tracks across artist and press pages. Eliminated mobile LCP bottleneck with font display swap.
Where This Is Heading
What's Cooking
Honest answer: I'm figuring out how to build things with AI — and getting better at it every week. Client projects, personal experiments, lighting rigs, half-finished apps. Some of it ships, some of it teaches me what not to do next time. Either way, the people I work with get the benefit of whatever I learned yesterday.
The Endgame
There isn't a master plan. There's a pattern — and it runs in both directions. Sometimes something catches my attention, I go deep on it, and eventually someone needs exactly that thing solved. Other times, someone brings me a problem I've never touched, and the deep dive happens because they need it figured out now. Either way, the outcome's the same: I come out the other side knowing how to do something I couldn't do last week.
The automation work grew out of curiosity. The sound and lighting work grew out of running production for bands and years of being on stage as a performer. The client work grew out of all of it. I plan to keep following both of those threads and stay useful along the way. Waiting until I've got it all figured out isn't an option — because that's never going to happen.



