How to become a (real) Computer Scientist

From Jeff Atwood,

“For a fast-moving field like computer science, the work you’re doing is far more relevant than any classes you’re taking. If you must choose between formal schooling and work experience, always choose work. If you’re in school, aggressively pursue real-world experience that compliments your schoolwork.”

I agree with Jeff! Nothing is more important than trying things by yourself when learning something new. Especially programming which is a mix of Science, Engineering and Art.

Yesterday, coincidentally, I was telling my students that this what Science is all about: doing experiments!

Jeff quotes Stephen Leacock:

“If I were founding a university I would found first a smoking room; then when I had a little more money in hand I would found a dormitory; then after that, or more probably with it, a decent reading room and a library. After that, if I still had more money that I couldn’t use, I would hire a professor and get some textbooks.”

What he meant was that what is important in a University is to have a place where people can meet and talk and learn and share experience. This is sooooooo true. When I think about my years in France, I distinctly remember the various nights my friends and I spent in our rooms having fun and talking about technology, programming and philosophy. I have forgotten about most lectures I attended… This is what is missing here at the University of Mauritius. And this is why many people tell me that it is just a glorified college. And I think I have to agree. Unfortunately.

Jeff gives the following advice to young people willing to become great Computer Scientists:

  • Do work placements (stage)
  • Participate in local user groups (LUGM is nice!)
  • Contribute to an open-source project.
  • Publish articles.
  • Start a blog.

So, dear students, move your ass and try to secure a work placement (stage) as soon as possible in a good software development company! Yesterday, we were discussing with Accenture and the people there are very nice! I guess the people from Infosys are also very nice. You get the point?

RESTful Application talking to Dumb-Ass Recipients (RADAR)

A nice blog entry by Dave Thomas, the author of Agile Web Development with Rails:

“Put the main application logic into a RESTful server. This is where all the CRUD-style access to resources takes place.

Then, write a second proxy server. This is an HTTP filter, sitting between dumb browsers and your core resources. When browser-based users need to interact with your resources, they actually connect to this proxy. It then talks REST to your main server, and interprets the RESTful responses back into a form that’s useful on the browser. And this filter doesn’t have to be a dumb presentation layer—there’s nothing to say that it can’t handle additional functionality as well. Things like menus, user preferences, and so on could all sit here.

[...]

Let’s call it RADAR. We have a RESTful Application talking to Dumb-Ass Recipients.”

Personally, I understand his logic. But do we really need to have two distinct applications to do that?

I’ll have to think about it.

Agile Web Development with Ruby on Rails

At last!

Amazon has just sent me the book Agile Web Development with Rails that I ordered one month ago.

This book focuses on Ruby on Rails, the open source framework to write web applications in the Ruby programming language (which is making a lot of buzz on the Internet right now).

Previously, I had purchased Programming Ruby.

I guess I can start experimenting with Rails a lot more now as I finally have the two books pictured on the right :-)

By the way, both Ruby on Rails and Ruby Gems, the Ruby package manager, have just been updated. I did this on my Linux box:

sudo gem update --system
sudo rm /usr/lib/ruby/gems/1.8/source_cache
sudo gem install rails

By the way, here is a tip I got from the Agile Web Development with Rails book on how to generate the Ruby on Rails API documentation automatically:

rails dummy
cd dummy
rake rails:freeze:gems
echo >vendor/rails/activesupport/README
rake doc:rails

A directory called api will be created into the doc directory. Move it to the desktop and, voilà, you have the complete API documentation.

Have fun!

(Image courtesy of Spuggy, source_cache tip from ImaPenguin and Ruby Gems tip from Gregory Brown)

I’ve moved all my emails to Gmail

I have moved all my emails (from 1997!) to Gmail using my Linux box using the following technique:

  • Saved all my emails in mbox format in Apple Mail (just do Save As… and choose the mbox format as export type). I guess all modern email clients can save in the mbox format now.
  • Set up a POP3 server on my PC at home. I used dovecot.
  • Create the user pop3user, give it a sensible password and copy the mbox file to /var/mail/pop3user
  • Configure the firewall (in my case, my Livebox) to allow incoming connections to my PC to the POP3 TCP port (port 110)
  • Configure Gmail to fetch emails from my Linux box (I used DynDNS to solve my dynamic IP issue. PS: Don’t forget that there is a built-in DynDNS updater in the Livebox. It works perfectly!)

And the result is:

Gmail has perfectly imported more than 1 gigabyte of emails. The only gripe is that this is a very lengthy process as Gmail only fetches 200 emails at a time and then pauses for some long minutes. I guess the whole import took around 3-4 days (at least).

I have to stress that the dates, the sender and the recipient(s) of the emails are not changed when Gmail imports them. This is extremely cool!

But the result is worth waiting for: I now have ALL my emails since 1997 online. I’m so happy :-)

Didier Drogba’s team against Mauritius

 

We were all thrilled to be at the Anjalay Stadium on 21 March to watch Didier Drogba’s national team, Ivory Coast, playing in a friendly against our own Mauritian national team.

I was sure that we were going to draw with the Ivory Coast. Of course, we were not going to beat them but I felt that with the proper tactics we could nullify the presence of Didier Drogba, Salomon Kalou, Didier Zokora, Kolo Touré et al. But I was wrong. We lost 0-3!

 

 

As the match unfolded in front of us, we realised that the Mauritian team was not good enough. The tactics used were too negative. We were only playing with one attacker, the rather short Christopher Perle. He couldn’t do anything against the Ivory Coast defenders. I personally thought that we should have started the match in a 4-3-3 formation with two quick wingers. Of course, we would have lost but with a much more satisfying 3-4…

 

 

In fact, the Ivory Coast team only really started playing during the second half. And when Didier Drogba got in, we were all sure in the stadium that we were doomed. And it was not because of the Ivory Coast players. We were doomed because our own players were not good enough. In fact, our right wingback (as we played a kind of 5-4-1) was always comically injured. I don’t understand how we could not have a replacement for him…

There were a lot of other negatives during the match. One was the lack of information about the players. We did not know who was playing. The MFA should have distributed an information leaflet. There was no public announcer. In fact, the atmosphere was not great (compared to the few past international matches I’ve been)! As always, the scoreboard was not working. Consequently, I only knew who scored this morning when listening to the radio… My feeling is that the organisation was extremely amateur.

 

 

One extremely positive aspect was that we were having the opportunity to watch a world-class team of football players in front of us. Kyan and Anya, who were watching their first ever real football match, were delighted. You should have heard them singing the national anthem at the beginning… I was so proud of them.

 

 

Ashvin and Jyotish also came. Can you see how Jyotish is being sarcastic? Mauritius was not beaten by Ivory Coast. Mauritius was beaten by its own amateurish behaviour.

The next World Cup is in South Africa. Naturally, a small country like Mauritius cannot qualify (even if similar-sized countries have qualified in the past). But we should really capitalise on the event. Mauritius must become the training ground of top teams like England, France, Brazil etc. This will boost our morbid economy! But this requires a perfect organisation (not to say a perfect canvassing campaign). After watching yesterday’s match, I have some doubts about our capacity to organise such a major event. Let’s hope private Mauritian companies can seize this opportunity. We need the money. Amen!