Below you will find pages that utilize the taxonomy term “World”
clouds against the floods
I think by now everyone's heard of the hard time the guys up in Queensland, Australia are having because of the recent floods. People have lost their lives and many others have lost their homes and businesses, product of years of hard work.
As a result of this massive disaster the Queensland Government decided to run a telethon to encourage donations to help the flood victims. The Telethon aired last Sunday, 09/01/11, on Channel 9 and lasted for 2 hours.
The problem was the existing donations system that the Government had been using so far: it was just not thought out to handle the load we were expecting to have on Sunday.
That's when my employer, ThoughtWorks, kindly offered a hand to Smart Services Queensland in the attempt to make sure they could receive all donations that were likely to come through the web.
After that, on the Thursday afternoon before the event, Phillip Calçado, Ben Barnard and I set off on a mission against the clock: we had a little over 48 hours to develop, test and deploy an application that was expected to handle thousands of users. Not only that but an application that, should it fail, would prevent millions of dollars from reaching the people in need in Queensland. This was a great responsibility but we knew we could do it.
Given the time constraints it was a bit obvious that we would use Ruby on Rails for this app. Both because of the productivity it's known for and because we had the knowledge right there. With that out of the way, we had to decide how and where we would deploy this thing. We thought a little about it and came down to to 2 options: Amazon EC2 or Heroku (which is powered by Amazon EC2 under the hood). I pushed hard for Heroku and that's what we ended up going with.
Now it was time to get down and dirty and start coding the app. In principle it should be fairly simple. It needed a form where a potential donor would fill out his/her information, giving the option to receive the tax receipt by email or regular mail - more on that later. Upon clicking submit users would be taken to the secure payment gateway website where they could input their credit card number and finish the payment, after which they would be taken back to our app with a success - or an error - message and a transaction number.
Now this work flow has a couple of implications: First, all emails would have to be sent in the background so as to not interfere with the website performance. We were expecting to be sending thousands of them - workers anyone?
Second, the payment gateway integration would have to be developed and tested from scratch. Up until now the Queensland Government integrated with it in a different manner that could not be reused in this case.
And most important of all, although simple in concept, we had no idea of the load we should be preparing for. There was just no data from previous telethons. Thus we decided to prepare for the maximum we possibly could.
As we developed the application we deployed continuously to Heroku in order to test the payment gateway integration, benchmark the app using Apache AB, setup cache headers - Heroku uses Varnish - and find bottlenecks.
Email was one of these bottlenecks and that's why we decided to handle that in the background using Delayed::Jobs.
Since the first deployment, we also tweaked a couple of things at Heroku, such as migrating from their free PostgreSQL offering to a dedicated instance that we believed would both take the load and have plenty of room for all the data - as I write this post, we are already well over the 5MB limit they offer for free.
Long story short, by Saturday evening the website was up and running on 5 app instances, a 6th instance running background jobs - sending emails - and a dedicated PostgreSQL database server.
As Heroku is outside the Government network, their SMTP server was a no go on the short term so we also integrated the app with SendGrid, an email delivery service that fitted perfectly our needs - although the site got so much traction that we went over our monthly quota with them. But the nice guys from SendGrid increased our limit after I opened a ticket explaining the situation!
As for performance we used NewRelic to monitor the application, which Heroku also makes a breeze to integrate with.
We all went home to rest and get ready for Sunday, the day of the Telethon, when we would be monitoring the app throughout the day. We were all excited and when the show went live, we started seeing all those beautiful access charts moving like crazy, spiking over 720 requests per minute and being solid like a rock with flat and fast response times throughout the night.
In about two hours we had over AUD$2,000,000.00 (two million) donated through our website.
Since then the number of transactions dropped but has stayed constant and as of today we've received AUD$25,438,518.32 (over 25 millions of dollars) that will be donated to the flood victims in Queensland.
Oh, and the site is still up and going strong so move your fingers and go help: telethon.smartservice.qld.gov.au - there will be heaps of people grateful for your donation.
goodbye europe a two year retrospective
Now several months after I announced my odyssey to obtain my Australian work visa, the time has finally come!
I'll be flying to Sydney next week, April 15th, and as you can probably guess, I'm excited as hell! :) This starts an important new page both in my life and my career, but that's not what this post is about. It's about sharing the experience of living for over two years in Europe.
First off, I traveled. A whole lot. Both for work and leisure. I've been to 23 cities in 11 countries, which you can check on my map. Getting to explore all these different cultures was definitely rewarding and fun, to say the least. But I have my favorites, including Prague, London, Dublin and Bruges...
While in Madrid, I worked for Mirai España, the company that provided me with great professional experiences. I had the opportunity to work with a few very smart people that, in a way or another, contributed to improve my skills as a software engineer. Not to mention the several conferences I attended, including QCon in London, RailsConf in Berlin and serveral others.
Being a rock/metal fan I am in the ideal place to see just about every band I always wanted to. Concerts in Europe are high quality, frequent and affordable and as such, I've attended a whole bunch of them:
- Metallica
- Megadeth
- Soilwork
- Machine Head
- Offspring
- Cavalera Conspiracy
- Within Temptation
- The Haunted
- At the gates
- Judas Priest
- Testament
- Nine Inch Nails
- AC/DC
- Rammstein
- Grave
- Krisiun
- Nile
On a more personal note Madrid is also the place where I met Enif, my beloved girlfriend. We are both very excited about this new experience and, of course, we're moving together to Sydney, with plans of getting married next year! :D
As you can see, Europe has been kind to me and I will certainly miss the experiences, cities, cultures and people I've met. But I'm only making room for more and more interesting things that will certainly happen on the land down under. Let's conquer it all!
Hopefully my next post will be written by the beach, in my new home in Australia.
Cheers, mate! :)
rupy 2009 poznan
Next week the RuPy Conference 2009 will be held in Poznan, Poland and I was planning to talk there.
My talk had been approved and everything was looking good - I was gonna talk about JRuby in the Enterprise - until my move to ThoughtWorks became a reality less than a month ago.
This move led to a lack of support and time from my current company. I was counting on it to go there but since I'll be leaving soon, that wouldn't be possible.
Since then I've been in touch with Adam Parchimowicz - part of RuPy's organization team - and we tried to find alternatives to this. I wanted to thank him for all the effort he put into trying to make this happen. The terms we agreed on were good enough but this change of priorities kicked in too close to the event.
Long story short, I'd like to apologize for not being able to give my talk at RuPy this year.
Apart from that, I gave a very similar talk at the Rails Summit Latin America this year in Brazil and you can find the slides and sources for it in my Presentations page. ( Video coming soon )
my slides from rails summit 09
{% img /assets/images/rs2009.jpg %}
Rails Summit finished a few days ago and I have only one word to describe it: Awesome!
I met some really cool people, discussed a whole bunch of technical subjects and managed not to get so nervous in my first presentation ever - I'm not counting internal presentations I've done for my team...
My slides and source files can be found here. Feel free to contact me with questions if you got any.
soon off to conquer lands afar
Once more my life is taking a huge turn.
I've been pretty quiet for the past month and honestly don't know how I managed to hold in my excitement. I've just accepted an offer from ThoughtWorks to be based at their australian offices, either in Sydney or Melbourne, depending on where my 1st project will be.
For those of you who don't know, ThoughtWorks is a global IT consultancy that is really well known in the software development community. It's been advocating agile methodologies and test-driven development for several years now and seems to work really hard to attract and keep many bright people working there.
As a result, ThoughtWorks inspires companies and professionals around the world by delivering high quality projects and massively supporting/contributing to open source projects.
Needless to say, I am really excited to be joining a company with such an amazing culture and so many smart people.
The hiring process was long, tough and tiring - but yet enjoyable. It took 5 interviews, 1 code review and 1 pairing session, a process through which I talked to 8 thoughtworkers. They take pride on their hiring process and now I understand why.
Now I'm just going through the bureaucratic side of things: gathering documents, certificates, translations - all in order to apply for my VISA, which can take up to 3 months to get ready. In the meantime, you can still find me here in Madrid, where I'll be celebrating with a few 'cañas'. Feel free to join me! ;)
somewhere in between
So here I am! Alive and kicking!!!
Just got back from vacation. Brazil was awesome and so was xmas in Norway! Lots of food in both places! Need a diet! :p Warming up for new year's now.
But the reason for this post is the last comment on my Rails 2.0 scaffold post, quoted here:
Hi Leonardo,
I am extremely grateful for your info altruism. I thought maybe I could show my gratitude with a small donation but I don’t see anywhere on your site to do so.
You’ve saved me hours and possibly what little sanity that I claim to have left. Is there a place to do so on your site that I’m missing? If not just tell me where and I’ll send my gesture to any cause that you wish. Thanks very much again, some day I hope to be able to be of service to a needy newbie as you have been to me. Happy New Years!!
I was surprised that someone wanted to make a donation and, since I never thought about it, I wasn't prepared.
I was talking with the author of the comment, Eric Goodman, and I suggested he could donate to a noble cause. He ageed and just sent me the confirmation that a donation was made to The American Cancer Society.
So here I leave my thank you to Eric and encourage other people that read my blog to do the same in case they feel compelled to contribute in some way. Other societies around the world are gonna be very grateful.
Happy new years!
apologizing in advance p
UPDATE: By next friday I meant this friday, december 5th. Tks Pillip! :P
This will be a really quiet month on my blog.
The reason? Next friday I'm going to Brazil for vacation and right after, in the end of december, I'm going to extend my trip a bit and spend xmas in Norway.
Just hope to come back alive from Brazil! My friends are promising a real blast!!!!! :D
C u all soon!
yes we do eat
Besides the fact that I am a software developer, I do eat. I even enjoy doing so. Specially when I'm traveling.
That's why i decided to put up a new weblog only for this kind of stuff - it's called Travel tips - food & stuff. Basically for friends and whoever else might be interested.
There I plan to share some nice restaurants I've been to. At least to start with.
Hope u like it!
a couple of things from here
It's been some time since my last post but here I am! Where? In Spain, of course! Having a great time, I must say.
I arrived last week in Madrid and the past 2 weeks before that I spent basically packing my stuff. There is still some paperwork going on but everything is flowing well.
Besides this little feedback, I was reading this week's issue of the excellent series This Week In Ruby, from my friend Antonio Cangiano. I found something quite interesting, a plugin called HoboFields.
One of the things that bothers me in rails is the fact that by looking at your model classes, you can't tell the fields you have there. Sure, you can look at the migration script. Yeah, you can also load the development environment and inspect the object. It's a pain in the @zz! But this is the way ActiveRecord works...
Other ORM solutions like DataMapper, allows you to define the fields directly in the class. It's a much cleaner and clear way to maintain your models. And you get to know what properties you have just by looking at your classes.
That's exactly what HoboFields adds to ActiveRecord.
You define your properties and its types straight into your model class, and the plugin creates the migration scripts for you. Coming from a java world my self, I find it rather interesting, useful and it also reminds me of the way Hibernate works. You define your mappings with anotations in your class and hibernate just generate the schemas from there.
It's worth a try.
time to reveal
Some of you may know. Some of you may not. Some of you may find weird. And most of you probably have no idea of what I'm talking about but the thing is: This is a year of big changes for me.
I've been hired by Mirai, a Spanish company located in Madrid, to work as a Software Engineer. Yes, it does mean I'll be moving there. Sooner than later.
Last Friday I've received the great news that my work permit has been approved so I can now request my visa in my hometown and move to Madrid, what will probably happen by the end of this month or the beginning of May.
This post probably explain something to some people. And the bottom line is that this whole story means a great step on my career and for those of you that have been following my posts, that's probably clear.
Because of that I was able to meet wonderful people , learn a bunch of new stuff and be present in important events such as QCon 2008 in London and Euruko 2008 in Prague.
That's it for now. I'll keep you posted about my new endeavor.
I'm really excited about this chance and I invite you all for a beer or two either in Rio or Madrid - Just let me know your preference... :)
qcon 2008 london
Next week I'll be at QCon, in London, so if any of you are going to the conference and would like meet up for a couple of beers and a tech talk, please don't hesitate to drop a message.
For those of you who have never heard of QCon before, it is a really nice event to play along with some of the most popular names in the software engineering community. This year's conference features people like Martin Fowler, Neal Ford, Erich Gamma and much more.
So stay tuned, the conference takes place during the whole week and I'll try and keep you posted about what's happening over there.
C u in London!
why every programmer have to be dumb
At least, dumb for the companies hiring them. The old dream is still for sale out there: Build a "I do everything framework" and hire a bunch of dumb programmers - monkeys? - and you shall make money easily!
Just put some button pressers and a full featured enterprise system will be waiting on the other side of this "machine"!
C'mon, I thought this dream was over! We've had enough proofs that this doesn't work!
Why? Because a framework, system builder, code generator or what you may want to call this thing just can't do everything. And if you try to build this "monster" you will get yourself a hell of a problem:
- Your product will never be ready.
Or you think that "everything" has limits? Someone will always say: Hey, let's put this new feature right there... it's so small.... - Your product will not work well.
Bugs! Bugs! Bugs! I've never knew a team that has written enough tests building such a monster. Be prepared! If it's never ready, you will always be in a rush!
But ok, even if you manage to develop this "framework" and hire a bunch of monkeys to press its buttons, that's when the worst problem arise. (At least worst in my opinion)
With this "philosophy", you assume that you want to hire low level programmers that don't need to learn anything new besides how to use your full-fledged systems generator. And who the hell likes to work in a place like that?
You take from your employees all the joy of development, which is about creativity. All about putting your brain to work. And sooner or later, they will notice that and just quit. You will never be able to stablish a trustworthy relationship within your team as well as to motivate them.
How will you motivate a team by telling them they will learn a new framework that isn't used anywhere else in the world and that they will not improve their thinking?
They will become bored. And if not, man, I wouldn't like to have someone like that in my team.
The problem is that managers usually love the idea to build huge enterprise systems at low costs. And some consultants sell this idea quite well.
I prefer to have trustworthy people in my team. Provide an environment that promotes learning. Let their creativity flow. Only with this approach you will have a first class team of developers producing, happily, high quality enterprise systems.
That's the message for the companies out there: Software development IS a creative process. Promote learning. Let them create.
language change
Well, talking with some friends, I decided that, from now on, I shall only write in english on this blog.
Of course some of you may not like it. But I think it has more advantages than the other way around. I have some friends around the world, including people from the U.S., Spain, Italy, China, India and Australia. This way, they can also enjoy the content of this blog and help me improve it.
I will keep writing on the same subjects, so feel free to comment, as always. You may comment in the language you like more - hey, I can't read Japanese! - but english is highly preferable! ;)
Thanks and see you on my next post!
enquanto isso em portugal
Pois bem, saà do Rio hoje rumo a Madrid, com escala em Lisboa.
A essa hora já estaria por lá.... mas no momento estou no aeroporto de Lisboa esperando o próximo vôo, visto que perdi a conexão! Acontece até na europa! :p
Em teoria o embarque é daqui a 1h:30min...
Os portugueses são muito atenciosos btw!
Até a próxima!