Wednesday, January 28, 2009

The iPhone Changes the Game for Small Independent Software Vendors

Over the years at the Boulder Java User Group, I have discovered many technologies that have eventually played an important role in my daily software development, YUI or YSlow, for example. Matthew McCullough's fascinating talk earlier this month on iPhone development may
eventually turn out to have been another influential moment.

For a bit of background, last year Apple finally opened up the iPhone platform to non-Apple developers. This sea change reveals a vast and relatively unexplored landscape for software developers where there are probably many good ideas ripe for the picking. In addition, iPhone's smart phone market share is large and growing rapidly potentially providing many customers for iPhone developers. The revenue model is also tantalizing; developers may sell their applications at the iTunes store -- an extremely high visibility marketplace. I know of no other high profile online store where small independent developers have relatively easy access to huge audiences. Of course, this scenario makes the rosy assumption that Apple will approve the application for sale at the iTunes store. Nevertheless, this possibility is better than the alternatives. Hopefully, we will be seeing more of these high visibility online software bazaars.

Contrast this situation to the web application arena, where it seems every good idea has been already explored, not to mention the fact that the competition is cut throat, and the revenue model usually depends on mega traffic, which is difficult if not almost impossible to attain. Overall, it remains extremely difficult to break through and get attention in the web application world.

As a consequence, Matt's BJUG talk certainly whet my appetite for iPhone development. The major caveat, of course, is developers such as myself must learn Cocoa and Objective-C, which is not a small feat. Back in 2003, I became interested in Objective-C and Cocoa development when OS X and the iPod were really becoming popular. I spent about a year tooling around during evenings and weekends learning Objective-C and Cocoa. While I was interested in this environment, nothing concrete ever materialized from my efforts and I moved on to other projects. At any rate, I am glad I did not toss those Cocoa and Objective-C books I purchased a few years ago. Indeed, I have been brushing up on my Cocoa as fast as I can.

Monday, January 12, 2009

Stackoverflow and the Future of Collaborative Media

Stackoverflow is the collaborative media site founded by the illustrious duo, Joel Spolsky and Jeff Atwood. It makes a fresh and original attempt to improve the state of the online software development community, and does so mostly successfully. The site combines the best features and concepts from wikis, blogs, forums, and sites like Digg and Reddit (and perhaps a even a touch of Twitter). The result is an impressive collaborative space where developers can post questions, obtain quick answers and spark discussions.

To highlight just a few Stackoverflow features:

  • Use of Open ID. Account creation -- often the biggest barrier for adoption for collaborative sites -- is near frictionless by leveraging this up-and-coming authentication mechanism.

  • Voting. Higher quality answers and topics tend to filter upwards via a voting and point scheme.

  • An outstanding user interface, with plenty of rich interactivity that adds to the user experience instead of detracting from it.

  • High web traffic yields quick responses and usually decent quality answers and discussions.

  • Questions, answers, and comments (assuming you have the credentials) are editable which means mistakes are corrected over time.

  • Unobtrusive ads.

The engineering behind Stackoverflow must be outstanding. I have noticed very few odd quirks (apart from the occasional dirty cache) and it seems to be scaling fine. This is certainly more proof that the stack is at least as good as anything offered in the Java arena, not to mention the fact that Jeff Atwood and friends are extraordinary developers. They designed, implemented, and had the site up and running in just a few months. I have been fantasizing about starting a knockoff site with the Java Spring stack which would theoretically be very doable as long as you had the right talent and time. (I know, easier said than done.)

Stackoverflow is not perfect, however. Question and answers can receive up and down votes, and users accumulate reputation points based on the vote count of their questions and answers. Moreover, users obtain badges as they use the system. It can become annoyingly addictive. This merit system is both an asset and a detriment. The right answers theoretically filter to the top, but Stackoverflow also biases quick answers over the best answers because the quick answer simply receives more views and points. This fact in turn incites users to provides rapid-fire answers over more thoughtful, measured responses resulting in a positive feedback loop. They may be able to partially fix these issues through some algorithmic / social engineering tweak. The reputation point system also means that users can become competitive, which leads to pettiness, incivility, and even borderline vigilantism at times. For exhibit A, note the comments on the legendary (fellow University of Colorado alum) Alan Kay's question. Possibly a better solution is to provide a relatively low ceiling on reputation points.

Searching has problems, as well, and I have even posted questions that already had answers despite a preliminary search for my question. Again, they will fix this issue eventually.

The quality of the discussion is not universally great, but generally adequate and certainly better than the alternatives. For example, this discussion on JavaFX technology partially misses the point that JavaFX is very much related and built on top of applet technology -- a fact I try to point out.

At any rate, the development community is responding favorably to Stackoverflow, and the number of users is growing sharply.

Stackoverflow is the brainchild of Joel Spolsky and Jeff Atwood (actually mostly Jeff, I suspect) of software blogging fame. This effort is another example of how successful bloggers have bootstrapped other facets of their careers by using their blogs as self-promotional springboards.

Stackoverflow's meteoric rise proves there is a real hunger for collaborative spaces that don't suck. I predict that they are going to start spinning off other "spaces," some perhaps having nothing to do with software. Why not have,, Better yet, make those spaces integrated. For instance, if someone asks a question on the IT forum that belongs in the gaming forum, there would be a mechanism to re-assign the question to a better space. The evolution of Stackoverflow into other domains will provide an invaluable service to many online communities whose forums currently stink. How many times have you looked for something on the Internet only to arrive at a forum where your question has been asked but with no answer? Or that you do not have the credentials to provide the answer and that obtaining a login is too onerous. And, of course, you are assaulted with ads along the way. I have encountered this scenario countless times, as have my colleagues. Stackoverflow's expansion into other domains will be a quantum leap in the evolution of collaborative media. An evolution that I will wholeheartedly welcome.