English Blog
All of my English posts. I write about technology, programming, and
containers, Kubernetes, and more.
-
posts
-
Bash is the best tool for the job
Bash is the black sheep of programming languages and yet every backend or DevOps engineer needs to deal with it throughout their career. It is hard to avoid. It’s always available on Linux servers and it’s often the best tool for the job. Like Bash itself, the things that it is best for are things that programmers need to do but that they habitually avoid. Automation, Continuous Integration, and project infrastructure come to mind as examples where engineers spend the least amount of time that they possibly can. A common thread is that Bash is often the best tool for... -
Do we need AI IDEs?
AI integrated development environments (IDEs) are all the rage. Cursor was one of the first AI-focused IDEs and emerged as a fork of VSCode. Kiro, another VSCode fork, was just released by AWS. Windsurf, yet another VSCode fork, recently had their top talent poached and sold the rest. Clearly, a lot of folks at AI companies thought striking it out on their own was a good idea. Many developers seem to be getting value out of these editors, but there also seems to be a fair amount of hype. All this activity has me thinking: What about AI necessitates having... -
Why I Left Twitter
It’s safe to say that Twitter has changed a lot from when I first started using it. When I first started using Twitter in 2008 it felt like an amazing tool for connecting with new people. Twitter made it easy to discover and connect with other tech folks and I found a new job through connections I made on Twitter fairly quickly after I started using it. I decided to leave Twitter in November of last year. For continuity’s sake, I decided to leave my account for a year before deleting it. It was a hard decision. This post is... -
A New Blue Check Mark, Just Like the Old One
Bluesky continued their trend of replicating X/Twitter’s features in a slightly different way and just released their new account verification feature. This seems like a pretty big milestone in the social network’s growth and a lot of the prolific members are talking about it. Folks are reacting to being some of the first people to receive one. Bluesky verified themselves. Kelsey Hightower was doped out. Steve Klabnik was tongue in cheek but got to the heart of the matter. A verification bot was created in record time. Most folks who received one are pretty happy about receiving their check mark... -
Zero Copy Readers in Go
The io.Reader interface is a small interface that defines a single Read method. Callers to a Reader implementation pass a byte slice which is then filled with bytes from the underlying source. This source could be a file, a network socket, etc. type Reader interface { Read(p []byte) (n int, err error) } However, this interface presents a challenge. It necessitates that the bytes from the source be copied into the byte slice which is given by the caller. In the case where the source is already in memory, it would be more efficient to allow the caller to read... -
Building APIs with Static Files
APIs are really useful for pulling in data from different sources for analysis in tools like Datasette or spreadsheets. However, APIs are often hard to build and often require writing specialized servers which then need to be deployed and maintained. What if this could be as easy as deploying a static website? I recently had the idea of creating a published API that was built much like static sites generated from static site generators like Hugo or Jekyll, where the data used to generate the site was tracked in a git repository. I also wanted to do this cheaply using... -
Rust First Impressions: Error Handling
For the 2024 edition of Advent of Code I decided to finally give Rust a try and implement the puzzle solutions in the language. Rust has been pretty stable for more than a decade so I suppose learning it was far past due. I want to write some of my first impressions of the language as much to help sharpen and collect my thoughts as much as to share them with others. I’ll also be coming at this mostly from the perspective of a Go programmer since that’s probably my strongest language at the moment. Given that I was mostly... -
Python Servers in the Year of the Snake: 2025
This year is the year of the snake in the Chinese Zodiac. Every 12th year is a bit of a special year for the Python community in Asia. For example in 2013, in the last year of the Snake, the theme for the PyCon JP conference was “The Year of Python”. This year is an especially good opportunity to reflect on the state of Python and how my relationship with it has changed personally over the last 12 years. Python has a very diverse community of academics, data scientists, DevOps engineers, security engineers, and many many others but one group... -
2025 New Year’s Resolutions
Berryman Political Cartoon Collection, Public Domain Now that 2024 is over I’ve been thinking about what kind of year I would like 2025 to be. The last few years since the start of the COVID-19 pandemic have been challenging in a lot of ways. I think that the pandemic affected me, and perhaps many other people, in ways that will take a while to unpack. Things have improved enough now that this year may be the year that I’ve felt most hopeful about the future. Hope, though, requires action to come to fruition and I want to reflect on the... -
Leaving Google
Today is my last day as a Google employee. After nearly 10 years working on the Google Cloud Developer Relations team, I’ve decided to step away and pursue other challenges. Before Google Joining Google in January 2015 seemed like a natural career progression. My first exposure to Google Cloud came in the summer of 2008 when I attended Google Developer Day. Google App Engine for Python was just released and it felt pretty special. It supported Python only, which was unusual at the time and this was a boon for the Python community in Japan. I attended a workshop to...