Tuesday, October 21, 2008

Quote about recognizing a leader

Iedereen met een doel, die van anderen afhankelijk is om dat te bereiken, is een leider.

21 oktober 2008, Marcel van Eijkel

=====

(translation)
Anyone, who has a goal being dependent on others to accomplish it, is a leader.

Monday, October 20, 2008

Null Column Values in Linq2SQL ( isNull, Linq )

Just wanted to share that a common mistake using Linq2SQL is to use the "equals operator" if you want to find a row that has null-values in certain columns.

Wrong:
From table in context.Table where (searchValue == table.Column)
Results in "from Table where Column=null"

Right:
From table in context.Table where (Object.Equals(searchValue, table.Column))
Results in "from Table where Column is null";

Happy Linqing!

PS: the reason I am using Linq2Sql and not Linq2Entities because of the current lack of disconnected entities support. I tried it but it was way too time consuming to use the conceptual layer as a business/object layer.

Saturday, October 18, 2008

Decorator Pattern using the Unity Framework

Realizing the decorator pattern in the DotNet-Framework has always been easy.

But, with the arrival of the new Unity (Inversion Of Control) Framework setting this up is less intuitive.

Below a config-based example (mainly for my own reference) copied from a codeplex discussion see:

http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=24015


Happy decorating!

Thursday, October 9, 2008

WCF Windows Service (Debugging)

Seeing the popularity of SOA rising, Microsoft's WCF services are rightfully being used more and more. Ofcourse, those services need to be hosted somewhere. One of the options for this is in a Windows Service (or technically speaking in a Process Service).

But, with the development of Windows Services comes the, generally accepted, burdon of deploying (compiling, installing, starting, attaching debugger, stopping, uninstalling) these services with every change we make, atleast if we do this by the book.

Not settling for that situation I counted my (too many) options and choose the following stratagy:

1) As goes without saying, allways make sure your service has hardly any "guts". Have all the logic in a seperate class that is seperately and indepentdently unittested.

2) Add a "program.cs" to your WindowsService-project, change its type to "Console Application" finally have Visual Studio start that project up when you start debugging your solution. (see source here: Run-windows-service-as-a-console-program.

Happy Servicing


Notes:

  • Don't worry, by changing the type to "Console Application" you only tell Visual Studio to start (technically speaking "exec"-buildtask) the main-function of the program.cs you can still deploy your services without any changes to the sources/binaries.

  • Try to group your Services in one Windows Services (technically speaking adding multiple appdomains to the process). If applicable this does save a significant amount of memory.

  • Microsoft's upcoming OSLO concept might make this approach less needed;

  • Add the following configuration block to your "app.config" to get usefull Console output:


<system.diagnostics>
  <trace autoflush="false" indentsize="4">
   <listeners>
    <add name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener">
   </listeners>
  </trace>
</system.diagnostics>

Monday, October 6, 2008

Quote about being reasonable

The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.




Friday, September 26, 2008

The world of business (Quote)

The world is a dangerous place, not because of those who do evil, but because of those who look on and do nothing.

Albert Einstein

Its unmistakable that that business is an eminent part of that same world.

Tuesday, July 22, 2008

Quote about energy through patience

In the sweet exile of labour we first of all learn patience. Patience teaches us energy and energy gives us eternal youth composed of receptivity and enthousiasm.

Tuesday, July 15, 2008

Plain Agility (Project Management)

I just found an excellent (pdf)article on the Microsoft website exaplaing basic Agility concepts in the first place and the role of tooling second.

Although it is written for Microsoft the author keeps the role of tooling general. I just love articles like that.

Easy to read, hard for anyone (other than purists) to disagree.

Its written by Kent Beck from Three Rivers Institute.

You can find the document here.

Happy Reading!

Sunday, July 6, 2008

Hollands own technology TV Station!

The last few years, I have been watching the t.v. less and less! Except for the discovery channel it has really rock-bottomed for me.

But I expect things to change the first of October! A date to put in your calendar. That date will be te start for Holland's Technology / Inovation / Internet TV-Station.

Check it out at: http://www.blueshots.tv/

Supported by Hollands Boris Veldhuis van Zanten!

Happ Watching...

Microsoft Arrowhead (DotNet)

Finally, I just found the time to download, install and play a bit with the DotNet Framework 3.5 Service Pack 1 (beta).

Part of this service pack seems to be something called "ArrowHead". As we are used from Microsoft, this is still the codename of course.

As I understand this "ArrowHead"is about supporting occasional connected clients.

Let me know what your experiences when you have taken the time to play with it. There is not much information available to me yet, but have a look at wiki:

http://en.wikipedia.org/wiki/Microsoft_.NET#SP1_.28codename_.22Arrowhead.22.29

Happy Playing (with your arrow-head :)

Tuesday, July 1, 2008

Linq Examples (Cheat Sheet)

Just came across this webpage from Microsoft where you can find 101 neatly categorized Linq examples:


Happy Linking!

Monday, June 30, 2008

Extension Properties? (DotNet)

I was just wondering...

Its been allready a while since extension methods have been introduced. Hence, many of us hardly actively remember not having those methods available to us.

But I was wondering:
  • Where are the extension properties?
  • Do extension methods go against the Object Orentation principles?

What do you think?



Friday, June 27, 2008

Quote about success and failure

Success is failure turned inside out....

For me, true success is about failing, failing, failing and yet sticking to it. Making? No demanding success. Its oke to rest but not to quit....

Stay focused, in the end you will succeed...


Tuesday, June 24, 2008

Microsoft WCF Tools (Test, Configure, UI)

With SOA and Web v2.0 everything is about services.

As you know for Microsoft the current strategic tool of choice for services is WCF. However, testing / configuring with WCF, among things can be tricky. Knowing what tool to use in what situation is essential. As it turns out still not everybody knows about the currently available tools from Microsoft, so just as a reminer below a list:

  • ServiceModel Metadata Utility Tool (Svcutil.exe): Generates service model code from metadata documents and metadata documents from service model code;
  • Find Private Key Tool (FindPrivateKey.exe): Retrieves the private key from a specified store.
  • ServiceModel Registration Tool (ServiceModelReg.exe): Manages the registration and un-registration of ServiceModel on a single machine. COM+
  • Service Model Configuration Tool (ComSvcConfig.exe): Configures COM+ interfaces to be exposed as Web services.
  • Configuration Editor Tool (SvcConfigEditor.exe): Creates and modifies configuration settings for WCF services.
  • Service Trace Viewer Tool (SvcTraceViewer.exe): Helps you view, group, and filter trace messages so that you can diagnose, repair, and verify issues with WCF services.
  • WS-AtomicTransaction Configuration Utility (wsatConfig.exe): Configures basic WS-AtomicTransaction support settings using a command line tool.
  • WS-AtomicTransaction Configuration MMC Snap-in: Configures basic WS-AtomicTransaction support settings using a MMC snap-in.
  • WorkFlow Service Registration Tool (WFServicesReg.exe): Registers a Windows Workflow service.
  • WCF Service Auto Host: Hosts WCF services contained in libraries (*.dll) files
  • WCF Test Client: GUI tool that allows you to input parameters of arbitrary types, submit that input to the service, and view the response the service sends back.
You can find all information about there tools here.

There are also a few Debugger Visualizers for WCF available aswell:
http://codeplex.com/WCFVisualizer

Be aware though, Oslo is coming up about to change this big time!

Happy Serviceing!

Wednesday, June 18, 2008

The Business-IT-Gap has a face

With all the current hypes, just think about the Architecture, SOA and SaaS hype, you might think that agility, stability and interoperability are goals in itself. That they are specific magical ingredients recently discovered about to solve all IT related problems. This would not be an unlogical conclusion. After all, that's what is being promised you will need and get an agile business because that is what everybody needs.


Is it not? No, not at all!

In fact you just met the "Business-IT-Gap" in person. It might be the manager asking a developer for an application that should (obviously) be flexible and stable. Or it might be a sales person or consultant explaining a client that they really need to go for a SOA-solution for agility reasons. Either way you are actually physically facing a (e.g.: talking/listening to) person embodying the Business-IT-Gap.


Really? Explain!

The whole reason why the Business-IT-Gap exists is because managers have lacked to provide enough guidance about what kind of flexibility and interopability and the dagree of stability is that was needed (a responsibility now being hijacked by people calling themselves Architects).


Lacking this guidance resulted in systems lacking flexibility or the wrong kind of flexibility (thus maintainability) and interoperability. Moreover, because every developer has its own personal view on the type of flexibility needed, changes are that what is flexible in one application is fixed in another. Thus in fact lacking this guidance cannibalized the overall investments in flexibility. Believe me this is not theoretically speaking, this is what I see day in and out! I can't believe nobody else notices this...


So what should I do?

Of course, it's not only you. It's the whole branch! Developers should demand more guidance. Sales people and consultants should not propagate agility, interoperability and stability etc. "pur sang". They should explain that it is about Just Enough and about Just Right and that divers from situation to situation and company to company. You just can't and don't want to be totally agile either given a solution or given an total enterprise. It's about finding the right balance between what can be fixed and what should be flexible. Because flexibility comes with a big cost that can only be returned (roi) if it will be used sooner or later. Just think about architecting a house. Realizing all your dreams and whishes (read: requirements) in a totally agile structure would have you end up with something crazy like a hyper expensive stretchable balloon!

But now that you know, you can and should close the gap by asking the right questions and demanding a reasonable answer!


Happy closing the gap!

Monday, June 9, 2008

Compare Assemblies (ALM)

To get your build and release procedures right you need to know and inform about what has been changed in this release compared to the last (major)release.

As far as I know there are three tools that can be used to compare assembly versions:
  • Microsoft's LibCheck which might be incorporated into your build server to have a document generated with your release that lists all the differences; This application outputs a xml-file with the differences;
  • For ad-hoc investigation you should you ndepend;
  • For simplicity you might use the free opensource Framework Design Studio; Which can also be incorperated into your build server using the "fxdiff.exe" found in the install folder. This application gives you a visual SourceSafe-like comparison.

I recommend using nDepend today! If you are not using it allready.

Happy comparing!

P.S. If you can't find the download for the Framework Design Studio click here.

Tuesday, June 3, 2008

Welcome.doc (Project Management)

Every now and then a new person will join the project. It maybe because somebody got sick or will go on a holiday, because a specialist is hired for a specific task or because we want to speed up things. What ever the reason the same questions are asked over and over again:
  • What database do we use and where is it?
  • What servers are do we use?
  • What does the develop / test / production environment look like?
  • Do we use SourceSafe?
  • What version of Visual Studio do we use?
  • Etc. etc
Its my experience, that the first time someone joins the project is the perfect moment to write a "Welcome.doc" - document. Next time somebody joins the project you are more then prepared. I always ask the new person to write them down which I then review.

A typicle "Welcome.doc" document for me looks like this:


Brief introduction (1 page)

  • Vision: it is mission ciritical and why?
  • Basic description of the functionality;
  • Logical position of the application;
  • Main technologies used;

Meet the application (Chapter 1)

  • Size and complexity;
  • Basic architecture;

Meet the users (Chapter 2)

  • Grapphical context diagram (users versus elementary use cases);
  • Main usescases and a brief description;

Logical System Description (Chapter 3)

  • Logical parts;
  • Logical main process (value chain);

How we develop (Chapter 4)

  • Tooling;
  • Enviroment;
  • Known shortages;
  • Proces (preperation, execution, finilization);

How we test (Chapter 5)

  • Tooling;
  • Enviroment;
  • Known shortages;
  • Proces (preperation, execution, finilization);

How we release (Chapter 6)

  • Tooling;
  • Enviroment;
  • Known shortages;
  • Proces (preperation, execution, finilization);

Daily activities (Chapter 7)

Many projects come with daily activities. This might be to check a log file, build server or to check a dashboard.


First Aid for Production Problems (Chapter 8)

If you join the team its just a matter of time before somebody runs into your office to ask you for your help with something that is thought of a high priority production problem. This chapter describes the basic checks.


Plan to get up and running (Chapter 9)

This chapter describes what to do after reading the "welcome.doc" - document to get you up and running as fast as possible. This might be to make a few "fake" changes and go throught different applications layers, the test procedure and release procedure.


Settings and Locations (Chapter 10)

This chapter describes the main settings (for example a flag in a config file to set debug on or off) and the locations of the main parts like the dashboard, the intranet, certain folders on the network where tooling can be found.


Relevant documents and applications (Chapter 11)

Any other, more in depth, documentation about the current system or referenced applications should be referenced here.


Frequently Asked Questions (Chapter 12)

Frequently asked questions and their answers of course, about this document can be listed in this chapter.

Happy Welcoming!

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!