A Lifetime of Learning

About Me

I'm a hands-on builder fueled by a lifetime of learning — from the Marine Corps to the cloud.

Contact

LocationOlalla, WA

What I Bring

  • Rapid learner who proactively acquires and masters new skills
  • Calm and effective in high-stress, fast-paced environments
  • USMC-forged discipline, leadership, and ownership mindset
  • Strong team player and leader; equally effective working solo
  • Driven by business-positive, outcome-focused solutions

USMC — Network Administrator  (Jun 2018 – Mar 2022 · Quantico, VA)

I served nearly four years in the United States Marine Corps as a Network Administrator in the National Capital Region — providing engineering, deployment, maintenance, and end-user support for U.S. government networks including the FBI Field Academy, USMC Officer Candidate School, and HQ Marine Corps. Day-to-day I configured and maintained routers, switches, firewalls, and network infrastructure for environments where reliability was non-negotiable.

I directly supervised two junior Marines — responsible for their complete management including work schedules, inspections, grooming standards, physical training, and professional development. As an NCO I was also co-responsible for the broader junior enlisted group alongside other NCOs, collectively pushing the standard on professionalism, fitness, and effectiveness across the unit.

After the Corps, I spent nearly three years as a support technician — resolving over 4,200 tickets at 18% faster than the company average — before transitioning fully into software development, where I've been building ever since.

What drives me? Building software that helps people — tools that save time, deliver better information, and make everyday work a little less painful.

I can't stop learning, tinkering, and hunting for the next problem worth solving — and I wouldn't have it any other way.

See some examples of my work below!

Light Labs

SMS-powered tools for dumb phone users who refuse to compromise.

The Problem

I’m a Light Phone user — a dumb phone with a deliberately closed “OS” (technically a React Native launcher, but we’ll let them have it). Their system uses “tools” instead of apps and is intentionally locked down. No TikTok, no distractions — but also no easy way to get news, weather, or quick answers without pulling out a second device.

The Solution

SMS is still a way in — even on a fully locked-down platform. Light Labs delivers weather, news, AI answers, and AI-powered search — all via text message. Stay light. Stay informed.

Technologies Used

  • AlpineJS
  • Cloudflare Workers AI
  • Cloudflare Pages
  • Twilio
  • Self Hosted Firecrawl
An architechture diagram

TewDewAI

An AI-powered take on the humble to-do list — currently in alpha.

My take on the to-do app trope — but actually useful. Drop in a high-level goal and let AI break it into clear, actionable steps. Less staring at a blank list, more getting things done.

Still in alpha, but fully functional — give it a spin and see how it handles your next big task.

Technologies Used

  • AlpineJS
  • Cloudflare Workers AI
  • Cloudflare Pages

Microtunnel

Centralized credential sync and permission management for your LAN.

The Problem

Businesses relying on SMB shares and LOB apps often manage user access manually — adding, updating, and revoking permissions one at a time. It's slow, inconsistent, and a security liability. Remote workers VPNing in only add more complexity to an already fragile setup.

The Solution

Microtunnel is a SaaS platform I built that syncs and manages user credentials across a LAN — giving users consistent, reliable authentication against SMB shares and LOB apps whether they're on-site or connected via VPN. No more manual permission wrangling or one-off access requests.

Technologies Used

  • TypeScript / React / Next.js
  • Cloudflare Workers, KV, D1, R2, Durable Objects
  • Tailwind CSS
  • Clerk (Authentication)
  • SMB / Windows credential integration

TeamSender

Affordable, no-app-required SMS blast messaging for teams and organizations.

The Problem

Many organizations struggle to communicate well with fleet employees, volunteers, or other large groups of people. Downloading apps is a huge headache and other SMS solutions involve a ton of overhead and are WAY too expensive.

The Solution

That's why we're building TeamSender.com, A better way to communicate using one way bulk sms sending. Built for schools, amateur sports leagues, churches, companies with fleet workers and more! It's simple easy and affordable

Technologies Used

  • AlpineJS
  • Cloudflare Workers
  • Cloudflare Pages
  • Cloudflare R2, D1 and KV
  • Twilio

EDNA — Automated VoIP Documentation via Nanoservice

I built EDNA to eliminate the manual overhead of VoIP documentation — saving technicians real time, every single day.

The Problem

Making updates to client phone settings and users via a third-party VoIP vendor dashboard was inefficient and slow. Each request could take 15–30 minutes due to slow UI performance, making the process frustrating and time-consuming for technicians.

The Original Solution

EDNA is a service I wrote in Node.js and spun up in a Docker container. It pulls documentation data from our RMM/PSA tool, compares it with live VoIP user data from our vendor's API, and updates the more responsive documentation interface accordingly. This replaced slow dashboard navigation with fast, accurate updates.

Optimized

I optimized EDNA with a smart cache. It stores the last-known-good vendor state and syncs only when changes are detected. This reduced API calls to our RMM provider by over 99%, improved performance, and reduced resource consumption cutting wall time by ~50%.

Technologies Used

  • Node.js
  • REST APIs (RMM/PSA + Vendor API)
  • Docker
  • Synology Hardware
  • Cron Scheduling

EDNA became a trusted internal tool — saving technicians 5–20 minutes per user update and cutting API overhead by over 99%. (The name never quite stuck, but the time savings did.)

EDNA Service Flow Diagram

ClockToggle

A Stream Deck + Python automation that killed the manual clock-in habit for good.

I built this out of frustration with forgetting to clock in. It’s a simple automation—but it made a real impact.

The Problem

Clocking in manually with our PSA was unreliable. Forgetting to track time hurt reporting accuracy and cost up to 15 seconds, it also cost time to fix mistakes on the backend and it was just one more thing to remember in the morning.

The Solution

I created a Python script to hit our PSA’s clock-in/out endpoints via HTTP, then bound it to a custom Stream Deck button. Time tracking became a one-tap action, which removed friction from my workflow. Made it easy to remember and saved me a few seconds each day, which adds up!

Technologies Used

  • Python
  • Requests (HTTP auth)
  • Stream Deck
  • PSA API

Improvements

Later I added error handling, credential prompting, and TOTP authentication — turning a personal hack into a shareable team tool. Small project, big confidence boost.

This project taught me something I've never forgotten: the right automation in the right place can make daily work dramatically smoother. It also lit the fuse on my love of scripting and backend tooling.

NOTE: I didn’t know much about security then, so the API token was stored in the registry (we’ve since switched time tracking tools and I haven’t rebuilt it—yet).

Support Dashboard

A purpose-built Electron ticketing app that replaced email chaos with structure and clarity.

Our clients deserved better than hunting through cluttered inboxes for support updates. I built this to give them a clean, reliable alternative — and to give our team a process they could actually depend on.

The Problem

Many clients found email-based ticketing unreliable—easy to overlook, hard to track, and messy to use. Important issues were buried, and users had no clear process for submitting tickets. We needed to give them structure and visibility.

The Solution

I built an Electron desktop app with a clean, modern UI, ticket templates for consistent intake, and seamless sign-in via a home-rolled TOTP auth system. I also built a custom auto-update mechanism and integrated it with our RMM provider for fast, friction-free ticketing.

Technologies Used

  • Electron + Electron Forge
  • Node.js
  • Custom Updater System
  • Home-Rolled TOTP Authentication

CLIO Cleaner

Document archive automation that drastically reduced OneDrive sync issues

This custom web app solved an enterprise-scale file sync disaster for a legal client — giving them a self-serve archive tool that fit their existing workflow without disrupting it.

The Problem

A legal firm using CLIO had over 1 million folders shared across dozens of users in OneDrive. The massive sync load caused constant failures, helpdesk tickets, and frustration—without a clear way to fix it from CLIO.

The Solution

I built a secure web app that let users archive or "thaw" CLIO folders with a single click. Archived folders were moved to a SharePoint "cold storage" site with restricted access, while thawed folders returned to OneDrive—complete with preserved permissions and audit logs via Microsoft Graph.

Technologies Used

  • Microsoft Graph API
  • Azure Multi-Tenant App Registration
  • SharePoint Online
  • Cloudflare Tunnels
  • Synology Docker Host

Sync issues dropped from weekly disruptions to fewer than two tickets in six months. The client gained a reliable, self-serve tool that fit into their existing workflow and extended CLIO’s value—no messy workarounds required.

Employee Upskilling Notification Parser

Custom data parsing where Power Automate couldn’t keep up

This lightweight background service turned messy, unreliable Microsoft Lists exports into clean, real-time training milestone notifications — unlocking automation that Power Automate simply couldn’t handle.

The Problem

Our in-house LOB app tracked employee training milestones using MS Lists, but the data structure was too complex and inconsistent for Power Automate to handle reliably. This made it impossible to trigger notifications or downstream workflows based on training events.

The Solution

I built a lightweight Node.js nanoservice that parsed and normalized the MS List export, identified key triggers like completed training, and sent that data to our LOB system via custom webhooks. This allowed us to bypass Power Automate completely while keeping the system responsive and accurate.

Technologies Used

  • Node.js
  • Docker
  • Synology NAS
  • Express.js
An architechture diagram

The service gave the client real-time, automated milestone alerts, and reduced manual oversight. (It also saved the tech trying to get it to work in Power Automate an unknowable amount of pain and tears trying to get it to work)

New Company Website

Built in-house with performance and maintainability in mind

When the company needed a new website, I stepped up to lead the build. I partnered with our design-focused tech to translate concepts into a fast, polished front-end that accurately reflected our brand and values.

We're actively migrating to Alpine.js to replace heavier JavaScript dependencies, improve page load speed, and make the site easier to maintain long-term.

Technical Skills

Frontend

React / TypeScript AlpineJS Tailwind CSS HTML / CSS Electron Next.js

Backend & Systems

Node.js Python Express.js REST APIs Docker Synology / Self-Hosting SQLite

Cloud & Infrastructure

Cloudflare Workers Cloudflare D1, R2, KV Cloudflare Durable Objects Cloudflare AI Firebase Azure / MS Graph Cloudflare Tunnels

AI & Methodology

AI / LLM Integration RAG Pipelines Tool Calling Solution Architecting Product Ownership RMM / PSA Tools