Principal Engineer @ From December 2014 to Present (1 year 1 month) Greater New York City AreaSenior Developer / Architecture Team Lead @ Set up a distributed work queue and initiated move of business processes into
asynchronous workers, decreasing web server load, response times, and allowing
for correct and complete handling of—for example—real-time updates coming from
Facebook at up to 10,000 users/minute.
Built a framework for distributed batch jobs running over arbitrary data sets
using existing application code, lowering hardware requirements to a fraction
of what they were and making batch jobs completely parallelizable,
controllable, predictable and visible regardless of type (ad hoc, recurring),
size or duration.
Performed complete overhaul of infrastructure for 5M daily email sends,
improving reliability and deliverability, and maintaining those improvements in
the face of tightening restrictions from mail providers and a data center move.
Created an AB testing framework to support simultaneous running and analysis of
dozens of experiments, based on the testing papers from Microsoft (Kohavi et
al) and Google.
Deployed Redis as a bloom filter server, to allow efficient deduplication on
very large data sets; made upstream contribution and extensive further
additions (atomic check+add, TTL support) to Redis bloom filter Lua scripts
based on papers by Almeida et al and Kirsch et al.
Boosted developer efficiency and happiness in many ways; a sample:
- Parallelized deployment scripts, making production pushes 8x faster, and
added automated package management (Composer) and style checking
(PHP_Codesniffer: one upstream contribution) to workflow and CI
- Made numerous improvements to the unit testing framework to make testing
easier, more valuable and less prone to breakage
- Built a distributed scheduling framework and used it to unify scheduling
of all messaging (email, Facebook notifications, mobile push
notifications)
- Presented or co-presented company talks on email systems, unix
command-line tools, git and unit testing From January 2012 to December 2014 (3 years) Senior Engineer @ Led development for the launches of roubini.com and economonitor.com. Co-wrote
a PHP framework featuring Spring-inspired dependency injection, a built-in
service layer supporting both JSON and SOAP APIs, and caching using both APC
and Memcached. Wrote the bulk of the application that we layered around a
proprietary CMS to achieve all delivery-side functionality: subscriber account
management and entitlements, social features, analytics and reporting,
user-tailored email products, content syncing.
Used Apache Solr for search functionality—took existing content import scripts
and made them 10x faster while reducing disruption from re-indexing.
Administered MySQL with replication using Percona Toolkit for online schema
changes, consistency checks, etc. Wrote and consumed various types of feeds,
APIs and SSOs with many 3rd parties like NBER, CEPR, Bloomberg, and the World
Bank. Integrated subscriber entitlements with Sugar CRM used by the Roubini
sales force.
Wrote client-side JavaScript applications to streamline content editing by
taking advantage of asynchronous service calls to CMS for our most
rapidly-updated content, saving many person-years of editorial time. Supported
by a Promise-based framework that notably enabled control over parallelized
code, and Python/Django server-side API.
Launched economonitor.com entirely on Rackspace's cloud, saving thousands of
dollars in hosting fees per month. Wrote multiple WordPress plugins to migrate
and taxonomize tens of thousands of existing blog posts from roubini.com as
well as old posts from newly incoming bloggers joining economonitor.com. From February 2008 to January 2012 (4 years) Lead Developer @ Unified about a dozen separate content management systems under one object
oriented PHP framework, cutting development time while preserving complete
design flexibility. Dozens of sites including defjam.com, islandrecords.com,
bonjovi.com and mariahcarey.com used this API and, combined, served an average
of around 2 million page views/day. Improved scaling by adding a PHP output
caching layer and database query caching layer along with tools for cache
management.
Built a JSON-RPC layer to allow sites built using said API to work
transparently on remote PHP installations.
Enhanced many sites and administrative applications with Ajax;
islandrecords.com and defjam.com were both jQuery “featured sites”. Kept Ajax
modular, simple and quick to deploy; many sites including islandrecords.com,
bonjovi.com, falloutboyrock.com, islandurbanmusic.com, and mercuryrecords.com
all used the same Ajax framework. From April 2005 to February 2008 (2 years 11 months)
Bachelor of Music, Music Performance (Jazz option) @ University of Nevada-Reno Richard Howard is skilled in: jQuery, PHP, JavaScript, MySQL, JSON, AJAX, HTML, CSS, Apache, Git, Node.js, SQL, Web Development, Web Applications, Bash