i Christopher Faulet's resume

Summary

Passionate about software development for nearly 15 years, I especially like programming backend and network applications. Starting by developing C/C++ softwares, now I like to use Erlang, functional programming language for which I have a particular fondness, because of its distributed and concurrent aspects. I understand the need to use tools to improve the quality of my work (eg. unit testing, code coverage, profiling, continuous integration, etc.) and to document it. I daily strive to learn new skills and improve on any I have already obtained.

For over 4 years, I'm actively involved in the development of Yaws, an open-source HTTP server written in Erlang. I'm sensitive to ideas promoted by the open-source development and I am proud to contribute to projets when possible. I owe the different communities that made free-software movement happen many of my knowledge.

Preferred job location: Paris and nearby or remotly.

Experiences

Senior Software Engineer C

October 2016 - Present
HAProxy Technologies - Paris Area, France
 ► Development on HAProxy

Senior Software Engineer (C/C++)

April 2015 - September 2016
Qualys Technologies - Paris Area, France
 ► Development of a secure gateway based on HAProxy:
  • Work as a full transparent proxy, in forward and reverse mode
  • HTTP/HTTPS and SMTP filtering
  • Active contribution to HAProxy, an open-source TCP/HTTP load-balancing proxy server:
    • Development of the filter API
    • Addition of the dynamic SSL certificates generation based on the SNI hostname
 ► Development of an IronBee plugin for HAProxy:
  • Use HAproxy in place of Apache Traffic Server in Qualys WAF appliances
  • Reuse the filter API developped for the Qualys secure gateway
  • Allow HTTP requests/responses rewritting

Software engineer (Erlang/C++/C)

February 2010 – March 2015
Yakaz - Paris Area, France
► Development for the website yakaz.com:
  • Active contribution to Yaws, an open-source HTTP server written in Erlang
    • Official committer on the project since february 2012: many bug fixes and feature improvements
  • Several Erlang modules for Ejabberd: geolocalized online presence, contacts and chats storage in Cassandra, an erlang bridge for Yaws implementing BOSH protocol (Bidirectional-streams Over Synchronous HTTP)
  • A Sendmail/Postfix milter in pure Erlang to allow post by email on yakaz.com
  • A PHP driver for Yaws using the PHP's SAPI (Server Application Programming Interface)
  • A DNSBL server written in Erlang used to moderate posts/chats on yakaz.com: HTTP and SOCKS4/SOCKS5 open-proxy detection
  • An Erlang application to send messages to a syslog daemon, using UDP sockets
► Development for the platform wonderpush.com:
  • Reuse applications and development processes used on yakaz.com
  • Erlang applcations for RabbitMQ:
    • A scheduler for AMQP messages used to plan the date when a message should be delivered and the repetition of this task
    • A generic and modular AMQP consumer
  • Set up a Redis cluster
► Development in Erlang of a realtime multiplayer gaming platform for the platform scoreflex.com
► Work on a PoC of a platform to allow user to run applications remotely on mobile devices:
  • Based on the SPICE project, an open-source solution providing client access to remote machine display and device
  • Add support of the H.264 and Opus codecs for, respectively, the video and audio streaming
  • Development of a native client for Android, written in C++
  • Development of a client for Chrome, written in C++ and using the Google's NaCL/PNaCl SDK

Software engineer (Erlang/C++/C)

June 2006 – May 2010
Meetic - Paris Area, France
► Development of a message oriented middleware in Erlang dedicated to asynchrone SQL injection in MySQL and Oracle databases.
► Development of a geolocatiosation server in C using MaxMind's GeoIP database.
► Development of a daemon serving profile pictures:
  • Data storage in MySQL
  • Use FCGI protocol
  • Use ImageMagick library to process profile pictures (resizing, cropping, blurring)
► Work on an Erlang distributed platform to automatically moderate users:
  • Use a mnesia database as a distributed cache system
  • Automatic detection of suspect behaviours by analyzing message flows, localizing users and tracking their sessions
► Development of a PHP extension, written in C, to allow communication between PHP and Erlang nodes.
► Development of an Erlang driver for Oracle using the OCI library (Oracle Call Interface)
► Work on a MySQL plugin to manipulate unicode strings.
► Development of several in-house tools to interface Erlang with Meetic's databases (MySQL and Oracle)

Software engineer (C/C++) - R&D Team Leader

July 2003 – May 2006
Dolphian SA - Paris Area, France
► In charge of a team of 4 developpers to work on mail filtering softwares
► Work on a in-house antispam software, written in C (heuristic rules based on regex, bayesian network, DNSBL, etc.)
► Development of an antivirus bridge in C and an SMTP milter for CriticalPath mail server.
► Development of a POP3/IMAP proxy in C++ to filter email boxes

Software engineer (PHP)

October 2001 – May 2003
Cable & Wireless - Paris Area, France
► Work on a collaborative intranet written in PHP

Projects

Yaws - a HTTP high perfomance 1.1 webserver written in Erlang and particularly well suited for dynamic-content web applications.
HAProxy - a Reliable, High Performance TCP/HTTP Load Balancer.

Skills & Proficiency

Erlang/OTP

C

C++ & STL library

Java, PHP, Bourne shell scripts

Python, Perl, Javascript.