Honeymoon, Part 2

Jamie: The trip to Bayswater went pretty smoothly. We caught a shuttle back to the airport and another bus to Liverpool Street Station, from where we decided to catch a cab rather than trying to lug our luggage on to the tube when we didn't really know where we were going. Our hotel (Queen's Park Hotel) was a bit old and quaint, but functional enough and spotlessly clean. The lift was a tiny, slow little box which could barely fit the two of us with our luggage. The room was smallish, though nothing on the Tune Hotel in Malaysia.

Jen: In London, we got to see "We Will Rock You", "Hairspray", "The Lion King" and snow.
Please ignore my bizarre facial expression and look only at the snow.

All four were very exciting. We actually saw "Hairspray" and "The Lion King" on the same day, following a long and moderately boozy lunch at an Indian restaurant, so I fell asleep for a bit of Lion King, which I felt pretty bad about because it was a spectacular show. It was in one of the ballads, I think, and I woke up when Jamie nudged me to ask what had just happened on stage. I don't think he was particularly impressed when he realised he'd just woken me...

Jamie: I found the theatre culture in London to be fascinating. It almost seems like theatre in London is as commonplace as going to the movies at home. This is evident not only in its easy availability (we purchased our tickets to Hairspray just a few hours before we saw it), but also in the enthusiastic response of the audience.

Jen: After a few days in London we made the trek out to the main station and caught the Eurostar to Paris. As it turns out we're really lucky, because apparently all Eurostar trips between London and Paris have now been suspended due to problems with FIVE of them breaking down in the middle of the tunnel, resulting in people being stuck on the train, with no lights and heating, and with food all run out, for up to 16 hours. We caught the Eurostar the day before all this happened, and aren't catching it again thankfully.

The weather in Paris has been cold but really nice - the novelty of snow has not worn off. Yesterday we found some lovely soft snow to walk in, as well as crunchy, slushy snow. (Jamie: Walking on the snow is quite an interesting and pleasant feeling. Sometimes, it almost just sounds and feels like gravel, but at others, it's more like walking on a fluffy, crunchy carpet.)

We spent a ridiculous amount of time playing in the snow.

We also have been trying not to slip on the ice. Special thanks to Sharon and Terry for our fur-lined boots - they are amazing!!

We have been rugging up a bit.

Paris is quite beautiful in parts. The area our hotel is in is pretty average looking but the hotel itself is awesome (it helps that we got another room upgrade). Yesterday, after a cliched breakfast of croissants in a dodgy little cafe:
we caught the tube with the intention of getting off at the Eiffel Tower, but we went by Champs-Elysses station and decided to get off on a whim (OK, it's because of the Art vs Science song which starts with "The Champs-Elysses is a busy street...".) There were Christmas markets there which we spent ages at drinking mulled wine and hot chocolate with Baileys, and wandering around in the snow.

We didn't make it to the Eiffel Tower (I saw it from a distance and that's enough - it looks really ugly...) and instead went to the Louvre. This was a highlight of the trip for Jamie...not. Having Jamie there was actually really awesome because it turns out that blindies get free entry into every museum and art gallery in France so we got to jump the queue and get in for free. And he didn't even die of boredom, because we got those headphone tour things so as we wandered round he could listen to all the socio-historical stuff. We did a 45 minute tour called "Masterpieces" which included Venus de Milo (the highlight for me - amazing)
and Mona Lisa (not so breathtaking). I could have spent days there but that would have been a bit crap for Jamie. Today we found a chemist (we both have colds, unsurprisingly considering that it is below freezing!) and a laundromat (the only trip to a laundry we will need to make, thankfully.)
Note the tasteful picture of Jennifer Lopez in the background.

We then stepped into a gorgeous little bar/restaurant and ate and drank for 2 hours.

I finished with the cheese platter and will not be needing dinner tonight.

Jamie had pannacotta, and I think he nearly cried when he got to the last spoonful. It was a magical journey for him.

So now we are here in our hotel room packing for Bordeaux. Well, I'm blogging and Jamie is complaining about packing. We do have more photos, but can only access the ones on my iPhone at the moment. Au revoir!
read more

Honeymoon, Part 1

Jamie: Our honeymoon has begun! :) This is the first of several posts about our experiences. They're primarily intended for interested family and friends, but I figure I may as well post them here for all to see.

We're flying with Air Asia, our first intended destination being London. We had about an 11 hour stop over in Kuala Lumpur, Malaysia. First of all, the Air Asia flights have actually been far better than we were expecting. Even without the larger seats, we weren't hideously cramped, although I wouldn't want to be particularly tall. (There are some advantages to having less height. :)) We'd been told there was no in-flight entertainment at all, but it seems that there is now, although you have to pay extra for it of course. The food is fantastic, which is a refreshing change from most airline food.

Anyway, we arrived at the KL low cost terminal some time after 4am on Monday. We had booked a room in the nearby, no frills Tune Hotel just to have a shower and get a few hours sleep... or so we thought. After spending forever getting through customs, we decided to walk to the hotel rather than organising a shuttle bus, as it is apparently only about 5 minutes walk. Big mistake. We made it eventually, but dragging our 20+ kg suitcases over grass, busy roads, narrow pathways and a fence proved to be quite strenuous and exasperating. :( (Jen: It didn't help that even at 4am the temperature was about 25 degrees and the humidity was absolutely disgusting.)

Upon arrival, we discovered that for some reason, we didn't actually have a booking. I remember Jen going through the process, but obviously, it wasn't confirmed properly or the like; unfortunately, our error, as we couldn't find any record of the confirmation either. Worse still, they were fully booked. Terrific. We were told that a room would become available in about 4 hours for the refresher package, which allows for a 3 hour stay to freshen up. Having no other option and being exhausted and in serious need of a shower, we decided to wait.

In the meantime, we went to the hotel's 24 hour cafe to grab a bite to eat. A rather random place indeed. We were going to buy a breakfast sandwich, but they didn't have any bread. We opted for Rendang noodles in the end, which turned out to be fantastic. They just used a pre-packaged frozen meal, but as we discovered, even frozen meals in Malaysia are absolutely delicious. Why can't frozen meals in Australia be that good?

After several hours of waiting on a couch in the lobby, me dozing on and off, we finally got our room. And whoa, what an experience! These rooms are intended to be extremely low cost, no frills rooms for stopovers and the like and we had read about how small they were in reviews, but that didn't prepare us for the reality. There was literally barely enough room to walk around the bed! With two suitcases, climbing over the bed was the only option. Having said that, the shower was good, the bed was comfortable and there was air conditioning, so it certainly served its purpose.

At about 1pm, we caught a shuttle bus back to the airport to catch our flight to London. We had the joyful experience of waiting at the departure gate listening to almost continuous, loud, extremely distorted announcements over the PA system. Arrrg! :) As I write this, we're about half way through the flight.

Jen: The flight from KL to London was great - for me. I slept for about 8 hours, so time flew and I felt pretty good. Poor Jamie barely got any sleep at all, so he was pretty delirious by about 3 hours before landing. I convince him to put in some earplugs and try to get some sleep (before that he hadn't really tried because "Trying to sleep is more frustrating than not sleeping") but he did manage to doze off for a fair while. We arrived in London at about 10.20pm, collected our stuff and went to wait for our hotel shuttle in the 2 degree freezing cold, which was fairly invigorating! We were pretty excited by the time we arrived at the hotel (by sheer lastminute.com mystery deal coincidence we ended up at the Stansted Hilton) and were taking photos while waiting in line. The man at the desk offered to take it for us, and we told him we were on our honeymoon. He checked us in and said "I think you'll like this room...". Upon arriving to our room we discovered that he had upgraded us to the Presidential Suite! It has a big bed, 2 bathrooms, 2 massive plasma screen TVs, a lounge room and free wine! Is it terrible that the free wine was the most exciting part for us? Rather than going straight to bed we stayed up until 2am drinking a beautiful Chilean Cab Sav, eating room service and watching TV, until we both hit a wall and crashed.
We've now just had a lovely breakfast and are back up in our Presidential Suite with an hour and a half until we check out and travel into Bayswater to check into the hotel we will be at for the next 3 nights. So far the honeymoon is going very well. We are taking every opportunity to introduce each other as "my husband" and "my wife". I was very excited when I got to call room service and say "Good evening, this is Jennifer Teh from room 201...". I can't believe we still have a month to go!
read more


On Saturday, for my buck's celebration, Michael (my best man) arranged for my groomsmen and me (minus Mick, who's in Melbourne) to go skydiving. I think Michael was more nervous about doing it than I was initially. That was to change a bit later. :)

I awoke at 5:35 (yuck) to get to the skydiving office by 7. Jen helped me fill in the paperwork and was horrified by some of its content, including something along the lines of "accidents can and do happen". :) Meanwhile, Matt slept in and didn't make it to the office in time, but thankfully, an arrangement was made and he was able to join us. We met our jumpmasters and were shown how to move our bodies upon exiting the plane.

Soon enough, we were harnessed and taking off in the plane with our respective jumpmasters. Even being in the plane was a bit of an experience; I've never taken off in a small plane before. I was a little nervous by this stage, but it wasn't until maybe a minute or so before the jump that I truly began to get nervous. What the hell was I doing? I was told later that Michael's jumpmaster looked back at me at one point and noted in amusement to Michael that I was starting to look rather worried. :)

Time to jump. Michael went first and then it was my turn. The wind swirling around me, my jumpmaster (Steve) at my back, I had my feet out of the plane, I got my body into what I hoped was the right formation... and then we were falling, belly first, the wind rushing by me with awesome speed. For a few seconds, I had a bit of a freak out. Holy crap! I'm falling! Belly first! Is this okay? For some reason, I hadn't imagined we would fall belly first, as the formation is taught upright. It makes sense in hindsight, but it just hadn't clicked. My technician mentality set in. Was my body in the correct formation? Am I doing this right? Moving my body in that state was so... different. My control freak mentality couldn't do anything about this either. Steve corrected my arms a bit and then I relaxed slightly. Wow! Incredible! The wind rushed by; it was pretty much impossible to talk, though Steve managed it somehow. Unfortunately, my ears didn't like free-fall so much. Eventually, Steve deployed the parachute. We were jerked upright and then...

All was calm and still. My legs were dangling in mid air! Wow... again! But there were even bigger wows to come. After a bit of floating, Steve turned the parachute... and then we were soaring through the air. This was probably the most amazing, elating part for me, this feeling of literally flying as the wind rushed around me and then coming to a graceful stop. The fall was exhilarating, but this was incredible in a different way. Steve let me have a go at steering the parachute, which was pretty cool.

Too soon, it was time to land gently on the beach. Throughout the day, I kept wishing I could do it again. We spent most of the rest of the day (about 12 hours!) celebrating in more traditional ways. :)

The next day, Michael called to tell me of a headline in The day's Sydney Morning Herald: Skydiver dead after 13th jump. Nice. Later reflection led me to think about how it would have been if things hadn't gone so well, particularly thinking about that feeling of free-fall. <shudder> Jumping out of a plane really is pretty insane. Funny that I didn't think about that so much before. I've been thinking about the experience quite a lot in the past 24 hours, both in wonder and a bit of trepidation. I think I'd still probably do it again... probably... :)

It was certainly an extremely memorable experience and I'm grateful to have had the opportunity to do it. Thanks guys!
read more

Object navigation: why is it okay for VoiceOver but not NVDA?

Since VoiceOver came to Mac OS X, many screen reader users have joyfully sung its praise - and there's certainly a lot to praise. Some who were previously Windows users have taken the plunge and moved to Mac OS X completely, never looking back. Others use both operating systems or perhaps dream of no longer being dependent on Windows for certain software. This is all fantastic, but as an NVDA developer, there are also aspects of this that frustrate and exasperate me.

Right from the start, NVDA has used "object navigation" in order to review the user interface, particularly to provide access to elements which can't be otherwise accessed using the keyboard. In short, every element in the user interface is generally represented by an object. These objects exist in a hierarchy or tree of objects. Object navigation allows the user to explore this hierarchy by moving between objects and then descending/entering/interacting with objects of interest. For example, entering a list would allow you to see its list items. This is in contrast to the "flat review" (or "screen review") method that Windows screen readers have traditionally used for review, whereby the user can review the content of the screen in a flat fashion from top to bottom, left to right, similar to the way a simple text document would be read. While this might seem more logical at first, it's worth remembering that a sighted user doesn't necessarily read the screen in this ordered fashion. Instead, they are more likely to focus on specific elements of interest, which in some ways is more akin to object navigation. As always, both methods have advantages and disadvantages.

On the Mac, there is only object navigation; there is no concept of flat review of the entire screen using the keyboard. (In the latest version of Mac OS X, you can explore the screen in this fashion using the trackpad. However, NVDA's tracking and reading of text under the mouse allows you to do something similar.) It seems that Mac users are quite happy with this approach, and yet we are constantly bombarded by NVDA users with complaints about the difficulty of object navigation and requests for flat review functionality in NVDA.

So, here's my question for those of you who are either full or partial Mac converts. Why is object navigation quite acceptable on the Mac, but yet not acceptable in Windows? It sometimes seems to me that some of the same users who frequently sing the praises of VoiceOver then turn and complain about the lack of flat review in NVDA. Perhaps I'm wrong and those users who want flat review would not be comfortable using VoiceOver. Even so, it sometimes seems that people are willing to accept a different approach on a completely new platform, yet are unwilling to accept it in a newer product on an existing platform. It's certainly true that NVDA's object navigation needs to be cleaned up a bit (removing extraneous objects, etc.), but I don't think this is the whole story.

ON the web, this gets even more interesting. Due to the non-linear fashion of web pages, Windows screen readers have had to provide their own "flat" representation of web pages. They then override the cursor and other keys to navigate within that representation. Aside from the technical issues associated with this, working with interactive controls on web forms requires a separate mode of interaction (named forms mode, focus mode, etc.) where the screen reader lets the user interact directly with the control by allowing cursor and other keys to pass straight through to the control. (Some screen readers can automatically switch to this mode when appropriate, but there are still two modes.) This is becoming more of a challenge with the ever growing number of web applications, where more keys are required to work with the application. Object navigation solves this problem because the cursor and other application keys are never overridden by the screen reader, so the screen reader doesn't interfere with the functionality of web applications.

Again, VoiceOver uses object navigation on the web and VoiceOver users appear to be quite happy with this. NVDA currently does what other Windows screen readers do, but again, would you be happy if we abandoned this approach in favour of object navigation? It would certainly solve this web application problem once and for all. I get the impression that NVDA users would be unhappy if we changed this.

I want to hear your thoughts. Comment here, Twitter or send me an email.
read more

The Adventures of Jamie's Independence (or lack thereof): Episode 1

So Jen left yesterday afternoon for two weeks to attend the International Kodály Symposium in Poland. This is the first time I've had to survive entirely by myself for longer than a few days without some pre-cooked meals. It's been less than a day and I've already made several blunders...

I was going to cook chilli basil chicken, but due to the meat not thawing enough and after procrastinating until about 8:30pm, I decided that crumbed steak, chips and veggies would be a better idea. Of course, the crumbed steak was frozen too, but I figured that wouldn't be so bad to defrost in the microwave. Frustratingly, it refused to defrost nicely (as is far too often the case), but I finally got it to a point which was sufficient. I then rubbed some oil on the electric grill and managed to spill a decent glob of it in the sink. Bah - a bit of a pain to wash down, but no harm done. I whacked the steak on the electric grill. So far, mostly good. I probably left it to cook a bit long, but it seemed to be okay when I took it out.

As I was eating, I noticed that the breadcrumbs on the steak tasted pretty crappy due to being rather soggy. That happens sometimes, I guess, so I peeled them off. But it still tasted like soggy breadcrumbs! It was only then that I looked more closely and realised that the sogginess was between... the two pieces of crumbed steak. FAIL!

Thankfully, I'd cooked it (them?) long enough that the meat was fine. They're not that thick, so the thickness hadn't seemed odd to me. However, I didn't even *think* to check that their might have been two pieces and not one in the plastic bag. I suspect they had partially frozen together, but nevertheless... idiot!

(By the way, it's highly likely that Jen told me there were two pieces in the one bag, but I don't remember.)

I'm sure there'll be more foolishness like this in the coming weeks, so stay tuned!
read more

Apache mod_wsgi with Trac and Bazaar

I recently installed the mod_wsgi Apache module and configured Trac and Bazaar to use it. Here are some notes that others might find useful.


The mod_wsgi documentation on Integration with Trac provides information about many different configurations, as it should. However, much of the document discusses setting environment variables from within the script using os.environ. As the document notes, this is problematic if you want to run multiple instances of Trac within the same process. I think using SetEnv from within the Apache config is a far better approach (which is discussed towards the end of the document). This also allows you to use the same, minimal wsgi script for many instances of Trac.

The document also demonstrates setting the PYTHON_EGG_CACHE environment variable via os.environ. This can only be set once per process anyway. However, if you're running in embedded mode, a more elegant way to do it is to use the WSGIPythonEggs configuration directive.


The Bazaar User Guide describes configuring the Bazaar http smart server with fastcgi and mod_python, but not mod_wsgi. This mailing list post describes configuring it with mod_wsgi. As above, I prefer to set the environment in the Apache configuration so I can use the same script for multiple configurations.

My script is as follows:
from bzrlib.transport.http import wsgi

def application(environ, start_response):
return wsgi.make_app(
)(environ, start_response)

With this script, you can specify the root and prefix passed to the bzr smart server wsgi application using SetEnv in the Apache configuration.

Here is an example configuration snippet making an entire tree useable with the bzr smart server. The prefix is set to "/", which means that the root (/) of the http host corresponds to /srv/bzr in the filesystem.
    WSGIScriptAliasMatch ^.*/\.bzr/smart$ /usr/local/share/wsgi/bzr.wsgi
<Location />
WSGIApplicationGroup %{GLOBAL}
SetEnv bzr_wsgi.root /srv/bzr
SetEnv bzr_wsgi.prefix /

If you have branches in shared bazaar repositories and are experiencing errors related to "server jail" or "jail break" when you try to access them, you are probably experiencing bug #348308. See the bug report for a temporary work around.
read more

Touch Screen Keyboard Difficulty for the Blind: A Potential Solution

There's been a lot of talk about VoiceOver on the iPhone 3G S... and so there should be. I suspect (and others seem to concur) that Apple's model for touch screen accessibility ought to be quite useable under most circumstances, but that typing on the touch screen keyboard could be rather challenging, perhaps the most challenging aspect of the interface.

Thinking about this, I had a brainwave: perhaps a Braille touch screen keyboard could be a nicer solution for blind users. A Braille keyboard doesn't require you to shift your fingers horizontally or vertically, which eliminates the challenge of finding characters. Instead, you only need to raise or lower your fingers in various combinations. I'm guessing that the multi-touch touch screen should be able to detect these combinations. I can't remember how big the touch screen on the iPhone is, but I suspect it is probably large enough to allow for the fingers to be placed in Braille typing formation. I can't type as fast on a braille keyboard as I can on a QWERTY keyboard, but I'm a hell of a lot faster on a Braille keyboard than on a phone keypad. In fact, I'm wondering whether this method of input would actually be faster (assuming a proficient Braille typist) than a sighted user using the normal touch screen keyboard.

Surely I'm not the first to wonder about this... or is this really a new idea?
read more

EU Objections to Microsoft's Bundling of Internet Explorer with Windows: My Thoughts

In January, the European Commission sent a Statement of Objections to Microsoft expressing their preliminary view that the inclusion of Internet Explorer in Windows has violated European competition law. Subsequently, Microsoft announced that Windows 7 will ship without Internet Explorer in Europe.

First, let me emphasise a few points. I've certainly had some negative things to say about Microsoft in my time. They're certainly no angels. I'm a huge advocate of free, open technologies and software. I'm a Mozilla Firefox user and advocate it strongly over Internet Explorer. All of that said, I can't fully support this case. It's certainly true that, given the dominant position of Windows, bundling Internet Explorer with Windows has given it an advantage that no other browser could have achieved, thereby allowing it to markedly dominate the browser market. This has undoubtedly caused a great deal of damage to innovation and competition. However, as argued by Jean-Louis Gassée concerning the earlier United States case against Microsoft, given the increasing prominence of the internet, consumers expect to have a browser packaged with the operating system. Apple bundle Safari and many other applications with Mac OS X - one of the strongpoints of the Mac is that everything is so tightly and nicely integrated - yet no such complaint has been made about Apple. There are many other platforms that bundle a web browser also.

Microsoft's domination of the desktop computer world obviously makes the impact of bundling much greater. Even so, I can't help feeling this is at least a bit unfair. It could be argued that the removal of Internet Explorer from Windows actually puts it at a disadvantage when compared to Mac OS X, which still includes Safari. Furthermore, without a bundled browser, a user can't connect to the internet to download a browser, which impedes internet usage. In the end, will Windows be the only platform which doesn't bundle a web browser?
read more

New Apple iPhone Accessible to the Blind: My Thoughts

Apple have just announced that the soon-to-be-released iPhone 3G S will include the VoiceOver screen reader, among other accessibility enhancements. Although I'm still uncertain as to the efficiency of a touch screen interface for the blind, this is fantastic news. For the first time, an every day mobile phone/PDA will include a screen reader as part of the core product at no extra cost. Apple's inclusion of VoiceOver into Mac OS X was revolutionary news, and they've now done it again with the iPhone. I'm sometimes rather cynical towards Apple, but I am continually impressed by their commitment to incorporating out-of-the-box accessibility into their products.

It's worth noting that the iPhone is not the first touch screen phone to include accessibility for the blind. A suite of self-voicing applications called Eyes-Free is available for Android which enables blind users to use many functions of the phone. While this is great to see, it's disappointing that this is what I call isolating (or isolationalist) accessibility; i.e. blind users must use a different set of applications to everyone else to access the phone and are thus isolated from the experience of other users. This appears to be a (in my opinion disappointing) trend for some sections of Google, as demonstrated in the separate, so-called "ARIA enhanced" and "accessible" versions of some of their services, wherein they often present a different interface for blind users instead of integrating accessibility right into the existing interface. I think that isolating accessibility certainly has its place - it can sometimes make for a more friendly and easier learnt interface and is the only practical option in some extremely visual scenarios - but in general, I believe it is extremely limiting and inflexible. Admittedly, a touch screen interface is inherently visual and thus presents a new set of challenges. Not only does the user interface need to be spoken or brailled, but the method of input needs significant adaptation to be used by a blind person. This is probably why the Android Eyes-Free developers chose the path they did. However, Apple have taken a better, more generic approach similar to that of most modern operating systems, allowing blind users to use the same applications as everyone else. The new iPhone incorporates accessibility into the core of the operating system and VoiceOver modifies the input method as well as reading the user interface, which allows any application to be accessible with VoiceOver, including all of the in-built applications.

Experience will determine whether Apple's implementation is optimal for blind users. Regardless, they've truly raised the bar for mobile accessibility.

Disclaimer: I have not had any personal experience with either VoiceOver on the iPhone 3G S or Android Eyes-Free. These thoughts are solely based on the information I have gleaned from various internet sources.
read more

Too Lazy to be Lazy

For a while now, I've been thinking about writing a tool to quickly perform all sorts of little miscellaneous tasks that I'm too lazy to do manually. They aren't big enough to each justify their own application, but nor are they at all related. These tasks include:
I came up with a great name for this application: Jantrid Laziness Proliferator. Unfortunately, I'm too lazy to actually write it...
read more