<hc/>

Projects

Projects I've shipped at work and on my own, plus the open source repositories I have contributed to. Cloud infrastructure, developer tooling, and a few older projects spanning over half a decade.

Pinned

A handful of projects I'm most proud of.

LocalStack2025

LocalStack MCP Server

Model Context Protocol server that lets coding agents drive a LocalStack container directly. Exposes tools for starting and stopping the stack, querying logs, listing emulated AWS resources, and running CLI commands inside the sandbox, so an agent can iterate on infrastructure code without leaving the chat.

PythonMCPAWSLocalStackDocker
LocalStack2024

Serverless Quiz App

Quiz application that demonstrates a complete serverless stack on LocalStack. API Gateway routes traffic to Lambda handlers backed by DynamoDB, the static front end is served from S3, and questions are deployed with the AWS CDK so the whole thing comes up from a single cdk deploy.

PythonAWSLambdaDynamoDBAPI Gateway
LocalStack2024

LocalStack Blog

Engineering and product blog for LocalStack. I own the publishing pipeline (Astro plus MDX, deployed on Cloudflare Pages), the editorial calendar with the engineering team, and the integration with Hashnode for syndication. Around two hundred posts published since the rebuild.

AstroMDXCloudflareTailwind

AI & Machine Learning

Models I trained and apps wired around them, along with modern agentic workflows.

LocalStack2025

LocalStack MCP Server

Model Context Protocol server that lets coding agents drive a LocalStack container directly. Exposes tools for starting and stopping the stack, querying logs, listing emulated AWS resources, and running CLI commands inside the sandbox, so an agent can iterate on infrastructure code without leaving the chat.

PythonMCPAWSLocalStackDocker
Personal2020

Malaria Detection

Convolutional neural network that classifies thin blood smear slides as parasitized or uninfected. The model is a small VGG-style CNN trained on the NIH malaria cell dataset, exposed through a Flask web app that accepts an image upload and returns the prediction with the confidence score.

PythonTensorFlowKerasFlaskOpenCV
Personal2019

Brihaspati

Collection of Jupyter notebooks covering classical machine learning and deep learning building blocks. Each notebook walks through one technique end to end, from data preparation to evaluation, using scikit-learn, TensorFlow, and PyTorch on small public datasets that fit in memory.

PythonJupyterTensorFlowPyTorchscikit-learn
Personal2020

IPL Match Predictor

Regression model that predicts the first-innings total in an Indian Premier League cricket match given the batting team, bowling team, venue, current score, and overs bowled. Trained on ball-by-ball data from 2008 to 2019 and served behind a Flask form so anyone can plug in a live match state.

PythonFlaskscikit-learnpandasNumPy
Hackathon2020

NewsFresh

Fake news classifier built during Smart India Hackathon 2020 (internal winner) and Hack Infinity 2.0 (runner up). A passive aggressive classifier trained on the LIAR dataset scores news headlines as real or fabricated, with a Django front end that lets the user paste a link or text snippet to check.

PythonDjangoMySQLscikit-learnBootstrap
Personal2020

MargSetu

Direction-finder for visually impaired pedestrians. The app pulls live camera frames, runs a MobileNet object detector on device, and converts detected obstacles into spoken cues through the platform speech synthesiser. Built as a Flutter front end against a TensorFlow Lite model.

FlutterDartTensorFlowFirebase

Sample Apps & Demos

Reference applications to show particular patterns & workflows running end to end.

LocalStack2023

Loan Broker on Step Functions

Reference implementation of the Loan Broker enterprise integration pattern. A Step Functions workflow accepts a quote request, fans out to several mock bank Lambdas through EventBridge, aggregates the responses, and returns the best rate. Runs end to end on LocalStack with one command.

PythonAWSStep FunctionsLambdaEventBridge
LocalStack2024

Serverless Quiz App

Quiz application that demonstrates a complete serverless stack on LocalStack. API Gateway routes traffic to Lambda handlers backed by DynamoDB, the static front end is served from S3, and questions are deployed with the AWS CDK so the whole thing comes up from a single cdk deploy.

PythonAWSLambdaDynamoDBAPI Gateway
LocalStack2025

Snowflake Smart Factory App

Smart factory monitoring app that ingests simulated factory sensor data into Snowflake through S3 and Snowpipe, with dbt transformations orchestrated by Dagster. A Streamlit native app dashboard tracks machine health and anomalies, Snowflake Tasks trigger SES alerts for critical conditions, and zero-copy clones cover instant recovery. Local-only via LocalStack and the Snowflake emulator.

PythonSnowflakedbtDagsterStreamlit
LocalStack2025

LocalStack Swag Store

Storefront sample that wires together half a dozen AWS services on LocalStack. Cognito handles sign-in, products live in DynamoDB, images in S3, checkout goes through API Gateway to Lambda, and order events flow into SNS so a fulfilment Lambda can pick them up. Designed for live demos.

PythonAWSCognitoDynamoDBLambda
Personal2021

Golang Docker Template

Starter repository for shipping a Go service inside Docker. Includes a multi-stage Dockerfile that builds a static binary against a scratch base, a docker-compose.yml for local development with hot reload, and a GitHub Actions workflow that publishes images to Docker Hub on tag.

GoDockerGitHub Actions

Applications

Full apps I shipped past a single demo, either in production or piloted with a paying customer.

Hackathon2020

Helping Hand

Mobile app that helps visually impaired users perceive their surroundings. The camera frame is run through a MobileNet object detector and the results are read aloud through the system text-to-speech engine. Won the MLH Fellowship Sprint 0 hackathon during the Fall 2020 cohort.

FlutterDartTensorFlowFirebase
Qxf22022Internal

Qxf2 Internal Survey

Full-stack survey application for internal use at Qxf2 Services. React on the front end, FastAPI on the back end, and Neo4j as the store so responses could be queried as a graph (employee, manager, project, sentiment). Deployed on EC2 with auth gated to the company directory.

ReactFastAPINeo4jAWSPython

Extensions & Plugins

Extensions, Plugins, GitHub Actions, and a couple of integrations to simplify common workflows.

LocalStack2022

LocalStack Docker Extension

Docker Desktop extension that surfaces LocalStack as a panel inside the Docker UI. Users can start and stop the container, view emulated AWS resources, and tail logs without leaving Docker Desktop. Published on the Docker Extension marketplace with more than fifteen thousand installs.

TypeScriptReactDocker
LocalStack2024

KeyCloak Extension for LocalStack

LocalStack extension that runs a Keycloak identity server inside the same container and proxies AWS Cognito calls to it. Developers can model OAuth flows, user pools, and federated identity locally instead of standing up a remote Cognito user pool for every test run.

PythonLocalStackKeycloakDocker
LocalStack2024

WireMock Extension for LocalStack

LocalStack extension that bundles a WireMock server so tests can stub third-party HTTP APIs from within the same container that runs the emulated AWS services. Stubs are configured through the standard WireMock REST API and persist across LocalStack restarts.

PythonLocalStackWireMockDocker
LocalStack2022

setup-localstack

GitHub Action that installs the LocalStack CLI, pulls the requested image, and starts the container inside a workflow runner. Handles license activation for LocalStack Pro, exposes the container endpoint as a job output, and ships with cache primitives for faster cold starts.

TypeScriptGitHub ActionsLocalStackDocker
LocalStack2025

LocalStack Dagger Module

Dagger module that brings LocalStack into a Dagger pipeline as a reusable function. CI pipelines authored in Go, Python, or TypeScript can call into the module to spin up a stack, run their AWS-touching tests against it, and tear it down without bespoke container plumbing.

GoDaggerLocalStackDocker
Personal2024

Bookend

Chrome extension that organises a messy bookmark tree with a language model. Reads the current bookmarks through the Chrome API, asks the model to cluster them by topic, and writes the new folder structure back. Published on the Chrome Web Store with a couple of thousand weekly users.

JavaScriptChrome Extensionopenai
Personal2020

Validate Issues over PRs

GitHub Action that fails a pull request when the body does not reference an open issue. Useful for projects that require an issue-first workflow. The action parses the PR body for issue keywords, validates each referenced issue exists and is open, and posts a comment explaining what is missing.

JavaScriptGitHub Actions
Personal2021

Reddit Saved Downloader

Chrome extension that exports every saved Reddit post for the signed-in user as a JSON or CSV file. Walks the saved listings through the public Reddit API with the session cookie, paginates until the cursor is exhausted, and bundles the result into a downloadable file from the popup.

JavaScriptChrome Extension

Developer Tools

Tools meant for other developers to use day-to-day.

Hackathon2020

WebEdge

CLI that audits a website for SEO and front-end performance and prints a single-page report. Wraps Google Lighthouse, sitemap parsing, and a robots.txt linter so a non-expert can run one command and see which areas to fix first. Built during the MLH Fellowship pod project sprint.

PythonFlaskLighthouse
MetaCall2021

MetaCall Jupyter Kernel

Polyglot Jupyter kernel built on top of MetaCall Core. A cell can hold Python, JavaScript, or Ruby and call functions defined in any of the other languages within the same notebook session. Built during Google Summer of Code 2021 under the MetaCall organisation.

PythonJupyterNode.jsMetaCall

Content Engines

Documentation and blog platforms I built or rebuilt and continue to operate.

LocalStack2024

LocalStack Docs

Documentation site for LocalStack, with around four hundred pages covering the emulator, individual AWS service parity, the Pro tier, and integrations. I rebuilt the site on Astro, set up the search index and the autogenerated AWS coverage matrix, and own day-to-day editing of the content.

AstroMDXTypeScriptTailwind
LocalStack2024

LocalStack Blog

Engineering and product blog for LocalStack. I own the publishing pipeline (Astro plus MDX, deployed on Cloudflare Pages), the editorial calendar with the engineering team, and the integration with Hashnode for syndication. Around two hundred posts published since the rebuild.

AstroMDXCloudflareTailwind
Moja global2020

Moja global Community Website

Public site for the moja global open-source ecosystem, which builds tools used by national governments to model greenhouse gas emissions from land use. Gatsby front end with content sourced from Markdown and a custom GraphQL layer over the GitHub API for live project metadata.

GatsbyReactGraphQLMarkdown
Moja global2020

Moja global Docs

Unified documentation hub for the FLINT family of carbon-accounting tools maintained by moja global. Built with Sphinx and Read the Docs, with cross-project links pulled from a YAML manifest so changes to one project ripple into the table of contents of every sibling project.

SphinxPythonRead the Docs

Miscellaneous

Community work and older projects that do not fit neatly into one of the buckets above.

LocalStack2022

LocalStack Community Meetup

Global meetup group I started in 2022 to bring together developers working with LocalStack and cloud emulation more broadly. Over the past four years the community grew past one thousand members, with more than forty events across timezones and over seventy speakers on the schedule. Talk recordings live on YouTube and have crossed seventy thousand views in aggregate.

CommunityLocalStackMeetupEvents
Personal2020

Rotten Scripts

Long-running community repository of short, single-purpose scripts in Python, JavaScript, Shell, and a handful of other languages. Spent a stretch on the GitHub trending page during Hacktoberfest 2020. Currently sits at more than seven hundred stars and three hundred contributors.

PythonJavaScriptBashHacktoberfest
Personal2022

Blind App Reviews

Public dataset of around three thousand employee reviews scraped from the Blind app, covering twenty-five technology and consulting employers. Each record carries the rating, pros, cons, anonymous author tag, and resignation reason. Released as CSV and JSON under a permissive licence.

PythonpandasBeautifulSoupDataset

Open Source Contributions

Projects where I contributed regularly. Each card links to my filtered commits so you can see the actual work.

Open Source2024

LocalStack

Cloud emulator for AWS that runs the major services as local processes inside a single Docker container. Contributions covered README and contributing docs, CLI enhancements, community GitHub automation (CLA bot, stale bot, labeler), release banner upkeep across major versions, and OpenSearch version bumps.

PythonAWSDocker
Open Source2021

SciPy

Scientific computing stack for Python that powers a large share of the open-source numerical ecosystem. Worked on the CI re-engineering effort during a Quansight Labs engagement, moving the test matrix off Travis and Azure onto GitHub Actions with cached wheel builds. Also added PR concurrency controls, local Act documentation, GitHub Issue Form templates, and Meson version string fixes.

PythonGitHub ActionsNumPy
Open Source2021

Nebari

Open-source data science platform that deploys JupyterHub, Dask, Conda Store, and the surrounding plumbing onto Kubernetes with one command. Contributions added Infracost-powered cost estimates, overhauled GitHub Actions CI for Docker caching, image scanning, and PyPI releases, and wrote QHub 101 plus ongoing docs cleanup with Vale linting.

PythonKubernetesTerraform
Open Source2020

OpenShift Docs

Official documentation for Red Hat OpenShift, the enterprise Kubernetes distribution. Worked on Developer perspective docs for application flows, OpenShift Pipelines, GitOps Operator sizing, and devfile access while contributing through Red Hat on the documentation team.

AsciiDocKubernetesOpenShift
Open Source2021

Conda Store

Centralised conda environment manager that lets a team pin, build, and share Python and R environments through a REST API and web UI. Improved the web UI namespace display, added Docker layer caching to CI, and set up automated Helm chart build and publish workflows.

PythonCondaFastAPI
Open Source2024

Moto

In-memory mocking library for AWS services used by tens of thousands of Python projects to test code that talks to boto3. Contributions added ACM and ACM PCA certificate lifecycle APIs, SES and WAFv2 coverage, and new implementations for Organizations, RAM, and Textract SNS integration.

PythonAWSpytest
Open Source2021

FLINT-UI

Vue front end for the FLINT family of land-use carbon accounting tools maintained by moja global. Lets scientists configure simulations through a form-driven UI instead of writing the underlying JSON config by hand. Migrated the stack from Vue 2 to Vue 3, updated Azure backend services, and added Docker, devcontainer, and GitHub Actions CI alongside a Sphinx docs site.

JavaScriptVueNode.js
Open Source2020

FLINT.Cloud

Containerised version of the FLINT carbon-accounting engine, packaged so a researcher can run a simulation through a REST API or a CLI instead of building the C++ stack from source. Added Azure integration, GCP and Azure deployment docs, and refactored Docker builds, Kubernetes configs, and GitHub Actions CI for linting, scanning, and simulation workflows.

PythonFlaskDocker
Open Source2021

Devfile Docs

Specification and user guide for Devfile, the YAML format that describes a portable cloud-native development environment. Added Lunr search, upgraded Antora to 3.0, and set up GitHub Actions Surge deploys for PR previews while working with the Red Hat developer experience team.

AntoraYAMLAsciiDoc