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

GetHelp
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

GetHelp!

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.

household.sg
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.

Burpple
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!

ChalkBoard
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?

YouTell
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.

Cliquefund
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...

Friday, 19 August 2011

Lesson 2

This week's lesson provides very useful project management information, which gave us a more concrete way of approaching the assignment than the haphazard attempts of just hacking away blindly before that. It couldn't have come in more timely, but I guess it was all planned. At least we were on the right track in thinking of having starting with an MVP first :)

The content was mostly relevant and useful, but what really got me thinking was prof Ben's mention of extrinsic vs intrinsic motivation. I think the environment being created in CS3216, with its high concentration of passionate and capable people, coupled with an intense schedule to follow, has been fairly successful in providing a high level of extrinsic motivation. It certainly challenges the limits we might have previously imposed upon ourselves, and perhaps bring about intrinsic motivation and a higher sense of self confidence. However, is this new resolve cultivated through the module sustainable? Once the module ends and we find ourselves going back into the normal environment, do people slowly revert back to their previous state or find themselves lost without the high level of extrinsic push they experienced?

Also I was wondering, why was it that after the module and getting the A, Caleb and his gang, or the other app example mentioned that now as a 2million user base in Brazil, why did these people with their good ideas not pursue it? Especially in Caleb's case, he had a certain level of validation with 13000 users. It certainly seemed a worthy pursuit.

Was it because they didn't believe the idea? If it was the idea itself they had doubts about, why did they not seek further validation? It would seem like a complete waste to throw the idea out just like that. Or was it because they were more concerned with the grades in the coming semesters? Was it because it would be hell all over again, to continue the project and potentially grow into a successful company all while studying? Were they worried that taking this path they might burn out, or lose motivation along the way, and end up doing badly, both academically and in refining the application?

I'm really curious to find out all these. Please share your thoughts/opinions!

Sunday, 14 August 2011

CS#@!^

Phew, its the first Sunday of the school term and I found myself spending most of the weekend learning MySQL commands, learning how to set up databases. It took me 3 hours to get relational databases right. I mean, it looks so easy, and indeed it is, but Murphy loves to visit when you least expect him to. It always happens doesn't it? Urrghhh. Anyway, earlier I just remembered about having to do the weekly blog post, and made a note in my todo list. In a slightly drunken state induced by a mixture of lack of sleep and earlier alcohol consumption, I ended up typing CS3216 as CS#@!^ and I chuckled. It might as well have been what I was feeling about how the module is becoming 90% of my life (the other 10% being sleep). But even so, with all the pain it is fun and rewarding, especially after each tiny progress. Or maybe I just enjoy pain. Haha. I especially liked one of the seniors' sharing where he said "This module gives you the best bang for the buck."
Thus here truly begins my love-hate relationship with CS3216. Anyway, research has shown that swearing reduces pain, really! If any of you are curious or interested, the link is here: http://journals.lww.com/neuroreport/abstract/2009/08050/swearing_as_a_response_to_pain.4.aspx

Anyway, I was kinda bored during the first part of the presentation, mainly because it was a repeat of the info session, sorry Prof Ben :P
I did however, enjoy the short TED video on 8 ways to success. It was light-hearted, succinct and yet full of wisdom all at once. And of course, the show and tell. Everyone is so talented and you could feel all the passion they have for what they do as they presented. The energy level was amazing, and all I could feel was "This is going to be amazing. Working with and learning from these people." and "Damn. I better put in my 200% if I don't want to be left behind." I guess now I get a better sense of the dynamics of how putting really smart and really crazy people together will just magically work and produce results. We feed off the enthusiasm and energy level of the others and in the name of oneupsmanship (and hopes of getting an A).

Normally, in group projects people would be selective and careful about their group selection, but I find that in this class I find that I am willing and look forward to work with each and every one in the class and get the feeling that we will learn from each other at the end of the day. It's an amazing feeling. And so far its been really really fun working with my facebook application project mates. I sense lot of pain coming, and I welcome it =)


Monday, 8 August 2011

What I hope to learn in CS3216

Just a few days ago on my very first diving trip, I met a fellow young Singaporean, Shawn, who just graduated in bioengineering. He was about to begin his career in consulting with Boston Consulting Group (BCG), one of the big boys in management consulting. While it is not uncommon that people end up working in a field far removed from their course of study in university, being curious (and to kill time during the transit time between dives), I sought to find out more about his story. I've always liked to know why people do what they do, or how things came about.

I shall not bore with details but what I learnt was:

1. Bioengineering was never what he really wanted in life. He just didn't know what he wanted in life when faced with the decision to make a choice. Sounds familiar?

2. He learnt about consulting about a year before his graduation in a chance encounter, which I imagine resembles the one I had with him. He never had any training or experience in consulting work. Yet a year later, he managed to ace through 5 interviews to land a 2 year contract with BCG.

So what does all this have to do with what I hope to learn in CS3216? First, Engineering Science (my major) is not really what I wanted. I was just as lost back then and still is. Given another chance, I might pursue Computer Science or Quantitative Finance, or maybe something else, who knows. I think there must be something wrong with the education system when a large proportion of students feel this way, and subsequently work in an unrelated field. In that sense, university education seems very ineffecient, but that's another topic for another day. My point here is simply that we, or at least most of us, don't know what we want to do or will do with our lives. Furthermore, most of the knowledge we obtain in college are either too "textbook-like", irrelevant or inapplicable in the real world, or just plain obselete. Plus, with our marriage with technology and its rapid evolution, we have to learn to adapt to everchanging environment fast. Sticking with a single specialty just doesn't cut it anymore. We have to be able to pick up new skills and adapt to new environments as we go along. My hope is that CS3216, with some nudging at appropriate times to guide us along, will provide a conducive platform that allows us to learn how to learn new things.
To be fair to other modules, not many subject matters have the capacity to act as a platform to provide such education, it's just that we're dealing with technology here, which is rapidly evolving, making it easier and also more suitable.

Secondly, I hope to retain what I have learnt. A quote by George Savile: Education is what remains when we have forgotten all that we have been taught.
If I were to forget what little HTML, PHP, app creation skills I am about to pick up, I hope I still remember how to learn. That if I were to have to pick up something completely new, I would not only have the resolve to conquer it, but also a systematic method to approach it. Back to Shawn. So how did he land a job he had no experience in? Well, in his own words, "you don't really need any background la. They take in people from all sorts of background. To be a good consultant, you need to be a problem solver, pick things up quick, takes initiative blah blah". Sounds like the skills you need to be a good anything actually. What we should note here is that the lack of requirement on hard skills. It seems that as long as one has what it takes, any hard skill can be picked up. Furthermore, it has been shown that people learn things faster when they need it. As such, not only to this module, but in general, my pursuit in education has become that of achieve "having what it takes", which in my current limited understanding means able to take a lot of crap thrown at me, adapt quickly and thinking beyond set boundaries.

If none of this made sense to you, my apologies. I have never been good at articulating myself. However, I can confidently say that the diving trip was awesome! Thank you for reading.