Finalists in TUANZ Business Internet Awards 2007

TUANZ LogoThis is pretty cool. For the last 3 years I’ve been working as the architect with the Innovations and Ventures department at Air New Zealand.

Yesterday we found out that three of our projects are finalists in the TUANZ Business Internet Awards for 2007 !

The projects are:

Grabaseat screenshotGrabaseat (Advertising & Marketing category)

For those of you who haven’t seen grabaseat (GAS) it is a site that has daily discounted fares sometimes as low as a dollar.

This site has been very successful, in May this year we hit 1.9 million visitors a month and the latest “grabaseat on tour” promotion run in October saw a further 30% increase in the number of visitors !

The Air New Zealand ISIS online booking engine (e-Commerce category)

ISIS screenshot

This is the one I am most proud of. Its the cornerstone application developed by Innovations and Ventures.

Its the most complicated system I have every worked on, not such much the user interface (which is very cool with AJAX and the like) but the quoting and pricing engine behind it.

Coming up with a price for a plane ticket is horrendously complicated and mathematically, an unsolvable problem. ISIS not only does it but it does it incredibly fast and smoothly which is what you want in a $1billion sales channel :)

How far can I go? screenshotHow far can I go? (Experimentation category)

One of first ideas we came up with when we started working on the ISIS engine was to turn the usual conversion with a booking engine on its head: rather then picking flights and get a price, wouldn’t it be better to pick a price and get told what was available ?

That is what How far can I go? does. Even better it has very very cool user interface where you move a price slider up and it shows you everywhere you can go for that price on a cool map zooming map and the price points for the next 6 months. Love it.

I’ll keep you posted on how we do. Hopefully we win em all !

Facebook:Do you know who is watching you?

Facebook is a fantastic site but last week they went from been a closed social network to a more open one.

What the heck does that mean? Well Facebook has started to allow non-Facebook users and search engines such as Google to see parts of your profile!

Luckily this can be easily fixed:

  • Log into face book and then click on the “_privacy_” link in the top right hand corner
  • Then click on the “_Edit Settings_” link in the “_Search_” section.
  • In the middle of the page find the section that reads “_Who can find my public search listing outside of Facebook?_” and uncheck the two boxes.
  • Scroll to the bottom of the page and click on the “Save” button.

This will stop non-Facebook users and search engines from seeing your profile.

Now I sure you are happy to comment on your love life to your friends but do you want the whole world to know?

Most likely not; so whilst you are at it you might want to edit the settings for the “_Profile_” section on the “_privacy_” page. This controls who can see what on your profile page.

I’d suggest that you set all the options to “_Only my friends_” but you can be more open then that if you want :)

See you on Facebook…

SIGGRAPH is over :(

Back at work now for a couple of weeks which is OK but not quite as fun as being in the USA :)

Have been playing with ZBrush 3.1 for which there was a free upgrade. Its very very nice I’ll put some stuff up here once I do anything interesting. Also got the upgrade for Animation Master v14.

Also been playing with the workflow from Animation Master to ZBrush and back again. The UV mapping is painful so I’ve put together a prototype for a AM plugin that automatically assigns UV co-ordinates to patches. Still a work in progress but I’m getting there.

Currently home sick hence this rambling post. I was doing so well this winter too ! I blame my workmates for giving me the flu.

ticktock – my first Facebook app

Just added the finishing touches to my Facebook application. Its called ticktock and basically displays a clock on your Facebook page.

But its no ordinary clock; it shows the local time AND Internet time. The Internet time is measured in units called tocks which are the same regardless of where in the world you are. So for instance 234tocks in Auckland is the same time as 234tocks in London.

Great if you need to set up an IM chat or meeting with someone on the other side of the world.

If you have a Facebook account then check out the ticktock application

My first YouTube video

Just uploaded my first video clip on YouTube !

Its a bunch of 360 degree pans of European cities that we took on our recent trip. Because of the fast pace of change the compression really messes up the video :(

The actual footage looks very much better….

YouTube Preview Image

Using JSON for Java and PHP interop

I’ve been playing with Markov chains for doing ‘random’ text generation. Had an interesting problem in that I needed the GUI code to run on a PHP based web server but I didn’t want to have the processing of the source files occur every time. I also had a nice Java program doing all the source text processing for me and I didn’t really feel like porting it over to PHP either.

What I needed was to store the data generated by the Java app in a format that I could use in my PHP pages.

I initially was going to serialise the data into a binary file or into XML but to be honest this seemed like just to much work and I’m (like most coders) a bit lazy.

Enter JSON, the JavaScript Object Notation. This is a format like XML that supports the light-weight encoding of data, however it also supports types and in fact is executable in Javascript to convert a JSON string directly into Javascript objects and arrays. This makes it very useful for things like AJAX applications.

JSON has wide platform support so both PHP and Java can encode objects and arrays into JSON and visa-versa. Even better to do so is very easy which appeals to my lazy coder nature :)

For instance to write out a popluated Java HashMap to file using JSON-lib is as simple as:

Map map = new HashMap();<br /> map.put( "name", "json" );<br /> map.put( "bool", Boolean.TRUE );<br /> map.put( "int", new Integer(1) );<br /> map.put( "arr", new String[]{"a","b"} );<br /> JSONObject jsonObject = JSONObject.fromObject( map );<br /> System.out.println( jsonObject );<br /> // prints: {"arr":["a","b"],"int":1,"name":"json","bool":true}

On the PHP side of things, there is a built in function (under 5.2.0) called _phpdecode() which is used as follows:

<?php<br /> $jsonString = '{"arr":["a","b"],"int":1,"name":"json","bool":true}';<br /> $decoded=json_decode($jsonString,true);<br /> var_dump($decoded);<br /> // prints: array(4) { ["arr"]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } ["int"]=> int(1) ["name"]=> string(4) "json" ["bool"]=> bool(true) }<br /> ?>

Nice and neat.

So my final solution is:

  • Java application processes the source text files and builds up the appropriate maps and data for the Markov chains
  • Using JSON-lib it generates strings for the data and saves them to files
  • My PHP page loads the files, does a json_decode() to get the Markov chain data loaded
  • The PHP then generates the text using the loaded Markov chain data

Just too easy :)