Upgrading to Fedora Core 6

I finally got around to upgrading my Dell to Fedora Core 6 using yum. My last attempt failed pretty miserably mainly because of some stupid package dependencies I couldn’t figure out how to resolve (something to do with

1
initscripts

, which was kind of what happened in my attempt to upgrade from FC4 to FC5). So instead of dealing with it, I simply shut it up… Here are the steps:

1. me@localhost$

1
rpm -ev fedora-release --nodeps

2. me@localhost$

1
rpm -Uvh [url-to-fc6-release-notes]

3. me@localhost$

1
rpm -Uvh [url-to-fc6-release]

4. me@localhost$

1
yum clean all

5. me@localhost$

1
yum -y update

By step 5, everything should’ve gone flawlessly, except, again, Fedora threw a fit on dependency problems such as

1
bg5ps

,

1
gtkhtml

and a couple of other packages. Again, instead of dealing with resolving them, I just removed them:

1. me@localhost$

1
yum remove bg5ps

2. …. (repeat step 1 until all problematic dependencies are removed)

Then everything was good. And as it turns out, the new kernel that came with FC6 (2.6.18-1.2798.fc6-i686) is capable of handling dual cpu systems, unlike kernels before that where I had to specifically update multi-processor capable kernels (kernel-smp). I wasted about 20 minutes trying to find/update something that never existed!

Finally, after reboot, I got my nice FC6 all up and running. Life was good except now VMWare refuses to launch. So I had to reinstall it because of the new kernel I installed. Unfortunately, VMWare couldn’t locate the new kernel’s c header library (usually installed at

1
/usr/src/`uname -r`/include

). But it wasn’t there!!! Even though I had the latest kernel, its c header library still could not be found! After some research, I finally was able to resolve that by force installing

1
kernel

and

1
kernel-devel

rpm files:

me@localhost$

1
 rpm -Uvh --force [url-to-kernel-rpm-package]

Issue the command above for both the current

1
kernel

and

1
kernel-devel

Once VMWare got its kernel c header library, it was happy. And life was good again….

My next project with that machine is to upgrade its CPUs with a couple of nice Pentium 3 Slot 1 modules at the maximum clock speed the machine can handle (which is at around 1.1Ghz — fast compared to 450mhz I currently have). These types of CPUs are pretty hard to come by because Intel abandoned Slot 1 architecture a long time ago.

Fedora Core 6 upgrade made possible by this discussion thread at fedoraforum.org. VMWare troubleshooting and resolution made possible by this discussion thread on VMWare’s community site and this discussion thread on fedoraforum.org.

Thai Temple

A friend told us about another Thai temple in the South Bay area (in fact, the largest in the area) a while ago. But we never really got a chance to check it out since we’d enjoyed the temple in Berkley quite a bit. So over the weekend, we went there and checked it out. (Sorry, JASE+A. We couldn’t find you.)

The food at the Freemont temple is not quite the same as the one in Berkly, which makes the visit the more interesting. Even though there weren’t as many varieties, almost everything is cooked on the spot as you order it, and the selections are slightly different. I particularly enjoyed a type of noodle soup that I haven’t had since I left Thailand — I’ve never seen it made anywhere else outside of Thailand!! That noodle was GOOD!

Next week the temple is going to have a Loy Krathong Festival (floating “water lamps” ). In Thailand, Loy Krathong is a big deal. We might stop by and check out the festival.

(More) Ajax Woes in Safari

The more I deal with Ajax and Safari, the more interesting problems I get with the combo from time to time. Since my last run in with the dual, which forced me to rebuild that particular section of the site using more traditional means, I have recently discovered one more issue having to do with multiple

1
XMLHttpRequest

calls via the same object from the same page. The short version of the story is: It CAN’T be done in Safari* (or not in the method that I know of). Firefox and IE, however, seem perfectly happy with using a single object to make multiple asynchronous calls.

Fortunately I am not crazy. I found an article that briefly touches on this issue. This article is also a very good short tutorial on how to get started on Ajax (though the author uses a Ruby backend to iterate the codes, which can easily be replaced using any code you are comfortable with.). Another article offers more depth on the same issue with some code samples to show (via Ajaxian.com).

To get around the problem, one way is to simply create multiple objects, one for each call request, as opposed to have one object to handle all the requests. If you don’t do this, when you make one

1
XMLHttpRequest

call, all the other Ajax fields on the same page will start loading as if they are expecting something back from the same request (for which they’ll wait an eternity and never get anything back).

Sometimes I just don’t know how I solve these kinds of voodoo-like problems. Even Google is powerless before I knew what the problem was. I mean, how do you Google for problems you don’t even know how to describe? And this issue was particularly annoying because Safari’s Javascript console didn’t report any errors.

*I also discovered that the same issue takes place in Webkit (the HTML rendering engine at the heat of Safari) based browsers, including Shiira. Though strangely enough, Camino (a cousin of Mozilla FireFox), much of whose gut is based on Safari’s renderer, didn’t have the problem at all! It’s also interesting to note that Opera 9 also suffers from the same issue.

Absolutely The Best Toys for Children

No, I am not talking about expensive or hard-to-find or one-of-a-kind rarities that probably us adults enjoy more than the kids. As I imagine most parents may have discovered by the time their children turn one, Grace and I find that the things that make the best toys are…. ordinary household objects.

Think about it from a child’s perspective: They come in different forms, shapes, functions and colors. Many of them are “durable” (depends on how hard your particular child throws things). And many of them will engage the young minds for a good while. One of the things Bryan enjoys doing is fetching and digging out what he can find from my “office supplies” drawer — which happens to be the bottom drawer. The one thing he enjoys the most (for now) is to put a roll of scotch tape on an upright position and to watch it roll across the floor.

There are some things I don’t allow Bryan to take out of the drawer, though. But sometimes he’ll do it just to see if I’d stop him. One time he saw me observing him taking a few of those objects out of the drawer. He looked at me, and then he looked at those objects and slowly puts them back in the drawer one by one. All that without me saying a word! It was pretty funny when it happened. 😉

Quotes from God Jobs

Nobody has tried to swallow us since I’ve been here. I think they are afraid how we would taste.
— Steve Jobs, Apple shareholder meeting, April 22, 1998

WOW!

Murdza sent me a link from Wired.com on some of the greatest (and deadly accurate) quotes from Steve Jobs.

Thanks, Murdza (the greatest geek within my direct sphere of influence).

More Geek Talk

Mike Neely discovered something pretty freaking awesome: It’s called Meebo. It’s basically Adiumx (or Trillian for you Windowz folks, gaim for you Linux dorks) except it’s web based. It supports quite a bit of stuff that you are accustomed to using desktop apps.

Speaking of apps, Neely revealed the other day that he’s doing some cocoa programming! I am so envious of him having the initiative and drive to pick up cocoa/objective-c. This reminds me that I ought to get back into desktop programming!

While I am on the topic of “desktop” programming, I tried upgrading my Fedora Core 5 to the latest Core 6 last night but failed. I guess it’s too new that various issues aren’t widely discussed yet (bless Google). I’ll probably give it another try another time. Strangely though, the audio in FC5 just magically started working all by itself — I spent days downloading and compiling various drivers for it to no avail. And that piece of sh*t just decided to work all of a sudden? WTF?! This is yet another reason Linux is far from being ready for mainstream consumption — lack of usability for everyday-users.

Back in Web Development

I have been working on a project non-stop for 2 weeks to get the final features up and running. But I just couldn’t stop squeezing in some good-to-have features to boost the overall “value” of the product a bit. Here’s a short list of what I thought were really slick features:

1. Javascript lightbox: This one feature can probably single-handedly describe what the Web2.0 movement is all about. The BEST part is, integrating Lokesh Dhakar’s code to the project (or ANY project, really) is just a couple of copy and pastes and one line of code change!! That guy is a genius.

2. Recursive delete: This a pretty kick-ass class for recursively deleting whole directory structures even if they are not empty (PHP programming in Unix environments, this is a big deal). My project requires my PHP scripts to interact with physical directories. I thought it’d be a complete waste of my time to write a function/class to do this if someone else’s already got a solid script. Implementing this just took one line of code.

3. Directory compress & backup: I used this script to work in conjunction with “Recursive delete”. Basically before anyone deletes a whole directory, my PHP application will automatically back it up and nicely tug the compressed file in a safe place. Again, this is a kick ass class because it only takes a copy/paste and defining of a couple of variables.

4. Unique ID check via Ajax + PHP: I wrote this myself using an Ajax class I assembled from prior projects. It simply goes to the database and checks if whatever the user ID (or product ID or whatever) already exists. One bug I encountered under Safari was that if

1
XMLHttpRequest

returns nothing from the database (which means the ID the user entered was unique), Safari makes

1
status undefined

or

1
null value

complaints. One way to get past solve this problem is for

1
XMLHttpRequest

to return an empty space via PHP (or whatever language you prefer)… i.e.

1
echo " "

. Here’s a nice blog about Ajax related issues. This issue is also pretty well documented here though “bitterpill.org’s particular trick didn’t solve the problem for me.

5. Multiple file uploads: The Stickman has some really neat references to a handful of technologies I am currently exploring. This “multiple file upload” script isn’t particularly elegant but does its job exceptionally well. I was able to integrate this, along with everything above, into one coherent code base, fortunately.

6. Snif (stands for “simple and nice index file” ) is probably one of the best-looking and utilitarian directory and file index script I have found thus far. There are tons of others that do way too much or too little (some of which cost quite a bit too). The downside of snif is that the code hasn’t been maintained for quite a while, and its forum is littered with more questions than answers. But I did find some nice “mods” to enhance its core functionalities quite a bit. Another problem I had with snif was how hard it was to integrate into my existing code base. That said, snif is still a very solid standalone directory index script though!

7. By accident, I stumbled upon a list of Web2.0 sites from Tucows. I look forward to studying up the latest eye candies these sites offer for my future projects.

So now that most of the core features are done, I just need to find a fast(er) Windows environment to test the css layouts, mostly for IE. I wish IE would just go away so that us web programming types don’t have to deal with Microsoft’s snobbish approach towards web standards. Go Firefox, Opera and Safari.
.
.
.
Apple finally decided to release Core 2 Dual version of MacBook Pro right before Christmas! How kind. I made a pseudo promise that I’d get a MacBook Pro if they upgraded it to Core 2 Dual… not knowing they’d do it before January’s Macworld… But since the budget is kind of tight these days, I will hang on to my trusty old PowerBook G4 until OSX.5 Leopard comes standard with MacBook Pros! Hah!

Growth

Wow… I can’t believe I went for 3 weeks without posting anything!

First some stuff on Bryan… He’s now practically a toddler with new vocabulary that continue to surprise us on daily basis. Even though we speak Mandarin to him 99% of the time at home, he seems to understand a whole lot of English words whenever Grace converses with the neighbor.

Speaking of languages, now we set Bryan’s Baby Einstein DVDs to French so that all three of us can learn it together from scratch. But boy, we really murdered some of those French pronunciations… Can you say “refrigerator” in French? Yikes! (For you German speakers, I can’t even begin to imagine what it is!). And all the “le, la, les and l’xxx” are confusing me. This makes me want to go back and dig out the French edition of my Rosetta Stone language DVD.

Also, Bryan is showing some early signs of “Terrible Twos”. He’s become very fussy and demanding of what he wants (and wants 5 minutes ago!) even though he has very limited vocabulary — no matter; action speak louder than words! I read somewhere that the “.5s” are even worse sometimes.

Bryan looks like a big rat in that Kangaroo costume… but CUTE nonetheless!
Kangaroo Costume

Discovery of H2O…
Discovering H2O

Welcome to Canada, But…

Ahhh, exciting times.

We woke up at 7:30AM to get ready for our interview at the Canadian Consulate yesterday. The traffic in L.A. is so bad that people advised us to expect a one-hour drive for a distance that’d normally take less than 20 minutes. Luckily the traffic wasn’t terrible, and we managed to get there before 9AM…

We waited two hours as other people went through their interviews in two of the three individual interview rooms separated by clear, sealed glasses. I noticed that other than us and and another Thai couple, the rest of the interviewees were from the Indian Subcontinent. Some people were interviewed for 40+ minutes while it only took others an easy 20 minutes. Ours was somewhere around 25-30 minutes, mostly questions about what I did at my previous jobs. Bryan was fussy being in a fairly small and confined room; so the immigration officer, Joe Francisco, excused him along with Grace from the interview only having asked her two or three questions.

Overall the interview went very well. I was able to provide all the documents Joe asked for (though he didn’t really ask for many). At the end of the interview, he simply passed me a piece of paper for the remaining required documents I still need to submit — medical check up forms and the FBI reports (en route). Not sure if we’d passed the interview, I had to ask Joe, “So this means we are approved?” Joe replied, “yes, pending your medical forms and the FBI report.”
.
.
.
That wasn’t too bad after all. Now we just need to find a way to LAND in Canada to pick up that sweet Green Card…

At the suggestion of Jan when we met up for dinner last night, we stopped by the Taiwanese Economic and Culture Office today, hoping to fetch a different and more favorable solution for the possibility of getting my passport renewed. But basically we got mostly the same answers from them as we did from TECO of San Francisco except that they “could” give me a special passport valid for six months especially designed for people like me to return Taiwan (and only for that purpose). Whether or not other countries would accept such passport, the lady at TECO told me, is up to them.

That’s a pretty exciting possibility we may explore once we are done with our medical exams.

But for now, we pray and wait.

New Geek in the House

Ever since Bryan started crawling, it’s like the world is totally new to him again! And the best part is, he can go almost anywhere he wants to whenever he wants to… Almost!

The other day he discovered my black Dell keyboard and just started pounding away on it — with his feet…

Bryan pounding on keyboard with foot

On the other hand, he does look good with a keyboard… Chu 2.0 in the making…

Chu 2.0 in the making

Canadian Interview Preps

The day has come… Tomorrow we will be heading to the Canadian Consulate in Los Angeles for our immigration interview. Grace has been spending the past few days to get additional files for Bryan ready. And I spent the last night getting all the files prepped for our interview. Basically I had to bring all my pay stubs, employment contracts I have ever signed (one), bank statements, every single piece of immigration documents since I have been in the United States, tax documents, college diplomas and transcripts, marriage certificate…. and much more — all in original forms as well as having an extra copy ready.

At the end of the night, my document bag made me look like a damn lawyer.

Documents needed for the Canadian immigration interview

Our rental car is going to be extraordinarily packed because of all the stuff we are taking with us for the trip — “Bryan Essentials” (diapers, toys, cloths, formula), my golf clubs and other gears for my brother, gifts for friends, immigration documents, and of course, our cloths and other necessities. Before my mom left, she also made and froze a bunch of food for my brother. Just those alone is going to take up a good size cooler! 🙂

So off we go today, on a six-to-eight-hour road trip to Los Angeles… with Bryan!

Apple Is Parallels Shy

We went to the mall today to get Bryan’s picture taken for his Canadian residency application (long story). So I went to the Apple Store to check out the latest iPods and other toys. I was really amazed how thin and light the new iPods are.

One of the things I’ve always wanted to test out was running Parallels, a new emulation software, on an Intel Mac. It’s been widely reported that it is capable of running Windows at near-native speed on an Intel Mac. I really needed to see just how efficient I can be coding within OSX while testing my codes in other browsers under Windows. Unfortunately, Apple doesn’t have any machine with Parallels installed. I wouldn’t be surprised if that was because Parallels did not pay Apple to install its software on Apple’s demo machines. That said, third party softwares are actually pretty hard to find on those demo Macs except for Microsoft Office for Mac.