An interactive peg board. Use the arrow keys to change the sheet and Space to fill it. All of the content is also listed here.
Picture: The letters W, E, S over a line of dots, all in shades of blue
Hi, I'm Wes.
Full stack software engineer
I build web apps from the database up to the last pixel. This board holds my work. Each peg under the screen is one sheet: one job or project. Its color tells you which kind.
- Full Time
- Apps
- Projects
- Open source
Fill a sheet with pegs to read about it.
Picture: The Patch logo: a pinwheel of four rounded blades in violet, green and pink
Patch Retention
Customer retention platform for subscription businesses
Senior Full Stack Software Engineer
Building tools to help subscription businesses reduce churn and retain customers through data-driven insights and automated retention strategies.
Visit patchretention.comPicture: The Conduit Health logo: a half sunburst of short green rays
Conduit Health, Inc.
Medical equipment and supplies made easy
Software Engineer
Developed customer-facing UIs, introduced E2E testing, expanded catalog regions, identified & optimized software inefficiences.
- End-to-end Testing Infrastructure. Configured Playwright E2E infrastructure & implemented test coverage of all critical workflows. This reduced critical bugs in production & gave founders their time back from manual testing.
- Multi-state Product Catalog. Developed the ability for users to browse products from multiple states, increasing our product offering from just 1 state (NY) to 4 states (NY, OH, KY, MD). Scalable to all states.
- State Machine Integration Testing. Implemented a depth-first search (DFS) traversal of a massive Python state machine graph representing order status transitions, ensuring all possible order status transitions work.
- Improved Observability. Integrated Sentry with Remix in order to resolve frontend errors. Propagated key information such as payloads and action replayability in order for devs to reproduce isuses.
- Code Cleanliness. Collaborated with teammates frequently to establish and enforce coding best practices, resulting in less time spent on navigating messy code and more time spent on shipping features.
- Remix
- React
- TypeScript
- MongoDB
- Playwright
- Tailwind CSS
- GraphQL
Visit conduithealth.comPicture: The Lifestance logo: overlapping blue and green ribbons
Lifestance Health, Inc.
EMR solution for mental health providers
Full Stack Software Engineer
Developed HIPAA-compliant EMR software for clinicians and patients. Ensured uptime, reliability, and critical bug fixes. (Contract through Crystal Bay Software)
- TypeScript Migration. Exposed and resolved both potential and on-going dozens of bugs by refactoring most of the JavaScript into TypeScript.
- Low-cost SQL Replica Implementation. Efficiently resolved intermittent critical database performance issues by separating DB sources based on our use-cases using replicas.
- Unit & Integration Testing. Wrote hundreds of tests leveraging SQL transactions to ensure system reliability, extending the anticipated product EOL by 3+ years.
- Custom Reports System. Built a custom reporting system with dozens of on-demand and scheduled EMR data reports using various Google Cloud infrastructure.
- On-call DevOps. Highly responsive to critical Sentry & Google Cloud Logging errors to mitigate degraded user experience & system performance.
- End User Support. Spoke directly with our key end users in order to understand application pain-points as well as to hear about requested features.
- React
- TypeScript
- MySQL
- App Engine
- Material UI
- Jest
- Node.js
Visit lifestance.comPicture: The Conviva logo: a grey hexagon of rails around three green arrows
Conviva
Real-time insights into every digital experience
Full Stack Software Engineer
Continued work on social media analytics platform following Conviva's acquisition of Delmondo, maintaining and enhancing core features.
- Knowledge Transfer. Continued feature development, code optimization, and led knowledge transfer to the overseas acquisition engineering team.
- React
- PostgreSQL
- AWS
- Node.js
Visit conviva.comPicture: The Delmondo logo: the letters DM in heavy capitals
Delmondo
Video Analytics and Audience Insights
Full Stack Software Engineer
Acquired by Conviva
Integrated many popular social media APIs to capture key data used to source dashboards and data visualizations for social media campaigns.
- Data Visualizations. Implemented dozens of charts and views for displaying social media KPIs.
- API Integrations. Integrated and utilized Facebook Graph, Twitter, YouTube, Instagram, and Snapchat APIs.
- On-call Livestream Support. Part of an on-call rotation to monitor and support crucial livestream events for major brands.
- React
- Highcharts.js
- PostgreSQL
- Social APIs
- Node.js
Visit crunchbase.comPicture: The GoDaddy logo: a teal heart-shaped G
GoDaddy
The world's largest and most trusted domain registrar
Business Systems Engineer
Continued development of Matrix platform following GoDaddy's acquisition of Media Temple, maintaining critical support infrastructure.
- Database Optimizations. Optimized Matrix database tables to improve scheduled ETL processes that stored KPIs in GoDaddy data warehouses for data analysis.
- 2016 Silver Stevie - Best Use of Technology, Customer Service. The combination of years of effort building a useful tool allowed us to be eligible for and win an award the company was proud of.
- PHP
- Angular v1
- MySQL
- Bootstrap
Visit github.comPicture: The Media Temple logo: the letters mt in parentheses
MediaTemple, Inc.
Premium web hosting for big & small businesses
Business Systems Engineer
Acquired by GoDaddy
Built a workflow & BI app, 'Matrix', used by support agents and managers to improve customer service.
- Reduced paper waste. Migrated storage of daily QA reports from paper --> filing cabinents into electronically signed MySQL database records.
- LiveChat API. Enabled tech agents to chat directly with customers from within the Matrix, centralizing employee focus in one app.
- Aggregated key legacy system data. Aggregated relevant data from legacy systems, such as customer interactions, centralizing employee focus in one app.
- Gamification Elements. Improved the customer support team morale and overall efforts by implementing gamification elements related to their work output.
- PHP
- jQuery
- Angular v1
- MySQL
- Bootstrap
Visit github.comPicture: A yellow light bulb with orange rays around it
Dailyosity
Pique your daily curiosity in five minutes
An iOS app that serves nine new things to learn every day, from history and language to art and astronomy, with timed quizzes, streaks, and leaderboards.
- Daily Content Pipeline. A scheduled Cloud Function gathers content from open-knowledge sources every morning and uses the Claude API to write that day's quizzes before users wake up.
- Audio Narration. Generated narrated audio for each day's content with AI text-to-speech, so users can listen instead of read.
- Timed Quizzes & Leaderboards. Every quiz question is a race against the clock: faster correct answers earn more XP, and daily, weekly, and monthly leaderboards rank players.
- Habit-Building Gamification. 80+ badges in Bronze, Silver, and Gold tiers, streak milestones, a knowledge map across 10+ categories, and a weekly progress wrap.
- Premium Subscriptions. Free tier with a premium upgrade through in-app purchases, verified on the server before premium features unlock.
- Admin Dashboard & Marketing Site. Built a Vue admin dashboard to monitor daily scraper runs and quiz generation, plus an animated Vue marketing site that drives App Store downloads.
- Expo
- React Native
- TypeScript
- Firestore
- Cloud Functions
- Vue.js
- Claude API
Visit dailyosity.comPicture: The BrainBlinks logo: a rainbow brain wrapped like a candy
BrainBlinks.app
Bite-sized weekly wisdom delivered to your phone
A full-stack content platform with marketing site, admin dashboard, and mobile app. Features secure API architecture, real-time content management, and smooth animations.
- Multi-Platform Architecture. Built three interconnected applications: marketing site, admin dashboard, and mobile app using Vue 3, Express API, and Expo for React Native.
- Secure API-Only Backend. Implemented Express API layer with Firebase Auth token verification and UID-based admin whitelisting, eliminating direct client-side database access.
- Admin Content Management. Developed comprehensive dashboard for creating, editing, and scheduling Brain Blinks with analytics, user management, and notification settings.
- Animated Marketing Site. Created visually engaging landing page with @vueuse/motion animations, testimonials, sample content, and app store download links.
- Firebase Emulator Workflow. Configured complete local development environment with Auth and Firestore emulators, seeding scripts, and hot-reload across all applications.
- Vue.js
- TypeScript
- Firestore
- Cloud Run
- Expo
Visit brainblinks.appPicture: The StepCommit logo: a stack of three rounded squares, blue, teal and green, with a white check mark
StepCommit
Walk while you work
An iPhone app, in development, that puts a software engineer's daily steps next to the work they finish, on one map, to show that walking while working works.
- Steps From Apple Health. The iOS app reads daily step counts from HealthKit and uploads them, since Apple has no web API for Health data.
- Work Connectors. Scheduled Cloud Functions sync finished work every 30 minutes: GitHub commits, Trello cards and ClickUp tasks, credited to whoever did them.
- Steps Meet Commits. Each calendar day shows green for steps, blue for finished work, and teal when both happened, bucketed in the user's own time zone.
- Accounts & Public Profiles. Sign in with Apple through Firebase Auth, private profiles by default, public profile pages, and full account deletion.
- Launch Waitlist. A teaser marketing site on Cloud Run with a rate-limited waitlist that alerts on every sign-up.
- Expo
- React Native
- TypeScript
- HealthKit
- Cloud Functions
- Firestore
- Vue.js
- Cloud Run
Visit stepcommit.comPicture: The Narralore logo: three paw toe beans over a play button, in amber
Narralore
Your pet, brilliantly narrated
A web app that turns a short pet clip into a narrated film: pick a narrator style, like a wildlife documentary, a movie trailer, noir or sports, and get the video back with a fitted voiceover and soundscape.
- AI Narration Pipeline. A Cloud Run worker checks each clip, runs a content-safety scan, then chains Gemini scene analysis, a Claude script fitted to the clip's length, an ElevenLabs voice, and an ffmpeg stitch.
- Narrator Styles. Wildlife, trailer, noir, true crime and sports styles, including beat-synced sports narration, each with auditioned voices and ambience beds.
- Credits & Payments. One credit per second of video, charged once per job and refunded when a job fails, with Stripe checkout and parity tests that keep the quote and the charge equal.
- Live Job Updates. The web app follows each job's Firestore document live, from upload to finished film, with server-only credits and job state locked down by security rules.
- Tested End to End. Playwright runs on desktop Chrome, iPhone and Pixel against the emulators and a mock pipeline, next to unit, security-rule and lint checks.
- Vue.js
- TypeScript
- Python
- Cloud Run
- Firestore
- Gemini
- Claude API
- ElevenLabs
- Stripe
Visit narralore.comPicture: The Nano logo: a white X with two crossbars on a blue circle
Nano133.com
A Nano arcade and block explorer, run from my own node
A playground for the Nano cryptocurrency: pay-per-play arcade games in XNO, a multiplayer 3D arcade room, and a 3D city of accounts, all fed by a Nano node running on a PC in my office.
- Pay-per-Play Arcade. Reaction, Snake, Maze Runner, Spam Defense, a physics-driven Fair Claw and Block Lattice pinball, paid per round in XNO from a browser purse or any wallet, with leaderboards, daily challenges, streaks and trophies.
- Multiplayer 3D Arcade Room. A walkable React Three Fiber arcade with a balcony and piano stairs, where players see each other, take turns at cabinets and watch games live over WebSockets.
- Sign In with Nano. Log in by sending a tiny, unique amount from any wallet, which is sent straight back, so there is no password and no account to create.
- Our Own Node. The live feed, purse proof-of-work and payments run on a Nano node on an office PC, bridged to the site through a Cloudflare tunnel, with public nodes as backup and a status dot that shows its health.
- Account City. Any Nano account becomes a 3D city of its transactions, with a directory of known accounts to explore.
- React Router
- Three.js
- TypeScript
- Nano Node RPC
- Firestore
- Cloud Run
- WebSockets
Visit nano133.comPicture: A prize wheel with eight colored slices
FreeWheelSpin.com
Spin a wheel with your family, friends or team!
A fun experiment with Three.js, React Three Fiber, Zustand and geometry calculations.
- 3D Wheel Physics Engine. Implemented realistic spinning mechanics with custom deceleration physics, rotation calculations, and slice selection algorithms using React Three Fiber and Three.js.
- Real-time Global Counter. Leveraging Firestore to track and display total amount of global spins with many more unique data implementations comings soon.
- Dynamic Camera System. Created smooth camera transitions between 2D top-down and 3D perspective views with mouse-tracking for enhanced user interaction.
- Customizable Wheel Configuration. Developed flexible options for spin power, winner removal, win counting, and custom participant lists with persistent state management using Zustand.
- Three.js
- React
- Firestore
- Zustand
Visit freewheelspin.comPicture: The EmptyCourts logo: an orange basketball
EmptyCourts.com
Autonomous sports court monitoring system (Prototype)
A unique hardware and software solution leveraging cloud infrastructure, image analysis and solar energy for endless autonomous operation.
- Computer Vision System. Leveraged cloud image analysis software to detect player presence and basket occupancy in real-time, providing accurate court availability metrics.
- Solar-Powered IoT Hardware. Designed and built proprietary 'Empty Court Box' with solar energy harvesting for endless autonomous operation without external power requirements.
- AI Cloud Processing. Architected cloud infrastructure for processing court images and delivering live updates to web dashboard with sub-minute latency.
- Court Location Dashboard. Built interactive UI showing near real-time court status, player counts, basket usage, and availability across multiple locations with automatic updates.
- IoT Hardware
- Computer Vision
- Google Cloud
- Solar Power
Visit emptycourts.comPicture: Wes's GitHub contributions for the last 30 weeks, as green pegs, brighter for busier days
GitHub activity
9,733 contributions in the last year
Every peg is a day from the last 30 weeks of my GitHub graph, one column per week. The brighter the green, the busier the day.
See it on GitHubPicture: Angle brackets and a slash, the symbol for code
Open source
Fix: Resolved Circular Dependency in useQueries
Fixed a circular dependency issue between useQueries and QueryObserver that was causing build errors in Solid.js.
Read the pull requestDocs: Improved Error Handling Documentation
Enhanced React documentation with clearer error boundary examples and best practices.
Read the pull requestFix: Corrected TypeScript Types
Fixed TypeScript type definitions for better type inference in React components.
Read the pull request