Curriculum vitae

Engineer, programmer and technical manager, with deep expertise in digital printer development, especially in image processing, data pipeline and color workflows. I have been the technical lead of developer teams since 2001: together we've built some really interesting software for HP —changing in the process how printers work, how the imaging pipeline is architected, and how engineers design the data pipeline. I am a manager and technical lead that can —and does— actually code.

My interests include team dynamics, and in the processes and structures that make teams work and innovation possible.

Education and experience

I received a Ph.D. from the Polytechnic University of Catalonia (UPC, Spain) in 2000 and an MD in Mechanical Engineering from UPC in 1994. I have worked as an engineer specializing in inkjet writing systems at Hewlett-Packard in Barcelona since 1996. From 2007 to 2010 I managed an technical R&D team at HP. In 2010 I became an HP Master Technologist, which means that I got to have an impact in the technical direction of the company, and significant latitude in choosing which problems I work on, while still leading technical teams. In April 2015 I moved to Cambridge (UK) to work for Xaar, a company that designs and manufactures inkjet printheads, as a Principal Engineer in charge of building the data processing discipline in the company.

I started programming professionally 21 years ago. The first program I wrote and sold, in 1994, was the C++ controller of a machine for testing helmets. After a period of self-employment —during which I also founded a company that designed and built data loggers for the major Spanish motorbike magazines— I was hired by HP's Barcelona lab as an R&D engineer. During the 19 years I spent at HP I always worked with partners in the US West Coast, traveling regularly and at times reporting to US managers. Even though I have been leading engineering teams for the last 13 years I have always retained direct development responsibilities.

My last months at HP were spent working on a new way of processing color for printing, and designing and implementing the pipeline for a 3D printer.

Independent Programmer, 1994 to present

Over the years I have built a number of online apps, starting with a news aggregator in 1997 (in Perl). My last venture is Greaterskies, an online application that generates and sells high-resolution personalized star charts for a given place and time. I implemented the astronomical calculations and PDF generation in Common Lisp; the rest of the back-end is in Python. The front-end is plain HTML and Javascript.

I have also written a couple of iPhone apps. The only one still in the iTunes store, MapJotting, allows you to take notes and store them, with their geographical coordinates, in Dropbox text files. I wrote it in a weekend because I wanted a sensible way to keep track of a bike trip around Europe.

I have also done contract work, including working with Pyramid and SQLAlchemy in Python to add database functionality to a website, and implementing a Bayesian classifier in Python.

Some of my code is at github, including a simple implementation in Python, using symbolic math, of some of the key concepts of Economics.


I enjoy writing and teaching. Most of my short articles I publish at

The Hacker Ways

I started writing The Hacker Ways in order to help my teenage boys learn to use the computer at the command line. At some point I realized it would be useful for other people, and formatted it as a book. It is not finished: I need to add a couple more chapters, at least. You may read it online, buy its current version, or fork it at github.

Founder,, 2008 to 2010

I created in order to promote unicycling as a teaching aid in Spain. I imported and sold unicycles, wrote a tutorial on how to learn to unicycle, and taught many kids to do it. The fact that it teaches perseverance and that the rewards are high makes unicycling a great tool for helping kids increase their self-confidence. I closed it down because it was too hard to keep up with bureaucratic requirements.

Hewlett Packard, Barcelona Lab

Master technologist, January 2010 to present

Developing inkjet Writing Systems and Color pipeline for all products in the Barcelona labs, and mapping out the future technologies.

Part of my job involves working with management to figure out what will be the future technological needs. For example, when I realized about a year and a half ago that our main design and prototyping software was becoming too unwieldy (after 10 years evolving) I had to convince the organization that we needed to set up a development team to re-implementing it.

Another part of my job is actually building stuff. I get quite a bit of freedom on choosing my problems; when we started the redesign of the above piece of software, for example, I implemented a significant part of the framework myself. I believe that a great way to architecture software is to map it out —not only documenting it, but also with working code.

These days I am spending about half my HP time devising a new way of processing color for printing, and the other half designing and implementing the pipeline for a 3D printer.

R&D Function Manager, January 2007 to December 2009

Manager of a team of 11 engineers, physicists and mathematicians, designing and implementing image manipulation and printer control algorithms for all new inkjet printers. I retained direct engineering responsibilities.

Most of my time was spent working with the engineers, helping them in their day-to-day work, and removing obstacles. I also had to make sure that we covered the needs of all the new products being developed in the lab, and balance our efforts adequately.

I stopped being a manager because I figured out that I am more effective leading a team when I don't have people manager responsibilities, and have enough time to actually contribute code and solutions to the problem at hand.

Senior Technical Lead, Writing Systems Technology Group, 2001 to January 2007

The group's responsibilities included developing the image processing algorithms required by increasingly sophisticated printers, and building the infrastructure that enables engineers to deploy them in our products. I implemented part of the embedded software that controls the printing process of HP's new generation of large format printers.

During this time I started, architected and led a multi-site effort to create a common set of development tools for designing printer's writing systems across divisions. Two key aspects are:

  • It combines a high level language (Python) with a fast C++ core. This enables easy prototyping and makes it available to non-CS engineers.
  • The same code that runs in the host and is used by the engineers to experiment and figure out the best algorithms is then run by the printer. This removes transcription errors and makes development much faster.

This software is probably my main contribution to HP's business. It is used by many engineers across US, Asia and EU divisions, and it powers millions of printers. I recently led a full re-architecture —after 10 years it suffered a bad case of bit-rot.

R&D Engineer, 1996 to 2001

Responsible for algorithms for image manipulation, printing strategy and print-head maintenance.

  • Designed the automatic print-head maintenance routines of a large format printer. I reported to the San Diego-based team designing the print-head.
  • Designed image processing algorithms. Established the mathematical foundation of print-mask design. The algorithms have been granted several US and European patents. Some of them have been published in "Constraint Solving for Inkjet Print Mask Design", Journal of Imaging Science and Technology, September/October 2000, vol. 44, no. 5; p. 391-397.
Faiter 1994 - 1995, Mechanical Engineer

Faiter designed and built plastic injection molding machines. My tasks included:

  • Mechanical design of injection molding machines, including creating a CAD-based design environment.
  • Wrote a CAD program for hydraulic systems in C++.

This was my first job out of school, and I was the only mechanical engineer in a small company designing and building injection molding machines. Instead of doing the sensible thing —sit down and design mechanical parts— I taught myself Autocad Lisp, and wrote a program that could design the overall machine from specs. And I did it in 3D (which at the time required figuring out the geometry yourself). When I had it working we could, for the first time, actually know the size and shape of the piping we were going to need.

US Patents

A note on names: my full name is Juan Manuel García-Reyero Viñas, translated to Catalan as Joan Manel or Joan Manuel. It has been in various occasions shortened to Joan Manuel Garcia, Juan M. García or Joan Manel Garcia; that's me on the patents below.


(The list is incomplete, sorry).

  1. Algorithm For Fast Print Mask Generation FPG (1998).
  2. Pen Dependent Complementary Weighted Printmasks (1999).
  3. Pre Cooked Masks (1999).
  4. True Two Bit Pipeline (2000).
  5. Progressive Print-masks Generation Algorithm (2001).
  6. Nozzle Health Assesment Scanning Printed Data Using The On-board Scanner (2001).
  7. Allow For The Effect Of Drop Satellites During The Masking Process (2002).
  8. On-the-Fly Swath Height Determination (2002).
  9. Roll Printing Bar (2007).