Archive for the ‘ThisIsMobility’ Category

The Subjective Meaning of "Platform Maturity"

Wednesday, March 4th, 2009

I posted yesterday about wanting to use my phone to publish my location in realtime, and I got a bunch of fantastic responses both in the comments and as emails (thanks folks!) I fooled around with some of them with varying degrees of success. Nokia Sport Tracker seems like it would be great! However, I can’t figure out how to make the phone app do it’s job. Maybe my fault, I have an E71 and it’s not listed as a supported model. I’ll have to dig out my N95 and try that one. However, on the Android side, I put FirePin on my phone and was able to upload and share out info about my route (course, it only has to points, cause I have the phone on wifi only right now). FirePin supposedly also works with FireEagle based on the comments I got. But I can’t figure out how that’s supposed to work.

Generally I’ve been hearing frequently about how location based services are really starting to happen this time around. Yea, yea, I know. That’s what we’ve said every year for the last decade. Don’t even bother, I’ve heard it all before. However, this time we have some open platforms with GPS built into the handset, which means there’s a way to work around most of the problems inherent in the carrier based system we had before. Any by “problems” I mean “crippling cost structure”. I can kinda understand how that seems like a more mature market for location based services. Because end users can grant permission to an application for it to directly grab location info, there are all kinds of services out there.

However, I would hardly count that as platform maturity. That’s a degree of market maturity, but not platform maturity. Sure, it’s easier to build a location based app. Just plop your application into any one of the silos that folks have built to control the deployment of your application and management of your data, and blammo! New app. Yea, not the way I normally think about these things. Which is not to belittle the efforts like FireEagle, I just think there are a few missing bits.

Here’s the kinds of stuff I was expecting to see:

  • A somewhat generic app that records location information. Recording information to a local file seems to be pretty decent, I guess there are standards floating around for that. However, there doesn’t seem to be much of a standardized interface/protocol for streaming location information up to a server. GPSGate has a protocol that seems to operate over UDP and TCP, but that doesn’t seem to be an accepted public format.
  • Some server component that I can chuck on one of my machines to accept samples sent up by that little client shim.
  • Basic tools to display those samples on a map. Google has provided most of the backbone and made it pretty simple to use. But there’s also Openstreetmap for those who are Google alergic.

That basic set of functionality is a write-once bit of infrastructure. It gets us out of the “Oh yea, FirePin is great!! Wait, no, you can’t use it on your Nokia”. Not that the tools won’t evolve. But there should be an open set of base clients for all the different mobile platforms, and then anyone who wants to build a web app that pulls in location info can just say “Okay, add local.rowehl.com:9900 to your location client to start updating the Mike-o-matic pile of gold finder app with your current location” Instead we have all these different point solution client applications, frequently hardcoded to send location to a given server. Dumb.

Sharing Location Info

Tuesday, March 3rd, 2009

I’m planning to go on an extended motorcycle trip in May. Whenever I leave to go somewhere for more than a few hours and my friends know about it I tend to get a lot of calls. They get very concerned and call to make sure I’m not lying on the side of the road somewhere bleeding. Can’t blame them, the precedent has been set. And hey, it feels good to know that next time I actually am lying on the side of the road bleeding there should be someone looking for me pretty quick even if I don’t have a sweeper following me. However, it also means that there are a bunch of worried people out there if I don’t answer my phone for some reason, for which I feel guilty. “I should be able to solve this with technology!” says Mike the geek.

Immediate thought, Google Latitude. I can keep recording info about where I am in the background with both the Android and Symbian phones I have. That way folks can see where I’m going as I’m going, and if I don’t answer the phone they at least know I’m moving. Which should mean I’m okay, unless I’m wedged under a truck getting dragged down the road. I haven’t figured out a technical solution to detecting that, so I’m leaving that corner case off the table for now.

However, the only way I can see to get info out of Latitude is through the iGoogle widget. Not a bad way for it to work, but I want to just post my location to my blog. Seriously, I don’t give a crap about privacy. I wanna publish where I am for everyone. And I’m not going to get my mom and my sisters to sign up for Google accounts, just not gonna happen. Is there a way to do a background update of location info and publish it your own website for example? Or a system where I can suck it back out easily and map the results?

Another option is to geotag photos and publish them on Flickr. That works, but requires that I’m taking photos in order to update folks about where I am. Perhaps a cool addition, but doesn’t get to the root problem I’m trying to solve, which effectively comes down to passively instrumenting myself using my cell phone and publishing that info as realtime as possible online publicly. I’m sure I could knock together an Android app to do it pretty quickly, but I have to assume there’s something out there already.

Debian and X11 on the G1

Tuesday, February 24th, 2009

There’s a package now for installing X11 on the G1, which builds on the Debian for G1 package. I haven’t fooled around with the stuff yet, but what am I interested in running with access to the full set of Debian software? Well that should be obvious. Metaspoit of course. Cellular interface + Wifi interface + handheld device + automated security scanning = fun!

Symbian Malware - Signed

Friday, February 20th, 2009

I saw some random references to something called Sexy View, malware aimed at Nokia devices. I was just going to ignore it, but then I realized it appears to be a signed application. Delicious. If nothing else that should allow the response folks to track down where it came from I would assume. The reports out there are vague so far at best, but I’m hoping at some point something will shed some light on how this came about. I’m assuming something happened like some company got careless (or went out of business and just ignored) their signing key for applications, and some malicious party got hold of it. Very curious about this I am.

Google Apps for Domains with G1

Wednesday, February 18th, 2009

After poking around for a while trying to add a second Google Apps for domains account to my G1, I finally just reset it and registered with my mike@theotherdomain.com address to activate the phone. Very cool that works directly, I have my email and calendar directly integrated into the phone. However, I would really like to have both my personal @gmail.com account and my @theotherdomain.com account both fully supported on the phone.

I can technically add my personal email as an external email account, and share my calendar so that I can add the ical feed to the Calendar app. Too hackish though, with lots of rough edges. Especially around calendaring. Is there an option floating around somewhere that I just haven’t found yet to add a second Google account to the phone setup?

Installing RC33 on a Dev G1

Monday, February 16th, 2009

A friend over at Google provided me with an unlocked Android phone, which I’ve been poking around with here and there doing some development. I hadn’t really poked around with the phone itself all that much, meaning looking at hacks and usage tricks and whatnot. Yesterday I decided I wanted to update to the latest firmware (RC33) however, so the journey began. I have my G1 running on the AT&T network, which is where some of the complexity comes from.

I started out with the normal instructions for manually installing the RC33 update, which are pretty actually slick and simple. However, I was getting a failed check when trying to install the firmware. I assume there’s some internal ID that identifies the phone as a TMobile phone or not, and my dev phone doesn’t have that, so the installer was throwing some assertion failure check. So I figured I would try out one of the jailbroken images if I’m going to have to muck around for a while anyway.

There is an alternative version of the RC33 update available, called the JF33 sometimes, and other times the JF RC33. The JF stands for Jesusfreak, the forum user who repacks the roms and has apparently provided test keys that can be used to downgrade a unit. Once you know what you’re looking for, there are tons of posts in forums and blogs all over the place. The problem is just figuring out what you need to search for.

The process goes something like this:

It was a bit of an involved process to get through. And at first when I installed the RC29 firmware and had to re-activate, I was afraid I wasn’t going to be able to do so without a TMobile SIM. Just a bit of APN hackery took care of that however. Phew! Now I have Latitude working in maps, and root access in the terminal. W00t! Back to developing now.

Omar’s Interview on All Things Digital

Tuesday, January 13th, 2009

Check out the interview that Omar did with Kara from All Things Digital. Kara’s a fantastic interviewer, and Omar always has interesting stuff to say. So even if you normally skip video tidbits (like I normally do) this one is still worth it.

The comments about Silicon Valley and Madison Avenue just starting to realize the potential in mobile advertising with the iPhone because it’s the first time they’ve actually seen it themselves, that rings really true. Lots of us thought the iPhone was going to take a long time to make a difference, if it made a difference at all. We were so very wrong about that. Just goes to show, being “in the industry” doesn’t really mean crap in terms of your ability to predict what’s going to happen when there’s a discontinuity. That discontinuity that happened in mobile is now working it’s way through complementary and adjacent markets. Should be an interesting few years coming up.

Palm WebOS

Friday, January 9th, 2009

The fact the Palm has taken a radical turn, redesigned their mobile platform around access to the web and development around web technologies, and is releasing a new device based on it in the first half of this year are all really non-news items for me. What’s going to be the deciding point is what happens when us developers get to see the Mojo SDK that goes along with the WebOS platform.

The message so far coming out of Palm is on target in that regard. They need to return to the kind of innovation and energy that went along with the initial Palm Pilot devices. The big deal there was that they had a relatively simple platform that encouraged developers to experiment, and at the time they were the only real game in town for someone who wanted to pick up a device off the shelf and be able to program for it. Basing the design of the OS around web interfaces and attempting to allow developers to use the same technologies for native apps as they’ve been using on the web, I like that actually. Just a few days ago I was fooling around with hooking into native services on Android from within a browser interface, and it provides a really powerful system for getting stuff together quickly with quite a bit of flexibility.

So overall, I got to say, my curiosity is somewhat piqued. I don’t think we have enough info at all yet to make any decisions. But for the first time in oh-so-long, I’m happy about what I’m hearing.

Shim Services

Thursday, January 1st, 2009

I’ve been sick for the last few days. Perfect time to put a bit of a dent in that ever-growing pile of unread books next to my bed! Which I began doing without hesitation, until I kept running into cross-references to other books in Dreaming In Code. Some of the books I know I’ve read, others I know I should definitely pick up, others I’m not sure about. Have I read them? Do I own them? As I scan my bookshelves looking for my copy of The Soul of a New Machine I re-realize that I’ve already cleared the unread book stack a few times. Now there’s a bunch of still-very-interesting unread stuff mixed in with the filed-away-for-reference stuff. Maybe it was because I was reading Dreaming In Code that I began suffering from delusions of adequacy, but I thought “I must organize this!”. Maybe it was just the Nyquil talking.

First thought was along the lines of “there must be some software out there that will do this for me already.” Lots of stuff for OS X, but I’m on a Linux system most of the time. And the the most promising of the Linux based cataloging software crashes immediately on window move or resize on my 64-bit desktop system. Maybe that’s not the way to go. I want something quick, easy, and hopefully composable into other usages.

How about something for Android? I’ve been fooling around with developing some Android stuff. And they have Zebra Crossing, a prepackaged lib for barcode scanning. I should be able to find something floating around out there that should make it easy to just scan a whole bunch of barcodes. I can use that to make a big list of ISBNs, and then feed the stuff into a combination of ISBNdb.com and Amazon lookups to make myself a database of my books.

In poking around looking for a simple barcode scanning notepad kind of app I saw the Oilcan app sitting on my Android desktop. Oilcan is a browser wrapper that lets you plugin Greasemonkey style extension scripts into the native Android browser. One of the examples that comes with Oilcan is an extension that allows you to scan barcodes directly into the input box on m.half.com.

It took about 5 minutes to turn that into something that would use a page on my own server to make me a database of scanned ISBN numbers. No native coding required, which I thought was pretty interesting. One thing to pay attention to is the supper aggro caching that the Android browser does, make sure you insert cache control headers and meta tags. Instead of ending up with a one time throw-away tool to create a list of ISBNs, I’ve ended up with an online service that I can use to toss other barcode based info up to my server.

And most importantly, I’ve found a way to use creative coding to procrastinate my way around actually getting done what I set out to accomplish. Happy 2009 everyone!

Misleading Numbers

Saturday, December 6th, 2008

I found the conclusions based on these numbers quite amusing. Anyone else spot the flaw in the logic that because folks on DeviceAnywhere spend more time testing on the Razr that means that developers are focusing their efforts more on the Razr then the iPhone? That’s not quite the conclusion I draw.

The tricky thing about “the Razr” is that it’s not one phone at all. Spend any time poking around with the phone on different carriers and you’ll find that every carrier and every minor release has different properties. Some carriers have chosen to include some options, others not, others have tweaked them slightly to make them fit into the guidelines for device behavior, etc. It’s a developer nightmare, cause you never know what to expect. And on such a constrained platform to begin with, things like available memory can be severely impacted by the carriers desire to do something as simple as swap out the images being used on the home screen.

On the other hand you have the iPhone. Write an app for the iPhone, it runs on the iPhone. Done.

Now imagine you’re an engineering manager looking at the amount of money you spend to support your application. The global economy is such that most folks are looking to cut costs, so to be responsible you’re trawling though your numbers. What’s your spreadsheet going to have when you look at your porting efforts? The number of users you have on a platform and the cost to maintain the port to that platform. What you’re going to be looking for are platforms where the dollar-per-user cost is high and/or increasing. The iPhone is linear, it costs X dollars to port to iPhone no matter how many users you have. However with the Razr you keep throwing more and more developer and QA time at issues because you need to hit every little variant of the firmware with it’s unique quirks. As your user base grows, the cost of supporting the Razr grows. And in my experience, most applications (social networking and casual games aside) probably don’t really see that many more Razr users then iPhone users despite it having vastly larger distribution numbers.

My take-away from the DeviceAnywhere numbers is “Razr incurring dangerously high engineer and QA costs, if the iPhone base keeps growing existing handsets are in danger of getting dropped.” It’s a funny thing trying to interpret numbers. Assuming that time spent testing for a device means that a business really desires representation on that device is a mistake.