Things I've built.
A mix of open-source projects, systems I rebuilt from scratch to understand them, coursework from my Master's, and the early experiments that got me here. If something catches your eye, the code is a click away.
Featured
Ekman
August 2026
TypeScriptNode.jsAn embeddable state machine runtime for backend services, built so every lifecycle in a system is defined one way and run by one runtime instead of becoming its own service. Each instance is addressed by a human-readable key, holds its own state and values, and processes triggers one at a time, so handlers need no locks. The runtime owns what homegrown versions leave out: ordering, retries and timeouts, fencing, constraints, history, queries, and a memory budget that keeps a full audit trail without keeping every instance resident. No server, no cluster, no sidecar. Zero runtime dependencies, backed by a language-neutral spec and a 68-scenario conformance suite so it can be ported to Go, Rust, and C++ and embedded in low-level systems.
Distributed SystemsState ManagementDeveloper ToolsOpen SourceGit
December 2025
CA Git implementation written from scratch in C that reads and writes Git objects and supports the core version control operations. It implements the object model (blobs, trees, commits) with SHA-1 hashing and zlib compression, and can initialize repositories, read and write objects, build trees, stage files, commit changes, and clone remote repositories over the Git transfer protocol with pack file parsing.
Systems ProgrammingStorageRedis
December 2025
GoA Redis server written from scratch in Go that speaks the Redis Serialization Protocol and handles concurrent client connections. It covers key-value commands with TTL expiration, Lists, Streams with blocking reads, and Sorted Sets, plus transactions (MULTI, EXEC, DISCARD), master-replica replication with RDB transfers and command propagation, RDB persistence, Pub/Sub, and ACL-based authentication.
Systems ProgrammingNetworkingConcurrencyStorageShell
November 2025
CA POSIX-style shell written from scratch in C, in the spirit of Bash or Zsh. It has a full REPL with command parsing, process spawning, and built-ins (pwd, cd, echo, type, exit, history), single and double quoting with backslash escapes, stdout and stderr redirection with append modes, multi-command pipelines that work with built-ins, tab completion for executables and built-ins, and persistent history with arrow-key navigation.
Systems ProgrammingHTTP Server
June 2025
JavaAn HTTP/1.1 server written from scratch in Java on raw TCP sockets, with no HTTP library. It parses request lines, headers, and bodies, handles GET and POST, serves static files, and returns proper status codes. It supports concurrent clients with multi-threading, gzip and other compression schemes, and persistent connections with correct close handling.
Systems ProgrammingNetworkingConcurrencyI'm Something of a Painter Myself
June 2024
PythonA CycleGAN in TensorFlow and Keras that turns photographs into paintings in the style of Monet, for the Kaggle competition of the same name. Two generators and two discriminators handle bidirectional image translation, with adversarial and cycle-consistency losses keeping the output realistic. Uses GroupNormalization and trains on TPU and GPU.
Machine LearningGenAIComputer VisionKaggleGrad SchoolCNN Cancer Detection
June 2024
PythonA convolutional neural network that identifies metastatic tissue in histopathologic scans of lymph node sections, from the Kaggle competition "Histopathologic Cancer Detection". Covers data loading and augmentation, a Keras Sequential architecture with regularization, training, evaluation on accuracy, loss, and recall, and a competition submission.
Machine LearningComputer VisionKaggleGrad SchoolAutomodel
October 2023
TypeScriptNext.jsPrismaPythonMy first end-to-end product, built for my software architecture course in grad school (Finarima on GitHub). A Next.js app takes a ticker and a time period and returns fitted ARIMA models and plots. Requests go through API Gateway to a Lambda running a custom container from ECS, plots land in S3, and MySQL via Prisma holds the data, with Clerk and Stripe on the front end. Barebones by design, but it shipped and worked end to end. No longer hosted.
Full StackAWSGrad SchoolFilm Immersion
November 2022
PythonOpenCVMy first large project, and the one that combined the most moving parts: a pipeline that turns multi-angle sports footage into an interactive 3D environment so a viewer can watch a play from any position on the field. It was split into a model trainer, an inference service, a transform service for pose estimation and multi-view synthesis, and a 3D reconstructor. I gathered and labeled the training data myself and trained on both local hardware and AWS. It proved out real-time 3D reconstruction from 2D video and stays private because it was built with commercial intent.
Computer VisionMachine LearningDeep LearningAWSPrivate
More projects
Filters
18 of 18 projects
One-Time Pad
January 2025
CA one-time pad encryption system in C: separate encrypt and decrypt programs that generate a key as long as the plaintext, XOR the two byte by byte, and write the ciphertext and key to disk. A small, hands-on look at the one scheme that is provably unbreakable when the key is random and never reused.
Systems ProgrammingEncryptionSecuritySentiment Analysis
June 2024
PythonA sentiment classifier built with a recurrent neural network in TensorFlow and Keras. LSTM layers handle the sequential text, and GridSearchCV tunes the hyperparameters. The project pairs classic machine learning workflow with a deep learning framework for a natural language task.
Machine LearningNLPGrad SchoolNLP Disaster Tweets
June 2024
PythonModels that predict whether a tweet is about a real disaster, from the Kaggle competition "Natural Language Processing with Disaster Tweets". The notebook walks through data exploration, preprocessing, model architecture, results and analysis, and testing.
Machine LearningNLPKaggleGrad SchoolWeather Clustering
June 2024
PythonClusters weather observations to find recurring conditions using PCA for dimensionality reduction and K-Means for grouping. The dataset is synthetic weather data from Kaggle modeled on several locations, but the preprocessing and clustering pipeline applies directly to real data.
Machine LearningKaggleGrad SchoolBBC News Classification
June 2024
PythonClassifies BBC news articles into business, entertainment, politics, sport, or tech. After exploratory analysis and preprocessing, it uses non-negative matrix factorization from scikit-learn for topic discovery and compares it against supervised methods, then examines the limits of NMF on a Netflix review dataset.
Machine LearningNLPKaggleGrad SchoolBreast Cancer Prediction
December 2023
PythonIdentifies the features most associated with breast cancer diagnoses and trains models to predict whether a tumor is malignant. Four models and an ensemble are compared on accuracy, precision, recall, and related metrics. Final project for a supervised learning course.
Machine LearningGrad SchoolMatch Predictor
October 2023
JavaKotlinGradlePredicts the outcome of a match from the two teams playing, using a logistic regression model trained on a dataset of 100,000 matches and 11 features. Coursework in Java and Kotlin, built with Gradle. Private repository, available on request.
Machine LearningGrad SchoolPrivate
Provenance
October 2023
JavaKotlinGradleA data collection service that pulls articles from infoq.com RSS feeds and stores them, following a Netflix Conductor style architecture. I implemented the articles controller (fetching all and available articles and serializing them as JSON), the endpoint that maps RSS results into the article gateway using an XmlMapper, and the scheduled work in the app entrypoint. Built with Gradle and tested with JUnit.
Distributed SystemsGrad SchoolProvenance Metrics
October 2023
JavaKotlinGradleService level indicators for the Provenance codebase. I set up a Prometheus job to scrape and store metrics, added Prometheus as a Grafana data source, and built a Grafana dashboard to query, visualize, and alert on them.
Distributed SystemsGrad SchoolEmail Verifier
September 2023
JavaKotlinGradleA message-queue exercise that simulates registering an email address and receiving a verification code across four cooperating servers. I wrote a k6 load test (30 seconds, 10 virtual users, asserting a 204 on registration), ran and improved the Kotlin benchmarks, deliberately pushed registrations per second until it failed, and implemented a consistent hash exchange in the registration server.
Distributed SystemsGrad SchoolThe Milk Problem Continued
September 2023
JavaKotlinGradleA follow-up on real-time inventory tracking that focuses on dirty reads in highly available databases. It introduces transactions and event collaboration with RabbitMQ, and works through the trade-off between consistency and availability. Private repository, available on request.
Distributed SystemsGrad SchoolPrivate
The Milk Problem
September 2023
JavaKotlinGradleDemonstrates a classic streaming-data bug where several clients receive the same inventory value: multiple grocery stores order milk and all get the same count. I implemented a decrementBy operation in the product service and replaced the update path in the app with it, so inventory changes run inside database transactions.
Distributed SystemsStorageGrad SchoolSimple Aged Cache
August 2023
JavaKotlinGradleA cache with per-entry expiration implemented and tested in both Java and Kotlin. I wrote the constructors (with an injectable clock for testing), put, isEmpty, and size, and the ExpirableEntry class with its expiry check. Built with Gradle and tested with JUnit. Private repository, available on request.
StorageGrad SchoolPrivate
Simple Blockchain
August 2023
JavaKotlinGradleA minimal blockchain in Java. I implemented block hashing and the chain as a linked list with add, size, and isEmpty, then the validation that walks the chain and compares each block's previous hash against its predecessor for empty, single, and multi-block chains. Built with Gradle and tested with JUnit.
Grad SchoolImage Transform
March 2023
C++Image transformations in C++ (grayscale and other filters) for a course I took as a prerequisite for my Master's. Private because the code contains personal information; available on request.
Computer VisionGrad SchoolPrivate
Unordered Graph Search
February 2023
C++An unordered graph search implemented in C++ for a course I took as a prerequisite for my Master's. Private because the code contains personal information; available on request.
Grad SchoolPrivate
Unordered Map
February 2023
C++An unordered map (hash table) implemented in C++ for a course I took as a prerequisite for my Master's. Private because the code contains personal information; available on request.
Grad SchoolPrivate
Generic Tree
February 2023
C++A generic tree implemented in C++ for a course I took as a prerequisite for my Master's. Private because the code contains personal information; available on request.
Grad SchoolPrivate
Early work, 2019 to 2020
16 projects
The self-taught machine learning and quantitative finance work that got me started.
May 2020
Motion Capture
Tracks a person through 2D video with OpenCV and MediaPipe, writes the per-frame landmark coordinates to an animation file, and replays them as a moving 3D point model in Unity via C#.
Python, C#, Unity
August 2019
Movie Review Classifier
A sentiment classifier for positive and negative movie reviews trained on 50,000 IMDb reviews, served through a small Flask app with SQLite and pickled models so the dataset never has to reload between predictions.
Python
August 2019
Sentiment Analysis with RNNs
A many-to-one recurrent neural network for sentiment analysis on the same IMDb dataset, with build, train, and predict methods, trained for 40 epochs and evaluated on the held-out half.
Python
July 2019
Parallelizing Neural Network Training
An introduction to TensorFlow for training large multilayer networks efficiently, starting with the low-level API and moving to TF Layers and Keras.
Python
July 2019
Mechanics of TensorFlow
Computation graphs and TensorBoard visualization, sessions, placeholders and variables, evaluating tensors, and tensor transformations such as transpose, reshape, split, and concat.
Python
July 2019
Machine Learning Classifiers
Classification algorithms with scikit-learn: Perceptron and Adaline, logistic regression, regularization, linear and kernel SVMs, decision trees, and K-nearest neighbors.
Python
July 2019
Classifying Images with Deep Convolutional Neural Networks
The convolution operation in 1D and 2D, max and mean pooling, and a deep CNN for image classification built with the TensorFlow core and Layers APIs.
Python
July 2019
Character-Level Language Modeling with RNNs
A character-level RNN that learns from a text document and generates new text in its style, with one-hot encoding, batched sequence generation, and a sampling method. Trained on Old English text, which makes the output more interesting.
Python
July 2019
Ensemble Learning
Combining learners for better predictions: a majority vote classifier over logistic regression, decision trees, and K-nearest neighbors on the Iris dataset, ROC evaluation, bagging with bootstrap samples, and AdaBoost.
Python
June 2019
Clustering Analysis
K-Means with the elbow method and silhouette analysis, agglomerative hierarchical clustering with dendrograms, and DBSCAN for non-globular clusters and outliers.
Python
June 2019
Regression Analysis
Linear regression by gradient descent and ordinary least squares, RANSAC for outliers, and polynomial features and random forest regressors for nonlinear relationships, mostly with scikit-learn.
Python
June 2019
Multilayer Artificial Neural Network
A multilayer perceptron built from scratch with backpropagation, trained to recognize handwritten digits from MNIST.
Python
June 2019
Simple Artificial Neurons
A Perceptron and an Adaline neuron implemented by hand to classify Iris flowers by sepal and petal length, with their decision regions plotted.
Python
May 2019
ARIMA Modeling
A seasonal ARIMA forecast of monthly milk production, from a financial econometrics course: ETS decomposition, an augmented Dickey-Fuller test, autocorrelation plots, and the fitted forecast against actuals.
Python
March 2019
Equity Portfolio Optimization
Pulls price history for 12 tickers, tracks individual and portfolio performance under a chosen allocation, and plots the Sharpe ratio and Markowitz efficient frontier with pandas, NumPy, SciPy, and Matplotlib.
Python
March 2019
Market Analysis
One of my earliest Python projects: a visualization of price and volume for Ford, Tesla, and GM from CSV data covering 2017 through 2021, with the latest close performance printed out.
Python