Matthew Sullivan

Hi, I'm

MatthewSullivan

|

I started out writing embedded and manufacturing software at Tibit Communications, where code ran on real hardware and mistakes were expensive. I still build and test that way.

At EHMA.ai, I own wAve, an AI-powered solar sales platform, from front end to back end. In 11 weeks I set up CI/CD and monitoring, raised test coverage by 828%, cut API response times from 18 seconds to 316ms, migrated 556K records with no downtime, and overhauled how we handle personal data.

Outside work, I'm building Sprout AAC, a free, open-source app that gives kids who can't rely on speech a way to communicate. Commercial AAC apps cost $150–$250. Sprout is free.

LinkedIn ↗

This site, right now

Every number here is measured as the page loads.

Answered by

Round trip

Your browser → API → back

Database query

Live SQL on Cloudflare D1

API work

Hono on a Cloudflare Worker

Deployed

API · site 2cd80af built just now

CI / CD

React 19 + Vite, pre-rendered and served by Cloudflare Pages · API: Hono on Cloudflare Workers with D1 and R2 · deployed by GitHub Actions on every push. Source on GitHub

Skills

Languages

C and C++ from embedded work, Python and TypeScript for most of what I've built since, Swift for iOS, and APEX and SOQL for Salesforce.

PythonJavaScriptTypeScriptC / C++JavaSwift / SwiftUIAPEXSQL / SOQL

Web & Frameworks

React on the front end, plus Angular from the Tibit network statistics tool. Hono, Django and ASP.NET on the back end. I use TypeScript wherever it fits.

ReactHonoAngularTailwind CSSFramer MotionDjango.NET / ASP.NETHTML / CSS

Databases

SQL and document databases alike: MongoDB and Azure Cosmos DB at EHMA.ai, Cloudflare D1 for my own projects, SOQL for Salesforce, and Pandas and NumPy for working with data in Python.

SQLSOQLMongoDBAzure Cosmos DBD1 (SQLite)PrismaPandasNumPy

Cloud & DevOps

My production work at EHMA.ai runs on Azure: Functions, Cosmos DB, Key Vault and API Management. My own projects run on Cloudflare Workers and Pages. I've set up CI/CD in GitHub Actions and Bitbucket Pipelines, including an automated TestFlight release.

Microsoft AzureAzure FunctionsAzure Cosmos DBAzure Key VaultAzure API ManagementCloudflare WorkersCloudflare PagesAWSCI/CD PipelinesGit / GitHub / GitLabSalesforceJIRAAnsiblepnpm

Hardware & Embedded

At Tibit I wrote embedded software on Linux, programmed FPGAs, and talked to hardware over UART and I2C, including a 16-port board used in production manufacturing. I've also worked with real-time operating systems.

FPGAUARTI2CRTOSEmbedded LinuxWireshark

Testing & QA

I worked as an SQA developer, writing test plans, leading their reviews, and running feature, integration, upgrade and regression testing. I also helped move the team from JIRA tracking to TestRail.

PyTestPlaywrightVitestJUnitPostmanTestRailGradleBitbucket

AI & Developer Tools

I use AI tools every day: GitHub Copilot for completions and refactors in the editor, and Claude for architecture decisions, debugging hard problems and building features faster.

GitHub CopilotClaude (Anthropic)ChatGPTPrompt EngineeringAI-Assisted Development

Collaboration & Process

I've worked at a startup and inside a larger company after an acquisition. I present technical work to mixed audiences, write documentation, and have run knowledge-transfer sessions for engineering and other teams.

Agile / ScrumTechnical WritingTest PlanningCode ReviewKnowledge TransferPresentations

Work Experience

EHMA.ai ↗

Tempe, AZ

January 2026 – Present

Full-Stack Developer

  • Took the backend from 393 tests to 3,646 (an 828% increase) while still shipping features.
  • Cut median API response time from 18 seconds to 316ms, and polygon queries from 33 seconds to 279ms (over 100× faster).
  • Moved 556K leads and 1,550 users from MongoDB Atlas to Azure Cosmos DB vCore with no downtime.
  • Set up CI/CD across four repos (backend, frontend, mobile and the HR portal), with checks that block a merge until they pass.
  • Built an automated TestFlight pipeline from scratch and used it to ship iOS releases 1.9.3 through 1.9.5.
  • Led an overhaul of how we store personal data: envelope encryption with Azure Key Vault (AES-256 / RSA-2048), and no sensitive data left in plaintext.
  • Built monitoring and alerting from the ground up, covering 3 Azure Function Apps and reporting into 6 Slack channels.
  • Built a persistent Claude Code memory system: 75 files and about 5,500 lines of what the team knows about the codebase.

Ciena ↗

Gilbert, AZ

January 2023 – September 2025

Embedded Software Engineer I

  • Kept the Tibit Salesforce implementation running and supported through the early stages of the acquisition.
  • Gave presentations on how the Tibit Salesforce org was designed, and why.
  • Helped merge the Tibit Salesforce instances into Ciena's.
  • Led knowledge-transfer sessions on the product branding stations.
  • Wrote the technical documentation for the branding station's tech stack.
  • Helped deploy manufacturing stations at Ciena offices remotely.

SQA Developer

  • Wrote test plans laying out how products and features would be tested.
  • Led reviews of test plans for new features.
  • Helped move test execution tracking from JIRA to TestRail.
  • Maintained TestRail reporting across multiple test environments.
  • Tracked, tested and closed bugs in JIRA.
  • Tested traffic packet distribution, loss prevention and load balancing at the feature level.
  • Ran install, upgrade and downgrade testing for all five Tibit/Ciena software products.

October 2021 – January 2023

Manufacturing Software Engineer

  • Led Salesforce development and administration, and built custom Lightning components for product tracking and customer fulfillment.
  • Wrote SOQL and Python scripts that pulled Salesforce data into manufacturing applications.
  • Built and deployed integrations between Salesforce and several Tibit software suites.
  • Built and maintained the branding station for Tibit MicroPlug OLTs and ONUs, talking to devices over UART and I2C through a 16-port board.
  • Programmed FPGAs for MicroPlug units.
  • Rewrote the station from C to Python and added 16-port support, increasing throughput 16×.
  • Helped ship thousands of OLTs and ONUs to customers around the world.

Projects

Personal Portfolio

Personal Portfolio

This site. A React and Vite front end on Cloudflare Pages, pre-rendered at build time so it arrives with content, plus a Hono API on Workers backed by D1 through Prisma. The admin panel manages projects, contact messages and the resume PDF. There are also a few Lord of the Rings easter eggs, if you go looking.

ReactTypeScriptHonoCloudflare WorkersCloudflare PagesD1PrismaTailwind v4Framer Motionpnpm
Sprout AAC

Sprout AAC

A free, open-source AAC app for kids who can't rely on speech. They tap symbols on color-coded Fitzgerald Key boards (3×3 up to 5×5) and the app speaks the words with on-device text-to-speech, so it works offline with no account or subscription. A guided setup wizard walks a family through their first board. Built in Flutter. v0.1.0 is out for macOS. iOS and Android builds aren't published yet, and Open Board Format import/export is in progress for v0.2.

FlutterDartOpen SourceMobileAccessibilitySQLiteRiverpod
Redacted Records

Redacted Records

Booking and portfolio site I designed and built for Kyle Kupczyk, a mixing and mastering engineer in Phoenix. The audio player keeps playing as you move between pages, the visuals react to the music, and the accent colors come from each track's album art. Every track has its own shareable page and link preview, plus a public play count. Booking requests send branded emails and an auto-reply. Astro on Cloudflare Workers with D1 and Resend.

AstroTypeScriptCloudflare WorkersD1ResendAudioClient Work
ClearPath

ClearPath

A browser extension that makes cluttered pages easier to read: read-aloud, a reading mode, symbol overlays for AAC users, and focus tools. Simplify rewrites dense text using your own OpenAI, Anthropic or Ollama key. The request goes straight from your browser to that provider; ClearPath has no server and collects nothing. Not in the Chrome or Firefox stores yet, so for now it installs from source.

TypeScriptReactBrowser ExtensionAccessibilityChrome Extension
Python: First Contact

Python: First Contact

An alien-themed Python quiz I built to help a friend study. 200 questions across 8 chapters, six ways to play (including timed, flashcards, exam simulation and survival), XP, levels and achievements, and a Python sandbox that runs in the browser through Pyodide and WebAssembly. No backend.

ReactViteJavaScriptWebAssemblyPyodide

Earlier work

Playground

Small live demos, running on the same stack as this site.

Link-preview card maker

Type something. A Cloudflare Worker lays it out with satori and draws it with resvg, both running as WebAssembly, the same way this site's own preview image is made.

Theme

Rendering…

Firmware in your browser

A 32×8 LED matrix run by C written the way I'd write it for a microcontroller (no libc, no malloc, a fixed-timestep tick), compiled to WebAssembly with clang. Click the LEDs to draw Game of Life cells.

… · view the C

Shipping activity

GitHub contributions in the last year

github.com/fr0ggy-p3ngu1n

Education

Arizona State University logo

Arizona State University — Polytechnic Campus

Bachelor of Science in Software Engineering

3.8 GPAHigh HonorsHonor Roll

Beyond the Code

When I'm not shipping features, here's what keeps me going.

Gamer

I've played games my whole life, from long story-driven RPGs to competitive multiplayer. It's how I switch off after a long sprint.

Hold to summon the Ring Runner…

Coffee Enthusiast

The first cup comes before any real code gets written. No exceptions.

Horror Movie Fan

Slow-burn psychological horror and classic slashers alike. I'll watch almost anything in the genre.

Tattoo Collector

Each one marks something that mattered to me when I got it, and the collection keeps growing.

Get in touch

Questions about my work, a project, or a role? Send me a note.

Matthew Sullivan

Matthew Sullivan

Full-Stack Developer at EHMA.ai

Arizona

LinkedIn is the quickest way to reach me. The form works too, and it goes straight to my inbox.

Connect on LinkedIn