<?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; strategy</title>
	<atom:link href="http://www.pervasivecode.com/blog/category/strategy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pervasivecode.com/blog</link>
	<description>Jamie Flournoy's Software Development Blog</description>
	<lastBuildDate>Mon, 26 Jul 2010 05:29:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Software Project Estimation: Inaccurate and Unavoidable</title>
		<link>http://www.pervasivecode.com/blog/2008/08/06/software-project-estimation-inaccurate-and-unavoidable/</link>
		<comments>http://www.pervasivecode.com/blog/2008/08/06/software-project-estimation-inaccurate-and-unavoidable/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 04:04:04 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[labor]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[strategy]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2008/08/06/software-project-estimation-inaccurate-and-unavoidable/</guid>
		<description><![CDATA[This is a follow up to On Our Project, We&#8217;re Always 90% Done.
The coder is the one on the hook for long nights, weekends, and stress-related health problems if the estimates suck. It&#8217;s in your interest to exert as much control over estimation and scheduling as you can. If you&#8217;re not making the estimate, someone [...]]]></description>
			<content:encoded><![CDATA[<p>This is a follow up to <a href="http://www.codinghorror.com/blog/archives/001161.html">On Our Project, We&#8217;re Always 90% Done</a>.</p>
<p>The coder is the one on the hook for long nights, weekends, and stress-related health problems if the estimates suck. It&#8217;s in your interest to exert as much control over estimation and scheduling as you can. If you&#8217;re not making the estimate, someone is making it for you.</p>
<p><span id="more-76"></span></p>
<p>If you think about it, <strong>you&#8217;re opting out of an ongoing salary negotiation process</strong>. You&#8217;re going to work more for the same amount of money, and worse yet, you&#8217;re going to have to squeeze that work into the same amount of time, under stressful conditions. Why would you do that?</p>
<p><a href="http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351">McConnell&#8217;s &#8220;Software Estimation&#8221; book</a> addresses this problem of wildly inaccurate early estimates quite well. I highly recommend it. In a nutshell, estimates need to carry error bars, so early estimates would be given but with a disclaimer of +/- 100% (or more!), and later estimates get closer to being correct.</p>
<p>You will have to manage expectations, though. Human nature leads to the shortest end of the date range becoming the remembered end date, the guess being remembered as a promise, and the latest feature set being remembered as if it were the original feature set.</p>
<p>This is a big reason to hire a good project manager: they&#8217;re there to facilitate the change control process, or planning game, or whatever you call it in your organization when the paying folks want more stuff, and the PM reminds them that need to pay more and wait longer in order to get more out of the dev team. A good project manager can make a huge difference to the stress level and likelihood of success of a project.</p>
<p>It&#8217;s psychologically icky for developers to have to participate in the estimation and scheduling process &#8212; &#8220;eww, it&#8217;s a non deterministic domain with lots of ill-defined inputs!&#8221; &#8212; and I&#8217;ve seen some managers play head games like &#8220;Oh, you need more time? I thought you were really good at programming&#8230; I guess not&#8230;&#8221; to try and manipulate developers into working nights and weekends out of a sense of guilt or wounded pride. But you need to suck it up and keep providing status updates and reminding people how the process works, because you-the-programmer are the expert on the nature of programming.</p>
<p>Yes, it&#8217;s more like Lewis and Clark or the Apollo project than like building a house, and there are just going to be a lot of surprises, but you can still provide a framework and exert a tremendous amount of control over how the team will operate. Things like whether you plan to build a technology proof-of-concept to make sure your architecture doesn&#8217;t suck, or whether you intend to spend lots of time writing automated tests and doing daily code reviews in order to control that horrible &#8220;bug fixing&#8221; phase toward the end are in your hands if you participate in the estimation process. You&#8217;re being offered an opportunity to make sure that all those important tasks like performance testing and cross-browser testing and writing an installation guide and an operations manual for the sysadmin get done. <strong>It doesn&#8217;t matter if the estimates for those tasks are completely wrong at first &#8211; what matters is that they&#8217;re on the list.</strong></p>
<p>And really, the largest battle you&#8217;ll probably have to fight is the one over scope creep: we can&#8217;t launch until it has all the original features plus all these additional changes and new features perfectly working, but we need to launch tomorrow. That&#8217;s also human nature, and you need to train people to release early and often. Agile methodologies can help here, if you can get your software working and stable from a very early point in the project, and keep it that way. Then you probably have a launchable product very early, and you can just push highly-desired features into post-1.0 releases.</p>
<p>In any case, a list with a bunch of crappy numbers and low confidence factors is a lot better than no list, or a one-item list with a crappy number and an implied 100% confidence factor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2008/08/06/software-project-estimation-inaccurate-and-unavoidable/feed/</wfw:commentRss>
		<slash:comments>0</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>Evaluating Future Web Application Technologies</title>
		<link>http://www.pervasivecode.com/blog/2007/11/12/evaluating-future-web-application-technologies/</link>
		<comments>http://www.pervasivecode.com/blog/2007/11/12/evaluating-future-web-application-technologies/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 23:22:30 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/11/12/evaluating-future-web-application-technologies/</guid>
		<description><![CDATA[Technical Architecture is a Form of Investing. I&#8217;m reminded of this sort of thinking because of recent news from RubyConf 2007.

First, IronRuby joins Ruby.NET in providing a Ruby runtime on .NET. They&#8217;re at different stages of completeness, and building on different .NET runtimes (DLR vs. the regular CLR), but the important point is that Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Technical Architecture is a Form of Investing. I&#8217;m reminded of this sort of thinking because of recent news from <a href="http://www.rubyconf.org/">RubyConf</a> 2007.<br />
<span id="more-48"></span><br />
First, <a href="http://www.ironruby.net/">IronRuby</a> joins <a href="http://plas.fit.qut.edu.au/Ruby.NET/">Ruby.NET</a> in providing a Ruby runtime on .NET. They&#8217;re at different stages of completeness, and building on different .NET runtimes (<a href="http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx">DLR</a> vs. the regular CLR), but the important point is that Microsoft is investing in dynamic languages. Is it ready for production today? Probably not. But keep an eye on Ruby, Python, and JavaScript if you&#8217;re a .NET developer.</p>
<p>Second, <a href="http://docs.codehaus.org/display/JRUBY/2007/11/02/JRuby+1.1b1+Released">JRuby 1.1b1</a> has been released and as expected is considerably faster (see <a href="http://headius.blogspot.com/2007/11/top-five-questions-i-get-asked.html">item #5 in this link</a>) than the standard &#8220;MRI&#8221; runtime. JRuby joins <a href="http://www.jython.org/">Jython</a> and <a href="http://www.mozilla.org/rhino/">Rhino</a> in providing a JVM-based runtime for a dynamic language, with features designed to help developers mix and match the dynamic language code with Java code.</p>
<p>See the trend here? Python, Ruby, and JavaScript are emerging as the dynamic languages of the future for .NET and Java developers.</p>
<p>The hard work done by Sun and Microsoft to make their VMs work well is being leveraged by the next wave of languages. Threads, high performance I/O, memory management, and portability are all features that are quite expensive to get right, and the .NET and Java platforms have pretty much achieved that at this point. (Piggybacking newer, higher-level languages on these mature runtimes means that you get a mature new language runtime faster than if each language&#8217;s runtime were built from scratch and painstakingly debugged in isolation from the others.)</p>
<p>There are still some hurdles (performance, type safety fears, lack of mass market acceptance, ECMAScript 4 standardization and adoption, etc.), but in 2 or 3 years, things are going to change dramatically in the web application development world. The seeds of this change are already sown, and it&#8217;s just a matter of time. Threads, SQL, OOP, and garbage collection are all features of web application architectures that were initially controversial, but have now met with general acceptance. Dynamic languages are clearly the next step.</p>
<p>Obviously, Java and C# are far from dead, and in 10 years people will still be coding in Java and C#, because as with other languages like C and assembly, the newest and highest-level language isn&#8217;t automatically right for every project. But if you&#8217;re building web applications, most of what your code does falls into the categories of string manipulation, collection operations, or file and socket I/O. Image processing, crypto, full text search, and other CPU-heavy, byte-twiddling features may be part of your application, but you&#8217;re not writing the image scaler, RC4 cipher, or inverted index yourself; those are done in a library, probably written in C, and you&#8217;re just calling it. So your needs are likely to be similar to the sweet spot of dynamic languages: maximum expressivity and the fancy features to let you write clever code, making you productive and making the code as clean and elegant as possible. In other words, they put developer productivity first (lower labor cost and shorter development schedules) at the expense of runtime performance. Since hardware gets cheaper over time but <a href="http://www.laputan.org/mud/mud.html#Forces">code gets uglier over time</a>, this is probably the right choice to make for most web application projects.</p>
<p>Another interesting benefit of layering instead of starting over is that the integration between dynamic languages and Java or CLR languages is much nicer than managed vs. unmanaged code in .NET or, even worse, JNI in Java. That is, it won&#8217;t be a bloody mess to mix and match code, from a technical feasibility standpoint. This matters, because <a href="http://chadfowler.com/2006/12/27/the-big-rewrite">The Big Rewrite</a> is among the <a href="http://www.joelonsoftware.com/articles/fog0000000069.html">Things You Should Never Do</a>. But little bitty rewrites are fine, especially if you have a thorough test suite to help you avoid breaking things. (By the way, dynamic languages are <i>great</i> for writing automated tests.)</p>
<p>Which of these three (JavaScript, Python, or Ruby) is going to be dominant 5 years from now? I don&#8217;t think any of them will be. The dynamic language community is fragmented, and the various vendors and big sponsors of these three languages are fairly entrenched already. Microsoft is investing in all three; Google has standardized on Python and JavaScript to the exclusion of Ruby; Sun has hired the JRuby team; Mozilla is heavily invested in JavaScript; Adobe supports JavaScript in AIR but not Ruby or Python, etc. </p>
<p>In fact, if you encapsulated the glue code sufficiently well, you could mix and match JavaScript, Python, and Ruby in your application, and port your hideous hydra between the JVM and .NET. You would be wasting a lot of effort since the three languages are largely similar, but you could do it. Alternatively, you could create a portability layer between the DLR and the JVM a la WxWindows, and write-once-debug-everywhere in a more productive language than Java.</p>
<p>These are all repugnant ideas, but only because as I write this and as you read this, we probably realize that to attempt this today would be a huge task. But what about in 2010? Probably not so gross. What about an application that could be executed on Silverlight, AIR, Firefox, SWT, and Mono, unmodified? How about a mobile app that runs on smartphones regardless of the runtime (.NET vs. J2SE)? Not gross at all, and not unthinkable if your app is written in JavaScript using some kind of portability layer that doesn&#8217;t exist yet.</p>
<p>In the longer term, JavaScript (a.k.a. ECMAScript 4) is likely to become extremely popular. As far as I know it&#8217;s not quite a perfect fit for Steve Yegge&#8217;s <a href="http://steve-yegge.blogspot.com/2007/02/next-big-language.html">The Next Big Language</a>, but it&#8217;s the closest thing there is, and it has two critical advantages over Ruby and Python that will make it successful: C-family syntax (which makes development tools cheaper to build) and effectively unanimous buy-in from vendors and developers.</p>
<p>So, what about the other dynamic languages that people are using in large numbers today? What&#8217;s going to happen to ActionScript, CFScript, PHP, and VB?</p>
<p>ActionScript and CFScript are pretty close to JavaScript by design; I&#8217;ve read that ActionScript 3 is actually compliant with the ECMAScript 4 draft specfication. It&#8217;s pretty clear that Adobe is betting on JavaScript. In the near future (2 or 3 years) I predict that Adobe will rev its products and support ECMAScript 4 across the board.</p>
<p>PHP and VB.NET/VBScript will hang around for a long time because they&#8217;re approachable and already very popular, but they&#8217;ve already peaked, and will steadily decline as developers switch to C# (on the .NET side) and Rails (on the Linux side), and then JavaScript as soon as a serious web app framework and an ISP-friendly runtime exist. Microsoft will keep investing in VB to keep customers happy; Yahoo will keep investing in PHP because it is so heavily invested in PHP already; new developers will find PHP to be an easy starting point for light duty web development, with tons of documentation and free applications that they can download and hack. But PHP will not inherit the kingdom from C# or Java, and the languages which do achieve mainstream success after C# and Java will do everything that PHP does language-wise, and the market momentum around those languages will make them better than PHP at what PHP does. Developers will ask themselves why they would write the client side and server side in two different languages, especially when the server-side language is more expressive and has better portability and libraries. That&#8217;s not true yet, but it will be in a couple of years. In 5 years or so PHP and VBScript will go the way of Perl CGIs: still used, but by a community a tenth of the size it is today.</p>
<p>What about the new Java-based dynamic language, Groovy? Groovy is interesting, but it&#8217;s too late. The Java mainstream of vendors and developers only recently managed to convince the world of &#8220;serious&#8221; C++ developers that automatic garbage collection and JIT compiled bytecodes can actually work in a high traffic context. The next battle, to promote the dynamic language features that Java lacks but which Groovy brings, will take years to fight. Once a developer makes a decision to not use standard Java, Groovy is on a more or less level playing field with the JVM-hosted versions of Python, JavaScript, and Ruby, but each of those languages has far greater adoption than Groovy, and each of them has greater opportunity for leverage on other runtimes than Groovy. For a Java developer, once the door is opened to other languages, the only advantage Groovy has is that its syntax is familiar. Compare this to JavaScript which web developers also need to know how to use; why learn a third language (Groovy) in addition to Java and JavaScript? Over time the simplicity of coding and debugging in JavaScript on client and server, together with dynamic-language productivity, will overcome the momentum of the Java standard, and web developers using server-side Java now will gradually replace it with JavaScript on the JVM. Conservative attitudes in the mainstream Java community (including Fortune 500 companies and the many offshore development firms that write code for them) will make this take quite a while &#8211; probably 5 years before JavaScript becomes a common part of the architectures that currently use J2EE, and 10 years before Java goes the way of COBOL (maintained forever but not used for new projects).</p>
<p>So in conclusion, keeping an eye on the future value of a technology, including who&#8217;s investing in it and who&#8217;s talking about investing in it, is critical to making your own investments today. In five years you&#8217;re not going to be using the same technology stack that you are today, and your project&#8217;s success and your own salary will be tied in large part to how well you invested today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/11/12/evaluating-future-web-application-technologies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Technical Architecture is a Form of Investing</title>
		<link>http://www.pervasivecode.com/blog/2007/11/12/technical-architecture-is-a-form-of-investing/</link>
		<comments>http://www.pervasivecode.com/blog/2007/11/12/technical-architecture-is-a-form-of-investing/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 22:02:06 +0000</pubDate>
		<dc:creator>Jamie Flournoy</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.pervasivecode.com/blog/2007/11/12/technical-architecture-is-a-form-of-investing/</guid>
		<description><![CDATA[Technical architecture (the act of researching and specifying a set of technologies to address a particular need) is a form of investing. Sadly, like stock market investors, many technical architects are blinded by hype, hero worship, tribalism, and short-sightedness, and make poor decisions as a result. A comparison between current web application development issues and [...]]]></description>
			<content:encoded><![CDATA[<p>Technical architecture (the act of researching and specifying a set of technologies to address a particular need) is a form of investing. Sadly, like stock market investors, many technical architects are blinded by hype, hero worship, tribalism, and short-sightedness, and make poor decisions as a result. A comparison between current web application development issues and the stock market may help you to avoid these tendencies in yourself or your team.<br />
<span id="more-47"></span><br />
All too often in architecture, we get defensive about decisions we&#8217;ve already made and attack things that we&#8217;re ignorant of, forgiving the faults of our Own Stuff and downplaying the strengths of Their Stuff. We assume that Our Stuff is going to win and Their Stuff is going to lose, because we like Our Stuff and hate Their Stuff, and the best stuff always wins, right?</p>
<p>It doesn&#8217;t work like that, though, and our judgement is biased toward the things we already are familiar with. The stock we&#8217;re holding is undervalued, while the stock we want to buy is overhyped. The technology we&#8217;re using right now is obviously better than the technology we don&#8217;t know anything about. The stock will bounce back; we&#8217;ll sell it when it turns around and hits twice its current price. The new release with feature XYZ will make everything so much easier that we&#8217;ll be able to take Fridays off.</p>
<p>Concepts from financial investing that are helpful when thinking about technology more objectively are the <a href="http://en.wikipedia.org/wiki/Efficient_market_hypothesis">Efficient Market Hypothesis</a>, <a href="http://en.wikipedia.org/wiki/Fundamental_analysis">Fundamental Analysis</a>, <a href="http://en.wikipedia.org/wiki/Market_capitalization">Market Capitalization</a>, and <a href="http://en.wikipedia.org/wiki/Net_present_value">Net Present Value</a>. Each of these represents a structured way of thinking about the current opinion of the value of something in a manner that includes its potential future value and still gives you a single number to work with.</p>
<ul>
<li>Do you know something that most other people don&#8217;t know? Paul Graham says you can exploit this, in <a href="http://www.paulgraham.com/avg.html">Beating the Averages</a> says . EMH says you&#8217;re fooling yourself.</li>
<li>Are you judging something based on hearsay? Fundamental Analysis is a tool for thinking about whether a stock is as good or bad as people say it is, and how that is likely to change in the future.</li>
<li>Are you ignoring the behavior of others when making decisions for yourself? Market Capitalization is an aggregate of what everybody thinks, regardless of whether they&#8217;re right or wrong.</li>
<li>Are you judging something based on its current value instead of where it will be, and how much it might cost you to get to a certain point in the future? Net Present Value is a tool for figuring out the value of future outcomes so you can decide whether it&#8217;s worthwhile to try to achieve them.</li>
</ul>
<p>All of these concepts are just models for thinking about what&#8217;s really going on, and as such you should understand their shortcomings before using them. A major shortcoming is that your predictions are still going to be based on your subjective experience, and as such may be biased toward making you feel good about the choices you&#8217;ve already made. But they still hold lessons for techies trying to make choices about technology choices, for current projects or for improving your future employment options.</p>
<p>In Part 2 I&#8217;ll talk about why this is a timely topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pervasivecode.com/blog/2007/11/12/technical-architecture-is-a-form-of-investing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
