Monday, March 18, 2013

Difference between "list.extend" and "list+list"

list extend:
any thing iterable will do for the extend like


>>> li=[1,2,3]
>>> li.extend({4:5,6:7})
>>> li
[1, 2, 3, 4, 6]
>>>
But list concatenate can not do this.

list.extend does not need to copy the original list, so if a very long list concatenate a small list, it is better to use list.extend.


Sunday, March 17, 2013

A New Start

已经浪费了很长时间了, 是时候奋斗了, 这次是为了您, 一个觉得没有希望却又不可能放弃的人。 OK let us start。。。

Thursday, October 18, 2012

Very Busy days...   still have 40+ days.  I should tell my juniors never take too many projects like cs3216, cg3002... just now hear other groups casher says "pi ka qiu", means their voice works. While we just start building it. Maybe we need to start camp earlier....  CEG Camp~~ DSA lab

Compared to CS3216, we still have a lot of stuff to do... ah move on...

Tuesday, October 2, 2012

Case study 2 Team Dynamics


  1. Lanh said, “It would be really bad if we have a great idea but are unable to execute it success- fully”. What are your views? Which is more important - the idea or the execution? Why?
In my view, for this cs3216 course, execution is more important. I do not mean idea is not important, we definitely need to good idea to execution. But this course is not thinking and talking. The base line of it is to build a web application. If I only have idea, I think it has no difference as I do not have. Also how much we need to implement in the idea need to adjust according to the group man-power. Make sure we can finish the work by deadline is also a task in cs3216.

     2.  What have you learnt about Facebook so far? 

Facebook is a popular social network platform allover the world except China. The art of social network is its user base. Developers can build may kinds of apps on it. They are easy to growing and getting more users. Also we can get some information from facebook api instead of user importing everything.     

     3.  Comment on the ideas for Another Life and Fan Gang. 
     4.  Should the team have changed their idea for the Final Project mid-way or stuck to their original idea? Why, or why not? 

Maybe Another Life is a 'good' idea, but it cannot finish by deadline. So this idea may not so good. It is like a small Second Life which requires a lot of drawing also programming. It is quite brave to generate this kind of idea since it really needs too much skills and times. One problem is they should plan well their workload. They said they are all year 4 and have many other projects. Then there is no point not spending much time to finish this big project.  Fan Gang looks quite simple and redundant since facebook already exists interest tag. So this idea may not look so attractive as Another Life. Actually these stuff should be thought clearly in the first week like Technical available or man-power. But I still think they should continue their Another Life. Maybe plan the execution again and choose high value low costs and high value high cost work to do first.It is important for people to do something they really want. If change to Fan Gang, people may not work well without passion. 

     5.  List the major problems (obvious and non-obvious ones) in faced by the team? How could they have done differently and better? 

Work allocation and teamwork corporation. First the work allocation is not so clear. But the work could not be so clear if everyone only aim to finish his own part and complain why it is not work, my part is ok and so on. The goal of everybody in one team should be let the whole system work. We must corporate each other and connect each piece of code. One suggestion is they can sit together and code and first implement the layout and backbone to connect each others` code. Then implement their own feature. 

     6.  What did the team do right/well? 
This team actually did a lot of discussion and thought of many issues. Also they did some consultation which may be helpful for them. Last, there still one person not giving up in the team.

     7.  What would you do if you were Jeremy on the evening of 24th April (and the deadline for the final project submission was the next day)? 

Actually it is so sad for him at that time. Maybe the only thing he can do is to continue with some IT friends to finish as more as possible by deadline. Do not give up until the last second.  

     8.  How would you handle a situation where one of your team members is unable to deliver on the work he/she promised because of personal problems? 
 
First we need to make sure the attitude of that person is positive. If he is very active only quite busy last few days, it is ok we help him finish the work together. But if the attitude of the person has problem, redo the whole plan.  Also we need some buffer for each person. It is important to plan well the execution. Do not make it the last day of assignment.

    9.  What, in your opinion, are the key learning points from this case study? 
Before execution, plan well the whole project. 
Try to understand each one in team and get well with the relationship and teamwork.
We need to learn how to solve accident in team project and change our plan dynamically. 

Case Study  GetHelp!

1 Usability vs Aesthetics.
First, user interface is greatly important for software engineering since this is the main part to connect users and our apps. A good user interface does not mean colourful or complex, it should be very clear and user friendly. The biggest problem of this GetHelp app is the main page. Too many options and confuse user a lot. I really don`t know what to do first.  And the overview page,  I think user should see some popular or related posts in their main page. This is really similar to my first assignment: Eureka~
May be the color of the buttons should change to consistent to facebook color theme. Another problem is the new project button. It is not very easy to find it and it may not need to appear in every page. 
So I think some features need to remove from the main page. Make sure user can easy get what they want and they know what they are doing. 

2 Number of options / freedom given to user when posting a need.
I think the problem is still too many fields to fill. It should only show the most important and required fields and hide other fields to a more info option. For me, the most important fields are only deadline and topic like: "can someone help me finish the final assignment by tomorrow?"  And the people options may be too complex, I think only post to all / post to friends is ok.

3 Cycle of interaction & incentives (Are the elements of the app engaging?)
I think the main method of incentives is the statics. People may be happy seeing their ranking up when they help others or post helps. But this may not work. As we thought in Eureka, we thought if someone ask and answer questions, there will be more people ask and answer. Also a ranking system may engage them. But there may exist many ways to achieve the same stuffs like google, baidu. We need something they don`t have. I think we must focus on only small point first. It is hard to be very general at first. We need some user base from this small group then extend the functions using this small group people to engage more people. So my suggestion is to focus first like only in NUS. I know one example is an app developed by students in top University of China called "Xue Zhang Bang Bang Mang". It is about some junior sister can ask question and senior brother can help them. And this is rally popular in SOC since I have the same experience...

4 Other problems you think 
In this kind of app, I think the matching is also quite important. How can a user`s problem to be solved  efficiently. It must appear in the feeds of people who can solve it or who can easily search it. Some string parse and natural language processing and also a search engine should be done to support it.  Only the product can really help people solve problem will become popular.
  

Monday, September 17, 2012

The Third Assignment: mobile web application
In this week, we started coding our third assignment. 24 hours in a day becomes not enough again...
Our idea is to support chat with people based on geolocation. Actually this idea comes from some popular apps which using geolocation as the main connection among people. Not like traditional chatting apps which shows a list of friends, it will show all the nearby people in a defined region based on the google map. So people can chat with people nearby. Since people may have more information to talk with people nearby,  this app can provide a platform for people to chat.

Since this app only have two more weeks to develop, we started very fast and tried to do work more efficiently. We met every evening and finished to some basic key functions. In the processing of developing this app, we really learn a lot of stuffs about mobile computing.  First is what kind of app should be built on mobile? This app must need some feature based on mobile device. Also it is my first time to use mobile UI. It is really cool since we can use some easy API to build a nice looking user interface. Moreover, I implemented a geometry algorithm to support the location detecting. It is the first time to use algorithm in school software developing. A good algorithm really can solve problem easily. 

We still have a lot of tasks to do. And other modules assignment, quiz, midterm all come.  Ah, go working hard.  What can not kill me makes me stronger. 

Tuesday, September 4, 2012

Facebook/iPad Apps Seminar

Assignment 2 goes so fast but we had a nice experience on Monday`s lecture. All nine groups shared bright ideas and did excellent and interesting presentation. My assigned project to review is BranchOut.
BranchOut is a Facebook application designed for finding jobs, networking professionally, and recruiting employees. Some points during presentation impressed me a lot.

First is the idea of this app. Actually I think it is a common idea when developing a Facebook app or on other social network apps. We add the power of social network on existing applications. Like BranchOut, the main function about jobs finding is just an interface of Totaljobs.com. Users can do simple search and click apply to redirect to Totaljobs website. That website is a good functional job matching platform. BranchOut moves that function on a social network platform to allow user share their working information with their friends. This fully use the feature of social network: large user base. User can know more about the companies` requirement without applying the interview. This will bring social communication to simple job finding.

Next, one good feature about this app is that you can know your friends` working history, and people can endorse others through this app. The main purpose of building stuffs should be benefits the users. I
 think this is a good feature which can help some users get useful information about their desired jobs.
Also this is the power of social network. On the other hand, companies also can get benefits from this app. Based on users CV or profile, they can get all people who match their requirement. It is much easier to find people on social network platform.


Then commercial potential is quite weak for the app, since various business models for social apps do not apply. It does not have in-app purchases. Also lack of distinguishing features is causing a loss of users. Since the main function is from other source, users actually can choose that source to get their purpose. I go through Totaljobs and find there are more feature than BranchOut. More professional people may use that one. Social network has good advantage of large user base but it also needs lots of users. So if not much people use BranchOut, it will keep losing users. So BranchOut needs to retain its user base. Some advices are getting more detailed jobs and detailed user information. Also it needs someway to ensure the reliability of information and user`s` privacy.


In my opinion, this kind of app is quite popular since it is hard to find a good job now. It is easy for user to know all his/her friends working history and lists of jobs company offered through this kind of apps.  For branchOut since it is an interface of Totaljobs by huilding social network on it, it should build entire key function of Totaljobs. Compared to Totaljobs it lacks a function for find the correct person who match their requirement most. So why not user direct use Totaljobs which has more function than branchOut. However to let more people use this app, some evidences of reliability of information and keep users privacy safe must be added.

Anyway, we can learn this kind of idea when we are building stuff. Since people are main concern we can add social network in our applications to get more user base and communication between users. Of course, this is not enough for an app to be successful. It must support entire functions to ensure good user experience and reasonable commercial benefit.