I build applications, delivery tools, and infrastructure in private & public clouds, and on-premises.
A whole-person systems administrator with web development fundamentals, branching into full-stack engineering and automation. When I’m not finding ways to automate myself out of a job, I’m building tools to help others do the same. With a love of learning new technologies and practices, I’m focused on DevOps practices, software delivery, infrastructure automation, and cross-organizational silo-busting.
Things I’ve Engineered
Full-stack web application, CI/CD built and deployed to Azure Kubernetes Service.
A highly extendable GUI portal enables our developer and infrastructure teams to provision, monitor, & manage line-of-business application environments and other managed IT services. Built and hosted on Azure services, this project was an intentional effort to build web development skills alongside my existing infrastructure automation & cloud toolboxes and deliver significant value across our entire organization.
LaunchPad defines external services (disaster recovery, training, development environments, and the like), their properties, and actions in the form of API calls to arbitrary endpoints (e.g. Azure Functions, Automation Runbooks, Ansible Tower, Azure DevOps API). These disparate services and functions are exposed via a single documented API for the frontend (or other developers’ applications) to consume.
The VueJS front-end displays the self-service features to authenticated users (by Azure AD group), and sends user requests (get status of, deploy, modify, or delete a service instance) to the LaunchPad API.
Prometheus + Grafana scrape and display time-series metrics from both the in-application LaunchPad instrumentation and the Kubernetes API for full-stack monitoring and analysis by different user groups across the organization.
Elasticsearch + Kibana collect and centralize application-level APM and logs for ease of tracing and troubleshooting.
– VueJS + Bootstrap frontend
– Flask API backend
– Redis-backed job processing (pub/sub task queue with workers)
– PostgreSQL + SQLAlchemy backend
– Azure Active Directory SSO
– Python and Golang microservices
– Azure DevOps Build and Deploy pipelines, triggered by git branch commits
– Built for and deployed to Kubernetes.
– Rancher for team use and ease-into-Kubernetes.
– ARM templates to describe or rebuild Azure Kubernetes Service, Azure a, and Azure Database for PostgreSQL resources.
Monitoring & Log Collection
I’ve initiated and am leading a DevOps practice driven initiative to:
- Standardize metric format (OpenMetrics) and log format/location in our proprietary application stack (POSSE LMS), and
- Help Application Development teams to integrate instrumentation for metrics exposure.
- Architect & Build the Prometheus+Grafana and Elasticstack clusters to ingest and present the data.
- Drive adoption of the system across the organization, working with Tech Leads and Product Owners to build role-based access and relevant views for each team.
Smaller “glue” tools using Azure Functions, Azure Automation Runbooks, CI/CD pipelines, and PowerShell. These are hooked together to automate various IT functions across our infrastructure and use cases.
VueJS, jQuery, JS+TS
Python, NodeJS, Golang
ORM -> DB
AWS + Azure
Prometheus + Grafana
LaunchPad design, development, deployment, and management (See above).
- Planned and implemented a QR-code asset management system using LANSweeper. Produced procedures to ensure the system remains up to date.
- Deployed a network-based desktop imaging system, which improved our system onboarding and refresh time from a full day to a few hours.
- Deployed DUO two-factor authentication with our SSL VPN, significantly improving our security posture around remote access.
- Led a test pilot of Chef Server.