IE7 doesn’t launch in Vista

I’m currently seeing an odd problem with one of my machines running Vista. Quite often when I launch IE7 it simply doesn’t appear, I can see it in the process list but no browser. I’ve tried killing the process off and relaunching but that doesn’t help. The only thing that seems to work is to kill the explorer.exe (windows explorer) process off (which kills the desktop) and restart that. If it’s some Antivirus plugin I won’t be amused!
 

‘Goal Directed Design’

One of my constant heartaches when I see design proposals, or worse finished features, is the lack of thought given to the poor end-user. This isn’t a new subject indeed there are currently some insightful blogs from Microsoft employees complaining about the interfaces in some of their own products – Windows Media player springs to mind. With this in mind I thought I’d blog some quotes from ‘About Face 2.0 – The Essentials of Interaction Design’, please read the book but to whet your appetites…
‘…marketing departments are sometimes able to provide requirements, but these often have little to do with what users actually need and have more to do with following the competition, providing feature checklists to IT departments, or guessing based on user surveys or customer wish lists. None of these approaches take into account the users’ goals in any systematic fashion.’

‘…Developers…centring on technology and engineering methodology…Marketing departments focus on what drives press attention, on features lists, on what people say they will buy…The result…software that irritates, reduces productivity and fails to meet the user needs.’

I’ll stop there, if you want to read more then buy the book! But please all you developers and software houses out there, please think about the poor end-user. Take a long hard look at what you’ve developed or are developing and ask yourself honestly, are you making software that thrills or irritates the user?
 

Agile Process – problems with ‘chasing the money’?

After attending a number of seminars  (esp. the ‘Agile Investment in Software: Who cares how you build it?’ seminar by Chris Matts) and talking to other developers/architects I’ve been considering the pro’s and con’s of, "chasing the money" (Money). The basic idea is that you should provide the business with the best mechanisms for the company to make money. A core issue with any Agile development processes is what feature to implement next. If you take the Money approach then it can help focus the development on the immediate business needs, thus helping the product get to market faster, the business more successful, etc, etc (see Clarke Ching for a good introduction). I can see why this is a good idea (clever me) and it certainly is worth asking the question for every potential feature that could be implemented. However, as with so many ideas neither is it a silver bullet or particularly new. Recently, on different occasions, I’ve been confronted with developers who have not considered the non-functional requirements during their development process. When I recovered from the shock that this can happen I wondered if there was some common problem with the teams. When discussing it at XPDay the first conclusion was simply poor developers. I think there is something to that, certainly in one example the team of people were asked to do development when that isn’t that primary skill, ah the beauty of false economy. The other common factor was a feeling of them-and-us. The team Chris Matts described sounded like just such a case, "The Business people" vs. "The IT lot" whereas the idea is that everyone should be working together (aaaah sweet). Chris’ conclusion was that by using the Money approach the IT team were forced to validate everything they did as a business case. Herein lies the problem, if you combine the Money approach with the lack of importance given to non-functional requirements you run the very real risk of passing over such features in the clamour to grab the money. Some of the features are difficult if not plain impossible to put in afterwards. For example, consider building a house. Customers wants walls and a roof, they don’t care too much about the floor.  Obviously the conclusion of this example is you end with a lovely house that falls over in the next strong wind because the boring no-thrills foundations are rubbish and you end up with one angry customer and a reputation in tatters. I’m not suggesting this means the Money approach is wrong, but you must ensure that non-functional requirements are properly considered (with the proper business case) when deciding upon priorities and don’t use the wrong people! Like I said, I don’t think this is anything new, but it seems to be a lost message when there is a temptation of a quick buck.

SQL 2008 MSDN seminar

Just got back from a SQL 2008 MSDN UK seminar at Thames Valley Park (TVP). I was a fairly simple set of presentations to give a quick flavour of what 2008 may mean for developers. So here is an even quicker flavour…
Data Types: Some new data types including lots of date/time types (probably the ones that were in the 2005 CTPs), File Stream (for files that are actually stored on disk) but the most interesting one was the Hierarchy Id. This allows the developer to construct real hierarchy relationships and ask questions such as who is the ancestor of x. However it does need to be manipulated via a whole set of related functions. The seminar also spent far too long on spatial types, ok map data is all the rage but who cares about this? Ever since SQL 2005 I’ve been worried about the potential explosion of CLR types in the database, and this just seems to meet my worst fears. I think you can smell a CLR type because of the extra functions, I really wonder how well (or not) they’ll perform.

Semi-Structured data: Interesting change, where you can add sparse columns to a table. The idea is that you can create many columns (wide table) to cover many attributes without overloading the table. This could be useful for storing derived types in the database. The classic example would be Animal classification. Not every animal has the same attributes but you can put the whole range in the table schema when in reality only a few will be used on any one row. I’m not sure how the Codd brigade will take to this!

Filtered Index: Didn’t really cover this but it seems that you can create an index that only includes data that meets a criteria. For example you could create a dog index for the animal table that would only contain data that matches the "dog" value.

Integration Services: The use of parallel execution and the inclusion of ADO.NET sources.

Tracking Changes: Oh yes this stuff could be great, but will it perform well? Two types; Change Tracking – aimed at synchronisation activities, conflict resolution, etc. Change Data Capture – aimed at replaying changes to a different database.

Merge: This looked very powerful, the ability to use one statement to merge data from one table to another. This seems to avoid the age old SQL problem of knowing if you need to insert a new row or update and existing one, with Merge you can do it all with one statement. Looks suspiciously like an XQuery to me, again the spectre of performance rises.

Voice recognition in Vista

One thing that has impressed me with Vista is the handwriting recognition, mine is truly awful but it still manages to translate my scrawl. So today I decided to test run the voice recognition. The dictating a text document is excellent, but not only is it very good at understand what I’ve said but it also understands a huge range of commands that makes it easy to maintain a document. For example, "replace that" will auto-select the word "that" and then supply you with a set of alternatives or you say the word you want to replace it. But what amazed me was when I dictated a simple letter and signed off as "John Smith". It wrote ‘John smith’. So rather then go through the replace commands I tried "capitalize smith" and it did it! Really good stuff. However, controlling Windows via voice control isn’t as easy. You have to learn to ask for things directly rather than navigate though the start menu. It’s a bit like using the Run menu, so rather than finding WordPad via the menu you simply say "Open WordPad". So it’s very easy for those things you know about or know their name, but it’s tricky when you don’t. I’m sure when you get used to it would be truly great too. So well done Vista, I take my recognition hat off to you.

Dual boot XP after Vista

I had done things in the "correct" way to have a dual boot system. I had installed XP on drive C, had a data drive (D) and installed a new drive (E) to install Vista on. Everything went well until I had a hard disk failure on C and lost XP. After a lot of effort I managed to recover the Vista drive but the Vista repair had moved the MBR onto the data drive. Having got a replacement drive back from Seagate and installed XP onto it. I used the instructions from http://www.syschat.com/dual-boot-vista-xp-vista-already-1946.html (since as this post notes the Vista repair doesn’t work after XP has destroyed the boot loader) and then http://apcmag.com/5485/dualbooting_vista_and_xp for the instruction on EasyBCD to create the dual boot menu.
 
Everything worked but I now have;
XP:
Data Drive – C
XP – D
Unknown – E
 
Vista:
Vista – C
XP – D
Data – E
 
That’s not going to be confusing is it! Already I’m getting default installers for XP trying to install to C…those naughty lazy developers!
 

XPDay London 2007

XPDay London 2007

Keynote: Embrace Uncertainty – Jeff Patton

Jeff gave a very engaging presentation explaining some of the issues created by producing an incremental process from sprint iterations. He used a number of pop-stars to illustrate the point.
Roger Waters (Pink Floyd) was product owner concentrating on the burn-down wall and how each story (or brick) was been removed from the wall (or not).

Melanie Brown (aka Scary Spice – Spice Girls) was the lead developer asking Roger to, "tell me you want, what you really want". As the iterations started, Roger could see the bricks been removed (the velocity) but also started to see shortcomings in the product. So he asked for those problems to be solved and Mel B obliged by adding those new bricks to wall. However, inevitably, the deadline loomed and the only way to ship on time would be to cut bricks from the wall, something that Roger’s sponsors will be really upset about.

Jeff then introduced us to another Roger (Daltrey) and Pete Townshend (The Who), they are interested in building a road (magic) bus. They have similar problems with cost and deadlines but they know what to do. They’ve got a set of items (stories/bricks) that make up a bus; e.g. steering, sound system, engine, drinks bar, etc. However, that list doesn’t tell it all, e.g what sort of engine should they have? The decided to construct the bus by targeting the must-haves and by only implementing the basics versions of those items.

The model is translated back to Roger and Mel, by partially implementing stories to a point where they are useful it allows resources to be spread across the waiting stories. I.e. you can produce a working product, it might not have the expected bells and whistles the Roger wanted but at least he’s got a product. Importantly it will be released and be able to start realising revenue ASAP.

Jeff summed the process up with Johnny Rotten (Sex Pistols), "I don’t know what I want, but I know how to get it"

I really enjoyed the keynote, and I could have gone home then and felt it was value for money!

Plus quote of the…year, about team work, ‘You have a hole in your side of the boat’

[edit] – other reviews…

http://adamcohenrose.blogspot.com/2007/11/xpday-2007-embrace-uncertainty-jeff.html

http://www.kerrybuckley.com/2007/11/21/xpday-7-jeff-patton-keynote-embrace-uncertainty/

 

Introduction to Agile: The Software Development Paradox – Clarke Ching

The introduction was good and re-enforced a number of points from the keynote. I really enjoyed the point about software engineering following manufacturing rather than product development, see the cake slides. To paraphrase the cake story, if you wanted to mass produce a cake would you create a recipe, create a factory, mass produce the cakes and only then taste them? Of course, not, you’d taste the cake in the product development stages where it’s much cheaper to change. I thought you could also extend the analogy further by introducing quality control in the manufacturing process but hey that probably muddies the point.

The Social Nature of Agile Teams – Elizabeth Whitworth

An interesting study in the side affects of working in a agile team. The study was on the positive affects and they all seemed to solve problems I’m keen to solve; shared knowledge, knowing what is going on (and expected to be done), reduction in "dark room" developers, etc. All good stuff.

Exceptional Ideas: How to get your message through – Lasse Koskela

A bit of odd one this, ironically I’m not sure what this had to do with Agile development. I think the idea was to be able to sell Agile to non-developers, but the concepts can be applied to anything.
Talked about DICEE;
Deep. A great product is deep.
Indulgent. A great product is a luxury.
Complete. A great product is more than a physical thing.
Elegant. A great product has an elegant user interface.
Emotive. A great product incites you to action.

and SUCCESS – so successful I’ve forgotten what it means already!

Choosing the Content of Sprint & Product Owner Backlogs – Tom Tourwe & Olivier Biot

Talked about how to choose the items and were very LEAN like. I didn’t really like this one as I got the distinct feeling that the message was much simpler than they were making it. I also think they seemed to suggest a too lean approach, e.g. they seemed to suggest things like doing a feature and then worrying about performance later. I asked them about that and they quickly said they didn’t mean that but I know a few of us in the audience felt that’s what they saying. I must say that it was good that they shared their experience but just needed to add a couple of extra points to clarify their ideas.

Agile Investment in Software: Who cares how you build it? – Chris Matts

I enjoyed this and Chris is an engaging character. He said it was going to be confrontational but actually I thought his message was exactly what I thought was Agile anyway. Chris shared his experience about using an Agile process to make business decisions about what to build and therefore decreasing the time-to-market of products. One of his key arguments was that no decision should be made without the business agreeing it. E.g. a developer shouldn’t just refactor some code, they should declare the issue and it should become yet another ‘story’ that the business can decided to implement. That was all good stuff but it went a bit downhill when it seemed to offend people’s purist view of what Agile is, what a development team is, the responsibility of IT, etc, etc. That bored me, but the rest was interesting.

Day 2

Keynote: Cheek-to-cheek: why co-located collaboration persists – Yvonne Rogers

An interesting talk about how important it is to be in the same building as your colleagues and the hurdles of some communication devices (e.g. whiteboard, shared monitor, etc) where people can become frustrated waiting for their turn. Unfortunately that’s a 5 min talk drawn out for 60 mins. Not for me this one.

A Technical Story – Alex Vandenberg

A talk about how technical stories muddy the waters and really any useful technical story should be put in terms of a user story. I don’t think this is a surprise but again it re-enforces this sharing of to-do lists with the *whole* team rather than just the developers.

In the non-functional design space no-one can hear you scream – Sallyann Freudenberg

This was a gold-fish bowl workshop about how to take non-functional ‘requirements’ into account. When asked, "does anyone not understand the difference" I stood up. It’s not that I don’t know what they are but I don’t understand how anyone thinks of them as different. To develop a feature without considering things like the performance, how will it be deployed, what kit are we aiming to use, etc, is beyond me. Sure someone has to decided those things and consult with the customer but that’s part and parcel of any development isn’t? I liked and agreed with what some people said but was dismayed at others. Quotes such as, "it’s difficult because it’s not taught in computer education" just annoyed me. Talk about being spoon-fed, especially when the self same people were complaining about the quality of some developers – hmm.

Business is having to change faster to respond to its customers – how can the Agile community help? – David Stoughton

This talk described the need for business to get to market as soon as possible. For me this highlighted again that "Agile" is a concept before it is a software process. The talk also described how customers know more, the power of a brand and other important market points.

Fiat Lux: Testing with the light on – Joan McGallard, George Joseph & Pushpa Sebastian

A good talk about their experiences in creating automated acceptance testing. I did like their ‘active document‘ where the tests were written in English, via HTML, where the values were decorated with classes that were used to automate a test.

The Secret backlog – behind every bug report is a user story – Antony Marcano

Antony discussed how with a bit of creative re-writing a bug report can be turned into a user story. Subtle wording can be used to show where the story came from, e.g. "Instead of <behavior>" would imply a discovered problem. This is quite nice as it increases the visibility of the to-do list and it puts a more positive spin on the issue. It also allows more people to make a decision on whether the issue should be fixed as it is now in the standard iterative processes. He also said that with this you may want to abandon traditional bug tracking systems and go straight to creating the stories. One point that I found very interested was that the tester created an acceptance test for every bug found.

A year with a Pocket PC

I’ve now spent a year with my Windows Mobile 5, Pocket Loox n560, so how has it been?

To give a decent account of the year I need to consider the hardware (Loox n560) and the software, obviously they come together but both have the pro’s and con’s. Also I thought that rather than go into some magazine style review I thought I’d say what I wanted it to do and if it managed it, so here goes…

Personal Assistant – calendar, meetings, contacts, etc
Both the device and the WM5 were good here. Creating the sync’ with my work’s Exchange had a few annoying problems they seem to be common with the majority of WM5 tasks. WM5 just isn’t very helpful. As a developer I’ve had to rely on a number of educated guesses to get things working. E.g. I couldn’t sync’ with Exchange until I removed the device from it’s cradle, why? Well I’m guessing that in the cradle it was sync’ed to my PC and couldn’t locate Exchange via the cradle, however once removed it used it’s WiFi connection and found Exchange.
Adv:
Track all those important meetings and contacts, great for when you’re stuck in a traffic jam wondering if you’re going to miss a meeting!
Cons:
For some reason I just can’t Task’s to sync
Clumsy configuration process

GPS/SatNav
A friend launched a GPS Walk site and I was keen to add the stored walks. So a mobile GPS unit seemed the idea choice. After installed the .net framework and the GPSWalk software I again hit the WM5 unhelpful configuration. After a lot of guess work and  searching development forums I finally managed to get GPSWalk to work. The problem was a combination of hardware and WM5 historical issues. The Loox allows you to specify the COM port to use for GPS but that’s a pre-WM5 virtual GPS layer technique. Essentially if your software doesn’t use the GPS layer then you have to specify your port, if it does use the newer layer then you must *not* specify the port. Again absolutely no help from WM5.
Adv.
Good, mobile, GPS device
Works with a number of GPS applications
Cons.
Sucks on the batteries

Car SatNav – Traffic Avoidance
Before buying the Loox I read a number of reviews about TMC where the SatNav can direct you around traffic jams before you meet them, excellent. I bought Navigon 5 from ebay and a TMC module for the car. After a brief struggle getting Navigon to find the GPS (see above) I couldn’t find the TMC module. Turns out to be a problem with Navigon and I needed to buy a newer version from ebay. I finally got that, from someone with a n560 that couldn’t get it to work <oops>, and both GPS and TMC worked. However, the TMC module only ever finds a TMC single when the car is parked. As soon as I move it loses the signal, so the only time it knows about jams is when I’m stuck in one!
Adv.
Very good and clear instructions from Navigon 5, much better than others I’ve seen.
Cons.
TMC just doesn’t work as advertised

.Net Development
Choosing a WM5 device meant that I can write software for it. It’s been very easy to do, I’ve written a couple of utilities and the publishing and debugging have worked very well with Visual Studio.
Adv.
Easy to develop, same skill set
Cons.
None so far

Network Music Player/ Media controller
I have the typical issue of having a large amount of my music connection held on a PC sitting upstairs and I want to play tracks through my HiFi downstairs. With a bit of research and through the use of PocketMusic and NetUse I can stream music over WiFi via the Loox, into my Hifi. Not only that but the Loox is essentially a remote control too, since I can see all the usual playlist information.
Adv:
Stream music
Cons:
Can take a fair amount of time to initialise the playlist as it seems to check every time you connect. So much so that I’m looking at other solutions.

Casual Web Browsing
This is the ace for me, "what else has that actor been in", is a not uncommon question in my household. So rather than boot a machine up the Loox is on IMDB in a flash.
Adv:
Quick to browse the web, excellent resolution from the Loox. Good at playing short webcasts.
Cons:
Pocket IE can make a mess of some sites, sites fault or IE, hmm – mostly IE I think.
WiFi connection is just plain odd, at home it always works but connecting to other public sites is more miss than hit.

General Note taking
I hate taking notes on forests of paper to simply type them up later. The Loox allows me to take notes and sync’ them with a PC later.
Adv.
Easy to carry note taker
Cons.
The input method isn’t great. The Ink implementation is very poor compared to the excellent version in Vista, a real shame. Essentially I take notes and correct them later, "x is not cc" – one day I’ll get that working.

Summary
Overall it’s been a fairly good experience, although I cannot recommend it for use by a non-IT literate person. The lack of help for a modern device is truly appalling. The fact that I’m scared to change settings is very telling, and the failure to connect to other WiFi spots is very annoying.

Using OneClick installed applications in Visual Studio

One of my colleagues "recently" converted a win exe tool I use from Visual Studio to be a OneClick install application. This is great since I get the latest version whenever I run the exe. However, when you add an external tool to Visual Studio you only get the choice of a very limited number of extensions. The problem is that OneClick applications are installed using an application link rather than an exe, that’s hidden away from view. To solve this problem I simply created a batch/command file that launches the link, and then added the batch file as the external tool, job done.