::Hello, World::
Architecting, designing, and implementing software systems is a strong professional and personal interest of mine. Whether I'm working on cloud, containers, systems; I love to dive into the technical deep-end of various areas of the tech space.
My experience engineering solutions spans the full stack: from system and database administration, to microservice development, to dev-ops and continuous delivery, to single-page applications, to container orchestration, to mobile apps, to automated infrastructure management. My focus lately has been on end-to-end holistic solutions engineering, and embracing every facet of the tech stack.
::System and Database Administration::
Through my experience as a system and database administrator, I found an area I truly loved. From 2013 I worked with database systems including Oracle DB and MySQL, and maintained virtual machines across multiple server racks with VMWare ESXi to provision Windows Server and RHEL machines. There were various areas of my role that I found could prove more effectively managed by developing automated maintenance strategies; I touched down on automated backups and log monitoring for internal services as my first step towards development. This is where my interests in software engineering really grew.
While I maintained my position as a system adminstrator and database administrator, I sought out and implemented automation tooling around common tasks to reduce toil. I worked on internal services that would allow for easier work on the intranet, be it servers, hardware devices, and more. These include, but are not limited to, Python management services and backends, Active Directory hooks in Go, and web clients in Javascript. The road unfolded and I enrolled in Computer Science at Oakland University to continue my journey.
::Open Source::
I have long been a lover of the open source mantra and free software technologies such as Linux, GNU, and Git. Prior to my work as a system and database administrator, I dug into Linux for my personal devices. Experimenting with various tools and technologies is a long-time hobby of mine, and I tried different server operating systems such as CentOS, Debian, and Ubuntu. I started off with Linux on my old shabby laptop with Fedora, and tried out a number of distributions over the years. By the way, I run Arch.
::Computer Science::
Through-out my schooling I have studied computer theory, software engineering, networking, operating systems, programming languages, and more. The curriculum alone was never really enough, and I spent time outside of school learning about various technologies like message queues, distributed systems, and containerization technologies like Docker. The premise of a kernel-level feature like cgroups providing strong mechanisms for isolated process environments was fascinating to me, and I found another interest then: DevOps. Having already worked for years as a system administrator and understanding the areas where automating functionality was hugely beneficial, I focused projects on more software around these practices. I contributed to open source software around version source control, and built out complete DevOps pipeline solutions implemented with distributed containerized systems. I provided a similar solution at my work to deliver a more up-to-date service for our development team.
::Software Engineering::
Eventually I moved into a software engineering role, and joined Ally Financial in 2017. During my time there I worked on several projects. My first work was a project undergoing a migration from mainframe, where we envisioned a complete re-architecture of our central mainframe program into a massive series of microservices, batch operations, message queues, and COTS services. I designed security software for compliance with the Sarbanes-Oxley Act, developed data pipelines with DataStage, and engineered various utility services to assist our business analysts with requirements. In 2018 I later joined on a legacy application, working with J2EE and Struts with deployements to mainframe. I worked on quarterly releases and helped provide insight into automation technology and future steps for our digital transformation roadmap. Later on in 2018, I moved on to a project deploying to the OpenShift containerization platform, developing services that provided massive parallel operations and data processing. I worked with Spring Boot microservices with Redis as a cache for MapReduce operations. I also encorporated log monitoring with Splunk and AppDynamics for application performance monitoring. I was requested to join another team end-of-year 2018 and began work on my last project at Ally. I worked on Spring Boot microservices with an Angular front-end. I worked across the entire stack, developing Jenkins pipelines for continuous integration and delivery, implementing back-end services in Java, engineered our service authentication for our Docker containers, developed Helm templates for our OpenShift deployments, and architecting our performance-first lazily-loaded Angular front-end.
::Full Stack::
I eventually left Ally in 2019 to join Dynatrace, a company at the forefront of distributed tracing and application performance monitoring. Today, their solution provides users actionable insights into their production environments across mainframes, back-end, front-end, mobile apps, websites... My initial role at the company was on the Davis Assistant team, which provides a virtual assistant that interfaces with customers via a web application, voice integrations with Google Assistant and Alexa, and multi-user integrations with Slack and Microsoft Teams. My work there has included several projects I have been fond of, such as:
- Re-architecting the notification pipeline to provide reactice, robust, and resilient notification deliveries for handling various error scenarios
- Engineering an extensive pipeline to automatically ensure code complies with our unit tests, builds and minimizes bundles for efficient service deployments
- Implementing the Microsoft Teams third-party integration for direct and multi-user messaging with our natural language processing back-end and Teams native tabs with React
- Created the Dialogflow-as-Code project which provides declarative management of Dialogflow resources on the Google Cloud Platform to maximize our teams velocity of NLP enhancements, provide static type safety to our internal NLP resources, and automate deployments through environments in my continuous delivery pipeline
::Teamwork::
I love to dive deep in whatever area I work in, whether I am designing Docker containers or writing web applications, but I always provide feedback and help whenever my peers are in need. I also serve as my teams Scrum Master to faciliate meetings, resolve task estimates, and ensure the team grows together while working to enhancing our sprint velocity and stability.
::So, Me::
I am extremely passionate in engineering solutions around complex problems, automating redundant operations, writing code, bringing users great experiences, reducing toil, and implementing practices that keeps my phone from buzzing in the late hours of the night.
Containers and Orchestration
OpenShift, Docker, ECS, Compose, Kubernetes
Programming Languages
TypeScript, Java, Groovy, Go, Python
Web Development
Angular, Sass, Webpack, CSS3, HTML5
Service Development
Node.js, NestJS, Spring, REST, GraphQL
Databases
PostgreSQL, Oracle DB, MySQL, MongoDB
Infrastructure and Networking
Nginx, Etcd, Terraform, Packer, Packer, Ansible
Message Queues, PubSub, and Stream Processing
IBM MQ, SQS, Redis, Kafka
Software Development Lifecycle and Source Control
Scrum, Agile, Bitbucket, Git, GitHub, SVN
Unit Testing
Jest, Mockito, JUnit, Mocha
Integration Testing
Selenium, Cypress, Gherkin
Continuous Integration, Delivery, Accessibility, and Security
Jenkins, Blackduck, Drone, SonarQube, Lighthouse
Observability and Monitoring
Dynatrace, OpenTelemetry, Prometheus, Zipkin
Logging
Splunk, Log4j, Pino, CloudWatch
Serverless
Lambda, Serverless
Data Processing
IBM DataStage, Python, Hadoop