Monday, February 2, 2009

Facebook Application Seminar

First, I would like to apologize to my students (and folks from the workshop) for letting class run overtime till about 9 pm earlier this evening. As it turns out, the presentations we had this evening were particularly brilliant and I didn't have the heart to cut people off even when they ran over time.

I am supposed to post my blog entry at the end of the week, but in this instance, I decided that it would be helpful for me to start the ball rolling because this week is a little different.

Instead of merely blogging in general about what they think about today's session in general, the students are supposed to pick of the apps presented today (but not their own) and do a simple critique. Yes, I'm being evil as usual, but there are always reasons for evilness. :-P I do not believe in random evilness, only purposeful evilness.

One of the goal of CS3216 is to make students think -- and by structuring the class and assignments in such a way as to encourage (or people will claim "force") students to think, I believe that I am earning my pay.

In any case, the CS3216 blogs will be particularly active for the next 7 days. Each student will have 24 hours (till 23:59 tomorrow (Tuesday) evening) to post his/her entry and there should be some activity going on for the rest of the week as students thrash out their thoughts on the Facebook apps they heard about today.

Will this work well? Frankly, I dunno, but if we don't try, we never know do we? What's quite clear to me is that I have an exceptional class of students who have set very high standards in both their first Facebook assignment and in the presentations we had earlier this evening. :-)

Anyway, back to the core issues that I had hoped to highlight (or have students figure out by themselves) in the process of preparing for the Facebook application seminar and in listening to their friends:

1. Thinking about Implementation. This is aspect is mostly of interest to the programmers. At this point, the students have all completed one Facebook assignment and the majority should have a reasonably good understanding of databases and what's possible with PHP. Some groups have worked with Flash and so they should also have some idea of how to integrate Flash with PHP.

One of the things that I hope that the programmers would do is to try to get into the habit of thinking about and figure out how existing apps are implemented. There are two reasons for this: (i) it's good exercise. Most apps are really quite simple and the practice of thinking about their implementation will help students implement their own apps faster in the future; (ii) this is the opportunity to learn about new techniques. If a student should look at an app and realise that it's not obvious how the app is implemented, then it's an opportunity to learn something new. Going through this mental exercise will help the programmers improve their programming skill and I believe that it's complementary to doing actual coding.

2. Learning to Identify Good Ideas. After Assignment 1, it should be pretty clear to the students that the technical part of building Facebook apps isn't hard at all. Yeah, it's a lot of work, but it's not something that NUS students cannot manage. My experience last semester and from what I have seen from the first assignment is that our students are as technically competent as any of the Facebook developers out there.

So what is the difference between a mediocre Facebook app and the 6-million-user app? My view: it's the little cutesy ideas and that's the whole point of having students think through what are the good, bad and ugly points about each app. While all the groups did fabulous presentations, some groups were better at identifying and highlighting the "core" ideas/lessons from the apps they studied.

I shall refrain from commenting on these ideas because that's what the students are supposed to do in their assignment - they will comment on what they have heard from their friends' presentations. If they can highlight points/lessons that their friends missed out, they will score points and their friends' group will lose points. :-P Yeah, very evil, but very fun I think. :-)

I would like to take this opportunity to highlight MTV Cribs again. In many ways, MTV Cribs has all the basic features of Pet Society and more. What seems to be lacking is merely the will to follow through and to "market". Personally, I fail to see why it cannot be made as successful as Pet Society. What's my point? You guys decide how far you go. Size is no barrier, but neither am I here to push the students. My job is to facilitate learning and show people what is possible. Possible doesn't mean easy and each man (or woman) has to decide on what he/she wants to do with his/her life. :-P

3. User Interface Design and Interaction Design is Important. One idea can be implemented in many different ways. Some of which are more annoying than others. One of the key element of good apps is good UI and user interaction design.

Apps should be simple to use. Simple apps with limited features are not necessarily bad, e.g. graffiti. Students should also take into account the psychology of Facebook users. They have no patience for complicated things and also for slow moving pets. :-P

One of the announcements I wanted to make today, but didn't because we ran out of time is that we will be doing a simple case study on user interface and interaction design in two weeks. The case study has already been uploaded to the IVLE Workbin. People can check it out. :-)

4. Understanding the Curse of Success (Scalability). Facebook apps are quite a paradox. If you build an app that nobody uses, you will be very sad. On the other hand, if your app becomes exponentially popular, you may end up in trouble as your web server gets loaded. If the web service architecture is not done properly, it might blow up. FarmWars experienced some load issues last year (part of it was due to poor programming choices).

The developers of Friends for Sale gave a talk last year and their talk was available online. I can't seem to find the video anymore, but the slides are here. Moral of the story is that success on Facebook may cause headaches (and if not handled properly will results in a loss of users due to user frustration).

5. It's okay to Steal (Ideas). Alright, let's put this statement in context. My point here is that many successful apps have found revival after been "converted" to Chinese. Examples include Baidu and Xiaonei. It's not as crazy as it sounds, but one possible route to quick success is to identify a successful Facebook app and clone it for Xiaonei. I'm serious. Do not under-estimate the value of cloning. :-)

It seems that good concepts as far as Facebook apps go, transcends cultural boundaries. See this article. The point here is that it's really not just about ideas. It's a package deal consisting of both the idea and the execution. Not only must you have a good idea, you have to execute well in order to succeed. Ideas tried and test and proven to work are good 'cos you reduce the risk of uncertainty and can focus on getting the execution right.

Alright, I guess this covers most of the summary points I wanted to make at the end of class, but didn't get a chance because we ran out of time. I'm looking forward to see what people have to say about the presentations earlier this evening. :-)


  1. You seem to be greatly disturbed that MTV crib wasn't as successful. Perhaps you are trying your best to remind us that UI > anything else. I believe that it is so, which is also quite sad haha. I would rather be the business/design guy than the program guy any day. So much work in coding but is nothing much compared to a few words by a spoke person or a graphic. Back to the topic, I think it was self-explanatory why MTV cribs was not as successful when I saw the graphics disparity.

    I would also like to take this opportunity to feedback abit about the facebook assignment. In general, I think some of the aspirations were detrimental to coming out with a cool app. My point is that time spent on fulfilling aspirations could have been used to add really useful features instead. An example would be the fbml tags. We were literally thinking of what tags we could add instead adding some features which may or may not include the tags. I mean the sequence seems to be wrong. Using the FB api should be the result of a need and not for the sake of just using it. But all in all, I must say this is the most practical assignment I have done thus far in NUS. =)

  2. You seem to be greatly disturbed that MTV crib wasn't as successful.

    Actually, I am disturbed by the lost potential because the students gave up after the course was over and didn't follow through. It is not so much UI > anything else.

    The point I want to highlight is that ideas are cheap. What Pet Society did, MTV Cribs also did. The difference is in the execution.

    I think it was self-explanatory why MTV cribs was not as successful when I saw the graphics disparity.

    It was done in one month by one solo programmer. Imagine what can be done if you throw in a full team with graphic artist.

    I think some of the aspirations were detrimental to coming out with a cool app.

    Agreed, but we also have the following disclaimer: You
    are free to develop any application of your choice. If some of the proposed milestones do not make sense for the application you intend to build. However, please submit your petition at least one week before the assignment is due. Your petition might or might not be approved. In this case, you may petition to replace the milestones. Furthermore, while the aspirations may be easy to meet, simply meeting them would not give you maximum credit. We ask for quality submission, not run-of-the-mill work

    Never read instructions right? :-) It's there staring at you on the front page of the assignment. Really cannot blame us. :-P

  3. haha, wah lao I think we were drowning in our work and there wasn't even enough breath to send a petition. Please release the wpf fast fast to prevent another suicide episode haha

  4. Please release the wpf fast fast to prevent another suicide episode haha

    Your TA and Tutors are working overtime on it already. It turns we found some technical issues and we're trying to resolve before we release the assignment, lest we get flak from you guys. :-P

    Setting the assignments is really complicated. Trust me. :-)

  5. Some of the choices app developers have to make their app viral may have a negative impact on user experience, but the Facebook platform is set up in such a way that it pays to go with the virality choice over user experience more often than not

    (I'm the developer of Friends for Sale, thanks for the read)

  6. Dr.Ben i thought i'll voice this: The second assignment, i think is an intelligent way of making us realise the good/bad about our own application...As seen from the blogs and mutual critiques,it has succeeded in helping us compare our apps with the ones presented...having always seen apps from a user's point of view, i realised that there are certain aspects wher we could have made user experience better in our apps...