Thursday, May 29, 2008

How to get the best? (Quote)

"You only get the best by refusing the rest..."

For me, this is how I have always tried to live my life, I guess as from my twenties...

Good luck persuing!

Monday, May 26, 2008

Microsoft Posters (Biztalk, Visual Studio, DotNet)

Did you know that there are several excellent posters you can download from the Microsoft website? There are posters on many major topics including DotNet, Biztalk, Silverlight and Visual Studio.

Go check them out and download them here.

Below, as a preview, a list of the most populair posters.


Security & Reliability Co-Partner Marketing Poster 1
This contains marketing material which can be used by Microsoft Partners in the Microsoft Security and Reliability campaign. This download contains Poster 1.

BizTalk Server 2006 Capabilities
Lists BizTalk Server 2006 capabilities

BizTalk Server 2006 Runtime Architecture
Illustration of the modules and components of BizTalk Server 2006.

PnP Overview Poster pdf
PnP Overview Poster pdf

Security & Reliability Co-Partner Marketing Poster 2
This contains marketing material which can be used by Microsoft Partners in the Microsoft Security and Reliability campaign. This download contains Poster 2.

Microsoft® Silverlight™ 1.1 Developer Reference Poster
Microsoft® Silverlight™ 1.1 Developer Reference Poster

Smart Client Poster pdf
Smart Client Poster pdf

BizTalk Server 2006 R2 Scale-Out Configurations
This poster illustrates typical scale-out configurations and options.

Visual C++ 2008 Keybinding Poster
List of keybidings for Visual C++ language within Visual Studio and Visual C++ Express 2008

BizTalk Server 2006 R2 Database Infrastructure Poster
This poster depicts BizTalk Server databases and associated components, jobs, services, UI, and events.

2007 Office System Document: Open XML Developer Map
Download this poster to learn more about Open XML File Formats.

Visual C++ 2005 Keyboard Shortcut Reference Poster
This poster contains the default keybindings for Visual C++ 2005, and is available as a PDF download in either color or grayscale for you to print.

BizTalk Server 2006 R2 Poster
This poster lists the BizTalk Server 2006 R2 capabilities.

BAM Poster for Microsoft BizTalk Server 2006 R2
The BAM poster for BizTalk Server 2006 R2 enables both new and experienced users to better understand the concepts, processes, and management of BAM.

TechNet Magazine Active Directory Component Jigsaw Poster
Active Directory Component Jigsaw poster, originally printed in the March-April 2006 issue of TechNet Magazine.

BizTalk Server 2006 R2 Runtime Architecture Poster
This poster provides a detailed illustration of the modules and components that make up the BizTalk Server 2006 R2 runtime architecture. It shows typical message flow and data flow that occurs between these components at run time.

Windows Server 2008 Component Posters
Windows Server 2008 Component Posters, originally printed in the July 2007 issue of TechNet Magazine.

NET Namespaces Poster
The .NET Framework 3.5 Common Namespaces and Types Poster

Visual Basic 2008 Keybinding Poster
Printable wall poster containing list of useful keyboard shortcuts for Visual Basic 2008 developers

2007 Office System: Developer Posters
Download these posters to learn more about the new features and enhancement to the 2007 Microsoft Office System.

Tuesday, May 20, 2008

Windows Updates Downloader (Windows)

If you love control and simplicity just like me then you will like the Windows Updates Downloader.


With Windows Updates Downloader, Windows Updates have never been easier to download. With the simple interface that Windows Updates Downloader provides, you can quickly and efficiently download all of the Windows Updates for your version of Windows in your language. You can then either install the updates, slipstream them to an existing Windows source, use them for network installations or on computer who are not connected to the internet. You can even collect them to store them for achival purposes.

Source: http://wud.jcarle.com/


Happy Downloading!

Sunday, May 18, 2008

Defensive Programming (Spec#, DotNet)

Do you apply Defensive Progamming techniques?

Based on my experience, changes are good that you are not.
If so you may be missing out on many benefits such as:
  • Producing easier to use, understand, and maintain class-libraries;
  • Havinging applications that are much easier to support and test;
  • And last but not least, having more secure code.
In other words: defensive programming makes your solutions more easy from many viewpoints. Which, to me, in itself is a goal.


So what is this defensing technique about?

Defensing is a concept that has many aspects to it (see WikiPedia here) but in this article I will focus on the ensuring that the so called "pre-conditions" are met instead of assuming they will be met.

I am sure you know what I am talking about we have to deal with this every day all of the time! Just think about all those function parameters that might have an invalid value when that function is being called. That integer parameter* that should not be zero or negative or that object-reference parameter that just should not be null for example. With defensing you always check those pre-conditions first and immediately throw an exception if one of them is not met.

In any application there are thousands of those "pre-conditions" that could and should be checked. Sure that sounds like lot but in fact when you do it from the start it is hardly any extra work and you start enjoying the benefits almost immediately returns your small investment . And with the help of a small (existing) library the equation is even more interesting! Let me explain what I mean:
  • For anybody, including yourself after a while, maintaining your code it is immediately crystal clear what your function cannot do or handle! In many cases there is no need to test if this new situation is supported, anymore;
  • If one of your methods is called with an invalid value a clear exception is thrown immediately. No more “Null Reference Exceptions”, for example, deeper in your library that are all too hard to trace! Which is only possible by developers nothing to do for the support department, over and over again.
  • Many security issues originate from an unforeseen use of an application or library. By making sure that all your, assumed ,preconditions are checked it becomes much less likely to have your methods begin misused.

Should I really use this? It sound like a lot of work!

Sure it sounds like it, but when you do this right this is certainly one of those so called "Low Hanging Fruits". Quick wins with huge benefits. If you would ask me just do it! Apply from the start of a new project or add when changing a function that already exists. A good programmer is a lazy programmer so make defensing more easy for yourself using Macro's, Tooling and a small library of perhaps extention methods!?


Oke, I am convinced! What do I need to do to start defensing, Today?

One of the first things we need to do is have a library that helps us easily check parameter values and throw the appropriate clear exceptions. You basically have three options here:

  • One option is of course to write your own; This has the benefit that the exceptions that you fully control the messages and types of exceptions that are thrown;
  • Another option is to use the assertion classes from any Unit Tests framework. The, architectural, downside to this is that you are using Unit Test classes and libraries in a production environment. Conceptually this is not wrong but as far as I know there are no practical downsides.
  • The last, certainly not the least, option is to use the upcoming, but already available, Spec# framework from the Microsoft Research department. Which has the huge benefit of having a framework specifically for this use on one side which comes with integrated Visual Studio support as well!

Spec# sounds really interesting! Where can I find more?

I will soon write an introductionairy article about this, so stay tuned!


How do you look at Defensing from an architectural point of view?

Architecture is about how things relate and about meeting stakeholder stakes:

  • The library classes that help to make your defensing easy should be part of your Core;
  • The information about the valid and invalid use of your methods should be part of your technical (generated) documentation. This is something, spec# nor sandcastle or nDoc, does not yet take into account but possibly could.
  • Defensing makes your class-libraries more easy to use, to maintain, to support and more secure. This is someting that should be in the interest of every stakeholder but in particular to the CTO and ICT (support)Managers.

We have been talking about defensing, but can’t I just see what it looks like?


Sure thing! To wrap things up I have included some examples below using my own practical little defensing framework. After all, we should not talk too much about coding, coding is something that you “just” should do!

public void example1(object parameter)

{
Defence.Object.MustNotBeNull(parameter);

}

protected void example2(object valueToAdd)
{
Defence.Boolean.ShouldBeFalse(_collection.IsReadOnly );

}

Does not look difficult does it? I told you so! The best things in live are the simple things...

Happy Defensing!

----

*) I know we might use an Unsigned Integer here, but this is not CLS-Complient thus in many not recommended to be used.

Saturday, May 17, 2008

Remote Desktop Management Heaven

Are you an contracter working for different companies like me?
Or, do you have an heterogeneous environment to work with?

Then "Terminals" might be the application you have been waiting for!

"Terminals" allows to manage all your remote desktop connections. No matter if they are RDP, VNC, VMRC, RAS, Telnet, SSH or Citrix and moreover with all the options you can dream of.

Its open source thus free! And you can find it on codeplex here.

Other features include :

1. Ability to import files such as MuRD and RDP files.
2. Tagging connections (grouping)
3. Shortcuts (to external tools) and Favorites
4. Some toolbar customization
5. Full Screen mode, multiple screen sizes and color depths supported
6. Minimize to tray
7. Single application instance
8. Execute before connect
9. Completely secure password storage
10. Screen capture of entire terminal window

Happy Managing!

Wednesday, May 14, 2008

My Architectural debate on attributes (DotNet)

I really like the concepts of object orientation. Still, the longer I work with it the more and deeper my appreciation gets.

But lately, I have this tug that just won't go away. Something that is bothering me more and more. Something that just doesn't feel right. It is where Microsoft is going with the usage of attributes in the DotNet Framework.

Isn't "seperation of concerns" one of the main concepts of object orientation? Isn't one of the nice things of this that an object is or at least should be unaware of how it is used?

So why is it than that I have to add more and more attributes to my classes just to be able to use them? You must know what I am talking about. Just think about the "Serializable"-attribute. I don't change anything to the class. It was serializable allready but now I have to decorate it just to be able to use it in that way. Why? Same for exposing objects as services but also something trivial as security or needed permissions. Sure I can live with this but it really seems to be hot to use attributes these days. Think about the Enterprise Application validation block. I really consider those attributes to be a poor mans solution. (Note to myself: publish a proper concept for validation. Without attributes that is.)

What's wroning with "old fashioned" interfaces or exceptions?

If you would aks me I would have them ask Scott for permission for every attribute they want to add to ever wildgrowing list of attributes in the DotNet Framework.

That reminds me, the same is happening with .config-files. But fortunately that has been noticed by the community and Martin Fowler wrote an excellent article about this abuse.

Tuesday, May 13, 2008

Auto Implemented Properties (DotNet v3)

I just came across the option of using something called "Auto Implemented Properties" which is new to DotNet version 3.0.

The nice thing about this feature is that not only saves a lot of code in the simple scenarion where you only have a "dumb" property passing and returning a private field value in and out. But it is more conceptally right.

For example: public string Name { get; set; } will return a "true" property.

It is conceptually more right becauseit makes sure nobody access your fields instead of your properties like it should for an avarage application which makes it more readable and more maintainable. And there is less type redundancy aswell. Thus in my opinion this is more conceptually and practically right!

Just for the record: in many cases it is obvious (for sake of Anticipation Af Change) that you want to use a property and not just a field.

An example to fall in love with:

public class Contact
{
public string Name { get; set; }
public string Address { get; set; }
public int ContactNumber { get; set; }
public int ID { get; private set; } // readonly
}

Friday, May 9, 2008

Crazy Windows Versions (Mobile)

The other day, I got this excellent new cool toy from InterAccess.nl: the Samsung i780.

But henever I want to download a program I have to select the following distributions:
  • Mobile 6.0 Classic & Professional (Not Standard!)
  • Windows Mobile 5.0
  • Windows Smartphone 5.0
  • Windows CE 5.0
  • Windows Mobile 2003/SE

Then when I try to install the "right" distribution my "Phone" Windows tells me that it is not a valid "Pocket PC"-application! I thought regular Windows distributions could be confusing but this is crazy!

Try to explain that you your grandmother!

Thursday, May 8, 2008

The role of an architect (Architectural Journal)

The debate of what an architect is, what he should do and how to become one seems to go on and on and on. Still some people I meet struggling with these questions have not learned about the Architectural Journal and the excellent issue about "The Role Of An Architect".

So, again, you can read all about this role here (English PDF Version).

================

Articles in This Issue
We Don't Need No Architects
by Joseph Hofstader
This article presents a defense of the practice of architecture in software development, and examines widely held perceptions of architects and some of the mistakes that they make that contribute to negative perceptions.

Becoming an Architect in a System Integrator
by Amit Unde
In this article, the author attempts to crystallize the wisdom that he has gathered from his work in a program in which he grooms aspiring architects into full-fledged architects.

Architecture Journal Profile: Paul Preiss
Paul Preiss is the founder of a nonprofit group called IASA (International Association of Software Architects). Read about the goal of the organization, as well as some of Paul's thoughts about the profession.

The Open Group's Architect Certification Programs
by Leonard Fehskens
How do you know if someone is really an architect? This article describes The Open Group Architecture Framework (TOGAF); the TOGAF certification program; and certification levels, programs, and process.

The Need for an Architectural Body of Knowledge
by Miha Kralj
This article covers why an Architectural Body of Knowledge (ArcBOK) is an important building block in professionalization of IT Architecture, and how the Microsoft Certified Architect community drives the creation of an ArcBOK through its Special Interest Group.

A Study of Architect Roles by IASA Sweden
by Daniel Akenine
In this article, we examine the need for IT architects, describe a study by IASA Sweden to better understand IT architecture, and discuss four architect roles that IASA Sweden recommends for a typical organization.

The Softer Side of the Architect
by Joe Shirey
This article outlines a framework that the author developed for defining "soft skills" and strategies for the architect, based on his experiences and interactions with architects that he admires.

An A-Z Guide to Being an Architect
by Mark Bloodworth and Marc Holmes
These days, an architect has a lot of diverse responsibilities. In this article, the authors provide a handy A-Z guide to being an architect, and wish that all your architectures be "n-tier".

Architecture? Who needs it!

I just read an blog-post that contained a knifesharp graphical summary that seemed all too familiair to me. I just had to share it.



Source: Nick Malik.

RDP Port Blocked!? (Windows Terminal Server)

Many corporate networks have blocked the Remote Desktop Client-port (3389).

For most developers having their own servers at home having this port blocked can be really annying and inconvenient for too many reasons.

With the arrival of Windows 2008 Server the help is at hand. Windows 2008 allows you to connect via the "https"-port using a feature called "Terminal Services Gateway".

There are two ways to use this new feature:
  • Upgrade to Windows 2008 Server which in many cases sounds easier that it actually is;
  • Create a new virtual machine (don't we just love virtualization), install windows 2008 server and have that Windows instance act as a Terminal Server Gateway to your Windows 2003 server only. Its hard to find information about this scenario because it is nowhere explictly written but since this is a true Gateway I am sure this will work.

More information at technet here.

For me this will keep me bizzy for one other night ;)

PS: Setting this up last night was pretty straight forward. The only somewhat challenging part was setting up the ssl-part in the IIS Server of Windows 20008 because this requires you to setup a certificate. Since this is my home server I had to use a self-singed-certificate which adds some extra work.

Wednesday, May 7, 2008

Using Keyword (Using the Using)

I just had a small discussion about the "Using"-Keyword. A topic that everybody seems to have a slightly different, sometimes evan magical, view on. But what does it really do?

The "Using" keyword makes sure if an exception occurs during the life of an objectinstance or when that objectinstance goes out of the using-scope (thanks Edward Bakker) that the IDisposble.Dispose() method is called.

Nothing more, nothing less. That's all folks.

Because the IDisposble-interface is mostly implemented on objects that use managed resources it is often thought that it the "using"-keyword magically cleans up these resources but that is clearly not the case nor does it magically close open databaseconnections for example!

As a rule of thumb, you might want to use the "Using"-keyword for all objects that implement the IDisposable interface. Because this can be easyilly forgotton and because this should be part of every codereview this is an excellent candidate for a "CodeAnalysis"-rule. If it not allready is?

Happy cleaning!

Tuesday, May 6, 2008

Projectmanagement oneliners

Some Projectmanagement oneliners:

  • To estimate a project timeframe, work out how long it would take one person to do it then multiply that by the number of people on the project;
  • If an IT project works the first time, it is wrong;
  • A user is somebody who tells you what they want the day you give them what they asked for
  • Good project management is not so much knowing what to do and when, as knowing what excuses to give and when;
  • The first 90% of a project takes 90% of the time, the last 10% takes the other 90%;
  • Warning: Dates in a calendar are closer than they appear to be;
  • The real name for a projectmanager is a clientmanager;

Monday, May 5, 2008

EventHandler serializable?

I really can't think of any good explanation why the EventHandler Generic is marked as serializable.

Sure I can think of exotic situations where this can be usefull but it would make more sence to mark the individual eventhandlers as serializable in those rear situations where when you need them to be serializable.

There must be a good reason for it I am sure, but I still haven't found it.

Do you know any? Let me know!

Friday, May 2, 2008

Archive Live (Microsoft Webcasts)

Gevonden op de Microsoft website:

Welcome to "Archive Live", the archive page for MSDN Webclass. We have gathered together the essential elements of our previous webclasses so you can catch up on any you missed or refresh your memory on those you attended. Just scroll through the archives to see which webclasses interest you. Happy learning!

Bron: Microsoft Hong Kong.