Open Source
Most of my open-source work orbits MLflow and Amazon SageMaker, because that’s where my customers’ problems live. A recurring theme: the hard part of ML in production is rarely the model. It’s versioning, authentication, and the seams between tools. When I hit one of those seams often enough, I fix it upstream.
My MLflow thread
MLflow shows up everywhere in my work, so it deserves its own narrative. It started with a customer problem: open-source MLflow had no access control, and enterprises needed it. I built the fix on AWS-native services — and when the client side needed to sign requests, I contributed AWS SigV4 authentication to MLflow itself. That field experience — POCs, blog posts, the upstream contribution — led to design discussions with the AWS service team during the development of managed MLflow on Amazon SageMaker AI, where I brought the customer perspective from running MLflow on AWS in production. The SigV4 work also led to the sagemaker-mlflow plugin, which today handles authentication in managed MLflow using the same approach.
Since then the thread has continued: network isolation for managed MLflow with AWS PrivateLink, tracking LLM evaluations in MLflow with FMEval, end-to-end data lineage with DVC and MLflow, three patterns for deploying MLflow models to SageMaker endpoints, and a second merged MLflow PR unblocking container builds in SageMaker JupyterLab. Every piece follows the same rule: hit the seam in the field, fix it upstream, write it down.
Contributions
Added AWS SigV4 request signing to the MLflow client via MLFLOW_TRACKING_AWS_SIGV4, enabling MLflow tracking servers to sit behind Amazon API Gateway with IAM authentication.
Workshops
Two public workshops I authored or co-authored, run by AWS field teams worldwide and delivered to thousands of customers.
MLOps from idea to production in six steps — from a notebook to a fully automated CI/CD pipeline, one step at a time.
AuthorAmazon SageMaker Immersion Day — a hands-on introduction to the SageMaker ML lifecycle, from data preparation to deployment.
Co-authorCurrent Project: Agentic Developer Portal
My main project right now re-imagines the developer portal: instead of clicking through forms, developers describe their application and an agent bootstraps the infrastructure across AWS accounts according to codified best practices. It’s built on Strands Agents SOPs — machine-readable runbooks with RFC 2119 keywords, parameterized inputs, and progress tracking. The reference implementation takes a web application from description to production across three AWS accounts (~150 resources, 6 Terraform modules) in under an hour, with a human reviewing the plan and gating production.
The open-source framework the project builds on: Standard Operating Procedures as machine-readable runbooks that agents can execute with human oversight. See the talk for the architecture and a walkthrough of the reference implementation.
Built onCompanion Code
Runnable code behind my blog posts. Each repository stands on its own: clone it, run the notebooks, keep what’s useful.
Three ways to deploy an MLflow model to a SageMaker AI endpoint, demonstrated with the same scikit-learn model so the only variable is the deployment mechanism. Companion to this post.
AuthorEnd-to-end lineage with DVC and MLflow on SageMaker AI: dataset-level lineage via Git commit hashes, and record-level lineage for regulated environments. Companion to this post.
AuthorS3-based templates for SageMaker AI Projects: one-click provisioning of a ModelOps environment integrated with GitHub Actions, without a Service Catalog. Companion to this post.
ContributorProgrammatic LLM evaluation with FMEval, tracked and compared in SageMaker managed MLflow — accuracy, toxicity, fairness, and robustness as first-class experiment data. Companion to this post.
AuthorSageMaker Studio in a private VPC with no internet access, connected to managed MLflow over AWS PrivateLink — CDK stack with CodeArtifact as private PyPI and end-to-end experimentation via the @remote decorator. Companion to this post.
Open-source MLflow on serverless AWS with real access control: IAM for SageMaker jobs and Studio users, Amazon Cognito for the UI, and the MLflow UI embedded in Studio. Companion to this post.
AuthorAutomatic experiment tracking inside SageMaker Pipelines: organize, track, and visualize every pipeline execution as an experiment. Companion to this post.
AuthorData Version Control alongside SageMaker Experiments: track data and code changes together with experiment metrics for reproducible ML workflows. Companion to this post.
Author