What I hope to learn in CS3216 (again)?

It’s been more than one year since my last stint in CS3216 ended. As I was reading my previous posts about CS3216, especially the “What Have I Learned from CS3216” post. Once again I felt myself asking myself “Why am I taking this all over again?”. To be honest, it’s really hard to pin down exactly why I am doing this all over again. Perhaps it’s the adrenaline rush, the late-nights-chiong-project-with-a-group-of-like-minded-friends, the real world implication for what we do, or just because this is a necessary step to fulfill my dream….
 But as highlighted in the reflection post, there are a few things where I hope I’ll be able to learn at the beginning but I didn’t succeed. Since this is my 2nd attempt and probably the last one, I better buck up and make it happen. After all this module is about realizing our childhood dreams right?

Hello world, look here, “I want to be a competent programmer”!

Continue reading What I hope to learn in CS3216 (again)?

Déjà vu

Hello World! I’m back in CS3216!

I have just finished watching both “required-watching” videos for the module. It’s really interesting how even after a year the videos continue to inspire me and “fire” me up. I’m ready to make a dent in the world!



Randy Pausch’s   “The Last Lecture”

Steve Jobs’   “Stay Hungry Stay Foolish”

What have I learned from CS3216?

First of all, I would like to say this “Unless you’re willing to sacrifice your FYP, please do not take CS3216 (or any Prof. Ben’s module) during your last semester (FYP due semester). Although it’s quite fun to take Prof. Ben’s words literally “Grades are not important”, I think the more appropriate phrase should be “Grades are not that important”. After all, if you are already getting a third class honours and above, the worst thing that can happen if you flunk all the other modules is to get a third class honours. But if you don’t even have a third class honours, maybe grades became slightly more important. As much as we are inspired by Steve Jobs and people who’ve dropped out of school to start their business (and be very successful and rich).

The fact remains that we are NOT in the United States of America. The society over here is just not that forgiving. Besides, I doubt the infrastructure here is ready to support such brave endeavours. But .. but… granted maybe what we need is just a jolt, maybe what all of us need is to have the first mover, maybe everything will change when a Eastern Steve Jobs or Eastern Bill Gates began hitting the newspapers headlines. I guess that’s what Prof. Ben is advocating throughout the whole semester.

So what have I learned after one semester crazy CS3216?

  1. Social Passion – It’s through the many researches that I’ve done for the final project that I’ve discovered the book “Creating a World without Poverty – Muhammad Yunus“. Before this, I’ve always considered money as the source of all evil. Thus if it’s not because I need to eat to survive and to eat I need to use money, I will rather not use money at all. Ask me to venture into business where the end goal is to maximize profit? Nah… not in a ten thousand years. But It’s through CS3216 that I’ve began to see an alternative way of using money as the means for an end. The idea of Social Business is very compelling. The idea of it adopting a non-dividend and non-loss model is something that my conscience gladly accepts.  It’s like I’ve opened another door where it’s full of opportunities.
  2. Video Editing Skill – After Effects
  3. Click here to see my production (using After Effects)
  4. If you know what you are doing, it’s not too daunting to step out of your own comfort zone. Most often than not, people like me just need a slight nudge to start the motivation engine.
    1. Joined many competitions
      1. Microsoft Photo360 – PhotoSynth
      2. Imagine Cup Digital Media – Currently @ Round 2 “Prevention is better than Protection
      3. Imagine Cup Software Design – Regional Semi-Finals “argora
      4. Various Photography Competitions
  5. Team Vision is crucial! Add-on to my previous teamwork principle of “It’s more enjoyable to work with a not-so-talented person who is equally passionate than a damn-talented person who is not as passionate”.
    1. Feelings aside, a real talented person can really mesmerize you with his/her ability, no joke.
  6. Communications is crucial in a team project, especially when the project time frame is so short. Somehow, meeting up and talk in person can be more efficient at times.
  7. Rediscover my own passion – media as memory captor
    1. It’s truly fulfilling to be able to drive a stake in the writing of a part of history
  8. How little I know about Software Engineering & Progamming (Yes, I’m a noob [but I was the Tech Guru back then… oh well, I guess all these are relative]
  9. key lesson in leadership– putting a team together and making things happen
    1. The best person to be a leader is the person who brought the team together
  10. Reaffirm my drive to challenge the norm – it helps when there’s a whole class of crazy people that tries to challenge the norm together with you. Oh ya, not forgetting the class mentor who constantly psycho all of us to step out of our comfort zone.
  11. Reaffirm what I really like– to camp @ a place with a group of people all striving towards a common goal. I don’t mind living my whole life doing something like that! (That’s why I think work-life balance is irrelevant if work=life)
    1. Workoholic? Ha. maybe.
  12. The prospect of Argora is incredible and I fully believe in its potential to revolutionise the world, finally breaking the language barrier.

    A community-driven online meeting-place with integrated translation support that facilitate people to seek and share social causes. A universal translation solution that combine the essence of Wiki, Blog, Digg and Forum. We strive to break the language barrier.
  13. More? Many more… Some of it quite hard to put into words. Suffices to say, CS3216 has changed my goal bearings significantly. Ahoy adventure ahead!

Thank you Prof. Ben for such a wonderful experience this semester. Thank you TAs (KokWee, SuYuen, YanJie, YuenHoe, and Jason) for all the hard work, heartfelt thanks, I know it’s tough to be doing all the behind-the-scenes work. Thank you ZiHan and Chris Henry for the workshop session. Thank you all CS3216 classmates, I think I’ve found the perfect group of people for my mental acrobatics exercise. Stay tune.

Continue reading What have I learned from CS3216?

Facebook Security and Privacy

Today’s guest lecturer is Er Chiang Kai – Prof. Ben’s classmate back in MIT, Software Engineering – Senior Manager. IBM Singapore Software Laboratory.

This lecture tells us a lot about how vulnerable data can be. There are so many ways that our privacy can be compromised,  e.g. SQL Injection, Social Engineering, Cross Site Scripting, Directory Traversal (i’ve actually tried it on ~joshuatj on eusoff personal website, ha, it doesn’t work, woohoo!)

Security only as good as weakest point.

I like the analogy of the home where it has the most sophisticated security system but one window is left open. GG.

Basic Security Objectives

  1. Confidentiality
    • Protect from eavesdropping
  2. Integrity
    • Protect from modification
  3. Availability
    • Protect from denial of service

script kiddie” is an interesting concept, it’s can literally mean kids who use scripts/programs to hack.  OR according to Wikipedia, it is

“derogatory term used to describe those who use scripts or programs developed by others to attack computer systems and networks. [http://en.wikipedia.org/wiki/Script_kiddie]”

Singapore has no Privacy LAW! Woohoo… the big boss can do anything to us, woohoo!

All in all, the PPT is gonna go into joshuatj-gold-archive, it’ll be really useful in the near future.

Dialogue with *REAL* Entrepreneurs

the spirit of cockroaches – they do not die!

If you were to ask me to summarize the whole session, I’ll say “money”. Apparently other than Tong Yee who’s really out there to try to change the education system, the rest are entrepreneurs whose sole purpose of creating a business is to EARN MONEY! Ash says that “Sales solves Everything”. Hoong An says “Money solves everything”. Les is thinking how to monetize the many eye balls that he’s having now. Now I know that money is really important, but I think that there’s more to just money. Currently I’m reading Muhammad Yunus’ “Creating a World without Poverty”, I think Social Business is really something…

Why you should not be an entrepreneur –

HungryGoWhere Chief Evangelist Officer

—– some of the highlights

You hang around people just like you
– no soccer team wins with ten strikers or ten goal keepers on the field at the same time

Hoong An mention that he’d rather hire someone who is very good at doing what he does best rather than someone who he can get along pretty well. First of all, of course the best scenario is to have someone whom you can get along pretty well and he’s has very good technical skills. But taking this hypothetical situation, Hong Anh’s decision is to hire the more talented one. In this I have to disagree. For what it’s worth, if I really have to choose between the two, I’d rather work with people who I can get along well. I truly believe in the synergy effect. So does my father. The time and effort trying to convince a talented person who doesn’t believe in your vision might be better spend at tackling the business hurdles that’s ahead.

But maybe this principle of mine doesn’t really apply for a profit-maximizing business. But Social Business? It takes a passionate person to want to do social business.

You cannot make decisions
– a wrong decision is better than a no decision

couldn’t agree more

You have no faith and do not believe in God

Hoong An’s reasoning is that having a faith or believing in God can really pull you through the toughest time. I think God aside, it’s important to always believe in something bigger than ourselves. I think it’s an acquired-skill for a person to think that the world doesn’t revolve around him. Thanks to human arrogance.

Oh ya, I happen to be the official videographer for the night. The videos are in progress hang on… Most likely it’ll be uploaded to the CS3216 Facebook Group once it’s done.

can scale?

IT Architect – Lai Zit Seng : Provisioning for a Million Eyeball

walah… this is the most technical lecture ever… totally lost. I think the jargons are the culprit. Database locking? mod_perl? CGI? DTrace @@? ACK? Nagle? NAS?

Even TCP = Transmisison Control Protocol, in which I know the name, but I don’t think I know how it really works.

The gist:
1. Make fewer HTTP Requests

2. Put Stylesheets at the Top

3. the important “/” – prevent the browser from fetching twice!
e.g. “http://www.joshuatj.com/” is faster than “http://www.joshuatj.com”

4. Load Balancer = delegation of power. Load Balance server = front line minions.

It just mean that there are so many more things to learn. ESP turn Master in CS?

Integrating my blog into Facebook

Aha.. thanks to the WPBook plugin, now my blog and my Facebook share the same comments. Comments that was entered in Facebook will appear in my joshuatj.com blog and vice-versa. Most importantly, every new updates (like this one) will be automatically stream.publish into my Facebook Wall. Subsequently appearing in all my friends’ feed as well.

Ya, I know Facebook Notes is able to “Import a Blog” through RSS. But it’s actually a duplicate copy of the same blog post back @ joshuatj.com . Thus, it’s not elegant. Now the next step is to spice up my Facebook i.am. mirrored-blog.

Interestingly how WPbook does all these is through some magic using Facebook Connect + Facebook Application. Thank God I’ve had some experience meddling with Facebook Connect + Application. CS3216 is really empowering me lar!

If you’re interested, check out the WPBook plugins page https://www.openparenthesis.org/code/wp “Bring your WP blog to Facebook”!

Bring your WP Blog to Facebook

Mid-Term Survey + Prof. Ben’s Responses

I think this is really cool and useful. It will be very good to have other modules do something similar, especially Engineering Science Modules. Check out what Prof. Ben has to say in regards to our survey


Being a Prof isn’t easy indeed. Even in a small class of 41 people, the responses cover a whole range of sentiments, good, bad and neutral. It reminds me of EusoffWorks, where we have to ensure 130+ people are happy and they’re learning, with so many different fields, photo, video, design, IT, Digital Media Management. resonates… resonates… wooong wooong …..

Personally, I think the Wave assignment is really exciting and loads of opportunities when you immerse in the bleeding edge!

Google Wave Assignment Review

Pamela Fox from Google Sydney reviewed our Google Wave assignments.

Make it Wave-y –

1. it should be playable by one user as well as many users.

2. command line type user interface is a NO-NO..

3. user interface should be kept small

4. clear instructions on how to use the app. Legends to show what is what.

The LIVE video conference is quite laggy and honestly it’s quite a turn off. But problem = opportunity, I guess that means opportunity in this field!

Case Study: Get Help

This is a case study on “GetHelp!” regarding User Interface & Interaction Design.  “GetHelp!” was developed by a group of students from CS3216 in March 2008. Quoting the assignment PDF,

The core function of the app is to make it super easy and fun to discover people from within and outside a user’s Facebook network to help them with their needs and funky endeavours.

As shown below are screenshots of the initial version of the application. The developers have since redesign the user interface.

My task is “to analyze the screenshots and uncover what was the problem faced which lead to the team’s decision and how the problems can be resolved…

Figure 1: Home Page (also the New Project page)
Figure 2: Overview Page
Figure 3: Project Page
Figure 4: Statistics Page

note: The accompanied verbose description (in the assignment PDF) are not included in this blog post.

My first impression of the application is that “Hey, the icons are cute! I wanna try this out”. However further pondering leads me to the conclusion that the application is redundant. I think users might not want to add an application to do something that the Facebook status publisher can already do very well. The entry level is simply too high.

Besides, I ask myself “Why would I want to add this app?”, “What are the incentives”, “Badges? Special Nicknames?” “Do I really need these?”. In short it is non-viral and non-sticky. It lacks two of the most important feature of a successful Facebook application. More thoughts will have to be put into attracting the lead-generation.

Layout (User Interface)

The landing page is just too cluttered. I bet the developers themselves didn’t spend much time test-using the app themselves. Or their app-flow was not planned properly in the beginning. IMHO, entry-landing page should be straight forward and minimalistic (think Google). Only make available most basic feature (hide the rest under “advanced options”). I would like to take this opportunity to commend whenisgood,  it is simple and effective.

Zooming in….

  1. Usability – it is confusing – “need quick help” and “I need help with“, which is which, what it does?
  2. Top navigation bar – slab icons (on the right) + words link (on the left).  It is clearly a design is not standardised). Overall design throughout the app is standardised. Good.
  3. Red colour draws attention -> immediately users will take note of “call for help” button. Good.
  4. verbose description of options more harm than good i.e. “post to all your friends” “or, you want to hide it from someone specific“? Most users are familiar with facebook users & privacy selections -> simulate it OR use supported Facebook API.
  5. Statistics Page– make the numbers more prominent (bold it or stylise it)
  6. Statistics Page – maybe a simple description of what is “fire” – I seem to have a hard time understanding the metaphor

In short, I think the landing page should be as simple as one simple text-field and a button to submit (as shown in the image below)

Next, the advanced options will only be made available if the user request/click for it.  Better still, the developers should leverage the status “Publisher” to lower the entry level barrier. This way, users wouldn’t have to change their habit of posting stuff onto their Facebook wall. If advanced details are needed, it is possible to amend the published wallpost with the captured post instance.


I notice a “change  image” feature @ the landing page. I wonder how many images are there for users to choose. Does it support user-upload image? If yes, how does the quality-control work?

The SMS feature is commendable if it works (I wonder how they got it working?). Besides, I think it’ll be too much of a SPAM if this application becomes real popular.

Integration with twitter is no easy feat too. Let’s say someone on twitter saw the tweet and wants to help, is this app able to capture that help instance? What if the twitter user doesn’t have a Facebook account?


There is a fundamental contending issue here. I think if a person really wanna help another person, they wouldn’t want to be seen as to help so as to earn badges. Therefore, the badge/nickname incentive might just backfire. On the other hand, if a person really wants the badge/nickname so badly, experience tells me that they might not have the credentials to help that many people. Unless this issue is resolve, I think the application will not be able to take off.

One more thing, how will this app be monetize? The only way I can think of will be something like the now defunct Google Answers. But is that really what the developers want to achieve?

All in all, I think the take back from this Project Case Study is that minimalistic is KING when it comes to User Interface and Design.  Plan well = half succeed. Cluttered = no good.