The entire resume is printable, print it!

Work Experience

2011 - present
Mozilla is maintaining various projects around its Firefox browser.
I've been contributing to these various projects:
  • Jetpack / Addon-SDK which used to be the promoted way to write addons for Firefox desktop and mobile (Android).
  • Firefox OS Simulator is the runtime released on desktop to be able to run Firefox OS on your computer, without having a device. Firefox OS was Mozilla initiative to build a complete Operating System for phones.
  • WebIDE allows to easily write apps for Firefox OS. It includes a code editor and supports pushing apps to the phone or local simulator.
  • Developer tools, where I contributed various tweaks and fixes, like easing the contribution workflow.
2008 - 2010
Yoono is delivering two products : a Firefox extension which add a sidebar allowing you to:
  • discover new content on the web while surfing,
  • interact easily with all social networks and have a summarized view of all events happening in your differents connected networks: Facebook, twitter, linkedIn and even IM like gtalk, msn, etc.
I was the lead developer of all these components :
  • iPhone application that allow multiple accounts aggregation to twitter and facebook. This application uses same JS codebase for network registration and activities requests than firefox extension!
  • Multiple accounts handling in Firefox: I've rewrote the original Mozilla C++ Cookies service into a Javascript one in order to catch all HTTP requests and setup distincts cookies database for each browser tab!
  • Yoono Desktop: I have created the XULRunner application that bootstrap our Firefox sidebar as a desktop application.
  • Web content selection: the most simple way to select any piece of text, image and even flash object and share them to any social network.
  • Website content analysis: automatically walk through all webpages and underline keywords based on an advanced text analysis.
  • System style notification popups: which allows the user to be warned on any specific networks update.
  • Unit tests component: offer a way to execute unit tests while writing code for yoono.
2007
Easyneuf aimed to build a small PC based on Linux focused on ease of use. This was a project of Leneuf.fr, now known as SFR, one of the three biggest French ISP. Moreover all softwares used and developped for this box were free softwares!
I've been part of the team which package and build specifics software for the box:
  • XUL Burner: Xulrunner GUI using PyXPCOM in order to interact with cdrdao command line application.
  • XUL Diag: Global computer diagnostic application which displays info about : USB connected devices, state of internet connection, ...
2006
LeMonde.fr, one major french newspaper, build their self internal CMS: LeSept. This application is built as a quite big firefox extension.
I've given a quick help on these topics:
  • Solving one annoying drawback of current XBL implementation in Mozilla: their asynchronous loading behavior!
  • Fix some character encoding problems between PHP and Firefox.

Personal projects

Filter by showing only: Biggests; Mozilla ( firefox extensions, jetpack/addon-sdk ), Web, iPhone, Ocaml.

2010
Web application that use tellmewhere.com service to display restaurants recommandation along a route between two locations.
But the key feature is to display these restaurants only around lunch time, ie around noon or 8pm during your trip!
Unfortunately tellmewhere works best with french locations, so this service is only in french.
  • Desktop and mobile version,
  • Use tellmewhere.com and Google maps v3 API,
  • Compute the location at a given time along a route,
  • Registered as Chrome Web App,
  • Compatible with Open Web App,
  • Mobile version use geolocation API,
  • Input autocompletion for locations using undocumented google api,
  • Consist of only one html page that handle history change with onhashchange and so allow to share links.
2010
Various Jetpack/addon-sdk libraries around jsctypes

Jetintray:
Jetintray is an addon-sdk (formely jetpack) library. Jetintray offers an API to display a custom icon in the tray, with a label dislayed on mouseover and supports the display of a menu on right click.

JetalienFX:
Another library that control alienware's laptop lights by calling directly controller device with jsctypes and windows device API.

Gmail notifier: A jetpack extension that use JetalienFX to notify for new mails or new chat from you gmails tabs opened in Firefox!

  • Proof of concept of jsctypes use in windows platform,
  • Jetintray shows that we are able to call almost all Windows API with pure javascript,
  • Jetalienfx highlights that we may even control hardware devices by using windows driver kit,
  • More info about windows api call with jsctypes here,
  • Gmail notifier show how simple it is to use a custom library and hacking the browser!
2010
Apple doesn't offer any API to communicate from the web content of their UIWebView component. UIWebView is the iphone component to display web pages. So we can't easily call native objective-c code from our javascript. There is plenty of hacks to provide such communication and the most used one seems to work but in reality it were broking the UIWebView component!
  • Open source library released on github here,
  • Instead of changing window.location, we create an iframe with a special location containing some data. So it does not break UIWebView,
  • Then we use the well known shouldStartLoadWithRequest to catch this request.
2010
One classic graphical example: a Kaleidoscope!
This time, made only with some CSS and SVG, plus some piece of html5 to make it even more awesome.
  • Use SVG clippath to cut a triangle from the source image,
  • Use the experimental -moz-element css property, available only on Firefox 4,
  • And finally add some more CSS transform property to rotate theses triangles,
  • HTML5 stuff brings support of video as a source to kaleidoscop-ize, and drag'n drop support to use local images!
  • Tutorial available here
  • Full demo is here
2010
Unit test editor used for QA of application based on Mozilla platform: Firefox, Thunderbird and all Xulrunner custom softwares.
Very close to mozmill (and selenium, windmill, etc.) but with the focus set to ease test code creation, and give efficient tools and API to write unit test against GUI.
  • Report you in real time test execution directly in your test source code,
  • Spot easily any window, any tab and any DOM element with usefull distinctive parameters: XPath, windows attributes, zIndex order, ... etc,
  • Offer a way to facilitate node identification by simply clicking on it, and seeing in real time what are selected node parameters,
  • Support any xul application: xulrunner, firefox, thunderbird, etc,
  • You don't need to restart Freemonkeys on each test execution, nor on your application reboot. Freemonkeys is an independant xulrunner app, which launch yours and then controls it remotly with a network connexion,
  • Unit test library with: isTrue, isFalse, isDefined, equals, ... etc,
  • Use an empty profile for each test execution, or an existing one,
  • On test execution you can: write debug messages, inspect javascript objects with DOM Inspector, take screenshots of any elements,
  • Ease you some kind of tests, by providing you a simple HTTP webserver in order to simulate some websites answers,
  • fremonkeys API is not limited to synchronous tests but offers an assert library and some usefull API embracing asynchronous execution of your code!
2009
This firefox extension is a fork of the Jetpack's tool, developed by Atul Varma.
I've searched for all possible information about living Javascript objects in Mozilla applications.
  • Show objects of a specific : DOM Document (website, sidebar, xul window), XPCOM javascript server or any Javascript Module.
  • Display living objects by js file, then by line of instanciation and finally by their type.
  • Classify JS objects by Prototype name or attributes names or native types (Array, String, ...).
2009
Firefox extension which aims to show a real world usage of the new JS-Ctypes Mozilla component :
  • Retrieve currently playing song information from Foobar music player into your Firefox,
  • Automatically post to your twitter account all listening tracks,
  • Search for information on current track in wikipedia, myspace or google.
2009
This one aims to ease the use of .NZB files (newsgroup files) by automatically send them to your download tool, sabnzbd for example.
  • Catch absolutely all NZB files downloads, even those which are sent with Content-Disposable HTTP header. I've explained this Firefox Hack to catch all request for a specific Mime type Here on my blog.
  • Automatically save all these files to a specific directory
  • Or Automatically upload to sabnzbd server via its web-API
2008
I've build this tool to watch and analyse all JS code execution in a Firefox instance. It shows a callgraph with the call count and the elapsed time of each function. It has one other experimental feature that record reflow events and allow to playback a sort of screencast that highlight how many and where are done reflows.
This project was mainly the final result of two Proof of concepts:
2008
A set of patches on ocaml compiler to ease native code debugging.
The first patch has been accepted and allow to show some internal symbols that contains functions names.
The second patch is still in discussion because it alters all compilation chain to add more info into assembly code generated by the compiler. This one allows to know where are defined each symbol: file path and line number. So we are able to track anonymous function and improve even more debugging with tools like kCacheGrind or gdb.

Skills

Expert in Web/Mozilla technologies:

Good overview of iphone environnement:

Advanced knowledges in OCaml:

And commonly use, when needed:


Education:

2007
University of Paris 7 - Denis Diderot, France
Master of Computer Sciences, specialized in Information systems.