Trade Me Gadget Launched
If you are a keen Trade Me seller and a Windows Vista user take a trip over to Rowan’s blog to get the inside word.
If you are a keen Trade Me seller and a Windows Vista user take a trip over to Rowan’s blog to get the inside word.
Thanks to all who attended my session on BAM last weekend.
You can find the presentation and demo source code here. Note that I did not get the WCF Interception running so the XML file for that is not included – I'll discuss that in a follow up post in the next week or two.
To run the demo artifacts you'll need BizTalk Server 2006 R2 Beta 2, .NET 3.0 installed and Excel 2007 installed.
While preparing one of my presentations for the upcoming Sharepoint Conference I came
across this funny article.
Talks about the principles of poor UI Design (I thought I could be asleep here…so
I decided to read 2 words and not to risk me being in a winter hibernation slumber).
I admit I had a good laugh at this – so I’ll share. (my favourite is #6)
http://www.sapdesignguild.org/community/design/golden_rules.asp
by Gerd Waloszek, Product Design Center, SAP AG – Last Update: 02/27/2007
The SAP Design Guild Website is full of guidelines and tips for good user interface
design, and it’s not the only one on the Web. Nevertheless, we see examples of bad
user interface design everywhere – many more than users would like to see. As people
like to do just the opposite of what one is proposing, we thought that it might be
a good idea to promote bad user interface design. Therefore, we collected “Golden
Rules for Bad User Interfaces” on this page – please help yourself (and do the opposite).
We started this page with ten rules and are continually expanding our collection.
Note: The rules are listed in backward order – the most recently added rules
come first. In all other respects, the order of the rules is arbitrary and does not
reflect their significance.
Reasoning: Making processes that put the computer into agony more or less uninterruptible
ensures that users take their mandatory coffee breaks.
Example: Start a backup or indexing process while users are not aware of it.
Make this process hard to cancel, that is, let it ignore the users’ mouse clicks and
key presses.
Reasoning: Additional functionality would provide users with too many choices
and might confuse them.
Example: When users want to add items to a list, allow them to add items at
the end of the list only and let them then move the items to the correct position.
That is, do not offer additional functionality for inserting items at their target
locations. To add some spice, introduce spurious errors that return items to the bottom
when users have already moved them half-way up.
Example: Do not offer the option of selecting multiple items, for example,
for moving or deleting items. The option of working on one single item suffices to
let users achieve their goals – apart from that it may take a little bit longer…
Example: After inserting a set of new items (for example, by command,
drag-and-drop or copy-and-paste) don’t show them as selected. This would help users
to recognize where in the list the items were sorted in. To detect the items that
were just inserted will consume quite some time, besides the pure recall of which
items were inserted. (Contributed by Oliver Keim, SAP AG)
Reasoning: Destroying the work context allows users to reflect their work and
ask themselves whether it really makes sense.
Example: Deselect selected screen elements after a system reaction (e.g. a
round trip).
Example: Move HTML pages or tables that have been scrolled down by the user
to the top after a system reaction (e.g. a round trip); in the case of multiple pages
(e.g. in hit lists or document list) return the user to the first page.
Reasoning: Bad defaults are a nice way to surprise users, be it immediately
or – at best, unexpectedly – anytime.
Example: Set default options in Web forms so that users get unwanted newsletters
or offers, have their addresses distributed, etc.
Example: Set the default option in dialog boxes on the most dangerous option,
for example, on deleting a file or format the hard drive.
Example: In forms, set dates (or other data) on useless default values. For
example, set the date for applying for a vacation on the current day.
Reasoning: Examples are a perfect teaching method. But as we all know, bad
examples are the best – they allure most.
Example: Just follow any of the other golden rules on this page, that’s a perfect
start.
Example: If you have to make presentations make sure that you include your
bad examples in the presentations.
Note: Good examples are hard to find and typically criticized until nobody
appreciates them anymore. Why waste time with unproductive discussions?
Reasoning: You are the expert and know what users need – because you know
what you need. Why should they need something else?
Example: If you think that a certain functionality is not needed don’t implement
it – why should other people need it?
Example: Many end users have many opinions, you have one. That’s far easier
and faster to implement.
Note: Doing without site visits saves your company a lot of time and money.
Reasoning: This teaches people to take more risks, which is important particularly
in economically harder times.
Example: Do not offer an Undo function.
Example: Do not warn users if actions can have severe consequences.
Note: If you want to top this and make using your application like playing
Russian roulette, change the names of important functions, such as Save and Delete,
temporarily from time to time…
Reason 1: This will make your application completely inaccessible to visually
impaired users. Therefore, you can leave out all the other accessibility stuff as
well. That will save you a lot of development time.
Reason 2: This will drive many experts crazy who used to accelerate their work
with keyboard shortcuts. Now, they will have more empathy for beginners because they
are thrown back to their speed.
Reasoning: This strategy stimulates users to explore your application and learn
a lot about it.
Example: Place buttons for important functions off-screen so that users have
to scroll in order to access them.
Example: Hide important functions in menus where users would never expect them.
Reasoning: Lifelong learning is hip. As many of us spend a lot of their time
at the computer, it’s the ideal stage for learning. Moreover, sociologists bemoan
that people’s vocabulary is more and more reducing. Applications with a challenging
vocabulary can go against this trend.
Example: Always send URLs as UTF-8 (requires restart) (advanced settings in
MS Internet Explorer)
Reasoning: Abbreviations make an application look more professional, particularly
if you create abbreviations that are new or replace commonly used ones.
Example: Use abbreviations for field labels, column headings, button texts
even if space restrictions do not require this.
Examples: Use “dat.” instead of “date,” “TolKy” instead of “Tolerance Key,”
“NxOb” instead of “Next Object,” and many more…
Example: There are nearly unlimited possibilities of making software slow.
For example, you can include long lasting checks or roundtrips after each user input.
Or you can force users through long chains of dialog boxes.
Example: Do not use standard screen elements for a given purpose, such as single
selection (e.g. use checkboxes instead of radiobuttons because they look nicer).
Example: Do not place menu items into the categories and locations they typically
belong to (e.g. place “Save” in the “Edit Menu”).

Example: It’s a “good” habit to let users enter data that the system already
knows and could provide beforehand.
Example: Let users enter data into fields only to tell them afterwards that
they cannot enter data there (e.g. an application lets you enter data on holidays
or weekends and tells you afterwards that you cannot work on those days).
My friends on the VS DBPro team have just released a public CTP (community technology preview) of their first service release and you can download it here! I've been fortunate enough to have been using this service release for the past two months and it's a rock solid CTP that everyone using VS DBPro (DataDude) should install and try out.
Gert Drapers, the teams architect has a great post describing the service release as well as links to the release notes and docs.
My friends on the VS DBPro team have just released a public CTP (community technology preview) of their first service release and you can download it here! I've been fortunate enough to have been using this service release for the past two months and it's a rock solid CTP that everyone using VS DBPro (DataDude) should install and try out.
Gert Drapers, the teams architect has a great post describing the service release as well as links to the release notes and docs.
John put together this nice little 13 min. video that gives you an overview of how to get started developing for Windows Mobile 6. The video covers: What is Windows Mobile 6 Platform Editions Compatability Tools needed Emulators and Security Demo C++…(read more)
I got some interesting comments on my recent post about the differences between the MSMQ and WCF-NetMSMQ BizTalk Server adapters from a developer perspective. As I explained in that post, one of the main reasons for choosing WCF-NetMSMQ adapter over the…(read more)
Recently while analysing a large (>15GB) tracking database on a BTS2004 install, my trusty friend HAT was coughing and spluttering – and moaning about timeouts.
Here’s how to increase the timeout value :
(from a MSDN arcticle)
In Registry Editor, locate and then click the following
subkey:
To create a Tracking subkey, on the Edit menu,
point to New, and then click Key.
Locate and then click the following subkey:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Server\3.0\Tracking
*** NOTE: the timeout value I’ve noticed only works with a value up to 30000. Any
higher causes this value to be igorned. (From what I’ve noticed) ****
The way forward is streamlining! Here is a blog article from the ECM team reducing the load time of the approx. 450KB core.js file, by loading it in the background.
http://blogs.msdn.com/ecm/archive/2007/02/21/building-a-new-page-layout-which-does-not-reference-core-js-but-downloads-it-while-the-page-is-being-viewed-thereby-optimizing-response-time.aspx
This also brings me to another point – if you look at the Microsoft.com site. This
is driven out of MOSS/WCM or at least the top umbrella pages are.
In terms of a public internet facing readonly MOSS/WCM publishing site – nearly all
the interactive functionality is not needed. E.g. lists, drop down floating menus
for items within lists (ECB Blocks), etc etc etc (site actions menu)…….
A large portion of the client side functionality to all these features is provided
by core.js. Of which MS here on there pages has done some extensive Master
Page modifications as……..there’s not a core.js to be seen………crop
circles…….floating
cars in Perth……what next…..?
Just a quick note to say that Kevin has a beta release of BizUnit 2.3 on http://www.codeplex.com/bizunit. I had a look at the alpha version earlier and i must say that it looks pretty good. Theres a bunch of additions to the BizUnit() and Context() classes including the ability to pass a Stream to the BizUnit constructor which looks like a nice way to break the dependency on the raw XML. We now have the chance to use the Context in more depth including setting up property values into the Context and passing that into the BizUnit constructor.
I’ve queried about the documentation and whether CHMs will continue to be the only sources there. If so, then i plan to write more articles in the BizUnitExtensions project to cover the new stuff.
I havent had a chance to test extensions against this release, but there is definitely a breaking change in that the Context HasKey() and Change() methods that are used by some extension steps are not available anymore, but the good news is that the ContextManipulator step appears to work, so i guess i can change the code in the appropriate steps to use this step instead of Context Change, or i can move the context change and haskey() into the extension steps. Lets see how it turns out. I should be able to re-release an updated version of extensions as soon as 2.3 is complete.
Anyway, grab your copy of the latest BizUnit and test it out and post your feedback on the codeplex site. Enjoy…