Sunday, December 30, 2007

My programming sucks

Despite being able to compete in the finals in two separate programming competition (DGX 2001 and PanaGeek 2007), I can't help but thinks that I actually do suck in programming. Allow me to explain.

You see, programming is not just about writing error-free codes. It's also very much about solving the problem using the most efficient way. Computers nowadays may be fast, but there exist problems that could that ages to compute even on the fastest of modern personal computer. Besides that, your code must also look simple. Like they say, the difficulty is not on solving the problem, but solving it and making it look simple at the same time.

To claim that you are a good programmer, you need to be exposed to many different paradigms of programming like functional programming (e.g. Haskell, ...), concurrent programming (e.g. Erlang, ...), logic programming (e.g. Prolog, ...) and etc. For myself, I have limited experience with these kind of languages. I'm currently trying to learn Haskell myself, which is a functional programming language. However, my Haskell journey is far from complete.

If I'm really that good, well, I should be:
  1. Working for Google.
  2. Writing complex 3D games with millions lines of code.
  3. Compete and win in eGenting programming competition.
  4. Compete and win in ACM programming competition.
  5. Solving algorithmic problems in in record time.

Well, all that hasn't happen yet, even though those are some goals I'm trying to achieve. I mean, who wouldn't want all that? All programmers would like to have some of these in their resume, no?

Friday, December 28, 2007

I'm PanaGeek finalist?

Just got called this morning, informing me that I was selected as one of the top 20 finalists of PanaGeek 2007, along with Lim Fang-Ying and my lab partner Ho Wing Teng.

Glad to know that I was given a chance to compete in the final round. At the same time, I'm also sad. My dear friend, Wing Teng was recently warded into Hospital and just had an operation. His condition is now stable. The bad news is that he may need to stay in the ward for 2 weeks or so. I hope the officials of PanaGeek can made special arrangements for him, or extend the date for the final round. It's important that everyone can compete on equal grounds. I believe no participants would like to win, knowing that he/she won because someone couldn't come that day :).

Monday, December 17, 2007

Panasonic PanaGeek Competition 2007

I attended the competition on last december 15 2007, Saturday in PJ Hilton. Beautiful hotel and nice food aside, the most interesting thing is the question itself. Here's my take on it.

The questions are slightly more difficult than what I anticipated. Consequently I did not prepared well. Could have used some study on operator precedence and etc. But what the hell...

The questions are broken into 3 sections. The first section aims to test your general C/C++ knowledge. If you can't get pass this, you probably won't do so well in the last 2 sections. In the second section, you have 2 major questions. For the first you get a question on arbitrary multiplication (something I've written before, to solve a n-factorial question). Basically you understand the code, and you answer questions based on it. For the second question, you are shown a flowchart of a hotel room vacant search problem, and you answer a few objective question on it. For the last section, there is 2 problems. For each you are expected to write your solution on the question paper itself. I wish I have slightly more time to complete the shortest path finder problem though *laughs*.

It was a great experience. I enjoyed every moment of it and if I did not win, I'll try again next year.

Wednesday, December 05, 2007

You can't change your personality

Personality, like they said, determines how people think of you. If you constantly be nice to people, people will have a great impression of you (But a minority of them might labeled you as someone who can be taken advantage of). Be mean to your friend just once, and you'll be forever condemned in their eyes (But most of them will labeled you as a selfish friend). This is not at all unreasonable, as your friends are always right (sort of). You are not always wrong though, but what you see as something quite reasonable and fair, your friend may not see things the same way. That's OK though, as your friend is right, and you're wrong, mostly.

From my point of view, one can certainly change his personality, and thus, behavior (People always do). However, when you change, you risk offending your friends. For example, you used to be nice to people, you always helped them with their responsibilities, at the expense of your own time, never mind you have to stay overnight to do it, risking the fact that you may not have enough time to complete your own work. One day, when you decided that it is a foolish thing to do, and you break the behavior. The problem with that is, people are not expected to have a radical (It's considered quite radical, actually) change of behavior. If you do, people could come up with various wild conspiracy theories about why you don't help them and most of the time the conclusion that they have come up with will not be in your favor. Precisely why, is totally beyond me. Perhaps that is how the human brain works. They're designed to be suspicious and always think of the worst scenario (Though I was told that girls has an extreme version of this ability). This ability, is useful in the sense that, it allows people to prepare for the worst, such as deserting friends that has lost its usefulness. Not everyone do that, but some do (though some that do, without realizing it).

Now, what happened when you have a change of behavior that do not benefit your friends? Various things happens. From now on, you will be suspicious of everything. Even things that are not of your fault. You are of course expected to live with that, since you are the one that initiated that change of behavior. And you can't blame them, since in theory, your brain works the same way, just that in this case, you are the one that has changed, not your friend.

In spite of all this, should you care about all these complexities? Probably not. All you have to do, is determine what is the best you can do to yourself first. This is not selfishness, this is called self-interestness. Unless of course, by valuing yourself more than others you harm a great number of people. In which case you should probably sacrifice yourself like Jesus does. Don't worry, as you would surely go to heaven (The bible says so).

I for one has got tired of trying to be someone I'm not. I'm not a stunt man. I don't pull stunts in real life. Stunts like helping people finish his assignment when I have more important stuff to attend to. It's not a lame excuse to bring harm to my friends. Rather, it's a hard conclusion I've come to after I've done a full reality check on myself. And the reality is indeed a cruel one. The question is, is the world becoming more cruel and bleak? I think not. It's merely becoming more matured. Likewise, a matured person tends to not take things likely. They think twice before jumping into conclusions.

Sunday, December 02, 2007

The difference between help-needer and guide-needer and etc

Continuing from my last post, I figured that I need to clarify a few important points before I'm being classified as someone evil on the same league as Osama Bin Laden.

1) I don't help people, does not mean I don't guide people. There's a world of difference between people who expect you to do his/her entire final year project/assignment/tutorial and people who just need your guidance. I have my respect for people who just need some guidance. I however, have ZERO respect for the other. What for, since he/she expect to gain something without doing anything.

2) I still do freelance. Well, despite all that, I still do freelancing. I just don't do charity. But sometimes it's a bit hard to difference between the two. Let's start with a few examples. "I want you to do an e-commerce web site that can buy/sell books. Like lah. I will give u RM 100 to do it. Want ah?" - This is a charity. "Eh.. can you help me do this assignment a? I spent you eat lo..." - This is also a charity. "Can you develop a cinema ticketing system for us? We (Company XXX) will pay you RM 5,000 for this. - That is freelance (If it conforms to market price).

3) My purpose is not to offend people. I don't blog to get attention. Or to blog with the intention to offend weaker people. To me, that is not my purpose. Instead, this is their choice, their own doing. That said, NO one wish to be weak. Well, that's mostly true. HOWEVER, like the saying goes, "everyone wants to go to heaven, but no one wants to die to get there," the problem is, every computer science students wants to be god programmer. But ask them to spend 11+ hours everyday infront of the computer screen doing programming exercises, reading programming techniques, reading books on new programming languages, analyzing/modifying other people's millions lines long code and etc, they say you must be crazy. The thing is, every rewards comes with a price. If you pay the price, you reap the rewards. It's as simple as that. If you pay peanuts, you get peanuts. That's not cruelty, that's reality.