<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pervasive Code &#187; mobile</title>
	<atom:link href="http://www.pervasivecode.com/blog/category/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pervasivecode.com/blog</link>
	<description>Jamie Flournoy's Software Development Blog</description>
	<lastBuildDate>Wed, 01 Feb 2012 06:11:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MacBook Pro crashes part 3 &#8211; apparently a hardware issue</title>
		<link>http://www.pervasivecode.com/blog/2008/03/03/macbook-pro-crashes-part-3-apparently-a-hardware-issue/</link>
		<comments>http://www.pervasivecode.com/blog/2008/03/03/macbook-pro-crashes-part-3-apparently-a-hardware-issue/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 00:18:37 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2008/03/03/macbook-pro-crashes-part-3-apparently-a-hardware-issue/</guid>
		<description><![CDATA[In frustration I made a backup of my laptop hard disk, and did an erase-and-install with Tiger from the install DVDs that came with the laptop. Mind you, the Apple Hardware diagnostic gives this machine a clean bill of health. With the original 512MB DIMM, with nothing plugged in but the power cord, and with [...]]]></description>
			<content:encoded><![CDATA[<p>In frustration I made a backup of my laptop hard disk, and did an erase-and-install with Tiger from the install DVDs that came with the laptop. Mind you, the Apple Hardware diagnostic gives this machine a clean bill of health. With the original 512MB DIMM, with nothing plugged in but the power cord, and with a fresh Tiger install, even following an <a href="http://docs.info.apple.com/article.html?artnum=303319">SMC reset</a>, I can crash it. So, this is apparently not Leopard&#8217;s fault.<br />
<span id="more-62"></span><br />
It does take about 45 minutes of heavy use to make it crash, though. I made an iDVD project and had that looping in preview mode, opened about a dozen partly transparent terminal windows running <code>top -s 0</code> overlapping that, played a DVD behind all that, and ran the two .qtz movies in <code>/System/Library/Screen Savers</code>.</p>
<p>I also tried a bunch of intermediate stages of downgrading and testing, including 10.5.0, 10.5.1, 10.5.2 without the Leopard Graphics Update, then with it, 10.4.6 (from the DVD), 10.4.11 with all the current stuff, with and without external display, with and without a shim propping up the bottom of the case with a desk fan blowing directly at the underside of the case. No matter what, I can make it crash, but it takes a good half hour or more before it happens.</p>
<p>Plugging in the external display seems to help (it crashes much more quickly with the external display connected). My guess is that the GPU or VRAM is overheating or is just plain faulty, and that increasing the number of pixels they have to drive is what makes them fail faster.</p>
<p>I had suspected that it might be a GPU temperature problem, or even the dreaded Thermal Paste misapplication problem, but using iStat and Bresink&#8217;s Hardware Monitor, I wasn&#8217;t able to find a correlation between GPU temperature and a GUI crash. But, now that I can prove that it isn&#8217;t due to any non-Apple hardware, and that the OS version is irrelevant, this MBP is going back to Apple for repair. Again.</p>
<p>Again? Yes. I had a somewhat similar problem before, but the video artifacts were much more hardware-y in nature. Apple blamed it on 3rd party RAM and told me if I continued to use non-Apple RAM they would charge me for the next logic board, regardless of AppleCare coverage. So I&#8217;ve been using Apple RAM, which costs about twice as much as the Patriot RAM I had bought originally.</p>
<p>However, that problem was visible to the Apple Hardware Diagnostic software. This one is not &#8211; the diagnostics find nothing wrong (even on the extended diagnostics mode), but in real world usage I get about 2-4 hours of uptime before having to restart. Even, as I said before, under a fresh Tiger reinstall with Apple RAM, and nothing but the power cord plugged in.</p>
<p>Hopefully Apple service folks will be able to reproduce this problem, or diagnose it with some kind of fancier tool that runs for long enough to provoke a failure. I apologize to anyone who has followed in my diagnostic footsteps, which now appear to have been off track.</p>
<p><b>Update: It was actually an intermittent hardware problem and Apple has replaced the logic board of this computer.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2008/03/03/macbook-pro-crashes-part-3-apparently-a-hardware-issue/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Another E-Book Flop, This Time From Amazon</title>
		<link>http://www.pervasivecode.com/blog/2007/11/21/another-e-book-flop-this-time-from-amazon/</link>
		<comments>http://www.pervasivecode.com/blog/2007/11/21/another-e-book-flop-this-time-from-amazon/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 20:50:59 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/11/21/another-e-book-flop-this-time-from-amazon/</guid>
		<description><![CDATA[It doesn&#8217;t take a lot of courage to predict that Amazon&#8217;s new Kindle electronic book reader will be a flop. This device looks like something that Sony or Apple circa 1994 would cook up. It&#8217;s getting a lot of press attention (such as the cover of the current Newsweek), but this is only because it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>It doesn&#8217;t take a lot of courage to predict that Amazon&#8217;s new Kindle electronic book reader will be a flop. This device looks like something that Sony or Apple circa 1994 would cook up. It&#8217;s getting a lot of press attention (such as the cover of the current Newsweek), but this is only because it&#8217;s Amazon promoting it, and because the tech press is obsessed with gadgets.</p>
<p>A closer examination, though, reveals that Kindle doesn&#8217;t solve the problems that caused prior e-book efforts to fail. It&#8217;s not better than a book in any way, and yet it costs more than a laptop PC and is nearly as complicated.</p>
<p><span id="more-52"></span></p>
<p>Let&#8217;s look at the key features.</p>
<p>600 x 800 pixel, 6&#8243; diagonal grayscale display: This is probably the best part of the device. Those dimensions yield a 160 DPI resolution, which is quite sharp (compare to CRTs and LCD displays which typically have a resolution in the 72-96dpi range). I suspect that the display probably has outstanding contrast and sharpness, and that anyone attempting to objectively evaluate the device will be too busy drooling over the display to think about anything else.</p>
<p>&#8220;Simple to use: no computer, no cables, no syncing.&#8221; Well, why does it come with two cables, then? Oh, by no cables, you mean that there are two cables. Power cable, sure, because it&#8217;s more convenient than a book that way.</p>
<p>But what&#8217;s the USB cable for?  Amazon CEO Jeff Bezos has a letter on the Amazon home page today that says &#8220;there is no software to install and no syncing required.&#8221; That&#8217;s true, as long as you don&#8217;t use the Audiobooks feature. If you do, well, then you need the second cable. (In that case it&#8217;s less convenient than an iPod because an iPod is smaller and cheaper, and has a color display. But an iPod won&#8217;t let you read books as clearly on a 6&#8243; screen. So the Kindle is better than an iPod at that, I guess.)</p>
<p>&#8220;A copy of every book you purchase is backed up online in Your Media Library in case you ever need to download it again.&#8221;                                                                                So, there&#8217;s no syncing, except for syncing with the server where the books are. And also there&#8217;s an SD card slot so you can keep track of what downloads are on which card already, and maybe accidentally keep multiple copies on multiple cards. So it&#8217;s not really syncing, it&#8217;s downloading. That&#8217;s completely different from what a Zune or an iPod does. (Except in the case of Audiobooks, when it&#8217;s exactly what an iPod or Zune does.)</p>
<p>You can email non-Kindle documents to your Kindle. That costs $0.10 each, and let&#8217;s hope you only need one version of that document, or else you&#8217;ll have to pay an additional $0.10 each time. Any Word documents will need to be converted automatically for you, which means that some percentage of formatting will be mangled in the process. So, there&#8217;s no syncing, which means that you have to be on top of making sure that the documents you wanted to have on your Kindle are manually re-emailed (at $0.10 per email) to your device each time they change. That&#8217;s much easier than syncing, yes?</p>
<p>Let&#8217;s make that absolutely clear: there are no cables whatsoever, other than two cables. There is no syncing, except for <i>three different kinds</i> of syncing.</p>
<p>&#8220;Navigation on both sides means both &#8220;lefties&#8221; and &#8220;righties&#8221; can easily use Kindle with one hand.&#8221; There are large next/previous page buttons on the left side, but only a next page button on the right, together with a back button. Shall we presume that the Back button and the Prev Page button do the same thing? Or do they mean that lefties and righties can go to the next page, but only lefties can go to the previous page?</p>
<p>It seems that as far as the controls, they have looked at what Apple has done with the iPod&#8217;s ultra minimalist design, and done the opposite. There&#8217;s a QWERTY keyboard, but it has &#8220;chiclet&#8221; keys, the space bar is in the wrong place, there&#8217;s a gap in the middle, a bunch of unused space around each key for no apparent reason, and an almost comical angling of the keys. There&#8217;s a weird LCD scroll bar on the right side of the main display, which is as tall as the main display, but is apparently physically separate. And there&#8217;s a big vertical scroll wheel.</p>
<p>Of course, the screen is a touchscreen and you can use your fingers or a stylus to select text. Wait. No? Oh, you can&#8217;t select text that way. It&#8217;s not a touchscreen at all. You just use the arrow keys&#8230; um. there are no arrow keys; there&#8217;s just backspace. Based on the photos on Amazon&#8217;s site, it looks like you hit Alt and then a number key in order to edit text, which you shouldn&#8217;t really be doing, because this is a book. Except, you also can use it to search, or annotate, or shop. So it&#8217;s sort of like a pen, or a black and white catalog, or a library. You might say it&#8217;s kind of like a laptop, but not really, because it&#8217;s supposed to be a super evolved book. But it has audio features, so it&#8217;s sort of an iPod, but not really, because it&#8217;s much too large to fit in your pocket.</p>
<p>Okay, so let&#8217;s assume that people in vast numbers will overlook ergonomic problems and aesthetic issues and the usual headaches of syncing, in order to get something substantially less functional than a laptop PC, which can be had for about the same price. (Let&#8217;s also assume that they don&#8217;t know that Sony makes a &#8220;Digital Book&#8221; reader that costs $100 less than Kindle.) There&#8217;s no reason to assume any of this, but let&#8217;s just pretend.</p>
<p>There&#8217;s still the property problem caused by DRM. Amazon&#8217;s Kindle page says that Fair Game by Valerie Plame Wilson has a list price of $26, but I actually clicked a couple of times to check this out. I can order it online, from Amazon.com, for $12.25 plus shipping. Then I can lend it to my wife, my friends, and then sell it to a bookstore or at a yard sale, or donate it to the library. I can get far more use out of a book at $12.25 plus shipping than I can for a $9.99 Kindle limited use license to read that same text on a $400 device.</p>
<p>(If I can be a little bit patient and wait for the paperback version, or for a lot more copies to be bought and then offered for sale used, I can get well under $9.99. I just bought a hardcover <a href="http://www.amazon.com/Statistics-Third-David-Freedman/dp/0393970833">statistics textbook</a> for $7.79 including shipping, just to avoid <a href="http://www.zedshaw.com/rants/programmer_stats.html">the wrath of Zed Shaw</a>). List price? $123.53.)</p>
<p>Of course, the reason Fair Game is available for $12.25 in the first place is because it&#8217;s possible for someone to sell me a used book. I bet I could go to one of a half dozen local used bookstores and find the same book for a similar price. Or, I could just go to my local public library, and get one of the ten copies they currently have, for free. Again I could photocopy it, or let my wife read it before I return it. They own the physical books, so they get to do this.</p>
<p>(By the way, the library will also let me download time-limited PDFs for free onto my computer or brand new sub-$400 laptop. Yeah, they&#8217;re DRM encumbered, but they&#8217;re also free, and don&#8217;t require that I buy a special e-book reader.)</p>
<p>Clearly, buying physical books has some advantages. So what are the advantages are of electronic books? It&#8217;s definitely not financial. Here&#8217;s where the fun math applies: real physical books cost money to print, ship, store, and destroy. Electronic books don&#8217;t. Some large percentage of the cost of each physical book or magazine you buy goes to print, ship, store, and destroy the copies of that same book which no one ever buys. The printing and distribution costs of books are nothing to sneeze at; ask anyone who works at a bookstore. Electronic books, then, cost far less to distribute to customers. Why should we pay the same price for a license that costs less to make and sell, and gives us less in return, than a real book? That&#8217;s not even counting the very expensive reader device, which obviously will not last as long as a book will, and thus will need to be replaced in a few years just so you can keep reading the same book.</p>
<p>And that&#8217;s the biggest problem with e-books: Amazon is promising that when you &#8220;buy&#8221; a Kindle book, you will always be able to read it. This is not implied, it&#8217;s explicit: &#8220;Amazon is storing your personal library, which can <b>always</b> be re-downloaded wirelessly.&#8221; &#8220;&#8230;in case you <b>ever</b> need to download it again.&#8221; (emphasis mine) That means that they are promising you that someone will always sell you a reader device compatible with their format, and that you will always be able to put your &#8220;bought&#8221; books on that device. So, the file format and DRM and back-end service always will need to be there, and will always need to be available to you for free, or else the deal isn&#8217;t what they are telling you it is.</p>
<p>Would they pull the rug out like that? According to one early adopter&#8217;s comment on Amazon&#8217;s own side, <a href="http://www.amazon.com/review/R28U1VJZY8E3TE/ref=cm_cr_rdp_perm">they already did that with e-books once before</a>. <a href="http://arstechnica.com/news.ars/post/20070812-google-selleth-then-taketh-away-proving-the-need-for-drm-circumvention.html">Google did the same thing with their video store</a>. When a service can only survive if a massive end to end infrastructure is maintained, which pretty much defines all internet-based DRM efforts, the risk to the buyer of license revocation with no refund is very high.</p>
<p>Now, take a look at the film, television, music, and book publishing industry&#8217;s combined downward spiral and listen to their cries of despair. These are the people who are launching DRM-heavy services tied to closed devices. Are you going to entrust your entire personal library to what might well be a service that is cancelled in a year? What will you do with your $400 single-purpose closed hardware device then?</p>
<p>In short, Kindle is junk. It&#8217;s worse than a book in every way, and has no advantages whatsoever. I predict that no one you know will buy one, and that it&#8217;ll be discontinued in less than a year.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/11/21/another-e-book-flop-this-time-from-amazon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Journalists, Developers Puzzled by Android SDK&#8217;s License</title>
		<link>http://www.pervasivecode.com/blog/2007/11/21/journalists-developers-puzzled-by-android-sdks-license/</link>
		<comments>http://www.pervasivecode.com/blog/2007/11/21/journalists-developers-puzzled-by-android-sdks-license/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 19:55:08 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/11/21/journalists-developers-puzzled-by-android-sdks-license/</guid>
		<description><![CDATA[The Android mobile phone software platform from Google has some journalists and developers confused due to its license terms. The terms are open source, but not as free as the GNU Public License. That decision has people wondering what Google&#8217;s up to. I have a theory about why they did this.

Android is a full software [...]]]></description>
			<content:encoded><![CDATA[<p>The Android mobile phone software platform from Google has some journalists and developers confused due to its license terms. The terms are open source, but not as free as the GNU Public License. That decision has people wondering what Google&#8217;s up to. I have a theory about why they did this.</p>
<p><span id="more-51"></span></p>
<p>Android is a full software stack made up of many projects that exist separately from Android. The components of this stack are available under a variety of different terms: Linux is GPL&#8217;d; WebKit is LGPL&#8217;d; SQLite is in the public domain; FreeType is available via GPL or its own license. There are probably a dozen more little libraries and components that Android builds upon, all of which have licenses that need to be considered. It&#8217;s not possible for Google to just put a bow on the whole stack and say it all uses license X.</p>
<p>Google has released the Android SDK, which is the top layer, under the Apache license. According to the <a href="http://www.opensource.org/licenses/alphabetical">OSI list of approved open source licenses</a>, this is an open source license. And yet, <a href="http://www.wired.com/techbiz/it/news/2007/11/android_opensource/">the reaction to Android from open source advocates is negative</a>. Why? Well, the concern is that some implementation of Android will add proprietary code and/or remove standard code, fragmenting the platform. Since Google can&#8217;t rewrite the licenses of the underlying components of the stack, we&#8217;re really talking about fragmentation at the top layer of the stack.</p>
<p>The Apache license allows for parties who download the source code to alter it and then keep the altered source code secret, while distributing a derivative work. Contrast this with the &#8220;viral&#8221; GNU Public License, which obligates all parties who modify the source to either keep the modified software completely to themselves, or to distribute the source if they distribute a derivative work. Ignoring the case where a licensee simply keeps the derivative work to themselves, the GPL forces a web of innovation and collective advancement, whereas the Apache license encourages a central publishing model, where innovations are kept private and used for competitive gain.</p>
<p>Thus, Android applications designed to be compatible with Google&#8217;s platform could be made incompatible with a particular device, by a handset vendor who removes core Android APIs and replaces them with their own closed source alternative. This might seem like a paranoid fantasy of a small clan of open source zealots, but it&#8217;s not. This is the same tactic that Apple has successfully used to keep Mac OS X closed. Mac OS X rests upon a large amount of open-source code (some of which is also part of what Android is built upon), while requiring developers to code to Apple&#8217;s proprietary Cocoa APIs in order to make Mac apps. You can install Linux on a Mac, but then you lose the ability to run Mac OS X apps. You can build generic Unix applications on a Mac, but they look quite different from a standard Mac app, and lose a lot of Mac-specific functionality. Apple chose to make this possible, but compare this with the iPhone, which uses much of the same software underneath, but (as of this writing) cannot run a generic Unix app because Apple doesn&#8217;t want you to do this.</p>
<p>This same sort of situation is possible with Android under this license. Company X grabs the Android sources, dumps a few key APIs (maybe the GUI, network, and process management ones) and suddenly they have their own incompatible platform that can run on the same hardware but can&#8217;t share apps with the mainstream. Dump phones on the market (subsidized by monthly fees, as usual) and fund a few key apps (MP3 player, movie player, email/SMS, web browser) and users are stuck with that vendor&#8217;s offering, just like they are now. And this is just how telcos and media companies, both of whom are desperately trying to keep hardware and software platforms closed, think. The more closed a platform is, the more secure they feel about their profits, and the more willing they are to invest in it.</p>
<p>The only charitable explanation I can think of for why Google chose this license is the Apple explanation.</p>
<p>If Google were really pandering to the existing mobile carrier crowd, they could simply have released nothing, because another closed platform to build phones with and to write apps for is pointless. There are plenty of existing <a href="http://www.scripting.com/davenet/2001/07/06/theMicroChannelArchitectur.html">trunks to be locked in</a> already. We don&#8217;t need somebody else to slap together a Linux distro for phones with a closed GUI on it. You can to go LinuxWorld Expo and probably find two dozen companies doing exactly that, and none of them is particularly successful. Google is too smart to add itself to this list of flops. It makes no strategic sense.</p>
<p>More likely, I think, is that Google intends to be Company X in my above scenario, putting themselves in the role of Apple by making an &#8220;Android Plus&#8221; premium platform that they put on the handsets they&#8217;re pushing. In this scenario, you can write your own apps to the reference platform and they&#8217;ll run on Google&#8217;s favored phone, but Google can still reserve the right to put all sorts of funky stuff on their phones without documenting it or giving developers or users any rights to it, and more importantly, without having to open source their special components so that non-Google devices could use them.</p>
<p>Sure, this is a charitable interpretation. They might just have screwed up royally, buying a company (Android) that wasn&#8217;t anything special and releasing something that no one other than journalists will pay attention to. But given that Google is betting $4.6 billion on the 700MHz spectrum auction in the U.S., I&#8217;m reluctant to simply write Android off as a &#8220;hail mary&#8221; acquisition.</p>
<p>There must be a larger strategy here, and I suspect it&#8217;s Google putting itself in the shoes of mobile carrier, handset OS maker, and service provider. Somebody else manufactures the handsets, of course, but Google owns and operates the whole experience from end to end other than that. You buy a Google device, pay a monthly Google subscription fee, your bits travel over a Google global network of wireless towers and a wired backbone, and you run apps on your Google phone that interact with Google back-end services. It&#8217;s a carbon copy of Apple&#8217;s iPhone/iTunes strategy, without AT&#038;T in the picture, and with third party apps allowed on the phone, as long as they work on the already-published Android SDK. All Google has to do is to make a decent looking device and be less customer-hostile than existing U.S. mobile providers, and they&#8217;ll do well.</p>
<p>In this light, the partnering talks with existing mobile carriers is puzzling. It&#8217;s possible that they&#8217;re pitching a strategy that removes the burden of application development from mobile carriers, allowing them to be the billing companies that they really are, and putting Google in the position of being the provider of content and software. The lukewarm responses from these carriers is predictable; for the carriers to be involved as just bandwidth providers and customer billing service providers, there would have to be a careful negotiation of revenue sharing, or else the carriers will simply continue on their current, very lucrative course.</p>
<p>If they are planning to become a carrier themselves, then nothing can actually begin to happen until January, when the 700MHz spectrum auction actually takes place. There&#8217;s a closer <a href="http://arstechnica.com/news.ars/post/20071116-its-official-google-planning-700mhz-bid.html">December 3rd</a> deadline for Google to reveal their plans. At that point we&#8217;ll know what they&#8217;re up to, assuming they&#8217;re actually able to buy the spectrum that would make it possible. Alternatively, this spectrum purchase could be a bargaining chip on Google&#8217;s part, which they do not intend to directly utilize themselves. Google would provide the spectrum, the handsets, the OS, the apps, and the services, and the carrier partners would provide the towers, the maintenance staff, sales, and billing.</p>
<p>Given all this, it makes little sense for Google to GPL the Android platform. They need to own it so that they can assure a prospective carrier partner that they will be the ones whose phones are being used by customers, in order to share revenues. If they were to open up the handset market entirely, the carriers would block any new entrants and Android based phones would be doomed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/11/21/journalists-developers-puzzled-by-android-sdks-license/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Gives J2ME the Finger, but Still Needs a Carrier Partner</title>
		<link>http://www.pervasivecode.com/blog/2007/11/12/google-gives-j2me-the-finger-but-still-needs-a-carrier-partner/</link>
		<comments>http://www.pervasivecode.com/blog/2007/11/12/google-gives-j2me-the-finger-but-still-needs-a-carrier-partner/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 00:53:52 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/11/12/google-gives-j2me-the-finger-but-still-needs-a-carrier-partner/</guid>
		<description><![CDATA[It turns out that as The New York Times says, Google is not building a phone. They&#8217;ve built (bought, really) a phone platform called Android. It&#8217;s Java on Linux, and it&#8217;s open source, but notably it is not J2ME based. Reportedly it will run J2ME apps, but the SDK makes the Android API look more [...]]]></description>
			<content:encoded><![CDATA[<p>It turns out that <a href="http://www.nytimes.com/2007/11/06/technology/06google.html?_r=1&#038;oref=slogin">as The New York Times says</a>, Google is not building a phone. They&#8217;ve built (bought, really) <a href="http://code.google.com/android/what-is-android.html">a phone platform called Android</a>. It&#8217;s Java on Linux, and it&#8217;s open source, but notably it is <i>not J2ME based</i>. Reportedly it will run J2ME apps, but the SDK makes the Android API look more like the BlackBerry&#8217;s Java API than J2ME. It&#8217;s a full featured API that isn&#8217;t a <a href="/blog/2007/08/19/j2me-write-once-be-disappointed-everywhere/">least common denominator of all possible mobile devices</a>.<br />
<span id="more-49"></span><br />
By building on top of and bundling Linux, instead of an assortment of phone OS&#8217;s with varying feature sets, developers can be assured that the low-level feature set across handsets will be constant, by which I mean that threads will work and <a href="http://code.google.com/android/intro/lifecycle.html">multitasking will always be available</a>.  Given that some J2ME implementations and some non-J2ME mobile Java runtimes lack threads, and many phones lack multitasking, this will make writing sophisticated apps for Android far easier.</p>
<p>Android is a huge win for developers. The SDK is already available for Windows, Mac-on-Intel, and Linux-on-i386, and it uses technologies that are already mainstream. Based on my <a href="/blog/2007/11/12/evaluating-future-web-application-technologies/">previous post</a> I am curious about whether Rhino, Jython, and JRuby will work on the Dalvik VM, but I have no specific reason to believe they won&#8217;t. This is exactly the sort of thing I was talking about when I said that layering on top of the JVM or .NET DLR would ease portability; the Dalvik JVM means that you can likely write a Hello World in any language that can compile down to Java bytecode and run it immediately.</p>
<p>OK, so it&#8217;s great for developers. So what? Developers don&#8217;t control the mobile market; carriers do. Handset makers would probably love to use Linux instead of paying a per-handset license for a closed phone OS; PalmSource/ACCESS and Palm, Inc. have already said they will move in that direction (though Palm, Inc is <a href="http://en.wikipedia.org/wiki/Palm_OS#Modernization">creating some confusion</a> about whose Linux-based Garnet-compatible runtime will end up on future devices bearing the Palm OS name). But why would carriers want this?</p>
<p>It&#8217;s possible that carriers would like to see their value-added apps run on many different handsets without the cost of developing them separately for each handset they sell. Handset makers and mobile OS vendors clearly are making some money from consulting to carriers on these projects (somebody has to tell Sprint how to write the PictureMail app), so actually in this area handset makers would stand to lose money.</p>
<p>What carriers probably would like less about Android is that it would allow Google to bypass the carriers&#8217; value added services and build their own ecosystem of mobile apps for Android-based handsets, which is exactly the point of Android. Who gets the value added dollars from customers? That&#8217;s what this is all about. Google is battling ISPs regarding Net Neutrality, and it comes back to the same thing. If a customer is going to pay for a service delivered from a server across a network onto an endpoint, there are at least four parties that want to get paid, and who view the division of revenue as a zero-sum game.</p>
<p>The <b>server folks</b> (Google, Yahoo, Microsoft, Apple, etc.) want to charge you for the subscription to their applications or for individual chunks of content. That charge may take the form of just showing you ads. Then they want to pay a flat rate for the bandwidth across the network to get to you, and will minimize that cost using the massive content delivery networks which they already have in place.</p>
<p>The <b>network folks</b> want to put a toll booth on that network that charges either the end-user or server folks (or both) for transferring paid content, or one that penalizes the end-user (bandwidth shaping) for buying a cheap connectivity plan and then trying to use it for transferring large media files from the server guys. The network folks also still think they can force the Internet to look like Cable TV, by putting up barriers to keep their users from using anybody&#8217;s services but their own, so their ISP customers also become their content customers.</p>
<p>The <b>handset OS folks</b> want to be paid to write those apps for the server folks and the network folks who want to also be server folks. They want to encourage developers (ISVs, or server or network big guys) to focus on their platform, thereby making it more attractive to users, thereby making it more valuable so they can charge a larger amount from each phone sold. These folks are directly in competition with Android, whether Google intends to attack them or not.</p>
<p>The <b>handset manufacturers</b> want to minimize the price of their phone (a free OS that supports tons of hardware components that they might use is a good start) and maximize the number of apps that will run on their phone. They should love this, although the most successful high-end handset makers who also use closed OS&#8217;s (basically every major handset maker) will not like it as much as the underdogs who sell tons of cheap phones. LG and Samsung say &#8220;hooray&#8221; while Motorola, RIM, Palm, Sony, and Nokia say &#8220;boo-hoo.&#8221; Their investment in special fancy phones and fancy apps for their chosen OS is undermined by the prospect of commodified hardware with carrier- or user-installable third party apps.</p>
<p>Users should be happy as well. Developers, as I mentioned, should love this platform, so users should benefit both from more apps and cheaper handsets, and probably also from more service offerings that will work with their handset.</p>
<p>The problem with all this is that as I mentioned in <a href="/blog/2007/11/12/technical-architecture-is-a-form-of-investing/">Technical Architecture is a Form of Investing</a>, just because developers like something doesn&#8217;t mean it will win. If Google&#8217;s aim is to open up and commodify the handset market, they will have to fight the folks that are trying to keep the handset market closed and fragmented. That group includes all of the major U.S. mobile vendors, and the companies who make handset OS&#8217;s. The latter group is weak and easily conquered, with the exception of Microsoft; in this space, though, Microsoft is not strong enough to fight Linux and Java. The former group is extremely powerful and will not simply sell handsets that eliminate their chief source of revenue (proprietary value-added services that show up on your mobile phone bill). Nevertheless, these value-added offerings are generally awful and absurdly overpriced, so there is quite a lot of opportunity if someone can break through the carriers&#8217; stranglehold.</p>
<p>The strategy that Google must follow is to convince an underdog mobile carrier to market an Android-based handset to consumers. Google has little strategic advantage to gain from replacing handset OS makers; they are a service and as such need to prevent the network guys from erecting that toll booth in front of Google&#8217;s services. To do that they will need to bypass the network guys, and a phone OS isn&#8217;t going to do that. Even a handset offering won&#8217;t be sufficient; look at Apple&#8217;s iPhone bricking debacle for evidence of that. The mobile carriers control the handset makers in the U.S., and Apple has had to learn that the hard way, screwing over their customers who dared to choose another carrier than Apple&#8217;s partner. You can bet that Apple wasn&#8217;t the driving force behind that decision.</p>
<p>So Google will have to go all the way to partnering with or acquiring a carrier who is currently an underdog and who needs this offering in order to win customers away from the big guys. Alternatively (and less likely, due to the red tape involved) Google will have to become or spin off that underdog carrier themselves as a new carrier.</p>
<p>So, look for the second shoe to drop: not who is going to build a &#8220;GooPhone&#8221;, but who is going to offer you a mobile plan that lets you use one without placing severe restrictions on what you can run on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/11/12/google-gives-j2me-the-finger-but-still-needs-a-carrier-partner/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>J2ME: Write Once, Be Disappointed Everywhere</title>
		<link>http://www.pervasivecode.com/blog/2007/08/19/j2me-write-once-be-disappointed-everywhere/</link>
		<comments>http://www.pervasivecode.com/blog/2007/08/19/j2me-write-once-be-disappointed-everywhere/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 05:37:59 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/08/19/j2me-write-once-be-disappointed-everywhere/</guid>
		<description><![CDATA[We developers and other nerdy folk are used to using strange and klunky applications that do something special, and we&#8217;re used to that trade-off.
Eclipse is an IDE so it&#8217;s hard to imagine it not being baroque and difficult to use, requiring weeks of effort to become productive. JBidWatcher has saved me a lot of money [...]]]></description>
			<content:encoded><![CDATA[<p>We developers and other nerdy folk are used to using strange and klunky applications that do something special, and we&#8217;re used to that trade-off.</p>
<p><a href="http://www.eclipse.org/">Eclipse</a> is an IDE so it&#8217;s hard to imagine it <i>not</i> being baroque and difficult to use, requiring weeks of effort to become productive. <a href="http://www.jbidwatcher.com/">JBidWatcher</a> has saved me a lot of money on eBay so I could probably put a dollar value on how much it&#8217;s worth to endure its bizarre UI. <a href="http://azureus.sourceforge.net/">Azureus</a> is fairly fugly also but it does a very good job and has a deep, sophisticated UI that&#8217;s fairly easy to understand, so despite the eyesore, it&#8217;s at least fairly clear. The common thread among all of these is that they are all written in Java, and that they are so valuable that it&#8217;s worthwhile to overlook the ugly UIs.</p>
<p>Now imagine those sorts of trade-offs, but on already difficult to use mobile devices, and aimed at consumers. Are you making a strategically wise choice by sacrificing usability and control over the user interface, and probably access to platform-specific features such as dialing the phone, in order to save money on development? Adam Breindel talks about this in <a href="http://skipmeamadeus.blogspot.com/2007/08/when-building-smartphone-app-resist.html">When Building a Smartphone App, Resist the Siren Song of J2ME</a>.<br />
<span id="more-42"></span></p>
<p>Adam and I worked on a J2ME application and I totally agree with him about the disillusionment of trying to write a single app that would work across phones. Issues include:</p>
<ul>
<li>Complex and difficult application installation procedures for end-users: How do you install the JVM on the phone? How do you get the plain J2ME app packaged up so that the phone will accept it? Does the app require manual user configuration before use? Is there a different launching process from other apps?</li>
<li>Lack of control of the user interface: hardware details such as how many buttons you have, whether there&#8217;s a stylus, etc. differ from phone to phone, and the API to let you code once and let J2ME handle the layout for each device leaves your code very disconnected from what&#8217;s actually happening on the screen.</li>
<li>Not being able to use recent J2ME APIs because even the latest phones only support older, more minimal J2ME APIs</li>
<li>Not being able to do things on a phone that would seem obvious, like dialing the phone, opening a hyperlink in the phone&#8217;s browser, sending an SMS, or making a network connection. Either these are entirely impossible or require phone-specific or JVM-specific tools and procedures to sign your application, or having the runtime nag the user to request permission to do something that they just asked the app to do for them.</li>
</ul>
<p>For all the noise Sun is making about broad J2ME penetration, the developer experience is quite disappointing, and as a result, the user experience is also quite disappointing. You can look up J2ME features and APIs and get excited, but when you actually deploy your app to a handset, it won&#8217;t load, or runs terribly slowly, or looks awful, or simply doesn&#8217;t do the things that the API says will happen when you call it a certain way. Suddenly the strict J2SE and J2EE logo certification programs make sense, because the J2ME approach of making so much functionality specified but optional leaves developers high and dry. The phone supports J2ME version xyz, but write an app coded to that API that works on the emulator and deploy it to a handset and lo and behold, all those optional APIs turn out to be missing even though the handset is capable of that functionality, and <i>some mandatory API functions are not working</i>. <a href="http://en.wikipedia.org/wiki/Here_be_dragons">Here be dragons</a>.</p>
<p>Case in point: can&#8217;t dial the phone on a Treo 650 (at least, not as of a year ago). The J2ME API tells you how to do it. The PalmOS JVM (made by IBM) lets you make the API call, and returns a successful response. Nothing happens. IBM says they&#8217;re aware of this issue. The end. The docs say you can, the code you write says you did, the phone just doesn&#8217;t do it.</p>
<p>Case in point: Every time you start an application and it accesses the network for the first time on a Treo 650, the user is nagged for permission to access the network. Quit the app and start again, nagged again. IBM has a tool that you can use to sign the app, but you have to use their VisualAge Micro Edition IDE which costs hundreds of dollars to do that. Try and find and download the trial version. A year ago, it was not possible. So, making that persistent nag go away probably costs several hundred dollars. (I never verified that it actually works, just that IBM says the way to sign the app so that it&#8217;s trusted is to do that, and that there was no available free way to get that tool.)</p>
<p>These are minor issues, but they certainly interfere with the quick usage pattern of a mobile app, and make it annoying to use your app. Imagine what that would be like if you had a competitor with a native application for that phone, whose application probably cost them more, but their app is better and the user likes it a lot more.</p>
<p>The important distinction here is not cost, it&#8217;s ROI. It costs a lot to develop a similar application for each smartphone platform, using that platform&#8217;s native tools. It would seem to cost a lot less to develop a J2ME app. But that&#8217;s only if you assume that it&#8217;s OK to abandon features and settle for a horrid user experience in the course of development.</p>
<p>It&#8217;s likely that your goal as a development team is to develop an app that has a predefined feature set that you know the device can support, and a predefined UI design that your mobile-savvy UI people are sure will go over well with users accustomed to that particular kind of smartphone. In that case you will almost certainly fail to accomplish that goal using J2ME. You have to scale back your goal so that you&#8217;re satisfied that you got something kinda like what you wanted working on a bunch of phones, and determined users will probably be able to figure out how to install it and make it work.</p>
<p>I call that phenomenon &#8220;write once, be disappointed everywhere.&#8221;</p>
<p>Let&#8217;s continue talking about cost, though. The native apps may require (or suggest) different programming language skills for different devices. It might seem wise to just write everything in C, but I think that&#8217;s a false economy as well. The phone APIs will differ so much that you will really need a native developer for each platform, not a team of generic C developers who will figure out the individual phone stuff and be freely floating resources that you can assign to whatever app version needs their attention. Smartphones may run Linux, may run Windows Mobile, may run PalmOS, may run Symbian&#8230; these are different operating systems with very different ideas of how applications run and coexist. The platform specific knowledge (APIs, appropriate UI feel, device capabilities) is probably an order of magnitude harder to learn and maintain than the ability to get an application working in a given programming language.</p>
<p>How much of a great C programmer&#8217;s skill is really the C language, and how much of it is proficiency with the available libraries on the platform he or she is accustomed to? I think close to 90% of their professional skill set is platform and library familiarity, and 10% syntax and low-level understanding of how the language actually works.</p>
<p>In light of this (just using C doesn&#8217;t mean developers or code are portable across smartphones), consider that there are high level languages available for some smartphones. What if that 90% platform familiarity means they can use a language and/or development environment that makes them 5 or 10 times as productive, after spending just a few days or a couple of weeks learning the language syntax?</p>
<p>After our very disappointing J2ME-on-PalmOS port experience, Adam found <a href="http://www.handheld-basic.com/">Handheld Basic</a> which initially appalled me (oh no, BASIC!) but turned out to be a great choice. It&#8217;s a flavor of BASIC, so learning the language didn&#8217;t take long, and the support happens to be quite good (<i>lots</i> of code samples) so picking up the library portion of that 90% didn&#8217;t take long at all. I imagine that C# on Windows Mobile is similar. As more and more phone start to use Linux as their OS (which will be a particularly huge improvement for PalmOS based phones), you&#8217;ll be able to use Python, Ruby, Mono, J2SE (a whole different animal from J2ME), TCL, or pretty much any other high level language available for Linux. At LinuxWorld 2006 I saw a development device running unmodified GNOME desktop apps running on a PalmOS device alongside PalmOS apps. There are more options appearing all the time, and with the exception of Handheld Basic, most of them are ports of familiar, mature, well understood desktop languages, with class libraries relevant to mobile devices.</p>
<p>So, I recommend that you work in whatever high level language lets you do all the platform specific stuff you want, and if that means a different language per phone, that&#8217;s actually going to be the least expensive way to get to the apps you actually wanted to build. A big chunk of the scary cost of developing native apps goes away, because native doesn&#8217;t necessarily mean abandoning Java for C. (In fact I found Handheld Basic to be a more productive environment for me after a couple of weeks than J2ME was, despite my ~8 years of full time Java experience before starting that project.)</p>
<p>That pretty much means no reuse for you. Sorry, but that&#8217;s the deal right now.</p>
<p>If that unique-app-per-platform cost is too scary, consider a few ways to save money:</p>
<ul>
<li>For networked apps (aren&#8217;t they all?) ask yourself if there&#8217;s some logic that could just as easily be done on the server as on the client. Is there some complicated parsing code on the client that could be simplified by changing the response format from the server to something that&#8217;s easier to parse?</li>
<li>Can you remove or alter certain features from a subset of platforms you intend to support, so that your premium supported platforms get your ideal app, whereas a few less popular phones still get a nice app, but perhaps one that doesn&#8217;t have every feature available on your premium app. You might be reading this and thinking &#8220;but that&#8217;s what you said J2ME would force me to do! Why is this any better?&#8221; The distinction is that you are in control of the decision of what to leave out to save money, whereas with J2ME it&#8217;s the platform vendor who makes that decision for everyone using their platform. If you&#8217;re writing an address book, not being able to dial the phone is lethal; not writing the code to let the user attach a photo to the entries is not.</li>
<li>Can you move some user-facing functionality to the server to make the client simpler? Maybe there are some rarely-used features that could be done via a desktop or mobile web browser, so you can focus on putting the ten-times-a-day features on the handset, and making those features fast and convenient. You probably already made that trade-off in general, but perhaps for some kinds of handset, you&#8217;ll move the dividing line a little further, so that for users of particularly rare phones, some moderately frequent features can&#8217;t be done on the phone. This could also be a good approach for new handset types: design a &#8220;lite&#8221; app and a &#8220;full&#8221; app version, build the &#8220;lite&#8221; app first on each platform, and let user demand tell you whether the full app is worth it. Your developers can tell you much more accurately how much the incremental functionality would cost, since they already have done the lite version. Maybe you&#8217;d provide a VoiceXML interface, or mobile web browser interface, for that feature so that the user can still do whatever the feature requires while they&#8217;re far from a desktop PC.</li>
</ul>
<p>A final consideration: labor. Maybe you have some Java developers, or C developers, and don&#8217;t have developers good at Handheld Basic or C#, so you&#8217;re not inclined to fire them all and hire new developers to do native apps, you&#8217;re thinking maybe C on every handset, or J2ME, is still the right choice. I still say that you should probably use native apps in native high level languages on every smartphone platform. If you&#8217;re committed to a strategy of good apps on a bunch of different phones, I think I&#8217;ve made clear that native apps are the only way to currently get there; J2ME simply doesn&#8217;t let you make good apps. So what&#8217;s left is C code written by C developers vs. high level code written by C developers who have to retrain.</p>
<p>As I said above, I don&#8217;t see much chance that your developers or your code will be portable across different smartphones if you use C. Maybe you&#8217;ll get 5-10% savings that way (some code ported across phones, or some developer hours shuffled between platform teams). But you&#8217;d get a 5-10x cost saving from using something very modern and high-level instead of C, and the overhead of training for the language would be very very small as compared to the large and unavoidable overhead of having to learn what the handsets can do and how the APIs for the handset&#8217;s OS work.</p>
<p>I suppose that means that if you have a bunch of C developers who lack smartphone skills, you&#8217;re in a pickle, but that situation seems kind of unlikely to me (a mobile app company hires a bunch of Unix and Win32 C developers with no mobile phone skills?). More likely is that you&#8217;d find a mobile developer who is proficient with one or more handset OSs and the best tools for each one, and they may be of the opinion that C is the best choice since they can reuse skills and some code across platforms. I would say that in that case you need to convince them to (or more likely encourage them to do what they were already considering, which is to) go ahead and find a highly productive high level programming language/environment for each smartphone platform.</p>
<p>A final possibility if you have a ton of platforms to target and a pile of killer C programmers is to try and port something like Python across most of your target platforms, or to make a very high-level API or domain-specific language that runs inside your own custom C portability layer. You might be able to find an open source option that you can invest some developer hours in, so that the actual application-specific code that you write on each platform is minimized and portable. But I suspect that this would still be expensive and would result in some J2ME-like UI abstractions that ended up being very unsatisfying in the end.</p>
<p>Best of luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/08/19/j2me-write-once-be-disappointed-everywhere/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

