Mac OSX Lion Upgrade

After painstakingly backing my 27″ iMac, I upgraded to Mac OSX Lion. Not a whole lot changed total UX wise. But I do like what I see except for Launchpad.

Speaking of changes, one thing that broke was the driver for my old black & white Samsung ML-1710. I ended up having to install Splix-2.0.0 which worked decently… Well, it prints — and that’s really all I care about.

So yay.

MacBook Pro for Arts

Generally speaking I think having invested in a MacBook Pro was one of the best investments in hardware equipment I’ve made for computing. But in terms of arts and photography, it’s looking a bit weak on the color front. My Eye-One monitor calibrator finally arrived today. So I ran a few tests trying to calibrate my monitor based on a few conditions. But at the end of the test, I was surprised to find that MacBook Pro’s gamut is actually pretty damn small compared to even sRGB!

Luckily Rob Galbraith found a fix for the 2nd gen MacBook Pro I have. Interestingly, he also noted that the latest LED-based MacBook Pros are the best of all laptops he’s tested as far as color accuracy is concerned. I look forward to the day when I can justify getting a decent display to edit photos with. Clean my mac x will help to monitor the system and optimize the storage.

I guess Ken Rockwell ain’t lying when he said color management is a silly thing to do unless you have super high end equipment that can both display and print those beautiful wide gamuts that digital cameras capture. Maybe I should dump Adobe RGB and go sRGB all the way instead since it seems no consumer grade monitor can even display anywhere close to the Adobe RGB gamut range… And most consumer grade print shops only print in sRGB, I could save myself a lot of grief having to manage and convert Adobe RGB to sRGB all the time! Hmmm…

Viewing Javascript Generated Source in IE

After having battled IE for the past two days, I am glad to report that I actually learned something new and valuable when debugging for Javascript codes in IE. One of the chief complaints web developers have towards IE is its lack of a decent Javascript debugger. Hell, none of IE’s SEVEN versions even have a usable Javascript error console! After having written about my frustration finding a debugger, another useful thing a web developer would love to see is the actual HTML source code generated by all that wonderful Ajax/DOM scripting… Thankfully, there is a way.

It’s documented here by Eric Appel. Basically, I just need to type in a one-liner Javascript in IE’s URL to show the source.

javascript:'<xmp>' + window.document.body.outerHTML+ '</xmp>'

In case you didn’t already know, viewing generated source is quite simple in FIrefox via an addon appropriately called Web Developer. In Safari 3, the closest thing is to right click and select “Inspect Element” from the contextual menu.

I am still stunned at how far IE has fallen behind in feature set for both users and developers in its seventh iteration of the software (having zero development effort since it drove Netscape into ground). But I am still thankful for conditional comments the IE team has decided to support. At least it’s made life with IE using CSS a much more straight forward task.

Javascript Debugging for IE

In 2007, the year when the word Web 2.0 is taking over the world of Internet and seen as the resurgence of the another wonderful dot-com era, the world’s favorite web browser, Internet Explorer, still does not have a proper Javascript debugger. You’d have to go through hoops just to get one working by alternative means. How can developers working with IE’s framework love its technologies I guess I’ll never understand…

Some people claim MS is all goodies under the hood for developers. Com’on, where are the goodies? I haven’t met a web developer who doesn’t hate IE.

People who continue to use IE by choice are idiots. There. I’ve said it. Idiots. Idiots. Idiots. Start using better browsers from companies who care so that the World Wide Web can be a better place!

Ok. I feel better now… Back to dealing with crappy IE for idiots who prefer it.

Microsoft should change their marketing tag line to: Your Misery. Our Passion.

Testing Localhost Developments in Internet Explorer via Parallels on Mac OSX

Developing web applications can be a frustrating job solely because so many people still use various versions of Microsoft Internet Explorer — possibly some of the worst browsers compared to most of the other modern browsers in terms of adherence to web standards. But I can’t just not test my applications against them simply because I hate them… So the war continues…

One of the problems of testing web apps under Parallels with IE is, instead of testing development URLs such as


, usually IP addresses have to be used, like such


, to reach OSX’s localhost server (because


on Windows would entail having an actual web server running under Windows). The problem with that is that some applications such as WordPress need to have a full absolute path in order for it to work properly (especially when dealing with themes). I’ve tried a couple of workarounds, but nothing is as simple as using Apple’s own Bonjour technology.

I found a post that explains how to set it all up. Even though his example deals with running Ruby on Rails, the idea is exactly the same for other development environments such as PHP and Java (enable port 80, 443… etc). Now I am a happy camper…

via [the naked brain]

Shady Brooklyn Stores

For those of you bargain hunters, I know some of you might have seen some great deals on electronic gadgets with shipping addresses from Brooklyn, NY. I know I certainly have. Everything, meaning their websites, looks official and legit on the surface. But unless you’ve been to those parts of Brooklyn, NY, you just don’t know where the hell you are ordering your expensive toys from. A nice fellow by th name of Don Wiss started checking out these stores on his bike. And he has some very interesting, let’s just say, “discoveries.”

Great work, Don.

via [Don Wiss’ Brooklyn StoreFronts]

Amazon’s Price Drop Policy

After having missed some valuable shots of Bryan doing amazing stuff, I finally decided to open up my checkbook for a more modern camera. Thanks to previous researches done by Michael and my cousin Alex, I knew exactly which camera to get — another Canon — Canon SD800 with built-in image stabilization.

Within 36 hours of the purchase from Amazon, the price of the camera dropped by $20 BEFORE it was even shipped! So I dug around to see if Amazon has a policy to match its own prices — no luck there. However, Amazon does have an unwritten rule on “price drop” policy within 30 days of purchase — they will refund the difference of the price for the same item within Amazon stores. Thanks to this bargain hunting site for the tip. And apparently there’s also a site dedicated to helping customers track their items purchased from Amazon complete with an email reminder feature (for free!).

Here’s a blurb from Amazon’s customer service department:

From: cust.service***
Subject: Your Order (#***-*******-*******)
Date: February 22, 2007 10:15:38 PM PST
To: ********

Thank you for writing to

The discounts we offer for items on our web site do vary from time to time. I’ve checked your order, and found that we now offer a greater discount on the item than at the time you placed your order.

Since this item was shipped so recently, I have requested a refund of $20 to your credit card. This amount reflects the difference between the price you were charged and the discounted price. The refund should be processed in the next few days and will appear as a credit on your next billing statement.

You may view returns and refunds by clicking the “Your Account” link at the top of our web site, then clicking “Go!” next to “open and recently shipped orders.” Completed refunds will appear at the bottom of an individual order’s summary page.

I hope this solution is satisfactory. Thank you for shopping at–we hope you will visit us again soon.


To contact us about an unrelated issue, please visit the Help section of our web site.

Best regards,

Serena Customer Service
Check your order and more:

This was what I did to get the refund:

1. Use Amazon’s Return & Refunds Contact Form.
2. On the subject of the form, select “Refund Inquiry” and hit “continue”.
3. On this screen, there should be a list of eligible items for the inquiry. Check ones that you’d like to have the price difference refunded and click on “continue” again.
4. Then next in the comments box, simply tell them you’d like to get a refund in the difference in price… etc. Be nice though.

Within a few hours of my request, Amazon’s email came through and my refund was approved! This gives me yet another reason to shop at Amazon!

One related note: used to have a price match guarantee with a similar (but not nearly as intuitive) process. But the company has since become a pain in the ass to deal with on almost everything (well, except the checkout). Unless you have a compelling reason to shop at, my experience tells me to stay away from them…

OpenDNS Works!

I have a tendency on trying out new and untested technologies just to get a kick of having done it… at least among my geekier friends.

Today I decided to give OpenDNS a try. It’s a free DNS service that claims to surpass most ISP’s own DNS servers in terms of speed and reliability. And boy, that stuff really works! Now my page loads are noticeably faster and smoother (if that even makes sense). Actually, now that I am using OpenDNS, somehow Firefox is loading pages a bit faster as well, making it a lot more bearable as my full time browser of choice on my Mac.

I found out about OpenDNS from having used the founding partner’s other venture, EveryDNS. I put all of my domain names with them. In fact, I was so impressed with that service, I even donated some money to support the service.

Maybe I will give OpenDNS’s other venture, PhishTank, a try and see how that works. They have an API for other developers to use… I wonder what I can do with that…

Some Tips on Using Roomba Discovery

That Roomba I got for Grace is really one excellent toy, err, cleaning machine… The first day we put it to work, I emptied 4 full cartridges of dirt plus other crap. And this morning I sent it to “spot clean” the area rug for several cycles, and it again found stuff that’s not visible to the eye — 4 more cartridges of them!

After observing it for a couple of days, I’ve got some tips to share:

Roomba no like cables. Cables no Roomba friend.
Generally Roomba knows how to get out of stationary flat cables. But sometimes it does get trapped if a smaller and looser cable entangles Roomba’s bumper. Just get cables out of the way by wall mounting them or hide them from Roomba.

Roomba no like lightweight area rugs.
While Rooma does an excellent job on “heavier” and bigger area rugs, those small area rugs will trip Roomba. And Roomba, when trapped, will complain and try to get out of it by engaging in an interesting escape routine. But it doesn’t always get out of it successfully. So move those small area rugs out of the way so you don’t have to worry about rescuing your Roomba later.

Roomba smart. Roomba escape from tight spaces no problem.
I’ve watched my Roomba wander into pretty tight spaces and still manage to get out just fine. But it’s still a good idea to give it enough room to at least get in and out of a tight spot.

Rooma need help, Roomba yell.
When Roomba is acting funny, make sure you empty the cartridge AND check the cleaning brushes. My Roomba stopped in the middle of the room one time on full power with an orange status light on and beeped twice; I couldn’t figure out what was wrong with it. It turned out that it’d choked on a small piece of wine cork I’d cut up to raise the height of some furniture (so that it can go under and clean).

Roomba no like too much animal hair on carpet.
With two cats at home, the carpet is a magnet for animal hair and dander. It’s a good idea to use “spot clean” to really really clean out the carpet for the first few times. The lesson here is, for each spot clean, empty out the cartridge and clean the wheels (as well as within the Roomba itself) before the next cycle. Or else when the cartridge bin is full, Roomba will regurgitate some of that hair, leaving a track of “processed” hair behind it… Not a good sight…

Make cleaning easy for Rooma.
Some people (ahem, Chee, ahem, hoi..) complain that using Roomba is almost the same as vacuuming manually since one still has to lift things/furniture to get under them. But I beg the differ. The whole point of having a “robot” is so that it frees up my time to do other stuff. What I do is, I lift/move all possible obstacles out of Roomba’s way and let it do its job. True it takes a little effort still, but what house chore doesn’t? What I did was, I watched how Roomba cleans and how its cleaning routines work for the first few sessions, then I either modify how I place my things on the floor or change the way they are stored. And I give Roomba enough clearance under certain furniture so it can get all the dirt out. And it’s a good idea to watch how Roomba works for the first few times because then you get to see how Roomba may get into trouble or if it’s able to get out of certain traps (i.e. cables).

Roomba is no human.
Be realistic. Don’t expect Roomba to get to places that are smaller than its own size. There’s just no way Roomba will be able to get to certain corners or spots. Knowing that, it’s just a matter of cleaning after Roomba when it’s done. Not a big deal.

Funny backup sound.
When Roomba is at its charging station, by pressing on the “clean” button, something funny happens: Roomba makes a beeping sound while it’s backing out of the charging station as if it’s an heavy equipment or a large truck. It’s really cute and shows how its geeky creators do have a sense of humor.

One thing that’s really interesting to watch Roomba do is when it looks for and docks with its charging station. It reminds me of one of those sci-fi movies on how space stations dock. When docking is successful, Roomba turns itself off and flashes the power button, signally that it is being charged. On the charging station, an extra light goes on just like in the movies! Sweet!

Get Rid of Dotted Outlines on Windows Browsers

For you web developers, I am sure your clients have often tried to make you do the impossible — correct mistakes and/or idiotic decisions made by Microsoft on how browsers should behave on the Windows operating system. Fortunately some of these mistakes can be corrected with hacks and work arounds. Here’s another one…

Some browsers (namely IE and Firefox) have this annoying behavior that’s a Windows-only trait — upon clicking an active link, it leaves a ghosting outline of dots around the link enclosed by the anchor tag. There are two work arounds that I know of to get rid of, or rather, prevent this from happening.

Method 1: Javascript — Yes, yes, I know client-side scripting is not reliable and all that jazz. All I am saying is, this is A work around. The idea is to make these links sans-anchor tags… That is to say, write a Javascript to respond to “onClick” events within, say,

< div>


< span>



< div onClick="doSomething();">Click Me< /div>

Method 2: Div tags — If you are trying to avoid Javascript at all costs,

< div>


< span>

tags may be your best friend. Simply enclose your links with a

< div>


< span>

tag immediately following the

< a>

anchor tags, the ghost dots will disappear all by themselves. Sweet, huh?


< a href="linkToSomething.html">< span>Click Me< /span>< /a>

Again, if Microsoft had bothered to adhere to industry standards, there wouldnt’ be a need to use work arounds like these. So I beg of you, use an alternative browser as much as possible. And only use IE sparingly when you must (for those idiots who develop sites that work ONLY with IE).

VNC on Fedora Core 6

Setting up VNC on a Linux box is always such a hassle. But I had to do it again today so that I don’t have to deal with two sets of mic and keyboards when I am testing my work in VMWare.

Thank goodness for this article that I saved a bunch of time having to figure things out myself. Maybe in the [always] good old college days, I’d have done that. But now time is of utmost importance with an active child in the house and all…

The only hiccups I got was that the above setup failed to discuss the issue with firewall and iptables. To allow outside access (even within the same home network), a port must be open to allow the traffic to flow through. There are a couple of ways to do that:

Adding a rule through a GUI in Gnome:

1. Go to

System -> Administration -> Security Level and Firewall

2. (enter the appropriate password when prompted)
3. Under the

Firewall Options

tab, click on the white arrow at the bottom that’s labeled

Other ports

4. Click on


and enter the port number you are allowing access; in my case, it was


for display number 2. (Leave the


at default, which should be


5. Click


all the way out, and iptables should have been restarted with the rule in place

A geekier way to do it is through command prompt:


sudo vi /etc/sysconfig/iptables

2. Add the following line to the rule:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT

3. Restart iptables by issuing:

sudo /etc/rc.d/init.d/iptables restart

Another thing that many Linux novice (like myself) don’t quite grasp is the fact that Linux’s GUI is not at all tied to the operating system. You can have Gnome, KDE, Flux or Blackbox as GUI options installed on the same OS. And you can switch around as you please upon setting the preferred desktop and log/in again. When you are viewing the remote system through VNC, you can do exactly the same thing — you can define what type of GUI you want to see as you launch your preferred VNC viewer client:



as such:


# Uncomment the following two lines for normal desktop:
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" -e ./menu &
#twm &
#fluxbox &
gnome-session &
#startkde &

Noticed I commented out (#) some desktop GUI options at the bottom except Gnome. Basically you can use any one of them anytime as long as you restart the


after you’ve made the changes.