Blog

Blog Posts

Below is a collection of blog posts covering many topics of things I have learned and information aggregated over my career. Most of these started as personal notes I recorded for myself as I learned and gained experience. But, I had eventually gathered such a vast amount that I sought to formalize a handful of them into structured blog posts. Much of the content is things I wish I knew, or things I found that adequately explained various topics and concepts when I was learning. I wanted to not only formalize some of my notes, but also share so that perhaps it can help someone else in the event they happen to come across it.

Much of these blog posts are in the context of my career in Software Engineering, but I also have included many posts of things I have experienced or learned that can be applied to other fields, or life in general. For that reason, the blog posts are categorized into "technical" and "non technical" posts. The "technical" posts being topics directly related to Software Engineering (more specifically DevOps and SRE). And "non technical" posts being everything else - from leadership, soft skills, coding bootcamp and more.

Technical Posts

General Technical Posts
  • Subnetting and CIDR Notation
  • Networking
  • Data Structures and Algorithms
  • IP Forwarding
  • Proxy vs Reverse Proxy vs LoadBalancer
  • Terraform: Locals vs Variables
  • Kubernetes
  • Kubernetes Pod/ Node Networking
  • Kubernetes Architecture
  • Kubernetes Services
  • Kubernetes and Certificate Management: Cert Manager
  • Service Mesh
  • Understanding Istio's Networking APIs
  • Envoy In the Service Mesh
  • Automated Certificate PKI Infrastructure In A Multi Region / Multi Cluster Istio Service Mesh
  • Istio Traffic Management
  • Istio CA Certificate Rotation and Management: SPIFFE
  • ML and MLOps
  • MLOps: Where Machine Learning and DevOps Merge
  • Kubeflow: The Power of Machine Learning and Kubernetes
  • AI
  • AI, Generative AI, and LLM Fundamentals
  • Edge AI and Model Quantization
  • Non Technical Posts

  • Leadership: A Team Is Only As Good As Its Leader
  • Core Principals of SRE (Site Reliability Engineering) and SRE vs DevOps
  • Coding Bootcamp: Going In With a Mentality to Succeed
  • Career Progression: Adopting the Growth Mindset To Maximize Your Potential
  • Vision: Importance of Having a Purpose and How to Set Goals
  • Subnetting and CIDR Notation

    Classless inter-domain routing (CIDR) is a set of Internet protocol (IP) standards that is used to create unique identifiers for networks and individual devices. The IP addresses allow particular information packets to be sent to specific computers. Shortly after the introduction of CIDR, technicians found it difficult to track and label IP addresses, so a notation system was developed to make the process more efficient and standardized. That system is known as CIDR notation.

    READ MORE

    Networking

    Overview of a handful of networking concepts, tools, and components that are important to understand for any Networking, Infrastructure, DevOps, or Site Reliability Engineer.

    READ MORE

    Data Structures and Algorithms

    Collection of common and important programming data structures and algorithms, with explanations and code examples for each. Though, maybe not directly used in "day-to-day" coding of a software engineer, knowledge of these algorithms is helpful and useful. Especially during the interview process, where it is most common to be able to implement some variation of these.

    READ MORE

    IP Forwarding

    IP forwarding also known as Internet routing is a process used to determine which path a packet or datagram can be sent. The process uses routing information to make decisions and is designed to send a packet over multiple networks. Generally, networks are separated from each other by routers. IP forwarding is the ability for an operating system to accept incoming network packets on one interface, recognize that it is not meant for the system itself, but that it should be passed on to another network, and then forwards it accordingly.

    READ MORE

    Proxy vs Reverse Proxy vs LoadBalancer

    A more detailed look into the definitions of a Proxy, Reverse Proxy, and LoadBalancer the differences and distinguishing traits of each.

    READ MORE

    Terraform: Locals vs Variables

    Terraform locals are named values that you can refer to in your configuration. You can use local values to simplify your Terraform configuration and avoid repetition. Local values (locals) can also help you write more readable configuration by using meaningful names rather than hard-coding values. But what makes locals different from variables, and how do you know when to use locals or variables?

    READ MORE

    Kubernetes Pod/ Node Networking

    A look into the lower level networking components within Kubernetes, and how it all works and fits together to create Pods, Nodes, Services, and of course a Kubernetes Cluster; as well as how all these components communicate with each other and handle North/ South traffic (Ingress/ Egress), as well as intra cluster communication (East/West).

    READ MORE

    Kubernetes Architecture

    Kubernetes is an architecture that offers a loosely coupled mechanism for service discovery across a cluster. All components run as individual processes. A Kubernetes cluster has one or more control planes, and one or more compute nodes. Overall, the control plane is responsible for managing the overall cluster, exposing the application program interface (API), and for scheduling the initiation and shutdown of compute nodes based on a desired configuration. Each of the compute nodes runs a container runtime like Docker along with an agent, the Kubelet, which communicates with the control plane. Each node can be bare metal servers, or on-premises or cloud-based virtual machines (VMs).

    Kubernetes architecture is straightforward and intuitive. The loose coupling between control plane and node allows for nearly infinite flexibility and the ability for an application to scale out virtually instantaneously to meet changing needs, to migrate users to new builds, and to support migration from on-premises to cloud-based nodes or between multiple clouds to take advantage of desired features of each cloud provider. This blog post explores the various components and pieces that comprise Kubernetes and how it all works together in a Kubernetes Cluster.

    READ MORE

    Kubernetes Services

    A service in Kubernetes is a component just like a pod, but it's not a process, it's an abstraction layer that represents an IP Address. By creating a service, you now have a single and stable IP address and port that you can hit to access your pods. This address will remain unchanged throughout the whole lifetime of the service. Pods behind this service may come and go, their IPs may change, their number can go up or down, but they’ll always be accessible through the service’s single and constant IP address.

    READ MORE

    Kubernetes and Certificate Management: Cert Manager and OpenSSL

    High level overview of Cert-Manager, and open SSL. As well as Certificate Management within a Kubernetes Cluster using Cert-Manager and how it and the tool OpenSSL work.

    READ MORE

    Understanding Istio's Networking APIs

    To understand how Istio’s networking APIs work, it’s important to understand how requests actually flow through Istio. Pilot, as we learned in the previous chapter, understands the topology of the service mesh, and uses this knowledge, along with additional Istio networking configurations that you provide, to configure the mesh’s service proxies.

    READ MORE

    Envoy In the Service Mesh

    In a service mesh architecture, the Envoy proxy serves as the data plane, handling the actual traffic between services, while the control plane manages the configuration and policies for the data plane. Communication between the Envoy data plane and the control plane typically occurs over the xDS protocol.

    This communication between the data plane and control plane happens through a set of xDS APIs, such as the ADS (Aggregated Discovery Service), CDS (Cluster Discovery Service), LDS (Listener Discovery Service), and RDS (Route Discovery Service) APIs. The Envoy proxy uses these APIs to receive updates about the current state of the service mesh, and to communicate back to the control plane about its own state, such as metrics or health checks.

    READ MORE

    Automated Certificate PKI Infrastructure In A Multi Region / Multi Cluster Istio Service Mesh

    In my role as Lead DevOps Engineer, I operated as Tech Lead and key contributor in architecting, building, managing, and rollout to multiple environments of a multi-cluster / multi-region Service Mesh within our fairly large enterprise scale Kubernetes ecosystem; comprised of over 30 Kubernetes clusters across multiple cloud providers.

    As Tech Lead, a crucial task was properly designing the networking architecture of the Service Mesh network topology; ensuring reliability, redundancy, and security. In order to fulfill the task of reliability, automation through code, and most importantly security, I designed and built a custom - first if its kind - PKI Certificate architecture which implements and automates short lived mTLS certificates for the Istio Service Mesh. This architecture is now widely known an used, and has even been improved upon by other companies and vendors.

    Implementing this architecture was one of the greater challenges of my career, and in this blog post I want to share the architecture myself and my team implimeted, how it works, as well as the challenges we faced in route to rolling it out to production.

    Note: Still a work in progress.

    READ MORE

    Istio Traffic Management

    To understand how Istio’s networking works, it is important to understand how requests actually flow through Istio. Pilot, the Istio Control Plane, understands the topology of the service mesh, and uses this knowledge, along with additional Istio networking configurations that you provide, to configure the mesh’s service proxies.

    READ MORE

    Istio CA Certificate Rotation and Management: SPIFFE

    Identity forms the boundary of a service mesh. Identity is a fundamental function of a service mesh in that all communication stems from identity. Traffic steering and telemetry functions of the service mesh rely on an understanding of how to identify services. Without knowing what you’re metering, metrics are useless data. Istio implements the Secure Production Identity Framework for Everyone (SPIFFE) specification to issue identities.

    READ MORE

    MLOps: Where Machine Learning and DevOps Merge

    The primary purpose of DevOps is to increase the speed and quality of software development by also reducing costs. DevOps combines software development and information technology operations to shorten the time it takes to deliver customer features and updates. MLOps is applying the DevOps guiding principles to Machine Learning, and once a clear understanding of organizational goals for using machine learning are established, strategies and structure can be developed to support ML models.

    READ MORE

    Kubeflow: The Power of Machine Learning and Kubernetes

    Kubeflow is a collection of cloud native tools for all the stages of MDLC (data exploration, feature preparation, model training/tuning, model serving, model testing, and model versioning). Kubeflow also has tooling that allows these traditionally separate tools to work seamlessly together. An important part of this tooling is the pipeline system, which allows users to build integrated end-to-end pipelines that connect all components of their MDLC.

    Kubeflow is both for data scientist and data engineers looking to build production grade machine learning implementations. It provides a unified system leveraging Kubernetes for containerization and stability, and for the portability and repeatability of its pipelines.

    READ MORE

    AI Fundamentals

    High level overview of fundamental concepts in AI, Generative AI, LLMs, RAG, and Neural Networks.

    READ MORE

    Edge AI and Model Quantization

    Model quantization bridges the gap between the computational limitations of edge devices and the demands for highly accurate models and real-time intelligent applications. In addition, also bridges the gap of deploying highly accurate models for faster, more efficient, and more cost-effective edge AI solutions. Breakthroughs like generalized post-training quantization (GPTQ), low-rank adaptation (LoRA), and quantized low-rank adaptation (QLoRA) have the potential to foster real-time analytics and decision-making at the point where data is generated.

    Edge AI, when combined with the right tools and techniques, could redefine the way we interact with data and data-driven applications.

    READ MORE

    Leadership: A Team Is Only As Good As Its Leader

    Working as both IC and a team lead, I hold myself accountable for creating solutions that enable myself, those around me, and my team to fall into the pit of success. I have come to have the opinion that there are some misconceptions about what it means to be a "Lead" on a team (that being Team Lead, Tech Lead, Manager, Staff, Principal, or any other of the various titles).

    I believe a team is only as good as its leader, and the leader must own everything in his or her world. This means having the awareness and humility to step out of the mindset of "10x engineer" and into "10x multiplier". This means enabling the team and those around you for success, consistently working towards building a better and more effective team, and ownership in driving projects corresponding to business objectives consistently and effectively to completion.

    READ MORE

    Core Principals of SRE (Site Reliability Engineering) and SRE vs DevOps

    There can be a traditional separation between DevOps and SRE, and the lines can be blurred between the two. In addition, and depending on the company, DevOps and SRE can mean slightly different things. So what truly is SRE, what are the core principals, and how does it differ from DevOps?

    Forty to ninety percent of business costs come after birth or after the creation of something, but most of the effort is put into before something is created. However, what happens after? That is where SRE comes in. Site Reliability Engineers are Software Engineers who's focus is on that forty to ninety percent, and are cross functionally Software Engineers, but geared towards business objectives, goals, and saving costs.

    In the traditional sense, and what Google had in mind when they created the role of SRE - DevOps was to be thought of as a philosophy, and SRE as a prescriptive way of accomplishing that philosophy. Implementing the developer mindset, workflows, tools, etc...and applying them to the operations world. Under this definition, DevOps is like "What to do", and SRE is like "How to do".

    However, as mentioned this "traditional" definition of SRE can be blurred with DevOps, and can vary depending on where you go and who you talk to. Since its inception, SRE has evolved to encompass many different meanings and responsibilities. But, the core principals and reason for its creation, many of which overlap with DevOps, still hold true - which is to solve the pain point of infrastructure that you continually roll changes out to. At its core, the objective is to create reliable, redundant, fault tolerant, immutable infrastructure using infrastructure as code and a set of guiding principals, standards, and workflows. This of course with the understanding of working closely with both developers, and operations.

    READ MORE

    Coding Bootcamp: Going In With a Mentality to Succeed

    If you are trying to make a career switch and break into the tech industry, you may have many questions on how best to do it. You may also have heard of coding bootcamps, and be asking yourself is a bootcamp needed? Coming from being a professional drummer, then working in the Music Business a eventually becoming a Data Analyst and starting to teach myself how to code, attending a coding bootcamp and making a career switch into Tech is the path that I chose. If others are thinking of or deciding to do the same, I want to share what I did to prepare, and based on my experience, what I think will set someone up for success.

    My aim is to go into detail as to how to prepare to get the most out of a bootcamp, so that you don't waste your time (and money), and most importantly, enjoy it! In addition, how to differentiate one's self and stand out so there is the best chance possible of landing a desired job when the bootcamp is complete.
    Finally, I want to share my mindset going into, during, and after bootcamp, and setting realistic expectations as to finding a job after bootcamp. It is a lot of work, and a lot of non glamorous work such as making sure your resume, website, linkedin, projects, interviewing skills, etc..are as good as they can be. But, it is work that creates a stable foundation that will pay dividends as you embark on a new and exciting journey.

    READ MORE

    Career Progression: Adopting the Growth Mindset To Maximize Your Potential

    Growth Mindset is defined as, the process of distancing your identity from your performance and rather attaching your identity and efforts and your sense of motivation to effort itself - and to the process of enjoying learning and getting better at learning anything".

    Adopting this mindset can help maximize our potential, and set us up for success in many areas of life.

    READ MORE

    Vision: Importance of Having a Purpose and How to Set Goals

    We all know it is important to have goals and a plan if you want to achieve said goals. But how important is it, and does it really make a difference? And what if you don't have goals, because you lack a vision or purpose? Or, have goals but don't know how to get started? These questions are all things I have asked myself at one time or another, and want to share what I have learned in my experience as someone who knows how to set and achieve goals.

    In my experience, the answer is yes, it absolutely is important to set goals for yourself. It is paramount if you seek forward progress in whatever in life. While nothing is guaranteed, it is crucial that you do everything within your power to maximize the chances of whatever goal become a reality. This starts with developing the toolset required to set and achieve goals. Mind you, this is a toolset most people don't possess. At its core fundamental level, this toolset is rooted in discipline and delayed gratification.

    But also includes deliberate and strategic planning, which forms a vision, and that vision gives you purpose. Purpose then drives your actions and gives you the discipline to stick with it, when things inevitably get hard.

    It may sound cliche, but I do believe that is not so much about the end result, it is about who you become in the process. Once the toolset for setting and achieving goals is developed, it will change the way you think about yourself, the world around you, and what you thought possible for yourself.

    READ MORE