JM

About

I have a bad habit of automating every tedious task I run into, even if it takes 100x longer to make than to actually just do it. I like building tools that make annoying things less annoying. While working in the labyrinth of healthcare admin did provide a neverending source of bottlenecks and inefficiencies to work on, eventually wanting to fix things instead of just working around them turned me to fullstack development.

...so, now I still often work around things. But, I get to solve more problems than just bandaid them, and more importantly—I love it.

My degrees in Biology and English make me detail-oriented and good at breaking down and communicating complex problems. I care about building things that work well, look good, and are easy to use. I like connecting with people who get just as nerdy about it as I do. Recently moved from Seattle, Washington to Washington, D.C. —trading mountains and rain, for monuments and humidity.

MovieMatch

Screenshot of a MovieMatch group movie selection room

MovieMatch is for anyone who spends almost as much time deciding on a movie with friends as they do actually watching one. Build, save, and share tailored lists. Pool your choices with friends, and then take turns eliminating one you don't want to watch until only one remains.

  • Django backend written in Python for robust, scalable server-side logic and user management
  • Channels for running websockets allowing real time interaction with multiple users
  • Gunicorn for scalable WSGI application serving, and Daphne for handling ASGI requests
  • PostgreSQL for reliable relational data storage of user and movie info
  • Redis for in-memory backing store for websocket connections and ephemeral data
  • Vanilla JavaScript, HTML, and CSS for a fast, responsive frontend experience
  • Webpack for ES6 module bundling and optimized asset delivery
  • BCrypt for secure password hashing
  • TheMovieDB API to source and search movies

HabitHub

Screenshot of a HabitHub heatmap dashboard

HabitHub helps users visualize, track, and improve their habits and routines. See patterns in your activity, set goals, and stay accountable with a GitHub style heatmap.

  • React frontend written in TypeScript for a fast, modern UI with interactive data visualizations
  • Express and Node.js backend API also in TypeScript for robust, scalable server-side logic
  • MongoDB (Mongoose) for flexible, document-based storage of user and habit data
  • Firebase Authentication for secure, scalable user login and identity management
  • D3 and Observable Plot for rich, dynamic habit and activity visualizations
  • Storybook for UI component development and documentation
  • Vite for fast, modern frontend tooling and development
  • Tailwind CSS for rapid, responsive styling

PatientPortal

Screenshot of PatientPortal patient search results

PatientPortal is an electronic medical records portal for charting and viewing medical records for practitioners and their patients.

  • ASP.NET Core written in C# for backend services, API endpoints, and dynamic server-rendered UIs
  • MySQL for fast, reliable relational data storage and management
  • Entity Framework Core (with Pomelo) for ORM and seamless MySQL database integration
  • Razor Pages with HTML and CSS, and minimal JavaScript for robust, responsive, and accessible frontend interfaces
  • SignalR for real time messaging between users
  • Bootstrap for rapid, responsive design, and intuitive UI
  • BCrypt for secure password hashing

This site. The one you are currently looking at. This one.

Screenshot of this portfolio website

Built without any 3rd party packages, templates, or snippets. Just HTML, CSS, and a little custom JS. (And a service called Basin to forward forms to email for static sites.)

  • HTML
  • CSS for everything from basic site layout to those cool button and nav menu animations
  • JS for the progress bar, scrolling to sections from nav links, form submission to Basin with ReCaptcha, and toast notifications.

CI/CD and Server Architecture

Cropped diagram of CI/CD server architecture

Apps can be deployed using easily configurable and swappable components to the pipeline for any vendor or tech changes

  • Github for source control
  • Docker and Docker Compose to allow consistent and scalable deployments across any architecture
  • GitHub Actions to automate building of images, testing, deploying to cloud services, remotely triggering deployment scripts, and notifying of deployment status
  • AWS
    • EC2 instances for basic deployment, and EBS for massively scalable deployments
    • System Service Manager to initiate image pulls from ECR and sync files from S3
    • Lambda to run specific server tasks, push notifications to 3rd party services, and trigger maintenance tasks
    • CloudFront to deliver content globally with high speed and reliability, ensuring instant access and uptime
    • EventBridge and SNS to monitor all steps of deployment, route messages to appropriate channels/services, and notify of errors and status
    • CloudWatch to monitor logs and server metrics
    • Strict IAM roles and Security Group settings to monitor and control all access
  • NGINX as a reverse proxy and load balancing when only using individual EC2 instances
  • Cloudflare for DNS management, DDoS protection, and caching static content
  • Slack and Discord integrations for all notifications (because it's honestly just nicer to look at than a chain of emails)
  • Grafana and Amplify to monitor logs, metrics, traffic, availability, and response time

Contact