Category: Technology

  • A Sunday at two Car Showrooms – BMW and Lexus

    I got a call from Performance Motor Limited (“PML”) about a private sale, so guys being guys, I agreed to go down. Of course, I brought the wife along so she can play “finance manager” and say NO in case I get tempted.

    So the private sale was like this – you must be on the invite list, and must have a car to trade-in and they offered an insane price for the trade-in. The trade-in price was easily >$30K above market prices, which brought the BMW 318i price down from $180,800 to $14x,xxx or a BMW 320i from $203,800 to $17x,xxx.

    The discounted price for a 318i is good considering that a Toyota Camry or Honda Accord are selling at the same price in the current market.

    But I was more interested in the 320i. That’s a crazy price for a car, I’m sure. But I was pleasantly surprised by what the latest model offered – all the electronic gadgets makes me pee my pants. It has 17″ rims, iDrive with built-in navigation, bluetooth telephone w/address book and voice activated dailing, in-vehicle information display such as service intervals and other mechanical status of brakes, engine, blah blah blah, timer for air-con recirculation so you don’t get into a baking hot car parked under the sun, and here’s the best part – INTERNET. Yes, bluetooth tethering with the iPhone.

    The 320i also has fold-down rear seats (the old one didn’t, or was an option) and the audio system has been marginally improved with more powerful bass (up to +/- 10 step adjustments instead of +/- 6 on the old models).

    I also test-drove the 318i which had the new electronic steering system and it was indeed much lighter and easier to park the car, but there’s a slight lack of “road” feel. I still like it though, cos the wife doesn’t like the heavy steering on the old model.

    It was very tempting at $17x,xxx. Damn bloody expensive, I know, but I really liked it – it’s a dream car. We spent a few good hours in the showroom, and the salesman started giving an additional 1-2K off. But the wife said NO. Sigh. No new high-tech ride for me.

    So being unconvinced that BMW was the best car around, I went pouty faced over to Lexus to test the new CT200h which they claim to be oozing with technology. It is lower in price too due to government discounts on green cars.

    What a disappointment. The interior looks sub-par (compared to the BMW) and the sales guy also sucked – he treated me like I couldn’t afford a Lexus. Yeah, maybe I can’t but the showroom looks pathetic – it’s was EMPTY.

    The base model at $154K didn’t have leather seats so I asked him how the fabric looked like. His reply was, “Huh? Cloth lor.” I was like WTF? Like show me some samples? He said they didn’t have any.

    Anyway, no leather? For a Lexus? Borneo Motors, I don’t know what you were thinking.

    The higher “Plus” model at $158K had leather seats. That was the only difference – top up $4K for factory fitted leather.

    So I decided to cut the crap talk and asked for a test drive. Here’s a summary of my experience:

    The seats were manually adjusted. For a $158K car, I wouldn’t expect that.

    The moment I pushed the START button, the car feels weird – it was silent except for the air-con blower. I got on the gas a bit – still silent.

    Then at approx 30km/h the petrol 1.7 litre inline 4 engine kicks in and you suddenly hear a low rumble and more power.

    My first foot on the brake in the carpark felt weird too – it wasn’t progressive and the braking effect was sudden as if somebody else was braking the car harder than you wanted for you. My feeling is that it’s caused by the car engaging a flywheel of sorts to charge the NiMH batteries.

    After getting up to speed, braking felt slightly better but still weird – it’s just not progressive. Adding to the weird braking behavior, you could hear the whine of the dynamo/generator which was a little annoying.

    I was still driving in “normal” mode all this while. Then I switched to the “sport” mode – oh what a difference. The CVT gearbox kicks me into a lower gear and now the car takes off on it’s 1.7 litre engine. But again, this felt weird. The change was too abrupt – from a tame hybrid it was suddenly TOO responsive and I had to change my footing.

    Then finally I tried the “eco” mode which was oh my god slow as a turtle. I couldn’t stay on it for more than 5 seconds, so I switched back to “normal”.

    It was a short test drive, but it wasn’t a good experience at all. As a driver, I felt weird. The car’s behavior was abrupt, unpredictable and unrefined. The wife sitting quietly at the back also said the ride was rough and the interior didn’t give her a “wow” feeling. The audio system was terrible – in fact worse than my Nissan Latio. On the level of sound insulation, the BMW wasn’t any different. So whoever that tells me a Lexus is silent, I’m going to beat you up.

    At $158K, I’d rather buy the BMW 318i which would be packed with slightly more features and a more refined drive. The $10K difference could pay for lots of fuel – at least 3 years’ worth.

    I think that these hybrids still need some time to get their act right. To achieve 24km/l it might be worth considering a Toyota Prius instead.

    I’d love to test a BMW ActiveHybrid if it comes here though. I have confidence in BMW’s engineering to build a more progressive and predictable hybrid.

    OK, enough for the day. Back to reality. No high tech cars for me! 🙁

  • Welcome back

    As promised, I will attempt to revive my blogging.

    As I type, I’m actually watching “The Social Network”. Damn geeky, I know. Not the best movie of all time for a Saturday night.

    Anyway just to start off the new year – lots of shit happened in Q1 2011. My “Ultimate” Driving Machine™ had a cracked radiator which meant it needs to be replaced. Not too expensive but still ouch.

    A friend got into an accident with a bus that tried to flee the accident scene. Thank god he’s not injured at all – the bus hit the passenger side and he was alone in the vehicle. He was lucky he had a witness.

    My high BMI neighbours upstairs are still as annoying as ever, even right now at 1.25AM and I have another 3.5 years to put up with them and you bet I will.

    By the way, if you’re wondering – Singapore has no decent law against domestic noise. There’s nothing the government can really do if you have an imbecile neighbour like mine. All you can hope is to curse them to rot in their filthy home and get eaten by fleas so they’ll mixmash well with the herbs and spices they pound daily in their bedroom. I’m not sure if even an impending election would change anything since Bukit Panjang is still split into two.

    Just six hours ago I heard I got voted to be in the EXCO of KH. I’m puzzled how I got voted even when it was a no-show; I was at CGH and it wasn’t a lie. I don’t think I can commit and I will not bullshit my way into a role I cannot put quality effort into. This is precisely what I am going to tell them during the next meeting: Career, Family, Hobby. Choose two. You don’t need to be a rocket scientist to answer that.

    I’m also trying to adopt a minimalistic approach to life. I’m trying to get rid of shit I don’t need and just keep the necessary stuff at home. I’ve always believed in buying things of quality versus price since high quality stuffs tend to last longer. Also you’re likely to only need ONE good, say, shoe than ten cheap shoes.

    That’s it for today. I need to watch my movie. Stay tuned for more updates.

  • Offline HTML Mobile Apps

    Picking up iOS is quite a bit of work plus you need to buy a Mac to get Xcode running.

    Yes I know you Hackintosh folks are going to start making some noise but let’s keep this legal.

    So I’ve decided to build quick apps using jQTouch.

    To get an App icon on your home screen, simply… add the page to your home screen! Duh. It’s like adding a bookmark. Try it – it works!

    But here’s the next problem – how do we get the apps to work without network connectivity?

    HTML5 introduced something called the offline cache manifest. Here’s how to use it…

    Step 1 – Create a file called yourfilename.manifest with the following content

    CACHE MAINFEST
    demos/main/ajax.html
    demos/main/ajax_post.php
    demos/main/index.html
    demos/main/jqt_startup.png
    demos/main/jqtouch.png
    jqtouch/jqtouch.min.css
    jqtouch/jqtouch.min.js
    jqtouch/jquery.1.3.2.min.js
    themes/jqt/img/back_button.png
    themes/jqt/img/back_button_clicked.png
    themes/jqt/img/button.png
    themes/jqt/img/button_clicked.png
    themes/jqt/img/chevron.png
    themes/jqt/img/chevron_circle.png
    themes/jqt/img/grayButton.png
    themes/jqt/img/loading.gif
    themes/jqt/img/on_off.png
    themes/jqt/img/rowhead.png
    themes/jqt/img/toggle.png
    themes/jqt/img/toggleOn.png
    themes/jqt/img/toolbar.png
    themes/jqt/img/whiteButton.png
    themes/jqt/theme.min.css
    some/other/file.name

    Step 2 – Make sure your web server reports the MIME type correctly by adding the following config to Apache. You might need to contact your hosting provider to get this done.

    AddType text/cache-manifest .manifest

    Step 3 – Add the following tag to your HTML page so the browser knows where to find the manifest.

    <html manifest="yourfilename.manifest">

    That’s it!

    Original reference material here.

  • IPv6 over GRE in RHEL/CentOS

    Note: This article is not about 6-to-4 tunneling. This is about carrying IPv4 and IPv6 at the same time (aka Dual Stack) over a GRE tunnel in RHEL/CentOS

    I was configuring an existing GRE tunnel on my Linux router when I found that the initscripts in CentOS 5.5 didn’t support IPv6 for the tunnel devices.

    The quick hack was to edit /etc/sysconfig/network-scripts/ifup-tunnel and look for this line:


    /sbin/ip link set dev "$DEVICE" up

    Add these lines just after the line above:


    # Added to accomodate IPv6 in tunnel
    /sbin/ip addr add "$IPV6ADDR" dev "$DEVICE"

    Then modify /etc/sysconfig/network-scripts/ifcfg-tun0 (or whatever your device name is) and add the following lines to run dual stack over GRE:


    IPV6ADDR=2001:abcd:1a2b:3c4d::2/64

    If you need to use the tunnel as an IPv6 default gateway, create /etc/sysconfig/network-scripts/route-tun0 and add an entry


    ::/0 via 2001:abcd:1a2b:3c4d::1/64

    Then just restart the interface and bingo IPv6 and IPv4 dual stack on a GRE tunnel.

  • Review of iOS 4 on iPhone 3G

    I’ve just updated my iPhone with the new iOS 4 firmware yesterday and here’s a short review.

    There has been lots of commotion about multi-tasking but I’m not the least concerned — not because I am not getting it on my iPhone 3G, but because I don’t see a need for it with the type of apps I use. Mail and Google Maps in the background doesn’t make sense. I might change my mind if there’s a good IM client someday.

    For now, the only useful features are shown below.

  • IPv6 over IPv4 (6to4) all up and working

    Yes, I’ve set myself out to learn IPv6. I thought it was simple – or at least with my understanding of IPv4. I was completely wrong! IPv6 has a much more complicated addressing scheme and “rules”. It requires a change of mindset for a start. The worst part? Getting it all to tunnel through IPv4 when you’re running dynamic IP.

    Anyhow, I’ve got my Linux (CentOS 5) box working and my home network is now “IPv6 ready” (hooray!) but I’m still tweaking the settings so I’ll update the technical stuff later.

    Some little bits about IPv6 I’ve learnt so far is that DHCP servers aren’t really required anymore. Interfaces can self-assign an IP based on their MAC address and this will be almost certainly unique (since MAC addresses are unique). Even in a controlled network, the interface would assign it’s own address.

    Meanwhile, here’s my traceroute to ipv6.google.com. 😀

    traceroute6: Warning: ipv6.l.google.com has multiple addresses; using 2404:6800:8005::63
    traceroute6 to ipv6.l.google.com (2404:6800:8005::63) from XXXX:XXXX:XXXX:1:217:f2ff:fe40:3848, 64 hops max, 12 byte packets
    1  XXXX:XXXX:XXXX:1::1  0.534 ms  0.392 ms  0.410 ms
    2  2002:c058:6301::1  199.142 ms  199.858 ms  199.485 ms
    3  2001:470:0:13b::1  201.157 ms  200.728 ms  198.965 ms
    4  2001:504:d::1f  197.870 ms  199.858 ms  199.927 ms
    5  2001:4860::1:0:21  290.454 ms  203.619 ms  264.787 ms
    6  2001:4860::1:0:77d  220.451 ms  220.804 ms  436.060 ms
    7  2001:4860::1:0:75  511.964 ms  511.896 ms  320.166 ms
    8  2001:4860::1:0:16  703.447 ms  399.187 ms  624.945 ms
    9  2001:4860::2:0:119c  511.687 ms *
    2001:4860::2:0:119b  529.863 ms
    10  2001:4860:0:1::e3  403.409 ms  517.593 ms  400.969 ms
    11  * * *

    Hop 11 seems to have packet filtering and dropped my traceroute.

    I’ve also masked my internal LAN IP to XXXX:XXXX:XXXX otherwise somebody could connect back to my LAN segment. I haven’t had time to figure out the firewall yet. But you can say this is the beauty of IPv6. With a 128 bit address space, every machine has a public routable address.

    Once I have my home network all ready I will begin transitioning all my servers to IPv6. Embrace technology.