Sunday, November 28, 2010

Life goes on

Few days ago I intended to write a very long blog post about this semester. I wanted to write how hard it was to keep balance and mood during busy time (kinda impossible), what we should look for when selecting teammates (passionate & devotion), that you're not gonna get anything done (well) when you're in bad mood, or that I learned to be a little more caring toward my family (& show them my love toward them), et cetera. I also wanted to review the modules I took. I even got pretty excited when organizing my thoughts. But suddenly, the next morning, all my thought were gone. And I got disinterested too.

Or perhaps that's one thing I learned more? For *that* I mean moving on. I just felt that everything was up. No, more accurately, I didn't feel anything (about the past). I just felt free again. And I was ready for the next thing to come. Like a RAM of a computer, when you restarted the computer, it lost all the data and was kind of anew again. Might not be totally new, but I'm sure emotions were the first to be erased. Now thinking about it, did you ever dream, when you were sad or experienced negative feelings, that the next day you'll be happy again? Yes! Isn't it awesome. But when it comes to positive feelings, it's kind of sad. Whatever it is, you gotta move on.

Yay I'm ready to move on. Thing's getting pretty exciting. Life's promising more and more adventures. And adventures are all what I'm up to for now.

Friday, October 22, 2010

It's been 1 lucky year...

... I've learned quite a lot of things.

And a wild year is waiting for me.


For now, happy birthday to me = )

Tuesday, October 5, 2010

The Dining Philosophers Problem

Last Monday we discussed about a solution for the dining philosophers problem in CS2106 Operating System tutorial. I think it represents some elements of the world, its unfairness and dynamic, so I'd record some of my thoughts down here.
The dining philosophers problem is summarized as five philosophers sitting at a table doing one of two things: eating or thinking. While eating, they are not thinking, and while thinking, they are not eating. The five philosophers sit at a circular table with a large bowl of spaghetti in the center. A fork is placed in between each pair of adjacent philosophers, and as such, each philosopher has one fork to his left and one fork to his right. As spaghetti is difficult to serve and eat with a single fork, it is assumed that a philosopher must eat with two forks. Each philosopher can only use the forks on his immediate left and immediate right.
- from http://en.wikipedia.org/wiki/Dining_philosophers_problem

The problem is that, if the each philosopher hold the fork in his left and wait for the fork in his right, no one can proceed. It's called deadlock

So we discussed a solution that allows them to forcefully take a fork from others' hand. There will be 2 kind of philosophers: Senior Philosopher and Junior Philosopher. The senior ones can take fork from the Junior ones (0 < number of senior philosophers < 5). It solves the problem of deadlock because there won't be circular waiting situation, which is one of the conditions for deadlock to happen. However, it introduces another problem: a junior can easily be starved if the senior next to him keep stealing his fork!

How to solve the problem of unfairness? Dynamic priority! The title is not fixed, a senior philosopher that eats too much (compared to thinking) will be demoted to junior, and vice verse.

Actually it makes sense. A senior philosopher is supposed to be a wise thinker. When he eats too much, he will become dumb and should be demoted to junior, while a philosopher concentrates on thinking should get wiser and becomes a senior. (The whole class laughed when I said these sentence =P)


 Now let's see how different kind of philosophers will react to possible situations:


- The wise (senior) philosopher: he realizes that it's thinking that defines him (I think, therefore I am). If he ceases to think, he cease to be a philosopher. So he shouldn't focus on eating, even though he gets the power to do so.

- The potential (junior) philosopher: though currently the situation doesn't favor him, he knows that doing what it defines him (thinking) will eventually make him a senior, and grant him the privileges he doesn't have. So he would focus on thinking instead of eating. Things might change when he actually becomes a senior: he might be wise, might be greedy, or even become an evil one.


- The greedy (senior) philosopher: he would spend a lot of time on accumulating power and become a senior. However, at that moment he got seduced by the power itself, and try to exploit that power. He would try to eat as much as possible. Eventually it will lead to his downfall.

- The stupid (junior) philosopher: he's constantly in the verge of losing what he has, so he'd try to eat whenever he can. He'd always be desperate like that.

- The pessimistic (junior) philosopher: he's constantly left hungry, so he loses hope about life. Eventually he's starved.


- The evil desperate (senior) philosopher: he's an intelligent one. However, he wants to protect his power so much. He realizes that he can keep it by either eating very little, or feed his juniors one, so that they don't realize the need of thinking and won't become wiser. He would try to balance the two things: eat, but would also not left his junior starved. Life won't be much enjoyable because he always live worrying and planning and scheming.

- The evil ambitious (junior) philosopher: he's smart one. He knows that he can become senior by either focus on thinking, or feed his senior so much that he degrades himself to junior (relatively, he'd become a senior). So he'd restrain from eating, and seduce his senior to eat more. Of course he'd think too, but he'd also try to eat as much as possible. He's dangerous.


That's all I can think of for now. Life's much more complicated than that.

Saturday, September 25, 2010

One day of a programmer

Last Friday I spent most of the time writing an application for Android. In short I was to write an application for Android and Foursquare (a location-based social network), for an assignment of CS3246 - Hypermedia and WWW. I feel obliged to record the experience.



I started with  trying an OAuth library for Java called Scribe to connect to Foursquare API. It was recommended by Foursquare that we use it instead of the Basic Authentication method, which just pushes the username and password to through http. The author offered a sample on how to work with it & Foursquare. The first step would be trying to deploy the sample on my computer. I copied the sample code, added the .jar library file to the project's BuildPath. No compile error. Good. Run. Boomz, I got ClassNotFoundException (or something like that). Admittedly, I didn't use external library (.jar file) before, so I wasn't sure if I did everything correctly. So I went to Google and researched on it. "So the BuildPath and the ClassPath during running time is different. I didn't know that," I thought in relief. However, it turned out that I've done the thing correctly; the library was in ClassPath already! Why did I still get error? I searched and searched again for more similar case. Spent quite some amount of time on searching, yet I couldn't understand why some class definition wasn't found. "I've included the library already!" I kind of screamed in my mind. I would then thought the problem was from the sample source code? So I searched about it on Google, but found little to nothing. After fruitlessly searched for solution, I came back to the project's page on GITHUB, found a link called Getting Started. I missed it before because the content looked mostly the same as the sample file, just broke into steps with instructions. "Ahhh, I need to download another library necessary for it!" (I wished it was Complile Time Error..) Thankfully, it solved the problem. Now I could authenticate and draw some personal information of the user from Foursquare.

However, as I'm developing a phone app, the authentication is supposed to be x_auth, which is a little different. Ehh, I'm not familiar with OAuth, and / or x_auth! I tried to imitate the code from the sample, and tried to find if there is any specific method for x_auth. There was one in the library for Ruby, so I expected similar thing in this Java library. But the library didn't have any documentation! I could guess little to nothing from the functions' signature, especially when all the parameter types were obscure. (Now I think it just doesn't support x_auth, which explains why there is no example using x_auth..).

Thinking that I advance any further with OAuth right then, I decided that I should familiarize myself with the Foursquare Java library first. I turned out to be a greater pain! The whole thing was a big mess. I didn't even know where to start. I guessed the first thing would be creating this Foursquare class. But the constructor takes in some random parameters that I had no clue about. So I dug a little further into these parameters. Ultimately, the parameters' type were String... What value am I supposed to pass in? I tried my luck by passing some value that I thought reasonable, but it wouldn't work. Now I appreciated the need of documentation. I hopelessly spent quite some time playing around with the library, only to gave up later.

I took a break and did a little research on Foursquare API, hope to get some small tutorial or sample application. It crossed my eyes from some article that the Foursquare application for Android itself is an open source application. "Why don't I read its code and see how it uses the library?" I went to its Google Code site, downloaded the application and tried to hack the code. I admit that it is a huge program, with lots of classes and libraries.

First step would be successfully logging in to Foursquare and extracting some information from the site. I proceeded to read its main program imitate the steps needed to do these things. I would go back and forth between the main program and the library, trying to decode what was happening, and what were the meanings of the classes, of parameters and stuff. I must say it was no where near comfortability.  Mostly because of the overwhelming amount of new information needed to process at a time. (Fun Fact: the first thing I noticed was that, Foursquare used Basic Authentication itself. So why did I try so hard to use OAuth? Sad.)

It would be easier if everything was simple and clear, however, sometimes things could be very misleading. Say, there was a version string should be passed into the constructor. I thought (when I tried to play with the library myself) it would be the version of the app, or version of the API, and might have the format of "1.0", or "1". Turned out it was Android package version, or something like that. The worser part is that, it had a very weird structure. I'd be genius if I knew I needed to part something like this: PACKAGE_NAME + ":" + String.valueOf(pi.versionCode);

Now I deeply appreciated the need of documenting the code. Guys, let's comment and document our code nicely, so that the next guy who uses it won't suffer so badly. Or at least he won't swear WT* every 5 minutes.

I kind of gave up with it already. Suddenly I saw a file named FoursquareAPI.zip on my Desktop. Uhm it was the Java API file provided by the teach staff. I thought it was the same as the thing I downloaded from the Foursquare official source, so I never touched it. Thankfully I tried it. To my delight, there was an API introduction file in the zip file. I opened it and found a sweet sort sample program using Foursquare API. Thanks god (& my lecturer), I'm saved. It turned out that the API provided wasn't the same as the Java API provided by Foursquare. However, it was much simpler and easier to use. It could be found here http://code.google.com/p/foursquare4j/. It doesn't always happen that the official thing is the best thing.

I quickly followed the sample program provided and deployed it to my Android application. Within 15 minutes I was able to login, print out the tagged venues around the user's location. I forgot to include the INTERNET permission so it didn't run the first time, but after few minutes I figured out and it worked seamlessly. Finally got something work. Compared to all the frustration & tiredness I faced before, it felt so good. Felt so delighted.

"Let's try to mark these location on the Google map," I continued. I've created a simple app to display and tag location in the map before, so this part is supposed to be easy and quick. I opened that app, copied the code that (I thought) necessary to my app, modified the code a little so that it would display venues extracted from Foursquare. And Ctrl + F11. Boomz. The app crashed. OnClassDefFoundException again! Ok sweet, maybe I haven't included some library? The problem wasn't the same because both of the map code & the piece of code using Foursquare API worked independently. I checked the RunConfiguration, but seemed that Eclipse itself got some problems, which added a little to the frustration I've got. I checked over and over again, but it wouldn't work. Started the debugger, added some breakpoint. It didn't even stopped at the first line of the main program! What I only found was some bizarre exceptions. Android couldn't find the definition of the main class itself. It crashed even before my program started running! What happened? I didn't know. It compiled! At least the class definition should be there!

I started to search for the problems on Google, based on the name of the Exception I found. I went through lots of forums, but still couldn't find anything work. They said check for classname, but apparently mine was correct. They said made sure the AndroidManifest.XML was correct. Good, I found that I hadn't stated that I used the Google map library in the XML; I thought adding it to build path & stuff is enough. However, it didn't solve the problem totally. I would open both the current one and the one from my sample Google Map app, compared line by line. No problem. It was even more frustrated than before. I thought the problem might be from the layout XML for Google map, because there was a warning that the tag "code.google.maps.MapView" is not defined. I hopelessly searched for solution in Google for some more. Still, couldn't find anything helpful. I did a lot of search, with lots of keywords, but none of the solution was applicable to my case. I tried to run the debugger millions time, but nothing happened, it just crashed right at the beginning. Somehow now it managed to reach the first line, but same thing happened afterward. Why : ( I dug deep into the stack track but also found nothing helpful.

Suddenly, in a flash light, I saw the first line of my code was "setContentView.." not "super(...)" (calling the super class to initialize itself). Hmm, I didn't expect it to made the whole thing fail; I didn't even see the foursquare app call super class' constructor. Still, I gave it a try and moved the call to super class' constructor on top. Magically it worked. (Now logically I think it happened (or crashed) like following: setContentView used some class that would supposed to be create by the super class' constructor, but the constructor hasn't called, so obviously setContentView can't find the class and crashed). Anyway, it worked, and the whole thing worked. Now I saw the map, with markers over the venues nearby user's location. Feeling relieved, but drained, I closed Eclipse and called it a day.




To summarize:

- Documentation & comments (of our code) are very important!
- Incremental testing is useful too! Code a little, test a little, then code a little more, test a little more. Restrain the desire to code the whole thing and debug all at one! It will go BOOMZ!
- Debugging is frustrating. It drains energy quickly.
- Google doesn't really helpful for debugging. Sometimes (most of the time) starring at the code, analyzing the errors and trying to figure out what went wrong is more helpful than go straight to Google and search for solution.
- I suddenly realized similar stories happened during CS3216 before: I wasted a lot of time on Google, but turned out I should just sit down, read my code, read the instruction carefully, and I would be able figure out what went wrong faster.
- I guess it is hard to avoid especially when we learn a new, complicated thing. We are clueless and wanted to search for light from people out there. However, it seemed that there were matches & wood just nearby, we should make use of them instead of searching for the light from faraway. After all, the people who wrote the instructions should provide enough information & correct steps to make the things work. We might just missed a small point, or introduced bugs in our own code.
- Still, I am awed by how dependent I am on Google now.

Tuesday, September 21, 2010

Victor

Suddenly I have this idea of blogging about the people around me. I don't know yet who I will write about, what I will write about them. However, I've got in my mind a handful of people, and most of the stuff will just be my random thoughts. This time it will be about Victor, one of the teammates in my ACM team.

Victor is a Singaporean. 2 years older than me. He is a math student. His favorite sentence is "It's crap only". Whenever I ask him what he is doing, he'd say, "nothing, it's crap only". "What is this module XXXX?" "Nothing. It's very boring. Crap only." He hates Java so much that every time we need Java (for BigInteger), he would murmurs "I hate Java" the start to the very end.

There is nothing special to say about his looking: a small guy, looking OK handsome. Not that kind of handsome that all girls will fall in love in the first sight, but I wouldn't say he looks bad in any way. He's the kind and trustworthy guy, would follow rules, instructions, etc. very carefully and dutifully. He's the kind of guy who can listen to people. In my team, while I can go crazy & childlike playful sometimes, Adhiraj might go detached and stubborn, he's clearly the one that do things the most careful and reliable.

That bring me to the next point. Though he is the math major, in a team of 2 IOI medalists, he is actually the main coder of the team. Many times I will find solutions for problems, explain to him, then he will handle the  coding part. It works quite well for us because, while I'm generally better at solving (hard) problems, he produces more reliable code. The funny part is that though he's a math major, I'm the one that usually solve math problems. I usually joke him, "man, you sucks at math."

I actually asked him several times why he doesn't major in CS. It makes sense when he always take few CS modules every semester, has scored well, tutored several CS modules. He has joined ACM the third year and he is very passionate about it. In fact, he is the most passionate about ACM in our team. He has given up his SEP to Canada to take the chance of joining ACM with us this year. His answer was that he didn't want to do the boring software engineering stuff a whole life.

Still, he has done quite a lot of programming. He has solved over 1000 problems in UVA live archive, a website that allows users to submit solutions to its huge problem banks. I must say he's very diligent. For now he is trying to solve past ACM regional contests to prepare for our competition.

This semester, I randomly met with some of his other friends -- friends outside the ACM circle. And I realized that despite what I thought, I knew very little about him (outside ACM). For example, I didn't know that he went jogging everyday (i guess it might be inspired by a book I sent him =P), has joined RUNNUS for 1 event at least (Well, I didn't expect him to join any CCA). I also didn't know much about his friends, and other stuff. I guess I still have some time to learn more about him.

I've ran out of thoughts already. Anyway, I'd say so far I've quite enjoyed being his companion.

Thursday, September 9, 2010

There's tomorrow.

In Prisoners' Dilemma, the expected outcome is that the prisoners will betray each other, leading to the result that both get the worst possible outcome (10 years sentence), while they treat nicely to each other, they both would have got a much better outcome (6 months). There is one way to alter the result of the game: repeating it infinite times. The reason is, in short, if one betray the other this time, the other will sure betray him next time, and both will get the wost case that both don't want. Expected that the other wouldn't betray him, he wouldn't betray either. If there is tomorrow, they should care about it, and they should better be nice to each other today.

One key thing that keep me optimistic is that I believe there is tomorrow. I thought about death (not suicide, but rather how it will be when I die) many times, but I know I wouldn't die very soon. Even when I faced the worst failure, even when I was all alone, when it was nothing but stress, when I thought it was the end of this world, tomorrow will still come. And I will still (likely) to be alive. Think, I still have the major, significant part of life ahead. Many things will come. Studying, Working, Friends, Family, Life. I couldn't be down forever; I should better live well today, so that I won't have to regret tomorrow. I should be nice to others (treat them honestly and nicely), be nice to myself (build up my strength and competence). Besides, it's then surprisingly easy to give up failures and move on. It's kind of a self-reconciliation system.(It saved me 2 years ago).

The more I go, the more I appreciate that future is more unexpected than I ever thought. Nothing stays the same for very long time. Hopes come and go. Chances come and go. And love might be too. Future provides a lot of hope and unexpected. Thus I stay optimistic. Moreover, I can't really chase after things that doesn't belong to me. Pretend to be something / someone else to grab a chance? It usually backfires myself (pride, confidence). Future might give a better, more suitable chance to me. I should better be myself. Does that mean I would never stop but continually expect something better would come? No. If it's something I really want, something I find myself suitable for, something doesn't require me to pretend (even though it might require me to pay in other ways), I would grab it. (There can be a whole heated debate on when's really the right time; honestly I don't know. Life's complicated. As long as I don't regret, I will do it).

What if at the end I will still be nothing, having no love and / or whatsoever? What if my life sucks? And I'm just an optimistic fool? It means I suck. But so far I think I'm not too bad. Let's just work with my all and wait for the future to come.

Monday, August 16, 2010

New semester starts!

Apart from just some few negative experience I wrote in the last post, I am still a cheerful and happy person.

Last month I really talked with lots of people. I hung out with lots of friends, and almost never eat alone. I just want to share some time with people. I am happy about it at 2 points: I feel comfortable and nature talking with people, and I feel they also comfortable / fun talking with me. Though clearly I need to improve my speaking skills a lot, at least now I have totally overcome the initial fear of starting a conversation, speaking to public and the like. Talking with people becomes so nature to me (though the more I talk, the more I face my speaking weakness. Sometimes I felt very bad about it. Only if I was so influent in English, sigh~~). Suddenly some of my friends started to ask things like: "why do you know so many people?" Ha ha. It's like some friends asked me "why do you always smile?"

I went out to explore Singapore and NUS a few times with a friend. They were quite fun and memorable experiences. [Don't want to go into detail but this paragraph is here because it's important].

I also took the chance that school hadn't started to learn swimming. Initially I went swimming alone. I didn't know how to swim so I tried to teach myself in the smaller pool. Looking back it was a long path. (OK I might not be a fast learner here but I'm sure I was a diligent one). I managed to swim across the pool in the week before the term started. Some of my closer friends also came back to Singapore so I asked them to go with me. It was really a good decision to invite them to go along. I learned a couple of things about swimming, and had some good times. Funnily, when I started to share about swimming, many friends showed interest in going swimming with me (well, 5 at least). Some went there the first time because of that. Guess sometimes people need reason / companion to start this kind of thing. It's good that sometimes I can start doing something new out of interest without feeling fear of others' judgments or views. I would love to write more about my swimming experience. However, to sum up in 1 sentence, I think learning anything is quite similar to each other: controlling fear and reluctant -> work hard -> when you reach your limit, you will feel want to give up, but hold on a little longer, you will be able to extend your limit. (The only bad thing about swimming is that I can't wear my glasses, and without them I can see up to nothing..)

I have a good feeling that this semester I will learn a lot of new things. I got that feeling right from the first lecture of CS2106 -- Introduction to Operating System. I felt that this semester would entice my interest for Computer Science again. It totally changed my module plan. I was stuck with the module plan I set up in the summer, because I couldn't secure some modules as planned. It was quite a safe plan, allow me to have free time to do extra stuff. Felt terrible when I need to change the plan. (Sometimes my mind wasn't very flexible). However, I changed my perspective after the Cs2106 lecture, and bid for several modules I didn't planned for before, but thought that they might be interesting, like CS3243 - AI, or CS3246 - Hypermedia & WWW. Now as I appealed successfully for CS3429 - Element of UI design, I might have to drop 1 of the 2. Today I feel even more assured that this semester will do something good to my interest.

Along from that, Tembusu College has started having activities. Friends here are quite easy going and open. We are to create a big new thing; I'm excited.

I might join NES / S@S too. Is it too much of work? Oh wait, 1101S tutoring is hellalot of work but the more work I have, the better I will be at managing time, hopefully.

One more thing, last week I jumped into a book about Buddhism, "Ego, Attachment and Liberation" so I grabbed it and read a couple of things about Buddhism. Interestingly, many things I thought about were quite similar to ideas in Buddhism. For example, attachments vs baggages. Certainly they aren't something healthy for our mind. Ego is a big problem too. The definition of ego in Buddhism is larger than my awareness of it though. Still, to be happy it's important to throw away both ego and attachment. I agree that we need to throw away expectation, throw away ourselves. Honestly, I thought about these points for a long time before but didn't find a good way to put them into words. Doing is harder than saying, though. I still try to keep my ego & attachment in check.

First week of school started with lots of worries and tiredness. However, a bit of cooling down helped me changed my perspective and changed my attitude toward the new semester. Hopefully everything will work out awesome.

Disturbance in the mind.

It's nearly 1 month since I come back to Singapore already. I can say it's a long month, with many things happened. This entry is about 1 of the experience that I want to write about.

I remembered Bernard commented on the post about Happiness that I might not be able to hold my thoughts when I faced the workload at school. To some extend, it did happen in the last month. It is important to note it down, in case I might fall into the same trap again. I should better write the experience down, hopefully to remember it better.

Last week, I realized I didn't keep my mind very clear and positive. I was full of worries, avoided work and felt lost. It was due to the strenuous ACM training, the amount of work I was expected to do this semester. I was kind of freak out. A lots of work will be new to me so I shunned for awhile too. All these thoughts surely didn't do anything good to my mind.


A part of the (source of the) problem comes from other people. I realized that many people spoke bullshit and I unconsciously let their negative voice entered my mind, or let their goal influenced mine. Keeping view of an observant is not easy.


It was an awakening moment, I realized I need to fix my mindsets. Again. Here are the relevant ones:

- I like adventure. I like explore new thing. My life must be a series of adventures. Remember how awesome past experiences were, so that I can overcome the initial fear of facing new things.


- What need to be done must be done properly. Plan early. Execute early. Work by priority, not difficulty. Decide priority by commitment and importance.

- There will be problems arise from the things I commit to do. However, problems are there to challenge my ability and creativity. Instead of shunning, I must keep thinking about problems and solutions. Try and try. It's fine to fail but it's not to fear. So far I'm sure I'm creative and smart.

- Life is about choice. I don't have to do everything, especially don't have to follow what others do or want. I must remember what is my choice and what is not, what is important to me, what I want to do.

- Do not think, pretend or appear to be down. Keep smiling. Hold myself standing high. Keep my mind in check. If I can't hold it, take a break.

- Sometimes it is important to take a break: a meal with friends, an outing, a movie, a nap, go swimming, and esp. a bath. Many things doesn't require lots of time yet can have outstanding restoration effect. Work smart.

- Keep the time spend on Facebook and Yahoo/ MSN in check.

Friday, August 6, 2010

Sometimes

Reading some of my friends' notes in Facebook and this thought come to me:

Sometimes people are not as strong, independent, cheerful, decisive or cold as you think they are.
They might well hide their weak, down moments deep inside.
They might never reveal their strugglings.
They might have a delicate soul under a different cover.
They might be just a sensitive and emotional creature just like any other.

So?

Listen to them. Period.
Talk with them.
Encourage them to share.
Bring them to playground. Insist if you think it's necessary.
Care to them even when they appear to not need it.
Show appreciation and respect more often.
Do these things because you want to have them as friends.

But don't expect anything.
Don't expect them to share their thought and feeling right away, because it might just be their characteristic to not share. But be persistent on this.
Don't expect them to show appreciation in return, because that's not gonna happen usually.
Care not about their faults.
Accept them.
They might hurt you (unexpectedly).
But all are OK, as long as you want to have them as friends,

I am saying all of this because
I realize
Sometimes it's me
who needs to be listened,
who needs a little care.

Monday, July 12, 2010

Happiness

To be concise, I think I've found my way to happiness. This summer has given me a lot of time to think and test my hypotheses. I am confident to say I have experienced an extreme feeling of freedom and happiness. I think it is important to write it down as a lesson for myself. It is not necessarily true to others, as we are all different; so keep a skeptical look at what I am saying. I am not pretending to be wise here either. After seeing how a 90 year-old successful businessman described himself at the age of 39 as immature and youthful, even though you thought he was extreme impressive already, you realize that there's no time to be really matured. Also, there is no time better than now to say something you want to, because whatever or whenever you said something, later you will find it immature.

Happiness can only be called happiness if you fulfill all 3 conditions:
1. You feel happy internally.
2. It is accepted by the people around.
3. It contributes to the society in some way.

Basically it's that you feel good internally without harm or affect others' right and even more than that, contribute something to make this world a little better place.

The 3rd condition is too grand a point that I think what we can do is doing good deeds, hoping that they will make good impacts on others around, not expecting something great to happen.

The 2nd condition is (for me) the same as the 1st one, because I can't feel happy otherwise.

I call the 1st condition personal happiness. What's called happiness varies on people. For me, it isn't a goal, or a journey. It is a state of mind. I can be in this state all the time, thus ensure that I feel happy all the time. How to describe that state? It's a state that you feel totally free, the freedom of the mind. There is nothing hold you back; there is no obligation. You don't feel feared, anxious, shy, frustrated or any other negative feeling. There is nothing outside push you forward or can drive you toward it. You don't envy with others, because you know you have your own way. Anything you do, you do it because yourself want to, and because of that, you feel comfortable doing all these. Everything is so nature that nothing feel wrong. You live fully as yourself. To an extreme, you feel like flying! Really!

I start by observing people around me, how they react to me, what they need from me and fulfill it if it's important. Of course, not of all people but the ones I care about. If you read other posts, you would realize I am really doing that with my family. My dad said once that I'm more matured, so I think it's a good sign that I am not going wrong. Talk about what I am doing at home, I am preparing meal, talking intimately with my parents and sister, making joke and fun at home. Those things seems to require a lot of effort and dedication. They also seems to against my personality. However, because I realize the need of doing so and take initiative, I do them all with great pleasure and enjoyment. I do them so naturally that I was surprised too.

But I only feel utterly free until I listen to my own need, conquering the negative feelings (more correctly, ignoring). I realize that attachment, fear, anxiety and shyness are the greatest problems. So I stop worrying about others' opinion, ignoring the fear or shyness, rejecting to do things caused by desperation, making fast decision. I act as I think, before the negative feelings can stop me. I reject to be attached to anything, if there is something much more important to do, I can halt and do it first. I stop blaming the environment, or going against it, but accept, study and explore it and find enjoyment in it. I keep smiling regardless of circumstances, keep an optimistic and positive view of things. I start feeling being myself and being free. Completely.

It sounds selfish and reckless, however I combine it with observation and adaption: observe how other reacts to me and adapt. Given that the things I do spur from the environment and my reaction to it, they are not completely absurd. I don't expect my action to be perfect too. At least I feel good inside. To remind you, all I said is to achieve personal happiness, not success. However, I believe happiness is more important. Besides, it doesn't conflict with success. I believe it is an important base to attain success.

Whatever it is, it is what I believe. And what I believe is the only thing that matters. Believing on oneself is also a key to personal happiness =P

Thursday, July 1, 2010

To the highest mountain


July will mark the day I conquer the Fansipang mountain, the highest mountain in the Indochina (including Vietnam, Laos, Cambodia). It's 3143m tall. I know, it's cool, right?

This time I will go with a bunch of new friends. I actually found the group in a forum for this kind of travel (there's a particular word describe the kind of traveling - Phuot, meaning kinda reckless, into the nature, or from a sudden inspiration, usually self prepared traveling.) So I joined them! I met them the first time last night (except for a friend of mine who I managed to drag into the group with me). First impression says they are easy going and humorous. A good start.

Why did I do this? I actually asked the people in the group their motivation. Well, first we must admit that it is something quite cool, and a little dangerous too! Going a long way through the jungle, sleeping outside, etc. But the result is promised to be exhilarating and novel. Thus, though till now many groups have climbed the mountain, it hasn't lost its charm. So climbing the mountain is a reckless doing of the youth. A girl in the group wants to climb to the top of the mountain to celebrate her birthday there. Some other friends have just graduated from the universities, so they want it to be kinda the last, peaked act of youth, before start working seriously. How about me? I seek for a new experience, new challenge. I seek for understanding.


The trip will start on 6 July and end on 10 July.

Thursday, June 24, 2010

Freedom

That's an awesome feeling
Like you have no fear
And nothing you can't bear
'Cause you open your arms
And embrace them all
You works with initiative
And with happiness
Always think positive
'Cause you know
Nothing can turn you down
Confidence fills your breath
Makes you stand high
You look up with pride
And always smile.

Saturday, June 19, 2010

Communication

As I mentioned in the previous post, I am an ISTP typed person, who tends to hold back views on things. In a conversation, I normally enter a mode called ‘Information gathering’ and prefer to ask questions than share views. However, I seem to develop an opposite habit recently.

The observation was completely true to me previously. I hardly spoke out my views; instead I preferred listening and making judgment internally. My dad used to criticize me for being closed to my own world, and never express my feelings or thoughts. As I remembered, our conversation usually happened with him speaking to me, while, I sat in front of him, looked down to my feet and murmured ‘yes’, ‘yeah’, ‘yeah’... Normally when we talk with each other, he offered me guides or advices of what I should do. Meanwhile, being an independent and rebellious child, I disputed his suggestions silently and suppressed my disagreement. Another example, as I have stayed away from family for 10 years, figuratively, my parents always asked a lot of questions about my living, my friends and all. I tended to evade the questions, and answered with generic answers like ‘yes’, ‘no’, ‘yeah’. I never talked about these things unless they asked. I must admit I was pretty detached from my family.

This time I tried to engage in every conversation with my parents. When I talked about something anything, I offered a lot of vivid images and stories. I made a lot of jokes too. And they laughed a lot. I openly raise my views or preferences, either when it agrees or disagree with my parents’ opinions. They did listen to me and respect my view. The result is inspiring! Previously, I always felt a tense air floating around us, especially when we talked with each other. I usually left a conversation with a lot of thought and negative feelings, as in depressed feelings, not bad tempered or anger. Now I feel all the conversations are much more interesting, more frank and more comfortable. I think my parents also agree with me on that. I am sure the bond between us is stronger than ever. I am pretty happy.

It is just an example of what is happening. I also try to actively participate in almost any conversation. It is kind of weird, but despite of the introverted nature, I feel quite nature and easy to do so. After the conversations, I always feel great (not excitement but satisfaction). Sharing views and thoughts is a really effective way to improve understanding, and strengthen bonds.

There is another reason made me ineffective in communication. I wonder if anyone shared this view, but I used to think of talks, especially with parents, are wastes of time. I have too many works at hand, I need to concentrate on this task, I haven’t achieved my goal yet, I need to work, work, WORK! Why am I sitting here, maintaining a crappy conversation? All these kind of thought used to scream in my mind, made me felt very uneasy and ineffective. But I have changed my mind: these conversations were more important than the works I worried about. Communication is important; you must put my mind and heart into it (no multitasking please). As for working, I want to quote 1 one successful entrepreneur, ‘You can deal a lot of damage from 2-4am’*. After all, what’s the point of success if I can’t even make my parents (and important ones) understand me and happy with me?

*That guy was Gary Vaynerchuk, who founded a TV channel all about wine. He maintained an close relationship with his customers: (personally) replied to every, EVERY email he received. You can listen to his talk here; it is quite inspiring.

Friday, June 18, 2010

Love

Recently, one of my friends introduced to me about the Myers-Briggs type indicator, a classification of Personality. According to it, I am of the type ISTP, the mechanics. I was surprised when seeing how correctly it described me. Almost perfect! However, I was astonished when reading the part described the emotional, feeling side of an ISTP. I am kind of aware of what is happening with it, however, I have never put down into words or read something that reflects it so closely.
What caught most of my attention was this sentence:
...ISTPs feel strong affections one day at a time. One day, they may feel completely, intensely in love with their mate, and the next day they may be totally disinterested, or perhaps even ready to move on.
It is because ISTPs focus on the present, the current moment the most. They focus on the thing that is happening, the tasks at their hands. They can totally forget about things that are irrelevant to the present. Taking myself as an example, recently, when I met the girl I liked, I felt a strong temptation to go and grab her hand, or hug her tightly. I tempted to confess the deep affection I had. However, right the next day, when I backed at home, sat down in front of my laptop, and started working, I tried to think about her and the temptation I had. Guess what, I couldn’t visualize anything in my mind, I didn’t feel missing her a lot. Instead, I wanted to start working and making progress. However, the feeling would come back intensely when I was done with work, and seeing her or any indication of her presence.

Now that might sound OK, however the problems become worse when I tend to constantly put myself in new tasks, projects, or works, leaving little time to really examine my feelings and extend my arms to others. Last semester I was totally absorbed by 3216’s projects and almost lost all connections to the people outside it. Normally I called back home once a week, however, sometimes I forgot to do so for a month! It wouldn’t be strange if people outside my circle of present feel that I am uncaring, close to myself only (well, my dad criticized me several times). Yet the people within my circle tend to say the otherwise, that I am caring to them!

Even worse than that is the doubt I have about my feeling. I have multiple times questioned myself if I really liked a girl. How so if I wouldn’t miss her much normally. How not so when I feel such a strong affection toward her? The doubt and confusion always cause me a great difficulty in deciding what to do with my feelings. Also, because of it, sometimes I unknowingly hurt other people and myself. I always thought I am a fickle person, whose feelings change inadvertently and uncontrollably. However, 1 article wrote,
In fact, they are not really fickle, and certainly not cold. They simply experience their lives on a moment by moment basis, and go along with its natural flow.
So what? It also wrote:
...most people need more commitment than can be offered when taking things day-by-day
Ok, it feels great to know how and why things happen that way: it’s because of my nature, my personality. At least now I can redirect my attention to solution, instead of hopelessly questioning myself what was wrong with me. So how should I deal with my feeling now? It is suggested that:
Identify and Express Your Feelings. You may have a hard time figuring out exactly how you feel about someone that you're involved with. It's important that you do figure this out. Don't lead someone on with your ambivalence. If you determine that you value the person, tell them so every time you think of it. This is the best way to make them feel secure in your affections, and so to promote a long-lasting relationship.
That means I have to develop a habit of expressing my affections to others... sounds against my nature but I guess it worth trying. Maybe I should spend like 1 hour a day to deal with my feelings specifically. For example, call and talk with whoever appears in my mind during that time?
Last words,
Don't Be Afraid to Love. That's just your old inferior function trying to convince you that you're unloved and unlovable. It's not true. Just because you're not sure what to do with yourself doesn't mean that you can't learn! Go on... jump in. The water's warm.
Source:
http://www.personalitypage.com/html/ISTP_rel.html
http://www.personalitypage.com/html/ISTP_per.html

Sunday, June 6, 2010

Life is a marathon

My friend told me he was tired of the business world. He was originally a technical geek, switched into business field. He was now tired and doubted his ability. He felt weak. He asked me right after I failed miserably in the Google Code Jam round 2. I felt weak too. Even though I knew the reason, and accepted that result as a consequence of my own fault / weaknesses. I still feel weak. I must say it is the worst feeling you'd want to experience. I have doubted my ability many times. I hate feeling weak. Yet have experienced that many times.

That feeling comes when you face a problem that is sufficiently harder than your ability (at that moment). No matter how talented you are, as you advance further in a field, you will find it harder to progress, you have to pay more time and effort for lesser progress. Yet, others might catch up with you very quickly, they might be still below you, but they would be able to narrow the distant in real time, because it is easier for them to progress. At that time, you will feel at your limit, want to give up, doubt your ability, etc. Every sort of unmotivated thought will visit you. They can be defined as walls to stop the weak minded. The ones who can carry on will be able to achieve great success.

The self-help book would say you must carry on. People would motivate you to carry on. Sometimes, it makes giving up looks so bad. (I think) it is important to realize that giving up is an option, just as going on, not a choice when no other choice works. It also takes effort to give up properly.

- Sometimes I gave up, because besides the fact that I am tired, the thing wasn't that meaningful to me as it was. Later I found that at this point, it is important to, if you decide to give up, convince yourself to be happy with that decision before you actually do. Otherwise you'd feel remorse, felt weak (minded) for giving up. It's how you perceive the thing. Why don't perceive it in a more positive way? Whatever happens, happened. Many times I considered it as taking break, and eventually coming back to continue the work later.

- Sometimes I decided not to give up, and move forward by my determination, rather than strength. I realized that after surpassing a certain point, everything would be at ease. I found myself much more powerful. The things I found hard before became normal, if not easy or trivial. However, it didn't last long. Soon after that, another paramount will approach, and the recursion begins.

When I decide to not give up, it is because it is my life to achieve that goal. It is my promise to myself, or it is a goal that I cannot give up on. I've moved on because of determination and ambition. I have a vivid memory of these time. I must say it doesn't work out smoothly and easily as it sounds. It takes deliberation. It requires force (in thinking). Many times, even with determination, I still can't achieve the goal I set (but something close to it).

I can't really remember if I've moved on because of pure interest (passion). How does it feel like? (I'll find out.)

*About the title, the easiest way to experience these thing is by running a marathon. Get on your feet. Stretch carefully and Run! Remember to set a goal that is sufficiently longer than your current strength (say 1.5 the distant you normally run). For someones who doesn't run regularly, 30 minutes can be a real challenge.

Home

The weather here recently is quite nice. It is a little cloudy and windy. Thank for that, the temperature is around 32*C, not hot as I remembered about Vietnam's summer. I don't like hot weather. (No, the normal weather in Singapore is not hot. It is quite comfortable actually. And you have air conditioner everywhere!). This weather reminds me of Hanoi's autumn. I think this is the kind of weather I enjoy the most. However, this kind of weather can take down the mood of anyone. It's not a cheerful, energetic weather like the end of spring, or early summer, but a mild, down, slow weather. In this weather, I like to just lie down on my bed, and chew over some thought, some philosophical questions that I (most probably) never find answers, rather than working.

Speak of working, home isn't a good place for serious work. There are too much variable that I can't control. The constant electricity cut also cut off my desire to work. Sometimes it is frustrating to try to connect to the internet. You don't know why it doesn't work. It just doesn't. My two little brothers of 5 year-old and a sister of 12 year-old can disrupt my attempt to focus anytime. Well, you can't reason with children, they only want to play and get attention. I love to play with them when I am free. Besides, my parents want me to sleep regularly and rest regularly too. The fact that it is too comfortable here also makes me watch TV more, sleep more and thus spend less time on work. I remembered the time last semester, when I only came back room for sleep and went to school for work right after waking up. It was more productive then.

Alas, it's summer! I shouldn't think about work and study all the time! Didn't I decide to spend this summer for family and friends?

By the way, I will be arrive in Singapore on 18 July and will put real effort on ACM training in the next three weeks from arrival. ACM World Final is a serious business, and I need to play seriously.

Tuesday, June 1, 2010

Making appointments

Last weekend I took the second trip to Hanoi. Thankfully, this time I got places to stay! Met and talked with a lot of my friends. It also left in my mind a lot of thoughts. I'm gonna write about them later on; it is the best to write about just one thing at a time. This post I want to write about something I learned after the trip, something about making appointments (meetings) with friends:


First, making confirmation with my friends ahead of time. Do not make any assumption about others. Last time I thought that I would easily find a place to stay, given that my friends would never turn me down. However, they turned to be out of town (it was the weekend) or had other issues, and I couldn't stay at their places. So this time I contacted them several days before coming, and confirmed the date and time I would visit them 1 day before, confirmed the place I would stay. It works out much smoother. Last time I procrastinated because I didn't like doing these things, just didn't feel comfortable. In general, procrastination might be caused by fear and anxiety as well, or sometimes the task is difficult that you try to defer facing it. Bur if something crucial need to be done, do it first. Don't defer the inevitable.

After that, follow up and update my friends whenever something doesn't happen according to the plan. It's frustrating to wait for someone else without hearing from him or her. Like if I'm late because of traffic jam, I should inform others of my status, and the time I am expected to arrive. Though it doesn't solve the problem, at least they know that I'm on the way, not that I've totally forgotten about the meeting (and them). It helps understanding and boost compassion.
Update update update! Follow up, follow up, follow up! Stay connected!
Oh and CALLing works better than SMSing.

I think the above things apply perfectly for team-working as well. Like what? You need to maintain constant connection and clear information of all things (related to your work). Update your friends regularly. Follow up. Push them if needed. Avoid taking any assumption.

Wednesday, May 26, 2010

Lost

Truthfully I feel empty right now.

I feel like an aimless wanderer. What I once thought to be important is shaken. I'd define family and friends as the most important things to my life. However, sometimes the ones you think to be important don't need you as much. And sometimes we can hurt each other inadvertently, but deeply. It's the worst when passion is responded with indifference.

Aww, the world as I see it is always pinker than it really is.

Sometimes I'd love to [dwell] myself into learning. Playing guitar, cooking, drawing or programming, or anything. I normally feel very comfortable, and deeply focused on the process of learning. I'd sit there, study for hours without feeling restrained. I'd like to relinquish the world and study a little more.

However, I feel like I'm using learning as a way to runaway, to not have to think about life and people. Still, the questions just come back to me. What am I doing in this world? What is, or should be, my purpose of life?

Time for resolution. I've always repeated to myself that my current goal is becoming stronger and stronger, traveling and seeing the world, stocking up with various experience. Good experience, bad experience, I'd embrace them all, and learn from them all. Everyday I'd question myself, what matters to me? One day, I would be able to find the goal of my remaining life. My goal now is finding the goal of my life.

Friday, May 21, 2010

Cooking

I patrolled back and forth in front of the pan. Every fifteen seconds I would check a fried piece of fish to see if the bottom side turned into yellowish, the color indicating that I could change the pieces side. Several sweat drops run down my face. I felt like it's myself that was being fried. The heat of the noon solely was almost unbearable, now it's added with the heat emitted from the gas cooker, yet I had no electrical fan or air conditioner to support me. Yes, the electricity here is cut off 12 hours everyday, from dawn to dusk. My grandmother told me to sit down into a nearby chair. "You don't have to check too often," she said while wavering her paper fan at me. The mildly wind from the fan was like a rain to a dried land, bringing some life back to me.  Still, I was too impatient to check less frequently. I also was afraid the fish would be burned already if I checked too late. Last time I even wanted to change the side of the fish every 5 seconds or so, and ended up breaking the shape of the fish. When the fish is not properly fried yet, it will be easily teased apart when you change its side. And it did take some amount of time for the fish to be fried properly. I certainly knew the time needed better now; however, seems that I hadn't totally grown over the nervousness of a newbie.

Frying fish is actually simple. You first have to marinate the fish through other condiments like salt, sauces, oil, etc. How much of each? I wouldn't say one or two spoonful, but give it your guess, and you can refine the next time. It's what we do in practice. Wait for several minutes for the condiments to penetrate into the fish. Put the pan on the cooker, pouring some oil into it (dun pour too little). Wait until

the oil stop boiling, which will help the fish to not stick to the pan, to put the fish into the pan. When the bottom side of the fish is properly cooked (turning to yellowish), flip or change to other sides. It will take awhile, you don't have to check too frequently. Don't let it fried too much, or its meat will become too dry. After all the sides are fried, you're done. That's it!

However, it doesn't work out so smoothly so far. Last time when I fried fish with my friend, I kept the fire quite high, and the fish got burned very quickly. Ha ha. When there was a faint scene of fish being burned, my friend noticed and immediately adjusted the fire, while saying, "You must keep the fire low. I let the fire bigger just to boil the oil at the beginning.." I admit, "Sorry, I didn't remember. Last time my grandma adjusted it for me, and didn't tell me very why.." She continued, "you must keep the fire small so that even the inner part of the fish get fried at the same time as the outter part. Otherwise the outter part will get burned while the inner part is not cooked yet." I laughed, "Ha ha, had my grandma explained the thing so logically like you did, I'd never forget. He he, sorry, it's the second time I fry fish." She also smiled, "cooking is like studying, need practice." After that incident, I never dare to set the fire very big whenever frying anything. It is indeed easier to remember things when you understand why it is like that.

Finally I finished the dish! It's edible! Ha ha, it isn't actually too bad, if not kinda good. Through the accidents, I learned that cooking is not very difficult (ha ha); you just need to follow some generic steps closely. Even if you mess up some parts, continue like normal, the result would still be something accetably good. However, it is difficult to cook excellent food. Like my friend said, "cooking is easy, but cooking well is a different story."

Later I will ask my dad how the fish I fried like, he he.

Monday, May 17, 2010

It's time to be a grown up man!

Last weekend,

Hanoi
"Hanoi is so overcrowded and dusty." It was my first thought when entering the city. I was trying to swim forward in a river of motorbikes. The road is full of motorbikes; it is everywhere: on the left, on the right, in front of me, behind me. Everywhere. I have to constantly find empty space, slowly drive my motorbike there (you couldn't really drive at a medium speed, but move a little by a little), and repeat that process. It is a common image you see in the city, especially at the end of the day. The air is filled with dust and the oily smell produced by the vehicles. I would be suffocated soon if I couldn't get away soon. A worn-out bus passed me, left behind a darkened smoke with a terrible smell. I slowed down, tried to avoid it. A kind of disgust feeling arose in my mind. Under this kind of environment, you could not think of anything positive. Now suddenly it felt much better to live in a countryside like my hometown. First time I fully I appreciate its cleanness and tranquility. I thought about Singapore too. Maybe the clean environment in Singapore also helped me open my mind and think more positively. Back to the reality, I thought there wouldn't any trace of animosity in my face. Apparently I had switched (back) to a state suitable for the environment.

Nevertheless,I have to rush to meet up with my friends.

Friends
"It's time to be a grown up man," one of my friend said. Ha ha. I felt a little shocked when hearing that. The full conversation was like this "Some of my friends still play games days and nights. They should understand that they are third year students and it's time to be a grown up man, shouldn't they?"

Apparently, I am not the only one who has (somehow) grown in thinking. At this age, a little different in mindset reflects greatly in behaviors and performance an future success of a person. It is also shown clearly through what he has done in recent years. And through his plan for future too.

I thought about my uncle, who played games days and nights. He was around 10 years older than me, had a family and a child of 4 years old. How come a 21 years old boy said something that a 30 years old man couldn't understand? It was sad when seeing his business declined while he fell deep into games with my own eyes, yet I couldn't offer any real help.

Within my close friends, I also saw some buried themselves in entertaining stuff. I have tried to signal them to change. But so far I haven't succeeded once. Maybe I will try a more direct way.

At the same time, some of my friends developed a serious way thinking and working very early, by themselves. I started to ask what can help a person developing a good (serious) mindset? Seems that it can only be taught and learned by oneself. If someone else tell you, you will either doubt it, or forget it very quickly. Forcibly teach it to someone will just makes him repels it harder. The more stubborn, the harder to teach. Self-help books somehow helps, but they depict the situations too ideally that if someone really believes in them, and blindly follow them, he will soon be disillusioned, leaving a great disappointment about the books. Is it the result produced by the environment around someone, or it's from the one himself that he will have / learn it? Blah blah... I'm lost.

Personally, I believe someone can only learn it by himself. And only by that, he really learns it.

Night
It was 11pm and I was till wandering around on the street. Alone. I hadn't got a place to stay that night. My friends had gone back to their home. One told me I could stay at his home, only to tell that his mother didn't allow that. So I wandered around on Hanoi's street while trying to call other friends for help. Hanoi at night was also quite tranquil. It was not totally silence like my hometown, but there was still the noise of motorbikes' engine here and there. The cool weather of the night is apparently more comfortable than the heat of the day. The air was fresher too. And you don't have to fight the crowd for a path; the big, almost empty road now is yours. Think about it, it sounds funny that I defined myself as a competitive person. Maybe the real world
I am venturing to, especially the business world, will be more competitive and disgusting than the transportation in Hanoi this afternoon. I will have to learn to deal them more properly.
Finally I received a positive response from a my friend, after a whole bunch of apologies. Now I got a place to stay!

Chat at night
[...] What is your purpose of life? [...]

Thursday, May 13, 2010

Summer starts

It's 1 am in Vietnam now. The night is very quiet and tranquil. The only sound I can hear is voice of some frogs calling their mates. Unlike at daytime, at night the weather is very cool and comfortable. Adding with the tranquility, it is an excellent environment to work. And think. I am a little lost in thought now. I have come back home for two days, though I feel it is much longer than that. My life here so far is totally different from the life at NUS. In NUS I can easily stick with my computer and code or talk with friends all the time; however, since I come back, I could merely spend time as I wanted. So far many of my relatives and neighbors have visit me, so I have to greet and talk to them. People will then ask me about Singapore, the life, the weather, the food here, etc. etc. It becomes bored after awhile if you have to repeat the same things over and over again. However, I agree that it is important to do so, and not only do it, I have to show my involvement in the conversation, in other words, showing that I do want to have the conversation. It is important to show them that I respect them and to keep the good relationship. Come to think of it, I think showing involvement and passion in conversation is a real skill in communication. I'm getting better at it.

Talking more about conversation, how to maintain and make a conversation interesting? Just now I told my friends it requires a lot of creativity and thought. Sometimes I find my conversation with others just die out very quickly. We have nothing special or interesting to sustain the conversation. It becomes a real problem when you really want to keep the conversation. Some of the issues I can think of: I was too shy, timid (in front of girls, so or prominent people), or did not want to appear stupid (not happen frequently but did happen sometimes). Talking casual, trivial, vague, general sentences or repeating others' ideas can kill the conversation quickly too. I am not really good at this so I have no effective solutions. However, I think we can talk about mutual interests, ask for specific help or advices (that we need right now), offering new (not necessary important or novel) content in every sentence. Talking about philosophical stuff (meaning of life, etc.) helps too ha ha. Oh, 1 thing, don't talk until you have nothing to talk, keep something to reserve and stop the conversation (any lame reason you can think of) when it is still high, so both parties will want to continue it next time. Time to hear some suggestion from friends: do you have any suggestion to deal with this problem? (I'm serious)

Sorry for going off topic, as I said, I'm just lost in thought. Let's continue about what I had done in the last two days. When I came back home, my uncle pleasantly surprised me by returning my guitar. I didn't plan to learn guitar this summer, but looking at it really made me want to do something. Priory, I took a 3 month basic course of guitar last .. 2 years, and knew some fundamental things about it. However, I didn't really learned how to play. Before I returned home, I stumbled up on my friends guitar and called back some rhythm I learned. It enticed me to learn guitar once more. So when I saw it, I really tempted to check the guitar out. It was out of tune though. So what? I learned to tune a guitar the first time! Haha, with help of Google, I managed to do that. Phew~~ I thought that it was very difficult and couldn't do it before, but now it felt so simple. A small achievement indeed. Still, I do not want to spend a lot of time on learning guitar this summer; my schedule is pretty crowded. I will try to practice a little though. Hopefully I can play a song or two after the summer. = )

Apart from that, I also start helping my grandma and mother preparing meals. So you can say I'm learning cooking seriously. No, I do not learn cooking for any serious purpose; I just think it can help reducing the stress of learning or working. It can be helpful sometimes too! Another reason is that I want to keep my senses sharp all the times as well as and keep the learning attitude all the time. Once you define yourself as a learner, everything is much simpler: you're more humble, more welcome to failure and mistakes, and more open in the mind. Well, sounds like some overstatement, boasting sentences. But I really mean it. I'd like to keep this paragraph as a note to myself.

Still, what occupied my mind most of the times were the projects I wanted to do in the summer. I am gradually starting them. It feels like pain when you have so many things running in your mind but you can't do them immediately. However, there must be some transition cost, because stuff like people visiting cannot be avoided when I just come back. Besides, my hometown keeps getting electricity cut off everyday. I am not blaming that but take that opportunity to read books. It is still better and easier to read book when your laptop is off. Most importantly, it's not burning out quickly that is important, but keeping the fire all the time. I am learning to do that. (To be honest, I lost a little fire today though).

Anyway, everything will be on its course soon. I will update more about the progress of these projects on following posts.

Nite!

Hello new world!

As prof suggested, I will try to maintain this blog frequently to train my writing as well as keep a journal of my summer. It can be a good way to tell my friends and others about my life and the way I see it too. With that, I will write mostly about daily events that happens and how I think and feel about them.

So that's it. I will try to keep this blog updated as frequently as possible. I will try to be honest about everything, especially my thought too. Not that I am normally not honest about that, but through my observation of myself and friends, I find it sometimes very hard to keep. Sometimes it is because we want to impress others, or we do not want to admit our errors or try to defend ourselves. Sometimes our voice just sounds pretentious and superficial. Yeah, it happens to me too, though I try to avoid doing that all the time.

Last words, whenever I write something, that means I want to share it, and thus expect some feedback and comments from others. It is quite said if I write a lot, but never heard anyone comments a line about it. A laugh, a teasing comment, or anything (not spam comment though) is better than nothing, because at least it means someone does read what I write. Though I always try to resist this desire and tell myself that it's OK to have no reader, it's still better to have some, right?

That's it for the first entry!

Saturday, April 17, 2010

After going through hell, you will be stronger

So prof ask us to write a final blog entry summarizing the lessons we have learned after a semester. It is very difficult as we have learned incredibly a lot of things. I will try my best to summarize some of the most important ones. 

Looking at the first note, I expected myself to learn more about selling, team working and programming. I also expect to learn a lot from our peers. Now at the end of the semester, I think I have learned more or less all of these things:

- You can only work with your best when you work on something you believe in! As a team, don't start working when not every one has trusted in the idea. Convince him, or question others if you haven't believed in it. Once I believe in something and work on it, I can easily go crazy for it.

- Team working is essential. AND it's difficult. There are certainly limit of what one person can do, thus combining force is the way we can achieve the common goal.

One important thing when looking at a person is looking at the context, the emotions. Criticizing is not the best way to deal with a problem or a conflict. Finding a better solution is more important. And in case you can't find a better solution, don't complain.

I believe in team working, it is better to make everything clear, and express all your thinking. If you don't like something, address it. If you need something, speak. It is worse if you try to suppress your feeling. It will stack up, worsen your feeling everyday and one day, when you can't handle the heap, it will explode, causing a lot more damage. Another reason to be clear and direct is to avoid any assumption being made. It's the worst of them all when you have to combine different part of works and realize that they are not compatible. Don't believe me? Read this post from Carolyn's blog about team working.

However, I am aware that sometimes I am not straightforward enough in expressing my ideas, my situations to the teammates. This is partly because I am still not very good at English, thus sometimes it feels very bad to explain something. (I should have tried harder.) Sometimes, my teammates also closed their mind / work (about their issues) that deterred my temptation to speak out loud. Sometimes, I worried that my ideas weren't right. I am certainly afraid that complaining too much will hurt others' pride and might as well hurt the team relationship. And maybe I should wait a little more, things will get right.

Thinking more about it, most of the time it is not the nature or desire of the person to not do the right thing. For example, the work is so hard (and we're run out of hard focus) that the need of some thing to divert our mind arise. Sometimes you neglected the work (AND WE KNOW IT!). All we need (or want) is someone to poke us, point us to back to the right way. And then we will appreciate it, instead of having bad feeling about others*. I am not pointing to anyone specifically, so please exclude yourself and excuse me if you find it untrue. But it is what I got from my observation of  different people.

Now I believe that the best solution in team working is always being clear. Everything must be transparent. And discussion should be carried until we can resolve and have a final agreement (even if that agreement is something like "Let's do it this way first" when a solution is not clearly better than other). As a team, we should agree on this at the very beginning.

- I have also learned a lot about programming. Certainly there are new languages that I have learned, such as Java, PHP, Javascript, Flash (& Actionscript), Facebook API, SQL, etc. Certainly there are new method of programming I have learned (more about), such as OOP, Event-driven / GUI programming. However, there are something much more than that, which is very hard to write down in words. Vaguely, it's a kind of generalized stuff my mind created automatically while learning all these stuff. Basically now I think I understand a lot more about programming, how the languages and/or the methodology work. I am also more confident of my ability and what I can achieve with it.

- Some important and insightful lessons:

+ Idea is cheap. Execution matters. After the final project, now I fully appreciate this sentence. Idea alone is just the first, smallest step to succeed. And more often than not, there probably are many people with the same idea as yours at the same time. It is more important, however, is how to execute the idea. To carry the idea to succeed is a long, difficult journey.
+ People is different from you. Period. Still, we tend to forget this simple idea in real life.
+ Life is about choice. Do the right thing. Make decision fast. (This is combined of 1101S, 3216, and added after I read Haocong's post)
+ Communication is the key. My skill has improved quite a bit after 3216. However, I sure know it is still lousy. There is nothing worse than wanting to say something but you can't. I will work on my speaking and communication skill harder.
- Prof's common sense lessons are sure important. Many I have aware of (well, it's common sense), but many was new to me (common sense yet not so common). But all sure make me think. That makes 3216 and his class different. And that's why I enjoy them. Most generally, you learn to observe yourself, people around and the world and learn from them. You learn to never stop learning, to work hard. You learn that you have to find your passion. In 3216, prof's lessons assured me that I was going the right track. No, it's more like I have found a lighthouse to lead me to a desired destination. I still need to go through the difficult way to reach it.

And  hey buddy, stay assured, if you haven't found your passion, continue seeking for it. What I can suggest is trying different things, meeting different people, one day you will find yours. And that is what I am doing.

- 1 thing unique about 3216 is the awesome students. It is the first (and probably the only) class in NUS that I find so many passionate and open people. Each person is skillful in a different area, like programming, design, game design, team leading, etc. And each person provided me a different view of things. I love to talk with everybody, to observe how people works and interact. Looking at them inspires me to strive harder. Even hearing their problems providing me insight view of something. Of course there are also limitations and weak points in each person, however, there are still time for us to learn and develop ourselves. I would love to stay in touch with all of you guys, 3216s = )

Last words, 3216 taught me many things about myself, my friends, and the world. Now I understand myself a lot more than before, both about my abilities and my limitations. I am proud to say I am stronger. 3216 is sure the best class I have ever taken.

*...I can be very indisciplined - earlier on Saturday night I sat down to watch an animated video, putting off coding the UI, and Biyan said: "Cedric, I need to plug in my code into yours soon. So please work?" and I felt very guilty about that...
 -- excerpt from Cedric's blog post.

P/S: I realized I was mistaken about the blogging requirement. I had this misleading idea that I would only blog if I can find something non-trivial to add on to a lesson, or that I would not just write down the lesson as it was. Why is it wrong? It is certainly better if I can add original thought to the lesson; however, writing (scripting. copying) the information I received alone has its own value, that is strengthening the lesson in our mind. From now on I will try to do that (write down) any lessons I learn.

Wednesday, March 24, 2010

Understanding the real world!

The talks on Monday lecture all were extraordinary. We were told about the real life of entrepreneurs, which shared the common traits.

First thing is that you must be passionate about the business that you are running, and believe that it works. It is extremely crucial in the first years as you wouldn't likely to make any profit, and faced a lot of disillusions and/or discouragement. At the first year, Mr. Chin Leng from SingaporeBrides.com not only faced countless rejections, financial difficulties, but also discouragement from friends. If his belief is not strong enough, can he carry on until the day of success? The same thing happened to Mr Hoong An with HungryGoWhere, who made 4000$ revenue at the first year! It actually happened everywhere. It is fierce, it is cruel. But it's life. Through the sieve of belief, businesses and entrepreneurs are tested, and only the best ones can survive.

Preparing mentally alone is never enough for business, you also need capital, resources, at least enough to carry you until the day of break even and making profit. Talking about this, it is suggested by Hoong An from Hungry Go Where that we should work for several years to accumulate experience, capital and networking. "It's excellent way to learn while you're being paid!" he said. Later Mr. Leslie from Redsport also talked about his past experiences that eventually built up him and led to the creation of RedSport. Well? I guess NUS will not be able to catch up with Harvard then. Haha. Just kidding. (It's even a fault in logic. Who said we can't work when still in school?).

I think no one can make a successful business out of the air. It actually requires a deep understanding of the (area of ) business itself, knowing what is the bad point(s) and coming up with a better solution. Normally, by working on a specific job help us understanding the thing deeper and can see the wrong things happening. Reuben mentioned that Mr. Ash Singh saw the potential in Tshirt and set up a business for that, but I am sure he did a lot of researches and analyses  before he actually enter the market.

There are still a lot of  vague thoughts bouncing in my mind. I have been reflecting and writing this entries since the lecture ends, but somehow I still can't think and write everything down clearly. Partly is because I want to write down my experience / emotion after the talks. But let's just take it as it is for now. I will continue thinking about it and write more.

Sunday, March 21, 2010

Rambling about the last lecture

First half of the lecture is Zit Seng giving us very informative session about web performance. I dare not to say I understand and remember everything, but it gives me a sense of what happens with our app normally and what thing might go wrong. The closest to us web developer is making lesser http requests, haha.

Done with growing, lets talk about the thing that happen before that. It is very common sense how normally people can vision a beautiful (and money-full) future of our app. For that far vision, some will go and plan ahead all the matters / problems that might happen if his app caught attention and million eyeballs. However, often it's not the case. What we should really do is concentrate on the most appealing features and make it excellent. Actually prof has repeatedly tell us to reduce the workload, come up with something and release early. We are also very serious about this issue, and continually reducing the amount of work to be done.


A great blog post about the similar issue: http://paulbuchheit.blogspot.com/2010/02/if-your-product-is-great-it-doesnt-need.html


The second part, which most people must agree that it is more entertaining, is about Grades, Scholarship, Meritocracy. The most intriguing idea for me is the explanation of prof about innate ability and chance to raise higher in the pyramid of (?) society. I totally agree with it and actually used a similar idea to persuade myself to be happy with what I have achieved. Thinking about it, I grew up in a countryside of Vietnam. Before entering high school, I had almost no idea about the world outside, and never thought about winning a medal in an international contest. Well, my life changed a lot after entering high school. Yet, at some points I wasn't very happy with what I got, and felt so envious with many others, who grew up in a better background and environment. I thought and thought a lot about this, and eventually persuaded myself to be happy that I have made this far from what I got at the beginning.

P/S: This whole thing reminded me of Pip and the Great Expectation.

Saturday, March 20, 2010

Continent? You're not a Global yet

Now I can somehow understand the reason why Caleb "The Continent" didn't want his teammates to touch his code. It is very reasonable from a view of a programmer: thinking about all the stuff like combining code of two people, reading code of others, dependencies of components, etc. You will always wonder if you can do it faster by doing all by yourself.
But well, a continent is not yet a global, and is far from a galaxy. The ability of 1 programmer is yet limited to some scope. Only by combining the skills of all people can we achieve a greater goal. Problems and obstacles are there not to be avoided but to be solved. If now we are not really excellent at team programming, consider all these project as a chance to develop the ability.

Friday, March 19, 2010

10 things that annoy programmers

http://www.kevinwilliampang.com/2008/08/28/top-10-things-that-annoy-programmers/

This is a very interesting article about programmers. You will easily nod your head in agreement with what is written. Me too. But as a programmer, I also realize how easy it is to fail to fix these problems.
Follow is the point I'm most interested in

9. Interruptions

Very few programmers can go from 0 to code at the drop of a hat. In general, we tend to be more akin to locomotives than ferraris; it may take us awhile to get started, but once we hit our stride we can get an impressive amount of work done. Unfortunately, it’s very hard to get into a programming zone when your train of thought is constantly being derailed by clients, managers, and fellow programmers.
 The reason being recently I noticed how I could get to my nerves by all people talking around me while I was coding, and also that I might several times annoyed my fellow teammates during their working.

Haha, that all is to say apology to anyone that feel being annoyed by me, I will try to not do that next time. For others, the article may help you in dealing with (other) programmers in your groups!

Nice day!

Thursday, March 11, 2010

Game requires IQ > 40 in Facebook??

PoxNora is a game newly launched by Sony in Facebook.
Inside Social Games - PoxNora
http://apps.facebook.com/poxnora/

Requires IQ over 100 for sure. How far do you think this game can go in facebook? Given that it is quite popular outside facebook alr?

Sunday, March 7, 2010

MouseHunt - why is it different?

This video inspired me to write something about mousehunt, 1 of the application our group wanted to present about.



Facebook profile: http://www.facebook.com/apps/application.php?id=10337532241

Its name suggest that MouseHunt is the game that you will have to hunt mouse. How? Setting your trap, your bait and check the trap every 15 minutes. Plus excellent design and drawings, it gets around 500K MAU and 40% DAU/ MAU (meaning the returning players rate is quite high). The game is super addictive, but I guess the market for it is smaller compared to Farmville and other games.

500K MAU? grain of sand compared to 70K of Farmville. So why talking about MouseHunt? I think it is very successful in connecting users with users and users with developers. I did a research on other popular games but what I found was only disappointment. What are they doing?

- Every Friday they have Feedback Friday session, in which users and developers chat with each other (via broadcasting): http://www.ustream.tv/channel/mousehunt-live! In this session, the developers will listen to users feedbacks, comments, talk about improvement or upcoming updates, and sometimes chit-chat with users. I think this is the most distinguishing feature they have.

- They have a newspaper for themselves. Here is the external version: http://mousehuntnews.blogspot.com/. The newspaper summarizes interesting stories happens in the community, updates users of new content in the games, interview players, etc. I found it quite informative and interesting. Must check everyday!

- The forum. Very well participated by users. They had a sub-forum called Suggestions, where users can put their suggestions of new adversaries or tools. The suggestions are actually used by the developers some times, like the famous hydra mouse. Sometimes they made changes to the games mechanic based on users feedback. That's why users participate in that section very actively.



- The community. Users have formed various groups to help support new users, develop the system of mentors and mentees by themselves. etc. Many users are very active in the community.




















Take a look at Farmville forum, http://forums.zynga.com/forumdisplay.php?f=91 and Mafia wars, http://forums.zynga.com/forumdisplay.php?f=36. The forum and community of Mousehunt is much more effective and developed. Mousehunt is doing much better work in connecting with users, which is an advantage of social network. We should learn from them when developing games/apps on a social network like Facebook!

People ARE like you!!!

While (Mr.) Chewy and Prof are implanting this thought into our unconscious mind that 'people are not like you', I am now trying a different approach.

I was musing for days how to put this the best way, as everything I am to write is all common sense, even more universally accepted than the idea of people being different. It is sooo normal, natural and common sense that it seems very trivial (as you will see) and people (normally) might not even pay attention to it. Because of that, I couldn't come up with any good idea to introduce this topic. However, considering I have learned it a hard way, I decided to give it a shot.

So well? We are well persuaded that we think differently, and greatly different from other people out there. But do you realize also that we are similar in many ways? We think differently but we all think. We feel differently but we all have feelings. We all have dreams, ambitions, happy moment, sad time, up and down.

What can this help?

- Respect. Seeing that every single one around me is filled up with dreams and ambitions, having talents in this way or another way, understanding that they are trying and facing difficulties to advance in life, I come to respect them and never look down to anyone.

- Understanding. I start to think about reasons and feelings of others before blaming them for anything. Is it their nature to behave like that? Or they are not in a good mood? Are they getting some difficulty that affect the work? Then you will naturally start to think about solution: How you can understand his real thinking and feeling, How you can solve or support him.

- Understanding 2: While you are doing something to others, be well prepared that they might be thinking or doing the same thing to you. I'm not totally clear about this point myself. Explain more later.

An interesting example, you are constantly inspecting and judging the ones around you. Not only so, you use your qualities to measure theirs. Say, while I think Tomithy is aiming to too many things, he'd say I should be more daring. While I think Laurence is not serious about a project, and aiming for too simple things, he'd say I'm aiming too high at the same time.

From here you can easily see that we are different on how we think and feel.

- Reflection: It's surprisingly easy to spot others weaknesses and bad points, while you can equally easily neglect your own problems.Think, you can also make these mistakes. So whenever you see something wrong, you can reflect it into yourself, to see if you have done it well or not.


- Reminder: Great minds think alike. Always be alert that many people are aiming for the same thing as you, so don't ever neglect your work and always work hard. If you are joining a competition and working hard for it, be well prepared that many others are aiming to it and doing the same level, if not more rigorous, training as you are. If you are having a great ideas, there well be many others have the same ones, so do it fast and hard.


- Confidence. Extremely useful when you doubt your own ability or have to struggle difficulties. You see all these figures leaders of the world? Thinking about them at young age. I'm sure at some points they were full of doubt, their abilities weren't appreciated. And at many points, they had to face great difficulties. So? They could overcome difficulties, why cant you? Understanding that, you can be more confidence and have more strength to keep going on.
I wasn’t getting very far. Most of the time I was struggling to keep my job.  I’d see other people my age, such as Simon Donaldson (1986 Fields Medallist), being considerably more successful, and I thought I’m obviously not all that good. There were times when I thought of dropping out.”
http://www.simonsingh.net/Fields_Medallist.html

Saturday, March 6, 2010

From Win Vista to iPad: is it a strategy?

I just had an interesting conversation with my friends.


- What do you think will happen to Apple if Steve Jobs dies? 
- Yeah. Apple depends on Steve Jobs too heavily. 
- After Bill Gates leaves the heading position, Microsoft still runs well. That Ozzie guy and another person were quite famous priorly right? And Win 7's success showed some good work from them.
- Ha ha, maybe Bill Gates knew that Win Vista will failed so he ran away beforehand. 
- Hey, btw, I read somewhere that people suspected that Win Vista might be a dev product Microsoft published for people to test it for them? Win 7 is very similar to vista, and it's even lighter.
- Maybe iPad is also published to test the market?
- No way, Apple is famous for the quality of their product! No way it will sacrifice its reputation.
- True. Compared to Microsoft and its products, ha ha.
- Now people expects a lot of any product from Apple. Even a standard product will be considered a failure.
(ranting about expectation and real value of products)
.....
- Hey, what if iPad is really a Dev Product? Steve Jobs knows that he will die soon so he published it!
- Why? it will destroy (deteriorate/decrease) his reputation?
- So that the next ones to succeed him can provide a perfect product that will gain him some reputation! Steve knows that customers think Apple depends on him greatly, so by playing fail customers will lower their expectation of Apple's product. When the real thing come out, it will succeed and customers will trust the ability of the successors!
- Wow. Interesting. Maybe? Maybe!