Zebrafish Brain Segmentation (U‑Net)
2025 Overview: This project delivers pixel‑accurate segmentation masks for zebrafish brain images so research teams can quantify structure at scale. Instead of hand‑drawing masks one image at a time, collaborators receive consistent, machine‑readable outputs that plug into downstream analysis, surface area, boundary length, symmetry, and region comparisons across cohorts.
My Role: I designed the end‑to‑end pipeline: dataset specification, augmentation policy, model choice, training/evaluation routines, and a results notebook that makes the model’s behavior legible to non‑ML collaborators. The focus wasn’t novelty; it was reliability and explainability for a small but important dataset.
Approach: Inputs are paired TIFF images and PNG masks with a simple, reproducible split. Augmentations (mirrors, slight rotations, elastic deformations, controlled brightness/contrast jitter) encourage generalization without distorting anatomy. A U‑Net with a ResNet‑34 encoder (ImageNet initialization) gives strong performance with modest compute. I bias the loss toward boundary fidelity using a Dice‑style objective so thin structures aren’t washed out by background class dominance. Evaluation reports both Dice and IoU along with per‑case visuals and “failure galleries” that highlight uncertainty and edge cases.
Design Choices: The pipeline is intentionally transparent: no hidden heuristics, minimal post‑processing, and clear ablations to show the impact of each choice. Visual notebooks include side‑by‑side overlays, per‑class Dice/IoU, failure galleries, and uncertainty heuristics to flag images worth manual review. All of this is written to be a durable baseline the team can understand and extend.
Outcome: A dependable model that accelerates annotation, plus a documented experimental scaffold for future iterations (multi‑scale features, attention gates, or domain‑specific augmentations) as more data arrives.
Lab Access System
2024 Overview: A desktop system that mirrors swipe‑card entry for a university lab. It tracks precisely who entered, when, and under which permission profile, with an operator view optimized for real‑world pressure, rushes at the top of the hour, confused users, and the need to answer “who was here last night?” in seconds.
My Role: I owned the application from data model to UI. The work included designing a normalized SQLite schema, building a clear GUI for enrollment and audit, and writing guardrails that prevent accidental edits without nagging users.
Approach: The interface favors decisiveness: large, obvious actions; inline validation; and persistent status messaging so operators never wonder what just happened. The persistence layer is abstracted so future hardware integrations (e.g., physical reader) wouldn’t force a rewrite. Reports filter by name, date range, and status with exports suitable for policy review.
Design Choices: Accessibility and speed trumped novelty. Keyboard paths are consistent; destructive actions require explicit confirmation; and the system communicates in plain language. By separating GUI logic from storage, the app remains easy to maintain and extend.
Outcome: A reliable workflow that replaces scattered logs with a single source of truth, reducing incident resolution time and making compliance checks straightforward.
Maintenance Request Web App
2023 Overview: A small full‑stack system that moves facility issues from report to resolution without the usual ambiguity. Requesters submit clear descriptions with location/category/impact; staff triage, assign, and update status; stakeholders see a transparent timeline that keeps questions to a minimum.
My Role: I handled the end‑to‑end application, data model, server logic, and interface. The goal was consistency and calm under load, not a pile of frameworks.
Approach: Server‑rendered pages keep the app fast and predictable. Forms validate the essentials and nudge users toward the details that actually help the team act. Records move through a simple lifecycle (new → triaged → assigned → in progress → done) with timestamped updates and an audit trail that supports lightweight reporting.
Design Choices: The UI uses progressive disclosure to avoid overwhelming new users. Copy is written to reduce support questions; list views surface the work that’s blocked or ageing out. The database schema is explicit and readable so future teammates can maintain it without guesswork.
Outcome: Faster resolution, fewer back‑and‑forth messages, and predictable reporting for managers who need a snapshot at the end of the week.