Etienne Perot
=============

San Francisco Bay Area, California, United States

[https://perot.me/][Etienne Perot] — <span class="email-replace">etienne (at) perot (dot) me</span> (**PGP**: [974E E250][PGP key])

Software engineer with an interest in various topics including computer networking, security, data visualization, 3D graphics, and who also enjoys Linux server administration. Fluent in French (native) and English.

Skills
------
* **System architecture**: Familiar with reliable software design, consensus in distributed systems, production service SLO design, production and machine management infrastructure.
* **Programming languages**: Extensive knowledge of [Python] (_as a programming language_), [Go], [Java], [PHP], [SQL]; working knowledge of [C] and [C++].
* **Scripting languages**: Extensive knowledge of [Python] (_as a scripting language_) and [Bash].
* **System software**: Familiar with [Linux] (and Unix in general), [Docker], [MySQL], [nginx], [php-fpm], [Dovecot].
* **Web development**: Extensive knowledge of (non-framework) [JavaScript], [jQuery], [Ajax], [HTML], [CSS].
* **Libraries/Engines**: Extensive knowledge of [FUSE] (both the C library and its bindings), [Qt] (C++ library and its bindings), [jMonkeyEngine 3], [JNA].
* **Version control systems**: Familiar with [Git], [Mercurial], [Subversion].

Employment
----------
* **Senior Software Engineer - Site Reliability Engineer** at **[Google]** (_August 2013 - present_)  
  Extensive work on [Borg], Google's cluster orchestration system, and the machine management software around it. SRE Tech Lead for critical components of Google's production ecosystem. Revamp power distribution infrastructure of Google datacenters`. [Public presentation on a system I TL'd][SRSly talk]. Work on [Stadia]'s edge cluster infrastructure and scheduling optimizations.  
  _Technologies used_: [Go], [Python], [Linux], [Paxos], [Borg], [Chubby], other Google-specific technologies.
* **Software developer** (internship) at **[Dental Wings]** (_June 2012 — July 2012_)  
  Continued work on the metrology Java application. Created a 3D application for visualization, modification, analysis, automated adjustment, metrics computation, comparison, and database archival of data from the calibration tables of multiple scanner models.  
  This allowed the company to significantly improve scanning accuracy on already-deployed scanners without recalling them, and to obtain more and better metrics for the scanning quality of future scanners.  
  _Technologies used_: [Java], [C++], [Swing], [MySQL], [OpenGL], [WSDL].
* **Teaching Assistant** at **[McGill University]** (_Fall 2011_)  
  Upgraded the 3D engine and the UI engine of Spaceracer, a space racing game used in assignments for CompSci. students to write their AI modules for controlling the spaceship.  
  _Technologies used_: [Java], [jMonkeyEngine 3].
* **Research student** on the **[Mammoth Project]** at **[McGill University]** (_May 2011 — August 2011_)  
  Ported the client to a new game engine, rewriting a large portion of the graphics-related code in the process. Took advantage of the possibilities of the new graphics engine by improving performance and adding in more features and effects through the use of GLSL shaders.  
  _Technologies used_: [Java], [jMonkeyEngine 3], [GLSL].
* **Software developer** (internship) at **[Dental Wings]** (_June 2010 — August 2010_)  
  Wrote an internal Java application (Swing toolkit) to assist in testing the accuracy of 3D dental scanners, by comparing the scanned data with reference models and generating a metrology accuracy report for each scanner.

\pagebreak

Personal projects
-----------------
* **[everVoid]** (_Open-source, [CC-BY-3.0 license] (Creative Commons Attribution 3.0 Unported)_)  
  A full-fledged, turn-based, multiplayer, cross-platform strategy space game written in Java, started as part of a school project.  
  _Technologies used_: [Java], [jMonkeyEngine 3], [OpenGL], [GLSL].  
  _Team_: [Valentin Bonnet], [Pier-Luc Gagnon], [Laura Leclerc] (artist), [Etienne Perot]
* **[SrcDemo2]** (_Open-source, [BSD license]_)  
  A cross-platform desktop application that creates a virtual filesystem in a Source engine-based game's directory, forcing the rendering engine to bypass the disk entirely in order to speed up rendering and smooth rendered frames.  
  This allows game movie creators to produce very high-quality videos without expensive software other than the game itself.  
  _Technologies used_: [Java], [Qt-Jambi] (Java bindings for [Qt]), [fuse-jna], [Valve Source engine].
* **[fuse-jna]** (_Open-source, [BSD license]_)  
  Java bindings library to the FUSE kernel module for Linux, FreeBSD, and Mac OS X.  
  This allows the user to write custom filesystems using Java only, without having to worry about the operating system kernel.  
  _Technologies used_: [Java], [JNA], [FUSE], [fuse4x], [OSXFUSE], [MacFUSE].
* **[DamnVid]** (_Open-source, [GPLv3 license]_)  
  A cross-platform desktop application that downloads and converts videos from the local disk or from video streaming websites.  
  _Technologies used_: [Python], [wxPython] (Python bindings to [wxWidgets]), [ffmpeg].

A lot of other, smaller projects, using various programming languages and all open-source, are available online:

* **GitHub**: [https://github.com/EtiennePerot][GitHub]
* **Bitbucket**: [https://bitbucket.org/EtiennePerot][Bitbucket]

Education
---------
* **Bachelor of Science in Software Engineering** (_2009 — 2013_)  
  **[McGill University]**, Montreal, Quebec

* **Baccalaurat Français Scientifique** (_general French Baccalaureate, Sciences stream_) (_2007 — 2009_)  
  **[College Stanislas]**, Montreal, Quebec  
  Received highest honours (Mention "très bien")


[McGill University]: https://www.mcgill.ca/
[College Stanislas]: http://stanislas.qc.ca/montreal/
[Mammoth Project]: http://mammoth.cs.mcgill.ca/
[Google]: https://www.google.com/about/jobs/teams/engineering/systems/
[Dental Wings]: http://www.dental-wings.com/
[Clinique Ostopathie-Santé]: http://osteopathiesante.com/
[Java]: https://en.wikipedia.org/wiki/Java_%28programming_language%29
[C]: https://en.wikipedia.org/wiki/C_%28programming_language%29
[C++]: https://en.wikipedia.org/wiki/C%2B%2B
[Swing]: https://en.wikipedia.org/wiki/Swing_%28Java%29
[Apache Commons]: https://commons.apache.org/
[Microsoft .NET framework]: https://www.microsoft.com/net
[SQL]: https://en.wikipedia.org/wiki/SQL
[MySQL]: https://www.mysql.com/
[iText]: http://itextpdf.com/
[OpenGL]: http://www.opengl.org/
[WSDL]: https://en.wikipedia.org/wiki/Web_Services_Description_Language
[jMonkeyEngine 3]: http://jmonkeyengine.com/
[GLSL]: https://en.wikipedia.org/wiki/GLSL
[PHP]: http://www.php.net/
[JavaScript]: https://en.wikipedia.org/wiki/JavaScript
[Ajax]: https://en.wikipedia.org/wiki/Ajax_%28programming%29
[Google Data APIs]: https://developers.google.com/gdata/
[CSS]: https://en.wikipedia.org/wiki/Cascading_Style_Sheets
[HTML]: https://en.wikipedia.org/wiki/HTML
[XHTML]: https://en.wikipedia.org/wiki/XHTML
[HTML5]: https://en.wikipedia.org/wiki/HTML5
[Qt]: https://en.wikipedia.org/wiki/Qt_%28framework%29
[Qt-Jambi]: http://qt-jambi.org/
[Valve Source Engine]: http://source.valvesoftware.com/
[JNA]: https://en.wikipedia.org/wiki/Java_Native_Access
[FUSE]: https://en.wikipedia.org/wiki/Filesystem_in_Userspace
[fuse4x]: http://fuse4x.github.com/
[OSXFUSE]: http://osxfuse.github.com/
[MacFUSE]: https://code.google.com/p/macfuse/
[Python]: http://www.python.org/
[Bash]: https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29
[wxPython]: http://wxpython.org/
[wxWidgets]: http://www.wxwidgets.org/
[ffmpeg]: http://ffmpeg.org/
[jQuery]: http://jquery.com/
[Git]: http://git-scm.com/
[Mercurial]: http://mercurial.selenic.com/
[Subversion]: http://subversion.tigris.org/
[Linux]: https://en.wikipedia.org/wiki/Linux
[nginx]: http://nginx.org/
[php-fpm]: http://php-fpm.org/
[Dovecot]: http://dovecot.org/
[everVoid]: https://github.com/EtiennePerot/evervoid
[SrcDemo2]: https://srcdemo2.googlecode.com/
[fuse-jna]: https://github.com/EtiennePerot/fuse-jna
[DamnVid]: https://damnvid.googlecode.com/
[Valentin Bonnet]: http://www.linkedin.com/in/valentinbonnet
[Pier-Luc Gagnon]: http://www.linkedin.com/in/pierlucgagnon
[Laura Leclerc]: http://www.linkedin.com/pub/laura-leclerc/29/717/411
[Etienne Perot]: https://perot.me/
[PGP key]: https://perot.me/pgp.asc
[CC-BY-3.0 license]: https://creativecommons.org/licenses/by/3.0/
[BSD license]: http://opensource.org/licenses/BSD-2-Clause
[GPLv3 license]: https://www.gnu.org/licenses/quick-guide-gplv3.html
[GitHub]: https://github.com/EtiennePerot
[Bitbucket]: https://bitbucket.org/EtiennePerot
[Go]: https://golang.org/
[Docker]: https://www.docker.com/
[SRSly talk]: https://www.youtube.com/watch?v=BOP3z7uCW4w
[Borg]: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/5bf4ebfbf98ead7f6ee1552860fab88e75a5ed7e.pdf
[Chubby]: https://medium.com/coinmonks/chubby-a-centralized-lock-service-for-distributed-applications-390571273052
[Paxos]: https://en.wikipedia.org/wiki/Paxos_(computer_science)
[Stadia]: https://stadia.com/
