About


I'm a professional engineer living in San Francisco changing the world one day at a time. Currently I'm employed over at @Square.

Projects & Interests

GPU & low-level Development

I'm presently interested in how we can better utilize lower-level languages like C/C++ in harmony with hardware in highly parallelized environments. While I love higher-level languages like Ruby for web development, it doesn't capture the raw performance for numerical methods like this particular breed of specialized hardware. It's also fun to craft brute-force attacks using phenomenal amounts of cores, or attempting to shave off time using tricks in hardware.

cc-hash-probe

golang-datastructures

 

Databases

One of the hardest elements in designing systems at scale is the management and survivability of the underlying data. Database design has made numerous strides in the last few years thanks largely to the NoSQL movement. I'm highly interested in the tradeoffs and design considerations of these systems. At a former engagement I operated and maintained a data lab measuring throughput of systems undergoing active failures. The same lab focused on the performance implications of different replication strategies/topologies, filesystems, and database options. I've been a regular discussion leader at ChiDB in Chicago, and I've presented at several conferences.

flockdb

RTreeCouchDB (defunct)

User-generated content & the social graph

ChicagoDB

 

Security

I've spent the last several years working on security off and on. In a past life I did work at a very large public certificate authority and I've been interested in how we do identity management. Since then I've taken what I wished I would have known and distilled it into a Ruby-based certificate authority system that I released as a gem. I'm also interested in combining my interest of lower-level languages with what I'm going to call library forensics and taking things apart.

certificate_authority

cc-hash-probe

 

Distributed/Concurrent Systems

Nothing ever sits on one box anymore. Systems today are composed of a broad spectrum of languages (polyglot), on varying platforms, and composed of different services. Distributed faults are a pain in the ass to diagnose and even harder to fix without making things worse. I'm highly interested in the construction of these kind of distributed systems that can self-recover, back-off, and remain resilient in the face of all manner of failure scenarios. Secondarily, I'm interested in concurrency development. I've done several production systems in Erlang and I'm actively playing with more recent developments in Scala and Clojure.

meson (AMQP <-> XMPP bridge)

clojure-99-problems

akka

codekata19-mapreduce

 

Performance

- Zoom! 'nough said. This is also related to my secret love of C.

RailsBigPipe