Blog posts


Today marks a huge milestone in my software engineering career. In my role of VP of Engineering at Scarf, we've announced Nomia! In one form or another, I've been working on the ideas underlying Nomia since 2012, and a major part of my role at Scarf is to make it a reality.

Irreversible Damage

Some quick thoughts on Target's removal of Irreversible Damage from their assortment

Announcing ConSciEnt and The Texture of Understanding

Today I'm excited to go public with ConSciEnt, my R&D effort to understand consciousness, through my first project: The Texture of Understanding!

A Declaration of Cattiness

This weekend at my community's Independence day cookout, we held a declaration competition. This was my entry, in favor of gossip and drama.

הליכה לקיסריה

Recorded myself singing one of my favorite modern Hebrew songs:

Minion vs Mastermind

In my professional life as well as in various volunteer contexts, I've noticed (at least) two kinds of roles people can fall into. Understanding their dynamics can help both someone trying to recruit or manage others in a project and someone deciding whether to jump in or understanding their own role.

Wrapping My Head Around Cubical Path Types

Last weekend, annoyed yet again at a lack of proper quotient types, I decided to dig into cubical type theory. A weekend's reading and pondering does not an expert make, but I wanted to highlight some surprising structural ways in which these theories differ from previous type theories, which none of my sources noted.

Understanding Nix's String Context

Note: This post assumes some familiarity with and interest in Nix. In particular, a basic understanding of the distinction and relationship between the Nix language and the Nix store is required.

In the Nix expression language, all strings have some metadata associated with them called "context". At a high level, this context is used to track dependencies in our build scripts to ensure we have all of the packages we need available during our builds. In this post, we'll go into more detail about why this context is necessary, how to interpret it, and the technical details of how this feature interacts with other aspects of the language.