From b7cd8a568d609186f8e09a49bed1b92856a1295c Mon Sep 17 00:00:00 2001 From: Tyler Hampton Date: Tue, 12 Sep 2023 23:16:59 -0700 Subject: [PATCH] changes --- go.mod => ci/go.mod | 0 go.sum => ci/go.sum | 0 ci/main.go | 2 +- resume.pdf | Bin 0 -> 38350 bytes resume.tex | 3 --- sections/experience.tex | 33 +++++++-------------------------- sections/hobbies.tex | 19 +++++++++---------- 7 files changed, 17 insertions(+), 40 deletions(-) rename go.mod => ci/go.mod (100%) rename go.sum => ci/go.sum (100%) create mode 100644 resume.pdf diff --git a/go.mod b/ci/go.mod similarity index 100% rename from go.mod rename to ci/go.mod diff --git a/go.sum b/ci/go.sum similarity index 100% rename from go.sum rename to ci/go.sum diff --git a/ci/main.go b/ci/main.go index 02aa743..266897d 100644 --- a/ci/main.go +++ b/ci/main.go @@ -11,7 +11,7 @@ import ( func main() { ctx := context.Background() - client, err := dagger.Connect(ctx, dagger.WithLogOutput(os.Stdout)) + client, err := dagger.Connect(ctx, dagger.WithLogOutput(os.Stdout), dagger.WithWorkdir("..")) if err != nil { panic(err) } diff --git a/resume.pdf b/resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a439bb139aa6175b0ae59035d2cd5f60a94d5853 GIT binary patch literal 38350 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 KDQRGSh4EjqZ-svV literal 0 HcmV?d00001 diff --git a/resume.tex b/resume.tex index 6c453eb..bb4db9c 100644 --- a/resume.tex +++ b/resume.tex @@ -53,10 +53,7 @@ % \photo[rectangle,edge,right]{./examples/profile} \name{Tyler}{Hampton} \position{Systems Engineer{\enskip\cdotp\enskip}SRE{\enskip\cdotp\enskip}Platform Engineer{\enskip\cdotp\enskip}DevOps Engineer} -\address{3883 Turqouise Way Apt 2205, Oakland CA, 94609} -\mobile{(+1) 424-259-2819} -\email{howdoicomputer@fastmail.com} %\dateofbirth{January 1st, 1970} \homepage{howdoicomputer.lol} \github{howdoicomputer} diff --git a/sections/experience.tex b/sections/experience.tex index 9d606db..b8fea04 100644 --- a/sections/experience.tex +++ b/sections/experience.tex @@ -54,10 +54,10 @@ \item {Wrote custom tooling around AWS ECS in Python to enforce draining nodes from tasks during abrupt scaling events} \item {Performed capacity planning in accordance with load testing results and metrics to right size capacity} \item {Embedded into application teams to assist them with the cloud-native architectural designs of their services} - \item {Designed cloud logging architecture utlizing FluentD, FluentBit, and logging sidecars for log ingestion over PrivateLink into Splunk} + \item {Designed cloud logging architecture utilizing FluentD, FluentBit, and logging sidecars for log ingestion over PrivateLink into Splunk} \item Wrote custom FluentBit plugins in Ruby to support generalized logging event patterns for applications running on ECS \item {Wrote Terraform module to abstract AWS Kinesis Streams and then assisted teams with a migration away from Kafka} - \item {Designed immutable infrastructure pipeline using Jenkins pipelines, Ansible playbooks, and Packer to produce AWS AMIs that fed into EC2 nodes within autoscaling groups} + \item {Designed immutable OS image pipeline using Jenkins pipelines, Ansible playbooks, and Packer to produce AWS AMIs that fed into EC2 nodes within autoscaling groups} \item {Wrote custom integrations for running GPU dependent tasks on ECS nodes in order to support complex topgraphical image generation} \item {Wrote CLI tooling in Go for Cloud Platform team to automate checking ECS clusters, interacting with internal HTTP endpoints, and more} \item {Extended and customized aws-azure-login Node.js application to support logging into accounts federated to AWS from Azure AD via SAML} @@ -65,24 +65,6 @@ \end{cvitems} } - %% \cventry - %% {} - %% {} - %% {} - %% {} - %% { - %% \begin{cvitems} - %% \item {Eliminated Nagios CPU bottleneck by retooling clusters to run PyPy} - %% \item {Wrote CLI tooling in Go for Cloud Platform team to automate checking ECS clusters, interacting with internal HTTP endpoints, and more} - %% \item {Designed and wrote an access system in Go and Terraform that created jumphosts scoped to a team and then synced SSH keys to them for internal network access} - %% \item {Replaced that SSH system with AWS Systems Manager when the product was releases in order to improve security and better integrate access control with IAM} - %% \item {Extended and customized aws-azure-login Node.js application to support logging into accounts federated to AWS from Azure AD via SAML} - %% \item {Co-designed a hub and spoke model that used AWS accounts as a security and management segregation layer for environments with Transit Gateway linking all of the environments together} - %% \item {Managed account creation process for dozens of AWS accounts} - %% \item {Heavily pushed for testing Infrastructure-as-Code by introducing and establishing testing patterns for Terraform modules and EC2 instance OS state} - %% \end{cvitems} - %% } - %--------------------------------------------------------- \cventry {Software Engineer, Infrastructure and Operations} % Job title @@ -91,12 +73,11 @@ {January 12. 2015 - May 23. 2016} % Date(s) { \begin{cvitems} % Description(s) of tasks/responsibilities - \item {Refactored and wrote Puppet manifests to converge data center localized hardware nodes to prepare them as Proxmox hosts} - \item {Co-designed with DBA a distributed file system storage array using Ceph} + \item {Authored and refactored Puppet manifests to converge data center localized hardware nodes to prepare them as Proxmox hosts} + \item {Co-designed a distributed file system storage array using Ceph to act as shared storage layer for Proxmox VMs} \item {Designed resilient high-availability MySQL cluster using Heartbeat to float a VIP between multiple masters} \item {Maintained several applications deployed via Proxmox as VMs that were converged via Puppet} - \item {Wrote a tool in Ruby that migrated Opower from FreeIPA to Active Directory} - \item {Designed and implemented Active Directory sync mechanism to Proxmox VMs via SSSD (System Security Services Daemon)} + \item {Wrote a tool in Ruby to migrate employee objects from FreeIPA to Active Directory} \end{cvitems} } @@ -122,9 +103,9 @@ {January 23. 2012 - January 10. 2014} % Date(s) { \begin{cvitems} % Description(s) of tasks/responsibilities - \item {Wrote a custom deployment web UI using Ruby and jQuery to integrate Chef, AWS EC2 nodes, and Haproxy to serve as the main deployment interface for ~100 engineers for a dozen of Java based microservices} + \item {Wrote a custom deployment web UI using Ruby and jQuery to integrate Chef, AWS EC2 nodes, and Haproxy to serve as the main deployment interface for over 100 engineers for dozens of Java based microservices} \item {Wrote Chef cookbooks that converged EC2 nodes so that they could run Java based applications} - \item {Rewrote the aforementioned deployment tool as part of a migration from AWS to a data center platform runnign VMWare VSphere} + \item {Rewrote the aforementioned deployment tool as part of a migration from AWS to a data center platform running VMWare VSphere} \end{cvitems} } \end{cventries} diff --git a/sections/hobbies.tex b/sections/hobbies.tex index 6033f8b..86acf23 100644 --- a/sections/hobbies.tex +++ b/sections/hobbies.tex @@ -1,21 +1,20 @@ \cvsection{Homelab} \begin{cventries} \cventry - {} + {A pseudo-relevant hobby that is like a second job} {} {} {} { \begin{cvitems} \item {Three nodes are a k3s cluster running on Raspberry Pis with MetalLB in layer2 mode to serve as a load balancer} - \item {The k3s cluster uses Ansible to converge an Ubuntu OS and the persistent volumes are satisfied by a consumer NAS} - \item {The fourth physical node is a consumer grade hardware box with prosumer hybrid drives in a ZFS mirrored pool. The node is named megamind.} - \item {Megamind's underlying operating system is NixOS} - \item {Megamind runs its services via Nomad, Consul, Vault} + \item {The OS for each k3s node is Ubuntu 20.04 converged with Ansible and the persistent volumes are satisfied by a consumer NAS} + \item {A fourth and primary physical node is a consumer grade hardware box with prosumer hybrid drives in a ZFS mirrored pool. The node is named megamind} + \item {Megamind's underlying operating system is NixOS and immutable deployments to the OS are done via deploy-rs and Nix flakes; failed state applies trigger automatic rollback to last OS state snapshot} + \item {Megamind runs applications and services via Nomad, Consul, Vault} \item {Individual applications are able to publish their metrics endpoints to Consul and then have their metrics collected via Prometheseus and displayed using Grafana} - \item {Cloudflare handles DNS with subdomains routing to specific services via Traefik} - \item {The host runs a dozen applications including custom Go and Elixir services} - \item {Changing OS state is done via Nix flakes and is immutable with seamless rollback on error} + \item {Cloudflare handles DNS with subdomains routing to specific services via Traefik; Let's Encrypt is used to provide SSL certs via the DNS challenge method} + \item {Homelab serves as a personal PaaS that Elixir and Go services are deployed to} \end{cvitems} } \end{cventries} @@ -29,7 +28,7 @@ {} { \begin{cvitems} - \item {Board games, rock climbing, science fiction and fantasy books, table top RPGs, programming} + \item {Board games, rock climbing, science fiction/fantasy books, table top RPGs, programming, 3D printing, guitar, electrical engineering/arduino} \end{cvitems} } \end{cventries} @@ -43,7 +42,7 @@ {} { \begin{cvitems} - \item {Bash, Nomad, Terraform, Python, Node.js, TypeScript, Kubernetes, k8s, Elixir, Nix, Docker, AWS, ECS, Helm, TCP/IP, Prometheus, Consul, Vault, Linux, Go, SaltStack, Ansible, Puppet, Chef, git, DNS, GCP, ZFS, Docker, SQL, Kafka, Grafana, cloud} + \item {Bash, Nomad, Terraform, Python, Node.js, TypeScript, Kubernetes, k8s, Elixir, Nix, Docker, AWS, ECS, Helm, TCP/IP, Prometheus, Consul, Vault, Linux, Go, SaltStack, Ansible, Puppet, Chef, git, DNS, GCP, ZFS, Docker, SQL, Kafka, Grafana, cloud, distributed computing, raft, Ruby, Dagger, bpf, JavaScript} \end{cvitems} } \end{cventries}