Python is my Swiss Army Knife, a versatile language that excels in a wide variety of use cases. Its ease of use lends itself well to rapid iteration, yet it has a considerable amount of power under the hood. I've used Python for web development, DevOps/Infrastructure as Code tooling, ETL processes, API wrappers, and more. For web development, I primarily work with Django and Django REST Framework, although I also have experience with Flask.
Rust is my new fave and current focus. While I am fairly new to the language, I am already enamoured with its focus on performance, memory safety, and concurrency. One of my current Rust projects is writing an NES emulator. I have plans for more Rust projects in the near-future.
JavaScript is an essential tool in my toolbox for web development and occasionally elsewhere. For web frontend development, I like React and Gatsby, along with Emotion for CSS. On the backend, I've occasionally found Node.js to be the right tool for the job, especially for certain use cases like WebSockets servers and serverless architecture. I've recently taken a shine to TypeScript, which I find makes it much easier to deal with some of JavaScript's pitfalls. This website is built with Gatsby, React, Emotion, and TypeScript.
Throughout my many years of working on software projects, I've also used a number of other languages. While these aren't languages that I find myself working with regularly, I have some past experience with them and occasionally encounter them in projects.
My focus in recent years has been on cloud-based systems, functioning as an architect, application developer, and SRE.
AWS is the cloud provider with which I've worked most extensively. I've used the vast majority of popular services, including EC2, S3, Lambda, and DynamoDB, among others. I've architected systems in AWS from the ground up, consulted on best practices and costs savings, and built custom managed services on top of AWS resources.
Linux has been a major focus of my work. I've worked almost exclusively with Linux-based systems for over a decade. I don’t have a strong preference between Debian- or Fedora-based servers, but I use Manjaro as my desktop daily driver. I've built Linux images in the cloud for sensitive production systems that incorporate best practices for security and performance.
Terraform is my primary tool for infrastructure management. I've built countless modules for deployments big and small, including complex multi-region deployments with network peering and high availability and security requirements. I've consulted on Terraform best practices and mentored developers to improve their Terraform usage.
Ansible is my primary tool for configuration management. My experience with Ansible includes writing numerous playbooks and roles as well as writing modules in Python. I often use Ansible in conjunction with Packer to provision machine images.
For monitoring and observability, I'm a fan of the combination of Prometheus and Grafana as well as AWS's CloudWatch service, including some of its more advanced features like X-Ray traces and Synthetics Canaries. I also have some experience with using the ELK/EFK stack for logging.
My architecture work includes design on managed services for distributed databases, SaaS applications, RESTful APIs, and more. I design with security, scalability, and extensibility in mind. I talk about my architecture work more in-depth in specific project write-ups and my blog.
While I prefer more hands-on technical work these days, I have handled technical project management duties in previous roles. My experience with managing software projects informs a "big picture" approach even when I'm getting my hands dirty deep in the stack, with a drive to produce shippable iterations that deliver incremental value.
I have extensive experience as a technical writer, winning praise for my clear and direct writing. I’ve written specs, developer documentation, end-user guides, and even a book-length course.