Tuesday, November 15, 2011

just a comma

In my first blog post, I mentioned what I hope to learn in CS3216:

1) Learn new stuff

The learning process has been fun. Lots of stuff to play with which I am ashamed to say I have not touched before despite having existed for quite a while. Most satisfying moment was probably when my AJAX requests to the server worked. Instant high!

2) Challenge myself as much as possible

Indeed this has been a very challenging module. Coding wise, I have to get things done in short amounts of time without much prior experience. Time management wise, I have to juggle between this, CS3103 weekly labs and various assignments, not to mention Lions and their urgent emails. In the process I had to neglect some things, like Maths :p Last but not least, there were the situations where I had to be involved in project management as well. The opportunities were not abundant, but nevertheless precious.

3) Meet other people

CS1101S has, in a way, created a little enclave of sorts, because since then I have taken my CS projects with practically the same group of people. CS3215 was the first CS module I did a project without them (although in the end, I still ended up with a group of Schemers -.-).

The nice thing about working with friends is that we already know each other well, so it is easy to do projects with them. CS3216 is evil, because I was forced to work with new people. As I have mentioned in my previous entry, I am slow in warming up to strangers, but without time on my side, the projects had to continue. Fortunately, I feel things didn't turn out too bad.

Of course, not to say its a bad thing. Thanks to the rule on rotation of project mates, I met many interesting people, programmers and non-programmers alike, and they all have been great to work with. I hope I have done an okay job in all my projects; to those who didn't feel the same way as I did, I apologise for any shortcomings.

Oh just to mention, thanks to CS3216, I had the opportunity to work with my classmate from Anglican High again, where previous teamwork encounters were limited only to the field of soccer (pun unintended).

As repeatedly stressed upon by The Prof, CS3216 is about execution. This hit my final project group especially hard in our faces when we rolled out our web portal and no one uses it. I think its better now than when it was first released, but there's still plenty to do, and we have all learnt a lesson the hard way.

Like someone else, I like C and C++ too, and I used to dream of joining a company to make "big chunky games in C++". Unlike someone else though, I think the Web has great potential, and one day, big chunky games can definitely be run off the Web. Who knows, it might just become a standard for game distribution. Whatever it is, the Web promises to be an exciting field, and one that I will definitely consider in the future.

All in all, the time spent in CS3216 has been very memorable, and I have no regrets taking this module as an UEM. Just like Yao Ming hoping that his retirement from basketball is just a comma, and not a full stop, in his life, I hope the end of this module is just a beginning and not an end to all of us.

May everyone continue to do what they love!

Monday, November 14, 2011

all the other stuff

Ok now my turn to catch up. First up, all the small(er) stuff.


Peer Appraisal

Overall I have gotten rather positive comments from my friends, and I'm really grateful for that (now I feel guilty because I think I racked up some not-so-positive comments in return)

Going through some of their comments:
"...looked quite silent at first meeting..."

I have always been slow in warming up to people I have never met before. I shall take note of that.

"Calm and composed"

Not all the time actually; perhaps I have gotten better thanks to National Service days when people depended on me to get communications flowing.

"Too calm and composed"


"His code was not really clean."

Oh yes I agree that my code can get very messy, especially during times when I prefer to get something working before my eyes first before I think of anything else. Probably inherited this bad habit from the old days of competitive programming. Thanks for highlighting that.

"Can dress better for presentation"

Ah well wasn't thinking so much about attire when preparing for the App Seminar, but friends will know I'm not exactly a fan of formal wear. Did I sort of made up for it during Poster Presentation? =)

"Not enough confidence in your own skill."

Its quite obvious; I know it myself. Unfortunately there's no easy fix to it, especially when people around me are always owning me left, right and centre. Thanks for highlighting it though!

"Appear a little more friendly."

Hmm actually I think sometimes I have the problem of appearing too friendly. Depends on situation I guess. Shall take note of that.

"Too easygoing"

This kind of proved my point above >.<

"Be a little more kind when criticizing"

Oops. Was I too harsh? I'm really sorry about that, although I couldn't recall any situation during CS3216 where I was unkind. Actually, I don't even remember criticizing anyone (except only this Peer Appraisal). Maybe sometimes when I talk, I don't listen to myself. Apologies again.

"Seems to have something to say but doesn't say it"

Hmm compared to the comment above, I thought this describes me better. Hence I'm not sure how the above comment came about. With regards to this, I...have nothing to say.

"Can try more design stuff"

Interestingly I was in drawing class when I was young; dropped out later, and as I grew up I began to do programming, and never went back to drawing again. I do wish I can draw again, hopefully soon.

"Looks like a monkey"


When Prof Ben sent us an email telling us to 'try harder' for the Peer Appraisal, he mentioned the following:

"If you cannot really think of bad things, it probably means that you haven't been paying sufficient attention to your friend."

Right on the bull's eye. If I have to list one thing that I can take away from this Peer Appraisal, this will be it.


HTML5 Assignment

I was very lucky to be project mates with my HTML5 assignment group. They had been awesome to work with and I had learnt alot from them. Beyond that, this was the first time I dived so deep into HTML5; I now have a better understanding of new trends and technologies like Local Storage. The process was painful, but I guess the end result wasn't too bad.


User Interface & Interaction Design + Team Dynamics Lecture

To me its a clear choice: Team first. I guess for me, the people I work with is important because a good working environment is key to turning an idea into reality, and one important factor that determines a good working environment will be the people I will be working with.

Of course I'm not saying the Ideas First camp will not work out. Ideas First means that you will attract only those who believe in the idea as much as you do; and I'm sure belief is a very powerful source of motivation. Working on something that you don't believe in will probably not result in any good work coming from you.

All that being said, ultimately its up to the individual on what he prefers. Personally I have worked in enough projects to decide that I will prefer a team where I can get along with. "Comfort in Shared Suffering", as the famous term goes.


Million Eyeballs

This is one of those lectures that got my full attention for the entire duration. Zit Seng's lecture on the scaling of web applications served to remind me just how little I know about networks, load testing, HTTP optimisation etc. To steal borrow a slide from Prof Ben's CS1101S Last Lecture:

The lecture was highly technical; I think a non CS student would have problems understanding it. However to us CS students, I think the lecture was very informative and really opened our eyes.


Facebook and Security

Compared to the previous lecture, this was slightly drier, thus besides the first part on SQL injection, I had difficulty catching up with the lecture.

I have read a little of SQL injection before, but this was a nice refresh to what I read in the past. The key takeaway is to treat security as part of the development considerations, not an afterthought.


Session with Entrepreneurs

To be honest, entrepreneurship is somewhat new to me; it was only during this lecture that I learnt what VC stands for haha.

Through the lecture we listened to the many experiences of these seasoned entrepreneurs, to highlight the fact that entrepreneurship is not for everyone, and it does require a giant leap of faith to start a business.

I don't foresee myself being an entrepreneur; never really had an interest to begin with.


As you might have noticed, the sections are getting shorter, because I'm tired and I want to sleep. Nevertheless I have more or less covered the 'small(er) stuff' as mentioned at the start; and the 'big stuff' shall come in the next entry.

Good night! (or morning, whichever way you see it)

Monday, September 19, 2011

pitching + vsee + pitching

Right, now is the real catching up.

First up, the external pitching two weeks back. A couple of them left impressions in me, mainly 1) Dr. Dana's AED game, and 2) the candlestick thing.

I am not sure how many of us in the audience were interested in the candlestick thing he was talking about, because I have the impression that most of us sitting there have no interest in growing money. Or maybe its just me.

There were quite a few times I exited LT19 at night only to be greeted by formally dressed peers tucking into buffet, which was when I realised while I was inside LT19 for some geek event or lecture, some bank was holding some other event in the neighbouring LT17. I always find the scene hilarious, maybe because of the stark contrast between their attire and mine. Haha.

Maybe Gary Ong would have better chances talking to them.

Anyway I am a simple person; I'm not in the least bit interested in investments and stocks, at least not at this point of time. If I ever need some adrenaline from gambling, I prefer to dabble in the simplicities of 4D and Toto (Q: What is the probability of winning 4D? A: 50%. tio and bo tio).

On the other hand, I am very impressed by Dr Dana and his motivation to get people to be familiar with AEDs. In fact I think that his cause is so noble, a game seems too..insignificant? There should be better ways of spreading the use of AEDs around I guess.

Of course, not to say that games (or digital media in general) won't work, as can be seen in this case, but to create a good game that actually teaches will not be easy. Anyway games can only help so much.


Last week there was the VSee talk. As the CEO, Milton, started talking about their collaborations with the US Navy Seals, immediately one question came up in my mind: During their strike on Osama in Pakistan which Obama and his aides observed real-time in the US, did the Navy Seals used VSee? I don't need an answer, but I won't be surprised if it was a yes.

On to what he said, he mentioned some very interesting points.

Be bored. I agree to a certain extent, because sometimes on my long MRT trips to school or to home, my mind will start to wander and I start thinking of random ideas and stuff. But that's not the only way either. Sometimes interacting with friends helps too.

Reply emails fast. Alright I'm guilty of that. Will take note of it and improve.

The Sandwich Method. I think this has been taught to us in secondary school. If my memory has not failed me, when we were taught how to write 公函, or official letters, during our Higher Chinese lessons, I remembered my teacher telling us, write something to praise the organization we are writing to first, then write our complaints/improvements/feedbacks/requests, and end off with a "Hope to hear from you soon!" Haha.

Break our patterns in our lives. Right I should try this too.

The one single thing that left a deep impression in me was not Milton's point actually, but Steve Jobs', which Milton highlighted. It was about Steve Jobs deciding to cancel his business meeting to have dinner with the girl he met after asking himself if he was going to die soon, which would he choose.

This is in line with one of his many quotes/philosophies:
".. almost everything – all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart."

I should ask myself this more often. Maybe if I have started asking earlier, some things might have turned out differently.

Somehow the last bit of the talk became a little relationship consultation session, which was amusing haha. What I can say is that the dynamics of human relationships are complicated; its never good to be too demanding, but too much of "Yes Dear" and "I'm sorry" may not be good either. Its all about finding the right balance and compromise towards each other.


Last Friday was pitching, and it seemed like many of us are jumping onto the gamification bandwagon. It remains to be seen how successful gamification techniques are; while there is JFDI Academy, there are also a million failures for every Facebook or Twitter.

Many people don't know how hard it is to drive taxis in Singapore. Sometimes its not that they want to avoid flag-down customers so they can earn that additional $2.50 booking fee (maybe some do *shrugs*), but when you have to pay $90+ taxi rental fee every day, and diesel costs, plus feed your family, sometimes you just want to earn as much as possible.

In any case, if anyone wants to work on taxi booking, a suggestion will be to work with the smaller companies; recently there was this news report quoting an expert saying that they should band together to develop an integrated taxi booking system, so as to compete with ComfortDelgro.

Sunday, September 18, 2011

Case Study 1: Get Help

Oops I'm lagging behind. Time to catch up.

First of all, I thought the entire idea behind this application is quite good. Sometimes I myself need help with something but don't know who to turn to, or who in my friend list are subject matter experts in whatever I need.

Of course, one can easily solve this problem by posting a shout-out on his/her status. That's where the application comes in with the additional features that normal status posts don't offer:

1) An overview page to see all of one's friends requests for help. Many times when we look at our News Feed at the end of the day, we look at all sorts of updates from our friends, like photos, videos, links etc, and any friends requesting for help using statuses might get buried under this pile of less important stuff.

2) Celebrating the act of helping. While genuine friends typically don't ask for anything in return, I think its nice to get little rewards for help rendered, even if they are in the form of virtual badges or mere "Mr Good Samaritan" titles. Praises work wonders me thinks.

Usability vs Aesthetics

Not quite comfortable with writing this actually, because I'm no expert in UI and my team's Facebook assignment was whacked left right centre for the UI/UX. Never mind I shall just give some opinions.

I think the Home Page is probably the most important page in an application, since it is the first page that a user sees when he first comes in, and have the power to make a user happy, or piss him off rightaway. Therefore alot of consideration have to be put in when planning a Home Page (my Facebook team members tore our hair out, figuratively, planning the FrenFactory home page).

Get Help's Home Page is fine, but I find it only caters to people requesting for help. Sure they get things done right at the Home Page, but the other half of the target audience, ie the nice friends offering to help get left out. They have to click one more time to reach the Overview Page (using Prof Ben's 'number of clicks' theory), which isn't that bad actually, but the nice friends don't need the 'need quick help?' and 'Who do you want to ask?' sections.

A suggestion can be to copy reference Facebook's current Home Page. The top section 'I need help with..' can stay at the top, with a 'More details' button linking to another page with the 'add more details' and 'Who do you want to ask?' sections. Thereafter, replace the huge body section with the Overview Page, ala Facebook News Feed. With this, those requesting for help can still get the bare minimum done, while the nice friends can see the feeds right after they entered the app. A little compromise for both parties.

The Overview Page looks fine to me, although I wonder how one can get to the Project Page from the Overview Page. Comparing both pages, I notice there are the 'Help him!' and the 'Refer a friend!' buttons on the Overview Page, but there is no 'Wish him luck!' button. I'm guessing that 'Wish him luck' will be a quick task of posting a good luck feed on that friend's wall, so perhaps it will be more appropriate to put that on the Overview Page rather than the 'Refer a friend'. Afterall, if you want to refer a friend A to your friend, you might first refer to the Project Page to see if that friend A is already helping him or not, right?

Freedom given to user when posting a need

I think the team has put in adequate effort in this area; users are given plenty of freedom in posting needs, like the ability to post needs via feeds, Twitter and even SMS. The 'Who do you want to ask?' section is quite complete too, and it even comes with the option to hide from specific friends! Details are comprehensive too, allowing users to insert deadlines, tags and locations. Overall it covers all the ground that I can think of. Haha.

Cycle of interaction and incentives

I'm not sure how the entire cycle works. What happens after a nice friend clicks 'Help her!'? Does a separate chat box comes up linking up both the friend and the poor soul, or are contact details exchanged?

Also, how are incentives given out? Are karma points added the moment a nice friend clicks 'Help her!'? If that is so, 'nice' friends can just go around clicking every single 'Help her!' button they see, no? Or can the person requesting for help give a rating of how much help the friends have rendered, which in turn affects the incentives the friends can get?

Not to mention, if a particular request for help is fulfilled, can the owner delete the request, to complete the entire 'cycle of interaction'? Can the owner post 'thank you' feeds on the walls of friends who have helped?

I like the whole casual take on the Statistics page, with the use of words like fire, hottest, networking gurus etc, and the giving out of virtual badges. As I mentioned earlier, genuine friends typically don't ask for anything in return, but these little incentives and rewards celebrate this whole act of helping and sit nicely in between "showing appreciation" and "don't mention it".

Other problems

I guess the main problem is already hinted in the preceding section, which is exactly how to help. Different kinds of requests require different kinds of help. Sometimes they are as simple as typing a few step-by-step instructions; other times various parties have to meet face-to-face for guidance and teaching. I guess not all help can be rendered through the app, but at least it offers a starting point.

Back during my National Service, there were those days we had to pack large numbers of stores into shipping containers as we prepared for Exercise Wallaby in Australia. I still recall the regulars who screamed at us telling us not to stand around but go and help. The problem is, there were already so many people crowding around at the opening of the container, what else can we do besides joining them and standing with them?

Sometimes, it is easy to open one's mouth and say, 'Go and help!' Its difficult to find the sweet spot between '帮不上忙' and '越帮越忙'.

Tuesday, September 6, 2011

calm before the storm

Wow new (Blogger) look. Hope things don't get screwed up.

Its the start of a new week after driving ourselves nuts over the past three weeks with the Facebook app and the seminar.

Having read some comments about PDF Expert, the app that my team presented, I agree with them. In all honesty, I myself will not fork out $9.99 for an app when many free apps can do roughly what PDF Expert alone can do (Although now that I have it *ahem* in my iPad, I like it for the convenience of being able to retrieve documents from Sugarsync and opening them, all under one roof).

I guess from developers' point of view, sometimes we want to create apps that have as many features as possible, in order to distinguish ourselves from the competition. I mean, if we create apps that do the exact same things as other apps, why create them in the first place? Unfortunately in the process, developers tend to scale the cost up proportionally to justify what they have done, forgetting that from the consumers' point of view, all we want are just stable apps that do what we want correctly, at the lowest cost possible (suddenly the $99 HP Touchpad came into my mind).

Oh yes, today I just realised that PDF Expert can unzip zipped files too, into a nice neat folder for you to browse the documents inside. But I digress.

Therefore, as developers, sometimes we need to answer difficult questions like how far we should go in adding value to our apps, potentially locking out a majority of customers, or keeping costs low but struggle from slim profit margins. Thinking back, I should have mentioned during the presentation that they can increase their commercial potential by selling a scaled down version of PDF Expert at a lower price. Might earn them more money, I don't know.

On a sidenote, I have always preferred reading hard copies; reading off screens for too long tire my eyes. Ironically, the ease of access of reading material through the iPad has resulted in me reading more these days. My guess is that tablets are not going to replace books anytime soon, but as technology continues to improve, the day will come where screens can reproduce text better than printers. Books might just die out then.

Finally our Facebook app assignment is done. This part of the journey had not been easy; we were constantly changing everything that can be changed; coding, schema, UI, game mechanics. Overall, I think our entire team was quite new and inexperienced in terms of the tasks we had to do; software engineering for ZW and MT, design for YH and project management for me. That is, on top of the new stuff that we have never handled before, like the Facebook platform, jQuery, AJAX etc.

Lack of experience aside, the team was a joy to work with. We worked hard, but amidst the heavy workload, we found time to joke and make fun of each other, which I have always personally maintained to be very important as it keeps team morale high. To finally be able to put up something to show, even though it wasn't well polished, was an accomplishment for all of us I guess. Hopefully everyone have picked up some lessons through our assignment (MT mentioned he learnt alot from my code. I don't think I write very good code; hope he doesn't pick up the wrong stuff :/)

Having hung around with some of the brilliant minds for a long time, there is the lingering pressure for me to at least not be too far from them. Because of this I think I have become a little critical of myself over time, constantly questioning and rejecting ideas that I think will not match up to their standards of 'good'. As a couple of my friends gave approving comments for FrenFactory, I heave a sigh of relief.

Hope they were not smoking me. Haha.

Tuesday, August 30, 2011

Flipboard for iPad

Simply listening to the presentation was enough to get me interested in the app, so I was already downloading it while the presentation was still ongoing :p , although it was only until I got home before I really started playing with it.

In theory, it seems like it is just a RSS reader, and of course one can't get an iPad App of the Year award just by developing a RSS reader. What sets Flipboard apart from the rest is the UI/UX.

Flipboard was designed from scratch for iPad, and not a iPhone port over; it takes advantage of the big screen size and arranges feeds in the form of a magazine, which makes articles aesthetically pleasing and easy on the eye. Different people have different interests in different topics; allowing users to choose which sources to subscribe to allow them to create highly personalised 'magazines' that present topics that they are interested in.

Organizing the articles under separate lists also helps users focus on particular topics. I haven't found the option to 'follow other people's lists' yet, but it doesn't really matter since there are already plenty of topics to follow up on.

I have not subscribed to the maximum number of sources allowed, but I am wondering if it can be circumvented by adding sources to Google Reader and use Flipboard to subscribe to the Reader. I suppose that will break the organization of articles a little, but it beats having nothing to read at all.

The lack of any method to clear Flipboard's cache is bad of course; the only explanation I can think of is that most users of Flipboard, and iPad in general, are not quite tech savvy enough to even know what is cache in the first place, so rather than confusing them with such options in its Settings, the developers omit it altogether. I don't know.

I like the fact that Flipboard concentrates on value adding first rather than making money, as advertisements, and basically any form of request for money or donations, might break the entire UX of Flipboard, something the developers will not want. But my opinion is that not many apps can pull this off.

One thing that I am a little unhappy with, however, is that Flipboard has a very limited offline reading mode. After a quick setup in school after lecture last night, I found out that I could not read many of the articles while on the train home. Its not quite difficult to see why though; many articles only offer short paragraphs of what they are about. To read the entire articles, one has to access them 'externally'. I guess Flipboard can't cache all that. Still I wish that Flipboard can improve on that. The News app on my Android phone pre-fetches text and they are enough to keep me occupied for my 45 min train ride.

All in all, Flipboard is a joy to use, that is if an Internet connection is available. The UI is clean, browsing and reading are easy, and on top of all that, its free. Its no wonder why it can be an iPad App of the Year.

Monday, August 29, 2011

fast and furious

Oops another late entry.

Past week felt like a never-ending bullet train ride, not just because of our Facebook project but also the amount of news and information that I read.

Last week's lecture saw Microsoft representatives introducing HTML5 and Windows Phone 7 to us. It seems to me HTML5 is more of playing catch-up to all the new technologies that have surfaced in the past decade and left HTML4 behind.

(Or maybe I was the one left behind.)

In recent years, the Web has moved beyond simple text and images, and we see the rise in popularity of rich media content on the web, like audio, video, graphics and animation, and it is getting difficult for the good ol' HTML to support these new content.

Besides rich media content, mobile devices are also gaining in popularity as manufacturers decide that 'phones' can do more than just calling and sending messages (I still remember the hype when WAP, then later GPRS first came out), like GPS for instance. Surfing the net was no longer confined to desktops and laptops; different devices with different sizes are getting the ability to surf the Web.

Finally, there is the point where both rich media content and mobile meets each other. The question arises on whether mobile devices, with their less superior hardware, are adequately equipped to run Flash.

And so there is where HTML5 comes in, to allow the native embedding and running of rich media content and the integration of mobile technologies like GPS.

Personally I think HTML5 is cool, and is the way to go. That is, until the browsers sort out all their differences.

Then there was Windows Phone 7. The history was that Apple came up with iOS and iPhone, Google came up with Android, and everyone was unhappy with Windows Mobile 6.5. Hence Microsoft threw the whole thing out of the window and developed WP7 from scratch.

At first glance, WP7 seems different from iPhone and Android, with the UI based around tiles, instead of icons (actually, aren't those tiles just bigger icons?). While the front end UI is radically different from the competition, the underlying architecture is still similar, which the a core OS supported by small apps written by third party developers.

Beyond that, Microsoft promises greater integration and consistency with the Windows platform, for example, the UI. As with most other new technologies, there is the novelty there. But whether they will be successful or not, no one can say for sure.

Besides the lecture on Monday, there were also news like Steve Jobs resigning from Apple, and HP causing chaos by deciding to stop making tablets and sell their existing inventory at $99 apiece.

In the tech world, its really all fast and furious.