Alex Feinberg
Mountain View, CA
****@******.***
http://afeinberg.github.com
Objectives
To develop reliable distributed systems.
Skills
Knowledge of and experience with C, C++, Java and Perl
programming languages (particularly in a UNIX environment).
Knowledge of and interest in functional programming languages:
Scala, OCaml, Lisp (Clojure, Common Lisp and Scheme). Some knowledge
of Python.
Knowledge of and experience with reliable distributed systems
and their design principles (fault tolerance,
replication/consistency, event ordering, consensus/distributed
commit). Understanding of operating systems concepts, specific
knowledge of the Linux operating system.
Five years (after Bachelors degree) of software development in
both software engineering and operations teams. Large scale
production operations experience (including being in an on-call
rotation).
Understanding of core protocols
at the application (HTTP/web-services, SMTP, DNS, DHCP), transport
(TCP, UDP) and network/Internet layers (IP, Multicast/IGMP).
Understanding of good software engineering practices: iterative
development, unit testing, version control systems (CVS, subversion,
git, Perforce). Experience with many software development tools
(make, automake/autoconf, gdb, valgrind, ant, maven, hprof,
YourKit).
Experience
LinkedIn Corporation
Senior Software Engineer
September 2009 - CurrentMember of the Data Infrastructure team. Working on Project
Voldemort: a highly available, distributed data store
(http://project-voldemort.com/; key principles: consistent
hashing, virtual nodes, quorum reads/writes, vector clocks for
conflict resolution).
Implemented a metadata Gossip protocol and data streaming to
support dynamic cluster membership and on-line
rebalancing. Implemented support for replaying failed write
operations, including over high-latency cross-datacenter WAN
links. Re-wrote, debugged, tested and gradually rolled out a new
failure detection algorithm, resulting in five-fold decrease in
latency and an orders of magnitude decrease in the error
rate. Performance tested and on-boarded mission critical use-cases
onto Voldemort, helping with data model and application design as
needed. Extensive Java systems/network programming: use of Protocol
Buffers, BerkeleyDB Java Edition (BDB-JE), NIO, multi-threading/ java.util.concurrent.
Proofpoint, Inc
Senior Software Engineer, Core Server
September 2008 - September 2009Worked on the Proofpoint Protection Server (PPS) and Network
Content Sentry (NCS) - an industry leading suite of inbound (spam,
virus detection) and outbound (encryption, regulatory compliance)
email and web security products. Development of core server (NCS
and PPS) in (Object Oriented) Perl, C and C++, extensively using
multi-threading, native sockets event-driven/non-blocking I/O.
Development of the appliance OS integration in OO Perl and UNIX
shell (bash).
Sped up evaluation of large rulesets ten times. Implemented an
asynchronous DNS resolver. Diagnosed and fixed a contention related
bug in the Linux kernel's eventpoll facility, instrumenting
several portions of the Linux kernel (eventpoll, task scheduler) to
aid debugging.
Initiated the adoption of Hadoop. Developed a
service for efficient storage of structured data in Hadoop using
Jetty, Guice, Jersey (JSR 311), Avro and HDFS API.
SocialMedia Networks, Inc
Platform Engineer
January 2008 - September 2008Worked on ad server backend which was responsible (over the
course of 2008) for serving of 100 million impressions on a daily
basis, delivering advertising content to applications on the biggest
social networks. Developed a log copying, processing and archiving
systems. Initiated and drove adoption of Hadoop: setup a cluster,
trained other engineers and analysts. Built tools for event
gathering, analytics and web crawling on top of Hadoop.
Yahoo! Inc
Production Engineer, Sponsored Search Serving
April 2006 - January 2008Member of the team (originally three people, including a
manager) responsible for running ~10,000 machines that comprised
Yahoo's Sponsored Search (formerly Overture/Goto and Inktomi
products) Serving component. Worked closely with the ad server and
search engine development teams towards ``production readiness'':
automated configuration, release packaging and deployment.
Extensive development of automation and monitoring tools in
Perl, Python and (occasionally) C. Developed many new platform and
operations tools and contributed to existing platform tools ( e.g., system installation tools, a cfengine-like
configuration system). Automated the delivery of appropriate
advertiser data on a daily basis from the data warehouse to the
serving backends in multiple datacenters. Modified a BitTorrent
client to act as a transport mechanism for large datasets (the
system later evolved to a tool used by multiple teams at Yahoo).
BindKey Technologies (Dupont Photomasks Subsidiary)
Systems Administration/Development Consultant (Contract)
January 2003 - March 2005Created a development and build environment, gaining extensive
experience with the gcc/g++ compiler, GNU linker and assembler and
misc. third party libraries. Circumvented unfixed bugs in the GNU C
compiler (gcc) and linker (GNU ld).
Integrated FlexLM licensing into production software (by
creating a multi-threaded C++ wrapper class for FlexLM's C API) and
developed a Perl and MySQL based license management and generation
web application. Development portions of the product UI code using
GTK+-/GTK- (in C and C
ActiveBuddy, Inc (Renamed Colloquis,
acquired by Microsoft in 2006)
UNIX Systems Administrator/Developer (Contract/Internship)
November 2000 - August 2002Administered a network of 50+ Linux and FreeBSD servers in a
production environment. Developed a system for automatic
installation of the Linux operating system over the network, using
PXEboot. Participated in software development, extensively using
Perl, MySQL and a specially developed internal programming language.
Presentations
Guest lecture in UC Berkeley CS194-17: Programming the Cloud. Pdf:
http://behemoth.strlen.net/~alex/voldemort-cs194-017.pdfProject Voldemort: Reliable Distributed Storage. Presented at the
27th International Conference on Data Engineering (ICDE '11), Hannover, Germany, April 2011. Pdf:
http://behemoth.strlen.net/~alex/voldemort-icde2011.pdf
Education
Santa Clara University2006 - 2009Completed MS in Computer Engineering while working
full-time. Pursued computer networks track, additional coursework
along the software engineering track.
Santa Clara University2004 - 2006BS in Computer Science (BSCS).
De Anza College2002 - 2003
Cupertino, CA
Miscellaneous
References are available upon request. Hobbies and interests include:
computer programming/computer science, photography, music, history and
philosophy. Bilingual: Russian and English. US Citizen.