BKKPages.com is a web directory of Bangkok, Thailand. It was - and remains to be - the only way to search by location to find your nearest restaurant, nightclub, hotel, dentist, hair salon, police station etc. It directs it's visitors to their nearest target businesses, tells them what they have on offer, how much it will cost to get there and what's on at that venue amongst other things.
Comprising of essentially two parts: it's Directory and a What's On Guide, the project was an immense undertaking. It grew organically, with features added over time, such as aggregated news content, live currency conversion and user registration to save "favourites". Had I sat down on day one with the aim of building what it finally turned out to be, I would have been certifiably bonkers to even start. I did start: no bonkers jibes are necessary.
Whilst it has various failings, I'm still hugely proud of this 9,000 page achievement, all by myself. It is my goal to revisit this project one day - though I would approach it in a very different manner - but for now, it remains in all of it's 2006 glory.
The key focus of this project from a software perspective was getting the SQL right. Luckily, with Joe Celko's excellent book by my side, I managed to get the whole hierarchical nature of the data delivered in one database call, pretty damn fast. Mr Joy's school trigonometry classes weren't wasted when it came to measuring distances. Once the SQL was sorted, everything else was relatively straightforward though I had "fun" back at the start recursing through n-levels of data in PHP.
The site uses a custom built map I created in Flash. It reads in small image squares, ala Google Maps, to build up a zoom-able street map of the city centre. Street names are overlayed as are transport stops and business locations. More on this later.
A key feature of the directory is that it enabled contextual advertising. Hotels for example could purchase adverts in the Hotels and Guesthouses section or target deeper by just advertising in, for example, the illustrious $150 and above department.
This project has various timed events - cron tasks - which aggregate news, weather and currency exchange rates from the relevant free source.
Shortly after the turn of the millenia I was working in London for Classic FM where, amongst other things, I was given the task of creating a Yellow Pages style directory from scratch. Armed purely with a massive text file containing hundreds of thousands of business address details, a world-class graphic designer and advice from a database guru from Hong Kong who barely spoke English, that directory grew to be hugely popular even to this day, albeit in a changed form with different owners now.
A job offer in Bangkok, Thailand saw me say a sad farewell to London, but the very first thing I realised on my arrival in my new city - when trying to search for somewhere to buy food on the web on day one - was that the concept of a Bangkok directory simply didn't exist.
#1: Where is my nearest ........? is easy in London as people tend to know their postcode. The granularity is so fine that any one code can be translated to a grid reference accurate to just a few metres. Bangkok does have postcodes but their number can be counted on your fingers; searching this way was never going to work.
#2: There were no decent online maps of Bangkok at the time. Google Maps obviously did exist but it only covered Thailand down to coastline and major highway level. (even when Bangkok did get added years later, street numbers where wrong for a long time).
#3: How to collate the information? There is nothing else out there to, ahem, borrow from. It is about 30°C most days in Bangkok, the humidity and pollution make it feel nastier but muggins here, dead set on making this idea work, set out with pen and paper in hand, plotting all the arterial routes. Madness, pure madness.
So how to tackle these issues? Firstly, I devised a system to drill users down - in a hopefully friendly way - to their location. This is made harder when you understand my target audience were holidaymakers and business travelers. Secondly, I copied the concept of Google Maps and recreated it in Flash using a map I drew myself from an open-source online copy using Illustrator. I opted to start with the Sukhumvit Road / Silom Road / Victory Monument triangle; roughly equivalent to the contents of London Underground's Circle Line.
This project threw up so many challenges. A search facility was made trickier by the lack of accepted English spellings of Thai words. I opted to go for the most phonetic version the words that I could. For example, Sukhumvit, Sukumwit, Sukhumvid are all quite acceptable spellings of the same street name.
The rest, as they say, is history.