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.

Low latency Parquet reads

The Apache Parquet file format has become the de facto standard for large data systems but increasingly I find that most data engineers are not aware of why it has become so popular. The format is interesting especially when taken together with most cloud-based object storage systems, where some design decisions allow for subsecond or millisecond latencies for parquet readers.

Read more →

All about the gains

The discourse around “AI” has finally started to shift to a very key question: who are the winners and the losers? The fundamental thesis of shoving Large Language Models (LLMs) into everything is that it will increase productivity. Setting aside the question on whether those productivity gains are happening or even possible, the question of who reaps those rewards is starting to become a larger concern by software developers I follow.

Read more →

Good vibes only

I deploy on Friday. I have heard the arguments to the contrary and I still continue to deploy on Friday. The end of the week is as good as any other to deploy! Why wait another two days to realize the value or return-on-investment from the work I have queued up? I feel confident making this judgement call for two important reasons: I am confident in the success of the changes being deployed and I am willing to take ownership for when I’m wrong.

Read more →

Busily writing elsewhere

Writing has been a part of my work for a long time, it helps me think and more importantly it helps me share ideas with other developers. Recently a tremendous amount of my time has been spent writing internal design documents, blog posts, and other materials. By the time it has come to personal blogging my words all been spent.

Read more →

Lowering my TCO with battery power

I spend a lot of time looking at and optimizing costs, kind of for anything. I do it as part of my day job, I do it as part of my night job, and of course for my home life as well. Spreadsheets on spreadsheets tracking and analyzing, finding inefficiencies and opportunities for investment. In 2024 an opportunity presented itself to invest in a next generation home battery which I can now unequivocally say is a good investment.

Read more →

Quieting the server fans with ipmitool

Some recent changes to the primary server in my office left the fans running louder than previously. I do have some noise canceling headphones but I still don’t want to hear the sound of jet fans from the other room, with a little bit of free time I was able to nail down and correct the behavior using ipmitool(1) and magic bytes.

Read more →

Why aren't my pptdevs ready?

Whenever a system comes offline I try to always make multiple updates at once. When I recently received some new mounting hardware for one of my big FreeBSD servers, I decided to plonk an idle PCI-e device into the chassis while it was out of the rack.

Read more →

Distributed compilation with sccache

A colleague once told me about their boss whose office door decorated by a single 8x11 piece of paper with “speed wins” scrawled upon it. I didn’t even work for them and I find that motivating. I think about it a lot, particularly when I’m waiting for Rust builds to complete. Speed wins, every second counts, and “why is this so fscking slow!” all run through my mind as units are compiled and linked.

Read more →

rust-analyzer vs. the world

I have recently been on a quest to get more speed from my Rust development environment, and today’s “why is this so fscking slow!” culprit is rust-analyzer.A larger project like delta-rs benefits from IDE-like machinery to help work across a sprawling codebase written in Python and Rust. rust-analyzer helps greatly with that, but it comes with a speed penalty.

Read more →