Sunday, November 11, 2012

Some of the lessons learnt


1.  Start early and Manage time efficiently
     Rome is not built in one day, so does CrossView. Given the time constraint and the complexity of our application CrossView, efficient time allocation and time management does play a big role in such a gigantic project.  Always start early, thus the project can be finished in a more elegant manner.   Due to the overwhelming mid-term exams and
FYP projects belonging to the penultimate year students in the project team, our project has been constantly lagging behind those of other teams almost till the start of the progress presentation after putting in days and nights’ of hard work.  This is the cost which has to be paid due to improper schedule and vague milestone given at the start of the project. Luckily, all group members can sacrifice their biological needs and devote themselves into the project for two weeks’ long time. And the project cannot be done without the kind guidance provided by the TAs and Colin.
     It took us two days’ time for to just set up the programs properly in order to test our hello world code. Although detailed instructions have been posted on the official website of phonegap, it is rather hard to follow it exactly as the eclipse always has problems here and there. It takes time to figure out the places where have been gone wrong. It is assumed either the phone or the emulator will work. It turned out to be somewhat false at the start due to technical glitches. It is a project consisted of four members. Thus it is imperative for us to get all the eclipse function gracefully throughout the project. If we have started early, this would not hinder our way to meeting our milestone.       

2.  Read the documentation carefully before sticking to any existing framework
Originally, we chose backbone.js as our main framework. However, it is replaced by Sencha touch 2 sometime later after the start of the project due to some unsolvable technical problems existed. Precious time is wasted as we all have tried to familiarize ourselves with the backbone.js for several days.
It is a pain for us to read the documentation of Sencha touch 2. It is undeniable that Sencha touch 2 is such a powerful framework which supports web application and native application in multiple platforms. Sencha Touch 2 has a tendency to skip some essential explanations in its documentation. E.g. in order to access the camera, some header must be included in the particular Javascript file in which the camera function is called upon. As we are all new to Sencha touch 2, the debugging process or rather the “googling” process is more helpful in developing our application. Pertaining to the Sencha touch framework, trying to follow the existing demo on the web is much better than drilling into the Sencha documentation in terms of efficiency.

3. Effective Communication Saves time
Effective communication within the team always helps save time.

a>        Case 1: models and store (collection of model) were created without reaching the consensus from the backend and frontend designer. In the end most of the models were recreated.
b>        Case 2: A problem has been solved earlier by one of the team player. However, since one of the team members was absent, he was not aware of the fact. What happened on the next day was that, he spent four hours to solve the same problem one more time.
c>        Case 3: Github Overwritten. As most of the time, team members were working on the same MVC. Overlapping was sort of unavoidable. That was precisely why version control software like Github is necessary to avoid the collision.  It did not work out quit well in this project. Half of us were using the easy GUI version which the other half were using the command line Gitbash. As the same file was always modified by two different people on the same line of codes. The merge function provided by the Github fails epically. This further slowed the progress of the project down.


4. McDonald always closes at 11. Subway closes at 10. Subway is much healthier than McDonald. DO NOT EAT McDonald EVERYDAY!

5. Calm down while doing project. Do not get mad.
6. SOC sometimes got hot chicks and fried chickens at night, said by Siaw Kz.. haha 

Tuesday, October 30, 2012

Hell Week

 Well. This is the most disastrous period in my uni life. How should i put it? I have multiple projects due and mid term going, while lagging behind several tutorials and lessons. All my focus is on our android app. But it is fun. We stayed till 2-3 at soc everyday since many days ago. Hopefully we can do a wonderful project.
This shall remain as an unforgettable experience for me in NUS.

I do not have too much time talking crab on the blog. I shall write a full reflection report after the poster presentation. Back to project!

P.S.
1. We almost order McDonald everyday. Haha. pretty unhealthy.
2. The sencha touch documentation really sucks badly. It is not human readable. What is worse. Stack overflow seems to many unanswered questions about sencha. The number of complete examples are very limited. =(. Sometimes, i have to go to its src code to figure out what is going on.


Finally, i can go to sleep. The upload picture bug and ajax call bug are fixed!!!Thank god..

Monday, October 22, 2012

reflection on the network security

 Internet security consists of the provisions and policies adopted by a network administrator to prevent and monitor unauthorized access, misuse, modification, or denial of a service by a server and network-accessible resources. 

Obviously, it is one of the most important topic in the field of computing. We get a chance to know some of the common "technique" used to make a attack like SQL injection,authentication bypass, information disclosure ,remote command execution etc. 

If we do sth like
<form action="/cgi-bin/login" method=post>
 Username: <input type=text name=username> 
 Password: <input type=password name=password> 
<input type=submit value=Login>

It is very susceptible to SQL injection. If an attack do sth like
username=admin%27%29+--+&password=+ 

Then the server is hacked. 
Thus the lesson learned here is that we must validate the input from the user carefully. We can never assume all users will follow the guild lines without taking any funny or malicious action
I heard there is an interesting module teaching computer security. The final is exam is the best part~ given two hours. You must hacked a server given as it is purposely set  with certain loopholes.

Wednesday, October 3, 2012

Case Study II


1. Lanh said, “It would be really bad if we have a great idea but are unable to execute it successfully”.
What are your views? Which is more important - the idea or the execution? Why?
In my opinion,  both are important. But if i have to prioritize them, i would say execution is much better than the idea. A world No 1 idea with poor execution will not impress anyone. Users are the judges. They are using the application that developers have develop. They cannot literally play with the idea which is rather abstract. A functional bicycle vs a malfunctional car, any sensible person will choose the bicycle. ( provided you cannot sell them or fix the car). An app of a bad idea with excellent execution and marketing will win over more users. Like i said, it is better to both of them -----a functional car!  If we have to choose one given various constraints like time limit, i would definitely choose execution. It would be simple and sweet instead of being fantastic in disguise.

2. What have you learnt about Facebook so far?
It is a success which cannot be imitated easily.Imagine there is a different social platform, users will not switch to it unless it has some special features which facebook does not have. It is a great platform which provide many plugins and even the code in js php etc to benefit itself and developers mutually.


3. Comment on the ideas for Another Life and Fan Gang.
There is no problem with both ideas.
For Another Life, as the name suggested, the scope is very huge. It makes me think of Sims. However, given the time constraint, even a simple sims is not simple to build. If it gets to simple, it is not fun any more. Thus, such a topic for this module is deemed as inappropriate.
For Fan Gang, it is a utility app which i do not like. Personally i do not even use time table builder. I do not care about most of the utility app on my ipad. It is well developed but i do not give a shit. So what. I do not need another event planner, alarm clock , to do list etc. The idea is not too new.

4. Should the team have changed their idea for the Final Project mid-way or stuck to their original
idea? Why, or why not?
Yes. After getting stuck in the old idea for a long time, they should change their idea. Althought, time is not on their side. With careful planning, chances are that they can still finish the project in a decent manner. They can not go anywhere for their old idea. It was just too hard to modify. Sticking to it would just waste all their hard work along the journey.

5. List the major problems (obvious and non-obvious ones) in faced by the team? How could they
have done differently and better?
At the phase of brainstorming, they can come up with any ideas. However, at the phase of implementation and planning, they should set realistic goals. Most programmers tend to overestimate themselves. Thus incremental approach will be more safe as compare to waterfall. If they plan carefully and realize the scope of life is too big, they would save a lot of time before they switch to other ideas.
Communication is another problem. Since they have two coders, they must listen to their ideas. If they do not agree to them ,they would better change it.

6. What did the team do right/well?
They were brave enough to change ideas half way and let go the old idea. It would be better if they can implement it by meeting the milestones.

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)?
Not a lot can be done on that particular night. But if i were really in that condition, i would call everyone to come up a best-fit solution like finishing some basic feature and write a report for it.  Instead of being helpless, be optimistic and learn the lessons from it while putting in the necessary effort.

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?
I will not blame him for not delivery. Communication is the most important. Before several days of the deadline, we should know each others' progress. Instead of being surprised on the day of project meeting, any potential problems should be solved early. This does not happen in my team as we all meet up to do the projects.

9. What, in your opinion, are the key learning points from this case study?
Dream big and plan well.  Execution > idea given the constraints.  Team dynamic is something we should really pay attention to while doing any project.

Case Study I


1. Usability vs Aesthetics (Is the interface attractive? Is it functional?)

Honestly speaking , the design and the graphics in UI is pretty attractive. At first glance, i did believe the developing team has put effort in it.  However , without referring to the answer in the workbin( i innocently study all of them .), i found out that there are too much unnecessary stuff in it which caught the users' attention. Stupid users like me will feel confused at the start, then try to figure out what is really going on ,eventually we would fail. Therefore, we may be pissed of and leave the app.
Instead of have a command line app, the apps nowadays have UI. As the fundamental  purpose is to make users learn how to use the app in a fast way while attracting them by cute icons, colorful animations etc. If it is not functional at all, the developer team would better make it simple and clear.  

2. Number of options / freedom given to user when posting a need.
I personally feel that we are seeking help from others. In the process of doing so, the app should not create additional difficulty along the way. Else, we need to ask "how to use the app" which is utterly unnecessary and unhelpful. Incremental approach should  be adopted.
Minimum key words should be keyed in at the start.  Hint may be given for optional function.
The original page has too many buttons and red stuff. 

3. Cycle of interaction & incentives (Are the elements of the app engaging?)

Numbers are unattractive to users like me. Numbers themselves does not give incentives to user to work harder. The new rewarding system is better but it might not be the best.
I would choose to use a game system like CS2010, i was really encouraged to solve the bonus questions to show myself in the leader board. Yes. i Like it! 


4. Other problems you think the team might have faced
They may adding a live help channel after a large base of users. It should only happen after a large user base is established.  But i did not see it happen which is sad. 

To sum up, UX >> UI. The users are the judges. If they fail you, in no way can you pass with whatever fantastic design or function. It is just a Epic Fail. A small success is better than an epic fail when the app were to get commercialized.  





Monday, October 1, 2012

Recess week report

 I do not mean to be so serious but  I cannot think of any other title.  maybe I shall call the so-called recess week is hell with joy?that is pretty accurate. Let me share with you what happened during the recess week.
  Started from the Sat at the start of recess week, I had a cs2010mid term which I found it to be no big deal. Then I finished a project regarding socket programming on Sunday, I wrote the java program on graph algo till three o'clock. That is only the beginning of hell. On the official start of recess week, I with my teammates worked on the mobile cloud app day and night everyday till the deadline.that is really hell!
But........
I like it. It gives me a sense of fulfilling. The team is really fantastic. We build the app from scratch from Monday. I learnt much about JavaScript ,html5 CSS and some random stuff like cache etc. I just feel it is great, the sense of achievement.  The potential of every youth can be stretched again and again.
When I wake up in the morning, I can proudly say I am one step closer to my dream.

Sunday, September 23, 2012

Busy week

It has been a long time since i blogged last time. I felt this is the most fulfilled semester in my university life. Oh, it is recess week now. Thank GOD? No. Not really!  After attending the great pitch party on Friday.  I had a 2 hour written page exam on Sat morning. =) It is over anyway. I am doing the mobile project with my fellow group members in SOC now. I am enjoying it honestly speaking. We never know how high we can fly before we spread our wings.

 About the pitch party:
It is a fantastic event. The best part of the evening is the FOOD! LOL. I am just kidding. The really brilliant stuff  were those ideas which i might never think of. Almost overwhelmed by the ideas. Ben's questions impressed me a lot. I thought the speaker is well prepared in the sense that he almost have all the data needed to handle the FAQ. However, there is still a long way to go before he could start to build the app and considering monetizing it. Most of us are stuck in the place where we can increase our user base for our app. It may become a completely different story after commercializing the product. We may leave aside the idea of commercializing the  app right now. The idea i liked most is the one given by the geog teacher. He just make me quite moved by his passion and love for the teaching course.  The app might not be fantastic. But it indeed help those underprivileged students. It made me think of the game system adopted in cs2010 : data structure and algo II. The idea of Carpool sounds good. But i am still doubting its feasibility. Even with the app, people out there may not use it. It is not a technical issue.  More importantly , outside Singapore,
safety is the biggest problem. Driver may feel unsafe to give strangers a ride. That is the reality.  The idea of the dashboard to control the light system is the most familiar to me. My father's company spent 40thousand to do the R&D on it last year. It turned out to be unpopular. Why is it so? 95% of the products sold are the normal switches in the switch market. Businessman do not dare to take the risk to be the first one massing producing the "advanced" switch which are more expensive. It takes time for the world to get used to new ideas and products.


About the Project:
Still busy coding =D. I just learnt how to code a floating bar which disappear on scrolling down and appear when scrolling up just now. It feels great. Loving it. Continuing....

Tuesday, September 4, 2012

Pinterest







 The three years' old “social scrap booking” community stormed the web  in 2011, reaching headline-grabbing double-digit-million monthly visitors faster than any other website before it. The growth rate is just fascinating, although  the rate is smaller as compared to Google but who cares. This is the best part of the presentation.  Well, just kidding. Let's begin by addressing the key points of the presentation.

key features of Pinterest

Pinterest is bout viewing ,organizing and sharing image. And it is about share the things you love.  As we can see, google+'s growth rate is the largest followed by Pinterest, facebook and Twitter.  And it is ranked 5th in the social network. As we can see, the trend is heading to the direction of social interaction and sharing. Why does the sharing of photos can become an app. Facebook also have this functionality.  Well, when you want to look for or share a photo. You wont go to facebook to do that as it is a network for socializing. It is a wrong place to look for something.  Pinterest find the necessity to build this app. Thus, it is a huge success. 

Something bad about Pinterest 

Although it does have a simple clean UI and good design, nothing comes perfect, so does Pinterest.  It does not have a visible search bar and the ranking algorithm is not familiar to normal users.  Due to the lack of search bar and view history, user cannot possibly check what have been browsed or bookmarked. And what's more,  pictures are not zoom-able. Well,  this really sucks. It is not technically impossible to add this feature to Pinterest. but why this feature is not added remains questionable.  

B2C Business Model

The business model adopted by pinterest is business to comsumers. B2B marketers can use this to their advantage and incorporate Pinterest as a way to draw traffic to brand-building content that drives interest and engages both customers and prospects. For example, the app can be free to users who need the basic function. Premium edition to those users who need more advanced function like customizing   the theme and skin style.  And Enterprise  for business companies who are doing E-commerce business.  B2B, B2C and C2C can all be adopted to expand the market and earn a greater market share. 

I just registered for the pinterest app. Well, honestly speaking, i do not really like the way it registers a new user. But i hate to verify with my email. If possible, i always avoid it.  As mentioned in the presentation, 90% are female users. I am not one of them in the remaining 10%.   I like to view funny pictures.  Since there is no search bar, i quite it honestly speaking. it is not because it is not user friendly. It just failed to catch my interest. As a personally habit, I still use facebook and other social network app to browse the pictures shared by my friends. At least i know who post these pictures, and i can comment to it or say something funny.  Thus. Pinterest is not for me.  Girls may love it.

What is next? The business model. I believe the pinterest adopt this B2C business model for a reason. It is the most basic business model and with that we may choose to expand it to B2B or C2C. However , i have reasons to believe this simple business model is the best for Pinterest. As it is address a unique area of social networking, it attracts users by its unique well-established feature- photo-sharing. It is simple and it is good.  They do not really have to take the risk to adopt other business model. It may not be worth it. Else, one day, it may lose its core competency as it may become another version of facebook or apple store. it should continue this business model and improve other aspects such as registration process ,lack of search bar
etc. 
To conclude, It is simple and it is good. 

Thursday, August 30, 2012

Cool talk.

Such a busy week.
The talk delivered by Microsoft really impressed me a lot.  I was once thinking those cutting edge technology is still very far away from me.  And i still have a long way to go to catch up with Microsoft etc. Realistically speaking , the gap is still there. But it is seemingly not as much as  what i thought.  If we really spend the time and work on cool stuff like kinect programming, well, it is doable. =). But i have no idea how long it will take me the actually know it well instead of merely trying to use the example desperately like what i did. Backbone.js example etc.
  I have to admit that anything cool for geeks only may not be interesting to others. Example? Linux system? Some cool algorithm?  My point here is that if kinect were a huge success, the design and outlook of kinect has contributed 20% or more. And most importantly, the marketing of kinect has done more than 30%. Once people were given a choice of two options: A very good product with normal UI and normal marketing people Or  a normal product with fantastic marketing strategy and cool UI. Well, in the short run, most boss tend to favor the second to the first. It is a world of normal beings, not geeks. So,  marketing strategy is always sort of as significant as technology.
   From my perspective of the current working world, technology remains the core competency of any enterprise. That is what we programmer aimed to be part of for the next fives years or so.  However, production and distribution depend largely on marketing. That is where the business people come into the picture. =) 

Friday, August 24, 2012

Second Week

    ----->So this is the second week of school. I am really amazed at how fast people can pick up new stuff. I used to think that it would take me like a semeter to pick up a new language and get used to it. But obviously that is not the best practise.  It is rather more efficient to watch tutorials and try out codes yourself to learn. The stackoverflow is really a good place to ask questions. People out there is always ready to answer our questions. How excited is that!


    ----->The story on the workers on the field is fantastic. Only after you see the big picture, you shall be more motivated to work hard.  With the wrong mind set, you will be always stuck on what you are doing.  Remeber, we are starting something big. Though it may be not that cool at the start, i still believe anything can go wrong will go wrong. We shall fix them sooner or later.

   ------>Now i understand how the server works, why must we use asynchronous js , how does server handle requests and route them accordingly etc. What i learn in one week >> what i learn during the holidays. 

-------->Facebook developers impressed me a lot. I have never found so much detailed explanations and examples. No wonder facebook is a huge success.  


---------> Tomorrow we got another workshop. The experience and knowledge shared by the seniors is exceedingly helpful. 

     To be continued after tomorrow's workshop--- a great learning experience.
   

Thursday, August 16, 2012

Week one--- Starting Point

 Well, Times passes really fast. Week one is almost coming to an end. After the first lecture, i got to say our seniors were really doing a great job. They can survive 5 assignment. Then I can do it! However, what they said really scared me a bit. I am sort of worried about the time management.  Luckily, all other modules do not have projects this sem. This is done on purpose when choosing the modules =D.  The presentation of the module is really cool.  Well, i think this module is unique in the sense that you are free to do what you want to do.
  Frankly,  i have not been equipped with enough knowledge to create a Facebook app alone.  I spent my holidays reading books regarding php , apache js etc. But putting them together is a different story. Now what we will be probably using is node.js & mongo DB. Well, i am attend the workshop on Sat. It is really a good opportunity to get to  know more about php mysql ,git & aws.  I am studying for this module for like 8 hours a day or more. But it will take some time to catch up.
   The talent show is awesome. There are so many talents in the class. And they are really cool!  I am really not goot at acting in front of "public", let alone singing. They are people who can do coding with half eyes open. There are people who can use the photoshop etc to design a model.  This really opens my eye. Luckily they are now my teammates =D.
     I got to say github is coder's version of dropbox.  The best thing about it is its powerful function to do merging and forking.  Hopefully, the upcoming Sat workshop will bring me more information.
     This is not the end of this blog. I will write more after Sat workshop.
     Cheer!!!


So i get to learn some new stuff out there, like how to use aws services. How to transfer file to the server.  This is something i did yesterday. http://ec2-54-251-13-168.ap-southeast-1.compute.amazonaws.com/hi    haha. I am gonna watch some tutorials on node.js and javascript.



To end this entry , to ask why we fight is to ask why the leaves fall, it is nature !

Sunday, August 12, 2012

New Milestone

  I am taking CS3216 in the upcoming semester.  I think it would be rather challenging for me. I heard about this module one year ago from my friend who spent hours and hours a day struggling this module. Nevertheless, i feel somewhat excited and a bit scared. It is just some random mixed feeling.

  From the two years' study experience, one important thing i realized is that computer science is not really all about learning new languages :( . I have to  learn how to learn and where to learn. The world is moving forward at an incredibly fast speed. Trying to follow the footprint blindly is not helping too much in realizing our dreams. However before we can lead the way, we got to be well prepared in terms of knowledge and experience. Frankly speaking, i am not well prepared for that.  This may be part of the reason i take up cs3216:Be more Prepared.

  We never know how high we can fly before opening up our wings. I thank those challenges for pushing me to the limit so that i can know whom i can be and whom i want to be.=)  After reading the feedback given by our seniors, i would say cs3216 is quite challenging but i like that.

  Back to that main point of the blog: what i want to learn from cs3216:

>learn how to learn new stuff in a quick and effective manner.

>Turn  ideas in the mind to something "tangible".

>Work together with teammates.

>Most importantly, enjoy the challenges =P

  Hopefully, this will remain as one of the most pleasant journey in my university life!