Rain
-
I didn't transition for the metaphysics
Content note for anti-trans, scientifically illiterate nonsense. Ignorance on display. A couple weeks ago, I came across this rather remarkable Twitter post from Benjamin Ryan, a so-called writer about trans issues, commenting on a recent, anonymously-authored HHS report.
Published
-
Demystifying monads in Rust through property-based testing
In programming pedagogy, monads have a place as a mystical object from the functional programming world that’s hard to understand and even harder to explain. The stereotype about monad explanations is that they fall into two buckets: either comparisons to some kind of food item, or throwing complex mathematical…
Published
-
Free will quite clearly doesn't exist
There’s absolutely no brand-new insight in this post. A huge amount of credit goes to various philosophers and thinkers, especially folks like Aaron Rabinowitz, for shaping my views. Any errors in it are my own. In the natural world, everything that occurs is the result of a chain of causation all the…
Published
-
Why nextest is process-per-test
I’m often asked why the Rust test runner I maintain, cargo-nextest, runs every test in a separate process. Here’s my best attempt at explaining the rationale behind it. This document is cross-posted from the canonical copy at the nextest site. Benchmarks are available there as well, though a large part…
Published
-
Beyond Ctrl-C: The dark corners of Unix signal handling
RustConf 2024 is next week, so I thought I’d put up a written version of my RustConf 2023 talk about signals in time for that. I’ve tried to retain the feel of it being a talk, while editing it heavily to make it readable as a blog entry. Some links: Video of the talk on YouTube. Slides on Google Slides…
Published
-
Debugging a rustc segfault on illumos
At Oxide, we use Helios as the base OS for the cloud computers we sell. Helios is a distribution of illumos, a Unix-based operating system descended from Solaris. As someone who learned illumos on the job, I’ve been really impressed by the powerful debugging tools it provides. I had a chance to use some…
Published
-
Professionals demonstrate empathy
As of this writing, it appears that another open-source project lead has rejected a proposal to replace gendered he language with they, citing vague concerns about “politics.” (Please refrain from contacting the project about this; it’s counterproductive.) At Oxide, one of our core values is empathy…
Published
-
ECC RAM on AMD Ryzen 7000 desktop CPUs
Introduction One of the coolest features of AMD’s Ryzen desktop CPUs, and historically a great reason to get them over the competition, was the official support for error-corrected memory (ECC RAM)1. With most Ryzen 1000 through 5000 series CPUs and the right motherboards, ordinary users could get ECC…
Published
-
Dealing with tempfile cleaners
I used to use this as a place to write long-form thoughts, but with the demise of Twitter I want to also write short-form posts here under the #shorts tag. I also post on Mastodon but that’s a little more ephemeral and less searchable than this blog. Let’s say you’re creating a temporary directory with…
Published
-
How (and why) nextest uses tokio
1. Introduction Update 2022-11-03: This was originally the first in a series of two blog posts. I’ve now marked this as a standalone post. Content originally slated for part 2 will now be published as followup posts. I’m the primary author and maintainer of cargo-nextest, a next-generation test runner…
Published
-
Open and closed universes
Type systems are tools for modeling some aspect of reality. Some types need to represent one of several different choices. Sometimes, all the choices may be known in advance and will likely never change—this is often called a closed universe of values. Other times, the set of options will change over…
Published
-
What I use, late 2020 edition
I’m going to try and write up a post about my digital tools at the end of every year. Here’s what I’m using in late 2020. My desktop The computer I use for work and play is a desktop with an AMD Ryzen 9 3900x processor, a Samsung 970 EVO Plus 2TB NVMe drive, 64GB of RAM, and an RTX 2060 Super graphics…
Published
-
The social consequences of type systems
Title page of The Social Contract, by Jean-Jacques Rousseau. Public domain. Type systems1 are the wellspring of some of the most interesting work in computer science, and practitioners like myself deal with them everyday. This post collects some thoughts I’ve had about how type systems interact with…
Published
-
Thinking about dependencies
People tend to have lots of opinions about software dependencies. Here are mine. Standing on the shoulders of giants United, by truthseeker08 on Pixabay. At a high level, virtually all code in existence relies on tools and libraries written by other people. Even projects that don’t use any library dependencies…
Published
-
About me
Hello, and welcome to my little corner of the internet! 💕 I’m Rain (like the weather 🌧) and my pronouns are they/she. I’m a queer, trans, nonbinary immigrant based in Oakland, CA, US, and I build systems and tools for Oxide in Rust for a living. This blog is where I express longform opinions that don’t…
Published
-
Work
I’m a software and systems engineer with a background building open source developer tools at scale. Because the marginal cost of software approaches zero, software tools act as incredibly powerful force multipliers—developer tools even more so. I thrive in teams that are passionate about building things…
Published