Saturday, November 19, 2016

Vacation plan ✈️

A very good news for all of us: vacation is coming 🤓 But in order to make the vacation meaningful, I would like to enhance my knowledge besides simply running the "eat, play, sleep" loop.

The first thing I would like to do is to learn Swift properly. Though I have gained some knowledge on Swift from my teammates, who are Swift pros, in final project, I still lack of a solid basis on the language and iOS development (my teammates tanked all the basic setup). After an exciting semester with 3216, I would definitely like to take its twin module 3217 and some knowledge on Swift would help me focus more on the design and soft skills in 3217, instead of struggling with the coding part.

Secondly, similar to Swift, although I used NodeJS for 2 of my projects, I still what to learn more about Javascript. I read an article that in year 2016, Javascript has been enhanced with new frameworks and libraries which makes it very much different from the age of jQuery. It would be interesting to find out more on it.

Moreover, as mentioned in my previous blogs, I developed interests on computer security and I have bought a book on web security for noobs. Hopefully I finish it in the first 2 weeks then I will come back to tell you whether computer security is still appealing to me 😂

Last but not least, I need to review on my algorithms in order to be prepared for interviews next semester ><

It seems like I won't have enough time to finish all of this unless I upgrade myself to an "vacation-efficient" version. It is always fun to challenge myself so let's try 💪

At the end of CS3216

At the end of CS3216, did I achieve what I hope to learn at the beginning of the semester? In my very first blog, I listed 4 skills that I would like to learn in CS3216, namely project management, time management, working with people, and hardcore coding.

For the first two soft skills, considering the heavy workload, we are somewhat forced to schedule our tasks well and work efficiently in order to save time for other modules and sleep (Sorry guys I know we are not supposed to take other modules or sleep during 3216 😳). As for working with people, I really enjoy working with all my 4 teams and I truly admire them. They are all very nice people with strong technical and soft skills. Just by reading their codes and watching their presentation I can make great improvement. Just some quick example, Jinghan is a godlike iOS developer, Jiang Sheng is so pro at backend and server management, 💡has great sense of art, Melvin can always spot what is wrong with an idea, Zhi An is a such a confident presenter. There are much more to list down. Among all the advantages of my friends that I observed, if I manage to master some of them myself, I guess I will be able to push myself to a new level. Another very specific lesson I learnt from my final project teammates is, in order to have buffer time to do testing / submit for review / prepare for Steps, we really need to work very very hard from the beginning. In other words, NEVER procrastinate. I guess that is part of the reason why they are so professional. Last but not least, like many of us, I enhanced my coding skills during the semester. I have learnt new skills like NodeJS, Swift and Amazon Web Server management.

Beyond what I hoped to learn, the guest lectures and TA reviews actually taught me lessons out of my expectation. For instance, now I have a clear idea on how to do a successful pitch in 2 mins which I applied in the final pitch presentation. Prof and Su Yuen's review on our app also opened my mind on how to create great user experience. Besides, I really didn't expect that I could talk that much on Steps day haha.

And what could have been done better? Well, marketing skills. Our trail on marketing FitMi at Deck turned our to be a failure. I guess it is because firstly we didn't point out what we want them to do (downloading our app and supporting us on Steps) so most of them were like "hmmm okay, so?" after listening to our pitch. And secondly we didn't approach them in the right time with good reasons (like charity). I guess people just don't want to be disturbed by marketing people when they are eating / talking to their friends. A better way might be set up a booth and selling our T-shirt 😆. Our T-shirt is really a big success (all thanks to You Jing💡).

To summarise, 3216 really opened my mind by showing me what myself and others can do and pointed out what I need to work on. Though it is now the end of the epic semester, I have a feeling that it is a start of a new journey. A final word for myself: GLHF =)

Friday, November 18, 2016

JoJo's Bizarre Adventure

Since Prof introduced great movies and books to us, I would like to share a great comic with you, which is JoJo's Bizarre Adventure, written by Hirohiko Araki.

Similar to Cloud Atlas, JoJo's Bizarre Adventure includes multiple stories across centuries. To summarise, it "tells the story of the Joestar family, a family whose various members discover they are destined to take down supernatural foes using unique powers that they possess. The manga is split up into 8 unique parts, each following the story of one member of the Joestar family, who inevitably has a name that can be abbreviated to the titular "JoJo". The first six parts of the series take place within a single continuity, while parts 7 and 8 take place in an alternate continuity." (Wikipedia).

In the comic, the protagonist can be a well educated English gentleman, can be Japanese high school students, can be a Italian mafia rookie, or can be a lady who is framed to be a criminal. But regardless of who they are, it is their way of living that makes the stories alive and attractive. Reading the comic, the idea of "I would like to live my life that way" keeping jumping in my mind.

Their attitude towards life can be summarised into two keywords, “gold spirit” and "dark will". The first term describes a positive attitude including kindness to people around and the courage to do what is right. The second term refers to the toughness to break though the obstacles.

Many of my friends have figures out what they want in life, but I am still not one of them. I only have a rough idea that I would like to be a man who is strong both physically and mentally. Then I guess I will be fine regardless of the environment my fate leads me in. Who knows? As the Unbearable Lightness of Being stated, “There is no means of testing which decision is better, because there is no basis for comparison. We live everything as it comes, without warning, like an actor going on cold. And what can life be worth if the first rehearsal for life is life itself? That is why life is always like a sketch. No, "sketch" is not quite a word, because a sketch is an outline of something, the groundwork for a picture, whereas the sketch that is our life is a sketch for nothing, an outline with no picture.” I guess the uncertainty of my life is what makes it interesting to explore =)

Cloud Atlas

Anyone can tell from the length that Cloud Atlas is a great movie.

It was my first time watching the movie and I have to say the structure of the movie is quite unique. Multiple stories are presented in "random" order and together they form a blueprint of what the author tries to deliver to the readers. I spent the first quarter trying to understand what is going on and what are the relationships among the 6 stories. But bearing with the confusion, each story was very attractive on their own. I was so curious to find out how they proceeded. At the end of the movie I was glad that the sub-stories are finally linked together as a magnificent world of imagination. Prof mentioned that he got many ideas about life from Cloud Atlas but during my first trial I was struggled with the content so I could not fully understand the meaning underneath the stories. From my points of view, the movie was trying to tell us, in your way towards your dream, there will always be obstacles and oppression, and scarification must be made to do what need to be done in order to overcome them.

Among all the lines, there is one that really shocked me. "All boundaries are conventions, waiting to be transcended. One may transcend any convention, if only one can first conceive of doing so." It was how I saw the world at the age around 14. At that time I was thinking, why there must be rules, especially those unreasonable ones, to prevent people from doing what might be more beneficial to the world? I was quite upset about it at that time. But after I grow up a bit I then somehow find the rules acceptable because there are too many people in the world and they all think differently so without rules the world might become a place of chaos. So I started wondering, what are the rules that is of no value to follow and what are the ones that I need to stick with even though I don't like them? Apparently I do not have the wisdom to tell the difference between this two so far because I am still confused about it. My doubt is actually similar to a philosophy concept of in 西游记, Journey to the West, where Zhu Bajie was named Wuneng (悟能) because he needs to learn what can be done and what cannot be done. I guess I still have a long way to go before I can clarify the question.

Back to Cloud Atlas, after some research I realised that there were some difference between the movie and the book. So I would like to read the book during winter vacation and hopefully this time I can focus more on the connotation.


Sunday, November 6, 2016

Rainbow table

Prof Hugh's talk on compute security was very inspiring, especially the part about rainbow table. I was wondering after class, if rainbow table seems to be so powerful in cracking password hashes, does it means that our passwords are not secure at all? Out of curiosity, I researched on the defence mechanism for rainbow table and here is what I found:

First of all, adding a salt is a very intuitive approach to defence against rainbow table. A salt is a random data that is used as an additional input in hashing a password. Same password hashed with different salts will result in different hash values. But bear in mind that the salt value must be large enough to make rainbow table ineffective. Otherwise the attack will still be able to precompute the password hashes for different salt values. I think the underling principle of this mechanism is quite common in computer security: instead of aiming for perfect secrecy, you create a computationally secure scheme to defend against attackers with limited amount of resource. This idea works because it is likely that for every single bit increased in the encrypted data, it takes attacker exponential amount of resource to break it, so called 魔高一尺,道高一丈. (Quan Yang mercy please if I am wrong >.<)

Secondly, in addition to adding salt while hashing the password, we can run the underlying hashing function multiple times to increase the amount of times required for the attacker to build rainbow table.  This is called Key Strengthening. The response time to validate users' input password will be affected as well but since for each user they only need to hash one password multiple times the overhead is negligible.

Another defence mechanism is even more interesting. Based on what we have for key strengthening, if we remove the salt after we hash the password, normal users and attackers will have to brute force the salt results. This will increase the overhead for normal users in a significant amount of time. But I am not very sure how it helps to defence against rainbow table attack better than key strengthening. It seems that such defence mechanism is only published on a paper and hasn't been put into practice yet.

Computer security is such an challenging and important field in computer science and after what Quan Yang and Prof Hugh had demonstrated in our lectures, it seems to be amazingly interesting as well. I really feel like looking into this area and having some fun myself~


Monday, October 31, 2016

Taste of mongo

In our final project since there is no constraints about the choice of database, our group uses MongoDB to manage data. It was my first time using NoSQL database and here are some thoughts about it.

As for the advantages, one of the things I really like about MongoDB is that I do not need to write schema anymore. The flexible data model MongoDB provided makes managing data a lot more easier. Basically I can store any type of data with desired structure. I can also dynamically update the data model with changing requirement without any interruption to old data. Based on my research, MongoDB also provides high performance in terms of throughput and latency. So far the amount of data we managed is not large enough to prove the statement but I am looking forward to it.

On the other hand, as for the disadvantages, not being able to do join query makes me feeling quite uncomfortable. Being used to relational databases, join is the one of the most frequently used method to retrieve data from different models with a single query. In MongoDB, the alternative is the "lookup" operation which I have not get used to. Besides,
MongoDB does not support transactions except certain atomic operations at single document level which may lead to data inconsistency. 

These limitation of NoSQL database may be the reasons why relational databases dominates the market for over 40 years. However, it is great to know that databases are still evolving for better performance.

Sunday, October 23, 2016

Why pixel games are still popular?

Since our final project, FitMi, is designed in pixel style, I research on available pixel games in the app stores and surprisingly find that pixel games, which seem to be a bit outdated, are still popular in the market. But why? Based on my personal experience and some further research, I suspect that these are possible reasons that keep pixel games alive.

One of the most important reasons is reminiscence. Because of reminiscence, developer created pixel games to pay tribute to the pioneers, for example, Super Mario, which bring them a lot of fun in their childhoods. Players of classical pixel games are attracted by new pixel games because of similar reasons.

Secondly, many game developers and organisations are short of man power which means that sometimes they have to do game design without designers. In such cases, pixel game is a rather safe choice due to its simplicity.

Third, pixel games actually enable users to make full use of their imagination. Therefore, for children and teenagers, who are never lack of imagination, pixel game is still a great choice for entertainment.

Moreover, expectations to pixel games are usually lower than the expectations to more advanced games such as GTA5. Since user accept the simple design of the user interface, it is not likely that they expect the game play to be very fancy.

On the other hand, since pixel game cannot afford too fancy game plays, they really have to put in effort to come up with a core feature that is fun. The Binding of Isaac, for instance, is a very good example of simple but playable game. The carefully designed core features keep pixel games attrative for a long period.

Last but not least, considering the large number of pixel games in the market, maybe it is just some of them becomes successful and popular at the beginning. And the success of these games earn users and credit for other pixel games which makes the whole market alive.

Monday, October 10, 2016

Ideas on how to make our app addictive

It has been two weeks since our final project started. Our group is building a health app with digital pet element. During our last consultation Prof provided us some tips on making our app addictive. After further research I summarize the points below and hopefully we will be able to achieve it at the end of the development.

First of all, our app must have a NICE user interface. A successful app should either be cool or cute on first glance otherwise users are like to delete it right after download. Considering that our app is categorized to be a Health & Fitness app, it is likely to be on the cute side.

Second, user should not encounter too much trouble for on-boarding. A bad example for it will be Visor which included unnecessary Facebook login process. We will first allow user to use our app without login and only when user want to switch between devices we will ask for their Facebook or WeChat account.

Furthermore, in order to remind the existence of our app to users, we would come up with certain strategy to entertain user even they are not exercising. Something like a combat among friends will be great. The combat should be directly related to users health data and therefore encourage users to do more exercise. Other than that some interaction between users and their digital pets will be fun as well.

Story line is also important to keep our users. As Prof mentioned during our last consultation, if user feel that they have invested a large amount of time and emotion into our app, they will likely to be more loyal, Therefore, we will include a EXP and level system into our app firstly to help users keep track of their exercising history and secondly enhances the connection between their digital pets and their reality life.

Besides story line, challenges is another element full of excitement and we would like to make good use of that. We would let users set their daily exercise goal and they will be rewarded if they manage to finish the goals. We hope that the sense of accomplishment will encourage them to keep exercise.

Last but not least, game balance is important for any app involving competition. As a gamer myself I fully understand the desperation of somehow losing a game that you are so confident to win due to imbalance. Therefore, since we would like to introduce ability difference into our Mi combat, it would be necessary for us to test our math formula before final deployment. Maybe some kinds of mathematical model need to be build to ensure balance. For more about game balance, I would do further analyze and discuss in next week's blog.

Monday, September 26, 2016

Setting up NGINX as server for Ionic and reverse proxy for Rails on AWS

For Assignment 3, we implemented a RESTful application, Wishes (www.wishful.tk), with Ionic as front-end framework and Rails as back-end server. Regrading the deployment, there is very limited resource on how to setup Ionic and Rails with NGINX on Ubuntu and make them work together. After days of searching and a few trials, I come up with the following steps.

  1. Install NGINX on Ubuntu 14-04
    1. https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts
  2. Install letsencrypt to get CA certificate
    1. https://certbot.eff.org/#ubuntutrusty-nginx
  3. Update NGINX config to enable HTTPS connection
    1. https://certbot.eff.org/#ubuntutrusty-nginx
    2. http://nginx.org/en/docs/http/configuring_https_servers.html
  4. Setup Ionic
    1. http://ionicframework.com/docs/guide/installation.html
  5. Install git
    1. sudo apt-get install git
    2. sudo npm install gulp -g
  6. Clone frontend repo onto server
    1. git clone https://github.com/Wishes-CS3216/Wishes-Frontend.git
  7. Update NGINX configuration (located at /etc/nginx/sites-avaiable/default)
    1. http://nginx.org/en/docs/beginners_guide.html
    2. restar NGINX
  8. Setup Rails
    1. https://gorails.com/setup/ubuntu/14.10
  9. Clone backend repo
    1. git clone https://github.com/Wishes-CS3216/Wishes-Backend.git
  10. Update NGINX configuration
    1. https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04 (We are using Puma here. Other alternatives are Passenger and Unicorn)
    2. git clone https://github.com/Wishes-CS3216/Wishes-Backend.git
    3. update Rails configurations if necessary (under repo/config/ folder)
    4. start Puma
    5. restart NGINX
Links to relevant resource are attached here. Hope it can be useful. If you are still confused about the detailed configurations please feel free to comment below. Cheers =)

Monday, September 19, 2016

Lessons learnt from pitches

1. The word "free" has magic power in attracting people. The experiment mentioned by Patrick was quite inspiring. I think the strategy could be applied for onboarding users.

2. People will be more willing to donate money / free stuff if they know that it is for charity purpose rather than for some random strangers. For assignment 3, our group is doing something related to help fulfilling other people's wishes. And one of our main concern is on how to activate users. I think maybe we can reconsider the project scope to add in element like "help local charity organisations". It indeed sounds more attractive and it is more likely to get support from the society.

3. "Don't find target users for your app; find app for your target users". There were two great examples mentioned that indicated such principle. The first one is the Show My Turban site and the second one is the marriage agency for Indian. During my past barnstorming I mainly focus on the pain in my personal life which made my ideas limited. In the future I will also consider the problems faced by people whose life I truly understand. For example. students and teachers in Chinese high schools and NUS, people living in my hometown, etc.. Since I have a deep insight on their lives I guess I am able to come up with something that will make their life better.

4. Users may not use the app as you planned. I personally doesn't believe that the "anonymous Facebook Message“ idea will be successful. Similar functionality was implemented by Tecent QQ a few years ago and the feedback was quite negative since people felt offended and annoyed by mischief. The idea failed mainly because user didn't use the app as expected. I think it is important to think about all use cases for an app during brainstorming to ensure that all of them doesn't contradict with the main purpose of the app. But the good thing is that if one of the use cases contradict with the original ideas and it sounds fun we may create an app for that as well ><

Monday, September 12, 2016

Reflection on Assignment 1

Assignment 1 is over but there are still lessons can be learnt through reflection. What can we have done better?

First of all, we should have cared about security from the very beginning. Two of us were taking CS3235 but yet we put security as our last concern. Not a good practice at all. Choosing a framework that implements more secure features can be a good start. Securing database access by avoiding raw query can be useful. We should have validated user input as well and we should did it when we still have enough time. I guess Quan Yang must feel quite boring hacking our website - "No challenge."

Second, when we split into two groups each focusing on a component of the website, it is important to know what the other group is doing and will the integration work in the end. In our case we implemented Student page and Company page separately but later we found that there was logic flow missing. It was not only the project manager's duty to see the big picture of the website.

Last but not least, since finishing the write-up is so much pain, it is better to answering each milestone once we finished it.

Tuesday, August 30, 2016

Application Critique - Grab

Congratulation to Group 3 for the successfully presentation. The ideas elaborated were quite inspiring. 

In my opinion, the best part of the presentation came with the question: how will Grab compete with Uber in Southeast Asia? The answer was localisation. For example, GrabBike at Indonesia offers a new solution to the pain caused by Jakarta's terrible traffic jam. It reminds me of how KFC out-powered McDonalds in China by selling chicken rice during lunch hours. It is great that Grab make use of the resources it already acquired to server different needs. Such action is likely to bring customers for all services it provided.

As a user of Grab myself, I cannot agree more that Grab should provide more information to users and update data at real time. Otherwise, users will keep complaining about information asymmetry deals which may leads to trust issues. 

On the other hand, I am afraid that involving bidding into such business model is a risky move. It is true that during peak hours there will be mismatch between demand and supply in certain areas and involving bidding is likely to increase the amount of supply. But considering that more cars means more traffic jam and more traffic jam means longer waiting time. Users may end up paying extra money without saving much time. Besides, with the large amount of demand daily, taxi is more like a kind of necessity good. It is unfair to have customers bidding on necessity good.

The idea of GrabHitch Deals - Sharing 1-for-1 Deals was very interesting (e.g. grab a strange to share the Starbuck 1-for-1 offer). The idea proves the value of information. But I am wondering what kind of commercial potential does the service have for Grab. Please leave comments if you have any ideas =)

Many thanks to Group 3 for uncovering the valuable ideas for us.

Sunday, August 28, 2016

What is good and bad about Discord and possible improvement

After reading tons of reviews about Discord on blogs and Reddit, I get a further insight on what is good and bad about Discord and what functionalities are expected.

Let's start with the advantages. I believe a very important reason that Discord is getting more and more popular is that it is 100% free. Its competitor, TeamSpeak for example, charges $30 per year for a server with 32 slots while Discord is free with no limit on how many channels a user can create. Why pay for something when you can get it free? Besides, Discord is designed for use while gaming which means that it has minimal impact on users' CPU. The game's performance won't be affected in the slightest. Maybe it's time to ditch CPU hogs like Skype? Moreover, unlike apps like IRC, Discord enables different user permissions within an easy-to-use UI. TeamSpeak also supports permissions setting but it requires a package that is ridiculously complicated.

Then what is ugly about the app at current stage? First of all, no user profile. Though Discord doesn't actually require users to login before joining the chat but a user profile is really necessary for logged-in users because I do not want to encounter situation where I find myself texting the wrong Jack. Second, Discord doesn't support search function for text chat. Users have been complained about it for more than a year but it seems to be a very complex problem to fix according to their technical team.

What can be improved then? Of cause, starting from fixing the problems mentioned above. Other than that, some users asked for video chats because they want to play online card games while seeing each other's faces. Screen sharing is also quite nice to have because gamers always want to learn all the fancy moves from each other to improve their skills and screen sharing will server their need.

Sunday, August 21, 2016

A glance on Discord

To be honest I am a bid sad that Pokemon GO was not assigned to my team for Assignment 2. But considering that Discord is something closely related to a gamer like me, I am still quite happy about the topic. The following are a few things I observed when I first visited its official website and downloaded the app.

First of all, Discord has a nice cute logo which like a gamepad and a pig nose. It leaves me a good impression. Besides, its registration process seems to be simple. I did not encounter any difficulty in choosing a username. But I am not sure if  it is just by luck nobody had chosen the name or Discord allows duplicated username. I am also unsure about what will happen if there are duplicated names. I need some more testing to figure it out.

A great thing about Discord is that it provides a feedback forum on its official website. Garena should have something similar to collect complains about unstable server and suggestions on improvement of its voice chat app TalkTalk (to be fair, TalkTalk had improved remarkably in the past 4 months). This feedback forum of Discord will serve as a great source for the "What is bad / ugly about the application" and "Suggest improvements" parts of our presentation.

So far I hasn't observer the key feature that makes Discord better than other voice and text chat applications. I guess today after lecture I should play game with my friends purely to test the functions of Discord and gain some first hand user experience =)

Thursday, August 18, 2016

The origin of NUS-PARTIME

For the Facebook assignment, my team members are Yanhao, Hanming and Zhuohan. To be honest we didn't form a team of 4 Chinese students purposely. It was just so happened that 4 Pokemon fans sat together in the first lecture so why not just form a team to catch Pokemon create cool apps together?

As for the core feature of our app, we proposed around 10 ideas through brainstorming. For example, selling unused SOC printing quota to students of other faculties, taking tutorial attendance with mobile locations, IVLE chit chat group that was open to student ONLY and, of cause, dating app. But some of the ideas had no much relation to Facebook or to social networks, and some of them were not of piratical use. In the end we came up with this idea of creating a platform for NUS students, SOC students in particular, to find part time jobs / projects. It was a surprise for us when we found that there were no existing platform or attempts because we thought the need was real. We were all CS major and we understand that many CS students, including ourselves, were doing or were interested in doing part time jobs / projects as a way to enhance experience and skills as well as earning some money. 

After further analysis, we decided that the flow of the app should be as follow: Companies, or individuals such as professors, will post available jobs / projects onto the app and students will be able to indicate interests. Afterwards, companies and students will get in touch with each other and proceed the process or recruiting offline.

I personally think the app will be useful but there are issues concerns me as well. First of all, can the demand of SOC students to part time jobs be a fake demand? In other words, is it possible that most of students are just considering about finding a part time jobs but actually cannot do it due to problems such as time constraints. Second, how can we ensure that the companies that are recruiting can be trusted (for example, they will pay our students)? Actually I should worry about not being able to get enough companies on board first.

Concerns aside, I am actually quite looking forward to carrying out such idea because it may be able to serve the needs of my fellow schoolmates.

Saturday, August 6, 2016

What I hope to learn in CS3216

It is a big surprise for me get a position in CS3216. To get ready for the course, there is one key question I need to ask myself: what I hope to learn in CS3216? I can only understand my mission and responsibility in the course after this question is clarified. The following skills are what I have in my mind so far and hopefully at the end of the semester I find myself learning even more =)

Project Management

3 assignments and 1 final project all in 1 semester. It sounds a bit crazy but that is the challenge I accepted. In order to survive, I need to enhance my project management skill to improve efficiency and reduce the number of mistakes made. Correct me if I am wrong, I think project management is a mixture of planning, teamwork, communication and decision making. It required experience and knowledge to master such skill and CS3216 will be an excellent practice because I can not only manage 4 projects of my own but also observe how other teams manage theirs to double the experience learnt.

Time Management

It is known that the workload for CS3216 is very intense. If each semester can be imagined as a long and exciting game, by taking CS3216, I believe I have set the difficulty level to super hard. But the fun is maximized playing in hard mode. To handle such stress, I need to manage my time effectively to achieve maximum productivity. My plan is as follow:

1 day for CS module A
1 day for CS module B
1 day for Singapore study, physics and community service
4 days for CS module C

Hopefully this timetable functions as expected or I guess sleep will be optional.

Working with People

An interesting part of CS3216 is that students are supposed to work in dynamic teams. Working with different people with different personalities sounds challenging, but it can serve as a good demonstration of real working world where one cannot really control whom is he going to work with. I think the key is to find a common interest. For example, in CS3216 the common goal can be the success of the project. One team united with one goal is more likely to be efficient and effective. Moreover, different team members will have different strengths for me to learn. Another aspect of working with people is how to work with lecturer and TAs. I believe they have much to teach and they are more than willing to teach, but among all the students, how can I be one of those who learn most? This is another question I better figure out early this semester.

Hardcore Coding 

 As one of the coolest modules provided by School of Computing, I believe CS3216 is designed in such a way that students will improve their web development skills rapidly along the way. Hardcore coding skill is the fundamental for my future career so I am more than willing to enhance it whenever I can. So far I am more like a back-end guy, but I want to be involved in every part of the project (and I am likely to achieve it since each team is formed with only 4 people). As Steve Jobs said, "Don't settle.". I think I still have much potential.