Opensource .NET talks schedule

We have worked out the schedule for opensource .NET talks at Skills Matter in London for the next few months. Here are the dates to note in your calendar – more detail on sessions will follow:

  • 25th September: Script #, .NET response to Google Web Toolkit.
    Registration is now open
  • 23rd October: Dependency injection with Castle Windsor
  • 27th November: Asynchronous enterprise .NET applications with NServiceBus
  • 17th December: Test driven development in .NET

We will probably do another Alt.NET evening in January like the one this July. This time we’ll have more time and hopefully a bigger venue. At the moment, we have a slot on 13th Jan available for this. If you attended the July talks, please let me know what you thought of the way that we organised it, what you liked, what you disliked, and what we could do to make it better next time.

The wrong way to do a shopping cart

The print-on-demand service that I’ve chosen for my book has a fairly nice web user interface with lots of Ajax code. Generally, that web application is one of the best aspects of doing business with them. That’s why I was surprised to find a rather amateurish flaw in their shopping cart. Here is the screenshot:

Notice the “do not click Place Order more than once” message. Someone has obviously identified that customers have been clicking more times than needed, but offering a warning message is not the way to solve the issue. In fact, such a message is a huge warning signal that something is wrong.

I’m pointing out this case in particular because it is one of the most frequent problems I’ve seen in Ajax sites, and one so easy to avoid. The proper solution is incredibly simple: always disable the form as the first step of asynchronous processing. It is very easy to block the “Place Order” button before an Ajax call goes out to the server, and doing so would technically prevent anyone using a proper browser to place the same order twice. For high volume sites, like this one, I always recommend implementing some sort of double-order analytics on the server just in case, because exceptions do happen, but just a simple JavaScript command to disable that button would save everyone a lot of trouble.

How to test AJAX sites with FitNesse and Selenium RC

UPDATE: My thinking on this has changed significantly in the years following this post, but according to Google it’s still quite popular. If you’re interested in combining FitNesse and Selenium, make sure to read this post as well: How to implement UI Testing without shooting yourself in the foot. It explains how to avoid some of the most common problems.

It’s been almost a year since I wrote Automating web tests with FitNesse and Selenium, offering an idea how FitNesse can be used to implement a nice customer-friendly mini-language for user interface testing. Since then, that article has been one of the most popular, if not the single most popular, article on this web site. I have helped several clients improve and integrate their UI testing based on the ideas in that article, expanding and improving the mini-language, especially for AJAX testing. Here is what I’ve learned about that in the last year. Continue reading