Wednesday, December 30, 2009

First Look: Google's Chromium OS

Thanks to @hexxeh who built a bootable USB image of Chromium, Google's operating system.  @hexxeh provides an image of Chromium and instructions at chromeos.hexxeh.net.  The instructions under the wiki are a little more detailed so you might want to use them instead of the instructions on the main page.  There are also directions for creating a VirtualBox virtual machine vdi if you want to forego booting to a USB memory stick.

I booted Chromium on the Dell Mini 9, which required resetting my boot order and enabling USB Legacy Mode on in order for it to boot to the USB stick. Without further ado, here are (literal) screen shots of Chromium:

Running on the Dell Mini 9





Chromium Build


Chromium's configuration is simple, only four configuration screens.








Not much in the way of hardware configuration, just WiFi and ethernet.




The Google Wave client, built on GWT, is one of the more taxing browser applications.  Navigation seemed a little bit faster and the gadgets in the wave ran as expected.  Also note that the screenshot was taken from a 23 inch LCD.  This Chromium build mirrors external displays using the same resolution as the netbooks native screen resolution.  There are no options to change the resolution of the external monitor.



Finally Chrome is an HTML 5 compliant browser, so to exercise it a bit I ran several HTML5 demos.  Here's a video of one of them running in Chromium:




WiFi and ethernet is a bit wonky on the Dell Mini 9 and bluetooth did not work, but overall Chromium seem reasonably stable.  Chromium is in its early stages and there are bugs to work out, but it does suggest Google's future direction.

Tuesday, December 29, 2009

Are you REALLY a GIS Professional?

Slack time over the holidays leads to weird serendipity, idle hands and all of that.  I was reading about a trademark troll in the game industry when I saw a tweet about GISP Certification.  Curious about the current state of GIS Certification, I started reading through the site. Reading the GISCI Certification FAQ, I found this:
The "GIS Professional" and "GISP" designations are protected as federal registered trademarks owned by the GIS Certification Institute, which reserves all rights.  The Institute takes the duty of protecting the GISP credential very seriously.  If you have not been personally certified as a GISP by the Institute, then you cannot legally use the GISP designation, either as part of your signature or on your resume.  Any person found to have used the GISP designation without having been previously granted use of that credential by the GIS Certification Institute will be subject to legal action under federal copyright and trademark code.  In addition, such violation shall subject the person to disciplinary action under the GISCI Code of Ethics for misrepresentation of qualifications and/or any other applicable grounds.
I've seen plenty of resumes with "GIS Professional" ; apropos of my extracurricular reading, I wondered if they were infringing on GISCI's trademark.  Searching the the US Patent and Trademark Office Trademark Electronic Search System (TESS) for "GIS Professional" yields two results not related to the GISCI but to another certification program that claims "GIS Professional Certificate in Geographic Information Systems" as its trademark.

GISCI does hold the GISP trademark (yes, certification is essentially a brand), but not "GIS Professional" as a trademark. All the GIS Professionals can now breathe a sigh of relief and GISCI should correct its website accordingly.

Saturday, December 19, 2009

A musical interlude

And now for something completely different: Concerto Grosso in G Minor (the Christmas Concerto) by Arcangelo Corelli:


Many thanks to the Musical Archeologist for making this 1938 recording by the London Symphony Orchestra available.

Saturday, December 12, 2009

Postgres/PostGIS installing and uninstalling prebuilt binaries on OSX

I install and uninstall different versions of Postgres/PostGIS as needed.  EnterpriseDB provides pre-built binary installers that save you from the headache of installing all the bits and pieces needed for PostGIS. A small annoyance is that the uninstall-postgresql app is hidden in /Library/PostgresSQL/(version) directory. Dragging the PostgreSQL folder into the trash does not completely uninstall it as with other OSX applications.


I had problems installing PostGIS using the EnterpriseDB StackBuilder after an uninstall. It would go through the process but it would not create the postgis template.  The components were installed in /Library/PostgresSQL/(version) but I had to create the postgis template manually. In addition, PGAdmin III would list the postgres instances that I had previously uninstalled.


After a bit of hunting around with ls and grep, I found /private/etc/postgres-reg.ini  which contains definitions of the installed and uninstalled databases.  Why there is an ini file in an OSX installation is beyond me, but deleting this file ensures a clean install of the EnterpiseDB binary installers.   

Sunday, December 6, 2009

AR DevCamp NYC: Recap and Going Forward


AR DevCamp NYC was great. We had demos of PyGoWave and Goblin XNA; as well as, numerous discussions on AR, markers, GPS, and AR games.  We had a number of people join us via Skype including the author of the Spads and Fokkers.  Tish Shute put together a comprehensive report of AR DevCamp NYC (within 12 hours of the event). I went through twitter and pulled the links to media that attendees posted.



Thank You
The event would not have been possible without @TOPPLabs providing their penthouse and Ashley DeVries' assistance with the event planning.  My co-conspirators Tish Shute and Ori Inbar assisted with planning and getting the word out. Kate Chapman created the logo. AR DevCamp was the brainchild of Mike Liebhold and  Anselm Hook provided encouragement (and the wiki) to organizers of the other DevCamps.  Finally,  thanks to all the attendees who brought their energy, enthusiasm and ideas.


Moving Forward
AR DevCamp NYC is just the beginning.  Two projects presented at DevCamp, ARWave and The Big ARNY, are building on the inertia of the event.  ARWave is a project to provide and open, distributed, and universally accessible platform for augmented reality built on the Google Wave Federation Protocol.  The Big ARNY is an Augmented Reality game for New York, a follow up meeting is scheduled for January 15, 2010.  In addition, Ori Inbar has started an AR New York Meetup.  Augmented Reality is starting off with a bang in 2010.



Monday, November 30, 2009

Augmented Reality Resources for Software and Hardware


One aspect of AR DevCamp is building and hacking stuff.  Augmented Reality has been around for quite some time and there are many software projects and some hardware projects.  I'll  cover what I found after a couple of days of searching.  This isn't intended as a comprehensive list, rather its a sampler of what's available right now.


Marker based Augmented Reality
Augmented Reality has been around for some time; but until the relatively recent advent of smart phones with compasses and GPS, the major focus of open source AR software has been around markers that register images superimposed on the a camera view.  The canonical implementation is ARToolKit from Washington University which has spawned implementations in multiple programming languages. In addition to ARToolKit derivatives, other marker based AR software are Goblin and Goblin XNA which was developed using C# and .NET, Simplified Spatial Target Tracker (SSTT) Visualizer developed by Hartmut Seichter in C++, and Studierstube Tracker which is conceptually similar to ARToolKit but is a different code base designed for mobile phones. Here is the sampler list for Augmented Reality marker software.


Flash/Shockwave: 





C family:
Java:
Processing: 


Mobile Augmented Reality
Mobile Augmented Reality places information, markers, and 3d objects in the camera view of a mobile device based upon location derived from GPS or positioning information and direction, typically from compass and accelerometer.  Markers are typically not used in mobile augmented reality platforms such as the iPhone or Android based phones.


Android and iPhone:
iPhone:
Android:


Hardware
Augmented Reality hardware projects abound ranging from hacking heads-up displays (HUD) to wearable computing.  Pranav Mistry recently announced that the sixthsense project will be open sourced, probably so we won't have to resort to this:

There are also a lot of cool human computer interaction (HCI) projects coming from assistive technology that can be used to expand the AR experience.  Alternative modes interaction include using eye tracking for input and sound to provide additional cues that improve the user experience.  Also listed are a couple just plain cool projects


User Input:
Sound:
Cool Stuff:
This just scratches the surface of AR apps. Mashups between other software and public Augmented Reality APIs, such as Wikitude, are just starting.

Monday, November 23, 2009

AR DevCamp NYC


Augmented Reality Dev Camp (the unconference formerly known as GeoAR Camp) is scheduled for December 5th in Mountain View, CA.   AR DevCamp 1.0 is a full day of technical sessions and hacking opportunities in an open format, unconference style.


While a weekend jaunt to Mountain View from the east coast is well within the realm of possibility, the idea of yet another red-eye after a full day of unconference sessions and post event socializing sounded exhausting.  Tish Shute of  Ugo Trade and I were commiserating about not attending AR DevCamp, so we decided host a simultaneous AR DevCamp in New York for people on the east coast that couldn't make it to Mountain View.


New York has quite an active AR community, so there should a be diverse crowd that approaches AR from many different perspectives.  So far, some of the suggested topics are the Outernet Guidelines Initiative, using PyGoWave to implement the Google Wave Protocol for AR , the Internet of Things, and many more.  Like Mountain View, this an open format unconference. We plan to make use of teleconferencing and Skype to share sessions and include people who can not attend physically.  


The details are below and I hope to see geo-folks in attendance. 

New York City Event

ARDev Camp NYC is an open format unconference for Augmented Reality technical discussions and hacking opportunities. It will overlap with ARDev Camp in Mountain View, CA and provide an opportunity to collaborate with Mountain View.

Who Should Attend:
Anyone interested in mobile Augmented Reality, 3D graphics, the geospatial web, Outernet Guidelines, applications of AR in advertising and film industry (adult or otherwise), AR+Semweb, Google Wave Protocol for AR, locational privacy


Date/Time: 
December 5th, 2009. 10:00AM-9:00PM


Venue: 
The Open Planning Project office (TOPP) Penthouse in Manhattan


Directions: 
ARDev Camp NYC will take place at TOPP/OpenGeo's offices at 148 Lafayette Street, one block east of Broadway and one block north of Canal in downtown Manhattan. The nearest subway lines are the 6, N, Q, R, W, J, M, and Z.

Community Info:
Twitter: @ardevcampnyc, #arnyc
Skype: ardevcampnyc

Sponsorship:
We are looking for sponsors for meals,snacks, and drinks; if interested please contact ardevcampnyc@gmail.com


If you're interested in attending or leading a session, sign up at ARDev Camp NYC on the ARDev Camp Wiki

Monday, November 9, 2009

Dell Mini 9 OSX: Blue screen after an update

I received an update notice from Apple for Java, Quicktime, and of course 10.5.8. Unchecking the 10.5.8 option, I accepted the update; but I forgot about it and didn't reboot for a couple of weeks.  I shut down the Dell Mini the night before a trip and when I got to the airport (free wifi at SAT), I booted up and it hung with a blue screen.  I was able to start the machine in Safe Mode during the DellEFI1.2a5 boot sequence by typing -x.  I fiddled with the DellEFI1.2a5 options, but none of that fixed the problem.


I had some time to think about it during my flight; something had gone wrong with the update and I decided to update the system to 10.5.8 as soon as I had internet access.  I chose to use the combo update because I like hit things with the biggest hammer I can find. The 10.5.8 combo update is huge, ~780 mb, and I think that safe mode also limits the download speed of the wifi card because the download rarely went above 125 kbps.  Another interesting side effect of Safe Mode is that the ethernet jack was working but could not recognize that the cable was plugged in.  After waiting a couple of hours to download the update, I ran it, which took another hour.  I did the DellEFI1.2a5 dance of removing the dsdt.aml file, rebooting to Safe Mode, running DellEFI1.2a5 to create a new dsdt.aml and reload the extensions, the rebooted with anticipation. After all of that, I still had a blue screen.


I tried a bunch of things such as checking the disk, removing programs from start up, but none of it worked.  Out of desperation, I decided to try the OSX Startup keystrokes, starting with booting to Safe Mode by holding the Shift key down during the the OSX boot sequence (Darwin is loaded and the Apple boot screen is displayed), and not using the DeLLEFI1.2a5 method.  It worked (but not as intended)!  The machine booted normally instead of going into Safe Mode; the first boot took a little longer than normal but subsequent reboots took the usual less than 20 seconds.


My initial hunch was correct, but rerunning updates did not work, so I did a little more research on why it worked. It turns out that holding the Shift key during boot does the following on OSX 10.5.6 and higher:
A Safe Boot deletes the dynamic loader shared cache at (/var/db/dyld/). A cache with issues may cause a blue screen on startup, particularly after a Software Update. Restarting normally recreates this cache.
While holding Shift during boot did not send the Dell Mini into safe mode as it would a regular Mac, it did delete the dynamic shared loader cache.  Of course, you can delete the cache manually while in Safe Mode.  Hope some one finds this arcane piece of knowledge useful.

Thursday, October 29, 2009

Building a Prakticello: Build of Materials and making the body

It's been over a year since I "started" this project, but I finally took some time off to build the Prakticello.  For those who are curious about the plans, here is what you get:



The plans specify spruce for the body of the cello. Spruce tone wood is easy to find for guitar bodies, but its difficult to find the right dimensions because the sides of the cello body are 29". Tone wood can also be quite spendy.  With a bit of searching, I found that airplane builders also use spruce and you can order precut pieces.  I ordered slightly larger pieces so I could cut them to right dimensions.  I ordered the spruce from Aircraft Spruce and Specialty Company for $36 including shipping.  


Additional wood is needed for the saddle, bridge, knee, and chest supports.  I picked up several pieces of popular from my local home improvement store for about $15.  Mr. Nussbaum encouraged me to carve the neck and pegs, but I opted to buy a pre carved neck, finger board, nut and pegs from Metropolitan Music for $166.50 including shipping.  I picked up a tail piece on ebay for $8.00, but its wood and heavy so I'm thinking about getting a Wittner aluminum tail piece.  The remaining items that I still need are strings (Jargar  recommended), a bridge, and an endpin.  Here are the assembled materials:





Although the neck is pre carved, the size of the neck block gives me pause and I'm wondering who I know has a jigsaw or bandsaw I could borrow for a couple of hours.  I built the body of the Prakticello, here it is glued and clamped together.  For scale, the square on the cello is 16".








Nifty database login widget in GeoTools 2.6

Writing yet another login dialog for Postgres/PostGIS in Swing is tedious and mine always look crappy.  So I was happy to find that GeoTools 2.6 has a database login widget called JDataStoreWizard.  Updating the table with new features is also simple as adding your feature collection to the feature store.








Here's an example to call JDataStoreWizard and update a table in PostGIS
JDataStoreWizard wizard = new JDataStoreWizard(new PostgisDataStoreFactory());
int result = wizard.showModalDialog();
if (result != JWizard.FINISH) {
     System.exit(0);
} 
Map connectionParameters = wizard.getConnectionParameters(); 
PostgisDataStore dataStore = (PostgisDataStore)
     DataStoreFinder.getDataStore(connectionParameters); 
FeatureStore myFeatureTable = (FeatureStore) pgDs.getFeatureSource("myFeature");
myFeatureTable.addFeatures(myFeatureCollection);

Wednesday, October 14, 2009

Gamaray AR Browser Open Sourced

Development on Gamaray the AR browser stopped on September 30th.  Today, the Gamaray source code was released as open source and available for download.


In light of Layar wanting to charge content developers then changing their minds for the immediate future its nice to have alternatives.

Saturday, October 10, 2009

Update on Dell Mini with OSX

It's been six months, so I thought I would do a quick update on my Dell Mini.


What works

  • It's small and light weight: I travel frequently and its nice to be able to stick a notebook in my purse/backpack/grocery bag.  In contrast, my MacBook Pro (the old 15 inch model) weighs around  7-8 lbs with the power supply and requires a laptop bag.
  • It's powerful enough: I typically have 10 -15 apps running at the same time.  This includes MS Office, Eclipse, Apache, Postgres, a couple of browsers, Thunderbird, Colloquy, Tweetie, Evernote,  Python stuff, java web apps, text editors - the list goes on.  If things go pear shaped, it's usually a browser hogging all the memory.  I recently built the GeoTools library and I think the Dell Mini did it in under 20 minutes.  I would have never believed that I could do my typical workflow with a 1.6 GHz processor with 2 GB of RAM.
  • 32 GB of disk is sufficient: I thought that 32gb would be cramped, but I have yet to run out of disk space.  I don't think I've dipped below 5gb of free disk space, but I do cheat a little and use the 16gb SDHC card for storing big files.
  • Wireless works everywhere: With my MacBook Pro, I have dead spots in my house.  This is understandable because my house is old with brick walls and with non-load bearing walls covered with plaster over a wire mesh.  I don't have this problem with the Mini, I get WiFi in every part of the house.
  • Decent battery life: I can easily squeeze out 3 hours of work using the standard battery on a flight between San Antonio and DC, which is a 3.5 hour direct flight.
  • SD card:  Being able to copy photos from the SD card on my camera to Flickr or just on to my drive is teh awesome.  No additional cables needed.
  • Fast boot: So I have to hard boot on occasion, especially if sleep decides to throw a tantrum.  At least I don't have to wait very long, usually under 20 seconds.

What doesn't work

  • Form factor:  Its friggin small, so I use a USB keyboard, a wireless mouse and an external monitor to be productive.  Using Spaces to organize the workspace sort of helps, but nothing beats a big screen.  I've gotten used to the Mini keyboard, but I still prefer the Apple external USB keyboard when I 'm  working.  I installed Melkort's touch pad drivers, but the gestures are not the same; i.e. one finger scrolling on the mini vs 2 two finger scrolling on the MBP.  The keyboard and external monitor are really helpful, but I can work without any of these things, if need be.
  • Sleep:  Sleep used to work flawlessly, now it can be a crap shoot.  Sometime after the 10.5.7 update sleep started acting up.  Not a big enough deal to spend time tracking down a fix though.
  • Watching movies: I've tried several versions of VLC and ran through all the fixes in the forums, but it still has halting problems.  Also sound is bleh at best, even with headphones or external speakers.  Really harshed my nostalgia when watching Space Above and Beyond.
  • Monolingual:  Using Monolingual to slim down the install proved to be a case of being to clever for my own good.  Turns out that I did need some of those printer drivers and superfluous architectures.  I spent a couple hours debugging a make file before I realized that I only had an i386 architecture and that I need to remove the other architectures from the make file.
  • N270 processor does not support virtualization:  This is the biggest thorn in my side with no work around.  More often than not, I have to look at stuff on a different OS; so  I use Virtual Box (gave up on Parallels) on the MacBook Pro.
For what it's worth, I haven't applied the 10.5.8 update but apparently my 10.5.7 update instructions work.  I did upgrade to the dellefi1.2.5a which got Melkort's touch pad drivers to work. Other than that, there have been no changes to the system since the 10.5.7 update.

I've use the Dell Mini as my primary machine for six months under heavy use.  My 15" MacBook Pro is used mostly for running other operating systems and watching movies.  Given that the MBP is 6 times more expensive than the Mini in its current configuration, leads me to question the conventional wisdom about buying the most hardware you can afford.  I think that this goes to show the OSX performs quite well with modest hardware.

   
So far, the advantages of portability outweigh the Mini's shortcomings.  However, that hasn't stopped me from eyeing the 13" MacBook Pros, which would do everything I need, just not in such a small package.

Thursday, October 8, 2009

How To: Jars in a jar using Eclipse

I wrote a utility using GeoTools which uses a couple classes to transform geometry from one projection to another.  Projecting geometry uses EPSG definitions stored in the gt-epsg-hsql-2.5.7.jar which does not get bundled into an executable jar; for my utility to work as executable jar I needed to include the gt-epsg-hsql-2.5.7.jar.  


There are several approaches to building a jar that contains jars.  They typically involve using ant to bundle the files into the jar and a special class loader.  Writing the build.xml file and the class loader can be tedious.  Fortunately, the Fat Jar eclipse plugin simplifies the process and includes the One-JAR class loader.  


Installing the plugin can be done using Software Updates:



Click on Add Site

Enter the web site URL

Select the Fat Jar plugin and click on Install


Click Finish


Restart eclipse to finish the installation.


To build your project with external jars included, click on Export


Click on Other and select the Fat Jar Exporter

Select the project

Enter the name of the output jar, select the main class, and check off the One-JAR option to use the One-JAR class loader.

Clicking on next opens a dialog to select the jars to include, the default selects all external jars.  Unlike a typical executable jar, all the imported classes are not included so take the default and click on finish.  The Fat Jar plugin will build the jar with the external jars included, note that the final jar can become quite large.

Friday, September 25, 2009

Flying with a cello, part 2

On my return flight, I arrived at the airport three hours early expecting more ticketing fun and games.  Sure enough, even though everything (according to the Southwest ticket agents) was done correctly, the ticket agents ended up calling Southwest's Dallas headquarters to get a special dispensation to release my tickets.   Everyone at Southwest was very helpful; at one point a ticket agent was holding a phone in each ear at the same time.  The whole process took about 30 minutes to issue a boarding pass.  Southwest has an open seating policy, so I was told to talk to the gate agents when boarding.  


Going through security was uneventful.  The case fit through the xray machine with a little room to spare.  I was not asked to remove the end pin.  Walking through the airport was kind of fun; people smiled and parents would tell their children to look at the cello.  I might as well have been leading a llama through the concourse, because as everyone knows people love llamas.


At the gate, I asked the boarding agent about when to board and what were Southwest's regulations concerning the transport of cellos.  She didn't know if there were any regulations, but she let me board with the families with small children so I could find a pair of seats more easily.  Once on board, the stewards and stewardesses knew that I was flying with a cello and led me to the last row of seats. I also asked for a seat belt extender to secure the cello case.  The space between the seats was not large enough to fit the cello case so I had to pull up the seat cushion.  


I've always been hesitant about pulling up seat cushions on a plane ever since my cell phone slipped between the seat crack on a flight soon after 9/11.  When I pulled up the seat cushion that time, I found a number of bullets in the seat presumably left by an air marshall.  Long story short, the flight was delayed and I received the evil eye from the other passengers. 



Happily there were only stale peanuts and I secured the cello by sliding the seatbelt through the handle.  The flight was uneventful and the cello arrived safe and sound.


I would say that the important stuff about transporting a cello on a plane are:

  1. Give yourself lots of time to deal with ticketing problems and to avoid the stress of trying to make a flight when there are long security lines.
  2. Talk to the ticket agents and gate agents, they will help expedite the process.
  3. Take a direct flight if you can.
  4. If you have to take connecting flight, give yourself plenty of time between connections.
  5. Smile a lot, it really does help make things go smoothly.


Saturday, September 19, 2009

Flying with a cello, part 1

I moved to Texas in June but I left my cello in Maryland because I thought I would be spending more time in Maryland.  However, it didn't work out that way so I'm flying it back with me.  I researched a couple of options, one of which was to purchase a a flight case for my Bobelock 2000 cello case with the intent of checking the cello in as luggage.  Apparently there are travel cases for Bobelock cases, but they are not the same as flight cases.  The only flight case I could find was for Bam cases and they cost around $700.  Not sure that my Bobelock case would fit  and that the return flight was less than $100, I decided to buy my cello a seat.


I usually fly Southwest between San Antonio and Baltimore (BWI) because they have a direct and they're convenient.  I first booked my round trip ticket online and called reservations to book a seat for the cello.  The agent was very helpful and she reserved a seat for the cello and tied that ticket to my roundtrip ticket.  When buying a seat for an inanimate object, they issue the ticket in your name with an IXS suffix (Inanimate Xtra Seat, I think).  It took more than one try and they issued a couple of confirmation emails but it all seemed to work - until I tried to check.


When I tried to checkin at the kiosk, I was told to see a gate agent.  Apparently, Southwest's reservation system was unhappy that my return trip included a second seat under my name and it wouldn't let me checkin.  Southwest solution was to break my reservations into individual legs, i.e. three one way tickets.  They issued new confirmation tickets for the return flight, but the cello's ticket lacks the IXS suffix, so we shall see.

Monday, September 7, 2009

Augmented Reality and Android: This is not the droid I'm looking for

Brother Cavil: In all your travels, have you ever seen a star go supernova?
Ellen Tigh: No.
Brother Cavil: No? Well, I have. I saw a star explode and send out the building blocks of the Universe. Other stars, other planets and eventually other life. A supernova! Creation itself! I was there. I wanted to see it and be part of the moment. And you know how I perceived one of the most glorious events in the universe? With these ridiculous gelatinous orbs in my skull! With eyes designed to perceive only a tiny fraction of the EM spectrum. With ears designed only to hear vibrations in the air.
Battlestar Galactica [No Exit]
My Blackberry died of a broken USB connector a few weeks back and I replaced it with a myTouch; or as it is more geekily known, the second Android phone (this distinction in branding is important and I'll get back to it later). As with any new toy/technology, I can't resist loading the latest geek ware in an effort to break it. August was the Augmented Reality (AR) news month with Bruce Sterling playing beaming father to the fledgling industry; so what better way to try out new hardware than loading up a bunch of apps that make full use of the platform?
The Android based phones seems to be platform du jour for AR because of hardware access to the GPS, accelerometer, compass, and 3G (for the majority of the time). Augmented reality apps for iPhones have been recently released with the advent of the iPhone 3gs, and since the iPhone apps market is estimated to be worth 2.4 billion USD, in comparison to Android's miniscule apps market, expect AR apps to migrate to the iPhone real soon now. Returning to the branding issue, Joe Lamantia raises the geek-to-chic issue that will impact the future development of AR platforms.
I loaded Layar, Wikitude, and Gamaray and used them for a couple of weeks across different environments ranging from the suburbs and urban areas in Texas, Maryland, and New York City, inside and outside buildings, and while stationary and moving (car, train, plane). Comparisons are not terribly useful since they are very similar in function. In general, Layar currently has the most data layers but searching seems limited; for example a search for "sushi" returned no results but "food" did return results, but not always relevant. Wikitude imprints the closest street address if you take a photo, but I don't know if it writes the location data to the exif. Gamaray allows you to create content (including the insertion of 3D objects) without a developer key à la KML.
There are annoyances related to hardware. Getting a position fix on the myTouch's GPS can take over 2 minutes, and sometimes a reboot is necessary to kick the GPS out of its locational funk. Apparently, the iPhone also suffers from this problem. Layar and Wikitude handle this by using the last known position and Gamaray just refuses to start with a current position fix. AR apps are frequently rendered useless when in inside a building or in a moving vehicle. New York City's buildings create an urban canyon effect that hinders reception of GPS signals. This is unfortunate because AR apps seem to be targeted at the built environment.
For me, the biggest shortcomings of the current crop of AR apps has been the user experience, the lack interesting content, and the use of only locational sensors. I'll address them individually within the context of Joe Lamantia's article detailing four common AR user interaction patterns:
  • Heads Up Display - "information about the real objects are added to a fixed point of view, typically the focus of the user’s visual field."
  • Tricorder - "add pieces of information to an existing real-world experience, representing them directly within the combined, augmented-reality, or mixed-reality experience."
  • Holochess - "adds new and wholly virtual objects directly into the augmented experience, combining them with existing, real objects. The virtual items in Holochess interaction patterns often interact with one another—and sometimes with the real elements of the mixed-reality experience."
  • X-ray vision - "simulates seeing beneath the surface of objects, people, or places, showing their internal structure or contents. AR experiences using the X-ray Vision pattern often use a combination of projection and rendering—frequently, a schematic or abstracted rendering—of the object of interest"
UX sucks
Layar, Wikitude and Gamaray use a hybrid of the the Heads Up Display and the the Tricorder. My main pet peeve is the use of the Heads Up Display interaction pattern which is represented as a radar like scope with a wedge representing the field of view. Don't get me wrong, I spent many happy hours playing Battle Zone, but when I have to physically rotate the device (and myself) to see objects to my side or behind me, a simple 2D map is a more practical interface.
The Tricorder pattern is equally annoying, since this involves holding up the phone in front of you while scanning the horizon for alien life forms. Doing this made me feel like an alien in Herald Square. While I don't have a problem being an alien, it also made me feel like one of those self-important dorks who wore a blue-tooth headset constantly when they first came out.
Oh the promise!
Gamaray differs from Layar and Wikitude in that it implements the Holochess pattern by allowing users to place 3D object in the field view. This where things start getting interesting because users can interact with the application and reality instead of passively viewing info bubbles. It's not a far jump to the locative art installations as described in William Gibson's book Spook Country. The Mannahatta Project reconstructs the changing ecology of Manhattan back to 1609, and a AR app could overlay the historical view over the current view. AR applications are a natural fit for these visualizations. Temporal overlays could also be used to overlay houses,tax parcels, and demographic data in areas hit by tornados or hurricanes for use by emergency workers and insurance adjusters.
Where's the content?
Granted that AR is in its infancy, but the currently available content detracts from the idea of AR as a useful tool. A number of apps use Wikipedia as a starting point for content, but the entries in Wikipedia are scale inappropriate and are spatially coarse to be of interest. Tobler's law and its corollaries lands with a heavy thunk. Wikitude, Layar, and Gamaray all support user created content but there doesn't appear to be standardization around any particular content model. Crowd sourcing geospatial content worked well for Google, but Google had the advantage of a single data schema in KML as well as a single API.
AR is a natural fit for built environments but geospatial data is rarely collected at the resolution of individual manmade structures and data collection at this scale often means 3D. CAD data does exist for many urban areas but it is frequently locked up in hard drives of various planning agencies and engineering companies; its difficult to imagine that any of that data will be readily available. An alternative is Sketchup and apps are starting emerge, but none on a mobile platform so far.
Not significantly advanced technology
Considering that 18 years ago I carried a GPS that was larger and heavier than my current notebook and 7 years ago my Garmin Etrex was bigger than my circa 2000 Motorola Startac cell phone, you would think that I would be pretty happy with a device that combines GPS, compass, cell phone, camera, internet terminal, and music player into a single package. Actually, I am happy that I own this technological wonder that can begin to implement AR, but where AR apps fail to be indistinguishable from magic is that they don't use all the sensors. Amidst all the trumpeting that the compass was the killer feature on Android, features such as bluetooth, wifi, and of course the camera seemed to have been forgotten.
Makers have been busily hacking at phone cameras to make scanners and there are accessories to turn the phone camera into a microscope. An application that makes use of image recognition to identify objects in the field of view instead of using proximity and bearing to the phone's location would be infinitely more magical the current applications. An AR app can conceivably take a picture and send it to an image recognition service and then provide additional information based on the picture just like the folks at astronomy.net. That would be magic indeed.