Archive for March 2009
BBQing @ The LetMeGo Immersion
Just pictures this time:

Aydee (not seen) and Maria cooking one of their delicious meals. Nicolas, Lucho, German, and Henry enjoying it.

Aydee and the main elements of a Colombian BBQ: blood sausage, "chorizo", maize, and red meat (not seen).
Back in NYC for just over one day and for a very good reason….
The most difficult aspect of my participation in the LetMeGo Immersion has been the fact that it keeps me away from my beautiful wife and lover, Tania.
This fact is constantly in the back of my mind, but two nights ago, when the team took a break to attend BogoTech, the ache of her absence was particularly strong. After the event, when we all headed out to eat pizza, we were joined by the girlfriends and wives of nearly every male member of the team; unfortunately, my darling Tania was nearly 2,000 miles away, in NYC.
After dinner, the men were preparing to return to the Immersion, and their girls were preparing for another lonely night at home—watching this scene, I was struck by how much these women clearly missed the presence of their men, and vice-versa. And so I made two decisions, which are summarized in the chat message below, which I sent to the team early the next morning.
[03/26/09 7:23 AM] Alex:
Hi Gentlemen!
Last night, I was pleasantly surprised at how happy your girls were when I announced that we would meet this morning at 8AM, instead of returning to the Immersion immediately. On my way back home I couldn’t stop thinking about it, and about Tania, with whom, as of the stroke of midnight, I will have spent eight years of bliss.
For that reason, I have allowed my heart to overrule my head for a second time: I have decided to fly to NYC today to share this anniversary with my lover. I will be back to the Immersion on Saturday. This will be a surprise for Tania. Please, please don’t tell anybody until tomorrow. As you know, news travels much more quickly than an airplane.
I want you to know that I am still dedicated to our shared objective of reaching the beta milestone before the Immersion ends. I know that many of your stock grants depend on reaching that milestone. I have promised to work shoulder-to-shoulder with you, and I will maintain that promise by working at least two of the weekend breaks that are scheduled during the second half of the Immersion period.
I am heading out to the airport right now. I will be working in the plane on Cockerr and the architecture of Charrly. Tomorrow and Saturday I will connect to chat with each one of you. I will also be available on my cellphone.
See you on Saturday. Thanks a lot, gentlemen!
I started writing this while lying in bed watching Tania sleep, feeling like the happiest guy on the planet.
She just woke up… bye now.
Alex Torrenegra
P.S. Here is the original version of the message in Spanish (accents omitted on purpose):
[03/26/09 7:23 AM] Alex:
Hola caballeros!
Anoche me dejo sorprendido la mas-que-feliz reaccion de sus chicas cuando dije que nos veiamos hoy a las 8 AM. Camino a casa no pude parar de pensar en eso y en Tania, con quien hoy cumplimos ocho años de felicidad hoy a la media noche.
Creo que es por eso que el corazon le gano a la razon dos veces seguidas: He decidido volar a NYC hoy para compartir esta fecha con mi amante. Volvere el sabado a la casa estudio. Esto sera una sorpresa para Tania. Les ruego que por favor no le dejen saber a nadie de mi viaje sino hasta manana. Las noticias vuelan mas rapido que el avion.
Se que todos tenemos como objetivo lograr el full beta antes de acabar la inmersion y que de eso depende una buena cantidad de stock grants. Mi compromiso de trabajar hombro a hombro con Uds sigue en pie. Es por eso que trabajare por lo menos dos de los fines de semana de break que tendremos en la segunda mitad de la inmersion.
Salgo en estos momentos para el aeropuerto. Estare trabajando desde el avion en Cockerr y en la arquitectura de Charrly. Manana y el sabado en la manana me conectare para charlas con cada uno de Uds. Estare tambien disponible en mi celular.
Nos vemos el sabado. Muchas gracias caballeros!
The Hendrrix Scope Is Ready For Prime Time!
The Hendrrix Scope, the system of the Merrcury Engine in charge of user account management, is ready for prime time!
Henry and Maestro started working on this scope in the second quarter of the previous year. It reached Alpha stage in September. Today, Hendrrix is the first scope to reach the beta stage. Pretty soon you will be able to experience it first hand.

Partial peak into one of the user interfaces of Hendrrix. Can you guess what is it for?
Thank you Henry! Thank you Maestro!
Alexander Torrenegra
P.S. Here is the current status of all the subsystems required for our full beta launch:
| Scope Progress | |
| Scope | Status |
| Web Scope | 30% of Coding for Beta |
| Morrison Scope | 30% of Coding for Beta |
| Cockerr Scope | 50% of Coding for Beta |
| Hendrrix Scope | Ready for Beta! |
| Sinatrra Scope | 80% of Coding for Beta |
| Arrmstrong Scope | Alpha Ready |
| Rrose Scope | 50% of Coding for Beta |
| Charrly Scope | 100% of Requirements |
| Mozarrt Scope | Alpha Ready |
| Mastrropiero Scope | 15% of Coding for Beta |
| Kubrrick Scope | 20% of Coding for Beta |
| Brrown Scope | 100% of UI Design |
| Marrley Scope | 100% of UI Design |
| Waterrs Scope | 100% of Requirements |
What Do Code Version Control, Database Version Control, Automated Unit Testing, Automated Rollbacks, and Automated Selenium Testing Have In Common?

Andres publishing version 0.0.0.1 of the Merrcury Engine
Answer: They are all part of a very powerful publishing tool, and it just so happens to be the one that Andres just finished developing for the Merrcury Engine (the software powering LetMeGo).
As many of you may know, publishing the new version of a website is not easy. It requires a thoughtful mind to make sure that the downtime is short and that no data is lost. Imagine that challenge, multiplied by 20. This is the case of the Merrcury Engine: 20 repositories, 20 databases, and many web servers… and that is just the development environment! We need the same setup in the staging environment (where we test the system), and once again in the live environment.
Almost everything about the Merrcury Engine is state-of-the-art (remember our crazy architecture?). The publishing mechanism couldn’t be left behind. So, we decided to work on one that would realize many of our dreams, and give us peace of mind. A publishing tool that is flexible and automated enough for us to relax, yet bureaucratic enough to tell us when we are messing up. We call it PublisheRR.
PublisheRR takes into account many “best-practices” and methodologies. These are some of them:
- Code Version Control: PublisheRR automatically creates and logs versions that combine individual revisions from more than 20 different repositories. It is also capable of publishing code from different branches.
- Database Version Control: In the same way that we can go back to previous versions of the code, PublisheRR can simultaneously takes us back to previous versions (snapshots and/or schema) of more than 20 databases. If you want to learn more about database version control check out this article.
- Automated Unit Testing: Every unit test should pass before it is published and after it is published. Only code that passes all tests in the stating environment can be published in the live environment. PublisheRR does all these checks automatically.
- Automated Rollbacks: If anyone of the dozens of checks fail, PublisheRR automatically rolls back the code and database to their previous state. What could fail? Many things: unit tests, database upgrades, server connectivity, etc.
- Automated Selenium Testing: Although not implemented yet, PublisheRR will automatically control hundreds of selenium tests via Selenium Grid. They will start running right after the site goes live after a publication and will last, probably, a few hours.
- Friendly Downtime: PublisheRR automatically and sequentially brings down every web server, placing friendly messages to visitors of each one. After the code has been published and the databases have been upgraded, PublisheRR restarts the web servers in order to make sure that all unit tests pass. Finally, it restarts the public web servers.
- XML Descriptors: PublisheRR is being used to publish code and update databases in all the server environments we have: development, staging, and live. PublisheRR uses XML-based descriptors to know how and what to publish where.
- And much more: Automated ACL version control, friendly failure recovery, automated cron job management, etc.
The delivery of PublisheRR by Andres comes with both good and bad news:
The bad news is that it took Andres more than four weeks of “immersion time” (the equivalent of several months of regular work) to complete the first version of PublisheRR. Unfortunately, I hadn’t estimated time for it, but our alternatives weren’t very attractive either. We are shuffling around some tasks inside the team, to continue targeting our deadlines.
The good news is that PublisheRR will gives us even more peace of mind. Said peace of mind will allow us to focus better on what we do best: write beautiful, life-changing code.
Thank you Andres!
Alexander Torrenegra
P.S. PublisheRR 0.1 was previously developed by Henry. It was used for almost one full year to publish code from the repository to our development environment. Thank you too Henry
The LetMeGo Logo Timeline
Right after we secured the domain name “letmego.com“, we started to daydream about our logo. It didn’t take much. After a few days, we were already working on it. This is the little story called ‘How The Logo Came To Be’.
Coming up with a logo is not an easy task. Many things need to be kept in mind. Some of them are obvious:
- The logo should use fonts that are large and easy to read.
- The logo should be attractive!
- The logo should include our name.
However, some of the requirements for our logo are not so obvious:
- Given that the phrase “let me go” is commonly used in English language in both positive and negative connotations, we need to make sure that our logo looks fun, so that any negative feeling is not related with out brand.
- LetMeGo is a phrase composed of three words. The logo should allow for the easy reading of each one.
- The logo should be flexible with colors, as the look and feel of our website may change and the logo should easily adapt to it.
- The logo should use a font not currently used by other major lodging websites.
Keeping this in mind, Maestro finished its first version around April of 2008:
Three months later we decided to play with the logo once again. This was the result:
In October of last year, Maestro took matters into his own hands and, without telling me, worked on this new logo:
I was impressed. I loved it! Not only did it include all of the requirements above, but it also includes the feeling of travel by using the image of a luggage tag.
A few months ago, as we played around with the definite look and feel of LetMeGo, we applied new colors to the logo. Unless we change our mind for some unforeseeable reason, this is the logo that will see the light of day when LetMeGo goes beta.
Thank you Maestro!
Sorry for the Spam. We Just Moved Over to WordPress
Hi! If you are subscribed to my blog, you may have seen a bunch of old posts re-appearing once again. This happened because we just moved my blog from Blogger over to WordPress. I am sorry for the inconvenience! So far I like WordPress (a lot more than Blogger) and I don’t expect to move my blog again in the near future.
By the way, your subscription to my blog will continue working as usual. You don’t have to do anything in order to continue reading my posts.
Alexander Torrenegra
The First Public Photo of Our Team. Guess Who Is Who!
Okay… this is a “virtual” picture, but a picture nonetheless. It is the snapshot of our Wii Fit welcome screen. Most of us are investing around 30 minutes per day exercising on it while working on the LetMeGo Immersion. Some of us are gaining weight, some of us are losing. Can you guess who is who?
Best Tests I Received for the LetMeGo Immersion
Hi there! Several weeks ago we announced that we were looking for people for the LetMeGo Immersion. Almost immediately we started getting applications that included the required tests. Applying was not easy and working on these tests could take a full day, easily.
Although we are already fully immersed, some people asked me to show them some of the tests that we had received. Well, these are the two tests that I liked the most:
- Web app: http://www.ficticio.com/twitter/
- Unit tests: http://www.ficticio.com/twitter/app/webroot/test.php?case=controllers/accounts_controller.test.php&app=true&show_passes=1
- Selenium test: http://www.ficticio.com/twitter/files/twittertestsuit.zip
- Web App: http://draka.fronetserver.com/twitter/
- Unit tests: http://draka.fronetserver.com/twitter/app/webroot/test.php?show=cases&app=true (not working, though)
- Selenium test: http://draka.fronetserver.com/twitter/test.rar
When the deadline for the applications was reached, we had received a few dozen tests. This post is also a public “thank you” to all the applicants.
Alexander Torrenegra
P.S. I have posted this information with Ariel’s and Juan’s permission.
The Requirements of LetMeGo Have Been Written Down
I started documenting the requirements for the Merrcury Engine (the software behind the upcoming LetMeGo.com) back in January of 2008. We finished it yesterday, after having invested around 2,000 hours of work on it. Most of these hours were mine, but I received help from the entire team.
These requirements are being used to code our beta-version. They are composed of 178 use cases and 908 user interfaces. The character count adds up to 1,903,145. That is equivalent, more or less, to a novel of 1,000 pages. A very booooooring novel, though.
A few months ago, and just for fun, we came up with a graph, visualizing the requirements. I just upgraded it. Each node is a use case or user interface. Each orange line is a link to a use case, while each black line is a link to a user interface. The version of the graph that we are publishing here is small, on purpose, so that you can’t read the names of the use cases or the user interfaces. The original size of the graph is around 25k x 20k pixels. It was rendered using the radial method of Graphviz.

… and now… I am going to join the rest of the team in writing code.
Alexander Torrenegra
Let Me Go @ High Speeds
The problem:
The code that we had already developed for the Merrcury Engine (the software behind the future LetMeGo.com) was responding to requests at a very slow rate. The fastest pages were taking more than four seconds to render. The most complex one’s were timing out! That is too slow. Google can respond to queries in less than 0.1 seconds.
Given our unusual architectural bet, we had major concerns with the performance we were experiencing. As a matter of fact, some of us were thinking that a major architectural overhaul was required.
The solution:
German and Lucho, with Andres’ help, worked on this issue during the first few days of the LetMeGo Immersion. They tried many things. Among the following:
- They installed performance logging tools
- They activated the use of .mo files (instead of .po) for the internationalization logic
- They activated cache at several levels
- The fixed a couple of bugs with CakePHP
- They improved the way web services are called
- They replaced a sub-system with a CakePHP plug-in.
The result:
We improved from 4 seconds down to 0.4 secs!!! (and that is via an encrypted connection). We are very happy with the performance for now, but we will work on a second performance review later on to see how low we can go.
Thank you German, Lucho, and Andres!
Alexander Torrenegra
P.S. Sorry for the lack of details, but I’m very tired. Good night!
P.P.S. The screenshot is from the performance tests being run in German’s machine. That is why they are well below the 0.4 secs that our development server (in AWS) takes to respond.

