Technical insights and reflections on software engineering

From Kubernetes deep dives to Go programming techniques, from homelab experiments to career lessons learned - these writings capture my ongoing exploration of software engineering. Each article represents a problem solved, a concept clarified, or a lesson worth sharing.

Netboot.xyz efficient pxe booting

This guide will walk you through setting up netboot.xyz on any device with docker, utilizing the robust linuxserver/netbootxyz Docker image.

What is running in my homelab?

What is running in my homelab? This article explores the hardware, software, and networking configurations that make up my personal home lab, including advanced network setups with VLANs, automation with Ansible, and the use of netboot.xyz for OS management.

Homelabs: A Dynamic Hub Part 1

Exploring the world of homelabs, their benefits, and why they are essential for hands-on learning and experimentation in technology.

Handling errors in Go

Understanding how to handle errors in Go using Wrapping and Unwrapping errors, Is() and As() methods.

Kubernetes Service Types

Kubernetes offers a variety of service types to expose your applications. Each service type has its own use case and understanding them can help you choose the right one for your application needs.

What is Go profiling and why is it useful?

Have you ever wanted to dig deeper for explanations as to why your applications are bulking up on memory or the CPU spikes up? While monitoring tools tell that it is happening, you don’t know why. Profiling offers better insight into how your application interacts with CPU or memory.

Vault using Kubernetes Auth

This guide will walk you through how to configure Vault running on a Kubernetes cluster to exchange service accounts for a scoped client vault token. This can be useful when you want your services running on a kubernetes cluster to self auth against vault and not require the need to pass around vault credentials.

What Does Software Engineering Mean to You?

As I thought about the question and prepared my answer, I noticed something about the response I was going to give. If you had asked me this question earlier in my career I would have said something such as testing your code, building applications in a specific architecture, or building a highly scalable fault-tolerant widget. While these still hold true, they aren\

9 Tools I Used the Most During Software Development in 2021

As a software developer, I have a set of tools that I use on a daily basis. These tools help me be more productive, efficient, and organized. In this article, I will share the 9 tools I used the most during software development in 2021.

Kubernetes Deprecating Docker?! Let Me Explain Containers in Kubernetes

When you think of Kubernetes you think of containers. When you think of containers you think Docker. So it was a big surprise when, in December 2020, the Kubernetes maintainers announced that it would be deprecating Docker support for Kubernetes v1.20+. This caused quite a bit of concern and confusion.

Passing the CKA & CKAD

The Certified Kubernetes Administer (CKA) and Certified Kubernetes Application Developer (CKAD) exams may look daunting and intimidating. This is certainly what I thought and felt when I had scheduled my CKA and CKAD earlier this year. Even though I had prior experience working with Kubernetes I still wanted to prep myself for the exams accordingly.

What is Kubernetes?

Originally designed by teams at Google and released in 2014, Kubernetes is now officially maintained by the Cloud Native Computing Foundation. Kubernetes has quickly turned into the gold-standard of container orchestration for several reasons: the wide community support, the fact that it is cloud-agnostic (kind of… see more about plugins below), and it offers production-grade orchestration.

What makes a good API?

While a cup of coffee may seem like its two parts of hot water and coffee grinds there is much more to it. The same can be said for a well designed API. A good API does more then just taking input and returning output. It offers a few key items that make it enjoyable and easy to work with.

Understanding Kubernetes GVR

In Kubernetes, GVR stands for Group, Version, and Resource. It is a way to uniquely identify a resource type within the Kubernetes API. The GVR is used to specify the API endpoint for a resource, allowing users to interact with different versions of resources in a structured manner.

Private Container Registry on Kubernetes

This guide is meant to help you configure a private container registry running on your Kubernetes cluster that is backed by an S3 backend.

Traefik with Let’s encrypt and Docker

Traefik is a load balancer and HTTP reverse proxy that makes working with microservices and integrating with your infrastructure seamless. In this article, we will set up Traefik to route HTTP traffic to Docker containers and secure it with HTTPS using Let\

Deploy Kubernetes with kubeadm

A step-by-step guide to deploying a Kubernetes cluster using kubeadm on CentOS servers.

Json API errors with GO

A few months ago I was looking for a way to standardize error responses across my microservices. I found the Json API spec and it was exactly what I needed.