Welcome
Hello,
this website is an extension to my curriculum vitae and a place to gather useful data. My scientific publications, technical reports, and thesis are available in the publications and writings section. There is a code samples section, where you can see my programming style and quality.
What follows in this section is a series of small articles which form my biography. Probably the most interesting are the ones which talk about more recent times, that is why they are written in reverse chronological order. To contact me you can send me an email.
Africa and a new start in Cape Town
I will be starting soon my delayed long trip, although this time instead of a motorcycle I'll have my girfriend travelling with me. Also instead of going around South America we will travel from Addis Abeba to Cape Town overland as backpackers.
I will be arriving to Cape Town in May 2012, ready to start there again in some job that hopefully will be as interesting as the ones I've had in the past. High performance computing, event driven systems, real time programming, front office development and support and anything related to complex systems are my interests for my time there.
Later projects as a Senior Consultant
In the last few months between my resignation notice and the expected start of my trip I handed over the team leadership to Karl Fallon, and then took part in two shorter development projects.
I coded part of the Sanlam PoC for a trading system based on an event driven language, and this is a project I enjoyed a lot. I got to learn the trade lifecycle, and I got to code which is something I've always preferred to systems admisnitration.
Then when I had only two months left with the company, I was sent to BP to code a bridging application between two data caching applications used there. Again this was a project that I enjoyed and that I finished well before the deadline.
In the middle of that project was when (as predicted by some good friends) I found a girlfriend and called the trip off. Excelian was glad of cancelling my resignation, and given that I have a wide range of skills and that I have a record of getting bad projects to their feet, it was decided that I could do useful work for the company being assigned temporarily to projects that needed some help.
In this last year I stayed for a few months with Rabobank, Aegon, Prudential and Unicredit, working with DataSynapse, Platform Symphony, or Microsoft HPC as required. All these projects have been largely successful. Rabobank is now the second client of the GaaS team, Aegon and Prudential two of the very first successful implementations of Microsoft HPC, and Unicredit deployed its first Platform Symphony 5.1 cluster to run an application that needs a 100x throughput improvement.
Daiwa Securities and Grid as a Service
My next project was to take me to a new level of responsibility, as the leader for the Grid as a Service team in Excelian. These were the first years of "as a service" offerings, and we saw that it would be relatively easy to offer a "grid as a service" using off-the-shelf grid middleware, virtualization, and supporting tools. We got a contract with Daiwa Securities to implement a first version of this model inside their datacenters, and I was put in charge of the team. The proof of concept was successfully made by another two Excelian consultants that left to pursue their dreams in other countries (a recurrent theme for Excelian).
In short, I was given a project with a great potential and using the very cutting edge of current technologies. We were using XenServer virtualization over powerful computer blades, with dynamically generated linux and windows instances and a multidatacenter grid running on top of it all. In RBS I had access just to the grid software, but in Daiwa my team and I managed the whole technology stack, from iLo access to the hardware to the applications that ran on the grid.
We got off to a rocky start, with not enough documentation, not enough manpower, not enough knowledge, and late on every deadline. Over the next few months we got gradually on our feet understanding and then perfecting the infrastructure. We rearchitected the grid distribution, sorted out network issues on the firewalls, reengineered the DHCP and DNS allocation, installed monitoring and alerting, got the control of the databases from the Daiwa IT team, stablished an automatic image deployment system, and finally got the infrastructure to a stable state.
Once the project was stable and I feel I could hand it over safely, I resigned in order to travel around South America on a motorcycle
Royal Bank of Scotland
One of the Excelian consultants working for the RBS grid team left the company, and that time I was asked to cover him. That was a daunting project, the grid infrastructure at RBS is one of the largest in the world and the grid team there is known for being really good at their jobs.
I was lucky to work with Carlos Manzanedo Rueda, while he still was an Excelian consultant. He mentored me and helped me to become skilled enough to stay in the team, which was no easy task. After more or less eight months of very hard work I got the technical, organizative and political skills to be comfortable in that job. In that time I learnt to think nothing of being responsible for an application that ran on thousands of machines. I learnt to communicate with hundreds of different people using our services, each one with their own goals, timelines, and characters. I had to do a lot of out of hours work, sometimes in the middle of the night, and in a couple of memorable ocassions to deal with complete datacenter failures. I can say that it was in this project where I learnt to work in a global, well run corporation that tries to be the best, at least on the IT level.
Excelian
I've spent almost four years with Excelian, and I can probably say that it has been the best formative experience of my life. I'm immensely grateful to them for it. This is the first of four posts describing the projects I was involved with during this time: The first few months before I was assigned to any project, Royal Bank of Scotland, Daiwa Securities and the leadership of the Grid as a Service team, and finally the many short term involvement in projects after that.
Excelian employs many young people with little practical experience, as long as they appear to have potential for the future of the company. I was not different and I could really only offer them a bit of development and systems administration experience, a Master in distributed computing, and the ambition to work hard and do a good job. This was hardly enough to place me with a client, so it was my task of work in internal projects to develop my own skills and marketability.
The two main projects of that time that I worked on were a set of scripts to automatically manage a set of virtual machines on demand, and a windows port of Ganglia. The first one I see now as a prelude to my former work with the Grid as a Service project. Working with VirtualBox and Python, Peter Jenkins and I developed a series of scripts to copy, start and stop virtual machines remotely, and did very interesting work to assign them automatically MAC and DNS addresses. This was much before Amazon EC2 and Eucalyptus and all the facilities that now make it that easy.
The second project I hold dear was a Windows port of the Ganglia software, which I think is still the leading option to monitor large groups of machines. Is now very primitive, and not that reliable, but still is very lightweight, does the job, and very importantly, is free. This project led me to my first client, ABN Amro just after being bought by RBS, where I installed a few Ganglia clusters for them and proved that I could go to a project and keep everyone happy.
Why did I came to London?
It was fun to be a researcher, and I learnt many useful things, but I wanted a change. I wanted to learn about finances, investment, project management and business management. I was in a good position to do this, having recently studied a MSc. in parallel and distributed computing, with experience in complex systems from my job at the ITI. Those are skills which can be very valuable for banking businesses, which are known to process enormous quantities of data which is very difficult to process. I could trace a relationship my complex systems and chaos theory knowledge to market behaviour and business relationships.
I have good social skills, being able to create bonds with new people and talking in front of audiences I haven't met before. I have proved to be able to work on my own for long periods of time, creating and meeting my own deadlines, seeking for help when it is needed. I know also how to collaborate in a group, maintaining a good working mood. I have excellent problem solving skills and a good knowledge of good programming practices to produce efficient and maintainable code. I am motivated to work and learn.
The job I was looking for would be in the computing department of a big finance related firm, developing tools for the firm which would enable us to understand and process big quantities of data, based on distributed real time techniques. This way I would have access to the knowledge and data to make some complex systems research to create value for the long term. I would have some contact with market and business experts and some occasional duties which would require dealing with people more than with computers.
Developer at the ITI
Mn change of roles in the company was induced by a shortage in funding we got at the research group. While the next grant was being cooked by the government I got transferred to a development group which was in need of help. It had the mission to code a business processes graphical manager to give to the spanish small and medium businesses the technical help they need to compete in the global market. It felt good to be transferred there, actually, I learn there to code in a team, which is much better than to code solo. I was able to work with the insides of the Eclipse platform, which was both the IDE we used to code java and the application we were transforming to give to our customers.
MSc. in Parallel and Distributed Systems
I was working in a research institute inside the UPV campus, and my duties included maintaining and developing a massively distributed computing system. Moreover I had a small computing cluster I could use at my will and I was researching into inherently parallel systems. It was logical to order this knowledge into some postgraduate studies so I enrolled in the Master on Parallel and Distributed Computing Systems.
It was some kind of a bittersweet experience.
Sweet, because it was easy, I had the resources and the knowledge to learn fast and well, and without much more effort than being busy 60 hours a week.
Bitter, because I noticed how far from the mainstream my field of research is. Most parallel computing is made with old computing paradigms, and in languages like C or Fortran that make bad tools for massive decentralized computing systems like the ones I'm researching. Peer-to-Peer is hardly considered as important as it will be in a near future. No word was said about the importance of high-level computer languages to develop distributed systems.
With these studies I acquired skills I could later use to process large quantities of data, a view on the parallel technologies used in the industry and the knowledge that much remains to to do in this field of computing science.
Researcher at the ITI
The Instituto Tecnológico de Informática has about one hundred researchers distributed in about ten research groups. The complex adaptive systems group is one of the smallest ones and its researchers were from industrial or mathematical backgrounds. As I had studied computer science I was put in charge of building and maintaining the group cluster and computing services. This involved installing and configuring Linux on the six computers which would be the computing nodes, setting a common authentication and user disk space services with samba, nfs and ldap so the users could log in anywhere and see always the same disk space, which would physically reside in one of the servers. Finally all this data would be replicated daily to the backup server, which was able to maintain the services if the main server would fail, changing roles between backup server and main server.
I was also given the responsibility over the application used to distribute programs in the cluster. This is a state-of-the-art java application able to build networks of thousands of computers and distribute information effectively. Agents containing java applications can use the network to compute, travel and communicate. I got to understand this application without the help of the documentation, which didn't existed, the difficulty of this task was my main motivation to write the documentation myself, it is not fair for the application nor for the programmer to be so difficult to understand. I also corrected many bugs in the code and improved the communications protocol
I also learn how to code genetic programming algorithms. Genetic programming is a branch of complex systems that use the mechanics behind the natural evolution to solve mathematical problems. My best accomplishment was to be able to code some modules for a widely used library so it could interface with our distribution application and use large networks to solve experiments. It is possible now with this tool to harness the power of many workstations to solve problems, and research the dynamics of complex computing networks. This code is available in the website and in the ECJ project CVS.
Of course I had also the tasks of any researcher, that is, to get your results published so the money keeps flowing in. I researched into (and got published articles about) random topology network dynamics and problem solving with genetic programming. I also co-authored a book chapter about bankruptcy prediction using these techniques.
Complex Systems
This is a research field with a thousand names, and many of them sound great. The best to get attention in parties is to say that you are a researcher of Chaos Theory. You can also call it Non-linear Dynamical Systems, but that sounds boring. I first heard of all this while I was in the University, I read the Chaos book by James Gleick and got instantaneously enchanted by the science it described. I had always wanted to be a scientist (with white lab coat, please) and I discovered there the exact field I wanted, it had to be researched with computers and held the key to incredible mysteries.
All these buzzwords hide a research field which deals with systems with an almost infinite number of variables which interact between them in time, feedbacking the system. An evident complex system is the weather, with the butterfly effect and all that. The evolution of life is another, backed by genetics. Human societies, the mind, the stock market... complex systems are everywhere, and advances in this research field are showing an enormous potential.
I was lucky enough that my efforts to research into this field got me a career thesis topic in something as cool as using the behaviour of ant colonies to solve an industrial problem. And later this thesis got me a research job in the Complex Adaptative Systems group in the ITI, where I would code and maintain a massively distributed application that seemed to came out from sci-fi novel.
The University
I went to the Universidad Politécnica de Valencia to study Computer Science in the Facultad de Informática. The first thing I learnt there was that being smart was not enough when I failed all my exams in the first semester. Afterwards I would make an effort and I would finish having my average grades in the top 20%. So I could say that I learnt to learn in the University, plus a wide background covering almost every field related to computers and programming. Not that my knowledge is very profound in the majority, but I would know what to study if I need something in particular.
I have found particularly valuable having acquired a good proficiency as a Linux user and system administrator and also having assimilated a good understanding of Programming Engineering, the part in computer science that takes cares of developing good programming methods and techniques independently of the programming language used.
A special mention of those long seven years, and one of the reason for taking more time to finish my studies, are the two years I went to study abroad. I went as an Erasmus student to Genova, Italy, when I was on my fourth year. I learn there a new language and how to effectively communicate with people, how to make friends and colleagues. How to behave in a group, adding value to it.
It was also a really funny year, so I went two years later to a more exotic, and difficult, place. I was for ten months in Monterrey, Mexico, in the prestigious Instituto Tecnológico y de Estudios Superiores de Monterrey. I refined there my social skills and got introduced to the complex systems field, doing my career thesis on algorithms based on the behaviour of ant colonies. I used them to guess an optimal way to pack boxes into two-dimensional containers. That was my first publication, the happy end of my Computer Science degree, and the start of my scientific career.