Sunday, December 31, 2006

Old Shirt

Time to be sentimental: this shirt has followed me a long way. From US and back, then to Ireland, Hong Kong, and most recently, Singapore. I usually keep it in my luggage and bring it everywhere I go. However after this Singapore trip, I think it will be kept in the luggage for a long time, if not forever.

This is the closest I can get.

New Year Clean Up

A few people asked what I am up to for the new year eve. I replied "Clean up my room, and do some planning and thinking for the new year."

The response may sound cheesy, however I am serious in reducing the complexity in all fronts of my life. More specifically, I set out to reduce entropy as much as possible.

"A picture tells a thousand words", so the idiom goes. Here I have 4K-words worth of pictures:

Cleaning the book rack



Books everywhere

During the height of my reorg, all drawers unpacked

Done!

Forrest Gump has a metaphor of life is like a box chocolate, you never know what is inside until you open it.

My metaphor is as follows:

Life, is like a Windows machine: you never know when it will crash.

Happy New Year

Internet and My Daily Life

Recently the earth quake in Taiwan had caused a world-wide havoc: it torn off the communication links connecting Asia and US.

For days the Internet was excruciatingly slow, or downright dead upon loading. I heard news reports of some Internet users started to get irascible, uneasy, and even sleepless for lost of Internet connection. Typical symptoms of addiction.

For me initially that was some discomfort as my periodic goofing off had come to an end. But after some time I found out I am more productive and can actually think more without Internet.

To start with I am not a big fan of using the modern tech devices, especially handphone and TV. After finding out I can actually live with minimal Internet usage, imagine how much time I can save on this?

To celebrate this new-found reality, I rushed out and bought two books from the Borders. Ok ok, I said I won't buy books anymore, but hey, this is eventful enough to warrant some books. No?

Tuesday, December 26, 2006

New Year, New Resolutions

I am back from the Singapore. It was quite a pleasant trip which let me to uncover a lot of things about myself, Malaysia, and Singapore. I shall list these one by one.

My original plan was to visit Mr. Snail and hopefully, MAK. No doubt I met snail and he was alive and kicking. My first gratitude goes to him who has played host for the entire duration and survived my MAK-induced mood-swings these few days. Anyway, I will leave this topic alone for the mean while.

Now we have the topic of Malaysia vs. Singapore. There isn't much room to argue in term of positive metrics: economics, competiveness, or competency. One of the items kept echoing in my head has been: why stay in a place where you are not likely to fully utilize your potential? The pressure is there, and I am sure it will be tougher to work in Singapore. Regardless the result, myself, my parents, my PC, and even my cat in heaven will be proud of the fact of at least I have given it a try, and mind you I am confident I am as good as any engineer out there with comparable experience and education level. So just bring 'em on.

Before I sign off, here are some pics of Singapore. :)

Modern art in the exhibition center




Taken from Esplanade

Thursday, December 21, 2006

Cuppa Chai - On Vacation

I will go to Singapore to visit Snail and hopefully, MAK (hello, you there?)

Most probably no update until Dec 26, 2006.

Merry Christmas!

Little Wonder

The yellowish stuff on the floor are steamers, made from bamboo for steaming food. These utensils are used to cook and warm the food during 'yum cha' (Hong Kong style breakfast with hot chinese tea and special dishes).

Penang is still keeping Chinese traditions on bay.

Life consists of little wonders that we come across daily. =)

Tuesday, December 19, 2006

Another Day in Fire Fighting Mode

It's yet another day in my in-job fire fighting.

Exhausted but have learned a lot on hardware and in particular, labview programming. My Christmas vacation is getting closer and naturally, I am looking forward to it.

Saturday, December 16, 2006

Other People's Problem

OPP stands for "Other People's Problem", unlike Other People's Money (OPM), OPP isn't something you will enjoy. However in life sometime you are unlucky enough to get trapped in OPP and have to clean up others' mess.

I got this thought after working for the whole Saturday in office, troubleshooting and testing a shit created by other people. The funny thing is the guy who started all this mess didn't come to office. Adding insult to injury is I still got to get back on Sunday. Duh.

Though ranting as I am, this company is at least doing more right things than the wrongs compared to 'Company I' which screws up in every way imaginable. I wonder if Sir Murphy has significant stake in it.

As a corollary of my hypothesis: "when a good employee joins a bad company, usually the latter reigns", I truely belive this applies not only to companies, but also to countries equally well.

Thursday, December 14, 2006

GnuCash 2.0.3 Bug Fixing

(gnucash:12739): GLib-CRITICAL **: g_date_set_month: assertion `g_date_valid_month (m)' failed

(gnucash:12739): GLib-CRITICAL **: g_date_strftime: assertion `g_date_valid (d)' failed
I had seen the error messages above so often that after 10 minutes, I decided to fix them.

I searched for the error messages and soon landed at the month_name function in src/gnome-utils/gnc-dense-cal.c

#define MONTH_NAME_BUFSIZE 5
/* Takes the number of months since January, in the range 0 to
* 11. Returns the abbreviated month name according to the current
* locale. (i18n'd version of the above static character array.) */
static const gchar *month_name(int mon)
{
static gchar buf[MONTH_NAME_BUFSIZE];
GDate *date;

memset(buf, 0, MONTH_NAME_BUFSIZE);
date = g_date_new();
g_date_set_month(date, mon);
g_date_strftime(buf, MONTH_NAME_BUFSIZE-1, "%b", date);
g_date_free(date);

return buf;
}
The comment above has it: the variable mon will be from 0 to 11 and the number 0 is what choked glib. This is done.

Next, the error message on strftime is cryptic. I went online and searched for what actually g_date_strftime expects and what g_date_new does. From a reliable source, it seems g_date_new creates a new date which is invalid, to make it valid we can use the function g_date_new_dmy.

With all these, let's whack the bugs:

#define MONTH_NAME_BUFSIZE 5
/* Takes the number of months since January, in the range 0 to
* 11. Returns the abbreviated month name according to the current
* locale. (i18n'd version of the above static character array.) */
static const gchar *month_name(int mon)
{
static gchar buf[MONTH_NAME_BUFSIZE];
GDate *date;

memset(buf, 0, MONTH_NAME_BUFSIZE);
/* date = g_date_new();*/
date = g_date_new_dmy(4, G_DATE_JULY, 2006); /* initialize to sane value */
/* printf("%s: setmonth is %d \n", __func__, mon); */ /* Debug statement */
g_date_set_month(date, mon+1);
g_date_strftime(buf, MONTH_NAME_BUFSIZE-1, "%b", date);
g_date_free(date);

return buf;
}
GnuCash developers have my permission to incorporate this fix into the project if they wish.

Upgrading GnuCash

Gnucash 2.0.3 is out. Since there are some weird stuff in 2.0.2, I did an upgrade to see if the bugs are fixed.

Compilation was really a breeze because the Gnome environment is already up (I am using garnome). All I have to do is to issue the following commands:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:[path to gnome pkgconfig directories]

export PATH=$PATH:[path to gconftool-2 directory]

./configure --prefix=[path you want]

make;make install
My build was done without any errors after about 20 minutes. During execution there were some warnings from Glib on illegal parameters for the date functions.

I grep'ed the code and opened up a few C files which had the matching string.

The programming style is certainly not defensive: return values not checked, shabby handling of pointers, use of magic numbers, etc.

Some people argue on the ground that checking all these will slow the program down and add overhead. Well, this argument is only valid in very few corner cases where timing is very critical and computing resource is extremely tight. I don't see these conditions exist for most projects, including this one.

Given these folks are working on this project for free, and the fact that some salaried programmers are writing even crappier codes. I can't complain.

Wednesday, December 13, 2006

Tenacity

Found these plants amazing. They survive and thrive under such bad condition. Note this is a tennis court at a 5-storey building top. The soil is the accumulation of debris and dusts carried by wind over the years.



So, our upcoming motto: fight like a plant (or does 'veggie' sound better?)

Monday, December 11, 2006

QueensBay Mall and Question on Homegeneity


Tata, here you go: QueensBay Mall, the latest and supposedly the greatest place in Penang to burn your money shop.

This gigantic building houses hundreds of shops selling branded goods (read: one piece of underwear will cost you a fortune kind of shop) and a variety of eateries. The greatest news is: once inside, it looks almost the same (forgive my obsession to use the word 'isomorphic') as any shopping malls in this world. The ad flyer claims Penang has become a relatively advanced place because the world renown brands have established their outlets here.

Wait, did I say the QueensBay Mall is isomorphic to all other shopping malls in the world? If it is isomorphic, then it is not unique. But aren't we cherishing creativity, individualism, and therefore uniqueness? Looking like others is first of all not 'cool', maybe downright boring. If not cool and not unique, we are not an 'advanced' entity in any measure. If we are not cool not advanced, then we are not Boleh!

This finding is more disturbing than finding out monkeys in fact is the devolution of some brain-dead politicians instead of the other way round. (Ok, this statement is awful. I apologize. I know, I shouldn't insult the monkeys)

(Boleh is a Malay word meaning 'can' as in 'can-do'. Usually this is mainly used in the term 'Malaysia Boleh!', chanted proudly after numerous expensive record-breaking but useless projects like building the largest cake in the world, tallest tower made from pokers, biggest malaysian flag made with 1 cent coins, etc. Exact rationales please contact your nearest zoo which has monkeys)

We have a problem it seems. Let's step back and think. Is modernisation really bringing uniqueness and individualism? At the surface it sounds true, you can dress and do whatever you like, as long as you are within the legal bound (or you don't let others see it, or you live in BolehLand).

I want to argue that modern society is more homogenous than it seems, especially now information travels almost instantaneously.

The latest fashion in Milan today can be bought the next day in Woman Street in Hong Kong with only fraction of the pricetag and if you are nice to the sales-girl, she may give you a pair of socks for free. Fashion is definitely contagious and homogenous in this sense. If you don't look like the norm, others will chide at you "Oh my god! You are so out of date!" Heck, so where is the uniqueness?

Look again at what we read and more generally, what we know. We go to similar news sites and read similar news. For any questions, we automatically google for the answers and land on basically the same pages, no matter you are from US, India, Antartica or Singapore. It is not surprising to see more and more people in different geographical regions have similar thoughts and world views, because they are exposed to the same information.

The upcoming challenge is no longer about insufficient information, in fact, what we are critically lacking of is the critical thinking skills to differentiate, filter, absorb, and apply the barrage of information on time while maintaining our own identities.

May the power with you to make you as Boleh as possible, but not more Boleh. Meow.

Sunday, December 10, 2006

StarWalk and A Look At Our People

StarWalk is an annual event held by the Star Newspaper in Penang and is considered a pretty grand event. Today was my first time to participate in this 10Km walk competition. The walk started at 7 morning and there were people all over the place.

I was late for almost 7 minutes because the police seemed to block all the entrances to the starting point. I had to park my car around 2 Km away and walked.

It was a decent day for this event: the sky was clear, wind was gentle, and not much birds flying around, which meaned less bird shits from above. Good.

Near the starting point

The walk, by definition involves walking, which is the alternate mechanical movements of legs. Other parts of body were pretty free and therefore, bored. Since all my friends joined the non-competition section (aka admit-as-loser-before-competition-starts section), I was walking alone.

Nothing much interesting on the way, until we hit a stall giving out drinks using paper cups. All walkers rushed to the stall like hungry wolves. What followed was memorable: there were paper boxes beside the road acting as trash bins, but for some reason, Malaysians just like to throw to places like drains, by the roadside, on the pedestrian cross, someone's house compound, and virtually anywhere and everywhere, except into the very trash bins. In fact I checked and most of those were less than half filled.

Note the boxes by the road side, those _are_ for trash disposal. The stall is at the far end

This picture was taken at the same location as the previous one, except I made an 180 degree rotation

I could see many people just threw the cup anywhere so naturally as if it were the right thing to do. I was both amazed and embarrased. Advanced country? I doubt it. At least the mindset isn't.

Saturday, December 09, 2006

Organic Store War, The Movie

Store war is a short movie about organic food using Star War's theme. The making is clever and well-thought-of.

At a deeper level, we should rethink what we humans have done to land ourselves into this state: Not long ago before the industrial revolution, all food were organic and in fact, there was no other alternatives anyway. In less than one hundred years, we have screwed ourselves so badly that we have to pay much higher prices for organic produces; pay for something that initially belonged to us.

Now buying drinking water is already common in a lot of countries. Most probably a couple of decades down the road we will have to buy fresh air in canisters. This isn't funny.

CEO in Commercials

Steve Wozniak is one of the Steve's who founded Apple.

I came across a TV commercial he starred for Datsun (here).

This commercial fits him quite well though.

It will be entertaining to see:

  • Bill Gates selling safe
  • Michael Jackson promoting plastic surgery or diaper
  • George Bush Jr. promoting world peace
  • Chen Sui Bien (president of Taiwan) promoting the virtue of honesty
  • Bin Laden selling medicine
Any other suggestions? :)



Thursday, December 07, 2006

StarWalk 2006

I just got my goody bag for the upcoming StarWalk this Sunday.


The goody bag has a whole array of free stuff that are absolutely random in nature. The gamut spans from a candy bar to a tube of petroleum jelly (by the way, the jelly has coagulated in an ugly way. I wonder if it has expired)

My first biggest challenge will be to get up early (enough) on Sunday.

Wednesday, December 06, 2006

Computer Languages Overflow

The unprecedent improvement in hardware processing speed not only spawns a lot of new programming languages, but also resurrects a lot of dead ones. Needless to say, without those dual, quad or upcoming octo cores which offer higher and higer processing power, these languages are basically useless 5 years ago.

Well, maybe a little bit exaggerated but recently there are a hell lot of programming languages out there. Here I count distinct languages (not the implementations though) instead of family of language, ergo even OCaml is a dialect of ML, I count them separately.

Here is a list that I can think of:
  • C
  • C++
  • Common Lisp
  • Scheme
  • OCaml
  • Haskell
  • Python
  • Perl
  • ML
  • Ruby
  • Visual Basic
  • Parrot
  • C#
  • Ada
  • Cobol
  • Smalltalk
  • Erlang
  • Java
  • Fortran
The list can go on and on, but these are what I have read about recently.

For some reason, a lot of people tend to take a particular language (usually it is the language they love) and hail it as _the_ language by having language shoot out, functional comparison, or comparing on the ground of aesthetic beauty. I have seen some paper heralding a particular language X and to show the comparison is 'fair', language Y and language Z are included.

Some points to ponder upon:
  1. Each language is designed with a certain domain in mind, Fortran is mainly for numerical computing, while C is more of a low-level, system programming. No language can excel in everything.
  2. When you have a hammer, all problems will look like nails. If you are used to programming in C with the weakly typed system, the strongly typed system in ML will most likely drive you to smash your monitor and chew on the debris. Each language has its own caveats.
  3. When writing test programs in different languages, not many people can fully utilize the power of each language in question. Even if you invite so called experts to join the fun, the problem definition most probably will already give some languages an unfair advantage. Having the unfair advantage usually doesn't imply that language is superior, just the problem on hand matches its design domain (cf #1 above).

Having this rant after reading a paper on a multi-threading model built on top of scheme and was compared against the god-daddy of reliable and multithreading language, Erlang.

If you force a dog to meow, you get a lousy cat, and a very unhappy dog.

Luckily I am a cat person. Meow... Wait, someone calls me a wolf??? Hmm...

Monday, December 04, 2006

Book Mark File

Once upon a time circa year 1996, bookmark files were plain ASCII html files. Things were simple and straight-forward. I always liked to edit the bookmark files using my good-old vim to reorganize things.

This evening I was trying to sync my laptop bookmark with the one in my home pc. To my horror, the diff just gave me a ton of junk. Upon inspection, it seems nowadays the browser even embeds the site's icon images into the bookmark files.

This approach is hideous. What are the advantages? Save some bandwidths in retrieving the icons? The saving will be minimal because the icons are in the order of less than 1 kb.

The verdict is out: Whomever came out with this idea should be locked in a smelly toilet for 3 weeks, with no internet access, of course.

It is time to write some scripts to parse the bookmark and remove all the icon data. Duh.

Saturday, December 02, 2006

FD Formula on GnuCash

In my previous post on GnuCash, I showed the steps to install GnuCash on Slackware 11.

It is not trivial, but doable.

These few days I have been busy setting up GnuCash with intention to dump MS Excel. As usual, the journey wasn't smooth-sailing.

The first problem I encountered was there doesn't seem to be any way to automatically manage FDs (Fixed Deposits, it is called Certificate of Deposit, CD in other countries).

Scenario: I have a amount p of money as FD. The FD will mature every n month and interests generated will be reinvested at the prevalent rate.

What I want: GnuCash to automatically renew the entry at the maturity date. As long as the FD is valid, GnuCash should take care of that until being told otherwise.

As usual, good news and bad news:

Bad news:
Surprise surprise, it seems GnuCash can't do this by default. There are druids to calculate mortgages and loans, but none for savings and FDs. (I checked the wiki and help files on gnucash.org, to no avail. In fact, the formula gnc:computerInterestIncrement on the wiki FAQ is wrong). You can verify it with any financial calculators.

Good news:
The underlying toolchain is written in scheme. This makes GnuCash very flexible and hacking possible. What follow are some pointers.

Assumptions:
  • You have read the GnuCash help files and know the concept of debit and credit
  • You know how to create accounts under GnuCash
  • You already have at least one FD account under Assets and one under Incomes. If your bank charges you on this, add one more account under Expenses and the following steps need some adjustments.
Steps to Fix:
  1. Exit GnuCash
  2. Edit fin.scm (inside /usr/local/share/scm if you use the default configuration)
  3. Add the following at the start of the file, right under the comments (comments are lines starting with semicolons ';').
  4. Note: Blogspot has broken some of the comment lines, please fix those by yourself.
  5. ;
    ; By HKC Dec 02, 2006
    ;
    (define (futureValue p r n i)
    (let ((rate (/ r 100)))
    (* p (expt (+ 1.0 (/ rate n)) i))))

    ;;
    ;; This function calculates the interest yield for the i-th month.
    ;;
    ;; Example: With principal of 10000, interest rate 10%, and interest ;; is calculated and reinvested
    ;; monthly at the same rate, we want to know how much money we ;;can get during the 8-th month.
    ;;
    ;; Invoke (gnc:interestYield 10000 10 12 8) and you should get 88.31767424426289
    ;;
    ;;
    (define (gnc:interestYield p r n i)
    (let ((this-val (futureValue p r n i))
    (prev-val (futureValue p r n (- i 1))))
    (- this-val prev-val)))

    ;;
    ;; This function calculates total interest accrued, assuming all ;;interests are reinvested at the same rate.
    ;;
    ;;
    (define (gnc:interestAccrued p r n i)
    (define (sum-it sum i)
    (if (= i 0) sum
    (sum-it (+ sum (interestYield p r n i)) (- i 1))))
    (sum-it 0 i))

  6. Start GnuCash, and Actions->Scheduled Transaction Editor. Click on 'new'.

  7. Enter a name and set the date according to the maturity of your FD.
  8. Under 'Template Transactions', enter a description, then click on the 'Enter' icon. We need 2 action items: one for debit and one for credit. If you are not sure about this concept or how to do all these, please refer to the GnuCash help files.
  9. At the debit field, enter 'interestYield(p:interest_rate:compound_number:i)' where p is your principal amount, interest_rate is the current rate entered as-is (if it is 3.3, just enter 3.3, my function will do the conversion accordingly), compound_number refers to how frequent interest is compounded (monthly -> 12, quarterly->4, semi-annually->2, annually -> 1), i is the i-th occurence of the compound event. This variable can be entered as-is and no need to substitute it.
  10. Examples: Suppose I have principal amount of 1000 to invest. Interest rate is 5% and will be compounded monthly. Hence I would enter:
    interestYield(1000, 5, 12, i). If the interest is compounded yearly, then I would have entered interestYield(1000,5,1,i). The rest is similar.
  11. Enter the same formula for the credit field.
Upon the maturity specified, Gnucash will automatically credit your account and you never need to worry about it anymore.

I wrote this in quite a rush. If there is something unclear, please let me know and I will be happy to clarify.

Thursday, November 30, 2006

On Wealth Distribution

Paul Graham has an interesting article on wealth distribution:

Mind the Gap

For those who are impatient to read the whole (long) article, here are some excerpts that are relevant to our topic:

"With the rise of the middle class, wealth stopped being a zero-sum game. Jobs and Wozniak didn't have to make us poor to make themselves rich. Quite the opposite: they created things that made our lives materially richer. They had to, or we wouldn't have paid for them."
...
[snipped]
...
"If you suppress variations in income, whether by stealing private fortunes, as feudal rulers used to do, or by taxing them away, as some modern governments have done, the result always seems to be the same. Society as a whole ends up poorer."
Curiously, some people in this country still think wealth is only limited to tangible entities like land, batu seremban, and teh tarik. Thus, wealth division to those people is still similar to dividing a cake with you will take less if someone else takes more.

However, is this really true? Here is an interesting analogy I read somewhere:

Get a few friends, say 3 of them and form a circle.

Take out a $5 note and ask the person next to you to do you a favor, say give a massage, help to scratch your back, etc. and pay that person the money. The person who receives the money will do the same to the next person. This process is repeated until the money is circulated back to the originator.

Has anybody become a loser in this game? No! Each person has gotten something that he/she desired and the $5 note remains the same shape.

We have created a trivial $20 worth of wealth with everybody winning


In other words, people create wealth by providing conveniences and advantages to others (think Apple or Toyota), which in turn, will aid others to create wealth. In the process everybody is getting richer and has better living standard. Why can't Malaysia do that for a win-win outcome?

Should you have the courage to read something heart-sinking and discouraging, take a look a blog entry by Lim Kit Siang below:

Keris-wielding Hishammuddin the most divisive and polarised Education Minister in history

Tuesday, November 28, 2006

Time to Think

The following pictures are from Jeff Ooi's Homepage

Hishammuddin in 2005


Hishammuddin in 2006


Don't ask me when they want to do this


Note: In case you are not aware, Hishammuddin is our education minister.


Traditional Chinese Fonts below, translation follows.

我读了这篇社论, 感慨万分。 毕竟各民族生活在同个屋檐下, 理应同甘共苦, 为全球化的冲击作准备。 反观我们的所谓‘领袖’,在国家级会议上抡刀动枪, 不是为了抵抗外侮, 而是研究怎样更进一步的把同国的华族人士赶尽杀绝。 这事发生在已独立40年的国家,是一种堕落。

文中提到: “基於共同的前途,的的確確,應該要深沉思考了!”。 只怕现在我们要思考的,已不只“共同的前途”那么简单。

(星洲日報/夜雨晨風‧作者:鄭丁賢‧2006/11/17)

是時候做一些深沉的思考了。

有人在大會上說,不要怕流血。

有人說,希山慕汀的馬來劍甚麼時候才要“刺”出去。

有人說,行動的時刻到了。

真的有如此深仇大恨嗎?

族群之間,雖然文化背景不同,看法意見有差別,但是,只要是人,都會有差異;然而,差異絕對不應該是仇恨。

沒有!任何頭腦還清醒的人們,都會瞭解沒有仇恨;看看周圍,也確實沒有仇恨。

相反的,族群之間,實在有著更多的共同點,互相諒解、接納和協助。

我們不是在開齋節、農曆年、屠妖節都開放門戶嗎?我們不是在運動場上並肩努力嗎?我們不是一起拼經濟、拼治安嗎?

我們不是對外宣傳,馬來西亞是亞洲文化融合的匯集嗎?我們不是曾經引以為傲的說,這個國家是族群和平共處的楷模嗎?我們不是矢言要成為先進國嗎?

我們不是擁有同樣的一個國家嗎?

但是,就在一個大會,為了一個議程,這一切,都被拋諸腦後。

有人很輕易的辯解說,這只是配合一些特殊的需要,不需要在意。

然而,一個個鏡頭,透過電視現場廣播全國;一句句話語,透過報章的引述,傳給所有人民。

仇恨的種子,可能就此播下。族群之間的友誼、信任、合作,也許就開始變質。

一分鐘的激昂,抵銷了一年的努力;5天的集會,消磨了一個國家的願景。

為了“特殊”需要,值得嗎?

作為執政黨,任務是建設國家,塑造團結,這是人民的付託。國陣的架構是權力分享,協商共治,這是政府的基石。

如今,一幕又一幕的攻訐,讓一些人民情緒高漲,另一些人民擔心失望;對友黨的無情攻擊,力道不下於對政敵的廝殺,這讓友黨日後如何在國陣的旗幟下爭取支持和認同!

基於共同的前途,的的確確,應該要深沉思考了!

English Translation (Not verbatim translation, but the meaning is there):
After reading the following write-up, I can only relent. The fact that we, the Malaysian people, live in the same country, on principle we should help each other and cooperate to counter the impact of globalisation. However look at our so called 'leaders', in a national party assembly, they wielded the 'keris', a traditional Malay short sword, and acted as if they were going to a war. Their warring effort wasn't targetting any foreign invading powers, but instead towards the Chinese Malaysians who are hardworking and therefore better-off. It is shameful to let this incident to happen in a country that claimed independence 40 years ago.

In the write-up, it says "base on our shared future, it is time for us to ponder upon this issue seriously." Given the current political climate, I am afraid what we need to think is more than "our shared future".

(Sinchew Daily, by Zheng Din Xian. 17 November 2006)

It is time to think it through.

In the Umno party meeting, someone advocated not to afraid to shed blood.

Some inquired when Hishammuddin would really thrust out his keris instead of just holding and kissing it.

Some said it was the right time to fight.

Is there so much hatred among Malaysians? Or more specifically, among Malays and Chineses?

There are definitely inter-racial differences in terms of cultural background and world views, but no matter what, each person is unique and thus differs from the rest. Therefore differences should never be the source of hatred.

'No'! Any person with a rational mind will understand there is no hatred; look around us, really, there isn't any.

On the other hand, there are alot of similarities among us. We should understand, accept, and help each other.

Aren't we celebrating Chinese New Year, Hari Raya and Deepavali together? Aren't we cooperating and cheer for each other in the sports events? Aren't we working hard for our future and fighting crimes together?

Aren't we telling the world we are the melting pot of Asian cultures? Aren't we saying we are the model of harmonious multi-racial society? Aren't we vowing to be an advanced country?

Aren't we embracing the same country?

But for a party assembly and for some (personal) agenda, all the above were forsaken.

Somebody will try to argue all those were for a 'special occasion', and we should take that with grains of salt.

But all the actions were broadcasted live to the country through the TV; all the words were brought forward to the people through newspapers.

The seeds of hatred may be sowed. The friendship, trust and cooperation among races may start to mutate.

One minute of 'show time' destroyed the whole year's effort to unite the country. The 5-day assembly, killed the nation's vision.

Because of the very 'special occasion', does it worth it?

As the elected political party, its tasks are to advance the country and build up unity. This is the entrustment of the people. The framework of the National Party (in Malay, Barisan National) consists of sharing of power and ruling through negotiation with other member parties. These are the cornerstones of our government.

Right now, attacks after attacks to the member parties (which consist of Chinese and Indian parties) are stimulating certain race's sentiments but scaring and worrying other races. Forays against the friendly parties are as merciless as to enemies in field, how are all the member parties to unite after this?

Base on our shared future, really, it is time for us to ponder upon this issue seriously.

Sunday, November 26, 2006

Quest for Duck Rice

It was a lazy Sunday noon. After spending hours in front of the computer, I decided to take a break and drove to town for the famous duck rice in bookshop street.

As usual, the shop was crowded.

With a glass of ice tea, I gazed upon the crowd of people and let thoughts flowed through my head. "Such a long queue", I thought.

I started to ask myself questions.

Question 1: Why this stall is so crowded?
Answer: Because the roasted duck tastes good.

Question 2: As a customer, will I be happier if the food comes faster?
Answer: Oh yes, I am dead hungry.

Question 3: Why customers are waiting?
Answer: Overwhelming orders. The stall owner is preparing food non-stop.

Now I could easily model this using queueing theory. To make life simpler, I assumed the arrival rate and processing rate as constants.
a: Arrival rate (traditionally called lambda)
b: Processing rate (traditionally called mu)
In front of us is a queueing system with one server. The queue was building up, obviously the load, defined as a/b, was greater than 1, i.e. a > b. This is an unstable system when the queue is of finite length.

The next question is: how to remove the bottle-neck?

There are 2 ways that I could think of: Increase number of people serving, or increase the processing rate. The latter doesn't seem viable, because I believe the stall owner will try to maximise profit by churning out as many outputs as possible, he has no incentive to drag. Therefore any effort to increase the speed may most probably result some extra flesh beside duck's meat on the plate.

We are left with option 1, which is to increase server number. The owner may want to save cost by not hiring any helpers, but does he really save money by doing that, or he will gain even more by selling more, making customers happier, while providing a job to some poor soul?

This is an interesting question. Let's stretch this even further: assuming the food quality doesn't deteriorate, he could open a few more outlets. At that time, what he needs to do is to ensure the quality of the roasted ducks remains the same. He may earn much more while doing less, because he hires others to do the donkey work. Market elasticity test may need to be carried out to ensure market is test for the optimum outlet size...

(My food arrived at this point and I forgot the rest of my thoughts)

Finally. Conclusion:

I am not doing this analysis completely for fun, there is a message within it: Opportunities to improve things abound, decisions are with us most of the time.

I invite you to do a deep retrospect, and optimize bit by bit. Have you found your bottle-neck lately?

It is addictive to do thought experiments like this.

Saturday, November 25, 2006

Team Building and The Push of Physical Limit

My company had a team-building event on Friday at Jerajak island. Jerejak island is about 10 minutes of boat ride from the Penang island. Despite the claim this island is 'rich with history' because the 'founder of Penang' Francis Light landed on it in 1786 before he found Penang, to me it looks just like yet-another-piece-of-island.

The day started with an annoying alarm call at 7a.m. Those who know me well are aware, 7a.m. is well helluva early for me, but to catch the boat to the island, I dragged my butt to the jetty _very_ reluctantly and got on the boat.

I took the boat to Jerejak Island from this jetty

The boat chuckled along the coast line towards Jerejak island, I gazed at the buildings with a blank mind, thinking to get a cup of coffee to wake up my mind. Boy, my brain was in hibernation mode.

At the island, we grouped in teams and had the typical drills for team-building: telematch, jungle exploration (also known as 'mosquito feeding sessions' or 'whack the bug activity') and wall climbing.


Grouping in front of the hotel

Rock Climbing:
One of the activities we had was rock climbing. Standing in front of us was an artificial wall around 20 feet tall with various protrubing holds. There were altogether 3 paths with varying difficulties. I conquered the normal one without much fuss. After 20 minutes, I thought I was ready for the hard one. Slowly I ascended with full confidence. Just 3 feet below the top, I found my hands and legs had involuntary fatigue spasms, I wanted to move on, but my body wass out of control and failed me. My body couldn't stop shaking. I was dangling at such height and I realized my very own limitation. Finally I just released the grip and let the training supervisor to lower me down using the rope attached to the safety harness. The lesson learned is: physical strength comes from training, not from wishful thinkings. For the Mount Kinabalu trip, i have a lot of catch-ups to do for training.



Everybody clamped inside one room

All the physical activities ended around 5:30p.m. and we had 2 hours of free-and-easy time before dinner. We just spent the time chatting and eating tidbits in the hotel room. We were all 'rotten' and said silly things, but it was quite fun to do all these once in a while, just to release tension in work.

The dinner and night proceeded without anything interesting. I relaxed myself and chatted casually with my newly-acquainted colleagues. The next day we had a treasure hunt. That was all of my team-building activity. Despite the fact the site was so near my office and Penang, going to a new place does switch the pace of life.

On the way back to Penang, well, this is the Penang island at my left side, if you turn right, it will be the Jerejak island. It is _that_ close to each other.

Wednesday, November 22, 2006

Analysis of Cost Reduction Through Natural Attrition

Today's topic is more on corporate study which is my first hand observation in my previous company.

"Natural Attrition" sounds deep, but in reality it means people leaving a company (hopefully) in a voluntary way. This topic reads as: A company will have less staff over a certain period of time due to people leaving 'naturally' (whatever this means). As a consequence of that, it saves cost.

A lot of companies now employ this strategy. Some reasons belo, listed in descending probability. Last item having probability asymptotically close to zero:
  1. Avoid possible law suits
  2. Avoid being smacked by unions
  3. No money to pay for severance packages
  4. Want to save face/corporate image,
  5. Want to treat employees nicely.

From the surface this sounds good, looks good and even feels good for those high above. Here, I want to argue why this logic is somewhat flawed.

First of all, this strategy will work as expected if the following conditions hold:
i. Employee population is homogenous in terms of competency
ii. (most important) Attrition rate is uniform across the homogenous population

If any of the above doesn't hold, the company is entirely in different path. I will illustrate this with a pseudo-story ('pseudo' because some of these are real):

Let's take a hypothetical company I as example. Company I is a multinational company making toilet bowl and flush. It has dominated that market over 3 decades with plants in US, Malaysia, China, Ireland, and India. However, recently another company, Company A, has developed a kickass product with two water-flushing cores (also known as dual-core flusher) and best of all, those flushers are much more resource saving and won't soak up user's pants. Now company I is in deep shit. Market share is shrinking, company is inhibited by useless employees who are only skillful to backstab each other, and product in the pipelines are all messed up.

The first in place is cost reduction measures, which include each employee is rationed with one roll of toilet paper each month and no more. Pencil erasers are replaced with saliva'ed fingers. Building service contracts are terminated and employees take turns to clean up the office buildings. Hiring? You are kidding. Company I doesn't want to lay people off because the management still thinks natural attrition is the best solution.

As work load builds up due to no replacement, pressure is proportionally mounting among employees. The entire corporate morale is dropping like stone. People start to look for a way out after fed up with numerous business update sessions which go something like: "This is yet another winning quarter for us with year-to-year income increases by 450% because US bombed the shit out of Iraq and they are toiletless and gotta order 30 million of seats from us. But for strategic purposes, we still won't give any bonus this year anyway. One more thing, we will heat up the left over from yesterday's breakfast as your lunch.... (the following is in quick continuation with no pause) Questions? No questions? Excellent!"

What kind of people will leave?
  1. People with real ability, who are capable and marketable
  2. People who dare to take risks and endure uncertainties
  3. People who don't care too much money on paper (stock options, share grants)
  4. People who just hate Company I's culture
Now by taking the negation of the above list, it is easy to see what kind of people will stay:
  1. Politicians or Jokers who are dead-idiots with close-to-none competencies (with exception of back-stabbing techniques)
  2. Risk aversing people who need job security, or simply don't want to take any risk
  3. People who don't want to give up the not-vested options and grants
  4. People who love the company (!!)
Note someone may in one or more categories above. A company that has people in even one of the non-desirable groups, will be in trouble.

Let's analyze, #1 is obvious, politicians and jokers will only add chaos in the company with no real contributions. In fact, they even will drive away those who are competent to secure their jobs. #2 is also close to useless. They may be apt for a tobacco company where business has been the same for the past and coming 100 years, but for a high tech company like I, they won't help much. #3 maybe, but these people are very calculative, they would reason the heavy workload was not justifiable for the pay they received, hence would jump already if they could, too. #4 is so rare that I have yet to come across one. If you have known any of #4's, please gimme a call so that I can send them to museum for preservation and added protections.

We can see over time, the company is left with a pool of mostly useless, incompetent employees. That company may achieve the size reduction it desires, but what is the cost? The right way should be to analyze and single out the low-performers and painstakingly lay them off. This is the golden time to trim the dead corporate branches and purge the idiots out. This was what Jack Welch did to GE when he just took over and won a notorious title of 'Neutron Jack'. However over the years, he was proven correct multiple times and GE was back as one of the best corporates in the world. Can Company I spring back to action? I doubt it.

Tuesday, November 21, 2006

What I feel

(Simplified Chinese Encoding below...)

还是用中文,身为华人写一个贴子也死都用英文,我觉得愧对自己的文化。

这些年来我大部分时间用英文来思考,来写作,有时真的对中文很陌生。 是时候啦,就算输入比较慢,也凑合凑合吧。:)

Translations:

Decide to use chinese characters, as a Chinese but keeps on using English for posting, I feel ashamed to my own very culture.

Throughout these years English has been my primary language for thinking and writing. Often I feel Chinese is totally alien to me, which isn't right. It is time now, even though the typing is slow, I will make up with that. :)

Monday, November 20, 2006

When Toys Become This....

Contrary to what the milk powder manufacturers and tuition centers want you to believe that consuming their products will make your kids smart and "so clever", we know not all kids will make it to successful and normal adulthood. No matter what brand of milk powder you feed them or what kind of conselling you provide, they just lapse into the social abyss.

Competition is fierce in every aspect of life, and it is no exception even for underground activities. To prepare them for these, we need this $14.99 GR8 TaT2 Maker by Spin Master Toys. The ad goes:

Open up your very own pretend play tattoo parlor. This easy-to-use tattoo maker kit includes an electronic tattoo pen and funky stencils. Using soft, safe pulsating action, the tattoo pen creates realistic, washable designs with dramatic effects.

This world is soooo weird. Beats me.

Sunday, November 19, 2006

Microsoft's Anti Linux Ad


This is an anti-Linux ad by Microsoft published in 2000 in a German magazine. I quote the original source on the meaning of the text, the source has a lot more on Linux and MS, an interesting read.

Microsoft's marketing focus on Linux's liabilities, bugs and 'unpleasant mutations' was made explicit in an advertisement in Germany's most prestigious tech magazine, c't, in October 2000. The two-page ad shows penguins with an elephant's nose, a frog's head and rabbit ears, with the caption: 'An open operating system does not only have benefits'. ('Ein offenes Betriebssystem hat nicht nur Vorteile.') The text continues: 'An open operating system sometimes just mutates. Conversely, Windows 2000 offers all services from a single source'.
References:
http://www.vandenboomen.org/wiki/OpenSourceArticle (Same as the 'source' link, just want to be formal on citations)

Friday, November 17, 2006

Chinese on Linux (Slackware 11)


This is the last piece that I need before I can ditch Windows completely: Displaying Chinese fonts on my Linux platform. Now reasons I boot into Windows will be to open MS Office documents or play games.

I will document the steps. Hopefully this will be of use to all others.

My system is running X Windows System version 6.9.0 on Slackware 11.

To start, you need to download the true-type fonts, can be downloaded from the following websites (one of them will do), I tried the first one wqy and it works:

http://wqy.sourceforge.net/cgi-bin/enindex.cgi (English)
http://unifont.freedesktop.org/wiki/Software_2fCJKUnifonts_2fDownload (English)
http://sourceforge.net/projects/freeunifont/

I downloaded some true-type fonts (they should have the .ttf extension) and dumped them into /usr/X11/lib/fonts/TTF.

Update the /etc/X11/xorg.conf, search for FontPath, you will see a 'Files' section. Add one more line pointing to the TTF directory, as shown below in blue.

Section "Files"

# The location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)
#
# If you don't have a floating point coprocessor and emacs, Mosaic or other
# programs take long to start up, try moving the Type1 and Speedo directory
# to the end of this list (or comment them out).
#
# ModulePath can be used to set a search path for the X server modules.
# The default path is shown here.
# ModulePath "/usr/X11R6/lib/modules"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/local/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
EndSection

Restart X-Windows.

If you are in runlevel 4 which only logs you off and show the login screen without quitting the X-Windows, you may need to restart Linux (not necessary, but easiest). Should you want Linux login to land on command prompt instead of windows manager, you can edit /etc/inittab and change the initdefault from 4 to 3. The next logon you will land on the command prompt. To start X-Windows, type 'startx'.


Thursday, November 16, 2006

On Research Integrity in Malaysia

This is an exception because I usually don't like to talk about politics. Well...

Some of you may aware there has been a heated debate on corporate equity ownership by Malays. The government's figure is 18.9%, but an independent research body, the Asian Strategy and Leadership Institute (Asli)'s Centre, reports the percentage could be as high as 45%.

To cut things short, because of all the hu-ha's, the center's director Dr Lim Teck Ghee resigned to "defend the position and integrity of independent and non-partisan scholarship"

There is an interesting interview with Dr. Lim here

We have good news and bad news:

Good news is this guy looks really far and can see the real situation in our country. Bad news is no one is paying any attention to him. Most probably he will leave the country like many other bright and capable Malaysians, serving foreign countries.

Credit: News link from Carina's page

Tuesday, November 14, 2006

GnuCash on Slackware 11. Running!


Finally I got this baby to run after hours of struggling. But the time was well-spent, first of all: I made it. Yeah!

As cream on the cake, I got the whole Gnome package installed on my computer with lots of sexy programs to play with (hey, completed with source codes. How much more we can ask for?). I am impressed by the quality of some open source software, say Gimp. I was trying to do a screen capture of my desktop and the misconception of "Linux means more nerdy work" still stuck in my mind. I was planning if I got to write a program to access the display framebuffer, read off the bitmap data, convert the raw data to compressed data, and save the file. Fine, I am ready. Guess what, the Ctrl-PrtScr sequence we are so used to under Windoze works on KDE + Gimp! Not only that, Gimp even has dedicated function (under File->Acquire->Screenshot) for this very purpose. The whole process just took 5 minutes (with 4.5 minutes playing with Gimp settings). Cool.

In retrospect, the road to this milestone (if it were really one) has been thorny and buggy, and I virtually touched all parts of the system. What I can pull off my head include:
  • Bad kernel include file. A program is using something only available in 2.6 series kernels (Solution: I pulled that header off 2.6 kernel and stuck that in my 2.4 kernel. It just works. ;) )
  • Pkgconfig problem (Solution: export the proper file path)
  • Docbook2html problem (Solution: Hack the docbook2html function to point directly to openjade, but a nasty hack because I didn't take care of some switches)
  • Guile and Slib problem (Solution: Hack the config file, as posted earlier)
  • Makefile problem (Solution: Manually add library load path on each Makefile)
  • Gnome installation problem (Solution: Clear the garnome cookie and force rebuild)
  • Crappy program Epiphany (the Gnome web browser) showing very useless error message:
    error: "mozilla" flavoured geckos aren't tasty enough!
    Ok, you can be funny, but you still need to provide more information on what the hell your program is expecting. Aren't tasty enough means WHAT??? All other issues are fair game to me, this one really pisses me off. (Solution: Just skip this crap. I have my dear firefoxy with me, I no bird it)

Nerd Score

Ok, after viewing F.Stream's nerd score, I also planned to give it a shot.

The result isn't that good, because it proves I have no life. Gah, I post it here:

I am nerdier than 98% of all people. Are you nerdier? Click here to find out!

Sunday, November 12, 2006

Slackware 11 and the Adventure with GnuCash & Gnome

I have read quite some rave reviews on the open source financial management package GnuCash. Since I have my Slackware 11 machine up and running, I thought installing this package will be something like 'a walk by the country side'.

There are a few reasons why I am looking around for accounting software. Currently I am doing my balance sheet on an MS Excel spreadsheet but it is still lacking in many ways as an accounting package. On top of that, after spending RM300 on the Windows XP home edition, I am not interested to fork out any more money to MS to get MS Office suite. Time to give GnuCash a try.

Despite this software is built on top of the Gnome environment which is not supported by Slackware 11, I still thought it would be relatively easy to iron out the differences. Well, it is totally out of hand. Until now, I have encountered roughly 20 major or minor build issues (some of them related to Gnome) on my journey to compile this. "Why don't you just download the pre-compiled binary and run it?", yeap I did, but the dependencies of Gnome is nothing trivial either. I will document the major ones that I remember:

Guile vs. Slib
Packages in question: guile-1.8.1, slib3a4

This was the first problem when I ran 'configure'. The error message was cryptic. As a background introduction, guile is a scheme interpreter while Slib is a scheme library. Guile provides a library binding for slib (slib.scm) so that Slib functions can be invoked through Guile. In return, Slib itself also provides a init script for guile (guile.init) for the same purpose.

In the configure script, test for the presense of Slib is done through

guile -c "(use-modules (ice-9 slib)) (require 'printf)"
Explanation:
guile is the program, the -c switch instructs guile to evaluate the statement after the switch (similar to the -e switch for perl). The use-modules directive will ask guile to load the slib module in the ice-9 directory. After the use-modules statement is evaluated, it will proceed to call functions available through Slib, namely require and printf. The apostrophe (') is used to quote printf as a symbol so that guile will pass it to Slib.

The statement above should return no error. However upon running this, there is an error message:

ERROR: Unbound variable: slib:features
After over 10 hours of debugging, I found out Slib changed the function name from *features* to slib:features and thus obsoletes the library binding of Guile. With this in hand the solution is simple and straight forward: either hack the configure and change that line to:

guile -c "(load "/path/to/slib/guile.init") (require 'printf)"

or you could copy guile.init to the ice-9 directory, replacing slib.scm. Some editing is needed on the guile.init file to make it work though. More specifically you need to change the first line to

(define-module (ice-9 slib))

I am not sure if this copy and paste method will break anything. You are warned.

Saturday, November 11, 2006

Making D-Link DWL-G510 to Work Under Slackware 11

[Updated Nov 12, 2006]
  • If during insmod or depmod the system complains of 'missing wireless_send_event', this means the Wireless LAN option is not compiled in. Just reconfigure the kernel and enable that, no need to select any other specific wireless driver under that option though.
I have been busy tinkering with my Linux box these days, and I am planning to write two blog entries to document my findings.

First will be this one, on how to make the DWL-G510 rev. C wireless card work under the 2.4 kernel of Slackware 11. If there are enough requests (pls drop a line at the blog comment field for that purposes), I will work on the 2.6 kernel also.
Second article will be on compiling GnuCash, I already settled the issue with guile and slib after 2 days of wrestling with it.

Back to the wireless card: I browsed the web and from this link I learned the rev. C card is using Ralink chipset. This piece of information is all I need to get started.

Before we start, here are my system specs:

- Slackware 11.0 running kernel version 2.4.33.3
- LinkSys WRT 54G as my router
- Wireless network is protected by WPAPSK with TKIP as encryption method
- My ISP doesn't require any authentication for network access
- My IP is static (WRT54G doesn't seem to work well with Linux, I can't get the DHCP to work)

Since you are using Slackware, I am assuming you have a healthy dose of background in Linux and knows how to untar files and invoke a compiler. But I am happy to add this info if there are requests.

Before you start, you need to:

Steps:
  • Untar the driver tar ball
  • cd to the 'Module' directory and read the 'readme', yes, it is important to read it.
  • [Optional] It seems the people in Ralink are using windows to edit the source codes (or the version control software automatically save files in Dos format). We need to rectify this or else 'make' will complain and choke. We can clean up the mess using the dos2unix command (if your system has it), or we can issue a perl one-liner, as documented below.
  • Command sequences:
  • cp Makefile.4 Makefile
    make
    perl -pi -e 's/\r\n/\n/g;' *
    mkdir -p /etc/Wireless/RT61STA
    cp rt*.bin /etc/Wireless/RT61STA/
    cp rt61sta.dat /etc/Wireless/RT61STA/

  • You will get a kernel moduel rt61.o, this is what you need
  • Edit the rt61sta.dat according to your need, if in doubt, please consult your service provider. The readme has a pretty decent explanations on the parameters.
  • Do a sanity check, no error should be seen:
  • /sbin/insmod rt61.o
    /sbin/ifconfig ra0 inet 192.168.1.2 up
    /sbin/route add default gw
  • Try to ping your router or any system in your subnet. If it works, then your wireless card is up.
  • Now to make it fully automatic, we need to integrate this into our system. Make the following directory: mkdir -p /lib/modules/`uname -r`/rt61, then copy the module in.
  • Execute depmod: 'depmod -a'
  • Edit /etc/modules.conf, add the following lines (I assume it is empty, or you need to adjust accordingly):
  • keep
    /lib/modules/`uname -r`/rt61
  • Next edit /etc/rc.d/rc.inet1.conf, edit the profile for wlan0 and replace accordingly with the following:
  • IFNAME[4]="ra0"
    IPADDR[4]="your IP"
    NETMASK[4]="your net mask"
  • Reboot the machine. You should be all set.

Tuesday, November 07, 2006

Trip to Tempurung Cave

Last Saturday I explored Tempurung cave with F. Stream. The cave is around 200 kilometers away from Penang.


This trip was interesting on two fronts: first, there were initially 10 people: I, F. Stream, and his 8 colleagues, but for some weird reason, all those 8 people suddenly couldn't make it at the day before with almost the same reason. Nice, only left I and F. Stream for the expedition, I still decided to go on anyway. The second front was on myself, I regard this as a challenge on planning and plunging into the unknown.

6:45 a.m.

Morning street in front of my apartment

7:00 a.m.
My breakfast
7:15 a.m.

Penang bridge in the morning sun

Braving the sun!

Scene on the way to the cave
10:00 a.m. - 10:45 a.m.
Upon arrival, the local tour guide told us the 'grand tour' had a minimum requirement of 8 ppl., so we were short of 6 and the cut off time was 11 a.m. We waited for more potential explorers to come. People flew past us, small children, young couples, old folks, foreign visitors, local teachers, but we couldn't make a match, most people just preferred the easy, dry routes and avoided the 'grand tour' which was wet, strenuous, and muddy. However we decided to fight the real war, so we kept waiting. Luck was with us finally, 6 nice fellas from LogicaCMG came along and we had a team. :)

11:00 a.m. - 2:30 p.m.


Somewhere in the cave

2:30p.m.
At the exit of the cave, yes, we were at the middle of a stream

4:00 p.m.
Heavy downpour on my way back....

Raining scene as seen through my side window

View through my windscreen
7:00 p.m.


Arrived Penang exhausted. But I still dragged myself to get a Logitech keyboard. Well, for gaming purpose. Gotta bomb da snail. :P

Lessons Learned in This Trip:
  • Plan for the worst, hope for the best
  • Break things in smaller, logical entities and conquer them one by one
  • Things aren't as tough as they seem to be, attacking will make them easier
  • Taking actions is always better than keep thinking of the consequences

Monday, November 06, 2006

Negation of Good Software Engineering

While I was reading some random blogs, Stevey's blog on good and bad agile programming caught my eyes. That article is a long-winded one, touching on the agile programming methodology.

As an example of good programming practices, he quoted Google. What I found amusing was everything we did then was exactly the negation of what is being done in Google. The up-side for me is all these things I realized were unproductive and complained loudly to the management. Even though nothing was done and I left, but I am glad at least I tried.

Here are some examples (as according to Stevey):
  • Most Google managers code at least half-time
  • Schedule pressure is minimum, at least there is no Gantt chart floating around
  • Developers are encouraged to spend 20% of their WORK hour on their own projects. Please note I high-lighted 'work' to signify these are real working hours, instead of weekend or evening hours
  • There aren't many meetings
  • The work space is quiet

Saturday, November 04, 2006

A Boring Annual Dinner

Friday night I was invited for our company's annnual dance and dinner party, however I will say the outcome is disappointing. First the food, except the cold dishes, sucked big time, second, the performances were arranged such that there was not even a minute without music and more generally, noises. Although the theme of this dinner party was 'for bondings among colleagues', but with music volume so high, definitely I couldn't talk to the person opposite the table, for those beside me, I had to yell at their ears. I really doubt if any bonding could be done.

Wednesday, November 01, 2006

How To Be a Manager, Part I

You can always learn how the best management practices from Dilbert

Original comic link is here

System Is Back Up

My system is back running more smoothly. After reinstalling everything, the mic is working now and I will stick with whatever software version comes with my Intel motherboard, as long as it works, I am happy. Upgrade too aggressively really landed me in deep trouble.

My dual boot system in action

My skype is back to business now. Random calls welcome.

Tuesday, October 31, 2006

Computer Act II

My Skype is not working: the mic just can't receive anything no matter how loud I speak to it. After trying out with Fam, I heard his "Anybody home?" but my calling of "SNAIL!!" went no where.

The verdict turns out the D945PSN 'classic' board has some problem with the audio driver. Before I start, here is my system specs with my own judgement on their respective quality/usability in the bracket(), with A being the best, B above expectation, C meet the expectation, D below expectation, and finally F, fail:

  • Pentium D 2.8 dual core processor ( D )
  • Intel D945PSN motherboard ( D )
  • 2Gb PC4200 DDR2 RAM ( B )
  • Leadtek Winfast 7300GT TDH video card ( C )
  • Seagate 150GB SATA drive ( B )
  • Seagate 200GB IDE drive x 2 ( B )
  • Lite-On DVD Writer ( D )
  • iCute medium tower ( A )
  • Cooler Master eXtreme Power 430W ( A )
As you can see the overall rating for me system is a C, with the culprit of the Intel CPU + motherboard. The DVD writer is also not functioning well because while it is reading, it is very obvious you can feel the drive really revs up the motor to extreme speed. From college physics I recall there is preservation of angular momentum. I wonder if it was true for my drive, it would have had enough energy to run my car for a year or so.

Initially when I first went to purchase these parts, the candidate I had was AMD Athlon64 X2 3.6K with an Abit KN9-Ultra, but the salesperson told me these were out of stock and Intel CPU + D945PSN were what I could get without waiting. Now only I realize why the Intel goods were in stock while the AMD's were not. :( The DVD writer was chosen by myself because I learn this model can be recognized by the OS X. That is another story though.

With my system in a ugly state, I don't have many options. Either I can reinstall the system and hope for the best, or I can get out and buy new CPU + mobo. Now I am pursuing option #1.

Monday, October 30, 2006

Forgot to Install Skype!!

Over these few days I have been crazy optimizing the system to make it more useable, but I forgot to install one thing: Download and install Skype as promised. Oh, what am I doing here.....?

This will be the first thing to do when I hit home.

Blame it on MS for delivering such mediocre product, which is partially true. ;)

Lesson Learned:
Must prioritize my tasks and stick to the schedule.

Sorry about that....

Sunday, October 29, 2006

Sunday Activities

10:00 Woke up, went out to have breakfast. Bought a copy of newspaper and found out the news isn't pretty as usual.


11:30 Rolled my sleeves and cleaned up my PC. Reassembled the components to make it saner and to make myself happier.


System before clean up


My PC before the clean up
System during clean up

12:30 Cooked a veggie broth and had a quick lunch

13:00 My DVD writer was set as slave, conflicting with another IDE hard drive, reset it as IDE master. Voila, now they can play well together. Boy, the system is as hot as a radiator, too bad there is no winter in Malaysia.


14:30 Put everything back.
System after clean up (OK, still quite messy, untameable entropy)


14:45 Started to install Slackware 11.00
Package installation WIP

15:15 It is obvious the testers at slackware didn't test the packages on internationalization because many language packs are broken.

16:00 After I deselected the internationalization bundle everything ran fine.

17:00 Windows didn't boot properly, nvm, I went out hiking and decided to handle it after dinner

19:00 Had dinner. Windows failed to boot because after installation, the user has to manually toggle the boot flag through fdisk and reruns lilo to write the configurations back. Did that, reboot, Windows logo appeared.

19:15 I have a dual boot machine with XP and Slackware 11.00

Saturday, October 28, 2006

MS Sticker

I was having problem to deal with the MS sticker bundled with my PC, I found Paul Graham's idea illuminating:

Ok, enough MS bashing for the day.

Original URL: http://www.paulgraham.com/designedforwindows.html