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.
Friday, April 25, 2008
Het leerplan van een IT Architect (IASA)
- Vertel overal waar mogelijk dat je een IT Architect wilt worden; Zorg dus dat je communiceert maar ook publiceert. Zowel formleel als informeel (denk aan een blog!);
- Zorg dat je sponsors krijgt voor jouw ambities bijvoorkeur in het management en bij mensen die reeds IT Architect zijn;
- Zorg dat je een certificeringstraject start;
Succes!
(bron: http://www.iasahome.org/web/home/educationprogram)
Full Skills Package For The IT architect (IASA)
Met deze lijst kun je vrij snel afvinken op welke onderdelen je sterk bent en aan welke onderdelen je eventueel nog zou kunnen werken: cursussen moet volgen en ervaring moet opdoen. Ook kan het uistekend dienen voor het vormgeven van je eigen (toekomstige) functie want veel bedrijven hebben de functie nog niet opgenomen in hun functiehuis is mijn ervaring.
Business-Technology Strategy
· Business and Technology Strategy Rationalization
· Business Capability Mapping
· Business Fundamentals
· Business Process Engineering and Business Process Management (BPE/BPM)
· Business Valuation
· Contracts
· Industry Analysis
· Intellectual Property
· Investment Prioritization and Planning
· Requirements and Constraints Analysis
· Technology Capability Projections and Planning
Design Skills
· Architectural Description
· Architecture Styles
· Architecture Viewpoint and Views
· Context
· Design Diagramming, Notation and Deliverables
· Design Methodologies
· Design Methodology Evaluation and Review Practices
· Domain-Specific Modeling Languages
· Optimization Techniques During Design
· Patterns and Best Practices
· Prototypes
· Reuse
· Synthesis and Problem Solving
· Traceability Throughout The Life Cycle
Human Dynamics
· Conflict Management
· Crisis Management
· Customer Relations
· Leadership
· Mentorship
· Negotiation Skills
· Peer Interaction
· Politics
· Presentation Skills
· Selling Skills
· Situational Awareness
· Team Building and Management
Infrastructure Architecture
· Access and Identity Management
· Capacity Planning
· Common Application Services
· Device Management and Provisioning
· Messaging Standards
· Network Design
· Support Processes and Tools
· System Tuning
IT Environment
· Capability Development, Training and Management
· Capability Mix Identification
· Compliance: Audits, Certification, Licensing and Regulation
· Cost Estimation and Tracking
· Dependency Identification and Management
· Engineering
· Governance
· Infrastructure Landscape
· Knowledge Management
· Maintenance and Support
· Operational Management
· Operations
· Organizational Dynamics
· Organizational Structure
· Outsourcing
· Resource Balancing and Management
· Stakeholder Definition
· Vendor Management
· Virus and Patch Management
Quality Attributes
· Implementing Quality Attributes
· Manageability, Maintainability and Supportability
· Monitoring Quality Attributes
· Performance, Extensibility, Flexibility
· Quality Attribute Auditing
· Reliability, Availability, Scalability
· Security
· Usability, Localization, Accessibility, Personalization/Customizability
Solution Architecture
· Application Layering
· Asset Management Systems
· Business Intelligence
· Change Control
· Customer Information and Relationship Management (CIM/CRM)
· Development and Build Environments
· End-to-End (E2E) Test Design and Implementation
· Implementing the User Experience
· Information Architecture
· Integrated Development Environments (IDEs) and Modeling Tools
· Localization
· Mainframe Development and Design
· Messaging Technology
· Mobile Platforms and Frameworks
· Personalization
· Programming Languages
· Proof of Concept Design
· Service Network
· Solution Architecture Design Methodologies
· Solution Architecture Design Patterns
· Solution Architecture Development Methodologies
· Solution Architecture Specialities
· Solution Architecture Tools
· Technology Frameworks
· Transactions
· User Experience
· Workflow
(Bron: http://www.iasahome.org/web/home/taxonomy)
Thursday, April 24, 2008
Microsoft Workflow en ASP.Net
- Tenzij je de "ManualWorkflowSchedulerService" gebruikt wordt er voor iedere "PageRequest" en voor iedere "Workflow"-instantie een aparte "thread" gemaakt wat dus leidt tot een verdubbeling;
- Maak een singleton-wrapper om de Workflow-runtime heen die je wilt gebruiken zodat je maximaal een instantie per webapplicatie kan bestaan.
- Alle workflowinstanties blijven in het geheugen van je webserver tenzij je de "SqlWorkflowPersistenceService" gebruikt.
Succes!
P.S. Om deze "SqlWorkflowPersistenceService" te gebruiken heb je een SqlServer-database nodig met de juiste objecten. Deze kun je aanmaken met de scripts "SqlPersistenceService_Logic.sql" en "SqlPersistenceService_Schema.sql" die te vinden zijn op de locatie: "C:\windows\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\EN".
Event "<eventname>" on interface type "interfacename" for instance id "<guid>" cannot be delivered (StateWorkflow)
Het is niet echt voor de hand liggend hoe je deze foutmelding moet oplossen maar toch is de oplossing eenvoudig:
- Kijk naar de InnerException. Meer dan logisch maar wordt te vaak vergeten;
- Zorg dat jouw afgeleide EventArgs klasse gemarkeerd is als "Serializable";
- Zorg dat alle klassen die gebruikt worden in jouw EventArgs-klasse "Serializable" zijn;
- Zet in de constructor van jouw EventArgs-klasse de eigenschap "WaitForIdle" op "true";
- Werkt dit allemaal niet dat zit er een fout in je Statemachine Workflowontwerp, bestudeer je workflow extra goed in de "desginer"; Om achter het probleem te komen kun je. Eventueel kun je de instantie van de "StateMachineWorkflowInstance" klasse besturderen kijk dan met name naar de ""CurrentState" en de "PossibleStateTransitions"-eigenschap.
Succes!
Monday, April 21, 2008
Succesvol software ontwikkelen (Agile)
Dit is dus ook het geval met het boek "Getting Real". Hierin staat dit op een werkelijk fantastische manier in 16 actiegerichte hoofdstukken beschreven.
Voor iedereen die met softwareontwikkeling te maken heeft een echte aanrader en voor iedereen die ambities heeft een eigen softwarebedrijfje te beginnen een absolute must!
Het boek is volledig publiekelijk beschikbaar. Zie: 37signals.com
(Bedankt voor de tip Gerard Doeswijk)