I have been a professional computer programmer for more than 10 years, with hands-on experience in many different projects from small web applications to complex video games. I work well in a group, I have also led small teams and enjoyed it, but I’m not looking for a management position with no coding involved.
I believe what makes me a good programmer is that I like to learn new things and I do it fast. I love confronting a complex problem and focus on it until it’s resolved, which makes me excel at debugging. My main weakness, I think, is that I lose focus if I don’t have a clear objective.
First jobs 1995-1998
My first professional job was in 1995 as an Internet and computer instructor at one of the first cybercafes in Palma, L@Red. From 1996 until 1998 I worked as a systems administrator and C programmer at preView Multimedia Systems (a subsidiary of DVS), where I developed tools (a Windows shell extension and a NFS server) for a distributed audio/video storage system.
Applied skills: Linux server administration, C programming, COM/DCOM, digital audio and video processing.
Programmer at UbiSoft, 1998-1999
In this international entertainment company’s Barcelona studio I developed a 3D engine for the commercial video game ProRally 2001.
Applied skills: C and C++ programming, 3D rendering using OpenGL and an old API named Glide.
Technical Director at factoriaX, 2000-2001
In this startup I formed and managed the technical team with three more programmers and one designer. I was also responsible for the architecture of the company’s main project, a distributed GUI based on CORBA, and of coordinating with different open source projects.
I also administered the company intranet (email, distribution lists, etc.).
Applied skills: Project management, team coordination, CORBA, C++ and Python programming.
Systems Administrator at MAG Global, 2001-2002
In this private insurance company I worked as a network administrator and tech support. I took care of client and server computers and communications infrastructure (email, Internet, telephony, etc.) for five offices in three countries.
Applied skills: Linux and Windows system administration, email servers.
Pub manager, 2002-2003
Senior Programmer at Tragnarion Studios, 2003-2006
I returned to professional programming in this video game studio. I first led a small (two programmers) technology research team with two objectives:
- Researching new videogame development tools, specially dynamic languages and virtual machines but also user interfaces.
- Advising other programming teams on design and architecture. In-house programmer training.
- Managing the collaboration system for programmers, based on Trac and Subversion.
Later on I worked as Lead Gameplay programmer, developing the gameplay framework, coordinating a group of four programmers with the design team and assuring code quality.
I contributed to different open source projects like the graphical engine Nebula Device for which I developed a Python bridge; and the GNUstep framework in which I improved the build system. This last project made me an official contributor to the FSF’s GNU project.
Applied skills: Project and research management. C++, Objective-C, Python and Lua programming. Programming languages implementation. Concurrent (multi-threading) and vectorial (SIMD) programming.
Senior Programmer at The Electronic Farm, 2006-2007
In this company I worked on a scheduling platform implemented with TCL. Unfortunately, it closed down most of its assets in February 2007.
Applied skills: C and TCL programming.
Programmer at Collabora, 2008-2012
In this open source software consultancy worked on different projects:
- Contributed to hildon-desktop, the window manager and compositor for maemo used in the Nokia N900 mobile phone. I was responsible for the task launcher and manager, and helped in other areas of the project.
- Added support for NPAPI plugins (such as Adobe Flash) to the Gtk+ and Qt ports of the WebKit browser engine.
- Contributed to the architecture and development of the Clutter WebKit port.
- Added support for accelerated compositing on various WebKit ports.
Applied skills: C and C++ programming, process and memory management, X window management and compositing, free and open source development, internals and use of WebKit, Gtk+, Qt and Clutter UI libraries.
Knowledge and skills
My first computer was a Sinclair ZX Spectrum with an embedded BASIC environment. Since then I have been an user of CP/M, MS-DOS, Windows, OS/2, Solaris and Linux. Now I use Ubuntu Linux.
I have been an administrator of clients, both Windows and Unix, and of Linux servers from RedHat to Debian. I have managed email servers (sendmail, Postfix and Exim), directory (DNS, NIS and LDAP), news (NNTP), file (NFS and SMB), web (Apache), messaging (Jabber) and databases (MySQL and Postgres).
I’ve used MS Office and I’m now an OpenOffice user. My browser is Firefox and my email client is Thunderbird. I use nano, Emacs or Eclipse depending on the task and the mood. For project management I’ve used Trac, CVS and Subversion. I have used make, Cons and Jam build systems.
I have developed components using COM/DCOM/ActiveX and CORBA. I have used OpenGL for 3D graphics, and Gtk+ and Qt for UI development. For web development I’ve used Helma and more recently Django, I’ve also tried Zope, Ruby On Rails and learned a lot from Seaside. On mobile, I’ve done some personal Android development.
I’m fluent in Catalan, English and Spanish, and have small knowledge of German, Russian and Chinese.
For more personal information such as hobbies and interests, here’s more about me.