My blog has been moved to

Monday, September 25, 2006

always yummy

So here is another 80r1n6 c00k1n6: mi goreng spesial pakai tahu+ayam+telur, roughly means fried noodles with tofu, chicken and egg. So easy to prepare you can do it blindfolded :-)

80r1n6 c00k1n6

This is just like any other mi goreng recipes, except that I tend to add lots of garlic (vampires, if you read this, it is not recommended for you!) so that it smells fantastic, put few grated lemon peels, scramble the egg before frying the noodles, prepare the chicken with extra ginger and use melinjo crackers (instead of prawn ones). The sweet boiled corn perhaps does not belong to it, but since I like it, well there it is...

Sunday, September 24, 2006

yummy (again)

Just to show off my l4m3 c00k1n6 ski11z:

l4m3 c00k1n6 ski11z

For the curious, it's nasi lemak served with lemon chicken. It may look ugly, but it is very tasty :-)

And happy Ramadan!

Saturday, September 23, 2006

New LyX on the block

LyX 1.4.3 has been released. This is the third in 1.4 series and contains some bug fixes. I've been using 1.3 for some time but recently decided to jump to 1.4.

One of the interesting LyX 1.4's new features is change tracking. This is very helpful if you collaborate with other people. You can easily merge (accept or reject) the changes. Deleted texts are marked in red, modified texts are in blue. For each change, who makes it and when it is made are also recorded:


For SUSE users, I found that the easiest way to install it is by using Smart, just follow this easy-to-follow step-by-step instructions if you don't have Smart yet. From there, you just need to pick up lyx 1.4.3 from Guru's RPM channel, available since yesterday. Couldn't be easier.

If you compile from source and you are on AMD 64-bit processor, you may face a configure error. After fiddling around for hours, I found out that the solution is quite simple (and very obvious): run configure like this

./configure --with-qt-libraries=/usr/lib/qt3/lib64 
--with-qt-includes=/usr/lib/qt3/include --with-frontend=qt 

Alternatively you can try the CMake-based build system (yes, it's CMake!). Use directory development/cmake/ in the source tree as the argument to cmake.

Still stuck with Windows? Get the LyX installer. As I type this, version 1.4.3 is not available yet (hopefully soon, the latest is still 1.4.2). This installer will - surprisingly - install LyX and when necessary also MikTeX, aspell, ImageMagick and Ghostview. After few easy steps, you'll have a ready to use LyX system.

Update (9/28/2006): LyX 1.4.3 installer for Windows is already available.

So why are you still there? Grab it while it's still fresh.

Friday, September 22, 2006

Does not exist

A philosophy professor walks in to give his class their final. Placing his chair on his desk the professor instructs the class, "Using every applicable thing you've learned in this course, prove to me that this chair DOES NOT EXIST."

So, pencils are writing and erasers are erasing, students are preparing to embark on novels proving that this chair doesn't exist, except for one student. He spends thirty seconds writing his answer, then turns his final in to the astonishment of his peers.

Time goes by, and the day comes when all the students get their final grades ... and to the amazement of the class, the student who wrote for thirty seconds gets the highest grade in the class.

His answer to the question: "What chair?"

(always from

Wednesday, September 20, 2006

My dream mobile phone

Update: finally I settle with a Motorola w205, a simple mobile phone without any unnecessary gimmicks.

I already have a black RAZR, but I don't feel that it's my dream phone. So here is a list of requirements for a mobile phone that someday I would like to own (oh, how old fashioned I am!):

1. No camera. Not a single pixel. I don't need such a built-in camera. I'm not a photographer anyway. And if I need to take pictures, I still have (and love) my digital camera. In case I forgot to bring my camera while witnessing a beautiful moment, I choose to let this moment lives in my mind.

2. No ring tone. I don't like customizable ring tones. And I prefer to have my phone just vibrates so that I wouldn't accidentally shock and annoy somebody else due to an incoming call. For alarm purpose, I still have a cheap radio-synchronized clock (with a very annoying alarm, which is important) at my disposal.

3. No music player. I hardly have time to listen to music from a normal MP3 player, let alone from a mobile phone. If I travel, I prefer to read books. Or to think about anything. If I really really need to have some music, the basic USB-memory player is usually sufficient. My music collection is very limited anyway.

4. No radio. Same reason as above.

5. No Bluetooth. At home, the only device which has Bluetooth support is this RAZR. So what's the point of having it if I could not exchange anything with any other gadgets?

6. No advanced connectivity, either hardware or software. No WAP, GPRS, UMTS or any other cryptic abbreviations that laymen hardly can understand. Except for trying WAP for the first time (back then in 2001) and just out of curiosity, I never touched it anymore. I have no urgent need to always have latest access to any web sites or my e-mails. I'm not a road warrior.

7. No Java. No games. No entertainment stuff. If I really really need to kill time by playing something, I could still practise e.g. chess in my mind (I'm a very bad player, but you get the idea).

8. No PIM applet. I am not a busy manager. My schedule is very simple and I seldom forget anything important. A simple clock and a normal monthly calendar could still be useful, but not more.

9. No color display, if that reduces both the price and the current consumption.

In exchange for the above, I'd expect these:

(a) Decent battery, and thus less often to be charged. Ideally even only once a month. In this modern world, we can have lots of different types of chargers. It would be too hassle to even deal with these chargers every now and then.

(b) Usable interface. No endless items in the menu. No flashing but useless animations. No need to tap some buttons hundred times just to start writing an SMS. No automatic default to T9 or some other text prediction system that can't be turned off.

(c) Excellent form factor. Not too small and not a large as a brick. Something physically similar to RAZR is not too bad. I prefer clamshell model because I like it and I think it's more practical to use.

(d) Can be used to place and receive a call :-)

With this no-music, no-web, no-fancy-stuff, no-singing-and-dancing requirements, I guess I have to go back to an old model. But which one then? What would you recommend?

Tuesday, September 19, 2006



Details vs Knowledge

Normally we tend to admire those who can spot the small details that others will not even bother to notice. But sometimes it can be a different situation:

A: So to prevent the copy, here I define a copy constructor but I place it in the private section of the class.

B: (after carefully analyzing the implementation line by line) But you don't implement this copy constructor at all. It's in your class declaration but I can't find it in your .cpp file.

A: No need to do that. I don't want to implement it. I just want to ensure that it won't be called because it's private.

B: (again reading the implementation code) Is there a reason why you won't implement it?

A: (already slightly upset) No specific reason. You can implement an empty construct for that copy constructor in the .cpp file, if you want.

B: Then you'd better write that empty construct. What's so difficult about it? It's better to do that rather than taking the easy way out not to implement the copy constructor.

A: (decides that it is useless to argue) OK.

A ends up being annoyed for the whole day. Not only he wastes his time with this unnecessary hyped drama, he is accused of taking "the easy way out".

This case could also possibly explains why some untrained eyes file a compliant because you did optimize part X of the program but simply skipped part Y. The same eyes did not watch you as you spent few sleepless nights with the profiler.

Wednesday, September 13, 2006

Underwater effect

Update: don't fancy compiling/testing the code? See the short video clip.

underwater effect

I found one piece of code which I wrote a very long long time ago.

Remember the original Quake? When you submerge, the software renderer performs a simple but interesting effect. The view is somehow warped periodically. It turned out that you just need only few lines of code to achieve such effect. Just see the code if you're curious.

Of course, looking only at the above screenshot is not enough. You must see it in action.

Tuesday, September 12, 2006

Semiobligatory cocktail

How to make an ariya
1 part pride
5 parts crazyiness
5 parts beauty
Layer ingredientes in a shot glass. Top it off with a sprinkle of fitness and enjoy!

Personality cocktail

Sunday, September 10, 2006

Negative words and confusions

This could be another example of bad usability.

An optical attenuator is - without doubt - a useful device in lab works. A variable one is suitable for many practical tasks. One of the variable optical attenuator from a well-known vendor has a front panel like this (I know, this sketch is lame):

The seven-segment display shows current attenuation level in dB. It can be changed using the three buttons next to the display (under the label VERNIER).

The INPUT and OUTPUT ports are very clear, they are where you plug the fiber connectors. The light coming out from the output port has less power (as it is attenuated) compared to when it enters the input port.

The POWER switch (it's toggled switch BTW) has a red LED. The meaning of this LED is also quite clear. If it is on, then the device is powered on (which just makes sense).

It is the DISABLE switch that is quite of a question. This switch has also a red LED attached to it. However the meaning of this LED can't be deduced easily, or you may need to consult the handbook to confirm your understanding. For example, if we take it that when the LED on the POWER switch is on than the unit is powered, does that also mean that if the LED on the DISABLE switch is on than the unit is disabled? Or is the other way around, an active indicator (like the LED) means that the unit is actually enabled?

And what does disabled actually mean? Does it mean that no light is coming out from the OUTPUT port, i.e output is fully blocked? Or does it mean no attenuation takes place (i.e. the output power is the same as the input power?

This looks simple, but consider that the light might end up in a sensitive (and possibly also expensive) photo detector. Yes, people shall read the handbook first, but such simple matter should be straightforward anyway.

Saturday, September 09, 2006

Malware warning

It's been in the news since one month, but only recently I got that message when using Google:

malware warning

If the API is made open, it will be interesting to integrate this into open-source browser (Konqueror and Firefox) so that the URLs which typed in by the users (not only the URLs given by Google) can be checked for badware as well. Of course, there's a privacy issue here to be taken seriously.

Monday, September 04, 2006

Patient and R6

To spark again my interest on 3-d programming, I decided to buy some games. Since I know a bit about the Quake engine, I wanted then to try something not based on it. And it doesn't need to be new. I am not a gamer, I just enjoy the technologies behind a game.

So when I looked around in a consumer electronic shop, I spotted Raven Shield, the third installment of Rainbow Six, that is using the Unreal engine. It was sold at a very cheap price. Looks perfect. Ghost Recon was also available at a special discount, but then I thought two might be too many. So I happily grabbed Raven Shield, went home and gave it a try. I found that it is very similar indeed to Counter-Strike, so no difficulty so far. The characters are also familiar, since for quite some time ago I finished almost all Tom Clancy's novels.

A few days later, while shopping in a big supermarket, I stumbled to a corner where old games were offered. The price was even more unbelievable, half of what I paid for Raven Shield. I doubt that it can even cover the CD and packaging cost. So I searched for something interesting and finally got Vietcong and Splinter Cell. Just before I left, (to my surprise) a box which looked very familiar caught my attention. It is nothing but that Raven Shield! So, if I can wait a few days, I'd get it cheaper. What a coincidence.

But it did not stop there. Last week when I searched for some reading, a game magazine looked quite interesting to me. I wanted to buy it until I realized that this magazine includes a full version of Raven Shield and Ghost Recon! These are exactly what I wanted the week before. It took couple of minutes until I could decide not to buy that magazine. I somehow believe that in few weeks, there will be another magazine which includes only Ghost Recon.

After all, perhaps all I need is just a magazine subscription.

Sunday, September 03, 2006

More on the effect of language immersions

If you learn enough German but then need to write or speak in English, you may often be tempted to use the following words (at least, in my case):

trainer. It looks like a perfect English word, except that it will confuse people. What is usually meant is actually coach.

mother language, because the German word is die Müttersprache die Muttersprache, but it should be either native language or mother tongue.

I read a roman, and yet difficult to catch because Roman is likely something or someone from Rome. It should be then a novel.

make a picture while the word make here should be take instead.

Saturday, September 02, 2006

Trick film

For those who don't know German, maybe you can still guess what Ellen meant in her last blog entry. Yes, it's simply cartoon. I reckon it's just a literal translation from the German word der Zeichentrickfilm (or der Trickfilm). Interesting, isn't it?