What is this? Well, this is likely to a long and rambling deep dive in to a very broad topic, Networking. Yes, that is a big topic... and I expect it to be a multi-year project. The posts on this blog serve to document the journey but also force me to distill down big ideas.
My Background
Before going any further I’ll give you a quick overview of where I am and what my background is to serve as an idea of the starting point of this journey. My work history is a bit meandering, but at a high level I graduated from college with majors in accounting and economics and worked in financial and strategic planning in the non-profit space for about 5 years before making the transition to tech.
- 2014: Started at the Turing School of Software and Design in Denver, a 6 month full-time program that focused on full-stack web development using Ruby and Rails.
- 2015: Joined a startup in Denver that grew from ~30 to over 150 employees during my 4 years there. Full-stack and API development (mostly Ruby/Rails still)
- 2017: Moved to a newly formed platform team at the company where my focus became much more back-end focused. Developed service strategy and frameworks and worked with teams to abstract services from core monolith. Moved to Cloud Native stack (Go/gRPC/Docker/Kubernetes/Prometheus/Grafana/etc.).
- 2019: Joined unicorn startup in Denver. Rebuilt data ingestion pipelines. Typescript/Lambda stack.
- 2020: Accepted new job at a large cloud provider (starting in two weeks).
Maybe that helpful, maybe it isn’t, but it’s mostly intended to show that I don’t have a CS degree and I’m not a systems level or network engineer. I’ve spent my fair share of time debugging tough DNS issues, I’ve worked on setting up reverse proxies and API gateways, and I’ve rebuilt my home network a few too many times, but all of those have been learn as you go situations without the foundational understanding of what was really going on under the hood. This work is intended to build a deep foundation.
Roadmap
Not having an existing foundation in this arena, it’s hard to pinpoint exactly where this is going to go, so this will likely be meandering, but roughly here’s kind of where I’m thinking I will go:
- Computer Networks 5th Edition
- The idea here is get a baseline foundation, going chapter by chapter deeply learning that material in this book. This will likely involve a lot of side tracks for areas that I don’t have a good understanding of and I hope to do deep dives on sub-topics.
- Home networking tutorials
- To put information in to context I will use my home network and small (Proxmox based) home lab to publish tutorials.
- Networking tool deep dives
- nmap, netcap, tcp-dump, etc.
- Linux/VM networking
- Docker Networking
- Building network primitives
- Open source, step-by-step builds of key network services (load balancers, routers, port scanners, DNS servers, etc.)
- Kubernetes Networking
- Cloud Networking solutions
- AWS, GCP, Azure, DO, etc.
The final result here may end up looking nothing like this, but this is my extremely novice list of topics to dive in to (I’m sure this will be funny/interesting to look back at further down the road).
The main goal of all of this is knowledge for knowledge’s sake. Networking is an area that’s always been interesting to me, though one I know very little about, and is ultimately at the core of ‘The Cloud’. While this isn’t job related in the least, one thing that will guide the topics towards the later ends of this process will be job descriptions for software engineers on networking focused teams as that is likely where the industry is at and reviewing them will help me understand my blind spots (samples: [1], [2], [3], [4]).