Setting up per-project RLS for Emacs with Nix and Direnv

5 minute read Published: 2020-01-06

One of my favorite things about Nix is using the nix-shell to provision the development tooling for a project without infecting the rest of the system. Even if the project itself isn't built with Nix, I will often have a shell.nix just to provision tools like Cargo and SBT. This becomes especially helpful with Rust where each of my Rust projects can have a different rustc version without needing to switch my rustup toolchain.

Stop speaking gibberish, start using interfaces

9 minute read Published: 2019-01-07

In the age of modular microservices, data pipelines, serverless, and IoT, handling data serialization has become a major design decision. While monolithic architectures are well, monolithic, coordination between components is simply a function call away. In contrast, components that are separated by a network or run as different stages in a workflow must communicate by serializing and deserializing data. Add in questions like how much data is being serialized, how often it needs to be serialized, how many languages are in play, and how various components evolve, and we can see how data serialization has turned from an incidental problem to a central one.

Existential types in Rust

10 minute read Published: 2018-12-10

For the past couple of weeks I have been using Rust for a project at work and enjoying it a lot. The emphasis on systems programming aligns well with my interest in systems, the unique type system keeps the programming languages enthusiast in me interested, and the use of expressive types, as always, keeps me in check and makes me confident in my code.

Ruminations on the end-to-end argument

9 minute read Published: 2018-08-13

I spend a lot of my time reading papers and over the years a couple have always stuck out to me. For this post I wanted to write about an oldie but goodie: Saltzer, Reed, and Clark's "End-To-End Arguments in System Design."

The Limitations of Type Classes as Subtyped Implicits at Scala'17

1 minute read Published: 2017-09-20

I am excited to say my short paper "The Limitations of Type Classes as Subtyped Implicits" has been accepted at Scala Symposium 2017!

Installing NixOS

12 minute read Published: 2017-08-13

In an effort to force myself to learn Nix I spent last weekend installing NixOS on my desktop. It ended up being a fairly involved process for me, especially since I barely have any experience with Linux. Therefore I've decided to write about my installation process (to the best of my recollection anyways), both as a reminder to myself and for anyone else who may be curious.

Reasoning with representable functors

4 minute read Published: 2017-08-09

A couple weeks ago I was working on a project using Conal Elliott's uniform-pair library and noticed it had a curious Monad instance, which I've reproduced below.

My first Nix derivation

12 minute read Published: 2017-04-08

When I started learning Nix I set myself a milestone of contributing a derivation to Nixpkgs. Along the way I learned some interesting things about the Nix toolchain and began to really appreciate the freedom it gave me to experiment.