Saturday, March 31, 2007

The Accolade...

All of sudden some old memory flashed across my mind...

Dear reader, if you are from Purdue, do you recognize the painting below...?

The Accolade

This painting is called 'The Accolade', by Edmund Blair Leighton, and is displayed prominently in the computer room on the second floor of MSEE (just next to the sky bridge connecting the Physics building).


The first time I took a close look at this painting was with MAK. Then I had no clue what it depicted and commented something like, "Gee, this lady wants to execute the guy"... Then she told me the queen was bestowing knighthood, instead of cutting that guy's throat. I stood corrected. :)

There was another painting, 'God Speed' by the same painter on the sidewall of that computer room.

God Speed!

All those memories... :)

Wednesday, March 28, 2007

My Poem

Tomorrow is a forward frame,
Yesterday is a backward frame,
I am sitting in today the intra-frame

DCT anyone? try predictive
P-frame corrupted? That is subjective
I must sign off, before I am negative

Ok, this sounds crappy, I am quite positive

(Note: Consequences of reading the MPEG format for the whole darn day...)

Sunday, March 25, 2007

Geeky Night Out

Since these three guys are exceptional vocal at work, I only show their silhouttes to protect their identities

F. Stream visited Penang last Friday and as usual, we went out for some good food and drink.

What would 4 engineers talk about after food and beer? This time the main theme revolved mainly around work, meetings (and meeting minutes), incompetent colleagues, and stalled projects.

I found myself remained silent most of the time during the discussion in meeting minutes and the need to keep records straight. I do agree with most of the points made, but for some reasons I already lost the drive to push for changes and screw those who can't even write things properly.

One reason may be my current job has minimal meeting, something like once every month, thus I have no fumes to vent. Another reason is I have slowly avoided to be under the spot light as problem solver or corporate hero. In other words, I am incrementally careful to pick the wars I want to fight. If something is assigned to me, I will resolve it properly, but I no longer take up any more responsibilities than necessary like what I did in Intel. Instead, I will funnel those requests to the appropriate stakeholders.

Learning how to delegate and how to say no are two most valuable things I learned so far.

Sunday Random Walk

This morning I was a bit adventurous for food and drove down to GeorgeTown. Instead of driving around, this time I parked my car and wandered around.

A random picture of a random road mark

I found a food stall along the roadside that was exceptionally bustling with business. Base on my personal experience, busy business usually implies good food. Therefore I entered and ordered the food: fish rice noodle (in chinese, rice noodle is called 'bee hoon')

Bustling stall, note that all the people here are staff

I sat and waited for a good 45 minutes. That place was seated around 40-50 patrons while new patrons pouring in constantly. The demand was amazingly huge which explained the large number of staff. Although I didn't eat anything for the morning, and the cup of hot coffee made me feel even more hungry, my inert drive for good food fed me with ever more patience. I waited and waited and finally....

Good food, coffee isn't bad either!

The verdict is: it worths every minute of my wait, and I will have another plate next weekend.

P/S: Note to myself and to those who plan to visit me: Pls remind me to bring you to this place. Nice food.

Saturday, March 24, 2007

Linear Algebra and Life

Today I am relatively free, and am able to afford time to examine my own life.

I can't help it, but I keep on equating life with linear algebra. This is pretty amusing and weird.

If we can equate each action in life as a vector in some well-defined space, then the combinations of actions span the space of life, just as a set of (linearly independent) vectors will span a certain space (ok, there are mild constraints, omitted). Life is definitely non-linear, and each action has consequences, but this thought model is interesting by itself.

Sometimes I do ask myself why I have chosen to live the way I am living now. The subsequent question naturally will be: what other options you have, and why not? To answer this, I have enumerated and evaluate those choices.

For example, I don't like to watch movies and tv. After considering the alternative and experimenting, I still decided not watching is better. Blame it on the movie or entertainment industry, but I just find those programmes suck big time.

Another example is on applying styling liquid to my hair. The reason to use the styling liquid was to (hopefully) look good and more mature. I concluded that by not using the styling liquid, I could save time (no need to comb hair every morning), save money (no need to buy that liquid), and be healthier by applying less chemicals on myself. To address the issue of looking good and more mature, I reasoned as long as I am clean and tidy, uncombed hair shouldn't matter much. The next day I went to have a crew cut, and ditched the hair-making ritual from then on.

This kind of question and answer sessions spans most of the choices I have made. I can't claim my current chosen actions are optimal and well-tuned, because I realize there are some fears, doubts, uncertainties, and wishful thinkings involved when making decisions. That is why life sometimes is both fun and frustrating. :)

Friday, March 16, 2007

Kernel Upgrade Advisory

[Updated Mar 18]
The 2.6.20.3 also gives problem in network connectivity. At this stage I am not sure if it is the kernel or the RT61 network driver, though my gut feeling is the latter. For now I am reverting back to the 2.6.18.3 version, until I have time to fire a debugger and play with the issue.

====
I had been experiencing network connectivity issue on 2.6.20.1 kernel. It is supposedly a stable release, but in fact it isn't. I just downloaded 2.6.20.3 kernel and hopefully the issue(s) are addressed (After one hour of running, it seems I can still edit this blog entry fine...)

If you are running 2.6.20.1 kernel, an upgrade is nearly mandatory.

As a side note, Minix is out with version 3!! It has its own site here. Minix is using a microkernel architecture and was first written for educational purpose by Andrew Tanenbaum, a renown professor.

If you are more OS-inclined, the wikipedia entry above has a lot of interesting stuff, which can safely kill hours of your time. Enjoy!

Thursday, March 15, 2007

Parkinson's Law

If I remember correctly, Parkinson's law states that a task will expand to fit a given time frame, no matter how trivial that task may be or how wide the time frame is.
One will just use up all the allotted time automatically.

Say someone is assigned a task that doesn't need more than 2 hours, Parkinson's law says the task still will not get done earlier if that person is given 2 days, or even 2 weeks.

Reverse may be true, but with a limit: If a smaller time frame is given, in the above case say we give only 1.5 hours, miracle often happens and that task really gets done on time (or at least won't be too far off from 1.5 hours). Bosses are one of the species on earth that constantly abuse this reverse principle: first by cutting the time estimation randomly, then further reducing the time by assigning 'resources' to 'help out'. The reasoning is innocuous at first sight: if a job takes you 10 days, then 2 people doing it will cut it into 5 days. However the underlying assumption is that particular job can be divided into independent chunks, often this assumption doesn't hold, especially in software projects. In fact, throwing more people at a late project will make it later (Fred Brooke's famous quote in his classical text, The mythical man-month).


All in all, these principles are good time management tips that we can try. Give ourselves a tighter margin (without telling the boss, of course), well, starting from tomorrow.

Monday, March 12, 2007

I Work, therefore Am I?

When I drag my tired butt out from the office at 8:30p.m. just now, I have been wondering what is the real meaning of adult life.

Look, since young, I have jumped through countless loops and hoops: woke up damn early (don't know about you, at least I did) to go to school, studied for exams for subjects that we never bothered and cared to know (Malaysia history, moral education, yuck), stayed late for homework, wrote lab reports, etc. Have been repeated all these drills until grad school.

Once I am out, the situation doesn't really improve, though the good news among the bad ones is now I have income. But since this is the real world, tax form is always arriving promptly. In fact, our government has been ultra efficient in sending out tax form and collecting tax. It is just plain amazing.

Back to the topic of jumping hoops and loops, now in work life, I thought things would be different, but in fact they are not: I still wake up early (nope, I no longer can sleep until 9:30a.m.), I still need to study for exams (they call it formal technical reviews), and I still stay damn late to get things done.

You may guess I just want no work. Nope, this isn't what I want. I figure that if I were able to quit working and do whatever I want, I still will take up a job that I like, though I will be much more choosy and relaxed than I am now (some people say this depends on attitude, I can be more choosy and relaxed even NOW. They have a point here). However I still am not sure what is the job I like, this is the problem I have been mulling over all these time.

Well, that is life.

Saturday, March 10, 2007

Distributed vs. Centralized Entities

In terms of computing platform architectures, we have mainly two types: distributed, and centralized. Google is the classical example for centralized processing: users don't do much of computations and all data are stored in servers. On the other end of the spectrum, we have distributed computing platforms, where users will store their own data and do the computations at their own ends. This turf is dominated by the computing devices that we know and love, devices running Linux, Windows, Mac OS, etc.

The interesting point is throughout these years, computing platforms are changing from centralized (the good old mainframes with dumb terminals), to distributed (advent of PCs and domination of M$ apps). The current nascent trend seems to go back to centralized architecture with server-side processing as can be seen on the popularity of web-based applications provided by Google.

If the development of computing platforms is indeed cyclic, then my conjecture will be eventually Google apps have to be distributed logically. In other words, eventually Google has to push applications and maybe, even data storage to user-ends. Google desktop is something I presume as the first step heading the direction of distributed processing. On the other hand, companies that dominated the personal computing arena, most notably Microsoft, are scrambling to centralized, web-based services. As each of these companies move to the other end of spectrum, eventually they will meet in mid-point and that is where things start to get very interesting and highly cut-throat.

As Google becomes more and more application-oriented, it will look more like MS. While MS is pushing itself to be more web-based, it is snapping up Google's market share as well and therefore more Google-ish. The clash of titans will definitely be interesting. The winner will rewrite the rule of future computing platforms, while the loser will be left in oblivion and soon forgotten.

Monday, March 05, 2007

Compiling a New Kernel

I downloaded the latest 2.6-series kernel (version 2.6.20.1) for a long time. Yesterday night I unpacked it as my bed-time reading and went for an initial build.

The first build was not working, the disk couldn't be mounted and kernel was panic. I went back to the config and compiled the SATA driver in. Second boot up was smooth, I could see the standard login prompt silently waiting and blinking.

Suddenly I felt good at myself: After so many hours I have spent all these years to compile the linux kernel, up from the 2.0 series until now. At least now I have an instinct on how to build a kernel and can get it right the second time.

This new 2.6 kernel seems to change quite a lot of stuff, most notable is my RaLink-based D-Link wireless PCI card driver no longer compiles, complaining "error: structure has no member named `get_wireless_stats'". A quick look at linux/netdevice.h reviewed that the function get_wireless_stats is deprecated in the struct net_device and got moved into some other places (to struct iw_handler_def in the 'net' directory actually). As social service to the world, I now fix it.

Steps:
  1. Backup your files
  2. Edit rtmp_info.c, search for the string 'rt61_iw_handler_def'. You will land on the definition of the struct. Remove the word 'const' from the definition
  3. Save and close file
  4. Edit rtmp_main.c, again search for the above string.
  5. You will land on the following line. Remove the 'const'
    extern const struct iw_handler_def rt61_iw_handler_def;

  6. At the same file, go to line 198, as shown below:
    net_dev->get_wireless_stats = RT61_get_wireless_stats;

  7. Change it to:
    rt61_iw_handler_def.get_wireless_stats = RT61_get_wireless_stats;

  8. Save and close file. Your module should compile. If you are bored, you may want to remove all compilation warnings. If you are really really bored, put a -Wall switch in the Makefile and remove all warnings

Saturday, March 03, 2007

Thoughts when I was Sick

Sickness, death, unhappiness, imperfectness have one thing in common: they all are classified as negative elements and no one welcomes any of them. However in the duration of my fever days ago, I was in a mental state where everything seemed really negative, dead-end, unrepairable, and hopeless. This was scary, but it also offered me an opportunity to ponder upon on this class of problems: sickness, death, and did some interesting experiments with my brain (it was idle anyway). In a world where optimism and positivism are endorsed, thinking all these negative terms is an eye-opener for me. Though I actually felt shit that time, but after I was through, I actually came out more positive.

My brain in 39 degree C has some interesting properties that aren't available in normal temperature of 37 degree C. The most visible property was the requirement for food and drink. My brain adamantly required plain warm water. Food-wise it asked for soup noodle or porridge. For the heck of it, I imagined various kind of food and drinks, like coffee, tea, milo, horlick, fried noodle, curry, etc. and 'offerred' them to my brain. My brain just rejecting most by saying 'not tasty'. As a note, yesterday when I was feeling better, the list I thought of earlier suddenly seemed more appealing.

I observe I tended to choose simple food and plain water when I was sick. I believe losing appetite to most food when sick is a natural protection we have. The advantages are we will get more rest as we won't have the urge to go out to find much food or food that is too exotic, second, by having relatively simple food, this will save the body some energy in digestion and thus accelerates the recuperation.

During that period, beside food, my brain also rejected most processings that need brain power. I guess in that kind of high temperature, my brain tried to maintain equilibrium and only preserve the most important functionalities. Anything that may perturb the equilibrium was instantly frown upon.