Wednesday, November 16, 2011

The Journey ends...or does it?


So let me begin in the typical way. Its been a hell of a ride. This may sound cliche but, well, it sure was a hell of a ride. There are not many such modules on NUS (I think I can safely say none). All impetus is given on the practicality and the real world implications of anything and everything you do or develop. I got to talk to real users. I got to pitch to REAL people who actually were there to see what we had done. I got to do real user testing and it wasn't some cooked up survey or surveymonkey. When all of this began, I had no idea how important user feedback was, well, now I know. I don't know how to say this in any other way but CS3216 is one of the most awesome modules in NUS and it made me realize how much I really love building stuff that people use (funny when its put that way but yeah). CS3216 gave me such an opportunity. Professor Ben gave me this opportunity and I am happy to say I didn't waste it. Before I go on to summarize what I learnt in these few short months, I would really like to thank Professor Ben for CS3216. I can't believe 3216 will be offered no more. The students of NUS are really missing something here, but I guess everyone needs to take a break every once in a while even Professor Ben :)
Now, on to summarize what I've learned. Lets do a comparison with my first blogpost

Level-up my Porgramming skills

Lots of improvement in that department. My coding quality has improved significantly and this has become an indispensable tool when different members of my team used to just dive right into each others' code, picking up where the other person left off. Though we didn't need to implement any complex algorithms and the code was basically quite simple, I learnt the benefits of knowing the tricks of the language or framework you're working on. Don't do take 5 steps when all that is required is one.

Upto speed on Mobile/Web Development

Really got what I wanted here. I had only worked on small parts of projects and mostly only on the back-end with Java. But on MoneySlate I worked on the front-end and got to design as well as implement most of the UI interactions and I must say it was an enlightening experience. I got to work at the Bleeding edge with Jquery Mobile and HTML5, literally tracing how JQuery Mobile got better and better with each release (I was there for it from Beta2 to RC2 and am still active reporting bugs on its forums). I am quite upto speed on Web and Mobile Development here. All those memory considerations and speed optimizations you thought weren't necessary are back as requirements when you develop for the mobile. I had to redesign an entire User interaction for MoneySlate when what we saw on the desktop wasn't what we got. We got some laggy browser-crasher on the mobile.
So, I more than exceeded my expectations in this area, but of course there is a lot more to learn. Only the tip of the iceberg here

A little from everyone

There was something to learn from everyone in 3216. There were so many brilliant people and not to mention the plethora of talks given. I have never learnt so much varied stuff from one single module. My writing skills were brushed up. I learnt the art of a good presentation while working for the FB app seminar presentation (and also found how not to do presentations). My teammate Aaron showed me how powerful the words 'I can do it' can be. My FB assignment teammates showed how preparing in advance and planning ahead make life easier close to the deadlines (though this was only SHOWN to me and not LEARNT by me as yet :P ). The animated discussions in class were also fun to follow and this was one module where I loved the lectures.

Communication Skills

A definite level-up over here. Though I still have quite a long way to go before I can say I am a bit of a communicator, it sure is quite a few steps in the right direction. I never had any problem with communication in small groups, infact I am pretty good at it. Its just the large gatherings that knock me over. However, I managed to present in front of the class for the final progress report. However, the real deal was at the poster session when I really faced lots of people and pitched about my app. Doing that for quite sometime gave me more confidence and having that amount of confidence actually shows on the other person.

Collaboration and Teamwork

Got to work with different 'kinds' of people ranging from silent and efficient to even a loud-mouth. Conclusion is I can get along with anyone. I just can't get some of the local Singaporean or the Chinese jokes but no harm. I would like to take this opportunity to thank each and everyone of my teammates. I would definitely like to work with them again. Of course my MoneySlate team is still 'working' together :P

Time Management


Absolutely no luck here :P Some day I might get the hang of this but until then, the last minute camping technique seems to work well enough.


So what else?

Well, the past few months just flew past and I ave so much to look back at, so many mistakes and goof-ups to laugh back at. I would like to finish saying that the most important thing is not to know everything but to keep learning and keep yourself updated. In our fast-paced world, things change before you can say 'change' and we must always be ready to adapt quickly and keep learning. Lastly, I have nothing more to say other that he fact that CS3216 Rockss...

Thursday, November 10, 2011

Not the last blog Yet

UOMe to MoneySlate

As Darren correctly pointed out, there was an entire mess around the name UOMe and it just made no sense to try and stand out from the meaningless melee of search results on google. So we decided it was name changing time. I am sure a few of them were surprised with this almost eleventh hour name change but it was really worth it as people are able to find our app more easily and the name is not as 'insensitive' as it apparently was before.

The journey is not yet complete though. We got a lot of feedback for the app and will continue developing it. One funny thing I found myself doing during the poster session was pitching for my app as well as the entirety of HTML5 webapps and how they might one day trump native apps. I even got into long debates with random people and the entire experience was fun. I had never actually done a real sales pitch before but today was awesome and kindof got the hang of it. By the 3rd time I was pitching I was so confident that everything went like clockwork and believe me, this confidence you show really sways people to your app eventhough they might seem to be reluctant to the idea at first. The icing on the cake was when Aravindh and myself got the Vice-Dean interested in our app and made him forget the fact that he had given us only 5 minutes to talk (Ofcourse we knew he was the Vice-Dean only after Prof. Ben told us). Summarizing, I feel this has been a great step for me in presenting as well as selling my ideas more clearly and the fact that I could convince so many people is testament that it was indeed a great step forward. Well, time to sleep now and look at what is happening in the other modules too.

Friday, November 4, 2011

My hand at Vsee

Ok so its blogging time. I seem to have random stuff scribbled into my ipad (thanks for that Prof. Ben :)) which I dont want to let die.

So here comes the first of many blogposts.

This one pertains to Vsee. As I was going through my notes i was surprised at how graphically I could remember his talk and recall whatever he said. Now why doesn't that happen in my other modules. Well probably its because I am half asleep :P but I just realized the importance of notes, notes made by us I mean rather than the abridged powerpoint lecture notes.

Anyway, Milton Chen, you're awesome. I was astonished at how you could work seven days a week, yet travel all around the world and keep you employees happy too. When it comes to striking a balance, kudos to you. What I gathered from this lecture was that being passionate about what you do somehow gives that extra amount of energy and pushes us more. Ofcourse its a cliche we have all heard, be passionate about your work...blah...blah, but here you could see that passion.

Recently, one of my friends got a Vsee account for his own group project and I wanted to see if the quality of the video conference was as good as I saw in the lecture. However, I was a little disappointed as there was some lag and quality did dip at times. Well, I am sure it will get better. Afterall its driven by a persistent and passionate Mr.Milton Chen.

Sunday, October 2, 2011

Summing up at the end of Assignment 2

Quite some time since I posted on my blog(The case study and FB seminar do not count). First things first. This new dynamic theme by blogger is just awesome. It lets users customize their own layouts for reading on different devices and works like a charm. As you must have noticed, I just applied such a theme to my blog and its really neat. I guess all this must be due to blogger's realization that most blogs are read using rss feed readers and aggregators like google reader, Flipboard etc.

Peer Review

What I got was mostly the usual limitations which I am trying to get rid of. "Be more confident", "Don't be afraid that people won't pay attention to you. They will only if you are sure of yourself." Well I really thank my friends for such feedback and I promise I will keep working on this. One technical feedback I got was to improve my programming style with respect to web programming, minute things like where to declare which variables etc. Well, I sure have come a long way in that department and this is surely much easier than the other area to be improved on :P.

UOMe - Technical Points

The past few weeks have been quite hectic. For my second assignment I worked on the front end. One of the major goals was to make the user interface as simple as possible and easy to use on mobile devices. We decided to use JQuery Mobile for our project rather than Sencha as the programming approach was to enhance existing html markup rather than adopt a different coding style as in Sencha. One of the major obstacles I faced was that the framework was still evolving and there were bugs especially in the ajax transitions between pages. The first thing to pick up is not to attach event listeners to $(document).ready() and to the pageinit event instead as the DOM is loaded only once and ajax is used to fetch the rest of the pages and insert them into the DOM. Another related issue was to have unique ids for elements for each page so that events on them would trigger correctly. The most time consuming was to identify if a bug in the ui was caused due to the framework or my coding style was wrong. It really takes some time to get used to this ajax way of loading pages, considering I don't have that much experience in web programming.

UOMe - Key Takebacks

Other than the tachnical points I learnt, the most important takeback for me is that I feel much more confident in developing web applications. Together with both the Assignments I got to work on both the front and the back end so I kindof have an end-end experience now in web development. I am not sure if I am actually technically better or it just seems so but I am surely much more confident in web programming than before and am happy to have had a varied experience with PhP and JQuery frameworks. One of my initial goals was to get better at web programming and learn the 'tricks' so to speak. Well, I sure feel am on the right track.

The Schedule

Assignment 2 was really hectic as I said before. In the last few days before the submission, I literally camped in my friend's room coding away and squashing bugs. Not to mention the ATAP internship interviews which came in the middle. Interestingly, all the long hours of coding and the pain our team shared somehow gave me supreme confidence at the interviews. I think experience really gives us confidence. At the end of the week I also had my extension submission for CP3108B Mozilla@NUS and two other midterms and well, here I am having tackled all of them, having gone through all the pain and suffering and blogging away.

To be frank, I had no idea how I would make it through the week with my assignment 2 submission, my CP3108B mid-term presentaation and my two mid-terms. But, now that I am here I would say, "What doesn't kill you makes you Stronger."
Looking forward to pushing the boundaries again... :)

Tuesday, September 20, 2011

Case Study 1: GetHelp!

Usability vs Aesthetics

The UI allows the user to access all the features the developer wants the user to access. However, I would not say it is the most aesthetically pleasing UI. Bang on the homepage a lot of different things jump out at you. The icons on the navigation bar are large and awkwardly placed at an angle at the top of the application. They jut out from the overall design and distract the user. The form and the “Who do you want to ask?” area are extremely large and make it look like these are also essential to take a look at before you “call for help!”. The form layout seems a little disorganized and I would have preferred a sleeker look. Also, SQL on the frontpage??? What is that doing there anyway? Ok for testing I guess but strictly no for production as it reveals unnecessary details, possibly even pose security problems.

My main problems are the large, unorganized icons and the variety of colors that jump off the page. Smaller icons and a sleeker look would be more preferred. This is one of the reasons to use a theming framework such as JQuery UI so as to have a uniform icon set. The “I need help with..” could be modeled more like Google’s homepage, plain and simple. Overall, the UI seems to be functional enough and can get things done, but it could get them done in a nicer way i.e a more aesthetically appealing UI.


Number of options / freedom given to user when posting a need

Ok, so I need to point out the oxymoron of the header bearing "need quick help?" while the user in expected to enter a lot more details. The name could probably be tell more on what you need or something along those lines. Otherwise, I guess all the necessary options are there. I feel that taking out the form for filling additional details and putting it under a different tabor atleast hiding it in a collapsible container would be a good idea to bring more focus to the first page

Cycle of interaction & incentives

The idea of awarding badges is really great. Eventhough users might tend to only visit this app when they need help, the gamification of this app done using the badges would lure in the crowd back to some extent. To further extend this, users could be given badges based on subject matters or categories so people would know you are a computer whiz or a physics god or so on... kind of like in yahoo answers.

Other comments

I think the major problem with such apps is to establish an initial userbase and user retention. Though the developers tried to tackle this with badges, the problem could be that facebook is more a leisure space and hence, users might not be too interested in such productivity apps. Lastly, UI can be done better. Minor stuff such as changing the icons and the layout of the form could do a lot for the app.

Wednesday, August 31, 2011

Square for Ipad: Is this the future of payment?

First I would like to congratulate the team presenting on Square. They did a really good job and though I had heard of this app before, there was so much I didn't know about it.

So, getting to the point. Square is basically a really cool alternative to the bulky machine for swiping credit cards. All a business needs to start accepting credit cards for payment is an Ipad, Iphone or android device and the little 'Square' used to swipe the credit card. This app has added a new dimension to the way people transact and has exploited the power of 3G enabled 'smart' devices.

At the heart of this concept is the little 'Square' which plugs into the audio port of any of the aforementioned devices and when one swipes a credit card it reads the magnetic data off it, converts it into audio signals and sends it via the 3.5mm audio jack which is then interpreted by the app. Its cool how the audio port has been treated as just another input port and with it being universal there should be no compatibility issues. This also opens up the exciting idea of looking at many more conventional hardware ports such as accelerometers, Gyrometer etc, found on such devices, to do more.

Compared to 3rd party credit card payment methods, Square provides an economical channel for small and medium-sized businesses to do transactions. Square slaps a 2.75%  surcharge on credit card swiped transactions and even though this is higher than its competitiors's, Square has no recurring monthly charges. So this is more economical for smaller transactions such as around $30. Hence, it is more suitable for smaller vendors such as your local barbershop or bakery etc. to start accepting credit cards using Square.

Now, this app offers vendors as well as customers the convenience of paying via credit card easily but does it truly revolutionise the way we pay. Well, I would say no because what I feel would do that is NFC or Near field Communication. Google Nexus S phones already ship with an NFC reader and the Iphone 5 apparently has one. NFC allows us to just tap our phones to pay and paves way for a credit card free world. As, professor Ben always says, the next few years are going to be exciting with the Google Wallet and all. However, for now Square seems to be the best way for small and medium businesses to start accepting credit cards and for credit card payments on the go such as in cabs. Here is a video for more information.


Tuesday, August 16, 2011

The Lecture on Software Engineering

Design Patterns like Facade, The Singleton etc is what you expect right. Well no.

This one was different. This lecture was more motivational and the key takeaway for me was the importance of an idea.

Everything starts with an idea...and you need to be able to describe it in its simplest form

An idea is what motivates us. It is what makes us do what we do and work harder for it. An idea by itself may not be worth much as the speaker presenting on this said (Sorry not too good with names :( ) but it, surely, is what drives us to go the extra mile, work sleepless nights and, a the same time, have fun seeing the idea take shape into something tangible. Great ideas might be a dime a dozen these days but people who strongly believe in their ideas are not. It is nice to see a congregation of such people in a class.


Express yourself...and share your ideas??



So now I have a great idea. Should I share it with others or should I not. Well there doesn't seem to be one correct answer. It isn't binary like Prof Ben said when he asked for a show off hands. However, from the discussions yesterday I feel it is imperative to validate our ideas with a few trusted friends or a mentor so that we can get that extra confidence before delving into the melee so to speak and this confidence is absolutely essential as only those who believe in their ideas 100% are capable of putting the necessary 120% effort to make it work.

Well, these are just my opinions. Our team is still looking for that great idea for our fb assignment. We have quite a few in mind and have narrowed it down and hopefully we can nail it by tomorrow.


"Once an idea has taken hold of the brain it's almost impossible to eradicate. An idea that is fully formed - fully understood - that sticks; right in there somewhere"

Wednesday, August 10, 2011

What I hope to learn in CS3216

Well here I am finally taking up the module I have been intending to do since I first heard of it (which was in year 1 semester 2). This is one module I am very excited and at the same time nervous about taking on - CS3216.

From all I have gathered so far, contemplating umpteen times before in previous semesters on whether to take up CS3216 in that semester or not, CS3216 is a semester long journey - a journey of learning with many an obstacle to overcome. Of course, this blog is going to be all about what I have learnt, the obstacles I have faced, my triumphs as well as my failures (success is inevitable without failure), but this post is only about what I hope to learn in this tryst of mine with CS3216. Everybody likes clear and concise bullet points and so that is what I am going to give everyone.

  • My relationship with JAVA and C++ is quite long now and so I guess it is time to explore new languages. Have done small time work with PHP, Groovy etc. and I hope to increase my competence  in these areas and level up my programming skills.
  • Up to speed with Mobile/Web Dev: Most of my projects so far have been on the desktop using either C++,  JAVA, Swing and so on. It is time to delve into the exciting world of web and mobile development.
  • A little from everyone: Working with new faces, brilliant minds and really inspired people from across diverse faculties, each with different areas of expertise and with all kinds of knowledge to offer. Building something with such people is an experience of a lifetime.
  • Communication skills: Such stuff isn't meant to be learnt from books (Heck its tough to learn book-stuff  from books) and I hope I can finally hope to learn to express my views and ideas clearly. One of my interviewers for an intern recently told me I am 'shy' and need to be more confident (Yeah, I did do IS2101 and even got a B+). Well, through interacting with different people I hope I can change this. The intention is bold, lets hope I get so too.
  • Collaboration and Team work: I feel it is really important to quickly bond with the people you are working with. Any amount of misunderstanding is always counter-productive. Most of my projects so far I have always done with people I already knew (Infact we take up the module together and if all of us don't get it we relegate it for another semester :P). What we can achieve as a team is really remarkable. After all, None of us are smarter than all of us.
  • Time Management?? Professor Ben said sleep all you want before the 11th of August. Can we manage our time so as to get enough sleep and can the myth of programmers not getting enough sleep be finally broken? A lofty goal indeed and I must say I am light years away from any sort of proper Time Management (Managing physical stuff in my room isn't all too easy and time is something that is difficult to just keep track of)
Of course the sky is the limit and I hope to learn as much as I can from this 'journey'. 
For now, I am filled with excitement and ready to embark.
Anchors away, Ahoy there 3216...