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....
Friday, June 27, 2008
Quote about success and failure
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....
Tuesday, June 24, 2008
Microsoft WCF Tools (Test, Configure, UI)
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.
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
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)
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)
- 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
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)
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)
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)
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)
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.
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
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)
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)
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)
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)
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!
RDP Port Blocked!? (Windows Terminal Server)
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)
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?
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)
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.