A bit of belated news but thanks to all the advocacy work we have been doing at Scribd_ I am now a Databricks Beacon. The Beacon program is similar to Docker Captains, Microsoft MVPs, or Java Champions, a group of folks who are considered both skilled with the technology and in communicating/sharing best practices, tips, and short-comings with the broader community.
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.
Gearing up for AIDS/LifeCycle 2022
Last time around I didn’t train well enough, got sun blisters on my lips, and broke my bike. This time around I could not be more excited for AIDS/LifeCycle to be back for 2022. The goal of AIDS/LifeCycle is to raise funds for the San Francisco AIDS Foundation and Los Angeles LGBT Center, both of which provide numerous critical services to their respective communities. For my inaugural year in 2019 I was incredibly fortunate to raise over $6,000 and this year I am shooting for $10,000. I am also training a lot more intelligently this time around, I’m aiming to have a great time in 2022 and a strong mind and body will be key to that!
The cost of power in northern California
From my perspective one of the most important steps to address climate change is investment in cleaner power generation. Imagine my displeasure when I started doing the math on some of my recent power bills. Where I live Pacific Gas and Electric (PG&E) is the predominant utility company but fortunately I am also able to purchase electricity from Sonoma Clean Power. Nevertheless, I still receive a bill from PG&E which is the owner/operator of most if not all of the transmission and generation capacity in the region. In Northern California there is no love lost for PG&E, which has been found responsible for negligence leading to numerous wildfires, gas pipeline leaks, and explosions. Much of this negligence has been due to postponing of forfeiting maintenance in order to recognize higher profits. To add insult to injury, it seems like they skim a healthy margin off of residential producers/consumers as well.
How sudo gets root
Today I fell into a rabbit hole around user and process
permissions and had to learn how sudo
actually worked. For the program I was
working on I set out to figure out how to perform something akin to a “user
swap” when launching subprocesses. On its face it seems simple enough, my
program runs with user id 1000
and I wish to shunt child processes over to
run as another user id. sudo
can do it, so why can’t I? “For reasons” is the answer.
Creating CRUD applications in Rust
For some recent web application projects like dotdotvote and riverbank I reached for Tide and built them in Rust. I have a lot of reasons for liking Tide, not the least of which is that it is reminiscient of Sinatra in the Ruby ecosystem. Perusing the internet today I noticed this really great blog series by Javier Viola which will walk you through the full process of developing a real application with Tide.
Accessing Handlebars variables in an outer scope
This weekend I learned some unfamiliar behaviors with the way Handlebars
handles nested variable scopes. I typically use Handlebars via the
handlebars-rust implementation
which aims to maintain nearly one to one compatibility with the JavaScript
implementation. They have block scope helpers such
as #each
and #with
, both of which create an inner scope for variable
resolution. Unfortunately, the syntax can be quite unintuitive for accessing outer
scope once in those nested scopes.
Finally figured out those inline Rust errors
Vim can be used as an IDE of sorts for Rust by using a variety of plugins, that don’t always play nicely together. A few weeks ago while I was hacking on some Rust and these errors started showing up inline. Blaring red text basically as soon as I was done typing half-finished thoughts.
Remember FastCGI?
“Serverless” is sometimes referred to as “cgi-bin” which isn’t entirely fair as it’s somewhere between cgi-bin and FastCGI. Somewhere along the way both faded from memory. While goofing off last weekend wondered to myself: is FastCGI still useful? Unlike the classic cgi-bin approach where a script or program was executed for each individual request, FastCGI is a binary protocol which allows for longer lived processes serving multiple requests. It continues to be used in the PHP community but seems to have largely fallen out of favor. Nonetheless I decided to tinker a little bit with FastCGI in Rust.
Creating your first Rust pull request for delta-rs
Last week as part Delta Hack 2021 I hosted a live coding stream to introduce new-comers to Rust or delta-rs to both Rust and contributing to the project. I have been enjoying writing code live on Twitch which is typically more akin to pairing with the fourth wall. This session was different in that I was intentionally start at a more foundational level: getting started with Rust itself.
Increasing the density of the home lab with FreeBSD Jails
Investing the time to learn FreeBSD jails has led to a dramatic increase in the number of services I run in my “home lab.” Jails, which I have written about before, are effectively a lightweight quasi-virtualization technique which I use to create multiple software-defined networks to segment workloads. Jails have allowed me to change my “home lab” dramatically, allowing me to reduce the number of machines and increase hardware utilization. For now, the days of stacking machines, dangling Raspberry Pis, or hiding laptops on the shelf are all gone. Almost all my needs have been consolidated into a single FreeBSD machine running on a 4 year old used workstation.