About Me

Hi.

My name’s Jeff. I’m a computer guy, personally and professionally, specializing in Python and Ruby development and Unix systems administration.

Most recently I’ve been mixing the two disciplines, writing development tools to make administration easier and more automated. The catchy label for this is “DevOps”, but all that matters is that it lets me do two complimentary things I love.

Why you might know me

I am best known for maintaining the popular open source SSH scripting library, Fabric (and its dependency Paramiko), and for co-authoring a well-received book on the Django Web framework. Details available in my resumé.

Where I am, and have been

Born in the early 80s, raised and educated in Western Massachusetts through the turn of the century, I spent the ’00s in the New York/New Jersey metro area and moved to the San Francisco Bay Area in 2011.

New York is a better city; the Bay Area is a nicer landscape (and with vastly better weather, massive drought notwithstanding). Despite the former’s aromatic summer trashpiles, I never internalized the phrase “eye-watering stench” until I got a job in the latter’s SOMA neighborhood.

I travel to the Pacific Northwest reasonably often (Portland, for work/friends/small conferences; Seattle, for a large annual conference) and it’s pretty swell.

As a child, I spent a week each winter on the Gulf Coast of Florida; as an adult, I travel to the Fort Lauderdale area at least once a year. That state has nice beaches.

Where (else) to find me online

My email address is jeff [at] bitprophet [dot] org. And as you can probably guess, my online moniker is bitprophet. It’s my username at the following Internet watering holes:

I’m not on Facebook; it doesn’t feel worth the time. Apparently they create entries for folks without accounts anyways, so…maybe I am on Facebook against my will? Kinda creepy.

In the past I’ve identified as “Cyrus” and can still be found using that name at MetaFilter and the FFVII Citadel (which I used to run, way back.)

GPG key

Below is the plaintext version of my GPG public key. At present, I mostly use it to sign PyPI packages.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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