My Story

My Story (Q1 2019)

If you just need the synopsis you can probably get the gist from my resume.

I've been working on OpenStack code since before it was released.  I've been involved to various degrees in many parts of it's ecosystem - but primarily I work on the object storage system Swift.  The OpenStack community is ... different from other FOSS projects where I've contributed like django, eventlet, paste, etc.

I like storage and data stores.  I know how to treat a file-system and how the kernel treats a block device.  I could pass off as a postgres sysadmin to someone who didn't know better.  But my passion is shipping useful software that empowers users.

The first time I heard about Docker was at a meetup where Solomon presented.  Afterwards I was still confused - "what do you mean: containers are just like VMs but faster!?" After a few probing questions we got to "Containers are just like namespaced processes on COW filesystems and exactly as fast as you'd expect!".  That made much more sense to me (I don't have much time for hype curves) but my CI/CD background really enjoys the way you can use it to promote tested artifacts, and it really is a decent alternative simulator for somethings that don't need the overhead or security of QEMU.

A few years ago, I got nerd sniped by this online TCG my kids were playing and ended up reverse engineering the client/server protocol to game it's online trading market.  It worked really well for me, but the whole thing was designed with a single user in mind - I thought I'd try and scale it out using containers but ultimately wasn't satisfied with the memory and storage overhead once I started to count how much $$$ I had to give AWS per user... I eventually shut it down, but sometimes think I might go back and redesign it multi-user first.

I started writing BASIC on an abandoned C=128 circa 1990, got a PC a few years later and poked at Pascal and Borland C++ for fun.  I worked at a small ISP and ran the BBS, my mates and I played DooM.  In college Java and MS Visual C++ was all the rage; my data structures class was ANSI C; someone made me write ML.  I got into Linux - mainly Debian.  Vim.  I gigged around Stillwater, Tulsa and OKC in a punk band; like many bands in the scene at that time we shared a stage with the All American Rejects and cut a demo cd on my computer.

After graduating with a BS in CS, I took work as a BOFH.  I tried Gentoo.  I soldered a mod chip and flashed the BIOS on my original xbox.  I still use it to play Pokemon roms with the kids.

Couple of years later I landed a Admin job at Rackspace in Texas.  RHEL and some Windows Server.  I scripted my job and crunched stupid amounts of tickets - so they made me work on automation full time.  I wrote a Twisted server that interacted with over a half dozen internal systems to drive automation processes by monitoring data from disparate sources, correlating events that would sometimes happen days apart; applying business logic and processing tasks - the users called it the MCP.  There was tons of other one-off stuff too; mostly python, with a bit of php, asp, vbscript, and java depending on what random legacy thing I needed to patch, work around or interact with.

Couple years of that and I got tapped to go help build the Rackspace Cloud.  It's all Ubuntu now.  I spent a year working mostly on Swift (Cloud Files) and Billing.  Eventually they put in me in charge of development for the Cloud Block Storage product.  In addition to designing and developing that product - I was also an advocate for our Continuous Integration process and all the tooling around automating test and deployment into branch environments; multiple virtual and physical staging and integration environments and our global production environment.  Been doing python development on distributed systems for 3-4 yrs.

Shortly after our successful launch of Rackspace CBS and crazy initial uptake - I went looking for something new and relocated to San Francisco to do more full stack work.  There's been plenty of cloud deployments and migrations, backend scaled out distributed message queue processing, and a nifty VPN secured 0MQ remote agent framework, but also front-end Django and JavaScript.  I've written enough rpm spec files and deb control files to understand why software distribution really is a hard problem worth solving.  I tried a Mac, it's a decent development environment - but I was missing GNU/Linux.

Over the past few years I've been a primary driver on huge efforts with-in the upstream Swift community like Storage Policies, Erasure Coding and Global Clusters.  People seem interested when I talk at conferences about the solutions we've invented when solving these large scale distributed storage problems and how the small globally distributed community got there - my mom says she doesn't understand the videos.  I have some patents, but don't really keep up with them.

I'm working remotely now.  After 10 years and a million lines of python2 - it's hard for me to say I "know" other languages, but I'm absolutely fluent and working professionally with python3.  Outside of that, Golang is where I have the next most interest, but my experience is hobby level.  I've happily jumped off the Apple train and am back to developing on a Linux laptop.  One of my more recent projects needed an IaC design, so I've recently learned quite a bit about terraform and more about ansible.

No comments: