Benjamin Sergeant
Bay area, California
Education
M.Sc in Computer Graphics
Grenoble, France: 2002--2003
-
(Formerly named DEA IVR) Digital Imaging, Computer Vision and Robotics.
M.Eng in Telecommunications
Grenoble, France: 1999--2002 /
Link
- Telecoms department of ENSERG-ENSIMAG engineering school. Majoring in Computer Science and Hardware Design.
- Main projects: Compiler for a subset of Pascal, Operating System Kernel, 8 bit CPU design with real hardware, VLSI chip for computing the convex hull of a set of points.
Classes Préparatoires
Paris, France: 1996--1999
- French classes preparing students for
the competitive exams required to enter
engineering schools. Doing mostly Maths and Physics.
Experience
AppLovin
Palo Alto, California - Senior Techlead Manager: September 2020--Present
-
Wrote and maintained the first version of the real time inference server backing up AXON-2.
-
Rewrote and maintained an internal file based in memory cache, similar to LevelDB or RocksDB. Used Go.
-
Rewrote and maintained the internal C++ client library on top of curl and libuv, handling an enormous amount of traffic.
Machine Zone, Inc, now part of AppLovin.
Palo Alto, California - Staff Software Engineer: January 2016--September 2020
-
Wrote a real time messaging system, Cobra, used mainly for game analytics, with message dispatching built on top of Redis Streams. Cobra handles 50,000 1K messages per seconds at peak, is running on kubernetes and was presented at the Redis conference in 2019. The system was used for performance monitoring and game usage analytics. Worked to spread Cobra usage accross departments, which lead to some important new use cases such as live code or asset reloading for development and lua flame graphs creation used to find performance bottlenecks.
-
Wrote a python redis client library and a companion tool which can be used to monitor key space usage and do an optimal resharding of a redis cluster, using a bin packing algorithm. This work was selected to be presented at Redis Conf 2020 and will be presented in a redislabs Webinar.
-
Rewrote the chat and the real time system networking layer on top of a WebSocket transport with MessagePack data marshalling instead of XMPP. The protocol is implemented in lua which makes it very easy to update, unlike the previous implementation. The C++ WebSocket implementation was open-sourced and is used by many users, and contains a client and server library, and an HTTP 1.1 client and server. The library is available on vcpkg and the companion busy-box like networking tool is packaged for Alpine Linux.
-
Worked on fast asset delivery to improve the first time user experience of our games. Introduced the usage of binary patching to transfer file deltas and reduce the transfered payload by 10 to 20x. Reworked the localization file formats to be more compact and benefit from binary patching. Implemented C++ client and Python build part for both changes. Developed a python tool used to replicate a complex C++ engine code base and calculate offline the amount of downloaded asset data required to login into our games, which is used to validate each game release.
-
Fixed a long standing nasty luajit bug which was responsible for 90% of all the Android crashes, which required a multi-month backward compatible rollout process. Due to its high frequency the bug had been thought to be a memory pressure crash while it was not.
-
Re-architected the crash handling and reporting tool by creating a bridge from the game clients to sentry, with extra native C/C++ crash support. Open-sourced the stack walking code which served as a reference implementation of sentry builtin latter support, and added many features such as handling of lua and java crashes and displaying code snippets alongside backtrace information which made fixing some bugs trivial. Devops of associated services, container migration and switched to sentry saas in 2019. This work was rewarded by an internal technical achievement award.
Heartflow, Inc.
Redwood City, California - Contractor: July 2015--November 2015 /
Link
-
Wrote a WebGL visualization engine from scratch to display Heart 3D models with interactive 3D pin placement. Engine was written in Coffescript and could work in a web browser and offline on Linux for PDF generation thanks to headless GL.
DreamWorks Animation SKG, Inc.
Redwood City, California - Software Engineer: May 2010--December 2015
-
Working on moonlight, an off-line software renderer. The renderer is the software computing final images that people see on screen. Wrote an analytic web tool for render logs, processing hundred of millions of events on a single machine using a custom database engine.
-
Worked on torch, the next generation lighting software, used to lit Turbo, How to train your Dragons 2 and all Dreamworks movies going forward. Scrum lead of the team owning the 3D Viewer, the curve editor, the interface with the Renderer.
-
Lead of the torch show reactive team, working on bugs and optimizations requested by shows with fast turnaround. Optimized a regioning workflow operation which on a large crowd scene was taking 15 minutes to run and was consuming 10 Gigabytes of memory. Reduced it to a runtime of 0.2 seconds and a memory consumption of 300M (4500x speedup / 30x memory reduction).
-
Wrote an analytic web tool for monitoring the stability of torch. The tool was later expanded to support the animation, the rig and the rendering softwares. The tool was given an internal tech award; tech awards are usually given to work leading to patents or published papers.
-
Wrote a prediction/error compression system for baked animated sequences (Surfaces and Meshes), reducing the disk
footprint by 10x on average and 20 to 30x on best case. Integrated the system in Dreamworks pipeline.
-
Reworked the polygonal/subdivision surfaces file format and shrunk disk usage by 15% to 25%
with simple and efficient techniques while maintaining it lossless and backward compatible.
The prototype was written in Python (full re-implementation of the file format IO).
-
Lots of cleanup and improvements to the very rich Dreamworks geometric toolset
(command lines, operators, Python/C++ binding, 3D viewers).
Adobe Systems, Inc.
San Jose, California - Computer scientist: January 2005--May 2010
- Lead developer of Adobe Acrobat Capture Utility for UNIX, shipped with Adobe Acrobat 3D (7.0.7, 8.1 and 9.0) on HP-UX, Solaris, IRIX and AIX.
- Enhanced support of 3D Capture for numerous CAD applications (many different versions) (Dassault Catia v4, 4DNav, Catia v5, DMU, UGS I-Deas, Teamcenter, NX) on all supported platforms.
- PDF Export with embedded U3D and PRC. The U3D and PRC libraries were ported to Unix. PDF custom digital signature implemented with OpenSSL.
-
Internationalization and localization in French, German and Japanese. The Japanese support did not exist in wxMotif and we had to work with core wxWidgets library maintainers to add it.
-
Rewrote the whole GUI code using the Trolltech Qt toolkit, switched the whole build-system to Qt qmake projects, and switched installers to native OS packages (like msi files on Windows).
-
Created a 3D-PDF iPhone application that was demoed at
the BU all hands and that went to the final round of qualification
for the MAX conference. The application was network aware and could
do 3D file streaming, caching of the geometric datas, remote
conference, and trigger 3D capture on a desktop and download the
capture.
-
Ported the Digital Edition PDF rendering code to iPhone and wrote a minimal PDF renderer (OpenGL based) that worked on iPhone and on the Mac.
-
Wrote a prototype of a network file system using MacFuse and Acrobat.com for the backend.
-
Wrote a Flash build-system in python with projects dependancy tracking, incremental build and parallel build support.
-
Wrote a Raider3D file viewer in Python (File format reader/writer, interactive manipulation of the 3D scene).
-
Wrote a web application for integrated browsing of Perforce and the Adobe proprietary bug tracker similar to Trac.
-
Setup lots of web applications ; bug tracker (roundup), forum (phpBB), wiki (mediawiki), mail archive (MHonArc), project management (Trac). Wrote a command line directory service, a bridge to Acrobat.com. Also did a lot of UNIX admin on a large set of machines.
Hitpost, Inc (aquired by Yahoo)
San Francisco, California - First engineer on board : April 2009--September 2009
-
Wrote the first version of a sport crowd site for Mobile devices using Google App Engine (focused on the backend). The site was demoed to several Venture Capitalist from the bay area. Official play by play are retrieved from stats.com using ftp push and inotify.
-
Helped build the technical team, found two top notch developers (back-end and front-end).
Okyz, Inc. (aquired by Adobe)
Paris, France - Software Engineer: July 2003--December 2004
-
Port of Raider3D Capture and Viewer on
HP-UX. Capture port required collaboration with HP R&D, a thorough understanding of the specific
HP OpenGL implementation and the development of a special code generator
from OpenGL C prototypes (using Lex/Yacc).
-
Worked on the AIX and on the Mac OS X Raider3D Viewer ports.
-
Evaluated the Hoops3D library providing 3D
compression algorithm to be integrated inside the r3d format.
-
Maintained the Mac OS X Raider3D Viewer, and HP-UX,
Solaris, IRIX, AIX Raider3D Viewer, Capture, Conference
server versions.
-
Responsible for the support of the Renault account, and in
general for most of the Unix support. Set up Unix machine
during OKYZ participation in trade shows.
-
Develop a user-friendly front-end for the
license generation tool, and simplify the preparation of
Unix products distribution media (tarballs, update ftp
links, Cd's), using UNIX Shells Scripts.
Maverick Lab (Inria)
Grenoble, France - Research internship: October 2002--June 2003 /
Link
-
Extraction of semantic information in a 3d scene
with only geometric information using naive Bayes classification. Try to solve the
following questions : which set of polygons form an object, what kind of scene is it ?.
-
Prototype programmed in C++ using Qt and OpenGL. Used octrees for spacial indexing.
Sls group (Tima lab)
Grenoble, France - Research internship: March 2002--June 2002 /
Link
-
Study of the interoperability between the Coware
co-simulation tool and the SOC (System On Chip) design flow.
Skills
Computer Languages
- Proficient in Python, C++, UNIX Shells Scripts.
- Intermediate level in Javascript, HTML, CSS, lua.
- Familiar with ActionScript, Perl, Ada95, Scheme, VHDL.
Library, Tools and Software
- wxWidgets, Qt, OpenGL, OpenSSL, zlib, libpng.
- Flask, Django, web.py, Google App Engine, memcached, SQLAlchemy, PostgreSQL, Apache, Nginx, Sentry, WebSockets, Redis
- Perforce, Subversion, git, CVS, accurev.
- Trac, Roundup, Mediawiki, jira.
- QMake, Autotools, GNU Make, SCons, SSH, NFS.
- Lex/Yacc, Python-PLY.
- Maya, Several UNIX CAD software: Catia v4-v5, 4DNav, NX, Teamcenter, I-Deas.
- vi :), Visual Studio, XCode, Flex Builder, QtCreator.
Languages
-
Native French speaker, fluent English
(lived and worked in the US since 2005).
Hobbies and interests
-
Python and open source enthusiast. A couple of hacks on github, google code (pytof: a program for exporting pictures from Apple iPhoto, and a WebSocket C++ library). Did a rapid presentation of test coverage in Python at the bay area baypiggies group. I also presented a talk about an analytic system I wrote at Machine Zone at RedisConf 2019.
-
Used to manage several association at the
engineer school (musical association, the students cafeteria).
-
Sports : Soccer, Climbing, Hiking, Tennis, Biking, Roller Skating, Snowboard.
-
Others : Guitar, Juggling, Unicycling, History, Reading, Rubik's.