Archive for September, 2008

ProjectX now a Google Maps Enterprise Reseller for New Zealand

Saturday, September 27th, 2008

We’re delighted to announce that ProjectX is now officially a Google Maps Enterprise reseller in New Zealand. We working with a number of high profile companies to integrate Google Maps into their websites.

If you want to know anything about the different licensing models ie. Free, Premiere or Enterprise for¬† Google Maps. Please contact us and we’d be happy to help you with your requirements.

We’re also, partners with Zawadski Ltd who are Google Apps Enterprise specialists.

Virtual earth release Reverse Geocoding and Landmark based routing

Saturday, September 27th, 2008

Microsoft have release a new version of Virtual Earth Web Service and Map control. There’s a swag of new features including:

  • New Mobile Support – Blackberry, Windows Mobile and iPhone
  • Internationalised versions – English, German, French, Italian, and Spanish for users in Western Europe.
  • New international reverse geocoding – Users can now find international addresses with reverse geocoding, which is now available anywhere Virtual Earth has routing.
  • Extended parsing capabilities – Users can expect better match rates for addresses in Australia, New Zealand, Canada, and Puerto Rico.
  • Pushpin clustering – The new map control includes the ability to zoom in on a map to better visualize a cluster of points.
  • New landmark hints in routing – Customers in the U.S. and Canada can now use maps that feature familiar landmarks, such as gas stations and fast-food restaurants, called out by name.
  • New imagery metadata – Users can now find out the relative age of a given image, which will help them assess if the imagery is still relevant to their needs.
  • New one-click directions – Through the Web Services, customers can now get directions in one click, choosing from route options by shortest time, shortest distance, or traffic flow.

What’s of interest to ProjectX is the reverse geocoding and landmark directions.

The landmark routing is a step in the right direction. Navigation by landmark is a very common way that we explain directions to people. Its nice to see that Micorsoft is lifting the bar.

We use a lot a reverse geocoding and it’ll be interesting to see how comprehensive it is and how fast the webservice is.

Free Seminar on Using Google Maps

Monday, September 22nd, 2008

We’re working with Zawadzki Limited to bring a high level seminar on “Using Google Maps”. The seminar is in Wellington on Friday 26th September 8:30am to 10:30am. The event is free, but you will need to register for the event.

Here is the overview for the seminar:

Using Google Maps

Google Maps is a great tool for making the data you already hold more accessible to your staff, your customers, or the public. Using Google Maps as your platform, you can:

make it easy for all your staff to benefit from the geospatial information you already maintain
link information stores to Maps and help users find and interpret information faster
engage your public with interactive Maps-based applications

In this two hour session we will cover:

  • What types of information can be presented using Google Maps
  • How to use Google Maps to visualise your existing information sets
  • How to augment your systems with Google Maps as a front-end
  • Examples of effective use of Google Maps
  • What is involved in piloting your first Google Maps application and common pitfalls
  • Licensing for Google Maps and differences between the Free, Premiere and Enterprise versions

Xapian search – acts_as_xapian tip (II)

Saturday, September 20th, 2008

Further to my first post on using acts_as_xapian, I have been trying to make xapian work with pagination and association proxies properly

class Lesson < ActiveRecord::Base
# Index user_id as a term in xapian

    belongs_to :user
    def self.find_with_xapian(search_term, options={})[self], search_term, options).results.collect{|x| x[:model]}

class User < ActiveRecord::Base
    has_many :lessons do  #Extend this association
      # Override the method in lessons
      def self.find_with_xapian(search_term, options={})[proxy_reflection.klass],
          "{proxy_reflection.primary_key_name}:#{}  #{search_term}", options)
        .results.collect{|x| x[:model]}

This will ensure that current_user.locations.find_with_xapian will find the correct number of locations, enabling us to work with pagination, etc. What’s left to do is to get the Search object out so that we can get matches_estimated out. I’ll leave out for next time.

This post was brought to you from Software Freedom Day, New Zealand.

Xlinks Digest – 20 / 09 / 2008

Saturday, September 20th, 2008

Here is a collection of interesting links as discovered by the ProjectX Team

    7 accounting tips for beginning businesses
    Added on 09/20/2008 at 11:47AM
    Jason Frieds 10 things we learned at 37 signals
    Added on 09/20/2008 at 11:47AM

    How to never forget anything ever again
    Added on 09/20/2008 at 11:46AM

    Why small web design companies should think big
    Added on 09/20/2008 at 11:45AM

    Those who have succeeded at anything and dont mention luck are kidding themselves. – Larry King
    Added on 09/19/2008 at 11:56PM

    Success consists of going from failure to failure without loss of enthusiasm – Winston Churchill
    Added on 09/19/2008 at 11:55PM

    How to make a million dollars
    Added on 09/19/2008 at 11:54PM

    Stanford offering free Computer Science and Robotics courses
    Added on 09/19/2008 at 11:51PM

    AWS content delivery service: Amazons lifting the bar again
    Added on 09/19/2008 at 11:48PM

    Freakanomics look at the current banking crisis
    Added on 09/19/2008 at 11:46PM

    Tim O’Reilly – Stop throwing sheep do something worthy
    Added on 09/19/2008 at 11:45PM

    What it costs to sack a person
    Added on 09/19/2008 at 11:40PM

    Sergey Brin’s personal blog
    Added on 09/19/2008 at 11:39PM

    Squirrelfish Extreme
    Added on 09/19/2008 at 11:31PM

    iPhone v Android: platform vs product
    Added on 09/18/2008 at 02:40PM

    SVG effects for HTML content
    Added on 09/18/2008 at 12:19PM

    Polypage – wireframes via ajax
    Added on 09/18/2008 at 12:15PM

    CSS transformations now in Gecko
    Added on 09/18/2008 at 12:14PM

Search as Locator Entry

Tuesday, September 16th, 2008

Jakob Nielsen has just written an article on location finders. The article outlines some behaviour changes of users in finding locations over the years.

The lastest research has found…

It’s still striking that 73% of users went to a search engine (mainly Google) when we asked them to find a nearby location for a specific company. Only 13% went straight to that company’s own website, while the remaining 13% went to a dedicated mapping service.

Given this changing behavior, we now have guidelines for search engine optimization (SEO) for the locator.

We’ve focused on making ZoomIn SEO friendly from day one so that businesses can be easily found. We constantly tune our system to ensure that we’re at the top the list for a result.

This re-inforces the need for businesses to make sure that their locations are being “found”, using ZoomIn is a good way to make sure that happens!

Xlinks Digest – 16 / 09 / 2008

Tuesday, September 16th, 2008

Xlink is a collection of interesting links as discovered by the ProjectX Team

    Donkey Kong source code found….
    Added on 09/16/2008 at 09:29AM

    10 aspects of web 2.0 strategy that every CTO / CIO should know
    Added on 09/16/2008 at 09:27AM

    What entrepreneurs need to know about founders stock
    Added on 09/16/2008 at 09:23AM

    Don’t buy that textbook download it for free
    Added on 09/16/2008 at 09:22AM

    GPS tracking can drive employees over the edge
    Added on 09/15/2008 at 08:25AM

    20 visualisation libraries
    Added on 09/12/2008 at 10:54PM

    Seth Godin – 8 startup insights
    Added on 09/12/2008 at 10:48PM

    20 best countries in the world for startups: Come on bloody New Zealand
    Added on 09/12/2008 at 10:39PM

    Curious Hack. How to solve a maze in Photoshop
    Added on 09/12/2008 at 10:33PM

    Space invaders in javascript: Cool Well done Chris
    Added on 09/11/2008 at 01:13PM

    UA Profiler
    Added on 09/10/2008 at 05:29PM

    Awesome Time Waster: YUI Pacman
    Added on 09/09/2008 at 02:53PM

    The “Feedization” of the Web
    Added on 09/08/2008 at 10:28AM

    NZ VC scene… Nothing Ventured
    Added on 09/08/2008 at 10:26AM

Runtime page optimiser now live

Tuesday, September 16th, 2008

Runtime Page Optimiser (RPO) is now out of beta, the team from have release the automagic web optimisation tool for IIS based sites. RPO is certified for ASP.NET 2.0 and MOSS/SharePoint 2007 intranet and internet sites.

Here’s a list of benefits:

But wait there’s still more, the team are going to release shortly an online webpage optimisation report tool based on AOL Page test.

Congrats to the ActionThis team and I’m looking forward for future improvements.

ProjectX moves into the heart of Silicon Welly

Friday, September 12th, 2008

We’ve moved!

ProjectX moved to Level 3 Symes De Silva House. We’re sharing the space with Plan HQ and the heart of Silicon Welly.

New Contact Details:
Level 3 Symes De Silva House,
97-99 Courtenay place, Wellington

Phone: 04 910 3100

Xapian search – acts_as_xapian tip

Thursday, September 11th, 2008

We use xapian as our offline indexing solution here at ProjectX. Recently, Francis Irving from mySociety has started a fantastic Rails plugin, acts_as_xapian. I’ll leave the introductions to the aforementioned pages. Suffice to say that it is quite easy to install, and it utilizes all the power of Xapian in a very smooth way.

One thing I have not been able to crack is to utilize association proxies on searches. Locomotivation has a solution using named_scope, but that approach removes all ordering, in addition to issuing one more unnecessary SQL statement.

class Lesson < ActiveRecord::Base
    named_scope :find_with_xapian, lambda { |*args| {:conditions => [" in (?)",[Lesson], args.to_s).results.collect{|x| x[:model].id}]}}

But if we do this instead, we can now do association proxies

class Lesson < ActiveRecord::Base
    def self.find_with_xapian(search_term, options={})[self], search_term, options).results.collect{|x| x[:model]}

current_user.lessons.find_with_xapian "something"

That would automatically scope and return lessons that belong to the current user only. Awesome!

Update: The code is not showing quite as nicely. I have pasted the same code in Pastie –