Backend Software Engineer

Clear logic.
Practical software.

I'm Andy, a backend software engineer. I build database-backed applications, Python tools, and data projects, with a focus on making complex logic easier to understand and maintain.

Selected work

From problem to working project.

Explore database-backed applications, a C# location API, Python tools, and data analysis. Start with the case studies for a closer look at implementation decisions and tradeoffs.

YouTube logo

Developer tool

YouTube Downloader

  • Python
  • Flask
  • CLI
  • Media processing

A local Python application with browser and command-line interfaces for video, audio, and playlist downloads.

Outcome: Supports progress reporting, cancellation, and skipping existing downloads.

View downloader source on GitHub
Data tables representing a data-wrangling project

Data engineering

Data Wrangling

  • Python
  • Pandas
  • Jupyter

Transforms raw recruitment data using dataframe merging, filtering, and manipulation.

Outcome: Consolidated messy source data into a clean, analysis-ready dataset.

Read the data-wrangling analysis
The Titanic at sea

Machine learning

Titanic Survival

  • Python
  • Pandas
  • Logistic regression

Uses passenger features to model survival outcomes from the Titanic dataset.

Outcome: Built an end-to-end binary-classification workflow for estimating passenger survival.

Read the Titanic analysis
Dice used in a poker game

Python application

Dice Poker

  • Python
  • OOP
  • Game logic

A scoring-based poker game featuring re-roll choices and multiple hand types.

Outcome: Delivered a replayable game with encapsulated scoring, round, and player logic.

Play Dice Poker
Explore the full Project Lab

About me

Simple solutions to meaningful problems.

I enjoy the part of software engineering where a tangled problem becomes a clear set of rules: how to preserve a budget's history, clean a dataset, or manage a download.

My approach starts with the fundamentals: understand the inputs, make the logic explicit, and keep the solution easy to follow. In Buddy Budget, that means enforcing ownership and history rules in the database as well as reflecting them in the interface.

Technical toolkit

My technical toolkit

Languages, frameworks, and engineering practices I work with.

  • Languages

    • Python
    • TypeScript
    • Java
    • C#
    • Dart
    • SQL
    • Bash
  • Frameworks & tools

    • React
    • Supabase
    • PostgreSQL
    • ASP.NET Core
    • Entity Framework Core
    • SQLite
    • Django
    • Flask
    • RESTful APIs
    • Docker
    • Git
    • Flutter
  • Engineering

    • OOP
    • Test-driven development
    • CI/CD
    • Algorithms
    • Debugging