I am Tom Carrio, a software engineer      
with a passion for Open Source <3
::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:

::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.

/** projects and contributions */

hashicorp/

packer

Go

Packer is a tool for creating identical machine images for multiple platforms from a single source configuration

dynatrace/

serverless-oneagent

TypeScript

Serverless Framework plugin to include Dynatrace OneAgent in serverless deployments

gogs/

gogs

Go

Gogs is a painless self-hosted Git service

~tcarrio/

dialogflow-as-code

TypeScript

Declarative management of Dialogflow resources in Google Cloud

github/

hub

Go

A command-line tool that makes git easier to use with GitHub

@dynatrace/

api-client

TypeScript

Module for interacting with the Dynatrace API including caching support

go-gitea/

gitea

Go

Git with a cup of tea, painless self-hosted git service

DefinitelyTyped/

DefinitelyTyped

TypeScript

The repository for high quality TypeScript type definitions

lutris/

lutris

Python

Open Source gaming platform for GNU/Linux

tcarrio/

dynamodb-local-debugging

Docker

DynamoDB Local container ready for development with debug logging

roddhjav/

pass-import

Python

A pass extension for importing data from most of the existing password manager

tcarrio/

dddd

Go

Dynamic DNS for Cloudflare using DuckDuckGo's Answers API
Technologies and Experience

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