Insufficiently Magical

Any technology that does not translate our desires into effects cannot be called magic.

When I made this website, I had planned to write a lot more long-form text a lot more often. Unfortunately, it’s self-hosted, which is to say, more often broken than working, so most of my writing is on Twitter.

This is a mixture of my personal diary, my idle musings, my technical notes, and occasionally some things actually written for an audience. I make no promises as to consistency of topic, relevance, theme, or sanity. I do, however, promise that everything published here will be interminably long and of insufferable grammatical construction.

Writing Style

I strive to keep my writing correct to both the facts and the context in which I wrote it. I will generally mark technical writing with the relevant context (such as date or project version), and I will mark significant technical corrections explicitly, like this:

Outdated or incorrect original Updated or checked replacement

I will make minor grammatical or stylistic changes silently. You can read the versioning history if you want to see diffs that badly 🙃.

I will use marked call-out boxes, with colored backgrounds and frequently an icon, to indicate information that is related to the main text but is not part of the primary narrative. These are themed after industrial safety/hazard signage standards, and have vaguely similar goals.

Here is a listing of the available categories; each link goes to an index page of the contained articles. The full, uncategorized, list is available in the nav section.

All Articles

Miscellaneous Essays

This is the main collection of things I write, which are generally unconnected from each other.

In the future, I may migrate articles from here to specialized collections. I do not currently have permalinks, but I will retain a 301 Moved Permanently response at the original link for at least one year.

  1. Pushing Boundaries ()

    After-action report on a trek in the Boundary Waters Canoe Area Wilderness.

  2. Saving Minthara ()

    Baldur’s Gate 3 is an unbelievably cool video game. Here’s a way to break it a little bit.

  3. From Sea to Sky ()

    I migrated my website to a new hosting service for the first time in a while.

  4. This Is The Place ()

    I want to talk about death and what it means to be alive.

  5. 2020 Amazon Letter to Shareholders ()

    A critical (somewhat scathing, somewhat philosophical) review of the 2020 Amazon letter to shareholders.

  6. Industrial Artisanry ()

    I’ve thought a lot about the effects of industrial production on our material circumstances, especially since everyone in my family is an artisan of some kind. Here are some reflections on that.

  7. What’s With the Diæreses ()

    There are more things in language and orthography, Horatio, than are dreamt of in your ASCII encoding.

  8. Bitfields in Rust ()

    A walkthrough of the recent bitfield behavior I implemented in bitvec

  9. Battlestar Astrodynamica ()

    I accidentally got way too invested in the astrodynamics of a complex stellar system and the mechanics of teleporting.

  10. Rust Flow, Part Two ()

    Rust doesn’t have a language-level concept of generic mutability, which makes “method threading” (which take self by some handle, and return it in the same way) hard to write. This article covers how to write in that pattern in a less painful way.

  11. Rust Flow ()

    Rust allows for a very functional style of value “flow” without sacrificing the performance of a more traditionally imperative sequence. Furthermore, the functional flow may offer more clarity about value lifetimes and error handling that the imperative sequence might obscure.

  12. Stop Buying Trucks ()

    An examination of America’s recreational trucking habit, by Klaus Payne.

  13. Rolling My Own RSS Feed ()

    My previous post was about writing blogs. This one is about reading them.

  14. To All the Posts I’ve Blogged Before ()

    A self-involved reflection on why I have this section of my site. Blame Manish.

  15. Adventures with nom ()

    Some things I learned while using the nom library on a parser project.

  16. On Safety, and How Rust Can Help ()

    The Rust community issued a call for blog posts about Rust’s potential in 2018 and this is my response. It’s not very much about Rust.

  17. Solar Eclipse Geometry ()

    Far too much information about why the moon’s shadow does what it does in an eclipse.

  18. Inverted Discourse ()

    I wrote about an event I observed on Twitter and how it pertains to popularity effects I’ve seen in real life and especially amplified on social media.

  19. ASCII-Centrism ()

    An article about a small, small subset of problems with using software tools that have ASCII- and/or English- only syntax elements.

  20. Computers Are Hard ()

    A brief, evergreen note about why sometimes you can’t read my website. Posting it on that website was, perhaps, foolish.

  21. Hermaeus and Simple Tools ()

    I wrote a tool to ease archival work for a subreddit I frequent.

Personal Essays

These are some essays that are reflective of me personally, rather than a more abstract or technical topic.

  1. Petroion ()

    Reflections on being almost maculine.

  2. Anosmia ()

    Don’t get covid.

  3. Upswing ()

    It’s nice to write down the good moments too.

  4. GNC Pronouns ()

    I decided to equip “they” as a secondary pronoun alongside “he”. This is why.

  5. Running on Fumes ()

    Not sure I can call it a post-mortem if I’m not the one who died.

  6. ⊙ Gone Home ()

    A summary of the last chapter of my father’s life.

  7. New Year’s Resolutions ()

    New Year’s Resolutions for 2018.

  8. DV ()

    A story about an abusive, violent relationship of mine. I cannot emphasize enough that if you feel incapable of reading about these things, do not open this.

  9. AHCA ()

    The House of Representatives passed a bill that would significantly alter healthcare law in America. I wrote about some of my family’s experience with medicine. The Senate rejected the bill a month later.

  10. Immigration Ban ()

    I have some strong thoughts about immigration and social attitudes.

Ferrilab

This is where I write about the experience of creating the Ferrilab project.

  1. Introducing Ferrilab ()

    I finally came up with a name I liked for the greater bitvec project collection, and several months later, a logo that I don’t hate. Here they are!

  2. No User Serviceable Parts Inside ()

    I’m having troubles with Miri (again) and this is a snapshot of my understanding of the problem at time of writing.

  3. Version One ()

    I have finally completed bitvec.

  4. Runtime Alias Detection ()

    My bitvec project is composed of a very small handful of core engineering components without which the project fundamentally cannot exist. This article addresses the most theoretically important: pointer-value alias analysis.

  5. The Ad-Dressing of Bits ()

    My bitvec project is composed of a very small handful of core engineering components without which the project fundamentally cannot exist. This article addresses the pointer encoding allowing it to interact with the language core libraries.

  6. Polyglot Projects ()

    An exploration of how I wrote a C++ binding API for my Rust library.

RFCs

A collection of RFC documents I’ve written for Rust (and, possibly, other projects in the future?)

  1. Convert Trait ()

    Create a partner trait to From that allows conversion in a method chain. Available in the tap crate now.

  2. Cargo Book ()

    A draft RFC for adding a book subcommand to Rust’s Cargo tool.

  3. Crate Directory ()

    A draft RFC for solidifying the library usage mechanisms for non-Cargo Rust projects.

  4. Lint Level Reasons ()

    A draft RFC for attaching rationale directly to lint attributes.

  5. Unless, Until ()

    A draft RFC for adding unless and until keywords to Rust. Rejected.

How Computers Work

  1. Processors Part II ()

    A continued exploration of computer processors and memory.

  2. Processors ()

    This is a very long piece which I should probably split apart, that covers the assembly of logic elements into decision evaluators, arithmetic operators, and eventually a primitive processor.

  3. Transistors and Logic Gates ()

    An overview of how transistors work and how they can be assembled into Boolean logic elements.

  4. How Computers Work ()

    A general introduction to computing and the topics I intend to cover in more depth in following posts.

Type Theory

I am not a type theoretician nor have I taken any courses in the science. What I do have, however, is an engineering background doing fun things with data layout and type-directed programming.

  1. Type Alchemy ()

    We regularly work with data whose size is not fixed or known ahead-of-time – text, especially C strings, are a prominent example of this – and manipulating it safely requires effort. Part of my work involves using streams of structured, unsized, data, with as little indirection and discontinuity as possible.

  2. Data Structure Punning ()

    Complex data records are often only used as subsets of themselves. In languages such as C++, Java, and C♯, the class and interface systems are built in a way to allow this polymorphism using compile- or run- time typing systems, but this is often expensive or siloed within an artifact or language. This article talks about record composition and destructuring, and ways a language might aid the use of parts of a record in place of the whole.

  3. Data Types ()

    An exploration of how programs assign meaning to patterns of data, and the theories behind that behavior.

Talks

  1. Lightning Talk – Rust Belt Rust 2019 ()

    A whirlwind tour of how bitvec operates at the foundation level.

  2. Lightning Talk – Rust Belt Rust 2018 ()

    I accidentally gave a lightning talk at Rust Belt Rust 2018.

Posts From Social Media

Sometimes I wind up monologuing on social media, and if it turns out people like my rambles enough, I’ll bring them here for posterity (and editing).

  1. Rebutting the “Hole Hawg” Fable ()

    A Twitter thread I wrote about the concept of dangerous tools.