Final Post for CS3216 v2.0

And so here I am, the second time now. Haha.

So as per tradition, we are supposed to write a blog post about what have we learned from the class.

This is what I wrote the last time around, back in 2010 “What have I learned from Cs3216” and this is what I wrote when I set out on this crazy journey 12 weeks ago “What I hope to learn in CS3216 again

I wanted to be a competent programmer. Did I become one? Er… maybe… maybe not.

Assignment 2 (Mobile Cloud) was quite a good training ground. I did quite a bit of javascript, JQuery mostly. But still I could not catch up with the real elite programmers. So when we decide to go full blast on developing an iOS Native App for the Singapore Heritage: Mobile, I know my days as programmer are numbered. It does not help as my Day Job (8:30am – 6pm) started around the same time. I tell you, you will be surprised how little time you have left for other projects once you start working. And my job is already quite flexible.

Anyway, there is no point ranting on and on about what I did not achieve. It is not that I have no choice. I made the decision and so be it.

But not all things are dark and bleak, the Singapore Heritage: Mobile project was a blast. I think I never had so much fun and sense of accomplishment in any school project before. Everyone in the team is so intrinsically motivated. I have never seen anything like these before. I guess this is what it means to have SYNERGY. When all our beings flow in the same direction. I really have no other explanation other than it’s God’s divine will that brought all of us together. I know I have said it before, but Alan, Zhenling, Kenneth, David, you guys (and girl) are simple 2AWESOME! I hope that you will continue to work with Sharon and me on this exciting project. Kenneth is right when he summed our experience up with the punchline “It was Gr8! And now, it’s simply 2Awesome“. (note: “Gr8” was “Group 8” for our Singapore River Assignment 2 group and “2Awesome” is “Group 2” for our final project group.)

1-2 weeks into the final project, I knew I could not commit the time required to be a “useful” programmer. So I fall back on what I do best, to be the morale-booster, technical and logistical support. Day by day my constant worry is that whether I have contributed enough to the group. I hope I did. For all the technical incompetencies, I supplement it with my enthusiasm and creativity. Alan described me as “wacky”. I think it’s quite apt.

I also got to fulfill my chinese martial art time travel dream. HOHOHO.

joshuatj kungfu fist
joshuatj kungfu fist. Thanks ZhenLing for the braid!


Of course, no project is complete without a nice video to sum it up. For some reason, video production seems to always find its way back into my hands. Here take a look at it, it’s only 30secs. Leave some comments.

One thing that I learned from making this video. Not really learned, more of reinforced. It’s that video editing, the piecing up the clips part, it’s the easiest of the whole process. The hardest part is coming up with the idea, putting it down on paper, refining it till it flows of honey. That, is the hardest part in making a video.

Looks like it is going to be a long while more before I will be a competent programmer. I will not give up though. At the very least I am now holding the title of “IT Officer”, I will have ample opportunity to practice my programming skills. World, you just wait, I’m coming to make a dent in you. Media + Programming, you just see what I can do, you just see….



(One last assignment we had to do is to read all 42 other people’s blog and do a “Mutual Blog Grading Survey”. Prof. Ben likes to outsource his work. So here we are, reading all of our course mates’ blog posts. Fortunately for me, ever since I have gotten my Galaxy S II, I have been keeping up with the blog posts. Not all of them, but I think I did read most of them. One thing I dislike reading blog post on the go is that there’s no one easy way to comment on the blog post that I have read. )

Exciting Times! Exciting Apps!

The order of presentations

  2. Mystery Story
  3. UOMe
  4. Yun Reading
  5. Rob the Robot
  6. Mobile Lions
  7. Appetit
  8. Letters to Amanda
  9. Better Me
  10. Trove
  11. Singapore River
Most of the opinions below are based on just listening to the presentation by the developer team. I would love to testflight all of the apps when they are launched.


First up we have Simple Interface. Functional. They bought the domain, launching tomorrow (Nov 1, 2011). The main feature is the ability to “Book a Cab” by one touch.
This is one app that I will really use as it’s getting harder and harder to get a cab, especially after the two Integrate Resorts (IR) came up. According to one cab driver, cabs nowadays prefer to line up outside IR as they might get tipped highly by winning gamblers taking their cab. So there you have it.


Second up we have Mystery Story
– Interesting
– I like Mystery/Detective Stories – reminds me of DOS Text Adventure Games


UOMe. This is another app that I would really use. Right now I’m using EasyMoney an Android app to track the iOweU/uOweMe transactions. But it uses the complicated accounting system of “Accounts/Withdraw/Deposit”. It took me quite some time to get used to whether I’m supposed to “Withdraw” from my friends “Account” when he owes me money or should I “Deposit“. Perhaps it’s easy for people with accounting background, but it’s a hassle for me. That’s why I like the sound of UOMe so far. I think they are deploying it within the week.


YunReading 云读 
Great idea. HTML5 = Cross Platform support. Bookmark synchronization. Targeting Chinese Market – Chinese ebooks. They need to iron out the UI/UX issues before they launch.


Rob the Robot
Partner with 2359 Media. Launching mid-November in conjunction with the Rob the Robot Cartoon on Disney Singapore. Hey! This is no joke, this is big! I feel proud for yytellmewhy and Hoang, glad to have worked with you before! All the best with launching it on mid-November! This is the official website for the cartoon Lookout for the App Launch in 2 weeks time. I think I’m gonna watch the cartoon. It’s so cute!


Mobile Lions 
Attendance taking to help LIONS Befrienders in their checkcall procedures. Something along the line that the befriender has to visit 1000+ befriendees and keep attendance of their visits. HTML5. Cross platform support. Access Controls (Staff can approve/deny submissions). I think this will help the Voluntary Welfare Organizations (VWO) tremendously! They have a standard attendance checking API in the pipeline. I think that is pretty powerful.


Touch Appetit
Redefine Mobile Dining Experience. Platform. The idea is to have other restaurant apps live off the platform. Information is power. Collect customer data – targeted advertising. Salesforce as backend. Partnered Clients “Texas Chicken, Lerk Thai, etc.” Polish presentation slides. Polish app (screenshots).
Pro, ’nuff said.


Letters to Amanda (
Everyone deserves to be heard, deserves to be loved. Empathy. Anonymous Platform. Simple UI/UX. Hotkey navigation.
1. Write a virtual letter to the rest of the world about almost anything you want
2. Read letters posted by others around the world
3. Exchange of letters with anyone around the world.
I like the font they use! Adding value for the world!
Civics Moral Education (CME) – Moral Values Education Social Media Platform. Autonomous, peer-to-peer learning. Inspired by “Share a Quote“. Gamification. Learn moral values.


The Trove: where all things are treasured
The problem: Stuff gets thrown away when students move out every semester/academic year.
The solution: Convenience to sell/buy second hand items
Trade hub. Target Halls/PGP. Cold start problem.

Facebook Security & Privacy

Once again, it’s customary to include the post that I did for last year’s lecture on “Facebook Security & Privacy“.

Sometimes, “Security” is inversely proportional to “Privacy”. E.g. Airport tightened security reduces people’s privacy. In contrary, the more privacy people want, the less secure their data will be.

Chiang Kai went on to talk about Code Injection. It’s really quite fascinating. He did warn us that there are IT security laws in Singapore and therefore we shouldn’t try it at home. Err… ok.

Even though I have posted this in my previous post, I still think this is a good refresher.

Basic Security Objectives

  • Confidentiality
    • Protect from eavesdropping
  • Integrity
    • Protect from modification
  • Availability
    • Protect from denial of services

Can Your Killer Web App Scale?

I’ve attended Zit Seng’s lecture last year and I happened to blog about it at “can scale?“. However, last year I was still quite noob at web technologies. But in retrospect, I realize that some of the higher level general concepts stuck with me ever since last year. At least I know there’s such a thing called “load testing/balancing”. I think I got to know a bit more about what “Firebug” can do from that lecture too. I also got to know about how Drupal is very slow from Zit Seng’s blog at All these couldn’t have been possible if it’s not because of ZitSeng’s lecture.

This year, equipped with more experience, I think more things actually make sense to me. At least I don’t get @@ 30 minutes into the lecture.

This is the rough outline for today’s lecture

  • Infrastructure Issues
  • Performance Monitoring
  • Load Testing (Commercial Solution: HP LoadRunner)
  • Basic Optimizations
  • What’s in the Real World
  • Other Interesting Stuffs

ZitSeng mentioned about his encounter with a certain Drupal app that does 46,000 syscalls per page load! Other Drupal apps also does around 6000 syscalls. In comparison, a simple normal Hello World PHP app only uses 200-300 syscalls, WordPress does around 700+. Read more about this at Building Scaleable Web Apps – Syscalls
I know “sprites”, I used them when I was making my own games using RPGMaker 2000. It’s a very smart way to optimize an application. Load one big picture and ask CSS to pick a particular component out. I knew I’ve heard that CSS can do that too, but somehow it didn’t stick. I think it will this time round. Use CSS sprites.  Example (I grabbed it off SmashingMagazine post)


Key Learning Points from “High Performance Web Site: Essential Knowledge for Front-End Engineers – Steve Souders” & “ApacheCon Europe ’06”

  • Make fewer HTTP requests
  • Make JavaScript and CSS external
  • Use a content delivery network
  • Reduce DNS lookups/Avoid DNS lookups (in .htaccess, etc)
  • Avoid .htaccess
  • Pre-render popular content (caching)
  • Make popular content static

SSL creates plenty of CPU overheads at both web server and client browser. One possible solution is to relieve the web server of processing SSL e.g. Hardware or separate server.

End of lecture reflection: I think 60% of the stuff still flew past my head but I’m glad that I understand at least 40% of it, I think. Just like what Zit Seng has said in the beginning, the takeaway from this lecture is not technical skills, it’s more about the “appreciation” of the issues involved when we scale our app. I remember Sebastian (Jollideal) telling me that he refers to his CS3216 notes as his website scale. I think he’s referring to ZitSeng’s lecture notes. So ya, true real world usage.

For our final project team mate, let’s aim to grab the CS3216 achievement badge “refer to ZitSeng’s lecture notes”!


Some key quotes:

“We need experts who understand the entire stack!” – Zit Seng.

“Network issues are “fun”‘ – Zit Seng

“Q: What is Acceptable Web Response Time? A: There is no standard. User satisfaction is achieved when experience exceeds expectations. Do better than your competition. Do better than your users’ expectations.” – Zit Seng

“Slow client ‘hogs’ your server” – Zit Seng

Singapore River Recce


Today I’m a tourist. To put Ben’s advice into action, team Singapore Heritage Mobile took a stroll down Singapore River, following our very trail that we’ve developed for the mobile assignment.

Aside from the hot and humid weather, it was very fun! It’s also very comforting to see that the geolocation feature really work as advertised. However, I think the feature can really be improved further. Right now it only tells you that a particular landmark is x metres away or ‘you are here’. Not really useful as it doesn’t say which direction. Most important of all we cannot assume that everyone knows how to read a map. Especially when our current map doesn’t really have key landmarks to help pinpoint where you are. I guess if we use Maps API this problem should be solved as it should work like how Google Maps or GPS works. Constantly polling the location from GPS, WiFi access points and cell towers.

Alan also suggested that we should take the leap of faith and develop a native iOS app instead. Honestly I’m all for that idea. But that also mean 110% commitment from everyone in the team. That would also mean me dropping a few other external commitments, which I think it’s definitely worth it. Heck, I think this is the best opportunity to hone my programming skills than ever, which happened to be one of the key reasons why I decide to take this module again. I’m all in team, 110%! Let’s do it!

Back to the app…

I have to agree with David. Having gone through the trail myself, I think the main purpose of our app, other than feeding the users with historical juicy stories, is to keep our users entertained while travelling landmark to the other. Audio narration seem to be our best bet right now. But we are also open to suggestions, anyone?

Work aside, this trip is really awesome because I think we know a bit more about each other i.e. David and his Utown adventure, Alan and his NOC experience, Zhenling and her hair braiding skills ;D, Kenneth and his gaming insights and last but not least Sharon and her awesome husband Derrick! Derrick accompany us all the way patiently even though he is not exactly part of the project! Model husband siol! Lucky Sharon.

Oh ya, thanks to my awesome team mates, I got a time travel encounter with some kuli from yesteryears. Photos are on the way. Oh ya, I heard I got to cameo in some random tourist’s photo as well.

Posted from WordPress for Android

Reflection on Peer Appraisal Exercise

This is truly an interesting exercise. First of all I would like to thank all my team mates who took the extra effort to appraise my performance for the past 3 assignments. I totally understand the “extra effort” part as I myself have to appraise all those that I have worked with too.

Peer appraisal might sound or look easy up front, but It’s really not as easy as it seems. Maybe it’s just me but putting feelings down into words is not trivial at all. So once again thank you awesome team mates!

So now on to the reflection. The recurring theme in the appraisal result is that I am an ideas person. It’s like deja vu because last year ideas was also the recurring theme in my peer appraisal.

I dug deep within hoping to unearth what makes me cause others to think that I am an ideas person. I really don’t know. Well I did not aim to be the “ideas” person when I decide to take this module again. I wanted to be a “coder“. But I guess it’s still a long way before I’m up to par. Joshua, let’s work harder on this together!!

But seriously I believe everyone is capable of coming out with great ideas. Ok, let me try asking myself how did I end up with so much ideas?

  • Read. Read a lot more. Read something outside of my field of study. Don’t know what got into me, I just decide to pick up an American History Textbook and started reading. Of course, having someone like Ben Leong as your Facebook Friend does help boost your reading a little bit more. Now I think about it, maybe it’s because I’ve added Ben Leong as my Facebook friend – my Facebook News Feed is never the same again.
  • Lateral thinking helps a lot. Sometimes great ideas pop when I try to piece different disciplines together in your head.
  • The propensity to ask a lot of questions help too. Well, one of the major complain that I have from friends (not from this peer appraisal) is that I ask “Why?” too much. Asking “What If?” helps too.
  • Of course nothing beats writing down my ideas. Ideas come when I least expect – Serendipity happens. Toilet and Bathroom cubicles especially. That’s why it’s important to record it/jot it/blog it down whenever it happens. I used my smartphone as my brain extension. And it’s working pretty well so far.

But having said all that, yes having ideas is good. But since  ideas’ a dime a dozen, I think successfully executing an idea is even more valuable. And that is a skill that is not so easy to hone. In fact, in the context of a web app, it takes more than one person to successfully execute an idea.

Now onto the “Bad” side. I got a “MIA sometimes” and “Difficult to reach at times” and a suggested improvement of “To put away messages so that I know you’re unavailable”. Whoever you are, I really treasure your comments. I will try to leave “away” messages. Perhaps as Gtalk status?


As I think about it, I think this has to do with my unusual nocturnal waking hours than anything else. I’m aware of the problem and I don’t think there’s an easy fix. Meanwhile the easiest way to reach me is through Facebook, SMS, Email and Gtalk. Generally I just dislike picking up phone calls. I guess my growing up in a home where there’s a telephone hotline makes you subconsciously refuse to pick up the phone. Maybe that explains why I really prefer higher latency communication.

Case Studies Review: Get Help! (2.0) & Team Dynamics

User Interface & Interaction Design

So today’s “lecture” is about User Interface & Interaction Design based on the Facebook app “Get Help” by Su Yean, Kent Nguyen and team. This is the 2nd time I am attending this seminar/lecture.

The slanted tabs is being mentioned again. Haha, looks like the simplistic interface of Facebook and how it became successful have somehow infiltrated al our minds. Or wait, maybe it has always been like this, maybe Facebook just somehow nailed it. On this note, I have a question, is there a place for slanted tabs? Maybe not in Facebook?


Gamification is also discussed. I don’t remember whether it was mentioned last year. Well judging by the amount of hours gamers spent playing games, I guess the gaming companies did something right. Maybe it appeals to the natural instincts of human beings. It’s like they are able to push the right button in people’s brain. People get excited and motivated to complete a virtual achievement or earn a virtual badge. The most interesting fact is that adopting the same game concepts unto learning works, think  “JFDI Academy“.

JFDI Academy Logo

Apparently JFDI Academy  is so compelling that students leveled up during the lecture itself. Meaning that it’s more exciting to work on the assignments than listening to the prof’s lecture. Ok, I have digressed. But it’s interesting how gaming is shaping the reality landscape. I believe this concept is not too far-fetched

Video Game High School

It’s the near future: You’re dead. Your kids are probably dead.
Your grandkids (if they’re alive) are playing video games.
Why? Because professional gaming is the biggest sport on earth.
Around the world, millions of players duke it out in fighters, RTS’s, First Person Shooters and more.
To the victors go the spoils: glory, clan contracts and million dollar endorsements. The best young gamers are recruited by elite boarding schools to sharpen their skills. The best of the best go to VGHS: VIDEO GAME HIGH SCHOOL.


A:B Testing. Two different version of the same apps. “People are not like you”. Therefore it is important to constantly tweak your apps to fit what’s popular, or plainly what’s giving you the highest click-through rate. Minimizing the number of hops to the desired end result. I think the randomize links to show two different layout and functionalities is quite interesting. Now for Final Project, let’s try to make this happen.


Team Dynamics

Read my blog post about Fan Gang.

Ideas first” OR “Team first“?

Like what I’ve said in my previous blog post, it all depends on the context in which the team is in. By coming back to the context of this module, for final project. We have only 6 weeks. The sage’s advice is that we wouldn’t want to end up in a deadlock like the US Congress.


Prof. Ben mentioned that as Project Manager, try not to be too much like a “Nice Guy”. Be firm. Somehow it reminded me of this “Nice Guys” video by KevJumba.

I don’t believe that “Nice Guys” always finish last. But it is important to be constantly reminded of what is the team’s established vision and make firm decisions. Remember to aim for WIN-WIN situations rather than compromises.

Quote of the day “If you can’t finish the project, write a good report!” (Applause)

CS3216: Case Study 2 – Team Dynamics (Fan Gang)

As I have done the case study for “Get Help!” last year (see blog post here), I shall write about “Fan Gang” instead. To understand my response below, you have to read this Assignment PDF first.

FAN Gang 樊刚

Note: This blog post is not about Fan Gang 樊刚 – (wiki) one of China’s most prominent economists and one China’s most active reform advocates



Ok, on to my Case Study response:

First of all, I think “Fan Gang” is a very bad name. Not sure why but “Gang” sounds amateurish to me. But it could be just me, sometimes our views might not quite like others. (

Ok, on to the discussion questions:

  1. Lanh said, “It would be really bad if we have a great idea but are unable to execute it successfully”. What are your views? Which is more important - the idea or the execution? Why?

    I would like to use Prof. Ben’s favourite quote to answer this question “it depends”. It really depends on the situation. Of course in the context of CS3216 module, execution should take a higher priority. After all there are certain milestone that a team would have to meet by the end of the semester. Poster session is one of it. Like how Jeremy have felt during the Poster Session. It kinda miss the point to have a Poster Session if there were nothing to showcase. But at the same time, without an idea that the team truly believes in (also mentioned in the text) it would be a waste of everyone’s time. Having said that, all is not lost if an app does not execute well. Well, if it’s not because of what “Fan Gang” group did, Prof. Ben wouldn’t have such a wonderful example for this Team Dynamics assignment. “Sometimes in life it could be that the purpose of your life is only to serve as a warning to others.”


    Ok, the demotivational poster is a joke. I didn’t mean to disrespect the team’s hard work.
    But at the very least everyone in the team brought home a valuable lesson. Think about it, isn’t this what school is for? A sandbox environment for people to take big risks. Failed. Learn from mistakes.

  2. What have you learnt about Facebook so far?

    Facebook? Listen to your users, but not by listening to what they have to say but rather “listen” to their usage behaviour. Throughout Facebook existence, they have changed their user interface so many times that I think even they themselves lost count. Take a trip down Facebook’s memory lane here
    facebook evolution

  3. Comment on the ideas for Another Life and Fan Gang.

    I don’t want to talk too much about the “idea” of either Another Life or Fan Gang because it hasn’t really been tested in a real environment. But judging from the success of “The Sims Social”,”FarmVille”, “CityVille” and many other simulation games, who’s to say “Another Life” wouldn’t take off if it was executed properly. Same for “Fan Gang”, never try never know. Although Prof. Ben was not convinced that people will want to have “Fan Pages” for ordinary people, but now we have “Facebook Like Pages” and what do you know, I’m sure there are even Facebook Pages for cute cats and favourite friends. Maybe if Fan Gang was properly developed back then, Facebook might even take interest and acquire the group? Perhaps it really did happen, in an alternate universe.

  4. Should the team have changed their idea for the Final Project mid-way or stuck to their original idea? Why, or why not?

    From the way it was described in the text, the team seem to be more excited about “Another Life” than “Fan Gang”. Especially since the decision to change their idea for Final Project was done with a Team Vote, that means it might not a consensus. In retrospect, maybe they would be better off continuing with “Another Life”. As I have learned through the hard way, one small ounce of belief in an idea can motivate a person for a long way. The opposite is also true, one small ounce of doubt can grow into toxic and energy will be drained. Sometimes, one small ounce of energy is enough to push through the threshold.

  5. List the major problems (obvious and non-obvious ones) in faced by the team? How could they have done differently and better?

    Knowing the limited time frame they have, I think the team is really too ambitious to try to implement everything by the project deadline. I think the team would be in a much better position if they aimed for a Minimum Viable Product (MVP) instead of a full feature app at the end of the assignment. In essence I think an Agile Development methodology might suit them better. I might be entirely qualified, but I got the feeling that there are little place left for Waterfall model development in the software development world. Especially since user feedback plays such an important role in the feature of an app.

  6. What did the team do right/well?

    I think the team was really thorough in their features/specs list. That is no easy feat.

  7. What would you do if you were Jeremy on the evening of 24th April (and the deadline for the final project submission was the next day)?

    I would ask my room mate to help as much as he can? I would beg Prof. Ben to extend the deadline? I really don’t know. However, If I myself fully believe in the idea and there really is nothing else I can do to salvage the situation, I will start blogging about my whole experience. Although I’m not good at writing, but I found that writing my thoughts down in words help me process my emotions and thoughts better. At the very least I should crystalize the lessons learned so that i will not repeat it again in the future.

  8. How would you handle a situation where one of your team members is unable to deliver on the work he/she promised because of personal problems?

    Well, if confronting the person doesn’t work, one could complain and rant about it for a little while. But ultimately it’s about sucking up your chest and move on. Delegate the remaining task. Cut some features and get it done.

  9. What, in your opinion, are the key learning points from this case study?

    As title, “Team Dynamics”. Have an idealistic long-term goal but realistic short-term goals. Be tactful when dealing with people. Do not be afraid to take risks.

Vsee talk

Today Prof. Ben invited Milton from Vsee to speak. He started by introducing the Vsee technology. I really think it’s uber cool. Interestingly why wouldn’t I have heard of this before this…. For such a cool technology, perhaps they could use a bit more coverage on popular media?


I’m really grateful that Milton is sharing what he’d learned in starting Vsee and his life. I think this is one of the added points of CS3216. You get to take a peek into other people’s brain, priceless.

He said quite a lot, but I am just going to blog about these few points that caught my attention.

On people to people relationship, he mentioned the “Sandwich” method. In essence, when you have to provide negative feedback, you start with a positive compliment to the person, then you move on to provide the negative feedback, but remember to target the action not the person. Lastly, you add some icing by providing another round of positive feedback. This reminds me of a Saturday night session with HuanJin and CheeEng. One of them mentioned about this before, and I have always tried to use it whenever I remember. I have to agree with Milton, this method really does work. Even if the other party knew that you are using the sandwich method, it still work. The challenge is to have this mechanism kicks in when you’re angry, overwhelm with furiousity. I just have to say, it’s not easy, not easy at all.

Milton likes to read biographies. I like it too. But it’s interesting that he would recommend the biographies of Hitler and such to gain a different perspective of how people look at people. Maybe I should do that. But ever since I got my galaxyS2 and data plan I found myself reading more online articles than books. In fact, the books in my room are already gathering dust. But it’s really a struggle, there are so many things to do, so little time. Milton mentioned that one way to really know what’s important to you is to always seek out new experience. It’s only after you try you’ll know whether you like a certain thing or not. IMO, that sounds like a good strategy except there are quite a few things out there that it’s better not to try as it might have lasting effects. Again it sounds like “balance” is always the key.

He quoted that someone mentioned that man are lousy decision makers until they are 51 years old. Apparently we are not mature enough and we don’t have enough experience yet to make really good decisions. Now I’m curious, how about women? Does the 51-rule applies to them as well?

My respect for Milton have just increase again after hearing that he persisted for 5 years, 2003-2008 before he got his first round of investment. He must really believe in his solution, it’s passion meets reality.

“Comfort is the worst prison.” IMO, life is made out of many different compartments, I think some compartments are meant to be comfortable and some must not be too comfortable lest it hinders growth.