Work

Seven case studies, strongest first. Each starts with the problem the software solves, then how it’s built. Team projects name the team.

01 · EMPLOYMENT · SOFTWARE ENGINEER · MAR 2025 — PRESENT

ThotExperiment

Production backend and mobile work for a forward dating app: faster discovery, isolated chat, image moderation, and a shipped Flutter feature.

Headero is ThotExperiment’s production platform: a forward dating app for adults, built around safety and privacy. The company says it does not sell user data. Made in New York.

SYSTEM
flutter app→node gateway→go / java services→k8s: chat + admin (HPA)→mongodb + redis→rekognition→lambda cleanup
The company’s code is private, so this is an engineering story, not a code walkthrough.
MOVE 1 · SPLIT THE HOT APISExtracted high-cost APIs into Go and Java microservices behind a Node gateway to scale for peak traffic.
MOVE 2 · ISOLATE CHATChat and admin on Kubernetes with horizontal pod autoscaling, health probes, and GitLab CI/CD. Expiry and cleanup jobs moved to AWS Lambda.
MOVE 3 · SPEED UP DISCOVERYMongoDB aggregations with Redis scoring. Feed latency 1.5 s → 50 ms. A view-to-notify loop took weekly app time from 9 to 20 minutes.
MOVE 4 · MODERATE IMAGES, SHIP TRAVEL MODEImage moderation on EKS with Amazon Rekognition. Launched Travel mode in the production Flutter app.
numbers as reported on his public LinkedIn
02 · SOLO · SHIPPED 25 AUG 2025

Smart Log Viewer

A live log console that streams, filters, and pauses logs over WebSockets.

PROBLEMReading log files in a terminal loses the thread as soon as the volume spikes. Operators need to watch levels, pause the stream, and keep the connection alive.
  • ▸ Go server parses logs and broadcasts on /ws, with a status endpoint
  • ▸ React + TypeScript client: a dark, filterable INFO / WARN / ERROR stream
  • ▸ Pause and resume without dropping the socket; auto-reconnect; ping/pong heartbeat
  • ▸ Nginx on :80 proxies the UI, the socket, and /api; Docker Compose runs all three
goreact 18typescript · vitewebsocketsnginxdocker composeair · eslint · prettier
Smart Log Viewer main interface streaming colour-coded log lines
Smart Log Viewer: heartbeat ping/pong
heartbeat ping/pong
Smart Log Viewer: smart filtering
318 of 441 logs, WARN + ERROR selected
browser→nginx :80→go server/ws→log source
03 · SOLO · PERSONAL TIME · MAR 2024 — MAY 2025

MrManage

An offline Android ledger for small shops that still keep books on paper.

A 2022 NASSCOM and Zinnov report, cited in the README, says over 90% of Indian MSMEs are not digitally transformed and still use paper. A useful tool for them has to work without a server bill and without assuming comfort with software.

  • ▸ Local-first. Room (SQLite) on the device, no backend.
  • ▸ Plain UI. Java screens aimed at first-time digital users.
  • ▸ Next, not shipped: back up each user’s books to their own Google Drive as JSON — survives a reinstall, still no central database.
LESSONS HE WROTE DOWNOffline vs cloud-first trade-offs · schema migration · the cost of losing SQLite on uninstall · UX for people new to apps
APP STRUCTURE · edu.northeastern.MrManage
roomApidatabase · DAO · entities · repositories · view models
viewactivities · adapters · dialogs · view holders
utilityshared helpers
java · android · room · sqlite · mvvm (planned)
04 · TEAM OF 5 · SUMMER 2023 · CS5520 MOBILE APP DEVELOPMENT

NutriPro

An Android health app for meals, steps, recipes, and friends.

BUILT BYKevin Lin · Shashank Manjunath · Akshat Gandhi · Vaibhav Garg · Jialin Huang
Meals & stepsSensor APIs and USDA nutrition data
RecipesOpenAI + LangChain, served from Django
ProgressIntake charts and goal notifications
FriendsA social layer for following friends
SYSTEM MAP
android clientjava · kotlin · mvvm→firebase · profiles & data→django recipe service → langchain → openai→usda nutrition data · device sensors
DEMO VIDEOS
05 · TEAM PROJECT · OCT 2023

HemoWin

A desktop app where donors join blood-donation contests, book appointments, and workers record the donation.

DATA INTEGRITYEmpty-field checks, duplicate usernames rejected, and workers created in the database rather than through a public signup screen.
DECISION RECORDEDSwing versus a web front end — the team kept Swing.
IDEAS, NOT BUILTWorker signup · contest creation by workers · donation history · nearby facilities · referrals
java 11 · swing · spring boot · mysql · maven · jdatepicker
THREE FLOWS, ONE DATABASE
DonorRegister · see active contests · book with a worker, date and contest · cancel · change password
WorkerAccept appointments · enter quantity donated · counts update in the UI
ContestLeaderboard of top donors per contest
mysqldonors · workers · contests · appointments · config.properties
No screenshots in the repo, so none are shown.
06 · SOLO EXERCISE · 10 — 12 OCT 2024

Flow log processor

Turns VPC flow logs into port, protocol, and tag counts, and writes down every line it cannot trust.

PIPELINE
flow log (v2) · protocol table (csv) · lookup table (optional)→com.illumio.flowlogfileloaders · processor · trackers · orchestrate · loggers · exceptions→tag counts · port/protocol counts→error log
A take-home-style specification exercise. Illumio is the repo name only — no employment implied.
  • ▸ Input contract. AWS VPC flow log v2, space-separated; port and protocol at the documented positions. Protocol numbers 0–255 mapped from an IANA-style CSV.
  • ▸ Rejected, not dropped. Bad shape or non-integer port/protocol rows are skipped and written to an error file.
  • ▸ The error log is the test suite. External test libraries weren’t allowed, so every edge case was verified through logging.
EDGEEmpty flow log
EDGEEmpty lookup table → “Untagged” equals the line count
EDGEProtocols 146–242 with no keyword · case-insensitive keywords
07 · COURSE PROJECT · CS5500 · OCT 2024

Question board

A Stack Overflow-style site: questions, answers, comments, tags, and accounts.

React client and Express server started together, MongoDB via Mongoose. Auth with bcrypt, JWT and cookie-parser. Cypress and ESLint in the toolchain. Built as a course project with a classmate.

react 18 · express · mongodb · mongoose · jwt · bcrypt · axios · cypress
DOMAIN MODEL
userquestionanswercommenttag
a user asks questions and writes answers and comments; questions carry tags · routes for each model