By Stuart Foster-Hall from AMBA Sterling ICT Ltd.
AMBA Sterling ICT Ltd.
stuart@ambasterling.com
ambasterling.spaces.live.com
www.ambasterling.com
[Ed. Note: From time to time I'm inviting various microISVs to come talk about the development of their products here at 47hats.com. Stuart Foster-Hall kicks off MicroISV Profiles by discussing what it's like building a microISV app in Windows Presentation Foundation (WPF). Want to contribute a MicroISV Profile? Email me.]
We’ve just released our company’s first Micro-ISV offering, rsWorkOrders(Pro) to the unsuspecting world and what do you know?; it’s already sold just over a thousand copies in the first week!!
Extrapolating this rate of sales we’ve pre-booked office space from Regus and have started interviewing new staff. Next year we are planning to expand into our new AMBA Sterling HQ, right next to Microsoft UK in Reading. On a personal note, I’ve also got my eye on some nice real estate near Necker Island.
Okay, okay – not really!! It’s doing well but it’s not looking like this particular application is going to allow me to retire any time soon. It’s not been a wasted experience though; I’ve learnt a few things about developing and deploying WPF business applications though, specifically…
- Thought #1 : “It’s easy to make a messy (=unsellable) UI with WPF”.
- Thought #2 : “Global deployment is surprisingly fiddly”.
- Thought #3a and #3b : “New technology can both help and hinder sales”.
I’ll discuss these points in detail in a minute, but first here’s a quick overview of rsWorkOrders(Pro):-
A quick overview of rsWorkOrders(Pro)
It’s called rsWorkOrders (rs = ‘really simple’, like ‘RSS’, yes?!) and this is what it looks like in all its WPF g(l)ory…

It’s a (ahem) really simple timesheet system for small businesses that helps them identify bottlenecks in their business processes, or heaven forbid, with their ‘human resources’ (i.e. “get on with it you work-shy fops”!).
Okay, here’s what I’ve learnt through the experience of developing and deploying rsWorkOrders(Pro):
Thought #1: ‘It’s easy to make a messy (=unsellable) UI with WPF.’
When I started developing the application I had visions of a tremendous UX, with 3D shapes flying around the screen and reflections and photographs at jaunty angles and buttons that have embedded buttons and more reflections and more 3D flying shapes etc, etc. But you know what? As Eric Sink quite rightly pointed out – “(with WPF it’s quite easy to end up with)…what looks like a button on a butt”.
I was inspired by example applications like FamilyShow and Martin Greyson’s Real World WPF videos on Channel9.
#Begin Aside# : I always used to drive my long suffering wife mad when attempting DIY projects around the house, but not anymore as I’ve learnt the number one rule of DIY, and that is : ‘tools for the job’. Whenever I attempt DIY nowadays, the first thing I do is go to the local hardware store and buy or rent all the tools I will need to do the job.
So what? Well, I apply the same rules to developing software now too. For this project I wanted to use SilverLight and Visual Studio 2008 with maybe a sprinkling of LINQ here and there for good measure, but the simple fact is that I’d still be writing the application now rather than watching it sell as I get on with the next project. Sad and possibly slightly boring, but true…#End Aside#
I initially developed rsWorkOrders(Pro) using Visual Studio 2005, with the Cider update for viewing the WPF/xaml graphically, but soon started using the excellent Expression Blend as a WYSIWYG editor:


However, I soon noticed that by splitting the development into distinct halves; with the design and graphics being done using Expression Blend, and the UI code behind/business layer/data access layer /database schema etc being done via Visual Studio, a distinct pattern began to emerge…
1. I’m not quite as good a designer as perhaps I’d thought
2. I’m not quite as good a programmer as perhaps I’d thought
Still, number 2 is fixable – I just need to learn the new technologies better, so a number of sessions with my head in the books (well, on SafariBooksOnline anyway) sorted that out.
Point number 1 however is not fixable, well, at least not without maybe going to university to take a practical art degree and possibly inventing a time machine so I could go back in time to beg my father to let me take the subjects I really wanted to at school instead of all that damn science…
I think for the next project I will need to recruit the services of a good designer, ideally one who would be happy to, well, not actually get paid as such but say receive a good cut of the sales.
So what? Well, I think that there is a correlation between how good a UX the application has and how easy it is to sell the application to a typical business. The thing is though that it’s not a straight line; it’s a bell curve. This is because most of the businesses I’ve worked for in the past would not purchase an application that has 3D, reflections, or possibly even colour in it, for the simple reason that they look too expensive! Baiscally eyebrows could be raised between departments regarding software acquisition budgets… Far better to have a UX that is so easy and obvious to use that training costs can be minimal or ideally zero. Something that would look at home in the Starship Enterprise would (sadly) not be appropriate.
Thought #2: “Global deployment is surprisingly fiddly.”
Thinking it was the ‘easy option’ I decided to use ClickOnce for deploying rsWorkOrders(Pro). The main reasons for this decision were…
A. it’s quite easy to use it to sign your application and deployment manifests with an Authenticode digital certificate (Verisign in this case), which I feel gives the end user a level of confidence when they install your application and see that it’s secure, and…
B. it’s simple to deploy applications that can automatically update themselves via a website.
This has proved useful as I implemented a nifty bit of error handling code throughout the system that posts all exceptions to a FogBugz hosted server. This sends out error reports via email, which is great as you can then fix bugs and update the system pretty much on the fly (so long as you test it thoroughly first though! Otherwise you’d kill your entire client base in one go! A bit like recalling millions of toys, say…).
So what? Well, there are loads of issues here from how to digitally sign your application manifests after applying your providers merchant services wrapper (Upload.com in this case), to how to manage future updates without overwriting your customer’s data , to how to obfuscate WFP/XAML and protect your IP (SecureLM). Even displaying a pre-installation EULA isn’t (normally) possible using ClickOnce so needs a work-around.
My point is that it took me two days to write rsWorkOrders(Pro) but nearly a week to deploy it.
Thought #3a:
· Sometimes using new technology hinders sales.
For example, WPF applications need the .net 3.0 Framework, but most companies are still using XP so may or may not have it installed. Certainly none of the clients I have provided consultancy over the past few years use Vista (or are likely to adopt a ‘new’ technology until there is a strong business case for ‘not using XP’) and have such locked down systems that something as fundamental as an OS framework just would not be allowed to be installed without a major series of strokey-beard meetings at various corporate levels. Not exactly conducive to closing sales I’d say.
Not using WPF, but sticking to the .net 2.0 framework would have made it a no-brainer: “Google search/What’s this?/Download demo/I like it!/Where’s the company credit card?/Bishbashbosh – job done!”
Thought #3b:
· Sometimes using new technology helps sales.
Sometimes using cool and froody new technologies can be a help, for example having some sort of legitimate Microsoft Office integration in your application (using Visual Studio Tools for Office, say) entitles you to sell on Microsoft Office Marketplace (i.e. in addition to Windows Marketplace), which could well prove to be a lucrative additional sales channel. I also view Windows Vista Gadgets in a similar light.
Self ‘call to action’:
Well, here’s a summary of how I’m going to apply the lessons learned from my first Micro ISV application to the next one:
- Find a good graphics designer who knows xaml!
- Don’t waste time learning new technologies for the sake of it (but may dabble with LINQ though – can’t resist!)
- Use the quickest, easiest tools for the job.
- For example next time I’m going to use NHibernate to reduce the amount of data access code (okay, okay – I broke the rule above already!)
Well, that’s about it for my first Micro ISV application – I’ll let you know how the next project goes in a few weeks time.
Regards,
Stuart
stuart@ambasterling.com
=======
About AMBA Sterling ICT Ltd.
AMBA Sterling is an Independent Software Vendor (ISV) providing retail software for commercial business (SME and enterprise) and educational markets. We provide software products for the management of business processes and support schools with the educational requirements of their staff and pupils.
Established in 1996, AMBA Sterling prides itself on the use of the most up to date Microsoft technologies and highly qualified staff.Our client list includes major UK companies including EDF Energy, South West Water, Wincanton, Zurich, Lincoln Financial Services and the United Kingdom Hydrographic Office.
Popularity: 14% [?]


{ 5 comments }
It’ll be good to know how your sales work out, considering the deployment issues.
I have to admit, I am flabbergasted that you chose a framework that made it easier for you to write the application (2 days), but infinitely more difficult for the customer to download and use.
It just doesn’t make any sense from a business viewpoint?
The great thing about Expression Blend is that it provides tools that a graphic designer would be familiar with, similar to photo editors (ex: eye dropper, gradients, vector drawing). I’m not a design expert, but I was quite happy with my results from using Blend. You can see a sample at: http://infogenium.com/EdgeRM/reader.htm . I expect even more collaboration happening in the future between designers and developers because Visual Studio and Blend work so well together. There will of course be much to learn for both parties, but the payoff is there, and can be leveraged in Windows and Silverlight.
Hi Al,
Yes, good point about the framework, however origionally my intention was that it was going to be a Vista only application (thus the 3.0 framework is already there).
I think in the fullness of time most XP users will probably install the 3.0 framework or just upgrade to Vista anyway?
Regards
Stuart
Hi Andre.
Yes, you are quite right – I agree that Expression Blend is aimed at designers and includes tools that they’d both be familiar with and indeed expect to find.
Hmm; I can’t imagine what a developer-specific designer would look like! Hmm, actually, that’s Cider isn’t it??
Yes, the integration of VS and Blend is great though!? Now I want them to share the same IDE – that would be awesome! (Haven’t looked at VS2008 yet though; is it any better do you know?)
Nice site by the way, and yes, I think you’ve got a really nice UI there on your EdgeRM Project Reader app. Not a rotating 3D reflection in sight!! I love flow documents though, don’t you?
Regards
Stuart
Very good article Stuart, thanks for taking the time to let us know how it went
I’m currently evaluating where we go with the next version of our product and I’m still unconvinced by the WPF side of things – while the nerd in me would love to have a play with it I haven’t really seen anything that convinces me that it’s a good business move to incorporate it so an article like this helps me see how other people are doing with it.
Comments on this entry are closed.