Tuesday, 15 November 2011

What I've learnt in CS3216

Its been a great pleasure to have been part of the CS3216 family. I think what I've learnt goes beyond technical skills but rather I feel like I'm being schooled in a way of life. The opportunity to work with so many different people, especially under really tight deadlines and high expectations, made me learn more about myself, my work style and who I can work with. Before this I had a lot of group projects but it was always with friends, people I know and trust.

The most memorable times I had was with my first group(Deepan, Darren, HaoYuan) and final group (Alan, Kenneth, Joshua, Zhenling, +Sharon). I guess because for the first project we went through a lot of shit together, knowing little about programming and I guess the fact that we did not have a pro coder did really affect us and made us feel pressurized about the whole thing. It was kinda frustrating, but I think we all learnt a lot out of it in the end. In subsequent projects where there are pro coders, sometimes it feels like it is not optimal and selfish to want to try doing part of the project as it would slow the project down if I were to attempt them. So I ended up settling for non-coding components in the end. Since I was interested in picking up iOS programming, I downloaded a good book and started learning on my own time, along with following the Standford online lectures.

Although it didn't turn out the way I thought it would, CS3216 did make me think about what I really am interested in and want to learn. Midway I enrolled in the Stanford online AI class and Machine Learning class as well, and am still actively following it. Also, I learnt that there is no shortcut to coding, all the abstraction that is becoming more common now and making things easier are good, but to be a really good coder, it takes much more time than what a semester can provide. However, it did well in teaching us how to create a quick and dirty prototype. Sometimes, with the time constraint, we have to choose to go with we know what works instead of what we know is the right way to do things. For example, for our final project, the app did not entirely follow the MVC framework it should, oops. Of course given more time we'd love to fix that.

Oh yeah, team 2Awesome deserves an entire paragraph by itself! The enthusiasm everyone was oozing out made the whole experience exciting, fun and rewarding. Although we did have our initial skepticism regarding switching to iOS, within 2 days of making the decision to switch, we had already infected Mac Commons with Xcode (ooops) and came up with a prototype UI. Earlier, I was picking up iOS on my own but I've only gotten as far as using one View controller and made a calculator app as part of the online course exercise. Within days Alan would have zoomed past and created Views for the other features, and before we know it, our app looks not too bad. Although I knew I couldn't contribute as much as the 2 of them, I'm glad I managed to learn a few things - changing views, creating singletons, asking questions on stack overflow(omg I got replies just barely after an hour of posting. its an amazing community) and memory management, although subsequently we realized the latest Xcode had Automatic Reference Counting and we no longer need to burden ourselves with memory management. Although Kenneth and Joshua, who were just like me, not as guru-like as Alan and Zhenling, they tried their best to pick up on iOS and catch up with them. We ended up having our regular spot in Mac Commons, lol. Then there was the random night when me and Kenneth came up with the brilliant idea for the poster design, and later on spontaneously decided to go for a midnight run. Zhenling and her Subway special request, lol. Joshua and his epic photos. I think it would be too draggy to include all the experiences and memories I had with, let's just say it was awesome and thank you guys.

In the end, I think CS3216 managed to be a painful yet fun, frustrating yet rewarding, time consuming yet liberating, and the last lecture by Prof Ben was a powerful reminder that its not just about a course or a class, but the bigger picture - on life, creating value, being a useful citizen and when you make it big, a new computing building bigger than business one! haha.

Thank you Prof Ben. Thank you everyone who have worked with me during the sem. It was great.

Friday, 30 September 2011

GetHelp/Fan Gang

A few lessons about design/user interface:

User interface != user experience
Perform AB testing to find out which design/layout generates more traffic
Do lots of user testing to find out what user interface users want
Important : Coders shouldn't be thinking. Designers should come up with the design BEFORE coders start coding and able to communicate to coders with clarity so that coders don't waste time clarifying/making unnecessary decisions relating to design. Their understanding might differ with the designers as well.

Must have an undo button! 
Try out Balsamiq Mockups

Fan Gang
Idea first or team first? Ajay is on the idea first camp, because he's had teams that failed him. Yet there are many successful companies that change their initial idea along the way. A good read would be the book "Founders at Work". I think Alan shared about it during the show and tell. One of the stories, the founders formed a team without even having any idea! They just wanted to do something cool and fun together.
Personally, I think both are workable, but either way you must have a good team AND a good idea. If either is not good, doesn't matter if idea comes first or the team comes first, it will probably not work out.

Lessons about leadership:
Decision making - There needs to be a clear leader to lead the direction. I personally feel a high level of autonomy is better but given the context of our assignments, where there isn't really much time, like Prof Ben mentioned "too much democracy and you're screwed!"

Morale management - Don't be too ambitious. Go for small wins. I guess this is similar to the divide and conquer strategy for big problems. 

I liked Kenneth's closing statement "Having a leader is important, but having the team acknowledge the leader is more important". I think it sums up what being a leader really means. If he doesn't command awe and respect, then he's pretty much just a figurehead and ineffectual in his role.

Just spent the last couple of hours coming up with the interface for admins to add content to the database(part of the final project) and keeping in mind the above points in the design(undo buttons/options! and easy to understand/unambiguous design for coders so they don't have to think), played around with Balsamiq Mockups. Its really easy to use! much better than pen and paper, and learning curve is very gentle. I think everyone should give it a go! Still figuring out how to add pop up alerts though. 

Friday, 16 September 2011


Ok, let's start with the design of the app's home page.

The slanted tags on the top right is too slanted! It affects readability and makes me a little dizzy. It's also a waste of the nice icons made for Badges/Profile/Stats/Invite because most people will focus their attention on trying to read the text below it. It is also occupying half of the width of the page, with the edges almost touching adjacent text like "Recommendations" and "I need help with". I think this makes that portion of the page looks very cramped. It might be better if the tags were made straight or just slightly slanted. Most of the problems can be rectified that way.

Next is the image to the right of the "I need help with". Its cool to have an option to have an image that further describes what the task is about, not to mention it looks nice on your friends' feeds. But I think the interface through which users enter this should be simplified. A simpler way might be to just have an option of what category the task falls under, and GetHelp automatically displays an image it has prepared for that category.

When users decide whether they want to use the platform to look for help, the ease of getting the message out is crucial. If it feels like too much work to even get the word out, people might not want to use it. Imagine if the default option to search in Google is the advanced search, and you have to enter the language, format, date, region etc to perform a search. Likewise, I think the default option should be to ask the users to enter only the crucial information needed to get word out - which is just a one line description of what it is they need help with, maybe a longer description if the task is more complicated.
The problem with information like when the deadline is or the estimated time required is that first, maybe I don't want to share when my deadline is, and I might not know what is the estimated time required (hey! I need help with this, how would I know how long it'll take?). Location is sort of redundant/ambiguous as well. I'm not really sure what this field is supposed to be. Suppose I am planning an event to be held in Orchard, but the planning work is done in NUS. So now I need someone to help emcee the event, what should the location be? Not to mention the benefit of its inclusion is questionable. Same thoughts with "Who do you want to ask?" and the RSS/Twitter/SMS integration. It should be "to all" by default. If users want to send to particular users only, they will know to look for "Advanced options" before hitting the Call for help! button. Its intuitive I guess. The RSS/Twitter/SMS integration is also very ambiguous. A first time user might not fully understand what ticking those boxes mean. For Twitter maybe people can rationalize that it will simply post the same help request in the Twitter profile, but for SMS? What does that mean? Will it sms all my friends? Or will I get updates through sms when I get a response for the help I requested?

Overall I think the home page looks cluttered and contains too many information that might confuse the users. Other than that, I think it is simply designed and attractive.

The Overview page looks good. I don't understand why the team decided to place the links for Recommendations and Overview separate from the other tabs(Badges/Profile/Stats/Invite) and also less visible than the tabs mentioned, especially since users are more likely to access the Overview page and Recommendations page compared to the tabs.

The system of acknowledging and rewarding the users for their efforts in helping friends is a good effort. This sort of reward mechanism is an element of gamification, which can work well in some cases, but in this case? I think not. Firstly, it is prone to abuse - users can potentially create fake requests and another friend in the know accepts it and do the same so now both of them have "helped" each other with a project. Rinse and repeat and you have a "Mr. Good Samaritan". Secondly, it just feels wrong for the kind of activity going on here. I mean, the intent of a reward is to motivate users so that they will work towards it, but in this case, working towards people in order to lengthen your e-penis just feels wrong. It is nice to acknowledge someone for being very helpful to others, but I feel it shouldn't be done in the form of an achievement based mechanism implemented. Ratings and reviews might be a better alternative. For the helper, I think a meaningful personal thank you message from the person he/she has helped will carry more weight. Thirdly, as mentioned, it just feels wrong to have a reward mechanism when your platform is meant for people to help others. Take a look at some successful crowd sourcing platforms, such as Wikipedia or NASA's Clickworkers program, they have no reward mechanism. People are motivated by goodwill and will help anyway if they want to help. I think the key here is not to create motivational elements so users are excited to use the platform, but rather to make it a really useful platform so people will want to use it in the first place.

That said, it is close to impossible to make a close to perfect product for the timeline CS3216 offers. To put in perspective, I think the Mad Fireman(cool name!) team did a fantastic job with their project!

VSee talk

VSee came down to give a talk this week. In contrast to last week's speakers, Milton was very engaging and captivating. I felt it was more of a talk on how to live life rather than a pitch about what VSee is all about. In particular, I loved how he ALWAYS smiled throughout his talk. His cheerful approach towards life is infectious. I loved listening to him. The points he raised also got me rethinking about my views towards life, and I felt kinda wasted that I didn't take notes cuz I thought his slides would be up on IVLE :(

He reminded me of Tony Hsieh, CEO of Zappos.com. From the fun culture, personal interrelationships between colleagues in the company, outlook towards life etc... I highly recommend anyone to pick up the book Delivering Happiness by Tony Hsieh.

Lesson(s) learnt? Do what is important, not what is urgent. Often this comes as a challenge, but to respond to his dare to NOT do something that is urgent, I decided not to do the UI case study......or not. Just kidding, on it now.

Wednesday, 7 September 2011

External Pitching Session

On Monday we heard quite a few presentations. Here are my comments:

Dreams Heartland & HDB project
The concept of bonding the youth and to spread awareness about environmental issues is good. However, do we really need such a platform to bond our youths, and will it work? I think CCAs and hanging out after class is fairly successful at bonding don't you think.
Nice to see that effort is being put in to engage the younger generation, but I'm afraid the approach might be wrong.

Very interesting and cool! If it catches on maybe it can revolutionize the way we shop for groceries in future. Kinda reminded me of Tesco, this Korean company which display their real supermarket layout on subway stations and allow users to browse and shop while waiting for the train. Different idea, but both intend to provide even more convenience for regular citizens to buy their groceries. Went to check out their website and was impressed by the general layout and look and also the delivery time and range of products offered. Looks like a company that knows what its doing.

I don't really get the whole food blogging/diary. I thought its somewhat a niche thing. Out of every 50 people I know, maybe 1 or 2 is into it. But if it points me to good food, I'm all for it!

I don't get how it works, except that it is fairly widely deployed. And then I got completely lost when the speaker said they pay publishers to use it? How does this work exactly, anyone?

Cool idea...

Social Annotations/Teamie
Interesting and ambitious attempt to bring interactive learning to the online platform. This will definitely add value to the learning experience. For example, when lecturers make mistakes on their slides, they can annotate it and update it live. Definitely useful!

The Magnate + Candlestick
Gamification of education seems like the in thing nowadays. Sounds like he's trying to do something like the Cashflow 101 board game. Honestly, I felt the game was lame. I believe investing is a complex topic, and gamifying it might be a bad choice as it will either end up being too trivial, or too technical and deep that it won't be fun anymore, defeating the use of gamifying it in the first place. I think to effectively use games to teach such concepts, the target audience should be kids. But that idea has already been done with PlayMoolah, a company started by one of the NOC alumnus. As for Candlestick, I'm guessing many amongst us had similar skepticism about it. If it worked, one could easily and quietly amass an unbelievable amount of fortune. Besides, the stock market is an open system, affected by the speculators' actions themselves. While activities of this minuscule level won't have a visible effect, in general it holds true. I subscribe to George Soros' view and theory of reflexivity more than purely relying on technical analysis.

A Shocking Game!
Always heartening to see noble souls like Dr. Dana trying to save lives. The name is somewhat a poor choice though.

2359 Media
Really interesting project and opportunity.

Module Review
Idea is there. There are a few problems though - the app will only be relevant twice a year, when people need to bid. Also, I don't foresee students wanting to pay to use such a service so monetization would be a huge problem. Of course, it would be nice to integrate the currently available tools like CAP calculator, timetable builder and also add on things like a checker that tells you what you need to graduate. It is never a problem for me but I  know of many who had to constantly figure it out. The module review idea itself seems flawed though, as I foresee it will be more of "This module very easy to score A!" kind of thing, rather than "I really learned a lot from this module. It can be tough but its worth it." And sometimes it is just difficult to articulate what a module is like. The best way often is just to talk to peers who took the module before to tell you a few things and usually "Aiyah. It's difficult to say la. When you take it you will know la!". I think at best it would be a nice-to-have-but-don't-have-also-nevermind kind of app.

Brave plan. The venture capital scene does need some major changes. VCs are mostly viewed as vultures, preying on and trying to rip off the hard work of young entrepreneurs. Not exactly sure how they will do it, but I wish them all the best.

Tuesday, 30 August 2011

Comments and thoughts on Doodle Buddy

Doodle Buddy is a doodling/drawing iPad application. It is targeted at kids and thus does not have more sophisticated drawing and editing features that are found in other drawing applications in the market, such as Photoshop Express. Although I feel that softwares such as Photoshop Express and Doodle Buddy are targeting completely different demographics, as others have pointed out as well.

I completely agree that the application can be fun and it does seem fairly easy to use for all ages. Actually, when the group was presenting one particular iPhone/iPad app came across my mind - weDoodle. It is a very simple doodling game where you are given a word, and you need to draw them as well as you can for your friends to guess. It also has stencils, different types of brushes/pen tips/chalk types and various colours to choose from. However, it is primarily a game and it lacks many cool features that Doodle Buddy has, such as changing backgrounds or inserting images, and users cannot just doodle an image whenever they want to and save it. I think that if both apps are merged, it would be really awesome.

As for the intrusive ads, I think we have come to a point to accept that there will be ads with free apps. Many companies adopt this model to keep their applications on the iTunes store. And usually an ad-free version will be available at a nominal fee. So I think most users don't really see that as a huge minus point. In terms of UI, the colour option does seem a little complex for young children to choose from. As they are not really bothered by what shade or hue they are doodling in, a simpler option of choosing a few colours to doodle might be more appropriate. It might even be an additional monetization option - users are given basic colours to doodle in, but for additional colours, say for little Sally who likes pink, her parents would have to make an in-app purchase for the colour. Or they can be gained through points, like Doodle bucks which you guys suggested, that are earned through interacting with friends or other mechanisms. Basically I think it can be "gamified" to encourage users to want to use the application more. This is especially good for encouraging young children to cultivate their artistic talents and have more fun doing so, and parents will also be grateful for the additional peaceful time they are getting.

Overall, I think the app is a great one!

Thursday, 25 August 2011

Microsoft Talk

This week's lecture is interesting. Before the lecture, I was only aware of the use of SVG for static objects like company logos. Was not aware that it is capable of doing animation so the SVG girl demonstration was pretty cool to me. All in all, I think its a good demonstration of what HTML5 and CSS3 are capable of, adding on what had been covered by the workshop last week. And with the added capabilities they bring about, especially animation, it seems like the death of Flash is inevitable.

In other news, Steve Jobs has stepped down as CEO. Wonder how that will affect Apple in the long run...