Engineer in Tokyo

TIL: October 8, 2025 - Weekly Reading: Programming and Kubernetes

Programming

  • Processes and ThreadsBen Dicken, PlanetScale

    A simple overview of the processes, how they are multiplexed on a CPU, how they use memory, and how they differ from threads. It’s a bit simplistic though and I didn’t learn much I didn’t already know.

  • Seven Years of FirecrackerMarc Brooker, AWS

    A retrospective on Firecracker, a lightweight virtualization technology developed by AWS for running serverless workloads. Marc mentions some areas at AWS where Firecracker is used including Bedrock AgentCore. While I’m partial to the process model that gVisor uses, VM-based isolation does make it easier to provide the container with access to hardware features like GPUs.

  • I replaced all my bash scripts with Python, and here’s what happenedJeff Butts

    Jeff describes his experience replacing bash scripts with Python scripts. He found that Python scripts were more readable, maintainable, and easier to debug than bash scripts. Bash can easily bake in assumptions into the program regarding available environment variables, path names, and available commands just to name a few.

    I think bash is often overlooked and written off as a programming language for accomplishing real work and the problems encountered are often skill issues. It’s great for wrapping other commands, running tests, etc. On the other hand, you should probably use a different language if you are actually writing business logic.

  • Building Statically Linked Go Executables with CGO and ZigJim Calabro

    Apparently cgo does allow you to build statically linked Go binaries in some cases. You can statically link a Zig library that uses the C ABI into a Go program.

    You need to specify the right LDFLAGS to get a fully static binary. Compiling a library that you can do this with can be tricky to get right with C libraries but is a bit easier with Zig.

Kubernetes

  • Inside kube-scheduler: The Plugin Framework That Powers Kubernetes SchedulingHeba Elayoty

    A detailed overview of the Kubernetes scheduler and its plugin framework. The article covers the architecture of the scheduler, how plugins are implemented, and an overview of the scheduling process.

    I wasn’t familiar with the concept of Pod “binding” in the scheduling process. This is apparently part of the scheduling framework that was added in Kubernetes 1.19. It seems that this can enable things like Dynamic Binding Conditions which delay binding the Pod to a Node until some required hardware is ready (e.g. a GPU).