Applied AI & machine-learning leader in Calgary. I build AI that has to work on real sensor data and real decisions: medical diagnostics from spectrometer data, AI agents and automated intelligence reports, and before that credit-risk and anti-money-laundering models at a Tier-1 Canadian bank. My background is physics and engineering: a PhD in applied mathematics and scientific computing, GPU-accelerated fluid simulations, and degrees in aerospace and mechanical engineering.
- Head of Machine Learning, Data Science & AI at a medical-technology company
- Interests: AI agents · physics-informed ML · energy and industrial forecasting · anomaly detection on sensor data · trustworthy AI in high-stakes settings · HPC
- Peer-reviewed research in physics, energy, engineering and finance
A note on this profile: My production work (medical diagnostics, credit-risk, anti-money-laundering models, AI agents etc) was built in employers' private GitLab and internal repositories. The featured projects are standalone examples on open data. I'm happy to walk through my professional work in conversation.
| Project | Description |
|---|---|
| ai-agent-platforms-on-gcp | Open course in ten phases: build CostPilot, a FinOps multi-agent platform on Google Cloud, from FOCUS cost data in BigQuery to MCP tools, ADK and LangGraph agents, Zero Trust security, and GitOps canaries gated by agent evals. Every phase has labs, a starter and a reference solution checked by 216 tests in CI. |
| research-radar | LLM agent (LangGraph + LlamaIndex) that watches arXiv and PubMed, scores new papers against a plain-English brief, and writes cited digests. Provider-agnostic: Claude, OpenAI, or a local model via Ollama (23 papers screened in 25 s on a 3B model). |
| shale-decline-ml | Physics vs. ML for forecasting 565 real Marcellus gas wells from their first months. ML halves the error inside its training range but over-predicts by 31% beyond it; "ML inside the data, physics outside it" wins both (15% error, +1% bias). |
| sensor-drift-monitor | Fault detection and drift monitoring on 36 months of real gas-sensor-array data. Benchmarks PCA-SPE/T², Isolation Forest and a PyTorch autoencoder, and shows that drift invisible per reading is obvious per batch. |
| laplace_cuda | CUDA Jacobi solver with shared-memory tiling and cuBLAS convergence checks; 177× over a CPU core, at ~77% of peak memory bandwidth on an RTX 4080. |
Python · PyTorch · TensorFlow · scikit-learn · XGBoost · LangChain / LangGraph · LlamaIndex · Ollama · SQL · Spark · Airflow · AWS · Azure · GCP · Docker · Kubernetes · C/C++ · CUDA · MPI
Most of my professional code lives in employers' private repositories; the projects here are independent work on public data.