Saturday, October 27, 2012

Website-making

I spent my morning coding but I got a bit bored today, so I decided to read up about various stuff related to website-making. I've decided that I can't really criticise people's web design properly unless I do web design myself, so yup, I had fun doing lots of coding today. (Objective-C in the morning, website-making from late afternoon to now.)

I find this link useful, although there are a lot of broken links/images. :S This is not bad as well. After reading, here are some of my opinions:

  1. Content is important. I was looking at a bunch of good webpages, and most of them structure their content for their audience very well. There were some that were quick to answer the audience ("what can you gain from us"). Some even did it in a highly camouflage-y manner (the example they gave was Twitter, which I kind of agree, because after reading the Twitter About Us page, you kind of end up thinking in your head, "yeah, Twitter seems okay to get..."). But yes, content is very important. 
  2. There's a lot of artsy stuff involved. Things like visual weight, Rule of Thirds, colour wheel, whitespaces etc., are stuff that you can learn from other fields. For example, you'll probably know Rule of Thirds if you do photography. You might know about whitespaces if you do icon designing (which I suck at.) In any case, my next artsy endeavour should be about the colour wheel! (Which I will do after the final project of course. T_T Too busy!) I'm going to have fun mixing lots of colours together!
  3. I think it's easy to make a website, because Twitter Bootstrap makes it exceedingly easy. Because of this, I like graphics-intensive websites a lot more, e.g. Komodo Media. I keep going "awww..." at this site. I'm not sure how tough it is to slice everything up (from photoshop or something) and piece everything up again in code (because I haven't done any websites that are image-intensive), but the effort would be well-worth it. Okay, if I draw better, and if I manage to get better image editing programmes (MS Paint should totally allow transparency to be saved >.>), I will try and do something more image-intensive. But failing that, simple and clean interfaces are good too!
In other news, I think I have been a bad tutor. :S I will go pay more attention to my tutees. I was thinking about it, and I have this belief - "You're a good student if you can understand what concepts your lecturer is trying to test you, and you're a good tutor if you can understand what your students are thinking." I'm not really on the same wavelength as my students, so I will buck up and try to think like them. I will talk to them more!

And enough slacking for the weekend! Tomorrow I have to rush through lots of work. T_T

Wednesday, October 24, 2012

Ninth and Tenth Week, Assignment 3 and Final Project

Ninth week's talk was on Privacy/Security + Project Management. I like the first part and I have learnt new ways of SQL injection. My favourite method of SQL injection was to drop tables, so I guess I must be quite kind-hearted. :D (Because if it works, they will know that their website is susceptible to it, and usually, people keep database dumps, so they should be able to recover data.) Okay, I'm just kidding.

There was a lot more security stuff, and it's interesting to hear about all these. The only part that was wrong was the architect/foundation analogy of incorporating the security into the design. (The architect usually plans the design, while the engineer is in charge of the foundation! So it should have been the engineer's fault and not the architect's fault, if the foundation is bad xD) If CS3216 is going to continue, I highly recommend this talk for my juniors. I also really want to kope the slides. :S

The talk about project management was enlightening also. I learnt about more jobs that were related to the IT industry. I learnt that I was a technical writer in my assignment 3! (Writing and presenting information is hard k.) I also really like the idea of lean software development. (無駄なことは要らないよ!) To be honest, I don't practice a strict agile or waterfall style; I just use my intuition mostly on what is important and what is not. 

The talk this week was a bit boring for me, because I haven't taken networks yet. (But next sem, my favourite prof. will be conducting this module! <3 hahahhaa) To be honest, even though CS3216 is for a diverse range of people, the talks are mostly about CS-stuff, which is quite boring if you don't understand it. For this talk, I do understand the fun in configuring things to allow more people to access the application, so it was okay. But for the minor details, I was a bit lost.

Also, had midterm (for complex analysis) today and SSD presentation on Monday. Died completely for midterm today (passing is a very good grade in level 4000 Maths modules, but I doubt I will pass.) SSD presentation was swell; I got along with the archi-people well. Two interesting points: 1) Our presentation flowed pretty well because we actually discussed about the flow of it specifically. We really discussed about the "architecture of our presentation", what should go first and whether it fits etc. At one part, I was a bit scared that it wouldn't flow, but my groupmate made it flow. 2) I have uncannily similar thoughts with one of my group-mates. Like, I can't help but agree with everything he says because I was just thinking of the same thing a second ago. The only difference is that he makes his points more convincing, so I should probably learn from him. ^^

I also celebrated my birthday with Kai last week. It was such a surprise that we had the same birthday. To be honest, it's quite nice to celebrate birthdays together. ^^

We didn't really do well for Assignment 3, but I didn't like some of the comments that the tutors made. The marks are okay though. I don't think the swipe thing was entirely not intuitive. Maybe it is, but it's one of the "once you get it, you get it" kind of thing, and swiping is quite an accepted gesture for mobile apps. The fact that they had to try 20 times was =.= also, because I tested it on a few devices and they all worked perfectly. Maybe it's time for them to upgrade their mobile devices. :)

The rest of the comments are okay, so no worries.

Regarding final project, Yujing and I got into a small argument (would you consider that?) with Jin Guan during the weekend. Yujing and I decided to stay overnight in the lab from Friday to Saturday to do work (I had to be in school to talk to my SSD group mates on Saturday also), but we didn't tell Jin Guan about it. But our work was mostly stuff that's not related to CS3216, (I did my SSD presentation and studied for my midterm), and we wanted a sort of girls' night thing, so we pulled another mutual female friend to study/work along with us. 

We did talk a little about CS3216 and we just decided to use Core Data (instead of just SQLite alone). When Yujing told Jin Guan the decision, Jin Guan got very upset because 1) he was unhappy that we didn't ask him to stay and 2) we did not discuss about using Core Data or SQLite with him. 

We weren't really doing CS3216-related stuff so there's no point in him staying. (Moreover, the lab is closed during the weekends.) Because of the girls' night thing, we did end up talking a lot of sensitive stuff so it would have been inconvenient for him to stay over. The reason why we did not discuss with him on whether to use Core Data or SQLite was because we did not want to stress him out further. Jin Guan is the type to get stressed out very very easily, and the more choices someone has, the more stressed out they might get, because deciding between the choices is sometimes very difficult. Also, he already has a lot to learn, given that he hasn't coded in Objective-C before. Asking him to think about Core Data vs SQLite would just stress him further.

In any case, when I asked him whether Core Data or SQLite is better, he did not really give a response on which is better. =.= To be honest, it's one of the things that should just be done instead of deciding the pros and cons of it. I can understand that Jin Guan feels left out and all, but honestly, I don't think it's that big a decision to warrant the whole group coming together to discuss. It's also one of those things that can't really be discussed because none of us have good points supporting Core Data or SQLite. I mean, if I had good points against Core Data, and if my team decided on using Core Data, I do have the rights to disagree with them, but since there's actually nothing that wrong with using Core Data, I don't see why Jin Guan was being so uncooperative.

Anyway, I got too busy (SSD and complex midterm) over the weekend to bother about the argument. In the end, we decided to use Core Data and Yujing wrote out some Core Data stuff. Jin Guan is continuing with it. I... need to hurry and do more work.

Also, one of my friends asked me about something and I'm really happy about it. Not sure if I have time to commit this semester though. ^^

Thursday, October 18, 2012

QR Code Reading - Quick Win No. 1


Oops, really bad design. Can't see anything but the QR code is scanned and displayed in the text view in the middle. I haven't tried it on my device yet (my apple developer account has just been activated!) but will try tomorrow! The reason why I have to select a picture instead is because the iOS Simulator doesn't work well with cameras.

Also, credits goes to Eldwin for providing me with links for help! I just mentioned casually to him that I was going to do something on reading QR codes, and Eldwin's like, "Oh, I did something before, do you want my code?" SO NICE! 

Going to have to go full steam ahead in the coming weekend! We're behind time because of some issues, but we'll work hard!

Sunday, October 14, 2012

Peer Review

Su Yuen sent out the peer reviews a few days ago, so I thought I'll write about it (and demonstrate how I'll read it.) It turned out to be quite funny, because I had different working styles in both of the assignments, and people dislike both of my working styles. For Assignment 1, I knew what was going on, so I didn't really ask questions or anything. For Assignment 3, I think I was a bit annoying, and Div doesn't look like he enjoys me asking him questions, so I gave up on asking Div questions. In case he's wondering why I stopped asking him questions, it's because I can tell that it's annoying him. 


The Good

- Strong coder. Quick learner. Tries hard to be useful
- Learnt new technologies really fast. Got work done. Detail oriented
- Invested time in learning a new stack, and was able to contribute to the project. Also contributed to the report-writing, which enabled others to focus on the dev a while longer
- Steady, patient, and good to have girl-talk with
- keeps everybody in check. Ensure all work is done. Very responsible
- Very dedicated, Fast in coding, Has good overall sense of the project

All the good points weren't edited out. I personally think I tried too hard to be useful in Assignment 3. The second half of point 3 feels like a euphemism for saying, "you didn't code much", but I'm happy that they think that I did something remotely useful. Point 4 is from Yujing because I am terrified of the idea of having 'girl-talk' with the rest of the people. The last point has terrible capitalisation. Umm, it feels like I'm criticising my peer reviewers (for the good points), but I'm really grateful for most of the compliments.


The Bad

- Code needs to be rewritten sometimes. Didn't contribute much to the code =(
- Improve on communication with teammates.
- I think we assumed different levels of independence in our work allocation
- Too calm??
- Don’t like others to help out, Priorities can get mixed up, Communication breaks down sometimes
- She did her allocated job really well.
Actually, I knew my code had to be rewritten. As to why someone would write code that they know would be rewritten anyway... there are various reasons. (I just didn't expect someone else to rewrite my code, to be honest.) But the bottom line is if I'm learning something new, the best way to learn it is to do it. So even if you know that it's not going to work, writing code for a new framework makes you a better coder still, since you gain familiarity with the framework. I am also equally =( about the fact that I didn't contribute to the code much. 

For the second point, I'm going to say "it takes two hands to clap." I get frustrated over this also, when I feel that people aren't communicating well with me, like they will go "Hmmm" or stay quiet. To make myself less frustrated, I end up playing a very silly game and that is to try and think of what the other person is trying to say/currently thinking of. I end up thinking, "chooooo~ chooooo~" for Jin Guan and "Baaa Baaaa~" for Div. (So if you don't want me to think weird thoughts about what you're thinking of, you better speak up. :P)

Third point is incredibly to-the-point about our problem with Assignment 3. I think for Assignment 1, I was more independent, but for Assignment 3, I was worried about implementation because it was all new to me. Any idiot can tell you of course I'm going to be more dependent for Assignment 3.

For the point about "too calm", it's because I can't panic. I "got lost" for an hour before but I was still calm throughout the entire thing. I see things drop and I'm like "oh, let it be."  I am incapable of panicking. My panic scale has only two discrete points, and that is "calm" and "full-blown panic attack". Seeing that the second is not remotely useful, I don't think being "too calm" is a problem. 

The fifth point about not liking people to help out has to be from Assignment 1. But if you're not having problems, why would you ask people to help? The only problem I had, I solved it really fast. And I do ask people for help - I asked Chun Teck about CodeIgniter, I asked Michael about node.js/BB etc. I think my priorities are correct, just whether you agree with them is another thing. I also like giving off certain impressions of myself, so whether you understand what my true priorities are, it's well, another thing. With regards to communication, as I said, the same goes for the other party. 

The last point Su Yuen edited out because it doesn't fit in. I figured that it's either that, or the person thought that I should do unallocated work well too. (Note to people who are writing peer reviews: write better please.)


Suggested Improvements

- Learn more frameworks in free time. Learn how to work with all kinds of people. Learn design work?
- I think this assignment highlighted a team dynamics problem that we had and we failed to resolve. I'm guilty of this too. We all are. I'm not sure how we could have done things differently but I know we didnt do everything right.
- Use an external, quieter keyboard while on a video conf? :)
- Suggested improvements: We need to have some sense of urgency at times!! Hahahaha
- Maybe chase the rest of us more so we can finish the work early
- Sometimes relax your hold a bit, let us do/learn some of the things. Consider your own health also

Yup, it's something that other people also ask me to do, so yes, I will go learn more frameworks. Actually, I'm getting tired of working with all kinds of people, and in my mental checklist of people to experiment working with, I have a lot of types of people checked. Besides, working with different people doesn't actually mean you'll end up learning how to work with them. With regards to design work, I'll do more design work if coders are more open-minded. Because coders are terribly powerful in this course (they decide the end-product), if they don't like something, they won't implement it. I guess I could always implement it myself, but I realised I can't think with my left and right brain at the same time. <-- Okay, I'll get better at this. (BTW, when I talk about design here, I mean less of the interface elements, and more of the general concept of the design of the application.)

The second point failed to make it to Su Yuen's initial list and I can see the problem - there's no constructive feedback. However, it's still a good point because I can see that the other party is also thinking about this problem. There are ways to resolve it, but I have a final solution that would definitely resolve it, and that is... don't work with people that you have no idea how to talk/work with. ^^ 

For the point about my noisy typing (btw, this didn't make it to the list also)... it's my birthday today; buy me a keyboard. kthxbye.

I'm not very capable of panicking and having a sense of urgency. This, I admit. But I don't hurry people because I think they are fully capable of hurrying themselves. (Can I link this to extrinsic and intrinsic motivation? If they are motivated, they will end up hurrying themselves anyway.) Also, I don't really like people to hurry me either, because it's not as if I'm the type to slack. If I'm not done with my work, maybe my work is hard and hurrying me isn't going to help. 

The last point is something along the lines of "you cannot satisfy everyone". I think it's because when people mention something, I like to direct them to appropriate places (e.g. "if you need to do this, just learn this part, don't need to learn the rest.") That is useful for people who need to do things fast. Anyway, it's not as if I can put up an embargo on learning. If I end up doing work, it might also be because I am genuinely interested/ have a good idea of how something should be done. In that case, why should I give it to someone else who might not have thought about it. (I concede that they might have other good ideas about it though.) It's terribly annoying if people give you work and you have no clue on how to do it, and when you do it, they end up lecturing you because you're not doing it based on their image of how it should be done. It also takes too much time to communicate how you want it to be done sometimes, and if you're nit-picky about it, the other person may get offended too. To conclude, if you want things done in a certain way, sometimes, it's better to do it yourself. But, I wasn't a superhero at all this time round, so it's actually not that bad. 

With regards to my own health, I don't think my Assignment 3 groupmates will write that, but interesting statistics here: I didn't really lose any weight over Assignment 1. Sleep, yes, but not weight. For Assignment 3, I lost 3 kg worrying about it, until I decided not to worry about it. 

Conclusion!

After reading the peer reviews, I don't know whether I'll change much. I can't actually make myself less independent and more dependent at the same time. People also seem to assume that I am not constantly improving myself on my communication skills, which I am, by the way. I'm not bull-headed enough to think that I don't need to change, but there's a limit on how you can change, and whether the change is logical. If I don't help people by directing them to resources, will they end up complaining that I am not a helpful person? If I don't do things that I actually have a good idea of doing, then it's likely that the product may be affected adversely also, e.g. no AI in CS3217, no actions and objects in the Facebook assignment. (Okay, not saying that my AI in CS3217 or the actions and objects were perfect.) I think I was actually really lax about both my assignments, and that it might have gone better if I had more control. But people don't like it, so I don't do it.

So at the end of the day, I'm going to defy the idea of peer reviews (i.e. to "improve" yourself), and stay myself mostly, besides the learning more frameworks and doing more design work part.

Eighth Week

This week was pretty exciting.

We started off with a talk about Facebook and the usual "iterate, iterate, iterate" stuff. To be honest, I don't believe in a completely "waterfall" or a completely "agile" development model. I believe some planning should be done (even choosing your programming stack is part of the planning), but as to how much, it's usually based on my intuition. Sometimes, you can't really plan out everything, so you know it's time to start working (and even if you are wrong, you'll probably learn something and am in a better position to work better). But there are times where you actually have a good idea of what you are building, and hence, can plan stuff. Perhaps this makes me hard to work with, because I belong in neither side of the spectrum.

The second talk was a bit mind-boggling, and after thinking for a week, I finally came to the conclusion that the video was demonstrating the popularity of Psy's Oppa Gangnam Style in America. It was not a video tutorial for Prof. Colin. :(

Tuesday was sitting down with Su Yuen and Prof. Colin. I was late so I didn't catch the first part. I think they were worried about the stuff that we promised but my work style is to write all potential features down in our proposal, regardless of whether we really want to have it built. (Our CS3217 proposal is 150% of what we actually wanted to build.) I agree with Su Yuen though - while a framework is nice, it's not exactly poster-presentation-worthy. 

In any case, our team-mates discussed, and we headed down on Saturday to see little kids, under Kai's help. I have quite a few observations of them (e.g. little kids have goldfish memories too, so you should tell them one instruction at a time). Also, parents seem quite kiasu but I can understand why they bring their kids to such places (missed opportunities + parents always want to give kids the best.) I took time to observe the teacher's games as well. In most of the games, a combination of skills is taught, and identifying them takes some skill as well. 

Also, hearing about how childhood affects your life is very interesting. I played quite a lot of games when I was small, so I'm relatively okay with learning games. (I'm terrible at Scrabble and Chess, but パズドラ is fine because I'm better at sliding puzzles.) I never had the opportunity to learn music when I was small so even as an adult, I'm still doing my best to learn it. Art too. I think as a kid, I didn't care too much about injuring myself, because as an adult, I'm quite careless. E.g. I'll walk into a table or a chair quite frequently, and there are bruises on me that I can't even explain because I walk into things naturally. 

After the observations, we sat down to scope out our ideas. We got a lot of things pat down, except for how to gamify it properly. We are undecided between two ideas. Because I suggested one of them, I'm definitely bias to one of them. Our application involves getting the parent to print and paste disguised QR codes around the house. The kid, armed with a iPad, has to find the objects that the QR code is attached to (say "table"), and scan the QR code to complete a "mission". (I'm using the word "mission" loosely here.) The objects to find is randomised each time.

The kid will learn spatial awareness (what objects are found where, which is a very core skill). I think the treasure-hunting format also teaches them to be more perceptive. Subconsciously, they will also learn words too. I think if the parents facilitate them well, I think the kids will learn how to link things up (spatial awareness of relationships.) In addition, parents can add/remove objects, so there's this time element to it. (For lack of better phrasing, the game is very "now".)

Our two ideas on gamification:
1) Children are given a list of objects to find each time. When they find it, it'll appear in their virtual house within the iPad. When they find more objects, they are given the opportunity to customise the object more (e.g. if you find a table, you'll get a table in your virtual house in the iPad. If you find the tables again, you get to make your table look nicer.) The rationale behind this is that children like to own things. I think if so, parents would be allowed to share their children's house on social networking sites as well.

2) There will be characters involved. Each time, a character will request items, e.g. a table if they need it for a party. (My sis cuts in and says, "Is it a tea party for the sprites in Harvest Moon?" xD) The child is then prompted to find the item and "share" the item by scanning in the heavily-disguised-QR-code. After finding the items, the character will thank the kid. The child can see how much he/she has helped the characters.

My idea is the second one, and to be honest, I don't like the first one because it's not particularly logical to me. To own stuff, you must not have owned it first. In a way, the kid already "owns" the table because the table is in their house. Of course, I'm not a kid so I wouldn't really know whether they like owning stuff in that manner. (Actually, if scanning the QR code of objects gets you the objects in the virtual house, why must I bother with the randomised missions? Why can't I just scan all the objects as and when I like?)

I like the second idea because it sort of helps make the QR code a bit believable. Like, the kid can be tricked to think that the QR code is a mechanism to facilitate sharing with characters from the virtual world (although no actual sharing is involved.) Of course, kids also learn to share items with people. :D But because this is my idea, I'm bias towards it. And honestly, characterisation is really appealing, if done right. (Though it's quite troublesome, because the designers will have to draw a lot, but it's terribly exciting to come up with personalities for all the characters.)

After discussing with a few people, they mentioned that both ideas are fine. At the end of the day, how we execute it is probably more important.

P.S. I was supposed to go witness video-taking today (so that I can video-tape children better for poster presentation), but "unfortunately", my family scheduled lunch together. :( Food was good~! 

Wednesday, October 10, 2012

Master Classes: Virtual Worlds & Promoting Your Game

On Saturday, Yujing and I went for two master classes which were part of the 1st Serious Gaming & Social Connect 2012 Conference. It was a good experience and I'm glad 3216 gave us the opportunity to attend such stuff (for free!!!)

 First thing first, what is a master class? From wikipedia, it says that:

master class is a class given to students of a particular discipline by an expert of that discipline—usually music, but also paintingdrama, any of the arts, or on any other occasion where skills are being developed.

I was quite surprised by the term master class since it's something that we see more often in the arts. But anyway, it just refers to development of skills for people who are already in the field, i.e. not for beginners. Unfortunately, I don't think I'm really involved in either of the two things they were covering. 

The first talk was about creating Virtual Worlds for Teaching and Training. The first part was on what has already been done, while the second was a "hands-on" session, where he showed us how to use Open Wonderland (which seems easy to use!) I really liked the first part, because through his presentation, we managed to explore what Virtual Worlds could do, that we were unable to do in the real world. I think he gave an example of a really poor school (90% in poverty) who could not afford field trips, so they ended up making an aquarium world for the children there. But what was really cool was that instead of just "walking" around the aquarium and seeing fishes through the glass (like you would in a normal aquarium), the team made it such that the children could actually turn into fishes and swim around, exploring the aquarium. You really can't get that in real life!

Another cool thing is that you can configure the settings such that the sound of a person's voice can become louder when your avatar is near a person who is currently speaking and softer when the person is far. One other cool thing is also time-skipping. They had a sort of teaching tool for architecture students, where they were supposed to build a house inside the application. If you had to build a real house, that could take days (and resources), but using the simulation, they managed to build a house in 2 hours. What was good was also the fact that the person evaluating their work could tell who built what exactly, and give marks more fairly. 

The speaker gave a lot of examples, and I think I have really learnt a lot. Of course, currently Virtual Worlds aren't very ubiquitous, but I await the day that more people will use them. ^^ (Also, they have to improve the current standards of rendering worlds, because based on your engine, your world will be rendered differently. It's kind of like how different web browsers render your website differently.)

The next talk was by a person who has been promoting games for quite a while. The first part of it was focused on the PR opportunities, and I've realised that PR is VERY different from advertising. Also, she talked about the differences in PR strategies for different sorts of games. (e.g. For core games, they may be promoted 2 years before their release dates. For Facebook games, PR has less opportunities and advertising would do more work there.) I think the most important thing in PR is to "think of what the audience wants, and give it to them". For example, to try and get the application/game to be featured in newspapers, there should be something interesting about your own application, and this can range from the actual game (game design/engine is good etc.) to people who are working on the project (who's developing the characters for the game, are there any bands featured in the game etc.) This is important to the reporter whose job is to write interesting articles. It's also incredibly useful if you also research into your target media (like which reporter is more likely to feature your type of game (FPS, children's games etc.)) so as to promote your application better and to build up a media list. 

Another important I learnt was to do exclusives. E.g. for the really popular news site/magazines etc., reserve assets for them exclusively. In addition, there are many, many ways of promoting an application. Since our final project is something related to parenting/kids, the speaker suggested for us to look towards certain magazines about parenting. Also, she suggested mom bloggers too. (Not sure how popular they are in Singapore though...)

After that, we were given a chance to attempt writing headlines, press releases and pitches. Um, I found out while I had a good idea of PR, I am rubbish at writing. So yes, PR is not my cup of tea.

But PR is actually in a way, very cool. Like, you don't have to come up with anything new, but it's just a reorganisation of whatever assets you have at hand, and putting things into perspectives. 

In any case, the two master classes were very useful! Hopefully, I get to put some of it to use in my final project perhaps. :D

Saturday, October 6, 2012

Seventh Week

In the seventh week, we talked about UI/UX and Team Dynamics. I liked Monday's talks a lot. Su Yuen's demonstration was good and effective (as opposed to all of us listening passively). Kudos to Junwei for drawing out the UI of the mobile app! 

The second talk by Vincent Woon was good also, and it talked about MBTI types, which is something that I've been interested in. 



Haha, the picture only helps if you know your own MBTI type. You can try taking the test here (it's under Jung test). Some of the other tests are quite interesting also (like the Right Brain vs. Left Brain one. Apparently, I am more right brain dominant - "Right brain dominant individuals are more visual and intuitive. They are better at summarizing multiple points, picking up on what's not said, visualizing things, and making things up. (HAHA) They can lack attention to detail, directness, organization, and the ability to explain their ideas verbally, leaving them unable to communicate effectively." Oops, does that mean I'm bad at communication >.<)

In any case, I am a INTP (lol, the owl.) To be honest, it's not wise to pay too much attention and label people by their types (it may not always be right), but every time I think I'm not like that, I go back and read my INTP profile and it turns out that I'm exactly like that. *sighs* 

I've also picked up this personality test on people's favourite colour. It is surprisingly accurate unless your favourite colour is blue or black - I think too many people like these colours, maybe because "blue" is a socially acceptable favourite colour, i.e. people won't judge you for liking blue. From the description, people who like black seem very emo but most of the people I ask aren't really like that in real life, so black might be inaccurate! 

My favourite colour is yellow! It fits me quite well. The information-gathering part is interesting, because recently, I've begin to recognise and see that people are very affected by the company they keep, so in a way, it's possible to say that sometimes, people are the product of their relationships. I don't think I can explain this part well, but something resonated in me when I thought of seeing people not as individuals alone, but with whom they are connected with too. I remember in Prolog, the lecturer asked us to see that 2 and 4 are connected by x^2. Rather than seeing 4 = f(2), where f = x^2, it's more of seeing 2 and 4 as objects and seeing that there is a relationship f between 2 and 4, and somehow, that's what I'm seeing in real life. The links don't really pertain to people alone, but also things, and somehow, I feel that seeing relationships between two objects comes very naturally to me, i.e. I link everything up. In a way, that makes it easy for me to guess things/gather information. (The fact that I keep learning how to stalk people also helps I guess.) Actually, most of the time, I don't think I consciously gather information; I just end up asking questions and somewhat remember them, so when I'm pondering over stuff, my brain recalls relevant information (because I see links everywhere), and so yeah, I end up knowing stuff most of the time. The times where I do gather information consciously, I try and gather from people who are experts in their fields - like if I want to think about Twitter, my brain tends to link certain people up with the topic "Twitter" and I end up asking these people about Twitter. With regards to information-gathering, I also tried reading minds but that didn't turn out well. Okay, I hope I didn't make my information-gathering skills sound very stalker-ish, or bad. >.<

There's also the part about "You like to think you are intelligent and well-educated, with knowledge about many topics." Actually, I tend to think that I'm a jack of all trades and that I know a lot of useless information (like how to operate a photocopying machine and do stuff like combine images.). I pretty much suck at a lot of stuff, but I really like to go and do all kinds of stuff. However, I think that prevents me from being skilled at a certain component, which is a bit sad. Even my choice of degree agrees with the fact that I'm a jack of all trades (but master of none.) I think the world generally agrees that being skilled at one thing is more important, but with Maths and Computer Science, I sometimes find links between them, and there's this synergy involved when I learn both of them. In a way, my internal compass keeps prompting me to learn/try out stuff but whether or not it's useful in life, I won't really know until much later. (Haha, maybe I'll end up working in a Spanish/Japanese firm. You never know!)

In any case, the colour personality test is pretty accurate. Colin's favourite colour is orange! It fits him quite well too! But with the MBTI, take the results with a pinch of salt. 

We also had to write for our two case studies this week. I ended up reading a few other people's case study and there are a lot of differences between theirs and mine. I find Junwei's post about UI/UX pretty decent and well-covered! Kai's post about the usage of colours is also good. To be honest, sometimes UI designing is very common sense, so it's hard to explain because you won't really know what to explain. I'm not particularly good at UI/UX, because for some particular reason, no one really hands me the UI/UX parts to do (I end up doing logic most of the time). As it is also, I sometimes hand people the UI/UX parts to do (lack of time for me to code, or just work allocation in general). For the latter, it's interesting to see how people translate what you plan (UI-wise) into something better, or something worse, so I can't really tell whether I'm terrible at UI/UX. Mmm. To be honest, I find UX a bit iffy, in the sense that I feel that some good UX designs are just trends, and maybe after a few years, things will change, and those good UX designs might fade out. But being a UX expert probably means you keep up with the trends too. :) 

For the second case study, I was kind of shocked at the lack of panicking in the question that asked you, "what will you do if you were Jeremy". I like Div's answer because it sounds terribly in character (as opposed to out of character.) Might actually be something that I do (the alcohol bit, the doll bit is a bit hard and if I wanted to 打小人, I'd rather do that in Hong Kong), but alcohol is expensive. :(

I disagree with quite a few of the answers for the second case study though. To be honest, I didn't feel that the group wasn't very committed. They really did a lot of work throughout the entire project! It's just that they were busy with their finals, and could not spare the time to help debug the work at the end. Commitment is not just about the people who spend time on the project when it is critical, but it's also about the people who spend a lot of time throughout the entire project. 

I think the second case study was quite well-chosen, especially when we've just formed groups for the final project. It really cautions us to be aware of potential pitfalls. In addition, I feel that the group wasn't terribly dysfunctional (i.e. people who hate each other etc.), so it's hard to gauge the exact reasons why they failed. Moreover, who could know that being agreeable could lead to so many problems? In all, it was quite an interesting case study to teach us about team dynamics.

To end off, here's a youtube video of a song (Korean) that I've been listening to.



(To be honest, I first heard a live version of this song, and I was absolutely stunned by the continuous-singing-without-much-breaks component of the song. I guess I just like songs that keep running and moving.)

Wednesday, October 3, 2012

Case Studies

To everyone, good job for surviving half the course! Now to survive (and have fun) for the rest of the course! In addition, Happy Children's Day, Happy Midautumn Festival, and as my professor puts it, Happy Midterm Festival! (>.<)

Meanwhile, for the case studies...


UI/UX


I think the new UI looks much better than the old one, where everything was quite confusing (too many choices, confusing colour scheme etc.) However, I felt very unnerved by the slanted header in the old UI - 


Did anyone else feel the need to turn your head to read the words too, or is it just me? They did refine it in the new UI, so that's okay. I like the idea of using images to represent the header, but I'm okay with the new UI not having it, because these images seem to end up capturing the audience's attention in the old UI, which should not be the case (because the content in the main box below is more important.)

I also liked the incentives drawings, because once people get used to it, they'll recognise the images faster than they can read the words, so with one look, they can see who "kissed" who :p



However, I feel that the images don't seem to have a consistent style of drawing, but I think that's me being nitpicky. On one hand, you have basic smiley faces, and on the other, you have cartoon people (the big hug) and the kiss looks really uncartoon-y. (Not sure if you get what I'm trying to say. >.<) I think it was just mildly disconcerting. But I find the images to be quite appropriately chosen (one look at it and you should be able to tell what it's supposed to be, so that's a plus point.) 

Besides what Su Yuen said about converting websites into mobile apps, here are my additional opinions for Get Help.




I'm in mixed opinions about the number of images used, since for each feed, we have three images - the incentive, the smiley, and the speech bubble, and that could end up looking very cluttered if the application was turned into a mobile application. If the images are long, users may end up spending a lot of time scrolling down the feeds list, which is not good for their wrists. xD The images definitely need to be resized to fit the space constraints of mobile devices, and personally, I think the speech bubble or smiley aren't that important (since I think what they need help with + the incentive is more important) and hence, the speech bubble and smiley can either be removed or resized for the mobile app. 




The clickable area for the header for the mobile application definitely can't be just the text alone as people can't usually click well on text on a mobile device. (Either the text is too small to click on, as compared to a button, or mobile doesn't work with cursor changes, so users don't really feel that the link is clickable.) I think that they can always change the header to a navigation bar (see jQuery Mobile) or tabs (Twitter Bootstrap). (Tabs-wise, I think we also have to consider whether to load everything at one shot or if the network is slow, to just load tab by tab when clicked.)

Contents-wise, I think it's okay to include all the stuff within the new UI, in the mobile application. It is five pages only and judging by the header, all of them (i.e. Home, My needs, My rewards, Bugs/Suggestions) are important. (I'm going to guess the last one can serve as a "contact us" sort of page.) 

With regards to the giving help by comments/sending messages, I think it's good to do that at the start to make the application more viral, but I think one worry is that the application might turn into a spam type of app. But I'm also unsure of how to market it properly such that people will keep using it for long-term purposes. >.<


Team Dynamics



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?

I think while ideas are important, it seems that execution is more important, at least in the current trend. Even a very simple idea, when executed well, would make people want to use the application, and if lots of people use your application, no one can say that your application is not successful.

I concur with Lanh - For every project that I do, I find that I always visualise how the application would be like when it's completed. In that sense, if I cannot have a good idea of how the application is like, I would find it very hard to work on it. But rather than just leaving the group, I think perhaps Lanh could have talked more with the rest of the group on whether they could execute the idea well. If the rest of the group cannot convince him, then I find that maybe Lanh will actually end up convincing them to change the idea instead (which they ended up doing in the end anyway.)

2. What have you learnt about Facebook so far?

Facebook is annoying. Seriously. After making my Facebook application, I realised that I actually spend a lot of time on Facebook, but I have no idea why. >.< It takes up too much of my time, and is not useful at all. Umm, unless you're sharing things. 

In more serious matters, Facebook keeps changing. An application done five years ago (look at the first case study) will not necessarily work now, due to the changing API. But there are fun stuff to do (I really like the actions & objects thing). But Facebook is done in a very agile manner, so permission controls were not really built in properly, so it creates problems, like in FQL, you don't really get the full list of 5000/4999 rows even if you specify LIMIT 5000. Relying on Facebook also makes it hard to work sometimes, since we can end up encountering problems like timeout due to the somewhat slow speed of connecting using Facebook API. Facebook JS API also has a problem because sometimes the script file may not be loaded, but I encountered this problem less during the course and more during my internship.

Facebook can be very intrusive also, e.g. when the CS3216 team stalks our Facebook. (Not as well as this guy though, complete with ninjas! To be honest, I was more amused that he spoke French (I heard oui and bien~) and English, but I'm sidetracking.) It's useful in some cases, but people should be more careful. *nods sagely*

3. Comment on the ideas for Another Life and Fan Gang.

I think Another Life had the potential to be interesting if it was executed well. Unfortunately, I felt that the idea was too big - it could have been scoped down a lot, e.g. for the sake of fulfilling the requirements, only one or two storylines need to be published. I think the goal of the game was quite unclear - do the people play because they want to achieve certain achievements, unlock new areas? Even if they fulfill the storylines, is there a reward? I realise there has to be a tangible reward for the users at the end for game applications, and it seems like there wasn't one for Another Life.

For Fan Gang, I don't find the idea to be good because as Colin puts it, Facebook already has a fan page, and I know that people use it, even for amateur musicians. It could be viral, but that would depend a lot on the execution, and as it seems, the group does not really seem ready and prepared to do the execution. 


4. Should the team have changed their idea for the Final Project mid-way or stuck to their original idea? Why, or why not?

The idea for Another Life was not feasible - it was obvious that they were not going to finish coding the project. In that case, a switch may have been the best solution. But I feel that they could have considered throwing out features in Another Life first, before switching over. 

Moreover, I felt that they were not ready to switch over to Fan Gang, as seen by the technical problems they had faced when implementing Fan Gang (e.g. the Log/Feed component causing bugs in other components). 

I think ultimately, the group has to look at the new idea and check whether it is feasible and do a comparison between the current idea. In addition, if Fan Gang and Another Life were both not feasible, it's always possible to do another application that's easy, compact, quite bimbo-tic, but executed really well. (Because Facebook users are quite bimbo-tic apparently, I quote Su Yuen on this.)


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

One of the more obvious problems was technical abilities. It's easy to see that the coders had a lot of problems implementing all the application ideas (Fan Gang had problems, and they were unable to do up Another Life properly.) The solution would be to consult other people for technical advice. 

Another problem was not communicating with each other when they felt that something was wrong. While Jeremy was confident about Another Life, we could see that Serene was quietly frustrated with the meetings and Arun felt that the team was too accommodating.These problems should have been voiced, and I felt that Another Life would have been scoped better if they had done so.

A not-so-obvious problem would be the increasing unhappy emotions in the group. It probably started when Lanh left, but continued worsening throughout the entire project. The team had to make many changes to their project, and as such, I felt that they were quite tired of the entire project, perhaps even fed up. A lot of time was also wasted on their first few ideas, and this could have caused them to feel very anxious. The group also failed to make most of their milestones and as such, their morale would have been quite low during the end of the semester. All these bad emotions would have made it very hard for them to continue coding and finishing the project.


6. What did the team do right/well?

The team did well in planning the application. In Another Life, they made modules designs, prototypes, wireframes etc. They also did well in reconsidering their application, and taking decisive actions if things could not be accomplished (like dropping Simple Life when the companies could not get back to them).  Also, they worked right from the start, which is VERY important. 

I think another important point was that they actually communicated their ideas about the application (e.g. in Another Life, they brought up issues like viralising the application), but I think it was a pity that Arun only mentioned his Fan Gang idea pretty late in the semester.


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)?


Panic. 

After the initial panic (and when you have calmed down enough), try and figure out what's important and what's not, and finish the important parts. In this case, I'm not sure I can empathise much because I'm a coder. I think the least that Jeremy could do would be to document the problems well, so that if the two coders have free time the next day, they can debug faster. 

Jeremy could consult his room-mate (desperate times call for desperate measures), but I think one important thing to note is that adding a programmer into the project is not always beneficial to the project, because the person will take time to learn (yes, I lifted this from our CS3217 text). But if his room-mate is busy studying for his/her finals, then yeah, that's not very useful also. But I think the big question would be, if you had such a big asset (experienced person in programming Facebook applications and using Code Igniter), why did you not ask him earlier for help? I think it may have actually been good if the coders (Arun + Kien) could have consulted the room-mate for help regarding the architecture of the system perhaps. (And if you have a good architecture, most of the time, coding would be smooth-sailing.)


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 am going to quote Prof Ben here and say "it depends". It depends on:
  • The team member (if you're close to the team member and you know that he/she is not the type to shirk responsibility, then there's no need to scold the person, because he/she may be blaming themselves for it already)
  • Work style (some people may be slow to start their work, but can finish their work fast (so maybe there's no need to really hurry the person, because you know the person can deliver in the end))
  • The personal problems involved (some personal problems can really stagger people down, and what is not important to one person may be very important to another; in this case, you really have to step into the person's shoes to evaluate the seriousness of the problems)
  • The work involved (some work is not meant to be finished that quickly - you really need to evaluate whether that team member has been given too much work that is too complicated), and 
  • How much the person has failed to deliver (is it successive times, or just one time?)
After processing through that, there are various things you can do. The first obvious one would be to scold the person (*ahem* think CVWO). The second would be to remind the team member gently (especially if it's a first-time offence.) Another method could be to sit down with the person and do pair programming - sometimes it's easier to solve a problem if two eyeballs are around, or offer the person help in coding some components of his/her work.

To be honest, I don't think anyone likes to fail in delivering. In some sense, there's always a root cause in preventing them from being productive. In such a situation, your best hope may be to pray that your team member will sort through his personal problems. You can also try to help out (with the problems, or with his/her part of the project).  As a side note, If you're not good friends with the person, it's hard to help your team-mate with their personal problems, but I feel that encouraging the person when he/she is going through a difficult time is also important. 


9. What, in your opinion, are the key learning points from this case study?

Team dynamics! 

I think as you read the case study, you don't really have this feeling that it's going to turn out that bad. (Oops, Div's style is rubbing off me.) But everything feels like a logical progression, and then oops, we're-going-to-die-for-final-project-because-we-have-nothing-to-show. I don't think at any point in time (except when they were doing Fan Gang), the team felt that they would end up in that situation, which makes it even worse when they reached it in the end. I think we always have to be concerned about whether we can reach our goal. If not, maybe we need help, e.g. expertise from other people or need to put in extra time or cut out features.

It's probably important to voice out any slight unhappiness that you have also. In the case study, Serene was being quietly frustrated that the meetings were unproductive. I think Jeremy probably did not notice it, so Serene should have mentioned it. In any case, any slight unhappiness that a team member bottles up is only going to make the team member more and more unhappy, leading to the team member being less and less motivated to finish up work.

To be honest, there are some parts of the case study that I can relate to - we changed our idea and rewrote our entire CS2103 game after V0.1. I am also guilty for saying that Serene shouldn't have bottled up her unhappiness, since I did do so for projects, such as CS5237 and probably some parts of Assignment 3. Fortunately, I never had any single project that made me undergo the same experience, so in a way, I realised that my team-mates so far have been quite good. *

I think being friends is important in a team. Because if you are friends, it's easier to speak up and be honest about certain stuff. Jin Guan felt that the our final project was missing something, and I gchatted with him about it. (More like thrash things out actually.) In the end, we came up with an idea that we discussed with the group, and they seemed quite accepting towards the idea. I think sometimes, during group meetings, it can get quite intimidating to speak up, but if you have friends in the group, you can always gchat one of them to discuss about the idea and then if it sounds good, it's possible to bring it up during the meeting. 

It's also much easier to scold people if they're friends. When I mean scold, I don't mean a full blown-out scolding, but in the usual twins-style, "What is this Baa Baa Black Sheep doing??" It tends to be more lighthearted, but progressive for the project. The bottling up doesn't occur, so bad emotions don't accumulate. 

So yes, the important points are team dynamics - being able to discuss and thrash things out rather than keeping quiet. Also, there's a need to keep your project in focus (why would people use this app?) and be aware of whether we can actually finish the project. Execution also matters.

* Perhaps with the exception of CVWO. That was a totally different experience since I really felt like dying then. (Gastric pain is VERY painful)