I have always been a technology scavenger, picking up cheap or disused computers for parts or tinkering. Last year when I picked up a full-height server cabinet, a new world of rack-mountable junk finally became possible! One lucky Craigslist find ended up being an older 2U IBM xSeries server with 8 drive sleds that was described as “sorta working” by the owner, who was shedding some extra stuff for his move across the country. I accepted the challenge, forked over a few Jacksons, and brought the machine home.
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.
A large language model is not a good co-pilot
Large language models (LLMs) seem to only be good at two things: summarizing text and making up bullshit. The idea that a general purpose LLM is going to herald a new age of software development efficiency is misleading in most cases bordering on malicious. While there are a number of other recommendations or predictive machine learning models which can improve software development efficiency, LLMs propensity to generate bullshit undermines trust in a way that makes me question their validity at baseline as a software development tool.
Improving lock performance for delta-rs
I have had the good fortune this year to help a number of organizations develop and deploy native data applications in Python and Rust using a project I helped found: delta-rs. At a high level delta-rs is a Rust implementation of the Delta Lake protocol which offers ACID-like transactions for data lake use-cases. One of the big areas of my focus has been in evaluating and improving performance in highly concurrent runtime environments on AWS.
Solving a FreeBSD Jails issue: interface already exists
For a long time after I rebuilt my jails host, I could not restart a certain number of jails due to an “interface already exists” error. For the life of me I could not make sense of it, The services running in the jails were useful but not required so I put off tinkering with it. I thought that I would magically stumble into the solution in my sleep or something equally silly.
Hashicorp Nomad, almost but not quite good
My home office has grown in size and for the first time in decades I believe I have a surplus of compute power at my disposal. These computational resources are not in the form of some big beefy machine but a number of smaller machines all tied together by a gigabit network hiding away in a server cabinet. The big problem has become how to effectively utilize all that computational power, I turned to Nomad to orchestrate arbitrary workloads on static and ephemeral (netboot) machines. As the title would suggest, it’s almost good but it still falls frustratingly short for my use-cases.
Why we re-export symbols from other libraries in Rust
Dependency management in the Rust ecosystem is fairly mature from my perspective, with crates.io, Cargo, and some cultural norms around semantic versions, I feel safer with dependencies in Rust than I have in previous toolchains. It’s far from perfect however, and this question helps highlight one of the quirks of how Rust dependency management does or does not work, depending on your perspective:
Dynamically forwarding SSH ports with "commandline disabled"
I frequently use SSH for accessing one of the many development workstations I
use for work, which includes developing network services among other things. A
couple of years ago I wrote about this hidden gem in ssh
which allows
dynamocaily forwarding ports.
This handy little feature allows dynamocailly adding local port forwards from within an already running SSH session. Recently however this feature has stopped working properly, emitting commandline disabled
.
Requiring non-default features to be set in Rust
I found myself refactoring a Rust crate in which I had two non-default features
but at least one would need to be set in order for cargo build
to function.
Cargo allows a default
feature set, or allows different targets to have
required-features
defined. My use-case is different unfortunately, I wanted slightly different
semantics to support either s3
or azure
features. I stopped by ##rust
on libera.chat and as usually happens, got a nudge in
the right direction: build.rs
:
AIDS/LifeCycle 2023 is a go!
I am really excited to be officially in for AIDS/LifeCycle 2023! This will by my third year supporting the life-saving services offered by San Francisco AIDS Foundation and the Los Angeles LGBT Center by riding from SF to LA with AIDS/LifeCycle.. This past 12 months has been among the most stressful and rewarding in my adult life, so I’m doubly excited to have the support of so many friends and fmaily. In the next month I’ll continue fundraising to try to meet my goal, and would appreciate your help too!
Invalid signature in boot block on FreeBSD
I don’t have a lot of opinions about
UEFI, but it
seems that building something as critical as booting around the FAT32
filesystem is not a great idea. FAT32 is a simple but archaic filesystem which
has the resiliency of a paper boat. While moving machines around in my homelab
this weekend I was bit by that resiliency as halfway through booting my FreeBSD
NAS it complained that it could not complete fsck
operations: Invalid
signature in boot block: 0000
.