Oct 31

“Our strategy with Silverlight has shifted”; The problem with alignment with a single vendor

Open Web, Tech 4 Comments »

mobilechangeinmarketshare

You may think that this post is going to rub in the bad press that Microsoft has gotten around their Silverlight positioning coming out of PDC, but it isn’t.

It isn’t really about Microsoft at all. This moment did just spark with me though. Ben and I have been thinking a lot about application ecosystems thanks to our time at Palm. We did research and study, and part of that went back to history. One meta (and fairly obvious) point was remembering how lucky we are to have the Web. I have talked about the history of mainframes, microcomputers, pcs, consoles, you name it….. proprietary operating systems and SDKs ruled. Microsoft took the 90s with a massive lock-in due to software. The Internet changed the entire game and managed to break those chains. Office wasn’t the most important software anymore. Everyone wanted to get onto Google and Yahoo! and Amazon and Facebook and …. and that happened to be on the Web in a virtual machine of sorts (which in my opinion helped Mac OS massively).

For the first time, the dominant platform wasn’t owned by a single vendor. It was almost lost for awhile with IE, but massive thanks to Moz/Firefox and others it wasn’t. It isn’t like a bit that flipped then can’t be unflipped however (and Scott talks about how the Open Web could be closing).

scottgu silverlight

Back to Silverlight. When it was launched there was a massive push from Microsoft to get developers (which they are good at). WPF everywhere. The future was rich interfaces and the Open Web wasn’t up to the challenge so you have to use a plugin. You remember the massive deals to get distribution (Olympics etc). They push hard! As a Microsoft developer you could feel well aligned with what is going on. What about the Flash developers they tried to lure over…. and Web developers too? This is where the problem comes in. With every alignment with a single source, there is probably going to be a misalignment at some later date. Companies have to change strategy as the world changes. Silverlight was “cross platform” (a big deal for Microsoft to do at the time) but this meant “Windows and Mac (oh and we care about Linux via Mono honest!)”

At that time, that is what cross platform meant. Amazingly, a few years later and you laugh at that as when we talk cross platform we also include: iOS, Android, webOS, Blackberry, and you can keep on going. The world changed in a massive way. Silverlight is nowhere to be seen on more of these platforms, and thus it doesn’t make sense as the thrust of Microsoft’s strategy. I am glad I didn’t bet on Silverlight as a developer. I would be sitting at PDC feeling misaligned and hoping that either: a) WinPhone 7 does amazingly well, or b) happy to jump to another platform. Silverlight isn’t “dead”. It will go on. But it isn’t the same play.

Some are talking about how it is now just the WinPhone SDK. I don’t think this is really the case. I have heard that the browser on WinPhone 7 is a frankenstein fork of IE7 with some IE8 and maybe 9 patches and code put back in. Shipping a version 1 (or 7) of WinPhone was a massive undertaking and at some point you gotta ship. I would bet money that the team isn’t standing still and we will see the browser get better fast and join the world of IE9 with all of the goodness that will come of that. I hope that at this point they will be able to push the browser runtime as a first class citizen on the WinPhone platform. I got to play with the phone a little. The core apps were snappy but third party ones were …. not so much. I was told that the core apps are actually written in C++. Hmm. (To compare, the webOS core apps are written using HTML/JS/CSS, same as the SDK, you can even take a look at the code on the device! :)

Aside 1 There is a lot to learn from Silverlight. I would love to be able to have <script type="text/ruby"> that worked across the Open Web in a performant way. Being able to use languages that you prefer is great. Not everyone wants to write in JavaScript (even though some of them probably don’t get the good parts ;). Some fantastic video support. A lot more. We need to learn what we can and include what makes sense in a webby way. This way we can help the IE team make the strategy work for Microsoft.

Oct 26

Will combining your voice with your motor skills be a UX boon?

Mobile, Tech, UI / UX No Comments »

monkey at computer

I have a love hate relationship with autocorrect. When you type gibberish and it automatically converts to what you really meant you let out an “ahhhh”, but when you type something correctly and the system gets in your face and switches it over to something else you get mad. I find that I often know when this is going to happen. When “almaer” turns to “Almaer” in a case sensitive field I growl loadly.

Google acquired BlindType (video above), which is one example of dealing with this particular issue, and it is great to see technology in this space (e.g. Swype). I am sure we will see a lot of new technology come around to make life easier for those who want to quickly navigate around, or get a bunch of content into the device. Have you ever wanted to reply to an email while mobile with something of substance and be frustrated, knowing that you will have to hammer out the thing on a small keyboard? I have. Using voice input has been very mixed, to a point where I don’t try it.

I got thinking about how I would love to be able to use voice actions whilst typing. After all, we do that in other ways. Look at an Italian using his hands as he talks, or a radio DJ make changes as he raps. My particular urge was to say “set spellcheck off” as I typed something onto the device that I knew it would want to correct. Once I did this once, it kept coming to mind as I did other things. When in the browser opening new tabs, sometimes I want to open them up in the background, but other times I want to open them in a new tab but jump right to it. The browser could give me a slightly different key combo for that, or I could say something like “jump” as I complete the action in question.

Once you know that you don’t have something that you want, it is frustrating. I showed someone how they could hold down the home button on iOS and speak to the system “call Dion Almaer mobile” worked like a charm. They then tried “open Facebook”, but to no avail. It feels like it is only time for systems to open up voice as a first class citizen here. Any third party application should be able to add their own voice commands into the substrate.

Once again I feel like an ape at my computer. I can poke and ug (point and click), and I am starting to be able to do more touch, but let me speak and use other senses! SmelloKit where are you?!

Oct 22

Setting our own Direction; Ben and I to move on from Palm

Palm, Tech, webOS 14 Comments »

set direction

When we joined Palm, we were excited to join the intersection of mobile and Web. It has been fascinating to see how that seam has grown over a very short period of time. The device landscape has exploded and developers have amazing new hardware to target. webOS embodies the spirit of joining Web and mobile and we have enjoyed growing the developer community but with its new home at HP we thought it was time for us to move on and allow their resources to take things to the next level. As Ben mentions on his own reflection, it is bittersweet to leave, and I really want to thank Palm, HP, and the webOS community that have embraced us and the platform. I also want to give a massive thanks to: a) the amazing engineers who developed webOS, b) the developer relations team that care so much about our developers, and of course c) the developers who created great experiences on webOS. I wish everyone the best, and as we mention on our post on the Palm Developer Blog, we look forward to continued involvement with the community in our new role as consultants.

What’s next? I have enjoyed time at large companies and small, and there are pros and cons to both environments, but it is time for me to swing back to “small”. I wrote about how the culture of joining companies after an interview is akin to marriage after the first date, so I am not looking to dance down the aisle just yet, no matter how pretty the bride is ;).

Instead, I am incredibly excited to start a new venture with my long time co-hort, and best mate, Ben Galbraith. We have learned a lot about the trials and tribulations of being a developer for the mobile Web, and have some ideas on how we can help people create compelling experiences using HTML5 and related technologies in a highly productive manner. We care passionately about developer community, and are interested in helping companies understand and do the right thing by developers. Finally, we are makers, and have some ideas of great products to build. We look forward, as is our DNA, to share the journey and experience as we strive to build great software.

Industry cross roads

Scott Rosenberg posted on the Web parenthesis and questions whether the Open Web is closing. We are so lucky to be in a position where a massive global platform is Open. If you look at our history with mainframes, PCs, and gaming consoles, they have all be closed proprietary systems. As developers we have been beholden to the vendors. When we are both aligned, things can work out, but as soon as the company has a change in strategy and we misalign, developers are often left by the wayside. This mirrors the world of dictatorships. If you could guarantee your dictator is fully aligned with you there is a good chance that the system will be far more efficient than a democracy. History has taught us though that 99.9% of the time this isn’t the case. The Open Web gives us an escape valve. It has its own problems and complexities (just as democracy), but that is all critically worth it.

Being “open” isn’t enough, and we need to have a platform that works for developers. We need to be able to make money. We need to be able to create amazing experiences for our users. The Web has a huge new challenge vis a vie the “app economies” out there, but it behooves us to all push the Web forward and make it work for us.

The Web has the opportunity to be THE unifying platform that can give us the best opportunities.

It is going to be an exciting and important few years. Now is the time to endeavor to help set some direction in the industry. I hope we can have an impact in our own small way.

Oct 21

“What is just as important is what isn’t in the system”; Apple, Java, and the Mac App Store

Apple, JavaScript, Tech 2 Comments »

opticaldrive

As always, I am an incredibly torn individual after yet another Stevenote and recent Apple news. Apple is incredibly proud not just about what they manage to put into their products, but what they manage to keep out of them. Steve mentioned this again as he discussed the innards of the new Macbook Air products. The other example that comes to mind is their remote, which is laughable when placed next to TV remotes.

We have been opining for a long time about the obvious merge of iOS and OS X. For awhile people would argue about which side would win out, where “win out” means having the most DNA in the future. With Lion, we got just a glimpse on the next round of evolution. The first iOS DNA to get in is that of the app store (pre-Lion even), some look and feel (did you see the toolbar icons on the top of the Mac App Store app?), and the developer features around auto-save, resume where you left off, etc. Having OSX and iOS merge makes total sense to me. As much as I like the Mac, it is a workstation operating system. It was only when I gave my Mum an iPad that I felt like she felt safe and not scared of her computing environment. When I put on a certain consumer hat, I am so looking forward to the Mac App Store. Finally an install and discovery process that makes sense for my Mum. The Mac has arguably the easiest system, but even with DMG’s the process goes wrong every time:

“Wait, you have to double click on the DMG which will mount a drive. No…. don’t launch the app from within there you need to drag it out. No…. don’t drag it to the desktop, you have to put it in the Applications folder”

You can certainly argue that the controlled experience that we are about to get on the Mac will be good for consumers in a large number of ways. Apple is getting ~20% market share at this point, so they may be able to head the virus war at the pass by controlling the apps. And we can see what they have in mind with this control by looking at the review guidelines for the store Here are some of the functional guidelines:

  • Apps that crash, exhibit bugs or do not perform as advertised by the developer will be rejected, as will be apps that are “beta”, “demo”, “trial”, or “test” versions. Apps that use non-public APIs or include undocumented or hidden features inconsistent with the description of the app will be rejected.
  • Apps that duplicate apps already in the App Store may be rejected, particularly if there are many of them. Apps that are not very useful or do not provide any lasting entertainment value may be rejected. Apps that are primarily marketing materials or advertisements will be rejected. Apps that are intended to provide trick or fake functionality that are not clearly marked as such will be rejected.
  • Apps that encourage excessive consumption of alcohol or illegal substances, or encourage minors to consume alcohol or smoke cigarettes, will be rejected. Apps that provide incorrect diagnostic or other inaccurate device data will be rejected. Developers ’spamming’ the App Store with many versions of similar apps will be removed from the Mac Developer Program.
  • Apps must be packaged and submitted using Apple’s packaging technologies included in Xcode – no third party installers allowed. Apps must be self-contained, single application installation bundles, and cannot install code or resources in shared locations. Apps that download or install additional code or resources to add functionality or change their primary purpose will be rejected.
  • Apps that download other standalone apps will be rejected. Apps that install kexts (kernel extensions) will be rejected. Apps that require license keys or implement their own copy protection will be rejected. Apps that present a license screen at launch will be rejected. Apps may not use update mechanisms outside of the App Store.
  • Apps must contain all language support in a single app bundle (single binary multiple language). Apps that spawn processes that continue to run after a user has quit the app without user consent will be rejected. Apps that use deprecated or optionally installed technologies (e.g., Java, [PowerPC code requiring] Rosetta) will be rejected.
  • Apps that do not run on the currently shipping OS will be rejected. Apps that are set to auto-launch or to have other code automatically run at startup or login without user consent will be rejected. Apps that request escalation to root privileges or use setuid attributes will be rejected.
  • Apps that add their icons to the Dock or leave short cuts on the user desktop will be rejected. Apps that do not use the appropriate Mac OS X APIs for modifying user data stored by other apps (e.g bookmarks, Address Book or Calendar entries) will be rejected. Apps that do not comply with the Mac OS X File System documentation will be rejected.

Wow, if we are both writing an application that does “the same thing” right now and I get it in the store before you, there is a chance yours could be blocked? I know that they are probably putting this in place to stop a million fart apps, but wow!

No way to handle beta apps and the like? Most of the apps that I run are actually beta (Chrome dev channel, Evernote beta, etc). At this point I would expect you to say “No one is forcing you to use the Mac App Store! You can buy and install apps just as you do now. Nothing has been taken away.” Absolutely, but it isn’t a huge leap to a see a future where this isn’t the case, and even in the meantime, it will be a pain to manage some apps via the store, and some outside of that process. It won’t be a great experience.

There is another way that the policies poke me. If we think back to when the iPhone came out with app support, they were actually more open than many of the alternatives. It was hell getting your apps provisioned on many of the platforms and the carriers had control. There is also a feeling of “hey, this is my phone, I really need someone testing things at my back as I can’t have my phone compromised in any way.” But on the desktop, even though these “devices” are all merging, it feels different. Feeling like the control is being taken from me feels weird. Do you feel that too?

alexjvm

Then we have Java. I actually wanted Sun to take over the OSX version of Java awhile ago, so it makes sense that the Apple team has deprecated its support. The Mac team was tiny and thus it wasn’t able to get much love, even though the engineers (we met them) were awesome. Now Oracle can hopefully step up and give us something great. This isn’t a great solution if you ship Swing apps (as my Mum won’t have Java installed, who knows if they will get anything that looks native etc), but fine if you are a Java developer who wants to develop on a Mac. I do wonder if any developers will reconsider Linux or even Windows as an alternative, and I am also thinking about what the Enterprise will think of this. For Apple, they have got rid of a support burden which didn’t bring them any great apps that they care about, and there is less of an attack surface area. Again, taking things out is good for Apple.

The much bigger news for Java fans is the fact that Java developers won’t be able to put their wares into the Mac App Store.

This may bolster the Web. Will the destiny pan out where it can be the unifying cross platform solution? For now, you can hopefully even write Cocoa apps using JavaScript, and of course the full Web stack is available. But what about the flip side?

beltznersafari

I know. Those Mozilla hippies over-reacting again right. This will never happen. Apple loves the Web. How much do they love the Web as they need it (a) because uses want it, b) because it gives them a foil to the restrictions “look, we support the standard Web!”) and is there a chance we will be misaligned in the future? They may not cut Safari off at the knees, but what about a softer approach of not investing in WebKit as much (thanks for open source here!) and not shipping great versions.

If you look forward a few years and see that on the App Store they are bringing in 30% of revenue from their native environment, suddenly successful Web apps are losing them direct money. Hmm.

I think it is natural and smart for us to think about what is happening in the industry, and it isn’t fair to be called out as “over reacting” when someone brings up a “what if?”. We need to think critically. History has shown us time after time that alignments change.

That being said, Apple is building terrific product, and they offer real value to consumers (versus pure business lock in on crappy product, which we have seen in the past!). They have made computing so much better for so many people. They are providing opportunity for developers. They push the entire industry which is in such an exciting time. I can’t wait to see what happens next.

Where do we go from here?

apt-buy

Oct 19

The Palm Pre 2 Developer Phone

Tech, webOS No Comments »

Palm Pre 2

“HP is excited to announce that developers will be able to purchase an unlocked UMTS version of the new Palm Pre 2

The words above are a long time coming. It has been a mission since joining Palm to get developers a great dev phone. It is one of those things from the outside that seems like an obvious thing, and surely it should be easy to do right? Well, I have been schooled in the world of carriers, and it took some real world to get all of the i’s dotted and t’s crossed.

If you have wanted a nice fast webOS 2.0 enabled device to test on, please get on the list and ready. There is still work to do (make available in more places around the world etc), but the ball is now rolling.

Kevin Decker has also put together a great new Facebook release for the various channels. When folks get webOS 2.0 they will be happy to see some great functionality there too.

Engineers put a ton of time into making webOS 2.0 shine. There is a lot of work under the hood and the org is setup to build nicely on the foundation of that work. Congrats to the engineers who made the release happen.

Oct 19

Open Web Apps: The Vapour infrastucture becoming real

Mozila, Open Source, Tech, Web Browsing with tags: , No Comments »

I mentioned Vapour, the Mozilla Open Web App Store. I didn’t know that it wasn’t released yet (even though the code was out there).

Well, now it has been released with the post on an Open Web App Ecosystem that has a prototype and technical documentation with it.

This is a huge deal, and I am jazzed that Mozilla is getting into the game here. The Web needs to give developers as many opportunities to monetize as possible, and needs to help consumers find the best possible content.

First we have the philosophy on what an Open Web App even is:

  • Are built using HTML, CSS and JavaScript.
  • Can be “installed” to a dashboard within your mobile or desktop Web browser, or to your native OS desktop or mobile home screen.
  • Work in all modern Web browsers, while enabling each browser to compete on app presentation, organization and management user interfaces.
  • Support paid apps by means of an authorization model that uses existing identity systems like OpenID.
  • Support portable purchases: An app purchased for one browser works in other browsers, and across multiple desktop and mobile platforms without repurchase.
  • Can request access to one or more advanced and/or privacy-sensitive capabilities that they would like access to (like geolocation) which the system will mediate, giving the user the ability to opt-in to them if desired.
  • Can be distributed by developers directly to users without any gatekeeper, and distributed through multiple stores, allowing stores to compete on customer service, price, policies, app discoverability, ratings, reviews and other attributes.
  • Can receive notifications from the cloud.
  • Support deep search across apps: Apps can implement an interface that enables the app container (generally the Web browser) to provide the user with a cross-app search experience that links deeply into any app that can satisfy the search.

There are some interesting elements in there, such as calling out notification support as a first class required feature.

Then we get to the brass tacks. The tech behind this. I quickly peaked at the manifest and was happy to see that it looks very similar to Chrome (and the webOS appinfo.json). I would love to see us all get in a room and try to come up with some subset of JSON that we can agree on.

I also enjoyed seeing:

  • Permissions: The thought around permissions and what it means to be an app.
  • Verification: How do we actually make things like “buy on Chrome, use on Firefox” working? How do we allow distributed systems for payment and all of the services that tend to be silo’d right no?
  • Cross app integration: The Web is great at mashups, and we should lose that in apps

Great to see the word now fully out, and now we have the concept we can join Mozilla in helping to define how this all works, and how it can be useful. It is so very hard to compete with a unified system, and to make it happen takes real work and collaboration. What do you think?

Oct 11

Do you want your service to keep state for you? Comparing the Twitter and Facebook APIs

Tech with tags: , , 6 Comments »

twitterfacebook

I love the Twitter for iPad application and how Loren et al have built an experience that feels right in your hands. There is one bug though that can drive me crazy, and that is the fact that the unread state of direct messages is broken. It feels like 99% of the time I will open up the application and the last 20 messages will have unread:true, even though I know I have read those messages. The bug is particularly irksome because it is so in your face. The messages tab is highlighted as though there are no items even though I know there is nothing new for me (and I just need to go through again and mark them all as read? ugh).

It made me wonder how Twitter was handling the state of direct messages. In creating Facebook for webOS we built out FB messaging, and the state was handled for us. The Facebook design has the notion of threading baked in (as apposed to email for example) and is as follows:

So, where is the unread flag kept? You may think that it is at the message level… after all, it is a message that is either read or not. However, the thread actually controls the flag for Facebook. This means that in a conversation there is basically an int count that shows you how many messages are unread. If zero, then all messages in the thread are read. There are trade offs on having the unread flag be a count and not a flag on the message layer, but the high level point is the core platform is keeping track of what a user has done. Whether you go through the website, or any application that speaks the Facebook API, as long as your application doesn’t cache too aggressively, you will have a good result. The key becomes: as the platform developer you very much understand that the service is the master, and you need to be smart about caching data to give your users a responsive interface, but make sure to sync on the data to make sure it is accurate.

echofon-sync

The Twitter API on the other hand doesn’t appear to keep any unread state for messages. Echofon is a cross platform client that showcases its support for syncing this kind of data. It is a nice feature for them to be able to differentiate on, but man….. it sucks that they have to write it!

I hope that Twitter starts to own the state so we aren’t in the current situation of no one really knowing my state, and it has been interesting to see the different state of affairs, and have you thinking about what the platform should be doing, and what should be left to the clients of said platform.

Oct 09

HTML5 is a jewel that we need to cut into a weapon

Tech with tags: , , 3 Comments »

the web and the app economies colliding

I just wrote about the “don’t deploy HTML5″ comment that sparked a lot of conversation around HTML5 and its readiness (again).

I wasn’t sure if Philippe’s words were taken out of context from the reporter. There are some valid points that can be made around the comment, and thus I was curious to see if Philippe would take the opportunity to put his thoughts into his own words, and he has done in his post on HTML5: The jewel in the Open Web Platform.

It felt like a bit of a bizarre “response” since it doesn’t really acknowledge the discussion and instead reads to me, as a piece on how we are in the early stages, need to test, fun for browsers to be playing, but again….. early stages.

There are some points I very much agree with here. I like the notion of the “Open Web Platform” as the stack that brings together HTML5, CSS, JavaScript, etc…. although the server side and protocol side of the Open Web community may not agree and would prefer “Open Web Client Platform” or something. We have been using the term “HTML5″ as the big umbrella of the client side revolution, post-Ajax.

Ben and I have recently given a talk on HTML5 and the role the Web plays with respect to the application ecosystem explosion we are seeing right now. To put it in perspective, the iOS market by itself is growing faster than the Web 1.0 revolution. The Web is a massive ecosystem, and so is the app ecosystem, so it is obvious that there will be some impact from these two worlds colliding.

As Web fans, we are at war. We are passed the browser wars…. that is now in fighting. We need the Web to be a competitive platform, and this is where I do agree with Philippe. What does it mean to be an “HTML5″ platform right now? Just when I feel like we are getting aligned (e.g. using CSS3 transforms/transitions/animations for high performance graphics) one of the important browser runtimes leaves them out. Developers need a solid platform that they know they can build on. With HTML5 we have our first opportunity to deliver an app platform rather than a documentation hypertext system that happens to have enough hack-ability that we could add in Ajax. We can’t sit and complain to the W3C or browsers about the lack of platform features though. We as a community need to get together and show everyone what we as web app developers require from a platform. We want capability. We want ergonomics. We want uniformity. Great things are happening in browser runtime land right now…. so it is time to push.

So, I think Philippe has some of the right idea after all, but I do hope he realizes that we can’t wait for the full HTML5 to bear out. We need to weaponize *today* against the app ecosystems in the fight for the Web.

And, the Web is so very much worth fighting for. When in history has a major platform NOT been owned by a single vendor? Mainframes. personal computing. consoles. All the world of the proprietary. We are in absolute danger of losing the true gem of the Web…. its true open-ness. Being open itself isn’t a weapon though, and in fact it can be a drag and a hinderance which means we need to be even smarter to make sure that the open system that we have is able to deliver better experiences for developers and users.

Oct 07

Don’t “deploy HTML5″? Thanks again W3C

HTML, Tech 9 Comments »

html5unicorn

Philipe of the W3C has been quoted telling the world that HTML5 isn’t ready yet and that you shouldn’t “deploy HTML5″. This is sparked the old debate around when HTML5 is ready, and the haters can come out and talk about how long it takes etc etc etc. Here are his words:

“The problem we’re facing right now is there is already a lot of excitement for HTML5, but it’s a little too early to deploy it because we’re running into interoperability issues. The real problem is can we make HTML5 work across browsers and at the moment, that is not the case.”

In the meantime, great developers are delivering next generation experiences on top of new modern features that many browsers have implemented TODAY.

The Web platform makes it very possible to progressively enhance (or regressively!) your application for the fast growing segment of the population that has a fantastic modern browser.

Thus, I utterly disagree with Philipe, and instead emplore you to think about what your site or app can be in 2010 with the new capabilities. The Ajax revolution was a hack, and with modern “HTML5″ browsers we finally have a fantastic runtime with great graphics performance (hardware accelerated up the wazoo [both CSS3 transitions/transforms/animations and Canvas]), amazing JavaScript runtimes, the ability to get off of the main UI thread (Web Workers), much better offline and caching support (Local Storage, Web Databases, App Cache) and much much more.

Take a look at the demos from the IE9 beta event, Chrome Experiments, and Mozilla Hacks for a glimpse at what is coming. Users expectations of the Web are just about to be changed again. The day that you used Google Maps for the first time was the day that MapQuest seemed AWFUL. As soon as the bar is raised, you can’t go back. What side of the bar do you want to be on?

Disclaimer: There are real tradeoffs with the Web platform being an open standard with multiple implementations. The platform is diverse and not always uniform. It is our job to rally browser vendors to fix things. For example, Microsoft is doing great things with IE9, but they need to add CSS3 transitions/transforms/animations as soon as physically possible. I would like to think that Philipe meant more to highlight the tradeoffs and not discourage developers. But man, the W3C can really drive me nuts.

Remy Sharp has some nice ranty thoughts on the topic, too.