Thursday, April 15, 2010

Conclusion: What I have learnt in CS3216

After one semester of "struggling", CS3216 finally finished successfully :)

Despite the fact that my CAP might encounter dramatic drop after final... CS3216 really is the most fabulous module that I have ever taken. It is so fun and helpful to work and learn together with the most elite students of NUS.

First of all, I learned to work with others as a team. CS3216 is the first group project module I took and it taught me much about how to work with others. During the project, I began to understood the importance of communication among group members, as well as the importance of planning.

Secondly, I gained basic knowledge about some technical stuff as well. Including setting up a server, concept and usage of database, programming in PHP, JavaScript, Java (I didn't take any Java module before) and etc. This is something solid I learnt from this class and I think its content is far more than just 4 MCs.

Thirdly, I learnt the importance of scheduled life. This semester has been extremely chaotic and what it directly lead to is I have screwed up all my lectures. Now I have to go through all the lecture notes and "begin" to study the modules. Should I have been more scheduled about the working time, I would not have screwed up so badly. This reminds me that from now on, life has to be scheduled if anything needs to be done.

Fourthly, I finally convinced myself that I am sometimes very lazy. Prof Ben figured that out for me and I am alerted. I can conclude that when there is someone who could do things better than me, I would become very lazy. That is really very bad, especially in group projects. I will try to debug myself and fix the problem. Here I specifically want thank Patrick for his enormous contribution to our Google Wave project and apologize that I did not do much.

Last but not least, I learnt that there is this technique developed by Master Yoda that Fourier Transform could be done while sleeping. I will try to gain this skill and become the top student in EE :P

Thank you guys for helping me to learn. Thank you dear Prof Ben the Evil for teaching me to get addicted to pain :)

Sunday, March 21, 2010

Web Performance & Grade, Scholarship and meritocracy

This weeks lectures are really impressive, especially Prof Ben's ad-hoc Lecture.

Some part of the web performance lecture is a little bit too technical for me to understand. But I do gain something very important: try to understand more about what you are going to do before you do it. The most valuable advice form the lecture is : in coding client side I should avoid excessive http requests. The architecture of the code must work efficiently in its working environment rather than only in theory.

The more interesting part is Prof Ben's lecture. Prof Ben is really a passionate speaker and always impresses his audience :).

The first part is about grade. Based on Prof Ben's idea, the grade is important mostly as a filter index. I personally think it is not really true. If a student gets higher grade when he graduates, it generally means he has better abilities compared to one with lower grade. I know this is not always true as some passionate students devoted too much time in his favored field and it inevitably lowered his grade. While this portion won't dominate in the whole collection of low grade students. More of them are just too lazy to study or really not intelligent enough( this should be very rare). So it has to be true that generally the higher grade students are of better "quality" than the ones with lower grade.

The second part about scholarship. I am not sure about the scholarship system in Singapore but the struggle it caused is basically the same as what PRC scholars like me has. The basic contradiction lies the pursuit of better education versus freedom of moving to other places. I have thought about the problem before and I think in most cases, accepting the scholarship is a better choice. As the "freedom" that we give away when we accept the scholarship (like going to the US after graduation) tends to be useless if we choose to do it our own way. Without a better degree, it makes success in doing our own business more difficult and it is likely that the time we would spend before we finally succeed will be comparable to the time we would be bound if we accept the scholarship offer. So it is really worth it.

Lastly about meritocracy, I personally believe in it. The world itself is unfair but this unfairness is not throughout your life. We could improve our social and economic status if we try hard enough. This of course is not always possible as sometimes the unfairness it too huge. On the other hand, unfairness is the power that drives the progress of the society. If everything is equal for everybody, then the world won't progress and life is meaningless as people lose the power that drive them. That is also why I believe communism is meaningless.

Sunday, March 14, 2010

UI and user-friendliness.

After the Google Wave lecture (my first online live lecture), I was reminded once again about the extreme importance of UI and user-friendliness.

Interestingly, both my Facebook and Google Wave project have got problems on UI. The Facebook app "Campus Sale" has confusing titles for each function and the Google Wave app "Presenter" got the problem of being too simple that it confines the user too much (cannot draw before uploading something, though the user might just want to use it as a white board, for instance), as well as it does not provide the users with more information about the document processing progress( it takes quite a while to process the file on the server side, without necessary information, the user might think the connection is down or something).

We treat these user experience designs as unessential when we wrote the app. Think about it now we have done really silly things. Anyway it is the users that will use our app but not ourselves.

Fortunately we are paying much more attention on the UI and user-friendliness design for the final project and hopefully we could end up with an app that has decent ( or excellent:) ) UI and provides good user experience.

One sentence in conclusion, writing serious app is not like doing programming labs, usability is the first concern.

Wednesday, February 24, 2010

About the external pitching session

I must be late already. Sorry about that, I haven been screwed a little bit these days.

The pitching session benefits me a lot, especially the speech by Bjorn Lee from 6Waves.

The following are my opinions about each speech:

1. World City Summit: The speaker is not concentrating on what we might be able to do but spent too much time introducing the event itself. So the result is the speech gave a feeling that the topic is irrelevant. Maybe the speaker himself was not sure what this session was about.

2. Project Nimbus: This is very interesting. It provides us with huge amount of information and enables us to use this information in our web applications conveniently through its API. One possible application making use of this convenience that I could think of is a shopping plan maker which can make shopping plans for a whole day by arranging for path and shopping place based on the database. The database itself is still in development and as it perfects itself, it will enable many fascinating ideas.

3. RedSports: This site is very well-known among young sport lovers in Singapore. It is actually surprising that it has no any integration with Facebook. Even if just feed a piece of news to Facsbook could help the site to grow. Some things, despite their trivialness, are effective. It seems very likely that the site will get more well-known it has some integration with facebook such as setting up a page that feeds sport news to its fans.

4. iSyndica: After the speech, I was still quite blurred about the concept of this site. But the cloud computing concept is catching. It really fits to build a site that distributes images based on a cloud architecture. It restates that cloud computing is the future.

5. Module-review.com: The speech is very impressive. I have been to the site several times and the information it provides is very useful for a student in NUS. The problem with this site is that the number of active users will vary very sharply throughout the year. If the site could be developed into a more general form that could accepts review of modules for other Universities and Colleges, it will be very successful. The fact that he speaker, Jace Liew, is soloing the site and that shocked me a lot. I am having great respect to his persistence and courage. If he could find some good partners to do it together, it could grow much faster. The key point is still to extend the range of modules to other colleges.

7. 6Waves call for ideas: This is the most beneficial among all the speeches. It explained how we should build and manage our games to make profit. We need to consider in detail what role each game should play in the whole business, whether it is effectively an ad or real profit-producer, based on the intrinsic characteristics of the game itself. It helps a lot to fix the design target of a game.

Sunday, February 21, 2010

Project Case Study: GetHelp!

The concept of the application looks really attractive to me. The interface looks good also. The application should have been a success even now, let alone it was built 2 years ago. I am quite curious about the result of the app. By the way, was it for the final project?

Now coming to the important part, what is the problem with the app.

1. Homepage:

1). The homepage is not able to show the user the status of his current requests.

2). Some of the elements are not really needed
a). Estimated time:
this somewhat does not make sense and it is obvious the user would not understand what it means
b). Location:
This is a useless element
c). SMS:
No one would be interested to be spammed through SMS. Another problem is how to realize the function.

3). Some elements are quite confusing:
a). Who do you want to ask:
The selections seem contradictory with each other. The users will probably get confused when using it.
Recommendation: Now that there are a lot of space in this page, we could just put the list of friends here.
b). "need quick help? add more details...": These two sentences are the most confusing to me. After some thoughts I guess it might mean that if the user completes the optional fields, the others will be more willing to help him...
Recommendation: Change it to: "Details (optional)"

2. Project page:

1). It is better that if users could have more options when posting new messages such as "private".
2). I am not sure whether the user will get informed if someone has posted on his project page. This is essential, though.

3. Statistics page:
There seems no big problems with this page but the "Reward system" should better be integrated into the posts. Specifically, after the user gets a Nickname, all the posts he wrote will have something like: "Jack-The Greate Guru wrote: ".

I have a recommendation that the developer could add in some "reward system" that has its own currency. Users could set up award points and give the user with the best answer the points from his own account.

This is generally my review of the application: GetHelp!

Tuesday, February 2, 2010

Facebook Seminar Critique

As I have been allocated CafeWorld about which the presenters did not really talk, I would like to switch to MarketPlace, on which I have spent some time myself.

Marketplace, as explained by its name, is a place that a market operates, the difference from conventional marketplace is that this one is a e-market built into Facebook, meant to make full use of its enormous social network. It now has about 3.3 million users and Group 7 described it has made great success as well as provides Facebook users a convenient way of transactions. Is it really the case?

Marketplace is vitally different from other applications: it is an OFFICIAL release by Facebook. This brings tremendous advantages to Marketplace. An easy example is that Facebook has an API specifically built for Marketplace (they are deprecating it now though). This would not be possible for unofficial applications. Other than that, another obvious advantage is Facebook could advertise its own applications more than other companies. After all, it does not need to pay for the ad fees and go through any negotiations with itself. With such inherent advantages as the starting point, it would be impossible that Marketplace not having many users, even if it is really as poorly designed as Pillowfight, users would still try it as it is built by Facebook itself. So, is Marketplace really a success after all? The answer is negative.

It is true that Marketplace has over 3.3 million monthly active users, which is a big number. While Facebook as a platform has over 350 million users, so less than 1 percent active Facebook users actually play around with Marketplace. I guess this figure is quite poor given the analysis in the above paragraph. What does it say? It says that Marketplace is not successful, at least till now it has not been successful. Why?

First thing first, Facebook does not really know what it wants Marketplace to do. Is it a duplicate of ebay? Maybe, at least it looks like it. But where is the secured online payment system? Things simply doesn't work without it. Then let us assume it is a platform for physically closely spaced users, why get it so complicated that every time I look for something, I have to choose within how many miles away I want from a certain city? This just makes things worse. From another angle, what kind of goods Facebook wants to sell? Is it new items or used items? Normally people won't care about distance much if they buy new items but it becomes critical when they are buying second-hands as they are facing much higher unsatisfactory rate and quite possible will not accept the item. In this case, long distance not only increases the risk of swindle but also makes returning of unwanted items very tedious.

Secondly, as Facebook is not sure about what Marketplace should do, it now stays in a awkward situation.

On one hand, it is directly competing with famous E-commerce companies like Ebay. Facebook is likely to fail. Let's just take Ebay for example, it is the most famous e-commerce brand. According to one of its 08 quarterly report, ebay had over 80 million active users, which is highly likely to have exceeded 100 million today. Well, this is a huge difference. It seems to me there is no chance that Facebook could win. Actually Group 7 commented in their excellently awesome video ( it is really awesome :) ) that Facebook is trying to integrate a online payment platform into Marketplace. In my opinion, this helps little, for reasons that it has a too small market share and has no distinguished advantages over its competitors.

On the other hand, Marketplace is not optimizing the platform as a regional second-hand market. It does supports functions like sort out items according to users' network settings and things like that, but it is too complicated to use and not user-friendly. As commented in the 5 paragraph, people tend not to sell second-hands on big e-commerce sites like ebay. Does it mean that people are not selling second-hands? Of course not. As my observation indicates, people tend to make use of local forums to buy and sell second-hand items. The reason is apparent be cause it is simple, easy and safe. Second-hand items are actually in tremendous need because they often carry a higher value/price ratio. While it is much more difficult for people to actually find second-hand items comparing with new items. This is where business lies.

Summing up the above two paragraphs, we see that Marketplace is trying to accomplish two functions at the same time, while not successful for different reasons.

How should it improve itself? My idea is that on one hand instead of competing with big e-commerce companies like E-bay, it should seek possible chances to cooperate with them. On the other hand, Facebook should optimize its advantage of having a giant interconnected user group to occupy the world's local second-hand markets. It should simplify its UI to make it as simple and easy as possible. A desirable result is that users could spend only 3-5 mins a day to quickly look through items that he might be interested in, just like what they would do in a farming game. Real-name policy simplifies and secures transactions tremendously. In such a way, Marketplace might be able to really popularize itself and make a success.

Saturday, January 30, 2010

Assignment 1 experience

I did not write my blog last week. This week I will make up for it by summarizing my assignment 1 experience, which is really something I never experienced before.

First of all, I improved much in terms of php and sql skills. I wrote essentially all php functions for the group ( and seems that is the only programming thing I did ). Connecting to the database, uploading information, downloading information, dealing with tables. It is always true that only when I dirty my hands and stretch to the limit, could I make progress. I also experienced myself that writing programs for a team project is really really different from writing simple scripts. As I did not plan well on how I am going to write the programs and what are the functions needed, I encountered numerous problems. The biggest problem is that I did not structure my scripts well, I should have spent an hour or two thinking about how many files I need, how to name them, where to put them, how to name the functions in a good manner. The result is that I ended up with very messy scripts. Files are everywhere and the function names are all messed up. This really makes using and debugging (especially) of functions very difficult. Another issues is that as I did not have a full picture of how every single page should operate and even what pages are needed, I got screwed up with by arguments passed between pages. For example, I wrote the page to display data retrieved from the database, actually I need to display two different tables' contents so I trivially thought about writing two different files. When I finished one page I realized that the other page would be only different in a very small portion from the first page. So I decided to merge the two pages. As I did not plan to display both tables, I need to modify the page first and this takes quite a while. After that I found I had to post arguments from the calling page so that it could decide which table to display. So I went back and add in the arguments. Finally, I have to patch the page to receive the arguments. After the patch worked, I found that there could be another page calling the merged page also, so I went back again to add in more arguments to every page. When the page finally worked, I found it became completely unmaintainable, which is obviously very bad thing. The database tables is another example. We designed the tables and gave columns trivial names we thought of. Then it turned out that many of the functions with sql queries would be much easier if the column names were given in a logical manna. Last but not least, I had a much deeper understanding of functions. I should have written the functions in a manner that without knowing anything about how the function works, my teammate could still use it. Unfortunately I did not do that well. Sometimes my teammates had to refer to the function itself to study it before they could use it. My documentation was poor so it worsened the thing. Actually I know it will always take much effort before I can really write functions like that, so I am not discouraged about that :).

Second thing is about my experience on team project. Frankly speaking, CS3216 Assignment 1 is my first serious team project. I did not have experience in it and it seems nor did any of my teammates. We started out without an aim, without consideration of details, without time management, in essence, without a PLAN. So everything was of low quality and slow. Obviously it contributed to my bad experience of scripts management as described in the above paragraph. Thinking about it now, we should have discussed about the functionalities and general layout of the application and then settled down the rough paper version of the homepage. Then we would know where to go and would not have wasted so much time on figuring them out separately. I was also in lack of communication with my teammates, it often happened that I sat there, happily coded for 4 hours and feeling encouraged that my script worked when my teammate told me that the function was not what he wanted. Well, communication is vital, the same reason why a true quad-core processor is always faster than a "glued" quad-core processor with 2 separate dies linked by a bridge.

Last point, about the application itself. I personally believe that the concept of our app (enabling easy and fast secondhand deals in campus) is correct. As I myself is fond of second-hands and I know what I need is ease, speed and safety in transactions. Our app enabled this feature as within campus, all what I need are already guaranteed. Furthermore, within campus, there are always so many things to buy and sell. Laptops, shafts, bread bakers, fridges and so on. We added in many features to make it easier for people to use the app. For instance, we managed to track the users' last active time to enable them viewing what new items were posted by clicking a button on the homepage. The sad thing about our application is that firstly, its UI really needs improvements. Maybe we should not blame as none of us is a designer. Leaving it there, we have another serious problem-the documentations and descriptions for the application is so poor that the user do not really know what they are using and how to use it. This is really a failure and I swear it would not happen again in the final project.

One phrase in conclusion, if you fail to plan, you are planning to fail ( is there any copyright issue :P? )