Gentoo Is Not for Everybody

August 22nd, 2008


Gentoo Linux is not for everybody, seriously. And by that I don’t mean only the average computer user, but also the majority of application developers. Of course, this is just my opinion, which I will explain below. I do not in any way mean that Gentoo Linux is inferior to other distros either; it’s great for people who care about customisation and speed, but not for those who just want a stable, working development environment.

To many people, the biggest attraction of Gentoo Linux is that you are effectively rolling your own flavour of Linux when you install it because you pick, configure, and build everything, even the installation CD. This aspect is different from most other Linux distros for which prebuilt installation CD images and binary software packages/repositories are available. The primary reason for picking, configuring, and building everything from source is the performance gain that results when the compiler and linker are optimising code for a particular architecture, even more so if object code is statically linked.

The majority of application developers, however, do not care about the performance of the OS hosting the development environment. Therefore, the performance gain from compiling everything from source is largely irrelevant to the application developer.

Furthermore, the difference in performance between Gentoo and other distros shall be significantly reduced nowadays. Gentoo, when it was still known as Enoch, used a fork of the GCC that provided about 10% performance gain over the mainstream, official version of GCC. This difference in performance no longer exists since the fork has been merged back into the official version of GCC. If you don’t care about the performance difference that remains, you might as well download binary packages; but if you are using binary packages, what’s the point in using Gentoo?

The Portage package system that Gentoo uses is also not something that the average application developer would like. Many of the packages have too many build options, and sometimes these very same options are under documented. For instance, the last time I counted, the package for the Apache server has around 60 build options, which do not exactly correspond to the options used with the configure script of the official source package from httpd.apache.org. Documentation of the options is impossible to find; even the popular Gentoo-Portage website has no information (http://gentoo-portage.com/www-servers/apache/USE#ptabs). Some of these options conflict with each other; the only way to eliminate all of the conflicting options is by repeatedly trying to install the package, allowing the portage commandline interface, emerge, to report conflicts one at a time, so that you can eliminate one of the conflicting options one at a time.

The application developer has enough to keep his hands busy and his mind on the brink of insanity. He cannot afford to lose time with compiling the development environment.

Gentoo may be great for top notch performance in the live, production environment; but if anyone asks me to pick a distro for development environment, I would pick Ubuntu over Gentoo any day.

Mobile development sucks - The cast

July 1st, 2008

I think that the people involved in my story can be divided into the following four parties:
  • My Boss, a GM
  • Me and my colleague, (junior) consultants by title, we are actually more like software testers in this project 
  • Our programmers for the various mobile phone platforms
  • Our client, a mobile network operator in a foreign country

Do you realise what’s wrong with this cast? I think I DO.

Where the hell is the project manager, the person who is supposed keep everybody in check? When I say “everybody,” I make no exception to the GM because the GM does not always remember that the underlings are all up to their necks with work. A project manager would be the person who makes a scene with the GM to refresh the GM’s memory. Underlings like me are too busy hacking away already, you know; they don’t have time to defend themselves against the waves of order from the GM.

And why is there no software architect? Who is supposed to guide the design and specification of our product? Who is supposed to keep all the different platform versions from careless differentiation? It doesn’t take a genius to understand that I can’t act as the software architect: I have neither the knowledge nor the experience related to mobile development.

Oh, did I mention that there is no infrastructure support? The developers didn’t even have a version control server that they can commit their work into because there is nobody to set up such an environment and the developers certainly have neither the permission nor the time for such.

:~ Kal$ ping *

May 13th, 2008


I know. I have not blogged for a few months now. The same goes for most of my friends. It seems that being away from school does drain the very soul out of us. Everybody must be busy with something and has lost interest in blogging. Let me list some of the things you can be busy with:

  1. Aimless browsing of Facebook
  2. Ignoring the hundreds of Facebook requests that you get daily
  3. Spamming your friends with Facebook requests
  4. Playing a Facebook game
  5. Reading Digg, Reddit, Engadget, or Slashdot
  6. Starting/engaging in a flame war on one of the aforementioned sites
  7. boys/girls at the office
  8. your boss’ hot secretary
  9. your boss/your boss’ hot daughter
  10. game consoles (and games) for which you finally have the money
  11. overtime work
  12. cooking (because you are living on your own now)
  13. laundry (same reason as above)
Pretty much everyone has been slacking off as far as blogging goes, except Jawaad, Skrud, Spiro, and Kevin.
Hall of Shame:
  • Nadia - has not blogged at all for almost 2 whole years now;
  • Terry - lost his domain name to some domain squatter.
Eric is clever, updating his MSN Space with sets after sets of pictures instead of writing.
I know all of you must have made new friends. I have, too, even all the way in Japan. But gee, try to give sign of life from time to time and not forget about TSG and everybody else from Concordia.

Mobile development sucks - Prologue

May 12th, 2008

It’s been six months since my first full-time job has begun. The first month was spent in learning two products, of which I never got involved in any project. My boss finally decided to let me pick up a product development project that has been going on since before I joined the company. I must say that it has been a great learning opportunity so far and I want to share what little wisdom I have found.

Let’s start with some basic information:

  • The product is a software application for smartphones;
  • We are trying to support 5 smartphone platforms. I’m not talking about phone models - that would have been trivial. I’m talking about something more in line with a situation like Mac + Windows + Linux + Amiga.
  • As much as possible, the application is written in native code on all supported platforms (as opposed to Java, which would have been easier to port);

If you think that this is starting to stink, it gets better:

  • There is no vision document; the only available material that’s close to a vision document is a bunch of PowerPoint presentations;
  • There is no software requirements specification, not even an informal one;
  • There is no software architecture document, again, not even an informal one;
  • There is no software design document at all, again;
  • There is an overly simple blackbox testing checklist;

You probably saw this coming by now:

  • The programmers had started coding the damn thing and submitting test builds already.
If you think that this point above puts the final nail in the coffin, I am sorry that I must disappoint you. Read on.
  • There are, not one, but two versions of the product, with two different product activation models. Not only do you activate the two versions in different ways, but the sets of features that are disabled due to lack of activation are also different;
  • The two versions were being developed concurrently.
I suppose my dear reader has a good picture of the stage in mind now. I’ll let you sleep on it for a bit so you can imagine what can go wrong as the story unfolds itself.

Downtime

January 23rd, 2008


Kalunite.net and all sub-sites may be down for a few days from January 24th onwards while I migrate everything to a dedicated server in Hong Kong. The new server shall shift the access speed in the favour of visitors from the Asia-Pacific region, possibly at the expense of visitors from North America. Check back in a week or two and hopefully everything will be up and running smoothly again by then.

Short咗

December 4th, 2007


星期日行街行到腳仔軟。先係朝早同屋企人响荃灣兆和街嘅合發茶餐廳喫早餐,跟住我同家姐疙咗去如心廣場睇吓落成咗係乜樣。點知原來咩都冇,得間酒店開咗。隔離荃新天地又係未裝修完。結果唯有走去荃灣廣場行Jusco。不過一入廣場門口,就俾Wanko雞乸咁大隻字嘅「二折」牌嗍咗埋去。就咁樣就開咗市,家姐即刻搵到聖誕禮物俾阿媽同係Montreal嘅死黨同學。跟住再上幾層,喺間DVD/唱碟鋪搵埋老竇嘅禮物。Jusco嗰度反而乜都冇買就走咗。

第一回合完,就哽係食嘢補充能量。上次喺綠楊食越南河,發然仲有好多檔可以試。所以今日又番去綠楊,試另一檔唔知”Euro”乜鬼嘅(家姐溫馨提示:「係EuroGoGo呀。」)。啲意粉都OK,係嗰兩支奇異菓汁同橙汁甜咗少少。

補給完,我地就先分道揚鑣:家姐去銅鑼灣會合企鵝姐,開始佢嘅第二回合;我就去展開我嘅旺角探險。點解去旺角?因為我隻踎屎死咗。讀者一定諗:『踎屎死咗關旺角咩事呀?』。咁我就話你知啦。話說PCCW寄咗封信嚟話多謝我申請寬頻,所以送無綫踎屎,要去旺角挪。不過我點會淨係為咗隻踎屎去旺角丫。前世未迫過咩。其實我主要仲想搵OS X Leopard Family Pack,買番隻模型鉗,同撞吓仲搵唔搵到MG版F91。模形鉗喺烟廠街嗰邊好易搵。有個店員同我講有田宮兩款一貴一平,仲話貴啲嘅唔會咁易剪崩。我話「唔係啊嘛?剪膠咋啵。」所已最後去咗Modern買把最平嘅(50蚊)。隻F91我差啲搵唔到,得番一間有一千零一隻。原來因為唔好賣,好多鋪都冇再入貨。Leopard搵到我傻。出街前我就明知唔熟旺角,去中原地圖睇過信和中心同旺角電腦中心大概係咩位置。點知…去到旺角兜到我傻,嗰度啲遊客資訊牌又退晒色,都睇唔到啲街線,淨係睇到街名。Sino同MKCC又攪笑到冇牌嘅。攪到我問咗幾次啊sir先搵到MKCC。最後我見MKCC兩間有賣Apple嘅都斷Leopard嘅貨,知道冇機,就連Sino都放棄搵就去咗銅鑼灣join家姐同企鵝姐。去到銅鑼灣先發現佢地係搵我去破財擋災。家姐買咗對平平地嘅太陽眼鏡唔駛一個鐘就買咗兩件幾形嘅黑色casual恤衫自己著同兩條呔送比Montreal嘅朋友;咁就900蚊。跟住去睇吓有咩形戒指補番老竇唔見咗嗰隻。不過最後冇買,淨係睇咗款,因為我地唔肯定老竇手指咩嘥屎,刻咗名嘅話又冇得換;要等我地噠老竇其它戒指嚟度吓先。企鵝姐見我地攪咁耐,就游咗去第二檔睇衫,仲執到筍嘢。

之後就去咗SOGO睇玩具。原來我真係大鄉里,依家先知Sylvanian Family系列咁誇張嘅。酒店,水車,菓汁檔,你諗到就有。一傾之下,先知道企鵝姐玩得仲pro。佢嫌Sylvanian Family本身嗰幾款屋太細,所以用Hello Kitty嘅一款大屋代替。真係orz。我仲好奇想睇吓SOGO有咩Gundam貨,一睇之下先知佢食水深;隻F91我喺旺角買先168蚊,喺SOGO要259蚊。

行到攰,又到食嘢時間。去咗檔佈置得幾有越南feel嘅餐廳。叫咗牛肉河,燒豬肉檬,炸春卷,仲有招牌炸雞翼。每人70蚊左右埋單。

跟住家姐順便係藥房買牙刷,然後就分手番屋企。

番到屋企,由於眞係太攰,發生咗啲好hard plastic嘅事…

我好心急咁打開合F91睇說明書,見到呢幅嘢:
砌F91要用嘅架撐
當時腦入邊嘅反應係『死嘞。唔記得買較剪添。』硬膠

One thing about Mac OS X that annoys me.

October 5th, 2007


Keyboard input methods - this is one thing that has been bugging me since my switch to Mac OS X.

Actually it is more like 3 problems.

The first one is the way I have to cycle through input methods using Cmd+Space and Alt+Cmd+Space. I know 4 languages (Chinese, English, French, and Japanese) and as a result use 7 keyboard layouts/input methods daily (English, French, Simplified Chinese Pinyin, Traditional Chinese Pinyin, Cantonese Pinyin, Hiragana, Katakana). Cycling through the keyboard layouts and input methods is becoming tedious. I still prefer the Windows way, where I can assign a keyboard combination (e.g. Alt+Shift+1) to each keyboard layout and input method.

The second problem is the lack of official support for non-West-European input in the X11 environment. All attempts to build, install, and use UIM or SCIM have been unsuccessful.

Finally, the Traditional Chinese Pinyin input method seems to be a bit quirky. Sometimes it tends to feed out the wrong character. For instance, typing “zhang1″ gives me “章” among the candidate characters, but if I select that character, the input method sometimes feeds the “杖” character instead.

Apple, please tackle these problems in the near future. I believe it will do you good in expanding your market in East Asia.

More manifestation of my idiocy. Or is it?

August 29th, 2007


Today I tried to withdraw money from my Canadian bank account at one of these neat Japanese ATMs that support, among others, the Plus ATM network … only to realise that I cannot recall my PIN - for the 5th fucking time. I tried only a second time because I was afraid the third time would invalidate my bank card. And why do I have such a high tendency to forget my PIN? It’s because I almost never use it. I almost always rely on credit card and web banking (the password of which is a lot more secure yet easier to remember than my PIN). Furthermore, as a security paranoid, I never write down my PIN and I don’t use any part of my address, telephone number, or birthday as PIN.

Thank god I remember the PIN to my Hong Kong bank account, which by chance is also Plus ATM compatible. So I withdrew money from my HK bank account instead. Problem solved.

It still bugs me that many banks still rely on 4- to 6-digit PINs though. What’s the biggest temptation for non-security-conscious people when creating such a PIN? I’m just guessing but I’m probably not far off: birthday or last digits of telephone number. Why haven’t banks switched to biometrics already? It’s more secure and more convenient than the PIN anyway. Border control at many countries already uses fingerprint (+ facial recognition between Hong Kong and China). Considering that some countries are paranoiac about terrorists, if border control can rely on biometrics to identify people, why can’t banks use the same technology for stuff that is not even immediately life-threatening? Cost does not seem to be a valid impedance to implementing biometrics at ATMs. Who says banks must replace all ATMs at once? Can’t they start by installing a new one at every branch (or the biggest ones) first, and slowly phase out the old, PIN-only models.

Am I missing something?

So much for holding an engineering degree.

August 14th, 2007


A short story of my life so far as a complete failure.

Here I am, sitting on a futon, in a 6-tatami (i.e. 9.72 m2) room, with my back to a wood column of the wall, in Hibarigaoka, a suburb in West Tokyo. Why am I sitting like this? It’s because I can’t afford to buy a desk and a chair. The room already cost me 112000 yen for the first month, and 56000 yen per month thereafter. I don’t get my own apartment; this is a house share; we are currently 7 people in the house, although 3 will have left before September. This is not even central Tokyo. The room smells pretty bad because we are both guys and neither of us seems to know how to keep things tidy. Right now, we have a couple of dirty socks, a bunch of grocery receipts, magazines, and a plastic water bottle scattered across the floor. As of this writing, I have a grand total of 86330 yen with me. This means I blew 213670 yen out of the 300000 yen that dad gave me, in less than 1 month. I still don’t have a job because 1) I don’t have presentable work experience, 2) there is no entry level job other than for native Japanese speakers, 3) there is no PHP job.

How did all of this happen? I don’t know. And I’m trying to get a clearer idea by writing. I suppose I have been showing signs of gullibility and eventual failure since I was in elementary school. You know how I agreed to immigrate to Canada? My parents told me there are no compulsory home assignments for school in Canada. “Oh really?”

Then it was time to get into high school. I ended up in the same private high school as my sister, because the school had good reputations and had turned into co-ed just a few years before. There were lots of attractive girls and I had an easy time getting decent grades. I enjoyed all 5 years there. Or did I? Puberty hit me and I have always wanted a girlfriend since then, but I never got one. Mom always told me “She won’t be your wife.” So I never bothered doing anything more than glancing from time to time at the girls I liked. What was I thinking? The day of graduation, I cried like there was no tomorrow, not with my friends, but at home instead. My instinct was probably sensing what was waiting for me in life.

Then came time for pre-university prep school, something that we call the cégep in Québec. As fate would have it, I ended up in the same prep school as my sister was, and got into the IB programme, just like she did. I should have learned earlier. What was I thinking? I came out with an IB score that seemed too high to be what I deserved. I didn’t really learn anything useful from the programme except the question “how do you know?” from theory of knowledge, which I use now and then while trolling Digg.com.

I made some good friends in the IB programme, and a few of us decided to study software engineering in the same university. I liked computer games and I’ve been sitting in front my computer all day in my free time anyway, so why not? What was I thinking? Unlike my friends, I failed to enter the co-op programme. I graduated, with decent grades, but just below the threshold for Distinction. To this day, I still get the chills thinking about artificial intelligence, compiler design, and database implementation. My uncle asked me for opinions about an ERP system that the family business was going to implement. I gave him very vague answers that amount to “I don’t know”, if anybody were to examine closely enough. Sometime towards the end of my bachelor studies, dad started an aluminium extrusion business. I’m leaving out all the details about the nice girls that liked in prep school and in university; I never do anything about them, remember?

Right after graduation from university, my father suggested that I take a summer break and travel around China instead of taking a job immediately. His reasoning is that I would not have a better chance to witness all the change that has gone through China after I start working. I agreed with him at that time, and took a roadtrip with one of my uncles through about 1/3 of China. I even took another business trip with another uncle to the US. What was I thinking? I missed the peak hiring season, and I had already started forgetting everything about design patterns, Rational Unified Process, and so on. Heck, even if I had not started forgetting, those little pieces of knowledge would have fallen out of fashion in the quickly evolving IT sector anyway.

Once summer was over, I returned to Canada with my family to finalise our retreat back to Hong Kong. We had to sell our house and our car, and close our bank accounts, among other things. Then one day, something broke in my head and I decided that I didn’t like Hong Kong and Mainland, and that I wanted to stay away from the mess that was my greater family. I told my family that I wanted to stay in Montreal. They didn’t stop me in my selfish fit of the moment. They left me with the car and my sister left me with her savings. They even helped me find an apartment where I can live after we sell the house, and the washing machine and stove to go with it. Mom and my sister were crying as they entered the boarding zone of the airport. Mom thought she wouldn’t see me again in her life. I was also crying as I drove “home”. WHAT THE FUCK WAS I THINKING?!?!?!

The next morning I woke up to realise that there is nobody to eat breakfast with me anymore. I cried like a maniac. I opened the refrigerator and I found the curry that mom had prepared for me; I cried even harder. It was absolutely heartbreaking. Even now I’m sobbing as I recall my experience. I could hardly call that home because I lived there alone the whole time. It was more like a big prison into which I banished myself. I didn’t even get in touch with my friends after university anymore. Some of them have gone to work in Seattle, another went on a tour in Afghanistan. I didn’t look for a job because my friend (my current roommate) invited me to do freelance web design and web application development. What a great way to mess up my career. Since we were doing freelance stuff, the chances of us properly learning new tools was a big, incredible, zero. The whole time we were using only PHP5, HTML 4.01, CSS, and JavaScript. And I suck at web design, I can’t even do Flash, ShockWave, or Director. I don’t even know how to use Photoshop. Who was I trying to kid, trying to be a web designer? The whole experience gave me another big, incredible, nothing to buff my resume with. At that point, I still didn’t have to try shrinking my resume to 2 pages because I actually had no valid, presentable working experience.

Soon, my friend decided that business wasn’t good enough in Montreal. He told me that we can make more money working in the financial sector in Japan. I agreed to come to Japan with him, partly because Japan is closer to home, partly because I had fallen for a Japanese girl that I met in Montreal and that I wanted to do something about it, namely, learning her language first. I couldn’t properly liquidate everything because I was busy finishing off existing projects. The only thing I managed to sell at a decent price was the car. Pretty much everything else were given away. I tried to sell the sofa at $100 and even took the trouble to deliver it. The truck rental wasn’t cheap, but I thought money from the sofa and the other furnitures I was selling would have covered it. Guess what? The buyer gave me cheque instead of cash like I had said in the ad and it bounced.

Closing the bank account was another disaster. I decided to leave the bank account open because I had to wait for the refund from the car insurance company. Turns out that the cheque never got into my proxy’s hand. So now I have the option to fly back to Canada just to close a bank account that has no money in it or leave it and remain a resident (which means I have to pay income taxes even if I don’t live in Canada anymore). I also emptied the safety deposit box without discontinuing it. Out of the stuff from the safety deposit box, I deposited the few $1000 CAD bills into the bank account before wiring everything back to Hong Kong, following the advice of another friend that it’s too dangerous to carry a couple thousand dollars in cash at the airport. I completely forgot that those $1000 CAD bills were in the safety deposit box was because they were out-of-print collectibles.

And now I’m in Tokyo, trying to miraculously reboot my life. It’s not happening. Dad and his business partner have intentions for me to succeed them in the aluminium extrusion business. What am I doing here getting an IT job for? What Japanese company is going to hire somebody who has graduated for over a year and who still does not have job experience?

I’m so stupid I don’t deserve to live. I’m a failure.

引越しました

August 1st, 2007


今日新大久保からひばりヶ丘に引っ越しました。すごく暑い日でした。さらに荷物が沢山すぎるので、二回往復しました。シャッツは完全に汗に浸っていった。

新しい家はハウスシェアです。今部屋が足りないから、この三週間は友達と同じ部屋に住んでいる。後ドイツルームメートは故郷へ帰るので、そのときもう一つの部屋がある。

Today I moved from Shin-Ookubo to Hibarigaoka. It was really hot today. Furthermore, because we had too much stuff to move, we had to do another round trip. My shirt got all soaked in sweat.

The new home is a house share. Since there is not enough rooms right now, I’ll be sharing a room with my friend for 3 weeks. After that, the German roommate is moving back to her hometown and we will have another room.


Bad Behavior has blocked 266 access attempts in the last 7 days.