Map Apps and journey planners need fixing – in other news I suck at directions

I’ve been on a Christmas-break of sorts and as is typical for such “holidays”, one chore I had to complete was procure parts for a vacuum cleaner – something I don’t have time for on most weekends.

After an incredibly long and frustrating series of phone calls with Sharp Singapore’s “Customer Service”, I tracked down a shop somewhere in Katong that would sell me that part. Since I had a little bit of time, I decided this would be a fine test of Internet directions in a real world scenario. I would rely on:

  1. Gothere – for directions and public transport instructions to this shop in Katong
  2. SBSNextBus – to figure out if I would actually make the bus or not
  3. Navizon – for on the fly geo-location if I did get lost

As should be clear from the array of tools/sites above, I’m not very good at navigating this city. Unfortunately, that did not improve despite all the preparation I had done.

Let me start with finding a route – my first try at getting public transport directions from gothere gave me a set of directions that involved me taking 2 buses – including one to Changi Airport (!) and would optimistically take around 2 hours each way. I tried changing my starting point to another location a couple of train stops away and voila – a completely new set of directions that were much simpler and would take about an hour. Why the instructions would change so radically when all I had done was move my starting point a couple of stops along the same MRT line was beyond me.

The first stumbling block I hit was when I got off the MRT:

Whut?

So here’s my thought process when I see this direction:

“Raffles Hotel is on Bras Basah Road? But I thought it was next to Raffles City Shopping Mall!”

“And isn’t Raffles City Shopping Mall on North Bridge Road”

“And isn’t Bras Basah Road near Dhoby Ghaut MRT?”

“Navizon to the rescue!”

So I launch Navizon and now I’m thinking:

“So I’m on Beach Road.. and there’s Bras Basah Road!”

“But wait the map shows Stamford Road running top to bottom and I’ve got Stamford Road in front of me left to right”

“Maybe if I walk down further…”

“Ok great, now I’m on Nicoll Highway!”

At this point, I swallow my geek pride and ask the Doorman at the Swissotel for directions, and he kindly points out I’m essentially standing 10 meters away from Bras Basah Road and the Raffles Hotel.

Internet 0 : Real World 1

I get to the the bus stop and check SBSNextBus for the arrivals. My faith in the Internet is restored when I see a bus marked as “Arriving” on the site and look up to see it pulling in to the Bus stop as well…

Internet 1 : Real World 1

After a short bus ride, I get off the Bus Stop that gothere has recommended and suddenly realize that the printed directions don’t have direction arrows:

Now What?

I have a hazy memory that the main map recommended turning onto a road and walking down to find the place:

gothere-main-map

Note: Blurring above is to simulate my recollection of the map and is not a bug :)

So I look around for some clues and hey, whaddya know? A nice big road sign:

Perfect! I turn left and I should be there! After all, even gothere said I have to turn “somewhere”. Except, by the time I saw this sign, I was already walking the wrong way. That become very clear when after a couple of hundred meters, all I could see were HDB flats all around. I ask a lady for directions and she suggested I cross the road and take a bus.

At this point I’m thinking “Man, those gothere directions were just waaay off!”. Check SBSNextbus again and find out that the bus I’m waiting for is 35 minutes away. I concede defeat and hail a cab…………

…who drives me a couple of hundred meters past where I got down (see that map above?) to drop me off in front of the store #^&@! He also tells me “Don’t ask people for directions lah! They don’t know the place at all…”.

Internet –500 : Real World –500

Ok ok, not really.

Internet 0 : Real World 0

I pick up the parts and start walking back to the bus-stop for my return leg using gothere. SBSNextbus told me my bus was 10 minutes away, except when I turn onto the main road – there goes the bus I was supposed to catch. I know that SBSNextbus doesn’t claim to be accurate, but you have to imagine I wasn’t very pleased at that moment after all I had been through.

Get to the bus-stop and check SBSNextbus again, which helpfully informs me the next bus is 40 minutes away #^&@! I start going through the individual bus routes at the stop and finally figure out an alternative route that will get me near the MRT, but I would have to go an extra 5 stops on the train #^&@!

So 3 hours after I had set off from home (Remember that optimistic estimate of 1 hour each way that gothere had predicted?) I finally get back hot, thirsty and very very annoyed.

Internet 0 : Real World 1

Now I’m sure a bunch of you are rolling on the floor laughing and going “What a loon! He couldn’t read a goddamn map!”. But hey, most folks who look up directions on the Internet are looking them up precisely because they can’t read those goddamn maps.

Anyway, I wish the folks who provide map applications / directions consider a few things:

1. Orient the map to the way I’m standing and not the other way around – If you know where I am and which way I’m standing (that’s what the GPS tells you innit?), it should be relatively easy to flip the map around to match what I’m seeing in the real world no?

Obviously this isn’t possible for online direction maps but you can do one thing – you can tell me which way the map is oriented! Go back up and look at those gothere maps. Can you tell which way is up? In other words, if you are telling me to “walk down and to the right” you need to tell me in your map which way is up. Otherwise I’m going to look at street signs which probably don’t match your directions.

2. Don’t pull a switcheroo – when I went to print the maps in gothere, all those friendly direction lines disappeared forcing me to rely on my recollection of the full directions. Again, if I could remember my maps that well I wouldn’t be printing out a set of directions now would I?

3. Offer alternates – Obviously, the algorithm that picked the route for me knew about other options. It’s possible that I might miss a connection somewhere. It would be helpful if you could provide an alternate for each connection in a second set of directions. 90% of the time I won’t need it, but that 10% I miss my bus? I would kill for having a second set of directions all ready to go.

So that’s my rant about getting directions on the Internet – or how I suck at reading directions (you choose). Oh and in case you were wondering, I bought plenty of extra spares for that vacuum cleaner.

Things I like – Bitvise Tunnelier

Folks who run their websites on dedicated servers are familiar with SSH as a way to securely connect to their server from any location. A less well-known aspect of SSH is built-in support for tunneling – which can be simply explained as “built-in proxy server”. As the article I’ve linked to in the previous sentence succintly puts it tunneling “is a way to forward otherwise insecure TCP traffic through SSH”.

If you have ever been nervous about using public Wi-Fi for anything other than checking the news, you should definitely look at SSH tunneling. I use SSH tunneling to access websites that run on high port numbers (CPanel, HyperVM etc.) through my corporate firewall that only permits basic HTTP traffic otherwise.

On the Windows side, PuTTy is the most popular SSH client – being freeware and extremely light on memory and disk space are huge pluses. That said, I’ve found PuTTy to be rather lacking in tunneling support – 1) the application tends to buckle under several simultaneous connections and 2) it lacks any sort of built reconnection support, which is a basic requirement for proxying.

A little bit of searching around lead me to BitVise Tunnelier – a free for personal use SSH client that offers superb tunneling support. It also has a couple of other nifty touches that I like, but let me start off with the basic login window:

bitvise-main

This is the second clue that tunneling is a big part of this program (the name being the first clue ;-) ) – a log window of all active connections and traffic going through the application. Most of the other features in this window are available in PuTTy as well, but it’s definitely presented in a more accessible way in Tunnelier.

Let’s take a look at how to setup proxying in Tunnelier:

bitvise-proxy

Ah, this is so much better than PuTTy’s cryptic “dynamic” port setting. Not much else to talk about here, so let’s move onto Tunnelier’s screen for setting up port-forwarding.

Before we get there, it’s worth noting that port-forwarding really is some technological black-magic and most explanations have left me pretty confused, so here’s my stab at clearing up what Port Forwarding is – through SSH magic, Port Forwarding allows you to connect to a port on a machine in your network and have that connection automatically relayed to a different server on another network that you would not be able to reach otherwise. I hope that helps :-) , because that might help explain this screen a little better:

bitvise-fwding

In my mind, this is probably the worst UI screen in Tunnelier – it wasn’t really till I understood how port-forwarding worked that I actually wrapped my head around this screen. I do wonder if maybe a wizard might have helped here.

As it stands, the screen asks you to define the port on the machine hosting Tunnelier that should be “forwarded” to the remote server and once it’s at the remote server, which port the traffic should be sent to.

To wrap-up this show-and-tell session, let’s look at the SSH/options window:

bitvise-options

bitvise-ssh

Just to point out that Tunnelier offers not one, but two different settings to ensure proxying doesn’t break – an automatic reconnect option and a Keep-Alive option.

Final Notes and Caveats:

  • I haven’t  used Tunnelier’s built-in SSH client, but for pure command-line work, PuTTy is my preference.
  • Tunnelier also offers some very robust SFTP support – I haven’t used it myself, but my colleagues do and have only good things to say about it.
  • Astonishingly for a free product, Bitvise still offers great support for Tunnelier – just post in their support forum and you should get a reply from the developers within a day or so.
  • Some Network admins may not take kindly to your routing any traffic through this tunnel, essentially “hiding” your traffic from network devices. Check with your admins before doing this on an corporate network!
  • Yes, certain parts of the screenshots have been blurred out – I’m paranoid that way :-)
  • Apologies for the horrible colour on the screengrabs – my Tunnelier instance is on a remote server, which is only accessible through a slow VNC connection.

Not even Prof. Muller can save you now

I’ve been listening to the “Physics for Future PresidentsLecture Series and was amused to hear Prof. Muller state that while he does watch SF movies and can reconcile most of them with existing scientific theories, he simply could not wrap his head around “The Core” – which as I remembered, won the award for worst movie physics ever. You can read about other movie physics offenders here.

PS: I highly recommend the lecture series – it’s entertaining and a great introduction to critical scientific thinking about recent developments, without requiring the listener to have a science background. iTunes link here.

Spokeo and FriendFeed

Popular blogs covering the Web2.0 movement as well the larger web community seem to believe that Spokeo and Friendfeed are competitors. Nothing could be further from the truth. The truth is that Spokeo is about the network while Friendfeed is about the community.

Having now used both services for a while, I thought I would spend some time pointing out the differences between the two and why you might still wind up using both Spokeo and Friendfeed:

  • Spokeo is opt-out and Friendfeed is opt-in:

When you sign up for Spokeo or Friendfeed, you are offered the ability to import your address book from various providers. The first crucial difference appears here – Spokeo then searches each of the services it supports for the public profile of a person on your address book and pulls it into your Spokeo page. FriendFeed on the other hand, searches within the universe of FriendFeed members only.

Spokeo’s approach means that you simply cannot avoid being lifestreamed on Spokeo – the only way to avoid Spokeo is to flag your profile as “private” on every site you use. Even then, bits of your profile are always public and will be picked up by Spokeo.

Friendfeed on the other hand limits is search in two ways – one, it limits itself to people who sign up to Friendfeed. Theoretically, you could add profiles manually from other sites in anticipation, but it’s hardly the giant vacuum of data that Spokeo is. More importantly, Friendfeed will only display content from profiles that you tell Friendfeed about.

Obviously, Spokeo’s approach feels a lot more stalker-ish, but there is an one important difference:

  • Spokeo puts conversation at the source, Friendfeed keeps it locked up:

Spokeo is an aggregator plain and simple. If you wanted to favourite, comment or share content in any way, you have to be a member of the site the content originated from. Silent stalkers would love Spokeo, but for everyone else it’s really an RSS reader in disguise.

FriendFeed of course is all about the conversation – every social aspect of the content it aggregates is replicated within FriendFeed and inevitably, it is the community that grows up around this aspect that draws more people in.

  • Spokeo’s UI reflects it’s functionality; Friendfeed is schizoid

Since Spokeo is clearly an aggregator, it provides lots of flexibility around how you want to see content. Two key features in Spokeo I love:

1. Group friends into different categories

2. See only new updates.

I especially love the second feature because at a glance, I can see who has updated and follow up later if I want to.

FriendFeed on other hand can’t seem to make up it’s mind – It encourages you to track all your friends and other people you might be interested in; but mashes everything together in a river-of-news style that doesn’t facilitate easy scanning nor does it allow you to pick up where  you left off.

When Greasemonkey scripts are required to add basic functionality to a lifestreaming site, something is seriously broken.

Breaking News – Friendfeed have just launched a beta of the new site UI and the no. 1 change? Ability to group friends into lists.

  • Spokeo can filter noise; Friendfeed can’t

I’m a little bit torn on this, but I have to say I still prefer Spokeo’s approach on this. After Spokeo is done adding various services to each friend you add, you can go in and remove services that you think add too much noise, while keeping everything else. Perfect if you follow someone on twitter and Spokeo.

Friendfeed of course offers no such control. If you follow someone on Twitter and Friendfeed, get ready for duplicates. Of course, there have been interesting conversations in Friendfeed around some twitter posts, but the noise far outweighs the signal.

Again, the Greasemonkey script for Friendfeed I’ve linked to above allows you to “filter” services but it doesn’t work very well. Here’s hoping something happens in the new beta for this problem.

In the end, Friendfeed and Spokeo each solve very different problems. Friendfeed offers a way to build conversations around disparate content in a way that wasn’t really possible before. Spokeo allows you to manage the fragmentation of social networks across your address book. To each his own.

A final slightly long PS: Jason Calacanis’s decision to quit blogging has attracted it’s share of derision, but almost all the authors figure this is because Calacanis has a giant ego. Be that as it may, you have to admit the guy has some street smarts in building the first truly significant Blog network. This is a man well aware of how communities can be monetized, something he points out often during discussions on Twitter’s business model on TWiT.

Yet, here he was – seeing the community he had built up on his blog fragment into multiple conversations on Twitter and Friendfeed. Trying to stem the flow, he jumped into both services enthusiastically and very quickly built up large followings both on Twitter and Friendfeed. I’m guessing at some point he realized that he had built up a community again, but the people who could monetize these were Obvious and Friendfeed itself.

I believe that is why he stopped blogging and started an email discussion list – the community is under his control and as long as no-one scrapes the email and puts in on a discussion board, there is little chance of the conversation fragmenting. And monetization? All it takes is an ad in the footer of the email.

A Homily about the Lazyweb

BXP135207sh

If there is one thing the Lazyweb has taught me, it is this –

You are NOT a special snowflake.

Feel free to add more lazyweb lessons here :)

Notes From Moving House

Those of you who are kind enough to follow my ramblings on Twitter will know that I was offline for a few days moving house. Random thoughts/suggestions from the same to follow:

  • If you are moving to an unfurnished/semi-furnished house, get yourself a tape measure. The number of additional trips I made to furniture shops because I did not have one was just dumb
  • Also, get yourself magnetized screwdrivers. Hunting for tiny screws in the chaos from packing/unpacking just isn’t worth it
  • We slapped labels on all our boxes identifying the room it had to go to and what was in the box. Makes unpacking a lot easier when you don’t have to rip through all the boxes to figure out what you need first
  • The stuff that you box up first because you don’t need it? Yeah, you’re going to open that box half-a-dozen times before you move, having to shift 10 other boxes every time to get at it.
  • If you don’t use this as an opportunity to throw out old crap you never will.
  • Don’t even bother thinking you will be able to assemble Ikea furniture yourself – just pay the damn installation/delivery charge and save yourself the hassle. Even those guys wind up with extra screws that seem to do nothing!
  • Keep your cellphone charger handy – moving/furnishing house tends to burn through battery life like crazy and being stuck in an empty house with a dead cellphone is no fun.
  • Expect to blow your budget in unexpected ways and buffer accordingly. I had to pay for a technician to come out and fix my POTS line (yes i’m old fashioned)
  • Remember that eventually it’ll be all done and it’ll all be worth it.

Taipei – Before I forget

Just a grab-bag of stuff from my recent trip to Taipei before it completely fades from memory:

  • Singapore Airlines Business Class especially on the newer 777-200 planes (777-200 ER specifically) is wonderful – ample leg and seat room; power points in each seat; personalized service.
  • The KrisFlyer Business Class lounge at T3 in Changi is enormous – it’s quite easy to get lost there the first time you go in. It’s also a marked contrast from the tiny spaces that pass for lounges in other airports.
  • When flying to and returning from Taipei – I cached up unread items in FeedDemon and downloaded some podcasts. Although the caching in FeedDemon wasn’t very good (almost no images made it) I had enough to read/listen to that I almost made it through the entire flight without watching any in-flight stuff
  • On the flight to Taipei, the guy in front of me was watching Never Back Down. When I couldn’t open my laptop for various reasons, I wound up watching the movie and finally decided to see it for myself. I’m still regretting that decision
  • On the other hand, on the return flight I watched a couple of episodes of Flight of the Conchords and quite enjoyed them. I intend to grab some more episodes and watch them – even though I know my wife will be annoyed with my odd viewing choices again :)
  • Despite the endless increases in ERP charges, COE and what have you; it’s only when I travel abroad I realize how car-crazy Singapore is. The streets of Taipei are filled with two-wheelers in stark contrast to the traffic here. Of course that means you have to be constantly on the lookout for madcap drivers who try to squeeze past you with millimetres to spare.
  • I had only visited Taipei before in the latter half of the year and found the weather remarkably pleasant. Thus, it came as a rude shock when I encountered the sharp heat of early summer this time around :(
  • The food in Taipei was a revelation – whether it was a hole-in-the-wall pasta joint, or crowded local restaurant or the chi-chi People’s Restaurant, every single meal I had was top-notch.
  • The highlight of the trip (food-wise) though was a teppanyaki dinner. We were cajoled into going by a colleague who loved teppanyaki and I have to say I’m glad I went along. Teppanyaki is definitely not for anyone except hard-core carnivores (calorie-counters need not apply as well).
  • Carnegie’s on ladies’ night was an interesting experience.
  • It was quite discomforting to see at work how much we came to depend on the one person who spoke good english and mandarin/min-nan. When you are trying to understand stated (and unstated) requirements for an complex system, having two layers of translation in-between is surely a sign of bad things to come.

Is Ratio-Tracking The only Answer for BitTorrent Woes?

From the department of too-many-generalizations-from-too-little-data again: a little bit of armchair theorizing about BitTorrent (especially public BitTorrent trackers) as a reliable distribution mechanism.

Let me clarify that I’m not talking about reliability in terms of whether the data arrives without errors  or even whether the data is really what it claims to be – merely the question of how reliable is BitTorrent over long periods of time.

As a distribution mechanism, BitTorrent has always been well suited for handling "flash crowds" – large spikes in demand for a single file. The default approach of seeding while you download ensures that even as demand builds up, a large number of partial seeds shoulder some demand. There are two questions at this point that need to be answered:

1. What happens when the partial seed has 100% of the file and is in a position to become a "real" seed?

2. what happens to the late adopters – the people who find 6 months too late?

My off-hand analysis of public trackers seems to suggest that public trackers see a seed distribution over time that is left skewed and has very very narrow spike to boot:

Public Tracker Seeds - Time Series 

Seeds are hard to find in the initial stage of a public torrent as the few that exist are typically overwhelmed. At some point, a large number of people get the complete file and there is a huge spike in seeds. But almost immediately, that number drops off as people move the downloaded file around or simply delete the torrent to save on bandwidth. The result is that comment threads on most public trackers look something like this:

Seed seed seed seed....

Of course one could argue that really popular torrents will always have large number of seeds. Which neatly brings me to my second question – what happens if the torrent you are looking for is not so popular? I have often spent a lot of time doing deep Google searches for old versions of certain applications that were cached on download sites after the application developer disappeared. Even if I were to find a torrent for such an obscure file on a public tracker, odds are I would not get very far with the download.

Private trackers on the other hand combat this problem pretty well using ratio tracking. By forcing people to stick around and seed files in order to keep their ratio up, you get a seed curve that looks like this:

Private Tracker - Seed Time Series

It is not uncommon therefore in private trackers, to see a seeder:leecher ratio in excess of 2 or 2.5 even 6 months after the initial release. A more subtle but interesting effect is that download speeds do drop as a torrent ages but not as much as one would expect.

My guess is that this happens because people continue to seed at low speeds old torrents – they know that lots of seeds are available, but the tiny amount of data they speed goes to buffer their ratio. Since a whole lot of folks are seeding at slow speeds, the downloader still gets something approximating a fast download.

It’s my belief that for BitTorrent to really become a distribution mechanism for the ages (in Internet time atleast), some mechanism must exist to ensure supply (seeds) that can meet demand (leechers). The answer today seems to be ratio-tracking.

There is some talk that the ratio tracking game in private trackers creates its own problems, but it seems to me that’s a price a lot of people would be willing to pay.

pet peeves with modern web design: design reboot (Part 4)

Wrapping up the series with some thoughts on two things that bug me about modern standards-based Web design / CMS:

Why is Base HREF dead?

This probably reveals just how old-school a HTML coder I am, but I can still remember the days when Base HREF was a Big Thing. Here’s an obligatory link with more details for the young whipper-snappers out there.

When I initially created a development environment locally, I had to spend a lot of time fixing broken links to images as well as cross-links between posts. As I struggled in my text editor to fix all these links, I had this bright idea “Hey! I should just use BASE HREF – that way I won’t have to fix URLs every time I move between development & the live site”.

I happily coded in a Base HREF tag using the wpurl() function and at first, everything seemed to be fine. But once I switched to viewing the site through RSS, things started to break. First, the feed would not pass validation and second, an important plugin stopped working.

A little bit of research showed that the W3C standards for XML documents allowed for a BASE entity, but further digging on Base HREF support in RSS revealed this dead end. The only way to get Base HREF in RSS it seems, is to hack the core CMS files and once I did that, there would be no easy upgrades for me.

I gave up and went back to fixing URLs by hand, but I’m still puzzled by why such a useful feature fell out of favor with the powers-that-be.

The spread of no-follow

Ever since Google launched no-follow as a way to control link spam, it has found it’s way into all the major CMS software – WordPress, MovableType, MediaWiki etc.

I understand the purpose of having no-follow to defeat spammers, but what gets me is the fact that most CMS software today offer no way to switch this off. No-follow implemented this way really annoys me – you encourage people to contribute to the content on your site and boost your popularity, yet you do not repay the favor in any way.

A recent example – Miyagi.sg blogs about a website called Million Blog List, an experiment to see how quickly a million blogs can be found. The site asks you to:

1. Blog about adding yourself to the list

2. Add the site to your blogroll; and

3. Add a badge promoting the site.

What do you get in return you might ask? This -

mbl

I’m giving the benefit of the people behind the idea here – maybe they thought the site would link back to anyone who participated and have no idea that most CMS software does not by default.

Here’s what I think – no-follow should be opt-in, not opt-out and I certainly shouldn’t have to install a plugin to fix what is considered basic good manners on the Web.

That’s the end of this little series, folks. We now return to our regularly programmed silence on this blog :-) .

A Recession Proof OS

Drawing conclusion from the actions of a single individual is not very good research, but draw your own conclusions from this little anecdote.

My boss at work till very recently owned a Nokia N95 – despite all it’s gee whiz features, he primarily used it for two things – phone calls and taking photos of his 1 month old son. I don’t think I ever saw him use the web-browser, GPS or even the music player.

A few months back, he went back home to India for a holiday and his N95 was stolen. His relatives convinced him to pick up an iPhone as a replacement. Overnight, he becomes a geek.

I meant that last sentence. A few weeks in, he starts regularly pulling out his iPhone at lunch to check the Sensex via the Stocks Widget. He would do this despite the fact that he did not have a data plan and was using the Pay-As-You-Go service – which is incredibly expensive!

Next, he asks me how to unlock the phone after he upgraded to the 1.1.3 firmware. I google around and send him a few links, but figure it’s too technical for a non-techie like him. A few weeks later, he shows me his “upgraded” iPhone – not only has he upgraded to 1.1.3 and unlocked his phone, he has scoured the Web for iPhone applications that would unlock the functionality he really wanted – digital zoom in the camera and MMS. But along the way, he had found other applications that were just “neat” – a converter that could use the Web to get up to the minute exchange rates, games that use the accelerometer and a photo editor. He also tells me he’s actively considering getting a data plan, since he’s using the Net so much now.

There are few things that really struck me from watching this transformation:

1. The importance of putting functionality front and center in mobile UI – Looking up things on the Net with the iPhone is one click. Finding the browser on the N95 would involve navigating a menu tree 4 levels deep. It’s no surprise that a lot of people never use the N95 as anything but a phone.

2. The killer app for data on a mobile phone is not a single app – it’s the whole package. If data usage is seamlessly built into the whole OS and offers a compelling benefit to the average user, they will buy in. 

3. Not so much a conclusion as a prediction – The iPhone App Store is going to be HUGE – and it’s going to take off much much faster than anyone thinks. My boss is the classic average IT user – comfortable with office productivity applications and basic internet usage and nothing else. Yet, he spent hours searching for applications to get more out of his iPhone. Now he’s told there is a way to easily search and install apps on his phone – with no fear of bricking his phone. I guarantee you he would have pulled out his credit card before you can say “legal iPhone apps” :-) . Multiply that by a few million and you can see Apple declaring another monster quarter for revenue and profits.

Recession? What Recession?