Work

Projects from software, product work, and creative tools.

I like building useful things with personality, from production-ready apps to playful interactive experiences.

Stack

Tools I have used across these projects.

My public projects lean toward TypeScript and JavaScript, with a mix of browser extensions, hand-built interfaces, API experiments, Go utilities, and small scripts.

I tend to use the stack that fits the problem: a browser extension when the work needs to happen where someone already is, a small API when the logic needs to be reusable, a static site when speed and clarity matter, and a script when the best interface is just a command that saves time.

Some Technologies I've Worked With

TypeScript
Used for structured front-end tools and app experiments, including prompt, budget, MIDI, calculator, and package projects.
JavaScript
Used for browser behavior, small automation scripts, Express experiments, Google Apps Script utilities, and interactive music tools.
Browser extensions
Used for workflow tools that live inside the browser, including capturing, organizing, and reusing prompts without leaving the page.
HTML & CSS
Used for hand-built interfaces, responsive layouts, landing pages, portfolio work, and small business sites.
Go
Used for command-line and backend-leaning experiments, including image-to-ASCII conversion and Mattermost plugin work.
Node.js, Express & APIs
Used for server basics, deployable endpoints, API examples, and chord-function tools that expose music data through code.
Shell scripting
Used for local utilities, setup scripts, and workflow helpers like transcription-related command-line scripts.
React, Vue & Vite
Used to turn product ideas into testable front-end prototypes quickly, especially when forms, state, and repeated UI patterns need to stay organized.
Postgres
Used when an app needs reliable records, relationships, and queries instead of temporary browser-only state.
C, C++, Assembly & Scheme
Used to build a stronger mental model for memory, performance, recursion, and how higher-level tools behave underneath the abstraction.
Python 3
Used for quick automation and file-processing scripts that make cleanup, setup, and repeatable local workflows less manual.
WordPress
Built and adjusted content-managed sites so non-developers can update pages, menus, and copy without needing a developer for every small change.

Selected Code Projects

Sage and Cedar salon website preview

Sage & Cedar

Problem: The brand experience in person was strong, but the website did not reflect that same clarity and polish.

Approach: I reworked structure, visual hierarchy, and responsive behavior to better match the brand voice.

Outcome: The result is a clearer digital presence that improves first impressions and helps visitors take action.

Visit Site
Flowers by Leanne website preview

Flowers by Leanne

Problem: The business needed a simple web presence that felt trustworthy and easy to navigate.

Approach: I built a lightweight informational site with clean layout, clear messaging, and mobile-friendly behavior.

Outcome: Customers can quickly find key information, and the business has a maintainable online home that supports local visibility.

Visit Site
Fridge poetry interactive board preview

Fridge Poetry Lab

Problem: I wanted a writing space that felt spontaneous and playful, like improvising with words in real time.

Approach: I built an interactive magnet board with smooth drag behavior, persistent layout saving, and theme support.

Outcome: It became a reusable creative tool people can use for quick idea generation, writing practice, and collaborative play.

Open Fridge Poetry
Chord Function API app preview

Chord Function API

Problem: Harmonic analysis is powerful, but manually applying function logic is slow and inconsistent in apps.

Approach: I designed an API around key center, root, and chord quality to make functional harmony queryable.

Outcome: It enables reliable chord-function output that can plug directly into music tools and creative workflows.

View Repository

Want to collaborate on something like this?