Sunday, April 18, 2010

Lessons Learnt

I have learnt…

(a) to appreciate GUI.

I have always taken GUI for granted. In the 3 projects that we’ve worked on, most of my suggestions came from the perspective of a non-programmer who has no idea how tough it is to code those seemingly simple features. So here’s one tip for non-programmers when working with programmers: Look at their expression right after you make suggestion. If their face “change color”, then you might want to add the following line, “I am not a programmer, is it very hard to program this feature?”

(b) to appreciate browser compatibility.

I picked up html and css for this class and was tasked to create the stylesheets for the Facebook app project and the final project. It is really annoying to have the page load correctly in one browser, while everything is misaligned in another. Thus, there is a need to write the stylesheets such that all browsers interpret the attributes similarly.

Also, browsers interpret Flash animation differently.

“The very first version of our ‘car game’ had a huge problem: the car runs like a Ferrari in Firefox, runs like a Toyota in Chrome and crawls in IE.” [Ji Wei, during poster presentation]


Ken and Justin were already having a very hard time learning Actionscript and there was this annoying but important problem which would compromise our application. Both of them solved the problem jointly after quite a bit of trial and error. It turns out that this is a very well-known issue among programmers, as this was one of the questions that they asked during the poster presentation.

Jiwei: …we built a music game....
Chris (interrupts; doubtful look in eyes): is it synchronized?
Jiwei: I would say its pretty synchronized
Chris proceeds to test it out…
….after a while…
JiWei: It’s synchronized right?
Chris: Yea, how did you guys synchronize it?
JiWei: I am not a programmer....
** offers layman explanation of the idea behind the synchronization **


(Chris is the lecturer from Singapore Polytechnic who brought along 4 students for the poster presentation) Fortunately, I could explain it to them in a semi-technical way that hopefully sounded convincing. Thanks to Justin who explained to me the idea behind the algorithms when he offered me a lift home during all the late meetings. I don’t think it’s easy to drive and think of how to explain an algorithm to a non-programmer.

(c) to work very hard.

Cs3216 makes people work very hard and for this simple reason, there are many great applications/gadgets created which would have otherwise remained as ideas. Sleep is something one can forgo if there is a clear objective in mind. There are numerous examples of such people in cs3216. People like Angad, Hung, Ken and Wye Mun can probably compete for the award “Most number of hours awake doing a CS3216 project.” Their commitment to produce quality work is absurb.

Wyemun brought his laptop back to his kampong during Chinese New Year to start work on the Wave project, skipped meals and had to forgo a lot of sleep to get the gadget working. At the poster presentation, I found out from Wye Mun that he hasn’t slept for 2 days. (omfg!) As for Ken, thanks to Dropbox, I can ‘spy’ and find out when Ken sleeps by looking at when the files are updated and I found out that as the semester progresses the time intervals that the files are being updated gets smaller and smaller which means that Ken is getting lesser and lesser sleep. Also Kah Hong reported to us that Ken is constantly coding during MA1101 lecture. (ok, let’s be fair, Ken’s from International Mathematics Olympiad, so MA1101 would be boring to him, coding is more ‘fun’). Hung, needless to say, is just as crazy, his status updates on Facebook are perpetually about how little sleep he is getting (rem the one abt him telling his mum that he eats breakfast before gg to bed? haha). As for Angad, I remember one evening at COM 1 basement, I asked him jokingly how many nights have he not slept. His reply, “Oh, I slept yesterday, so probably wont need to sleep much for the next 2 days.”

(d) distribution of work is bound to be asymmetrical, contribute in every possible way

I was among the last to form a Google Wave group and honestly, I thought I was screwed (Wye Mun admitted to me that he felt so too and I am sure Lin Myat and Ze zhou would have felt so too). It made perfect sense that the rationale student would have 2 objectives: maximize project score by picking the best people to form the group and minimize pain of coding by picking the best programmers. When I found out that the team I have assembled has only 1 programmer, I knew I was screwed. After several meetings, the team was unable to start on anything concrete as none of us other than wyemun was coding. Everyone claimed to be learning, which is clearly intangible and unquantifiable. I was learning Python and trying to code a robot but to no avail so I volunteered to write the entire report less certain technical aspects. Eventually, wyemun coded the entire gadget and the three other monkeys wrote the report. Honestly, I don’t think I deserve the grade, nor the additional coolness points which have been awarded to the “team”, as this “team” is just one person. There is no pride in receiving credit when credit is not due; in fact, there’s shame. I hope Lin Myat and Ze Zhou learns from this as well and learn to make quantifiable contributions in future project work.


Random quotes that I happen to recall:

“Let’s build a Hello World gadget that satisfies all the milestones.” [Orry, 1 week before gWave project deadline]

“Our app logo looks like a middle finger” --- Ji Wei, refering to Topsyturvia’s current app logo.




“Don't pop the cherries" and "Improve your fingering skills,” --- Ji Wei’s suggestion for the game description for Balloon Madness (the obstacles for the previous version were red round balloons, which resembles cherries) and Musik Mania.



“Let’s build an infinitely nested thread” --- Cedric’s suggestion on a Wave which led to the Wave to lag and crash (for me).

Last lecture
Ben: Do not marry someone for her looks…after one child, still ok, by the second child, then cannot make it already.
*class laughs
Orry (whispers): I am video-ing….
Ben (shocked): You are video-ing ah?


Final Project Consultation with Prof Ben
Ben: Are you surviving this module?
Ken: I am surviving this module, but….I am dying in every other module.