- Work Experience
- Personal Projects
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!
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.
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, ...
, 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.
Filter by showing only:
Web application that use tellmewhere.com
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.
Various Jetpack/addon-sdk libraries around jsctypes
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.
Another library that control alienware's laptop lights by calling directly
controller device with jsctypes and windows device API.
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,
- 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!
Apple doesn't offer any API to communicate from the web content of their UIWebView component.
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.
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
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,
- 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!
This firefox extension is a fork of the Jetpack's tool
, developed by Atul Varma.
- 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, ...).
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.
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
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:
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.
Expert in Web/Mozilla technologies:
Mozilla specifics: XPCOM, XUL, JS-Ctypes, XBL, RDF, ...
Experienced in building Firefox extensions and Xulrunner applications.
Good overview of iphone environnement:
XCode environnement: iphone/ipad projects, apple certificates for application installation or distribution, ...
Global iphone SDK practice: various UI objects, geolocalisation, camera, photo albums, rotation support, animations, ...
Advanced knownledge in the web component (UIWebView)
Bindings to external libraries in C (sqlite) or ObjectiveC (Http server library)
Advanced knowledges in OCaml:
Use all aspects of the language: functional, imperative and objects.
C/C++ bindings: xapian, unix system calls.
Customize ocaml with Camlp4, debugging native builds, dynamic loading of ocaml code, ...
And commonly use, when needed:
C, C++, PHP, Python, Java, Bash scripts.
Practice on Windows, Linux and MacOS.
University of Paris 7 - Denis Diderot, France
Master of Computer Sciences, specialized in Information systems.