How Not To Steal User Preferences

Dear Adobe,

Software is only allowed to display a dialog box like this once:

bonehead adobe acrobat dialog

If you insist on displaying this dialog every single time your software launches, your software is officially “stupid”. Eventually I will want to stop using it. Consider placing a “Don’t show this again” check box at the bottom there, please.

Love,

Jeffrey

Update: Hey, it looks like a recent patch to Acrobat Pro fixed this. Hooray!

DialIdol Predicts Call-In Vote Winners

Link: DialIdol.com – Measuring the busy signal

DialIdol is a piece of software you can install on your computer that uses a modem to auto-dial call-in numbers for contest shows like American Idol. The interesting twist is that the software records whether it receives a busy signal each time it calls in to vote. The software then aggregates this information among all its users as a way to predict who will win. The makers of the software claim to have a 97% success rate in predicting the winner of American Idol each week.

.NET Developers: Recommend Your Favorite Open-Source Projects Here

After literally years of trying, I’ve finally succeeded in getting the VSLive folks to let me do a pure open-source talk at the conference. The talk is called Codeplex’s Greatest Hits. The idea is to take a bunch of different cool open-source projects and provide descriptions of them as well as working code demos. The talk is 75 minutes long, so I imagine I’ll have time to do quick demos of between 6 and 8 different projects, of which I already have three or four picked out.

In the spirit of open source, I’d like your help on this. If you’re a .NET developer and you have a favorite open-source tool, post a link to it in the comments. (The tool doesn’t have to be hosted on Codeplex, but it does have to be open-source.) It would help if you also explain why you like it, what you’re using it for, etc. It is totally OK to recommend your own project.

This talk will take place at VSLive Orlando, May 12-16. Once again, the good folks at the conference have provided a discount code for lucky readers of this blog; use the code SOMCM when you sign up for the conference, to get a Gold Passport for $300 off.

kick it on DotNetKicks.com

Google App Engine: Fish or Foul?

We’ve been paying attention to the launch of Google App Engine over the past day and a half and we will continue to keep an eye on it on behalf of our consulting clients. As is often the case with paradigm-challenging products, people often try to characterize the new thing in terms of what they already know. But we don’t believe that Google App Engine is directly competitive with Amazon EC2 today, although it could be in the future. We also don’t believe, as a few people have asserted, that it’s competitive with social networks like Facebook either. Here’s why.

Amazon EC2 is one of the most open platform products in existence today. When you spin up an instance of an EC2 server, you get to make all the choices regarding operating system and software. You log in as root. You can write applications on an EC2 instance using any language and tools you want. You pay only for what you use.

Google App Engine, on the other hand, is a walled garden. In the words of Tim Bray, if you go the App Engine route, particularly if you choose to use Google authentication, you are essentially a sharecropper, working on Google’s farm. You write the application, but Google owns the infrastructure and, more importantly, they own your users.

Ah, you say, but it’s certainly true that closed platforms can be spectacularly successful, at least some of the time. Look at Facebook, for example, one of the most popular walled gardens in existence today. Facebook exerts a great deal of control over what applications running on its platform can do through frequently-changing terms of service and rules enforced in its technology stack. But the difference here is that Facebook asks you to trade off openness and control of your application in exchange for something valuable — its users’ attention. The deal you make with them goes something like this: give me access to your millions of users, and in exchange I’ll adhere to your terms of service and accept your proprietary application framework — I’ll even go so far as to learn the only programming language that you really support well (which in Facebook’s case is PHP).

Google App Engine is neither fish nor fowl. It requires developers to write to their framework without the commensurate benefit of access to a huge built-in audience of users.

Google is providing access to App Engine for free for now, although traffic and storage is limited and we haven’t seen information about commercial licensing, which is troublesome and probably a deal-killer for all but the most trivial applications. It’s true that in many cases “free” can trump “open” or “complete”, but in the case of Google App Engine we believe that “free” won’t make a huge difference. It may attract experimenters and people writing demonstration applications, but virtual hosting (through EC2 or fixed-price virtual hosting providers such as Slicehost) is so close to free today that the “free” part of Google App Engine should not make a difference to anyone who is looking to write a non-trivial application.

The design choices that Google made with this product are pornographically good news for Python developers, who now have their own dedicated application server and a way to build web applications using their language of choice. This may well put Python on the map (as the second language of choice alongside Java, PHP and C#) as one of the Languages That Matter. But it’s also important to remember that consumers don’t use Python (or any other programming language), they use applications. In this respect, Google App Engine is one of many Google products that seems to have been created with technologists, as opposed to consumers, in mind.

On the consulting side we’ve been getting a ton of inquiries from customers regarding strategies and tactics for virtualization on platforms like Amazon EC2, and we’re in the process of adding a formal software development practice dedicated to supporting Amazon’s EC2 and S3 products. That doesn’t mean that we wouldn’t support something like Google App Engine if a client asked us to and there was a good reason to, but for the reasons we’ve described here, we’d prefer to take a wait-and-see attitude towards this and carefully weigh the drawbacks and limitations before devoting serious time or development effort to the platform.

All that having been said, we still believe that Amazon has missed an opportunity by positioning EC2 as a developer product as opposed to a hosting product. If the Google App Engine product were to make a dent in EC2′s momentum, we’d recommend that Amazon provide better support for multi-server scalability scenarios. Amazon recently started moving in this direction with the release of new features intended to give administrators the ability to assign IP addresses and machine instances to specific data centers, but providing explicit support for an adaptive clustering package like Scalr would give EC2 a vital edge, particularly for professional applications.

TechCrunch 50 vs. DEMO: Feh to Both of You

Link: You only get to lose your virginity once

However, I can’t imagine that I, as an entrepreneur, would choose to roll out my product at either conference. They’re both shitty deals for entrepreneurs. At TechCrunch50 there are 50 products. At DEMO there are 70. Since they’re happening the same week, at best I’m one of 120.

Dave Winer nails it. I’d take it a step further, though: I say, death to all dog-and-pony-show conferences that pointlessly pit startups against each other in a rabid scramble to appease “influencers”.

Missing the “Home” Button in Firefox 3

I just downloaded and installed Firefox 3 beta 5. The first thing I noticed was that they did away with the Home button (and when you run Firefox 3 and Firefox 2 on the same Mac, the home button goes away in Firefox 2 as well).

I’m sure this change was discussed and debated before it went in. I’m sure that somebody thought it was more logical to have your home page be “just another bookmark.” But this change is going to cause more confusion than it will resolve; I contend that it won’t help a single user. It certainly won’t save much useful real estate on the toolbar (there’s plenty of room for the home button if you nudge the URL box over a few pixels).

Having no home button will cause users like me more annoyance since we’ll have to re-add the home button back to the toolbar on every machine we use.

More importantly, though, this change will really just disintermediate Yahoo, since Yahoo gets a bunch of traffic from deals with telecoms and ISPs that set users’ home pages to Yahoo by default. If a user’s browser doesn’t have a home button at all, that user will be forced to navigate using search (which on Firefox is set to Google by default) instead of hitting the home button.

Update: The speedy and perceptive Mike Beltzner chimed in to say that this was a change that happened in earlier betas of Firefox 3 and has been reverted in beta 5, so it should no longer be an issue. If you’re like me and you installed an earlier beta, you can resurrect the home button using the toolbar customization menu.

Slides and Code for Data-Driven ASP.NET Ajax Talk

Even though I was frazzled and exhausted after battling airlines and airports trying to get home yesterday and today, I arrived for VSLive exactly eighteen minutes before my first scheduled talk, which was on using .NET to build Facebook applications. The talk went pretty well and was decently attended but it was challenging to cover the material in a 75-minute talk. If I do this talk again, I’m going to reorganize the content somewhat, maybe include a few diagrams and definitely some more code examples.

My afternoon talk, Data-Driven ASP.NET Ajax, was an updated version of a talk I gave at VSLive NYC last year that was very well-attended and well-received. Here are the slides and code for that talk. Because I used System.Data.SQLite as the database, the demos require no setup or configuration; just open the web site in Visual Studio and peruse to your heart’s content.

Death to Developer Contests

Over on his blog Microsoft’s Dan Fernandez courageously decries the frequent use of developer contests to engage developers and increase momentum for platform adoption. He counted up the number of contests Microsoft is running at the moment: it’s 18. Eighteen different ways to win cash and prizes for doing stuff with various Microsoft products.

Dan thinks this is over the top and I totally agree. When I ran the evangelism team at eBay I resisted the urge to do developer contests for the reasons Dan points out, and when I ran the Yahoo program we didn’t do any; we were more concerned with giving back to the entire community by devoting our very limited time and resources to making new products happen for developers.

Contests are like steroids for platforms. They may pump you up in the short term, but they don’t actually grow the ecosystem. Contests don’t kick off interesting and useful conversations about your platform because they put your developers in competition with each other. More importantly, contests detract resources and focus from where they’re needed.

Throughout the history of American business, the worth of marketers has been measured by the size of the marketing budget (as opposed to the results they might bring to the business). But in a world in which no platform in history has ever provided good enough documentation or code examples for its developers, there’s no excuse to do a single contest.