West Haven, Connecticut · MS Computer Science, University of New Haven
Building the pipelines that carry data, and the models that read it.
Spark · Airflow · dbt · Kafka · Snowflake — and applied ML across green computing, industrial prognostics, financial risk and medical imaging.
Batch and streaming ingestion, ETL and ELT, warehouse and lakehouse design, orchestration, and the governance that keeps all of it trustworthy — including the clinical side of it, where a DICOM export has to become a cohort and a note has to lose its identifiers before either can be used.
Alongside that I co-author applied machine learning research. The two are less separate than they look: most of what goes wrong in a published model is a data problem, and every repository below was built on that observation.
Reference implementations of methods from papers I have co-authored. Each one ships an evaluation protocol that does not cheat and tests that fail when it does. None of them quote an accuracy figure, because none of them shipped with the dataset that produced one.
| Repository | What it is |
|---|---|
| green-anomaly-detection | Anomaly detection where every model reports its energy and carbon cost beside its detection score. The one repository here with numbers, because scripts/benchmark.py measures them. |
| equipment-failure-prediction | Hybrid CNN-LSTM predictive maintenance, with an asymmetric loss — predicting failure late costs far more than early — and cost-optimal alert thresholds. |
| adaptive-financial-risk | Value-at-Risk that notices the regime changed. Drift detection, walk-forward backtests, Kupiec and Christoffersen. |
| seattnfusionnet-throat | Squeeze-excitation attention fusion for pharyngitis screening, with the attention weights exposed and tested rather than assumed. |
| hybrid-brain-tumor-mri | Brain tumour MRI classification, shipped with the leakage audit that decides whether any accuracy figure from it means anything. |
| onco-imaging-toolkit | The preprocessing, imbalance and Grad-CAM layer the two medical studies share — including the randomisation check that says when a heat map is decoration. |
Built to be read and run, not to reproduce a paper. Each exists because a specific thing in cancer machine learning is routinely got wrong, and each measures how much that thing is worth.
| Repository | What it is |
|---|---|
| wsi-mil-pathology | Whole-slide histopathology: tissue detection, Macenko stain normalisation, tiling, and gated attention MIL for slide-level cancer classification. Ships the confounding audit that separates a site signature from tumour biology — which the obvious colour probe cannot do. |
| survival-oncology | Time-to-event modelling with censoring handled properly: Kaplan-Meier, Cox with Efron ties, log-rank with the hypergeometric covariance, Harrell and Uno concordance, IPCW Brier and calibration. Every estimator verified against a known answer. |
| segmentation-metrics-audit | Two papers can report Dice on the same predictions and differ by 44.5 points without either being wrong. Four conventions decide it; this measures what each is worth, then adds the boundary metrics that keep discriminating after Dice saturates. |
Two of these are clinical data infrastructure — the part of healthcare AI that consumes most of the effort and gets written up least. Three are diagnostic models, each chosen because the task is scored wrongly in the literature in a measurable way.
| Repository | What it is |
|---|---|
| dicom-ingest-pipeline | A PACS export is not a dataset. 77% of a realistic export is not the diagnostic image. Series selection with a reason for every rejection, de-identification that shifts dates rather than clearing them so intervals survive, and geometry checks for the errors that still render as a valid picture. |
| phi-deidentification | One missed identifier is a breach; a hundred over-redactions are an inconvenience. Recall 0.9849 with a Wilson lower bound of 0.9756, every leaked span listed, zero false positives on notes containing no PHI. Rules rather than a model, because a compliance officer has to be able to read it. |
| chest-xray-multilabel | Fourteen co-occurring findings, labels mined from reports rather than read from images. Predicting all-negative scores ~93%, so accuracy is not offered. Uncertain and unmentioned are first-class label states and the mask reaches the metrics. |
| retinopathy-ordinal | Grades are ordered. Two prediction sets, identical accuracy: macro F1 moves 1.4 points while quadratic kappa moves 63. CORAL thresholds ordered by construction, so an impossible prediction cannot be emitted. |
| ecg-arrhythmia-interpatient | Most published MIT-BIH numbers use a random beat split. Measured with a deliberately trivial classifier: an intra-patient split inflates macro recall by 37 points — more than the gap between any two architectures compared on this task. |
| Repository | What it is |
|---|---|
| streamforge | Kafka-to-lakehouse streaming: watermarks, late-data policies, exactly-once effect, schema evolution that explains why a change is unsafe. |
| lakehouse-dbt-models | A dimensional model that actually runs — DuckDB, so the whole warehouse builds in CI with no credentials. Type 2 SCDs with enforced invariants. |
| dataguard | Data contracts that fail the build, column-level lineage, and PII classification that propagates downstream instead of going stale. |
| airflow-patterns | Idempotent backfills, the data-interval trap, and sensors that do not starve the worker pool — all testable without importing Airflow. |
| Retail-data-engineering-pipeline | End-to-end retail ETL: Python, PostgreSQL, Airflow, Docker. |
| Nyc-Transportation-Analysis | End-to-end NYC Yellow Taxi data pipeline using Python, AWS S3, Snowflake, dbt, and Power BI |
Voice impersonation detection (undergraduate thesis, LSTM + LIME, BRAC University) · Mobile Exchange Store (Flutter) · Line Follower Robot (Webots) · Daily Expense Tracker (PHP)
Every repository here is MIT licensed and runs its tests on Python 3.10, 3.11 and 3.12.
No performance number appears in any of them unless a script in that repository measured it.