Review: Building Location-Aware Applications
Recently, @manningbooks asked for reviewers of “Location-Aware Applications” by Richard Ferraro and Murat Aktihanoglu. I jumped at the chance, since this book has been on my To Read List since I saw its announcement. I like my reviews to give an overall thumbs-up or thumbs-down before getting into the details, so I’ll do that here. Overall, the book is very much worth reading (so, that’s a “thumbs up”). If you are new to Location Based Services (LBS) applications or if you work in only a small bit of that huge landscape, then you will gain breadth of knowledge from reading this book. Now, on to the details…
The first chapter dives into the history of LBS and how we arrived to the present day. It defines the “LBS Value Chain” (mobile device –> content provider –> communication network –> positioning component) and does a comparison of the various technologies used to obtain location information. GPS, CellID, and WiFi Positioning are described and compared at an appropriate detail. A discussion of LBS vs Proximity Based Services (those services that where a phone talks to the nearest phone(s)), was interesting, as I had never really distinguished the two. The chapter wraps up by listing the challenges of developing LBS applications (cost, myriad of devices, privacy issues, etc) and defining the Location Holy Grail that will push the future of LBS apps. This chapter will allow you to speak intelligently about developing LBS apps, something I really did not have going into the book.
Chapter 2 focuses on Positioning Technologies, such as Cell Tower Triangulation, GPS, etc. Again, I learned a ton by reading about the various approaches to positioning tech, including things like Assisted-GPS (A-GPS) and the Open Cell ID movement. I have been annoying my wife in the car by actually timing how long it takes our GPS to find the first satellite, which is called Time to First Fix (TTFF) (“Will you please just drive?"). Did you know that, not only did the military develop GPS but, it uses a more precise GPS its commercial counterpart? I want to get me some of that “pure” GPS, I bet that is some good s[tuff].
Chapter 3 deals with mapping and the various APIs that exist on the web. As an “experienced” geo-developer, I didn’t learn much about the APIs that I did not already know. I did learn a bit about Cloudmade, which looks pretty solid as an open source mapping (with a really cool style editor). It was interesting to read about which providers used which data (Google [used to use] TeleAtlas, for example, which I had forgotten was wholly owned by TomTom) Also, the chapter had a very simple example in many of the mapping APIs (including Mapstraction, which I thought was cool) allowing a quick glance at how the differ. Finally, the item I found most interesting was the discussion on the licensing of the APIs. I’ve known that Google won’t let you put their maps behind a login, but Yahoo has some weird clause that says you can’t use any data on top of their map that is newer than 90 days. Weirdos.
Chapter 4 deals with content from both licensing and distribution format aspects. This was the only chapter, for you ArcDevelopers out there, that mentioned ESRI on any level. The major license categories were: Pay, Free to Use (which means, look at our terms of service), and Open Source. I didn’t realize that there was an open source license, called Open Database License (ODbL), that was created specifically for OpenStreetMap. The content distribution formats mentioned were GeoRSS (both flavors: GML and Simple), GeoJSON, and KML. Again, for you ArcDevelopers, they don’t mention ESRI’s GeoREST specification format (as well they shouldn’t….sorry, tangent) Chapter 4 has a couple of code examples as well for “mashups”, which I couldn’t make work.
Chapter 5 runs through the various “needs” of Consumer LBS Applications. Existing applications are used to exemplify how these needs can be met. For example, the Need to Navigate uses Ulocate and the Telmap app, whereas the Need to Connect discusses things like Google Latitude (and it’s lack of adoption) Whrrl, and Loopt. For you iPhone users/devs, there is a nice table of iPhone LBS-social media apps. I learned of a game called GPS Mission in the Need to Play, which I plan to try out. The last bit of the chapter talks about Augmented Reality, citing the lack of AR apps that have a social media tie-in.
Chapter 6 describes the various mobile platforms and how to develop for each one. The list here is overwhelming. In a nutshell, I took away that Java is still the most widespread (Java ME, that is), the iPhone and Android approach are gaining rapidly, and Symbian is going to die. The mention of Palm’s WebOS is brief, but it cites how marketing can kill a good idea. The WebOS is probably the easiest platform to develop against, and it has things like true multitasking, which neither the iPhone or Android can tout. (FTR, Android’s multi-tasking can be “true”, but most apps still write their state to persistent storage on loss of focus. This is due to the fact that the OS will start killing out-of-focus apps if memory becomes a premium.) The chapter also runs through how to develop a simple app for most of these platforms. Comparing the development approach of Android to iPhone is scary, as the Android approach is simple Java and the iPhone requires multiple files in a proprietary language. There is no mention of soon-to-be-released Windows Phone, which I found a bit surprising. The book discusses Windows Mobile 6.5, which I can’t imagine anyone is using any longer.
Chapter 7 deals with Connectivity Issues, focusing on some of the terms introduced earlier in the book, like quick TTFF. It covers things like making sure you tell the user when you are using their GPS (and, therefore, draining their battery) and wraps up with a look at some of the mobile OS location APIs. All in all, I thought this was the thinnest (content-wise) chapter.
Chapter 8 gets into the stuff I that I was most-clueless about, monetizing LBS. The various ways that you can charge your users are covered, like one-off charges, subscriptions, in-app charging, etc. Other ways to generate money were more business focused, like charging for real-estate on your massively popular site or location data charging. I really enjoyed this chapter.
Chapter 9 goes back to nerd land, but on the server-side. It offers various ways on how to manage data on the server, from users to map tiles to POIs to spatial RDBMS data. PostGIS and MSSQL get a decent mention here, with lighter comment on Oracle and MySQL. Some of the LBS servers are given press here, mainly MapServer. ArcGIS Server gets another very light mention here, as well as MapInfo, MapPoint, GeoMedia (Intergraph) and Maptitude. All in all, I thought this chapter was too light on server-side coverage, which I think would be pretty important if you were hosting your own super-macdaddy geolocation web application.
Chapter 10 deals with the subject that no one likes to deal with: Privacy. The chapter does a good job explaining “Locational Privacy” and relating it to the more mainstream risks of all informational privacy. Privacy is probably the largest issue with your LBS app, and everyone from the mobile operator down to your user is going to want to know how you handle it and, in some cases, will force you to handle it their way. Basically, the best way to keep data private is to not collect it. If you have to collect it, don’t store it. If you have to store it, anonymize it. If you can’t do that, encrypt-the-hell out of it. Another good chapter.
Chapter 11 goes through considerations when distributing your application. In the mobile arena, there are tons of different deployment scenarios, not to mention big issues like price and timing of release. Plus, you can deploy to an OS (Android), a mobile operator (Vodaphone), a handset (iPhone), or independently. A lot of stuff to consider before you just focus on iPhone and Android (and maybe, Win 7)
The last chapter discusses business strategy to securing your idea. This is a bunch of stuff that, as a developer, you don’t want to do, but you have to if you want to make huge piles of money. Things like writing your business plan and getting partnerships are mentioned, which means you’ll have to get our of the nerd cave in your mom’s basement if you want this app to take off. It ends by running through the trademark and patenting process, which sounds a lot like getting a colonoscopy, only more enjoyable.
Again, I enjoyed this book and I appreciate the opportunity to review it. I am not affiliated with Manning or the authors in any fashion, if that matters.
All in all, the book does what you’d expect, departing real knowledge about LBS applications in today’s world. It’s surprising to me how the LBS world is almost completely void of ESRI technology, since I consider ESRI to be the leader in GIS software. I think this shows how much GIS has changed in the public eye. Regardless, I recommend reading Building Location-Aware Applications for anyone planning to develop LBS apps or wanting to learn a big picture of LBS app development.