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.


  1. Your post is damn funny lar! I kept laughing out loud and people around me thought I went crazy! Nice knowing you JiWei!

  2. yea, i have a secret ambition to become a stand-up comedian, so must start training and accumulating jokes.

    poor shannon had to listen to me repeat the jokes to everyone who came by our booth. i think she got bored after a while :p

  3. Agreed with Joshua! =) Incredibly funny post - great job, Ji Wei.

    Btw, now with CS3216 behind you - what do you plan to do?

  4. One things to correct :-P, I'm not from the International Mathematics Olympiad, I even got no prize at the National one :)).
    About the last paragraph (the one regarding to the google wave project), I understand why you feel so, but I think it's not actually the case. There's things other than just programming and coding in the project, like making the initial idea, improve the idea on the go,.... Should consider all before feeling so I think. It's understandable to feel so, but still, I think you should only feel so if you were there trying nothing or somewhat similar to that. Just my idea. As long as you contribute something, you deserve the grade to some extent.
    Even though speaking so, I also feel quite sad about my google wave project as well, there were in total 3 programmers including me, but all I did in the project was to contributing in writing the report, just that. Also feel that I don't quite reserve the grade. Uhm. Quite conflict....

  5. @Cedric: This is a tough question, i have 2 options.

    1)Do a PhD
    My prof for my FYP offered to let me do PhD. Looking at some of the current PhD students who knows next to nothing, i think i am highly qualified for the position. Basically, this option is the easy way out. Pay is ok, $2.8k for 4 years.

    2)Find a job
    This option is slightly tougher. Other than MOE and A*Star most organizations have resume filters that direct resumes containing the string "Phyiscs" into the Recycle Bin. Thus, its hard or me to get an interview as i cannot even pass the HR. Fortunately, among my network of friends and acquaintance there are some HR managers and some who own businesses who know me in person. So I think it won't be too hard for me to find a job.

    I am still undecided; but i believe i will excel in whichever path i choose, so i am not that worried.

  6. Don't do a PhD unless you want to be a prof.

    You can probably make quite a lot of money as a standup comedian. In contrast, Profs don't make a whole lot of money, so you better think harder. :-)

  7. When I found out that the team I have assembled has only 1 programmer, I knew I was screwed.

    I thought Lin Myat is a programmer as well?

    I hope Lin Myat and Ze Zhou learns from this as well and learn to make quantifiable contributions in future project work.

    It seems like Lin Myat is contributing quite a lot in Mood Diary.

    Don't underestimate the role of the report writer, this person is also very important to the team. But not to the extend of 1:3 in terms of programmer to writer =O

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

    Now u say I notice it... Hmm, it looks more like a... erm... condom =S

    Musik Mania is quite successful i think. Actually the average level is not very useful, cos ppl (i guess most) won't be interested in leveling up for all the games. Make more different games tt cater to different groups of audience or just focus on 1 and make it very successful. =)

  8. whoa.. i didn't know you actually get paid to do a PhD..

    man, i think that's a pretty good deal.

  9. This comment has been removed by the author.

  10. "I hope Lin Myat and Ze Zhou learns from this as well and learn to make quantifiable contributions in future project work."

    @jiwei: what happened with the wave assignment is highly unfortunate. luckily, Wye Mun saved all of us.. The problem was that there was a serious lack of communication in the team.. maybe due to Chinese new year and things.. Glad that it's over.

    "When I found out that the team I have assembled has only 1 programmer, I knew I was screwed."

    @jiwei: nope.. actually I am also a programmer..

    "It seems like Lin Myat is contributing quite a lot in Mood Diary."

    @Li Yen: Thanks.. :)