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.

Sunday, February 21, 2010

Helping GetHelp.

This application is very similar to the one my Facebook App Group created – Looking-For. To be frank, their application seems much more aesthetically appealing than ours, so I shall not comment on the graphics or I’ll be indirectly hurting someone.

The basic idea of GetHelp and Looking-For is pretty similar: Post a distress message on Facebook and hopefully get friends to help you or refer a friend who might be able to help you. The very nature of such applications dictates that users are free to post whatever they can think of. I am not too sure if this problem can be avoided, or rather, is this a problem at all. While I am for the idea of allowing users too “Add more details” such as the deadline, time and description, it would be better to have this section code in AJAX such that it appears after the user clicks a button.

When the user first adds the application, he should only see one textbox with a submit button, as well as a call to action like “Need help with something? Post it here: {textbox}”, exactly like Rumour Has It. Offering the user too many options confuses the user. By deliberately limiting the number of options given to new users, users are indirectly “forced” to familiarize themselves with the key features necessary to make the application work. This same idea is used in Mafia Wars too - when a new player adds the application, they are only allowed to perform one job and right after that job, users are prompted to buy a weapon which enables them to perform a different job. All users are “forced” to learn the game in this way, hence there is no need for a tutorial on how to use the application.

Bottomline: Less Clutter.

Tuesday, February 2, 2010


The application captured a very important point: Online businesses can tap on the plethora of opportunities and resources in social networking sites (SNS). From what I gathered from the presentation, the main reason as to why Flixster became much more successful by having an application on Facebook is due to the nature of the activity.

Movies: A Social Activity

Watching movies (in theatres) is a social activity as few people (at least I do not know of any) go to theatres alone. Our decisions of which movie to watch, when to watch, where to watch and with whom to watch are highly influenced by our friends’ opinions. The application allows users to read the reviews written by friends as well as by other users. For users who have little or no time to read these reviews, they can scroll down the page quickly and simply look at the percentage of people who indicated that they “like the movie”.

All in all, by having a movie review application in a social networking site, it provides a one-stop platform to users to find information about movies and keep a lookout for friends who are interested in watching the same movie without logging into Flixster. Combined with other applications like Events, users can organize movie outings more efficiently.

My Two Cents
Before having to do this application critique, I did not add the application. And when I tried to add the application by doing a search using the search box, it returned me the Pages and Groups which have “Flixster” in their names. It took me quite a while before I figured that the application name is called “Movies” rather than “Flixster”; Flixster is merely the icon that they use for their application.

*** Imagine the number of people who tried to find Flixster, and gave up. ***

In my opinion, they should have created an application by the name of Flixster with the same icon and direct the users to the same URL. In this way, if a user was to look for "Movies" or "Flixster", he would end up in the same application.

Monday, February 1, 2010

On Presentations

Since the previous semester, I started to LOVE presentations, especially when I know that I will be presenting a topic that I am very passionate about. I get extremely nervous before a presentation and my mind goes blank just before a presentation. (You can read more about my reflections on one of my presentations last semester, here.) This is made worse (thanks to Prof Ben and the bunch of ‘evil’ TAs), by the fact that we need to take notes about the rest of the presentations as we are required to blog about them.

However, during the actual presentation, it’s an entirely different thing. I get a surge of adrenaline and this stays with me for quite a long while even after the presentation – its effects are the same as that of drugs, which explains why I am blogging right now though my stomach is growling.

After talking to Shannon, Angad, Hong Pang and Wai Hong, they unanimously agreed that I could have done better by making the ending less abrupt. Reflecting upon my presentation, I feel so too. I should have included a final slide which summarizes the key point in my entire presentation so that the audience will have a take-home message. I will just need a slide with the word “Conclusion” and then some graphics to capture the following point: “You don’t need a complex game with beautiful graphics and animation to build a killer application.”

Lastly, I would like to point out several presentation pitfalls that I’ve observed (just in case you are wondering why I know them so well, that’s because I was once guilty of ALL of them, and I am still guilty of some of them :p)

1) Overuse of the word “Actually”

- Actually, a lot of people are guilty of this pitfall actually, even some Profs.
- As you can see, the word is usually not required. I have a feeling that the brain inserts this word to allow more time for the brain to process what to say next.

2) Looking at slides way too often

- The ultimate pitfall that haunts me, and I am struggling to overcome it.
- One lecturer suggested for me to make a presentation without slides (The thought of it sounds intimidating, but I am definitely going to try it some day)

3) Moving too much and moving too little

- I like to move during presentation, but I don’t know if I am moving too much. So if you happen to read this blog, please let me know if I am moving too much.

Kudos to Joshua for creating the video on Marketplace in plain English (and sorry for making fun of it with Mafia Wars in Singlish). I know a bit of video editing and I know that it is EXTREMELY painful to create such videos. Respect!

Friday, January 29, 2010

Thank You

The end of an assignment marks the start of, not 1, but 2 assignments. The pace of this module is crazy. I am beginning to understand why Prof Ben is also known as the “evil professor”, he reminds me of Brain in “Pinky and the Brain” who harbours an evil intention to takeover the world.

I ran into Prof Ben in Science canteen in the afternoon and this was what he said:

Ben: You all are still alive ah?
Me: The entire week the timings that I left school are: 11:00pm, 11:15pm, 11:15pm, 2am.
Ben: But you look damn happy.
Me: Pain is good, it reminds me that I am alive.

The last line is a quote from one of my warrant officers in the army, who used to be in the Special Operation Force (SOF).

Working on the Facebook application has been, in chronological order, painful, agonizing, fruitful. I have to admit that our application may not be one of a very high level of complexity in terms of programming, but considering our individual background, I would believe that every one in the team has accomplished quite a bit in completing the assignment.

Initially, I was quite pleased to be working with people who have similar personalities. However, after reading the comment that Prof Ben made on Shannon’s blog post, I felt a bit worried that we might be unable to cope with the technical aspects for the assignment as there were effectively only 1.5 programmers in the team.

Reflecting on what I have done…… <<reflecting...>> <<Done - Not much to reflect upon>>

To be frank, I have not done much other than to create the Invite page (which is merely copying and pasting a piece of code obtained on the internet and changing the variables) and to come up with the style sheet for the application.

Something that I learnt about myself in this project is that I hate the feeling of being unable to contribute – really, really hate the feeling. Therefore, when I failed to get the Publisher to work, I felt so terrible that I decided to seek advice from Prof Ben last Saturday. He suggested that since I have some experience using LaTeX, it would be easy for me to learn CSS which will be critical in creating a decent UI (which I recall Prof Ben describing it as one which “cannot make it” as of last Saturday). My only regret is not being able to learn the relevant languages fast enough to help out in the programming aspects. I hope my team appreciates my contributions (albeit insignificant) to the project.

Here’s a big Thank You note to my team with whom I survived the first ordeal in cs3216.

Jonathan the Magician

You are a wizard, literally and metaphorically. Even till now, it seems magical to me how you manage to lead a team of 4 people, all of whom have little programming experience*, to churn out a Facebook application. As you have mentioned in your blog, I felt that you might have been a bit foolish to have chosen 2 Lone Rangers in your group (clearly, we wouldn’t be able to help much in the programming aspects). However, it turns out that the less we knew, kind of means the more we would be able to learn. I cannot imagine the agony that you and Cong went through to get the code to work. I apologize if I have been unable or took way too long to accomplish some of the ‘random things’ that you tasked. If only I have been smarter.

Shannon the Artist

Your artwork brought life to our application which would be dull without it and your presence lightens the mood within the team. Thank you for the coffee, snacks and ice-lemon tea, (which I have no intentions of paying back in anyway :p) After yesterday’s meeting, I know how to cheer you up le: just show you my matriculation card.

Ken the Mathematician

You are simply amazing! Your dedication to making the application work is admirable, you should catch up on some sleep if you can. I believe, in no time, you will become an excellent programmer, well-versed in multiple languages. It is mind-blowing to know that you just started learning programming only in the previous semester and you managed to be the top 5 students for cs1101s. Lastly, thank you for making the Publisher work, it is something that would never be able to figure out on my own.

*Brief background of my team:
Jonathon: electrical engineer, last computing module was about a year ago.
Ken (Cong): year 1 computing major who started programming about 7 months ago.
Shannon : accountant-to-be, non-programmer, designer.
Me : non-programmer, non-designer.

Thursday, January 28, 2010

~~ Cloud Computing ~~

I am mildly disturbed by the fact that the very piece of equipment that I use everyday has such a huge infrastructure supporting the applications, programmes and interconnectivity and I have been so ignorant about it. Prior to taking this module, I only know that I am using my laptop and I get connected to the net because of the presence of a server (which, to me, was just a huge computer with no monitor). Furthermore, I have always taken the Internet for granted, cursing when my YouKu videos take ages to load (which I now believe it’s probably due to the lack of a Content Delivery Network).

Simon did a great job in explaining how Amazon Web Services (AWS) aims to provide a permanent solution for such problems by being more than just a web-host and how the various services provided by AWS will pave the way for an IT revolution, with him as the technology evangelist. I admit that I do not understand certain technical aspects discussed during the question and answer session but the talk has nonetheless been beneficial for me. I think there are a couple of main ideas. Firstly, storing data in one location is like putting all the eggs in one basket, but with AWS, the data is replicated several times in different geographical locations, thus it is fail-proof , ‘unless there is a nuke that wipes out the planet,’ [Simon]. Next, the scale of AWS makes it possible for them to buffer traffic surges by allocating more resources to a particular instance.

All in all, having attended the talk, I am beginning to appreciate the efforts that website owners take to resolve problems such as the following: too little traffic, too much traffic, suddenly spike in traffic, server down-time, content delivery, etc. I shall end of with a quote that Simon used to describe the Simple Storage Service (S3) of AWS.

‘Never underestimate the bandwidth of a station wagon full of tapes.’

It kind of reminds me of one of my favourite quotes: “Whatever it takes.”

Tuesday, January 19, 2010

What to say when your superior demands a deadline from you?

10:40am 22/01/10 In Lab

Ok, this post is a bit late but its better late than never right? Reflecting on the previous lecture, where ex-students of cs3216 shared their valuable experiences on how to manage a team, I cant help but recall the lady's (in white glasses, i cant rem her name, help me out!) conversation with her subordinates who are programmers

Lady: When do you think you can finish the task?
Programmmer: I am not sure.
Lady: What do you mean, 'you are not sure?'
Programmer: You don't understand programmers...
Lady: But I need DATES!

This does sound like a tricky situation. I can SOOO imagine someone asking me this question in future, so I thought of a brilliant reply.

Lady: When do you think you can finish the task?
Programmmer: I am not sure.
Lady: What do you mean, 'you are not sure?'
Programmer: You don't understand programmers...
Lady: But I need DATES!
Me (with a big wide grin): I can be one.

--------Back to experiments---------