A Lifetime of Learning

About Me

Im a learning obsessed widely experienced software developer

I've spent almost four years in the USMC as a Network Admin, almost 3 as a support technician, and now several years as a software developer.
My favorite thing to do? build software that helps people, saves them time gives them more information, or just betters their lives.
I can't stop learning, tinkering, and looking for opportunities to build stuff and I wouldn't ever want to.

Things I like:

  • Building software
  • Home Automation
  • Not Design
  • Reading docs
  • Saving people time and frustration

Tech I love:

  • NodeJS
  • AlpineJS
  • Electron
  • Home Assistant
  • Light Phone

Look some examples of my work below!

Light Labs

A suite of services for those of us with dumb phones.

🚩 The Problem

I am a dumb phone user, and I use a Lightphone specifically. Light, as a dumbphone company, is unique in that they have a custom "OS". It's technically just a React Native app running in the Android launcher, but it essentially functions as an OS—and they call it that, so we’ll let them have it.

They use a system called "tools" instead of apps, and it’s entirely closed (understandably so—otherwise you'd have TikTok for Lightphone). However, some of us (me) still want to get our daily news fix, the weather, and maybe the ability to look things up occasionally.

✅ The Solution

It may be a closed system, but SMS still provides a way in. I'm working on weather, news, search, AI chat and more. All through SMS. With Light Labs you can stay light, but not miss out on the best parts of technology. (Not all services available fully or at all)

🛠️ Technologies Used

  • AlpineJS
  • Cloudflare Workers AI
  • Cloudflare Pages
  • Twilio
An architechture diagram

TewDewAI

This is an "In Progress Demo"

My take on the classic "To Do App" trope, but AI powered!
Break high level tasks into informative, bite sized pieces, taking the tedium out of todos.

It's still in alpha, but if you want to give it a try, click through and check it out!

🛠️ Technologies Used

  • AlpineJS
  • Cloudflare Workers AI
  • Cloudflare Pages

TeamSender

A better way to communicate using SMS blast messaging.

🚩 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 – A friendly Nano service for better documentation

I created EDNA to increase efficiency through automated documentation

🚩 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 has become a trusted internal tool — saving technicians 5–20 minutes per user update (although I couldn't get the name to stick).

EDNA Service Flow Diagram

ClockToggle

A small Stream Deck + Python hack to save time and increase accuracy

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, token validation, and even prompts for credentials if they were missing—so I could share it with coworkers. It was small, but helped me get confident writing scripts with real-world use.

This little tool taught me how much smoother daily work could be with the right automation. It also kickstarted my love of scripting and backend tools.

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

An internal ticketing app purpose-built for clarity and speed

This desktop app was designed to replace traditional email support workflows with something far more structured, visible, and user-friendly—because our clients deserved better than digging through inbox threads.

🚩 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 structure, and seamless sign-in via a TOTP system. I also built a custom update management system, and TOTP auth system, integrationg it with our RMM provider to allow ticketing and management ease.

🛠️ 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 tool solved an enterprise-level file sync nightmare for a legal client, giving them control over document storage without changing how they worked.

🚩 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 background service transformed chaotic Microsoft Lists output into actionable, real-time notifications— keeping our client’s staff development process smooth and automated.

🚩 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 our company needed a new website, I jumped in to lead the build. I collaborated with our design oriented tech to turn designs into a fast, clean front-end that matched our company's identity.

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 and Experience