I’ve spent my career building software, leading engineering teams, designing systems, and figuring out how technology can solve useful problems. I still like being close to the code.
These are some of the projects I’ve built or am actively developing. They range from full-stack applications and cloud infrastructure to AI-assisted engineering tools, browser security, mobile apps, WordPress plugins, data analysis, and small utilities I created because I needed them.
A recurring theme in my recent work is using AI as an engineering partner without giving up the disciplines that make software dependable: clear specifications, deliberate architecture, testing, security boundaries, version control, and maintainable code.
These are all things I did for *me*. If you want to see my professional code work check out my linkedin page.
Featured Projects
WebNotary
Public-interest infrastructure for independently verifying the TLS certificates presented by websites.
Traditional browser security verifies that a certificate chains to a trusted certificate authority and matches the hostname. WebNotary adds another question: is the certificate my browser sees independently known to be associated with this site?
The system combines a Chrome extension, a public lookup API, independent TLS observers, Certificate Transparency data, queues, trust policy, and persistent evidence. Importantly, a certificate reported by a client does not become trusted simply because the client reported it. Independent observation establishes trust.
Technology: TypeScript, Chrome MV3 extensions, AWS Lambda, DynamoDB, SQS, S3, Certificate Transparency, Terraform, SpecKit.
FishDev
A vendor-neutral, specification-first workflow for AI-assisted software development.
AI coding tools can generate software remarkably quickly, but speed creates a new problem: maintaining engineering discipline, architectural context, project history, and consistent behavior across AI tools and development sessions.
FishDev creates a standardized project structure for AI-assisted engineering. Specifications, engineering principles, handoff notes, progress history, and project context live with the source code rather than inside a particular AI vendor’s ecosystem.
The goal is simple: an engineer should be able to enter a repository with almost any capable AI assistant and quickly establish the same development rules and project context.
Focus: agentic AI, SpecKit, specification-first development, engineering constitutions, persistent project context, vendor neutrality.
AWS Cloud Workspace
Terraform-managed cloud development workstations with disposable compute and persistent developer state.
This project provisions individual Ubuntu development machines on AWS while deliberately separating the lifecycle of the computer from the lifecycle of the engineer’s workspace.
EC2 instances are disposable. Encrypted EBS workspace volumes persist. Developers can connect through normal SSH and VS Code Remote SSH, forward application ports back to their local browsers, automatically stop idle machines to control costs, and optionally use Tailscale for private connectivity.
The architecture is intentionally pragmatic: reproducible infrastructure where reproducibility helps, persistent state where losing it would hurt, and cost controls designed for development workloads that are naturally bursty.
Technology: AWS, Terraform, EC2, EBS, IAM, CloudWatch, SSH, Tailscale, cloud-init.
View Cloud Workspace on GitHub →
Applications
Visual Voter
A mobile-first voting system for conventions and live events.
Visual Voter allows attendees to vote from their phones by scanning a QR code. There is no application to install and attendees do not need to create conventional user accounts.
An administrator manages operators, operators create conventions and ballots, and attendees use anonymous voting credentials distributed at check-in. The architecture is designed around one credential per attendee, one submission per ballot, and keeping individual vote selections out of operator-facing dashboards.
The initial voting model is First Past the Post, with Approval Voting, Ranked Choice, and Instant Runoff planned as additional voting methods.
Technology: Next.js 14, TypeScript, PWA, Spring Boot 3.3, Java 17, PostgreSQL, H2, Flyway.
Organization Chart
A Spring Boot application for building organization charts ranging from informal public directories to authenticated, organization-controlled charts.
The application deliberately supports two models. In the simplest mode, someone creates an organization and coworkers can add themselves without creating accounts. Organizations that need stronger controls can claim their domain, verify control through DNS, manage membership approvals, designate administrators, and make their organization chart private.
The application includes private accounts, email verification through Amazon SES, DNS TXT ownership verification, approval workflows, organization administration, privacy controls, and automated browser testing.
Technology: Java 17, Spring Boot, MariaDB, Amazon SES, DNS verification, Playwright.
GetAJob
An AI-assisted system for generating highly targeted resumes and application materials from a canonical career knowledge base.
Most AI resume workflows repeatedly feed an old resume into a model and ask it to rewrite the document. GetAJob works differently.
Professional history, accomplishments, skills, education, publications, and other source material are maintained as modular authoritative documents. A job description is then treated as a specification, and AI assembles the most relevant material into a resume and cover letter specifically for that opportunity.
The larger idea extends beyond resumes: when AI repeatedly creates artifacts about a person, product, or organization, give the AI a maintained source of truth instead of asking it to reconstruct reality every time.
Focus: generative AI, structured source material, artifact generation, human/AI collaboration, knowledge-base workflows.
Stopwatch Overlay
A floating Android stopwatch that remains available while other applications are in use.
This started with a simple requirement: I wanted a stopwatch I could keep visible while doing something else on my phone. The result is a React Native application with native Android integration, a foreground service, draggable system-wide overlay controls, and a standalone APK release.
Technology: React Native, TypeScript, Kotlin, Android foreground services, Gradle.
View Stopwatch Overlay on GitHub →
Engineering Tools & Automation
repo-ai
Reusable GitHub App infrastructure for secure AI-assisted repository automation.
repo-ai standardizes how automated development agents authenticate to GitHub and make changes across repositories.
Rather than relying on personal access tokens or human credentials, repositories use a GitHub App, short-lived installation tokens, bot-authored commits, and a shared set of authentication and workflow rules distributed as a Git submodule.
A core principle is that authentication should fail closed: if the expected secure authentication method fails, automation stops rather than silently falling back to less-controlled credentials.
Technology: GitHub Apps, GitHub API, Git, Python, shell scripting, GitHub Actions, short-lived credentials.
Plugin Packager
A reusable GitHub Actions workflow for packaging and releasing WordPress plugins.
The workflow creates WordPress-compatible ZIP archives, verifies that plugin versions match Git tags, supports both standalone repositories and monorepos, and automatically publishes release artifacts through GitHub Releases.
View Plugin Packager on GitHub →
WordPress Tools
I’ve built a collection of lightweight WordPress plugins aimed at solving specific problems without turning WordPress into a framework for something that should have remained simple.
JSONMaker
Creates editable hierarchical data trees inside WordPress and exposes any branch through a live JSON endpoint. Administrators can create and edit nodes directly on a page while applications consume the same information programmatically.
LinkMaker
A Gutenberg-friendly shortcut for linking content to Wikipedia. An editor marks text with a simple placeholder link and LinkMaker automatically generates the Wikipedia destination from the visible text.
WebCut
A small branded URL-shortening system implemented directly inside WordPress, including configurable URL prefixes and administrative link management.
WebPing
A lightweight web-accessible notification endpoint. A valid authorization code and phone number trigger an email notification, making it useful for simple paging, bookmarks, shortcuts, and automated calls.
Team Passwords
A lightweight shared password vault for WordPress with encrypted password storage, role-based access, frontend access controls, and separate viewing and administrative capabilities.
Zeffy Campaign Reporter
A WordPress integration for the Zeffy fundraising API. It retrieves contribution information for a campaign, provides role-protected reports, supports configurable fields and date filtering, maps API rate identifiers into human-readable descriptions, caches API responses, and distributes updates through GitHub releases.
View Zeffy Campaign Reporter →
Data & Engineering Case Studies
NYC Ranked-Choice Election Data Analysis
Processing and analyzing more than one million cast-vote records from New York City’s 2025 Democratic mayoral primary.
This project began as a conventional Java/Apache POI data import and quickly ran into the practical limits of processing very large Excel datasets in memory.
I reworked the importer around POI’s streaming SAX interface, projected each workbook onto the fields needed for the analysis, consolidated the records, and loaded 1,114,433 vote records into MariaDB.
From there I created relational views for candidate-name resolution and used SQL and simulation to explore ranked-choice voting behavior and hypothetical candidate-removal scenarios.
Technology: Java, Apache POI SAX streaming, Maven, MariaDB, SQL, large-data ingestion.
Small Tools I Built Because I Needed Them
Not everything needs to become a startup or a major software project. Sometimes the most satisfying software is a few hundred lines that makes an annoying problem disappear.
ICS to Google Calendar
Takes an iCalendar file and generates a direct Google Calendar event link, reducing a multi-step import process to a simple browser workflow.
Recurring Reminder Generator
Creates an iCalendar file containing events at a user-defined interval — originally built for medication reminders, but useful for any repeated time-sensitive task.
QR Code Generator
A simple browser tool for turning a URL into a downloadable QR code.
Map Radius / Area Visualizer
An interactive Google Maps utility for visualizing circular or square geographic areas and dynamically adjusting them as the map viewport changes.
Tic-Tac-Toe Cipher
A browser implementation of a pencil-and-paper substitution cipher built from six tic-tac-toe grids. It supports keyword-derived alphabets and visually converts text into positional symbols that can also be recreated without a computer.
Browse the web utilities on GitHub →
How I Like to Build
I’ve worked at several layers of the technology stack over the course of my career: software engineering, systems architecture, cloud infrastructure, technical leadership, product development, and executive technology management.
AI has changed the mechanics of software development, but it hasn’t eliminated the need for engineering judgment. If anything, generating code faster makes architecture, testing, security, specifications, and maintainability more important.
My current development style combines hands-on engineering with AI-assisted workflows. I use AI aggressively for implementation, investigation, testing, and iteration while keeping architecture, constraints, acceptance criteria, and engineering principles explicit and reviewable.
The result is that I can move much faster than I could with traditional development workflows while still building software I expect someone — including me six months from now — to understand and maintain.
More
You can find more of my open-source work on GitHub and more of my thinking about software architecture, AI, cloud computing, engineering management, and technology on the rest of this site.
Leave a Reply