Recent posts

Printing a Compiled Help File (.CHM)

Many SDKs ship with a huge .CHM file that includes the documentation and often a class library reference. Also, many books are available as .CHM files as well. But since I prefer to read those books off-line, I often try to print out topics. Since the introduction of Internet Explorer 7, this has become quite problematic. IE has a new Shrink-to-Fit setting that is enabled by default. Due to that, printing a .CHM often results in an unreadable small font. Using IE's Print Preview option you can choose the exact scaling settings, but unfortunately, this setting is not available from the Html Help Viewer. To work around this limitation do the following:

  1. Open up the CHM file in the Html Help viewer
  2. Select the topic you want to print and choose Print... from the context menu
  3. From the dialog box, select Print the Selected Heading and all Topics.
  4. Wait for the Print dialog to appear. Now look behind that dialog for another window called HTML Help. The help viewer basically renders all those topics into one big .htm for printing.
  5. Select Properties from that window's context menu and copy the URL pointing at a local .htm file. DO NOT CLOSE THE HTML HELP WINDOW.
  6. Now open up that URL in a new IE window.
  7. Choose Print Preview and change the scaling setting to whatever suits you and print...

Published: 24-02-2007 by Dennis Doomen | 0 Comments | 0 Links to this post
 

Virtual PC 2007 available for free

I have been using Virtual PC 2007 since its first beta. Well, not voluntarily though, but simply because the 2004 version did not run properly on Windows Vista. Nevertheless, it has run like a charm since the very beginning. I've been using it to still do some leftover developments in Visual Studio 2003 on my laptop. No crashes, no strange lock-ups, no nothing. Well, yesterday, Microsoft finally released version 1.0. And the best thing of it all? It's free! Apparently, Microsoft is trying to gain some market space from its competitors.


Published: 21-02-2007 by Dennis Doomen | 0 Comments | 0 Links to this post
 

BizTalk Pipeline deployment

As promised a followup on the deployment problems that result from using pipelines in your project. The situation is simple and frustrating: The moment you introduce a send port and set it up to use any pipeline as part of your project, straightforward redeployment from Visual Studio becomes impossible.
You will only be able to redeploy again when you:
  • Remove ports with references to pipelines in the application.
  • Do a full stop of the application, i.e. unenlist all ports and orchestrations.
  • Go to the resources section of your application and remove the dll of your application that holds your application manually.
Now you can redeploy your application. You could export the bindings first, to make sure that you can restore the bindings again after redeploying. You will probably agree with me: Deployment should not be this difficult.
Next experiment: Put the pipelines in a separate project. Magic! Now you can deploy your project with a port containing a pipeline again from Visual Studio. This is actually a recommendation you can find in other blogspots. Simple conclusion: put all item types (schemas, maps, orchestrations, pipelines) of your application in separate projects, to avoid deployment dependency problems.
 

Published: 20-02-2007 by Wim The | 0 Comments | 0 Links to this post
 

Team Foundation Server setup experiences...

During the last couple of days, I've been busy completing an installation of Team Foundation Server on a fresh Windows 2003 Enterprise Edition install and make it accessible through the internet. While doing so, I ran into a few challanges for which I though they might be useful to remember the next time you try something similar. 

  • Before you start doing anything, make sure you download the most recent versions of the installation and the administration guides!
  • While going through the pages and pages of the installation guide, you'll eventually end up at the SQL Server 2005 setup wizard. I have already installed SQL Server a few times in my life, but I never bothered digging in the mysteries behind those collation settings. Unfortunately, accepting the default settings did not make TFS very happy. After searching through several articles and newsgroup discussions, I finally discovered that choosing Latin1_General with Accent Sensitive is the best option.
  • After installing Service Pack 1, I started receiving TD30059 errors while connecting to the TFS server. Fortunately, ThinkTecture's Neno Loje already discovered this little flaw in the sp1 installation and found a solution
  • A very well known issue when accessing TFS from outside the domain realm, is that the Documents and Reports appear in the Team Explorer with a red cross. Usually this is caused by the fact that the corresponding URLs include the NETBIOS name of the server instead of the fully qualified domain name. You can fix that using the following article.
  • By default, TFS uses port 80 (or 443 if you use SSL) for the Windows Sharepoint Services website and the SQL Server Reporting Services, and it uses port 8080 (8081) for the TFS web services. Although we do want to allow access to our TFS server from the Internet, we prefer not to open up port 8080 or 8081. So with the help of this article and the administration guide, I've tried to assign two different DNS names both using port 80. However, whatever I tried, I could not get that scenario to work. I've been Googling my ..ss off, but none helped me with that problem. Officially, Microsoft does not support this scenario until the next installment of TFS (part of codename "Orcas").
  • One of the pains of administering a TFS installation is that adding/removing groups and users involves making subtle changes to TFS, Windows Sharepoint Services and SQL Reporting Services. Some of that pain can be resolved with cleverly chosen AD groups, but nothing can compare with the ease introduced by the newest Visual Studio PowerToy: the TFS Administration Tool. Simple assign a TFS role to a (newly added) user and changes are applied to all three platforms. The only requirements is that the system from which you are making changes is part of the same domain as the TFS installation.
  • In pre-service pack 1 versions of TFS, the only way to allow access to your TFS installation from the internet is to allow Windows Authentication through your firewall. Since sp1, TFS also supports basic and digest authentication. Well, basic authentication combined with SSL works like a charm! Check the latest version of the administration guide to find out how to get things configured correctly.

Published: 15-02-2007 by Dennis Doomen | 0 Comments | 0 Links to this post
 

User Interface Design, reinventing the wheel

It is easy to get lost in designing the user interface of your next great application. Let’s assume that your user interface will probably be a graphical user interface. Now, it is easy to confuse your user with something that is unlike anything else he or she has ever seen. Yet, Microsoft doesn't seem to be scared by reinventing the face of its flagship Office Suite. So where is the right path to a good user interface?

Maybe this helps:

  • Steal the best ideas of competing or similar established products. As long as you don't intend to do an extensive Usability Test (like Microsoft) you are best off presenting something that is familiar to your users.
  • Rate your users along the following axes:
a.  Experienced user or novice?
b.  Regular or occasional user?
 

Experienced users can handle even a command prompt, novices need all the help they can get. How about a wizard or two? When you use a program every day you'll problably get to be familiar with the program anyway. A novice will just keep repeating stuff that works. An experienced user might invent new ways to do things faster or better. Does your program cater for this?

  • The mother of all graphical user interface designers is Common User Access (CUA). Get to know her, or you are doomed spending time on endless debates with questions like: "What to put in the caption of a popup dialog?" (Answer: the command that issued the dialog).
  • But shouldn't there be a completely different set of design rules for web applications? Yes and no, most rules will still apply and your browser will probably follow the CUA guidelines anyway. The only thing to take into account is that the browser is probably less interactive than a pure graphical client (unless you use lots of script/Ajax).
  • Won’t any new Windows version or WPF and Vista define a new set of user interface components and rules? Yes it does, but mostly it is CUA again. Just make sure that you also read the added rules.
  • A graphical user interface should also be interactive. Any click must have a response within 2 seconds, or the user will click again. Waiting for more than 10 seconds? T..h..a..t…’s…t…..o…o…l….o….n…g. Either entertain your user with some kind of progress meter and/or let the user get on with his or her work.
  • Your eye will be drawn to the lightest spot on the screen, or the spot with the most contrast. A black page with a large white box for writing some lines with comments? This box should then be the most important part of your dialog with the user.
  • The Angry Fruit Salad in your bowl? Be careful with color. Remember that 10% of all male users have a problem seeing all colors correctly. Red for danger, yellow for a warning, green is ok? Yes, these are internationally accepted signals, but stop there. People are good at recognizing icons not at color decoding. 
  • Don’t forget the accessibility guidelines if you expect the whole world to use your application.

Please comment if you have any other good tips, or find fault with one of the above.


Published: 15-02-2007 by Wim The | 0 Comments | 0 Links to this post
 

XNA is ready to roar/squeek

Just installed Visual Studio Game Studio Express 1.0 on a specially configured spare PC. Yes, Xbox 360 does .NET. Now I am betting on my little daughter (8 years) having some inspiration for a fun platformer...

Published: 15-02-2007 by Wim The | 0 Comments | 0 Links to this post
 

Developer vs. BizTalk 2 - 1

Ok, so developing solutions in BizTalk is like building a dinosaur from Lego. You start out with the smallest blocks and try to make something big: lots of work. In the office work is in progress on the Aviva MOSS 2007 Portal and Blog sites. Most of the work is pushing pixels around in CSS files. My BizTalk 2006 project is very similar, drawing lines on maps. Very tedious, but someone has to do it. Just make sure it’s not me next time.

Most of the work for BizTalk is very straightforward, once you get the hang of it. That is 1 - 0 for the developer.  Then there is the dreaded “Failed to update binding information”, a.k.a. deployment errors, big time. Somehow, after redeploying several times, BizTalk chokes and gives up on redeployment. Restarting the computer is the only solution and after that there is another half day of productive work, before running into the same problem again. However, today things got worse. I added a pipeline to a project to support the “Flat File Assembler” pipeline component. Presto! No redeployment for me anymore. BizTalk was ready for the pounce: 1 – 1.

There was still a way to get around redeployment, remove the old application and rebuild all bindings. That’s when you appreciate the “Export bindings” option of BizTalk. When I started my project I put all of the stuff in a single project and a single BizTalk application. My mentor Randal quickly pointed out that it is a better idea to split up parts of the solution into smaller projects from the start. At first I still kept all projects in the same application. To tackle the deployment problem a logical thought was to put everything in different applications. Once I got the hang of passing all references to different applications, everything was up and running again.

At the first redeployment it started all over again: “Failed to update binding information”. Now things were worse. Visual Studio even produces more warnings, because it wants to warn you for all cross references. This, on top of all mapping warnings is annoying. Redeployment turned into reference spaghetti, but that is when I pounced. I checked the “Resources” sections of all applications, and removed the latest added pipeline: 2 – 1.

To conclude and summarize, my best guesses to tackle redeployment problems:

  • Delay your first deployment until the last moment. Try testing your schemas and mappings in the development environment while you can.
  • Version all parts of all projects in your solution. Put the versioning also in the namespaces.
  • Make sure that all target namespaces are unique. Duplicates are introduced when you copy and rename a schema and forget the target namespace rename.
  • Check all application’s “Resources” sections. It is all too easy to have an assembly from your project to end up in the common “BizTalk Application 1” application, instead of a preset Application.
  • BizTalk doesn't seem to like more than one level of referencing between applications. At least when you look at deployment issues.
  • An empty pipeline with a Flat File Assembler immediately gives you deployment problems. I will investigate this...

Hope this helps!


Published: 15-02-2007 by Wim The | 0 Comments | 0 Links to this post
 

BizTalk welcomes careful drivers

Making connections to back-office and front-office servers and services has always been part of my job as a software architect of several administrative web applications. Writing a .NET service and agreeing on some FTP, mail or other transport goes a long way, but there is an end to it all: BizTalk. The moment I got the chance to start using BizTalk as part of a company moving to Microsoft Dynamics Crm and planning a major overhaul of existing interconnects I jumped in.

First it was agreed that I would find training in BizTalk 2006, however, it turned out to be impossible enroll on short notice without having to travel too far. As a professional there is no better challenge than diving in and try to make the best of it in the good company of a 500+ page book. Unfortunately, at the moment there happens to be no such book. On the other side I have an experienced and trained BizTalk Aviva colleague, Randal. He takes the lead decisions and is my sparring partner on the job. Last week he mentioned that at this point I would probably learn nothing from any current BizTalk 2006 training, so now I can call myself a BizTalk 2006 literate.

This doesn’t mean that I am completely in tune and this will be a place to share my happy and unhappy BizTalk 2006 moments with you.


Published: 15-02-2007 by Wim The | 0 Comments | 0 Links to this post
 

CSS Reference Chart for SharePoint 2007

During the last couple of days, I've been trying to customize this MOSS 2007 blog site to match the Aviva Solutions look-and-feel. Since I'm more a Windows developer, these CSS styles are causing me a pain in the ass. Fortunately, the Internet Explorer Developer Toolbar really helps to figure out what particular CSS class is effecting which part of your site. And if you then add Heather Solomon's excellent CSS Reference Chart for Sharepoint 2007, a web developer's life gets better and better.


Published: 15-02-2007 by Dennis Doomen | 0 Comments | 0 Links to this post
 

About maintainable code

As a coding standard evangelist, I've published standards for C# 1.0 and C# 2.0 while working for my former employers. Moreover, I'm also somebody who tries to apply and share good design guidelines and principles. As part of that interest, obviously, I've read many books and articles on that subject. A former colleague of mine, ran into two great articles written by Jeremy D. Miller which I could not resist sharing with you. The first one, On Maintainable Code, shows some real-world examples on the subtle issues around this. The other one, Orthogonal Code, focuses on some very essential design principles that everybody should use at all times.


Published: 15-02-2007 by Dennis Doomen | 0 Comments | 0 Links to this post
 
 Next >>