JSON Bookmark Sync for Android

I’ve been playing around with a few different ideas lately, many of which include some statement such as “it would be interesting, but it really needs to interact with the default browser otherwise it would be really clunky.” So last night I hacked up a simple shim to take a feed of bookmarks in a minimal JSON format and merge them into the bookmark content provider on Android. I’ve been calling it, oddly enough, “Android Bookmark Sync”. Even though the title is technically incorrect. It’s a bookmark merge and not a sync. But I’m hoping that will change and I can add in a real sync. Source code available at github, cause that’s how I roll. So nice that Android has a content provider for this kind of stuff.

The README has info about how to output bookmarks in a form that the shim will understand. This is just initial hackery, not a real project yet. I just figured I would share it cause, well, taking some JSON and syncing it to the default browser bookmarks just seemed like the kind of thing other people might want to play with. If you turn on install from unknown sources you can download my prebuilt binary if you’re not into the whole Android development thing. Who knows, once I clean it up some I might even upload it to the market. There’s more hackery to be done first. Firefox Sync, I’m looking at you.

It’s too bad bookmarklets don’t work too well in the default Android browser otherwise there would be some much more obvious fun to be had.

Posted in Android, Browser, Open Source, Software, Technology, ThisIsMobility | 1 Comment

Development of the Mobile Web

What is it going to take for us to see some real significant progress being made in developing mobile apps on the web? Since the Day of JS event a few days ago I’ve been poking at the idea. I ran across a great article that mentions the theory of the adjacent possible that helped solidify things for me. The theory of the adjacent possible come out of biology, but I ran across it in the context of discussions about innovation. That article is definitely worth a read if you’re a startup person.

So what does that theory have to do with the mobile web? I think it helps summarize one of the primary failure modes for doing mobile web work. There’s a natural tendency to look at the desktop web when thinking about how to address mobile. However, many things that we’re doing on the desktop web just aren’t adjacent to the existing practice on the mobile side. We might make it there eventually, but we can’t make it there now. We assume we know where the mobile web is eventually going TO because we know all the awesome things that grew out of the desktop web, but it’s more important to think about what the mobile web is going THROUGH in order to up the chance of being successful.

For instance it’s pretty natural to assume that because more capable devices are ending up in the hands of a wider audience now would be the time to start working on mobile media properties. However I don’t think the advertising environment is really at the right stage of evolution on the mobile web to make that style of property the same slam dunk as it would be on the desktop web. I think what we really need are a few direct monetization services to kick things off. We need the Amazon and eBay of the mobile web. Those two shifted perceptions on the desktop side, one with direct sales and the other as a sales platform. The media models formed around the commerce that started flowing. I’m starting to think that until the mobile web has something to sell it’s premature to start trying to run media models.

Not that media properties won’t work, I just don’t think they’re what we need to significantly shift development toward the web. And of course, I’m planning to test some of this out cause I might be completely insane. Hat tip to Jay Jamison and Eric Ries for the recent discussions at Founders Labs and Bluerun that have kicked off some interesting ideas.

Posted in AdMob, Browser, Business, Community, iPhone, Software, Technology, ThisIsMobility | 2 Comments

Day of JS Event

The Day of JS event yesterday was fantastic! Thanks to Google and the MJG crew for putting it together and hosting. Great set of presentations and discussion, and I was blown away by the set of folks in the audience.

The state of the mobile web presentation that Dion Almaer and Ben Galbraith from Ajaxian did at the start was a fantastic summary for someone like me. I frequently say “I’m not a web developer” so that no one would confuse me with the folks who live and breathe JS and CSS3. However I’m also not a “native guy” either. I try to use the right tool for the job, so I’m not really in any technology camp at all.

I have a long history of working on the mobile web actually. Sitting in the sessions yesterday I was blown away by how different of an environment we have over quite a short time. In particular during the talk from Alex Russell about browser support and during the state of the mobile web talk it reminded me of a set of discussions we had in June of 2007 about applying the AJAX model to mobile. The points that Dion and Ben made summarized the set of issues way better than I ever have. There are three important components to making a development platform work:

  • Platform Distribution
  • Platform Capabilities
  • Merchandising

The first two points echo the discussion we were having in 2007, with the difference being that now mobile browsers don’t crash if you throw standard desktop JS libs at them. Because we have a nice meaty set of high capability devices in a relatively large number of hands, its finally possible to tune the platform capability vs platform distribution tradeoffs in a way that makes business sense. I think we’re just now edging over a tipping point actually, but that discussion is for another time.

I would actually call their third point “monetization” instead of merchandising, but that’s a nit really. The way they were discussing it, advertising and promotional programs are lumped into merchandising. But this is the area that I think is most in need of help currently. Most folks working on the mobile web are rolling their own when it comes to merchandising. And I don’t really know of many services to point to who are monetizing effectively outside of the app store systems. So if anyone else out there knows of good examples please pass them along. Ben and Dion did make the point that for anyone who has tried to sell software on their own either independently or through other channels, the 30% cut that Apple takes for selling your app on the app store doesn’t seem overbearing. Good point.

Another fantastic point for the day came from Yehuda Katz. He came and presented at the last Mobile 2.0 developer day, but was just settling into the new role. This time around he said something along the lines of (and I’m paraphrasing, so forgive me if I misquote) “people used to have 0 or 1 main computing device they used, now we have 2 or 3″, and addressing that shift is that “mobile strategy” should be about. It should be about delivering the right experience at the right time across different devices. Echoes of the service avatars presentation Mike K did at Mobilize. I think Yehuda really hit the nail on the head in calling out that point as the base of the discussion.

I had already been poking around with JQuery Mobile, Sencha Touch, and SproutCore. Now I’m thinking it’s time to pull together some of the hackery into a project and see if I can make one of them work at scale. Seems like all the ducks are finally starting to line up.

Posted in Browser, Community, Software, Technology, ThisIsMobility | 3 Comments

Android Marketplace – Missing Affiliate Program

There’s been a lot of coverage recently for some of the comments about improvements to the Android Marketplace that Eric Chu made at the Inside Social Apps conference. One of the big holes I see right now is the affiliate program. In the list of intended improvements I haven’t seen mention of an affiliate system yet. Apple has been running an affiliate program for iTunes since before there was an app store. The affiliate program pays a small percentage of the purchase cost to a third party who acts as the recommendation/referral agent.

I have no idea what the overall numbers look like in terms of bottom line for Apple, but I do know the effect than an affiliate program has on developers and media properties. Unwrap the download URLs from sites like 148apps and there’s an affiliate program link sitting in the middle. We made use of the affiliate links at Chomp and another startup effort I worked on before that. What an affiliate program says to developers and site owners is “we care about you helping us promote the good stuff in our store.” I think it’s really greased the wheels for Apple and encouraged quality third party services.

If Google would like to increase the download of paid applications (and when the time comes also start to ramp up in-app purchases) without having to spend all the time and effort directly on revamping the marketplace they should take a look at spinning up an affiliate program. The advertising model works, sure. But the incentives are better aligned to drive the overall health of the system when a publisher is paid on app download and not on ad impression or click.

Posted in Android, Business, Community, ThisIsMobility | 2 Comments

Fetching Gmail Messages by Label on Android

Android has a nice setup for programmatically accessing data across applications called ContentProviders. There’s a content provider that you can use to read the email that Gmail has cached, but I was having a hard time finding an example of filtering by label. There’s a content::/gmail-ls/labels provider that returns summaries by labels. As you would expect the selection parameter to ContentResolver.query() is where you ask for a label. However, even though the docs for query() say that the selection parameter should be formatted as a SQL where clause this isn’t the case for content://gmail-ls. Format the query the same as you would for the Gmail search box.

Here’s an example of fetching the most recent unread messages for an account and writing out the subjects into a text buffer:

ContentResolver cr = getContentResolver();
Cursor unread = cr.query(Uri.parse("content://gmail-ls/conversations/xxxxxx@gmail.com"), null, "label:^u", null, null);
unread.moveToFirst();
int subjectIdx = unread.getColumnIndex("subject");
 
TextView tv = (TextView) findViewById(R.id.buffer);
do {
    String subject = unread.getString(subjectIdx);
    tv.append(subject + "\n");
} while (unread.moveToNext());
Posted in Android, Community, Open Source, Technology, ThisIsMobility | 2 Comments

How I Learned to go Paperless and Love the iPad

I hate paper. It served a good purpose for a long time. But now we’re stuck with the legacy despite having better ways to do things. And nothing annoys me more than the print, sign, fax/scan cycle. Recently I’ve had to do a bunch of that. So after the first few I decided to cobble myself together something that would work as a good replacement.

Of course, the way I would like this to work is some kind of digital signature. But I’ve lived through enough failed waves of attempts to bootstrap public key cryptography systems (and have the keysigning party trust signatures to prove it!) that I know better than to try something like that. And all it would really accomplish anyway is exchanging my fools errand of looking for a printer where ever I happen to be with a half hour conversation with someone explaining how yes, a digital signature is a signature and can be accepted for legal documents.

So I decided to figure out a way to be compatible with existing process instead, figure out how to take the existing inputs and emit the existing outputs. But without all that messy physical process in between. I was hoping for something that would record a signature of mine and allow me to just cut and paste it into a document. Instead I found some decent PDF editors for the iPad that allow me to open up an existing doc, sign it with my finger on the touchscreen, and just mail it back. There are actually a few out there that are supposed to be dedicated to this function, but I’ve instead settled on the free Paperpad Lite application. It’s free. So at the end of the day, I’ve found myself a replacement for print/sign/fax that thus far has cost me zero dollars. Double w00t!

The dedicated “signature apps” are supposed to do things like allow you to open up other document formats like Office docs, but in my experimentation so far they generally don’t work. Most of the time the doc comes out garbled. So in those cases I resort to bring up the doc in Pages on my Mac and saving it as a PDF myself. When I’m really in a pinch (like I don’t have my laptop with me and I need to get the doc back right away) I normally just request a PDF version instead. Just watch out for asking for a PDF version from your lawyers, probably less expensive to just wait on those ones :-)

The transformation for me has been pretty extreme. Now as long as I have my iPad with me I can return a signed document right away. That’s more like it! Not perfect mind you, I wish I could do it with just my phone and a click, the way it would be with a proper digital signature. But I’ve eliminated hardware, waste, and a number of digital to analog conversions (which always make me sad). I could probably deal with the “other docs” to PDF problem with a set of filesystems triggers on my Mac, some commandline hackery, and Dropbox. Then even with my Air sitting on my desk at home it could still be working for me.

It’s made me think a decent amount about some replacement workflows enabled by devices. It’s not like using phones/mobile tech to replace paper and scanners is something new. Scanr has been around doing the same for a long time, and with companies like Zosh getting snapped up by document management companies I assume others are looking in the same direction. So if it’s been around for a while as an idea, why start caring about it now? I think it’s a combination of image capture capabilities being at the right level, applications being gregarious enough that I don’t have to worry about by digital documents being locked in a silo once I decide to make the transition, and now the availability of touchscreens.

For me this is a usage that finally turned the corner from interesting hack to useful set of services. I regularly use my Android phone as a scanner now using an app called CamScanner, which automatically crops and contrast corrects the image, and will save it directly off to Dropbox for me. It’s made me wonder about that camera that’s supposed to be in the next version of the iPad. The iPad has made a good paper replacement device thus far, but if it can also pull docs in from paper to ease the transition from existing process we could have a genuine enterprise transformation on our hands. Cool stuff.

Posted in Android, Business, Software, Technology, ThisIsMobility | 2 Comments

Meta-(Carrier/Operator) Services

Great writeup by the Vision Mobile folks about bringing the ‘social’ out of the operator walled gardens. I agree that there needs to be some cross-operator API that operates at a different level. Lets hope the WAC and the OneAPI effort make some headway.

I just wanted to point how much catch-up needs to be done. Carriers might think they have some real unique assets. However some of the real core ones are already showing some issues. Take messaging for example. If I have an application on iPhone the notification system built into the iOS platform far and away trumps trying to fall back on something like SMS, both from the app provider and user points of view. And if I’m a website owner who wants to get notifications out to my users? Best way to make that happen is to integrate Facebook so that I can send users notifications through that platform.

So yes, there’s some unique value to be derived from the core services. But take note that the bar has already been raised. We get notifications for free with Facebook and iOS. Receipt of message controls are granular and at the control of the user on those platforms. SMS based services lack much of what we’ve come to expect out of the platforms that we are using. To put together a cross-operator notification/messaging service that’s compelling isn’t going to mean taking the single-carrier model and extending it. Some of these core services need to be rethought before they can be scaled.

Posted in Business, Software, Technology, ThisIsMobility | 1 Comment

Dec Mobile Monday – 2010 in Review

Last night was our 2010 wrapup Mobile Monday in Silicon Valley. We had an awesome lineup for the panel, fantastic turnout, and great conversation. Having Om from GigaOm was spectacular, I got a lot of positive feedback on the dynamic he added to the conversation. He has strong and direct opinions on things like mobile advertising and location based services, and drew out some great commentary from the rest of the folks. Rich Wong and John Malloy in particular had great things to say. And Mario did a fantastic job moderating! Thanks to all for participating and making the night a success.

Of course, there was plenty of conversation about mobile advertising. One of the most interesting comments of the night was that Rich Wong said he’s no longer sour on consumer mobile apps. He was involved in AdMob and GetJar, but for a while was holding off while the mobile market shook out. And it’s just in the last 6 to 9 months that he really started to feel like the right mix was there for being able to build a business. He said that it’s not just mobile advertising (which really has progressed a long way, yet still has a long way to go). But also everything in the environment that helps folks to build their app or service. When we were growing AdMob there was no such thing as the iPhone. The technology has shifted significantly over the last few years, but the solutions haven’t shifted by the same amount. Everyone on the panel thought there’s a lot of opportunity, particularly in mobile advertising, in extending the evolution of services and pushing in some new direction. For example Accel recently invested in a new mobile advertising company called MoPub because they think there’s still plenty of open space in that area.

Om had a really strong opinion on mobile ads, saying effectively that the whole segment needs a complete reboot. The technology of mobile has changed to supposedly allow highly relevant and personal experiences, but the advertising networks really aren’t delivering on that promise. Plus, advertising itself is shifting as brands start to engage more directly with consumers. However all the networks want to just put their banner on the screen and that’s it. The mobile advertising services really need to step up and start thinking about how to take advantage of the medium they’re working in and position themselves in the shifting advertising market properly. He said that based on his experience with trying to mobilize GigaOm that the ECPM values for mobile inventory are just too low with the existing networks, but that there’s really no other option yet.

There’s was also a decent amount of talk about location based services. Everyone on the panel pretty much agreed that the introduction of location afforded some huge opportunities, but that the models there were really still shaking out. Anyone who was at the SXSW conference and was using a checkin service saw the value of what checkins can provide. But the model that goes around something like that, and turns it from a niche behavior into a mainstream service still needs to be discovered. Most people state that checkins should be a feature and not a standalone service. But Rich said instead that checkins are a great substrate. They can allow for interesting services, but the additional layers to be built around them to provide proper value to users consistently hasn’t arrived yet. I think the distinction there is subtle but significant.

In terms of predictions for the future, John Malloy said he expected HTML5 to come to the front as one of the major development avenues in mobile during 2011. Android starting to peek above the waterline and really challenge iOS as the dominant player in mobile has made developers start to think multi-platform again. Once you start having to weigh that decision, to either go native and port or develop for the web, the web starts to look a lot more appealing. There’s a lot that still needs to be done to make it viable from a business perspective, but the playing field is setup in a way that should encourage the development of solutions to the existing problems. Rich thought that 2011 was going to be the year for Android – that we were going to see Android outstrip iOS and carve out a significant lead. Related to that, Om thought 2011 would see Samsung continue to rise in power and Motorola start to fade away.

Although there was plenty of disagreement on the panel about specifics, I was surprised to see so much consensus on the major themes. That mobile advertising is just at the start and poised to grow astronomically, which should be good for folks looking to push advertising itself in new directions as well as folks building businesses based on mobile advertising. That not only is the rise of Android significant and real, but that it’s going to continue and needs to be front and center in everyones mind. And that there’s huge potential in location based services, but that the models we’ve seen so far aren’t the ones that are going to drive real mass use and big businesses. 2011 is looking like it’s going to be an even more interesting year to be in mobile than 2010 was. And 2010 was pretty spectacularly fantastic.

Posted in Business, Community, Mobile Monday, ThisIsMobility | Leave a comment

Zend Server CE 5.x and XDebug on OS X

I’ve taken to using Zend Server Community Edition for PHP work on OS X. Nice self-contained set of PHP, Apache, and Mysql. Most of the folks I work with don’t use editors or IDEs that support the Zend debugging extension though. So we use XDebug instead. I was just setting up a new environment and XDebug was segfaulting on my when I loaded it. I had tried just pecl installing it after disabling the Zend debugger and optimizer in the web interface. Just needed to force the architecture:

  • export CFLAGS=’-fno-common -arch i386′
  • export LDFLAGS=’-arch i386′
  • export CXXFLAGS=’-fno-common -arch i386′
  • pecl install xdebug

At first I tried some forms that included both architectures and some optimization flags cause I saw examples of that floating around online (ie. CFLAGS=’-O3 -fno-common -arch i386 -arch x86_64′). But that also was just faulting out on me. Checking the other modules in the Zend binaries they’re straight i386 architecture. I don’t do a lot of remote debugging, but it’s nice to have the option.

Posted in Open Source, Software, Technology | Leave a comment

Contextual Awareness

I like a lot of the concepts that the Aro Mobile folks lay out. Though their promotional video makes me very concerned about their future. Someone over there is horribly horribly out of touch. They’ve got a much more sane one up on their website, so I hope that youTube version was just a failed experiment.

A lot of the value that they’re delivering stems from contextual awareness, which is hardly a new concept. It’s just amazingly difficult to deliver. Most of the objections I’m seeing voiced in the press are related to security and privacy. Unfortunately that seems to be the bugaboo that gets thrown out there when they don’t have anything else to object to. That argument is boring and tired, I’m hoping we can move past it pretty quickly.

Me personally, I’m willing to share a whole lot of info to end up with a better mobile user experience. I just signed up for the beta. WANT! Aro Mobile folks, if you need data, I’m willing to share it. Contact lists, email, calendar, current GPS coordinates, retinal scans, bloodwork, whatever. If you can deliver on what you promise, I’m in.

Posted in ThisIsMobility | 1 Comment