Curriculum Vitae - Résumé
$Id: CompleteCV.izu,v 1.4 2005/09/18 06:18:17 ralf Exp $
If you've ever been in a position to hire someone in the software industry, you probably had to go through a bunch of
resumes, some being so long they look like little novels, haven't you? So as a joke, I decided to do an exhaustive
description of all the work I have ever done before. I'm generally not too good at embellishing my work (you know like
going from I wrote the open/save dialog to I wrote the full application and designed the shrink-wrap package)
and quite frankly here I don't even need to try.
Yes the format is a joke yet the content here is serious. I really did all that stuff and I'm proud of it.
There's a more traditional short résumé out there, only available on request.
As always this uses reverse-date ordering.
Objectives
If I had to summarize what I consider is the most important in a job position,
I'd say that's team work.
I like feeling part of an environment that I can trust where in return I feel like I can really add something.
I like being part of a team. As such, I expect some people to have more knowledge than I do, so I can learn from them.
I also expect some to learn from my work, and I'd be more than happy to help them in their quest for knowledge.
Being part of a team is a full experience; it implies being able to collaborate positively with others, learn their
abilities, their limits and their idiosyncrasies. It means reciprocal respect for one another's work.
It is both sharing and giving -- unilateral relationships do not work in the long time.
This is the kind of environment I have in mind.
One where I will feel free to rant and criticize, positively, the work or others,
one where I will feel free to criticize negatively my own work,
one where my work will be appreciated,
one where I can feel free to point out impossible tasks that are assigned to me,
one where I can feel free to take on such tasks anyway after some negotiation on the specs,
one where I can let my creativity run free and innovate as I see fit.
Experience
Google Inc. (Mountain View, CA), June 2005 - Present
Software Engineer, Engineering department
Main work:
- Extensions and services for Firefox.
Beatware Inc. (Redwood City, CA), 2001 - Present
Senior Software Engineer, Software development department
(20040926: Projects and products names have been removed on purpose.)
Projects 2004
- Complete JavaScript to ActionScript compiler
- Technology: Portable C++ Engine core, Lex & Yacc clone
- JavaScript parsing (using a lex & yacc clone) based on EcmaScript 262
- Optimization of the intermediary abstract syntax tree
- ActionScript byte code generator
- Server Solution
- Technology: Portable C++ Engine core, Apache Module, IIS Extension, Linux, Windows & Solaris
- Engine for Linux (build architecture, implementation, debug, Unicode support)
- Engine for Solaris
- Apache module (supervised, help, debug)
- IIS extension (supervised, help, debug)
- Caching mechanism (designed, implemented on Windows, supervised implementation on Linux, debug)
- NT Service
- Understanding IIS access right management for deployment
- Installer for Server Solution for IIS for Windows
- Testing on Windows Server 2003, Windows XP Pro, Windows 2000, Linux RHEL, Solaris
- MacOS X port of Desktop Authoring Tool
- Technology: Portable C++ Engine core, Obj-C & Cocoa for UI, XCode
- Port of portable engine, Unicode support in the engine (in parallel with Linux)
- Understanding integration of Obj-C code with C++ code
- Created and maintain XCode project
- Created prototype using the portable engine (C++) with an Obj-C/Cocoa window
- Solving various Unicode issues (UTF-32 on GCC, UTF-16 on Windows)
- Understanding the Obj-C Cocoa framework
- Implementation of UI for the export panels
- Installer
- Server Solution Key
- Design of a self-expiring license keys for the server solution
- Keys are generated from a code identifying the installation machine
- Uses basic encryption mechanism (Helix)
- Portable design (Windows, Linux, Solaris implementations at first)
- Design and implementation the backend
- Obfuscation and integration in the server products
- Design and implementation of a simple frontend to manage and create the keys
- Design and implementation of the part to run in an installer (Windows Installer, RPM script, etc.)
- GoLive Extension for Server
- Desktop Authoring Tool
- IOs
- UI related to export
- SVG related debugging, added CSS support
- JP IME support
- Bug fixing for sound handling, catalog, etc. (help for releases)
- NSIS installer (full version vs trialware, created, maintaining, etc.)
- Java Engine
- Eclipse
- Side tool to diff C++ engine versions
- Planning port
- Identifying tools and methodology to help port
Project 2003
- Server Solution COM
- Demos
- Installer
- Initial prototype
- Server Solution for Microsoft CMS 2002
- Prototype for CMS 2.0 (using Custom Placeholder API for third parties)
- Wrote White Paper on feasibility for a MS Vendor
- Implementation, debug
- Building online demoes
- Installer & documentation, testing deployment
- New .Net installer with SQL setup, serial number registration, etc.
- Integrating project to work with Server Solution .Net's media lib (separate project)
- Server Solution for .Net
- VB.Net
- Added MCMS support for Media Lib (C#/VB.Net, SQL, etc.)
- Installer
- Created custom .Net WinForm application for initial setup
Projects 2002
- e-Picture Pro 3.0
- Installers (ANSI vs Unicode, detect FrontPage & Office and integrate)
- Bug fixing
- Photoshop 5.5, 6 & 7 support (with text layers)
- Export UI enhancements (HTML preview)
- e-Picture Pro 2.0
- Design and implementation of SVG export
- Design and implementation of SVG import
- Adding support for Japanese translation
- Adding MBCS support for Windows 98 Far East Edition
- Complete overhaul of engine and UI to support Unicode for NT
- FrontPage integration for ePP 3.0
- Prototype:
- Access FP via OLE scripting
- Add content to current page, create documents as needed
- Implementation & debug
- Find how to install
- DTC (FrontPage ActiveX extension)
- Find examples of how to develop a DTC for FrontPage (MSDN)
- Repackage engine as ActiveX VC6 project with DTC features
- Understand how to communicate with DTC and FrontPage via OLE Scripting
- Understand how to integrate with FrontPage toolbars
- Create a Visual Basic Addin for FrontPage (to control the ActiveX from toolbar)
- Implement basic features of the product
- Once prototype is fully functional, bring in other team members to help finish product
- Understand how to create an installer
- Server Solution for MS CMS 2001
- Understanding MS CMS 2001 product and usage
- Prototype for CMS 1.0 (hacking into the ASP source to create entry point)
- Integration of Server Solution into MS CMS -- implement, debug
- Prepare demoes, deploy of various servers and laptops
- Create a basic NSIS installer
- Server Solution XML
- Understand what XML is all about and how to take advantage of it
- Change Server Solution file formats to XML
- Find portable library to handle XML in C++ (libxml2)
- Implement usage of XML library initially for Win32 and Linux
- Update ASP front end to use XML for communication with backend
- Update ASP.Net front ends
- Server Solution COM
- Explore COM technology (for the server backend)
- Understand how to create a COM component, how to manage collections
- Discuss architecture & DOM with the team
- Implement basic prototype with a few collections and access using a VB6 client and Excel
- Transfer project to the team for completion
- Installer, documentation
- Server Solution
- Console and command-line driven backend server for Windows
- Used by ASP frontend (separate project, merely providing integration & debug help)
- Installer for the IIS/ASP frontend
- Installer for backend
- Adding UTF-8 support
- Add VeriSign code signing support to backend installer and server exec.
- Repackaged frontend installer to match product line (Developer vs Pro versions, etc.)
Permanent projects
- Projects and CVS source tree maintenance
- Responsible of creating, policing, managing and maintaining the projects for the different products
- Responsible & policing for the CVS source tree layout
- Maintenance of projects include transition from VC6 to Visual Studio .Net then VS.Net 2003, etc.
- Creation & maintenance of the MacOS X XCode project
- Creation & maintenance of the makefiles for the portable engine
- Creation & maintenance of the build processes
- Application kits
- Maintaining core portable C++ application kits
- Works on Windows (Visual Studio .Net, MFC), Linux (RHEL, Debian) & Solaris (GCC)
- Used by desktop or server software to provide portability layer
- Added support for Unicode UTF-32 (GCC) vs UTF-16 (Win32)
- Added support for MBCS (Win32)
- Periodically updating, adjusting, enhancing, etc.
- Auto Build Process
- Technology: Perl, Bash, Cygwin/NT, ASP.Net, Visual Studio .Net, NSIS
- A master Perl script that automates the Visual Studio .Net build of the various desktop and server applications
- Automatically checks out latest source from CVS
- On successful build, automatically generates the installers
- Automatically report build errors or success notification by email
- ASP.Net frontend to check build status or launch a new build
- Portable Engine Build Process
- Makefiles to build the portable C++ engine
- Work on Linux, Solaris, etc.
- Auto generation of dependencies (based on GNU Make features)
- Easily customizable to support new Unix-like variants
- Periodic maintenance of the engine on the various platforms to fix Windows-specific code added to the portable engine
Beatware Inc. (Redwood City, CA), 1999 - 2001
Software Engineer, Software development department
- Development of e-Picture 1.0 & 2.0, an award winning web graphics software
- In charge of:
- initial port of application from MacOS to Windows:
- enhancements of the cross-platform application skeleton and intermediate cross-platform UI classes
- implemented on top of Win32/MFC
- import/export modules design and implementation:
- RealMedia export and Windows Media Format import/export using respective SDKs
- export modules provides UI for configuration settings using cross-platform code
- cross-platform e-Picture file format definition, with zlib compression
BeatWare SARL (Paris, France & Menlo Park, CA), 1998 - 1999
Software engineer, Software development department
- Development of e-Picture 1.0 for BeOS and MacOS
- In charge of:
- Initial port of application from BeOS to MacOS:
- Design of the cross-platform application skeleton and intermediate cross-platform UI classes
- Implementation on top of MacOS/PowerPlant
- Import/export modules design and implementation for web-graphics standard formats
- Handles TIFF, JPEG and PNG using the public domain libraries (libtif, jpeglib, pnglib)
- Custom code for Photoshop, GIF, and Targa
Gencom (Vélizy, France -- telecom & software consulting), 1997 - 1998
Software engineer. Onsite consulting for Rockwell Automation
- Gencom (Vélizy, France -- telecom & software consulting)
- Software engineer. Onsite consulting for Rockwell Automation
- Development on a ControlNet communication module 1747-SCNR for the SLC500 controller
- Main objective:
- Design and implementation of the backplane interface between the module and the controller, controlling the bridge ASIC and responding to interrupts with tight time constraints
- Design of the protocol for exchanging real-time I/Os with the controller via shared buffers
- Secondary objectives:
- Design of the RAM/Flash layout
- Design and implementation of the flash update process
- Design and implementation of the bootstrap process (with CRC checking to recover from invalid or incomplete flash updates)
- C and x86 ASM development, based on a proprietary preemptive, multitask, reentrant kernel
Mipsys (France -- software & hardware consulting), 1994 - 1997
Software engineer
- Design and implementation GeekPlayer, a "Computer Aided Experiment platform":
- The objective is to be able to plug sensors to a computer and let the user graphically build an automaton graph to make actions & decisions depending on the sensors' values
- The target hardware is the second BeBox prototype, featuring two PowerPC processors and an integrated Analog-Digital I/O port particularly suited to easily plug'in probes and relays
- Development done in C++ under BeOS
Computer Science Skills
|
Languages:
|
Excellent knowledge of C++, C#, Objective-C, PHP and JavaScript.
Also skilled with C, Python, Perl, VB.Net, VBScript, Pascal, Assembly 68000, 80x86 and PPC.
Notions in Lisp, Scheme, Self, Haskell and ML.
|
|
Systems:
|
Windows (from 95 to XP), MacOS (from 7 to X), Linux, Solaris, BeOS, VAX/VMS, MS-DOS.
|
|
UI APIs:
|
.Net (1.0, 1.1), MFC, Cocoa/MacOS X, PowerPlant/MacOS 8-9, BeOS, OpenWindows 3 (X11), GKS.
|
|
OS APIs:
|
.Net, Win32, MacOS X, BeOS, BSD-style sockets.
|
|
Tools:
|
Visual Studio, XCode, CodeWarrior, vim, Emacs, makefiles,
source control systems (CVS, PVCS), several debuggers, profilers, code coverage tools,
and embedded tools (linkers/relocators, hardware and ICE CPU emulators.)
|
|
Methodologies:
|
Familiar with xUnit and Agile/Experience Programming concepts.
|
I enjoy learning new programming languages, tools and methodologies as needed for the task at hand.
Education
1991 - 1994 (3 years)
- Graduated with the equivalent of a B.S. from a 3 year program in Computer Science at the Université de Technologie de Compiègne, France
- Major: Software Engineering
1989 - 1991 (2 years)
- Graduated from a 2 year program in Computer & Electronic Science at the Université de Créteil, Paris XII, France
- Major: Electronics
1988
- Baccalauréat Série C (Mathematics) (High School diploma equivalent.)
Internships
1994
- Second training period (6 months) at Mipsys (Saint Aubin, France -- software & hardware consulting)
- Software engineer
- Design and prototyping of a "Computer Aided Experiment platform":
- the objective is to be able to plug sensors to a computer (using dedicated plug'n'play hardware) and let the user graphically build an automaton graph to make actions depending on the sensors' values
- the software prototype is written in C++, running on the innovative BeBox, a machine newly introduced by Be Inc. The original non-yet-public BeBox prototype featured two AT&T Hobbit processors with NuBus extension slots and a couple of 56001 DSPs with a multitask preemptive OS, making it an ideal platform
- Secondary objective:
- design and implementation of an HPLC (Liquid Chromatography) analysis software on MacOS 7
- uses Mipsys' data acquisition card linked to the HPLC detector
Summer 1993 (one month)
- Free training period at Océ Graphics (Créteil, France) in the Technical Division, QA Department
- Objective: Installation of Solaris 2.2 and analysis of software compatibility with older Solaris 1.0 platforms
Comment: Yeah, that's exactly it. I did install Solaris 2.2 all by myself (and actually like to think I understood
most of what I was doing, and that was way before Google could deliver the answer to any technical question). Then
I proceeded testing if their own software would run under it, which of course it did, and then I enjoyed writing a
neat little documentation.
1992 - 1993
- First training period (6 months) at Océ Graphics (Créteil, France)
- Software engineer in the Technical Division, QA Department
Objectives:
- Port of the HP-GL/2 (graphic language for plotters) test software from IBM-PC/MS-DOS to the Sun/Solaris environment
- Design of the graphical UI to control the test software, implementation under Solaris/OpenWindows using DevGuide
Long description:
- There were actually two parts in this training period
- The first one was porting some test software for plotters. The software was written in C for MS-DOS with low-level access to serial ports and a text-based interface. It needed to be ported to Solaris, which involved mostly rewriting the IO management (kind of tricky) and adjusting the C code to have it compile under Solaris.
- The second part was adding a graphical UI on top of test software. First I had to familiarize myself with DevGuide, a user interface generator for OpenWindows. Then I came up with the mockup of the user interface and presented it to the team. Finally I implemented it
Comment: that was my first assignment where I was part of a team working on a real project with a useful purpose;
I enjoyed working with lot of qualified people with diverse technological background; I also enjoyed having an outsider's
view to all the little politics and department's internal struggles.
1989 - 1991 (2 years)
- Training Period (2 months) at the Phillips Electronic Laboratories (Limeil-Brévannes, France)
- Software engineer in the Microsystems and VLSI Architecture Department
- Objective: Implementation of a user interface builder for a keyboard-less computer
- Long description: PEL was experimenting with pen-computing, back then. My task was to implement a portion of the user interface builder they were designing for their embedded devices
Comment: early in the training period I was told the project was rather doomed. Welcome to the corporate world :-)
Personal Projects, Hobbies and Misc.
One of my main hobbies is programming. Or more exactly trying interesting programming ideas.
Some projects live a long life. Most simply die by natural selection.
More details on these projects can be found on the Project List page:
- Hint, a research project on a not-quite prototype-based/functional toy language
- SNE, a simple network exchange library using C# and sockets
- SlideShow, a simple slide show viewer in C#
- Yasashii, a simple Japanese-English dictionary in C#
- Nerdkill C#, a blast-all-these-nerds kind of game, in C# with DirectX
- Izumi, this content management system
- BatteryInfo, a floating battery level indicator, in C#
- RIG, a web-based photo album viewer, in PHP
- PowerPulsar, an extensible FFT spectro-psychedelic sound analyser which displays graphics in sync with the music being played
- Won the BeOS Master Awards 1997 in Boston
- Nerdkill, a popular BeOS game originally started as a four-day coding contest
- VideoShooter, an unpublished ScreenCam clone for BeOS, later ported to Windows; uses a simple delta RLE encoding for video and adpcm encoding (11 kHz/4 bits) for audio
- SoundPatcher, an unpublished application that broadcasts voice over LAN or Internet for BeOS; uses an UDP datagram stream, BSD sockets calls and adpcm encoding for audio (11 kHz/4 bits)
Other hobbies and misc stuff, in no particular order:
- Maintaining my linux servers and LAN network
- Managing my web site
- Enjoying being home
- Taking a lot of pictures and posting them on my private or public web site
Languages
- French: Fluent (native)
- English: Fluent
- Spanish: Fluent (haven't spoken any in a while)
- Japanese: No. Nice language though
- Esperanto: No
- Others: Will consider
References
<your name here>
end
R/

This work is licensed by Raphaël Moll under a Creative Commons License.
Display Izumi & PHP Credits
432 accesses, 1 access from 38.107.179.208
Visited 5 times by Google, last 2011/11/22 05:16
Visited 7 times by Yahoo!, last 2011/10/09 03:37
Visited 1 times by MSN, last 2011/06/16 09:20
|
<
Generated in 0.24 seconds the 02/06/2012, 09:47 AM by Izumi 1.1.4 >
|