Marvin Murithi

Packet Flow in the Linux Kernel

Networking is at the heart of modern computing, facilitating communication between systems and applications. While networking is often abstracted away by high-level APIs, the underlying mechanics—especially in the Linux kernel—are intricate and fascinating. This blog explores the journey of a packet through the Linux kernel, shedding light on both ingress (incoming) and egress (outgoing) packet paths.

read more

Demystifying DNS Resolution in Linux and Kubernetes

DNS resolution is a crucial aspect of Linux and Kubernetes environments. Understanding how DNS works in these systems can help you troubleshoot issues and optimize application performance. This article delves into the complexities of DNS configuration, highlighting best practices for managing DNS in Kubernetes.

read more

From Code to Knowledge: Using GitHub as Your Second Brain

GitHub, traditionally known for code hosting and version control, offers a versatile platform that can be harnessed as a powerful second brain. Imagine having a digital repository that not only stores your notes and ideas but also tracks changes, facilitates collaboration, and integrates seamlessly with your workflow.

read more

Understanding Linux Networking: Insights from Performance Observability Tools

Linux networking is a complex landscape, but understanding the right tools can help you navigate it effectively. This post explores essential tools like tcpdump, ethtool, ss, netstat, and ip to monitor, troubleshoot, and optimize your Linux network.

read more

Container Insights Part 2: Understanding netns for Network Isolation

In the dynamic realm of containerized applications, robust network isolation is paramount. Network Namespaces (netns), a cornerstone of container networking, provide this crucial layer of separation. By encapsulating a complete network stack – interfaces, IP addresses, routing tables – within a distinct namespace, netns empowers containers to operate with their own independent network environments.

read more

Container Insights Part 1: An Introduction to cgroups

Cgroups, a powerful Linux kernel feature, provide a fine-grained control over system resources. By organizing processes into hierarchical groups, you can allocate, limit, and account for resources like CPU time, memory, disk I/O, and network bandwidth. This guide will delve into the intricacies of cgroups, exploring their configuration, usage, and practical applications in containerization and resource management.

read more

Alerting on SLOs: A Modern Approach to System Reliability

As infrastructure complexity grows, SLOs help organizations focus on reliability metrics that impact users. Unlike traditional alerting, which can be noisy and arbitrary, SLO-based alerts are user-centric, aligning system health with real user experience.

read more

How to minimize docker image size

Creating efficient Docker images is a critical step in optimizing containerized applications. Bloated images can slow down deployments, increase storage costs, and expose unnecessary security risks. This blog explores best practices for minimizing Docker images, such as using smaller base images, leveraging multi-stage builds, and cleaning up unnecessary files. By following these strategies, you can create leaner, faster, and more secure containers, improving performance and scalability in your development and production workflows.

read more

What is a Container Image?

Container images are the building blocks of containerized applications. They are self-contained packages that include everything an application needs to run: code, libraries, configurations, and more. This blog post dives into the concept of container images, explaining their structure, naming conventions, and popular registries.

read more