The quickest way to reach me is email (enable JavaScript to view) .

PGP Key

If you want to verify that something signed came from me, or send me something you’d rather no one else could read, use the key below.

  • What it’s for: encrypting a message so only I can decrypt it, or verifying a signature on something I’ve sent you (an email, a signed commit, a release).
  • Fingerprint: 72AC 61AF 223C 5862 C549 18DB 4AA8 658D C082 8D79 — if you can, check this against me directly (in person, by phone, over a messaging app you already trust) rather than only comparing it to text on this same page. If this website were ever hacked, both the key and this fingerprint could be changed together and you’d have no way to tell just by looking here.

To use it:

  1. Download the key: copy the block below, or grab the raw file directly: mygpgkey.txt
  2. Import it: gpg --import mygpgkey.txt
  3. Verify the fingerprint: run gpg --fingerprint on email (enable JavaScript to view) and confirm it matches the one above.
  4. Encrypt a message to me: gpg --encrypt --armor --recipient email (enable JavaScript to view) message.txt
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=lf99
-----END PGP PUBLIC KEY BLOCK-----