Howdy!

Welcome to my blog where I write about software development, cycling, and other random nonsense. This is not the only place I write, you can find more words I typed on the Buoyant Data blog, Scribd tech blog, and GitHub.

Enforcing administrative policy in Jenkins, the hard way

One foggy morning a few weeks ago, I received a disk usage alert courtesy of the Jenkins project’s infrastructure on-call rotation. In every infrastructure ever, disk usage alerts seem to be the most common alert to crop up, something somewhere is not properly cleaning up after itself. This time, the alert was from our own Jenkins environment. The logging filesystem wasn’t the problem, the filesystem hosting JENKINS_HOME was perilously close to running out of space. The local time, about 6:20 in the morning, and yours truly was quietly furious at the back of a bus headed into San Francisco for the day.

Read more →

Transparently supporting external Artifacts in Jenkins

One of the first pain points many organizations endure when scaling Jenkins is the rapid accumulation of artifacts on their master’s filesystem. Artifacts are typically built packages such as .jar, .tar.gz, or .img files, which are useful to persist after a Pipeline Run has completed for later review as necessary. The problem that manifests over time, is quite predictable, archived artifacts incur significant disk usage on the master’s filesystem and the network traffic necessary to store and serve the artifacts becomes a non-trivial problem for the availability of the Jenkins master.

Read more →

Google Hangouts is dead, long live Google Hangouts

In this post I would like to share a handy little workaround for returning to Google Hangouts, despite Google Meet. Having narrowly escaped working at Google via acquisitions twice, I have stood by and watched as the Ad Words money-pipe funded rewrite after boondoggle after rewrite. When Google announced “Google Meet” earlier this year as an “enterprise-friendly version” of Google Hangouts, I was annoyed, but not surprised.

Read more →

Implementing Virtual Hosts across Namespaces in Kubernetes

After learning how to build my first terrible website, in ye olden days, perhaps the second useful thing I ever really learned was to run multiple websites on a single server using Apache VirtualHosts. The novelty of being able to run more than one application on a server was among the earliest things I recall being excited about. Fast forward to the very different deployment environments we have available today, and I find myself excited about the same basic kinds of things. Today I thought I would share how one can implement a concept similar to Apache’s VirtualHosts across Namespaces in Kubernetes.

Read more →

Running tasks with Docker and Azure Functions

Months ago Microsoft announced Azure Container Instances (ACI), which allow for rapidly provisioning containers “in the cloud.” When they were first announced, I played around with them for a bit, before realizing that the pricing for running a container “full-time” was almost 3x what it would cost to deploy that container on an equitable Standard A0 virtual machine. Since then however, Azure has added support for a “Never” restart policy, which opens the door for using Azure Container Instances for arbitrary task execution.

Read more →

Call for Proposals: Testing and Automation @ FOSDEM 2018

2018 will be the sixth year for the Testing/Automation dev room at FOSDEM. This room is about creating better software through a focus on testing and automation at all layers of the stack. From creating libraries and end-user applications all the way down to packaging, distribution and deployment. Testing and automation is not isolated to a single toolchain, language or platform, there is much to learn and share regardless of background!

Read more →

This is your reality now

The traffic on the Bay Bridge connecting San Francisco to Oakland is one of the most congested routes of traffic in all of Northern California. Somehow it gets even worse on Saturday and Sunday. One weekend, a few years ago, I was driving my wife and some of the women from her soccer team back to Berkeley, from a game in San Francisco’s Golden Gate Park. On the east side of the bridge, before inching onto I-580N, I was pretty pissed off, and half-joking half-frustrated shook back-and-forth at the steering wheel “GAHHHHHHHHHHHH.” The woman sitting behind me, who was certainly the “funny one” of the group, put her hand on my arm and gently said “Tyler, this is your reality now.”

Read more →

Watching fire come down the mountain

The insanely strong gusts of wind would not stop clattering the tin roof panels over the back patio. Begrudgingly, I awoke, dressed, and tried to secure the roof panels before the neighbors got too ornery. Stepping up the ladder, I noticed an orange glow north of the house. Just after midnight, I had not heard any sirens, I jumped into the car on the assumption that one of those houses by the park was burning and had not yet been reported.

Read more →