Software Engineer | Committer2021 - PRESENTApache Software Foundation
Technologies: Java, JUnit, Mockito, Bazel, GitHub, TravisCI, Jenkins, Kubernetes, Docker, Testing, Concurrency, Sockets, Continuous Integration (CI), Design Patterns, Linux, gRPC, Debugging, GitOps, Git, Architecture, Software Design
- Created and documented features for Apache Heron, extending the ability to customize the Kubernetes execution environment. More information can be found in the project "Apache Heron" below.
- Split the executor and manager processes for each topology to reduce resource consumption.
- Added pod template support to completely customize a topology's execution environment.
- Allowed support for shared and per-pod persistent volumes via the CLI.
- Added the ability to restart topologies by implementing a Kubernetes container termination handler. The replica controller would then restart the containers.
- Created a comprehensive test suite for the Kubernetes scheduler.
- Isolated and fixed bugs, causing intermittent failures with Travis CI.
- Developed a functionality that is highlighted in the user documentation that I wrote. It can be found at https://heron.apache.org/docs/schedulers-k8s-execution-environment.
Software Engineer2015 - PRESENTFreelance
- Developed distributed systems using Go and Java with a number of different data storage technologies.
- Worked with large and complex code bases and began contributing to the production-grade code.
- Engaged in feature discussions with fellow engineers and researched technical details for the feature sets. I subsequently wrote design documentation for the new features and produced a plan to develop them incrementally.
- Designed and developed performant RESTful APIs following the OpenAPI specification. The APIs provide telemetry data, with some leveraging a caching layer with eager writes and lazy reads from a database.
- Deployed and managed microservices using Kubernetes with Docker as the container engine, where I keep configurations idempotent. I periodically used Puppet to manage and update configurations. I used Puppet when only configurations needed updating.
- Selected and configured monitoring and health metrics with Grafana and Prometheus as the data source.
- Tracked, monitored, and patched bugs in distributed systems using distributed tracing and logs. I worked with logging and log monitoring through the Logstash, Elasticsearch, and Kibana (ELK) stack.
- Ran and analyzed performance benchmarks to find bottlenecks and improve performance in the back-end services.
- Participated in schema design for NoSQL databases, most notably Apache Cassandra. My focus regarding Cassandra was on its tables, with a keen eye on performance.
- Engaged in schema design for SQL databases (PostgreSQL). I focused on schema data normalization, key and index selections, and query development (transactions and performance).
Software Engineer2005 - 2015Oil & Gas Industry Clients
Technologies: C++, Networking, Boost, Design Patterns, System Design, Debugging, Testing, Concurrency, Sockets, Databases, Linux, Architecture, Software Design, Leadership, Back-end, Back-end Development
- Developed and maintained software written in C++ that would scrape oil well data endpoints. The system would then serve raw and processed data and any generated reports.
- Engaged in feature discussions with engineers and researched technical details for the feature sets. I subsequently wrote design documentation for the new features and produced a plan to develop the features incrementally.
- Tracked bugs and developed fixes. Each bug would be followed by an update to the test suite and a short written report on the cause and remedy.
- Ran performance benchmarks to find bottlenecks and improve performance in the back-end services.