2 Years of Experience.
A
Lifetime
of Learning
TewDewAI
This one's in progress have mercy...
In a world that can't get enough AI... I finally felt obligated to work with it a little and produce something with some (at least theoretical) real world value. Which is how TewDewAI came about.
It's still in alpha but you can see the concept in the video below and if you want to give it a try, click through and play with it yourself!
EDNA โ A friendly Nano service for better documentation
EDNA was implemented to increase efficiency through automated documentation
๐ฉ The Problem
Making updates to client phone settings via a third-party VoIP vendor dashboard was inefficient and slow. Each request could take 15โ30 minutes due to poor UI performance, making the process frustrating and time-consuming for technicians.
๐ ๏ธ Technologies Used
- Node.js
- REST APIs (RMM/PSA + Vendor API)
- Docker ๐ณ
- Synology Hardware
- Cron Scheduling
๐ Initial Solution
EDNA is a service I wrote in nodeJS and spun up in a docker container. I run it on one of our work Synology servers. Initially it pulled documentation data from our RMM/PSA tool, compared it with live voip user data pulled from our vendors API, and updated phone group assignments accordingly in the far more responsive documentation of our RMM Tool. This gave our team a quick and consistent source of truth, replacing slow and frustrating dashboard-hunting with instant clarity.
โ๏ธ Iterative Improvements
I optimized the service by introducing a smart cache: EDNA now stores the last-known-good vendor state locally. It re-syncs only if something has changed, reducing API calls to our RMM tool by over 99% and also decreasing resource consumption while increasing overall responsiveness.
๐ Results
EDNA has become a trusted internal tool, (although not by the name EDNA ๐คฃ) saving technicians anywhere from 5-20 minutes each time a user is created or modified. It improved response time, eliminated guesswork and mistakes, and most importantly made everyone happier :)

A simple clock tool
I used Python + my Stream Deck to help me not forget to clock in!
๐ฉ The Problem
Clocking in and out of work using our PSA's timekeeping tool was a manual task that was easy to forget. Forgetting to track time properly created reporting issues and reduced the accuracy of billable hours.
๐ ๏ธ Technologies Used
- Python
- Requests (for HTTP authentication)
- Stream Deck
- PSA API
๐ Initial Solution
I wrote a Python script that logged into our PSA timekeeping tool and triggered clock-in and clock-out events using simple HTTP requests. I then connected this to a custom Stream Deck button, turning time tracking into a one-tap action.
โ๏ธ Iterative Improvements
After initial success, I refined the script to include error handling and simple notifications to confirm that clock-in/out was successful. I also generalized it so I could share it with others, I setup a system to get API tokens and subdomains from others and detect if they weren't present on the system running the script and to ask for them if they weren't.
๐ Results
This simple tool helped me consistently clock in and out on time, reduced administrative overhead, and gave me a taste of how automation can make daily work smoother. It also kickstarted my interest in scripting and backend tools.
โ ๏ธ NOTE
It is worth noting that I knew nothing about security at the time so I was storing the API tokens in the registry. Now I know much better, but we also switched time tracking tools so... I haven't rebuilt the tool yet.
The Support Dashboard
A purpose built internal ticketing and communication tool built for clarity and speed
๐ฉ The Problem
Many of our clients found traditional email-based ticketing to be disorganized and difficult to manage or easy to miss. Important support requests were often buried in threads, and users lacked structure when submitting new tickets. We needed a better way for clients to create and track tickets.
๐ ๏ธ Technologies Used
- Electron
- Electron Forge
- NodeJS
- Custom Updater System
- Home Rolled TOTP Authentication
๐ Solution
I built the Support Dashboard as a lightweight desktop app with a clean modern user friendly interface and pre-built ticket templates to streamline submission and tracking. I implemented a TOTP-based sign-in system to keep access secure and developed a custom version control and update mechanism so users always had the latest features.
๐ Results
The dashboard helped our clients isolate support conversations from their inbox and made the support process feel more intuitive personal and reliable. It also added that "We're thinking about you" touch. It strengthened our MSPโs value proposition by improving response clarity, speeding up ticket resolution, and reducing friction for end users.
Employee Upskilling Notification Parser
A custom parsing service for development tracking where Power Automate fell short
๐ฉ The Problem
Our client used a line-of-business (LOB) app we built in house to track employee development milestones, but the data from MSFT Lists was too complex and inconsistent to be parsed by Power Automate. This made it difficult to trigger notifications or workflows when employees completed training or upskilling.
๐ ๏ธ Technologies Used
- NodeJS
- Docker
- Synology Hardware
- ExpressJS
๐ Solution
I built a lightweight NodeJs service that ingested the raw output from the LOB app, parsed it into a consistent structure, and checked for relevant triggers like training completion. Once a match was found, the service sent data back to the system through a custom webhook for notification purposes.
๐ Results
This service enabled the client to receive real-time notifications when employees finished key training milestones. It improved internal workflows, reduced manual checks, and provided better visibility into staff development.
New Website
When work needed a new website I was happy to put one together, with a little help from the more design oriented people at the company...
Currently we are migrating to AlpineJS in order to get away from some expensive JS functionality