The last one

It has been more then 3 months since I joint this race, and that was 3 most memorable months in my student life (so far). Actually I wanted to join this class last year, I even did write an application and save in my draft, but that never get send out because later I decided to take a leave of absence. During my internship at Apple, I met Ahmed, Su Yuen & Peter, they all from the 1st batch of CS3216. After that I know I die die must take CS3216 this semester, I can’t miss out the fun (and suffer) anymore =P.

I still remember when Su Yuen backstabbed me (by calling my name in 1st lecture) for Ben’s question “Why are you here?”. My answer was “because I have nowhere else to go”. I really mean it =P. For my past 3 years in NUS, this is the only module that I really put my effort into it. I made a lot of sacrifies (and I believe everyone did) for this module. I know people who screw up their other modules, people who have difficulty in their social life just because of this module. Most of us are almost killed by this module, right? But whatever almost kill you, make you stronger, remember?

For myself, if you ask me if I want to take the course again, the answer would definitely be NO. You just can’t go through everything again (once you know it). Of course, I never regret taking this module. I meet great people, have great time camping with them at COM1 (the coolies) and some labs in Engine (NUS Uber Stop). Those were crazy time and I would never forget them ;).

This module really push everyone out of their limit, make you do something that you don’t think you could =P. Dr Ben knows really well how to inspired his students ;). What I really learnt from this course is not programming or business, it’s all about teamwork. I’m lucky to be in a good team for the 1st and final project, everyone of us could do different things and it makes a perfect combination ;). Without any member, Captain Cook would not be created.

Thanks to my teammate (Kar Meng, Toan, Minh, Janus, Hong Ting, Wei Man, DingYan, Abel, Justin, HuiHui) who were with me at some points in time. Without you guys, I couldn’t enjoy (and suffer) from this module so much.

Thanks to Janus and Kar Meng’s cars for deliver 3 (sometimes 4) Vietnamese home safely everynight.

Thanks to all the tutors and TA who spent their time helping us.

Big big thanks to Dr. Ben who started this course since last year. I really appreciate your effort to make this happen.


The second last

This is to fulfill whatever I haven’t blog about in a long long time. My last blog was 4 weeks ago @___@

1. Web performance:

– There’re easy techniques to imporve your web app’s performance significantly, you just need to pay attention to details.
– When you app gets popular enough, sooner or later you will need an expert in networking to work out network performance issues. Seriously I don’t think it’s a good idea to solve those problem yourself (unless you’re an expert =P). Hint: Dr Ben is specialize in networking.
– (Database) Don’t follow normalization all the time. Sometimes you have to break the laws to make something work.
– Make sure you test with all browsers. Some browsers behave very weird (I mean IE, screw you IE 6).
– I believe bandwidth is not a big deal, it’s the number of request to your server that makes a different.
– If your app is big, make sure you do load testing very careful before it goes live.
– Do calculation to estimate how many clients can you handle, and set a limit on your server. This is important but sometime people just forget. Why is this important? If you don’t limit the number of clients, everyone will suffer when the server overload.

Phews, 1 done

2. Entrepreneur session:

I feel this session is just a summarize what Dr. Ben has always emphasized before:

– Sales is important.
– Common sense is important as well.
– You must believe in what you’re doing. I mean passion.
– It takes a lot of thing to be an entrepreneur. A lot.

What I learnt:
– Talking about risk, there’s very little risk when you decide to be an entrepreneur. You always can find a job if you fail.
– When you’re young, it’s easier to start your company.

Personally I like the presentation of HungryGoWhere the most. I appreciate him because he’s not young anymore (oops sorry), and still have the gut to start his business. Most people will just stay in their comfort zone, ‘cuz they have bills to pay (and a family to feed).

3. Facebook & Security:

– I disagree that facebook security is equal to the weakest application on facebook. Clearly the presenter have no idea (or very little) how facebook apps work :P (or maybe I’m wrong?). Facebook has glitches (just like any app out there), but they can’t be as weak as my CaptainCook, right =P?
– Social Engineering is the most dangerous way to compromise a system’s security. Read more about Social Engineering here. It’s dangerous because the attacker can by pass all the security measures with this technique.
– Privacy is very important, yet most users don’t pay attention to that. A simple example, who actually did read all the security pop up of IE/FF when you browsing the web?

Software Engineering

Well, I know most of the principle before I attend Monday class. I picked up those from CS2261 and my internship last year. They are quite simply are straightforward, but only on paper. When you do real coding, you’ll face stupid problems and you have to give yourself an exception, as long as the problem is minor and not critical. I believe Monday lecture is not about SE, most of the programmers in the class knew the principles, and most of the non-programmers do not care. So what did I learn on Monday :-P?

I found Weiman, Justin & Zi Han talks are way more interesting than the lecture (sorry Dr. Ben hehe). They’re practical and very very true. I believe people is the most important factor when it comes down to execution part. Sucess = good idea + pick the right person at the right time. Management means nothing if you don’t have the right people.

There’re some interesting things, just write down according to my memory :-P

– If a programmer says he can finish in 1 day, he probably means 1 x (a number greater than 1)
– Outsourcing is not always a good choice :).

This is very very late, I know. Planned to do it right after the lecture, but never manage to write even a draft ‘cuz there’s too much work (and entertainment) going on. This is Friday night/Saturday morning and I’m writing this, kinda weird hehe.

Most of the points we discussed on the GetHelp case, I’ve already mentioned in my previous post. Just some quick summary again:

– Keep the design simple, easy to use.
– Motivation for user to use the app.
– Provide some kind of helps for dummy users (there’re a lot of them).
– Kent, please stop the annoying notification. Not only it slows down your app (I have 400+ friends = 400+ API calls for every new request, good luck with that), but also it’s super annoy when people receive random notifications.

More on the UI thing, you guys can borrow the book “Designing for the social web” – Joshua Porter. It’s available on Central Lib, pretty solid book for social web design. If you read the book carefully, you would like to borrow another one. I’m holding to that one, so I won’t disclose the name :-P, you must find out yourself. The Joshua’s book is excellent (in my opinion), it describes very details what factors you should consider before you design a social website (both UI and content). HIghly recommend :P.

The team dynamic case was very interesting. The thing is I has always faced the same thing for most of my project in NUS so far. It gave me a better approach to a teamwork problems, especially when you are in big big team. If only we had more time, I would love to hear more from Ben and Vincent about their experiences..

It’s fun to analyze this case study, because all of the developers are my friends, and I worked closely with 1 of them when they were doing this app. I was going to ask them for help using an application named “Get Help!” on facebook. Unfortunately, the application is no longer exist :(, it used to be a very good place to looking for help. On second thought, I think I would be inappropriate to criticize my friends’ app in public (like this). Therefore, I decided to do a case study on the “Get Help!” app instead :P.

Home page

So this is the homepage when you access the app. I think the team want to make the request process quick and easy, so the homepage has the form to request for help. The interface in very attractive, nice icons, colors. However, there’re too many info lying around on the page. User may wonder “is that field require?”, “am I missing anything?”, “what to click next?”. At least that’s what going on in my mind. There are too many buttons to click, as a first time user I would get confuse.

Suggestion? Have a workflow for users to follow. Most of the users don’t have the “sense” like you do. I also think the team gave users too much freedom when requesting a new help. This goes back to the workflow I suggest above. I think in any UI design, a “standard” workflow has to be set and somehow force user to go that way. Otherwise we can’t control the interaction efficiently.


This is what users get when they help other users. I thought “what the heck? Who needs a badge?”. The badge is nice, yeah, but it’s not something I’d like to receive when I help other people. Say I like a girl, I definitely want something like a virtual hug/hand holding or whatever (up to your imagine haha). My point is that the badge is not attractive enough. It’s too general. The team could include more awards for user to pick rather than just badges. Also the badge does not show whom I helped, it just mean you’ve helped 10 people. For personal reason I think people want to show what did they do to whom.

Another problem is that users don’t really have needs when they add the app, so they can’t really do anything with it. This could lead them to remove the app right after they add it. Also there could be lack of “guru” to do some basic helps before you expect the users to contribute back. If possible, the developers could set up a volunteer team at first, then as soon as the community thing starts to work, they can retire :-P.

Pitching sessions

I want to write this blog on Tue/Wed, after the external pitching. However I think it’s better to combine the pitching party on Friday, ‘cuz I know the latter will be much more interested ;).

There were some “good pitches” on Monday, for ex: Chupr, Lut Game. Chupr is another example of “copy the idea and do something with it”. Something could be “localize” or “add in more functions” or anything :-P. And they have quite a few users from Singapore I think. A good start, but they will need to think more how to compete with other websites/services. From what I’ve observed, Singaporean prefer to meet up to view the item before they make the transaction. If they apply the eBay concept here, they definitely fail. I think eBay is falling too, the new star is Craglist :-P.

Lut game is doing exactly what we are trying to do with our game (Captain Cook), the guy who pitched is quite smart I think, Ben mentioned that he earns more from his games than his official job at IBM. His games are simple, easy to play, very very addicted (a.k.a no ending game) and encourage you to involved many users. Those are some factors you need to consider when you decide to make a game :). If anyone in our class wants to be involved in the game industry, this might be the chance for you..

It was too bad that I had to leave the pitching party on Friday early, right after our pitch because I want to attend an event nearby, organized by my friends. Anyway, I found one of the pitch very interesting, therefore when I came back home, I contacted the guy (Chris) immediately. I hope our app can run into the “expected” problem, and he can be success in his FYP :).

I see a lot CS3216’s blogs mention about stealing ideas, which originally started from Dr Ben’s blog. So he said “It’s okay to Steal”. I say, if you can steal (idea) from someone and transform it into something better, then go for it. Why? Because I believe the most important part in execution (I’m not saying idea is not important). Why am I saying this? There’re 2 cases:

– You have a bad idea. No one will bother copy it. End of story.
– You have a great idea. Ok, so you think your idea is unique, way ahead of time, innovative. But guess what, probably there’s someone who has the same idea as you. Why? Because great minds think alike. So you really can’t tell if he’s stealing your idea or you’re stealing his idea.

In the history of computer, there’re many interesting story about stealing ideas. Do you know that Apple stealth the GUI from Xerox (surprise, right?), and then Microsoft stealth from Apple (you may not be so surprise about this, they keep doing it today :P). Do you know Compaq stealth the PC design from IBM (to allow MS-DOS run on Compaq computer, and make Bill Gates a billionaire. This is a very long story, if you’re interested you can look for the documentation film “Triumph of the nerds”)? Without stealing, GUI will never exist (because Xerox thought it’s a bad idea), IBM is still dominating the PC market, and Microsoft is nowhere to be found on the map. So stealing actually makes the PC evolve, doesn’t it?

Last thing, I’m not saying that stealing is the only way to go, but it’s easier and faster to success :P.

Moral of this entry: If you have a great idea, keep it to yourself :D.