Wednesday, January 17, 2007

Identity Management and CardSpace

Identity Management is not one of my priorities, but it's a subject I've been interested about for sometime, and which is very related to the work I am doing at the moment. It all started with Kim Cameron's Identity Blog and his Laws of Identity.

The most visible face of this whole Identity Management issue is the multiple logins people have to make while browsing the internet, creating accounts at several sites to access their services or contents. I've had to resort to password-management software, but the problem is deeper than memorizing your multiple logins and passwords, especially when financial transactions are involved.

Probably the best description of the problem, or at least an introduction (and also a demonstration of what great presentation skills are), is 2005's Dick Hardt's Identity 2.0 introduction to the concept of Digital Identity.

Yesterday I listened to Hanselman's Identity podcast, and came home to read more and try Windows CardSpace (.Net's 4th pillar). CardSpace is included in .Net 3.0, but if you are using Windows Vista, it's build in (just type "card" on the start menu and "Windows CardSpace" shows up :-)). I started it and created a simple card with some of my information, and went looking for a place to use it. I found one at .Net 3.0's site, the SandBox. The SandBox is a Community Server installation with CardSpace support for user registration and login. When I registered, I got into Vista's Secure Desktop mode, with CardSpace open, selected the card I wanted to present to the SandBox (I got shown what field the SandBox would get from the card), and BAM, I was registered and logged in. All I had to do was to pick a nickname. Later I got an email with an username and password, just in case I want to log in using "traditional" methods.

CardSpace is based on some of the WS-* standards, such as WS-Security and WS-Trust, which supposedly make it both "safe and standard", but what I like the most is really the end user experience. For me, the idea of no longer having to create logins everywhere, and being able to select the specific pieces of information I want to share with each site I visit, is a very interesting prospect. The question is, obviously, if there will be acceptance to this outside Microsoft, or if this will be another Passport/Hailstorm situation. A major difference, the way I see it, is that information is stored in your computer, not at Microsoft somewhere, so the trust obstacles are aleviated.

As to this being available in public sites, I have no idea. I found a comment in a blog saying that Community Server 2.1 should include full CardSpace support soon, for all users to install, but found no details on this having happened yet, and found no major implementation of it yet (time to throw out Passport).

One final note, out of curiosity: when the screen greys out in Vista, you are in what MS calls "Secure Desktop" mode. This is Windows' mode that is used, for example, when you log into your Windows computer (running Xp, Vista, 2003, ...) . This mode is designed to block out processes from execution, to make sure you are inserting your password in a secure environment where no keyloggers or such can work. In Vista, you get a greyed out/transparent background when you are in this mode (which is just a UI thing, the grey is really a screenshot with transparency :-) Human Factors stuff). More information about this here and here.

Just before I go: there's already Firefox support for CardSpace, and Kim Cameron has an implementation of the identity system in Php. Also note that CardSpace can be used for much more than simple site login, I just wanted to blog about it because the first impression it leaves was really positive.

Monday, January 15, 2007

BizTalk: Wire Tap

Debugging in BizTalk (and other async/messaging-based solutions) can be complex, and very often the UIs (the Admin Console and Hat) don't give you enough tracking information, either because you've just re-deployed and lost tracking settings, or because the Sql Agent is turned off. This tends to happen frequently during development when you want to look at the body of the messages.

A very simple and very useful technique in this situation, and one I often find is not fully used, is to create a "Wire Tap". A Wire Tap is an Integration Pattern that allows the inspection of messages that travel across a channel. In BizTalk, this translates to simply creating a (Static, One Way) Send Port that looks for specific messages (using its Filters), and sends them to some destination, typically, a file folder (SMTP email is another frequent choice). This port is not bound to any orchestration, it's a content-based solution only.

One thing to remember about these Send Ports is that if you have a Send Port that has no filters, it catches nothing. Always remember to set up a filter. The ones I used the most are based on the message type (BTS.MessageType) and the receive port the message came in through (BTS.ReceivePortName).

I actually find that understanding and resorting to this mechanism is frequently a good indicator of the maturity of the BizTalk developer and his understanding of the pub/sub model in BizTalk Server.

BizTalk 2006: Custom Functoids and their Icons

When you develop custom functoids in BizTalk Server 2006, one of the steps you have to do is create icons to represent them in the mapper.

These functoids must be created as 16x16 BMP icons, and inserted/embeded in a Resources file. You can do this directly in Visual Studio, by opening the Resx file and adding an Image file, or (my preferred way) by using Lutz' Resourcer for .NET .

You can start by creating an icon in Visual Studio's editor, which I then screenshot into Paint.Net and save as a 16x16 BMP to later insert into the resources file.

Another "detail" that shouldn't be forgotten is updating the "Custom Tool Namespace", on the .resx file. Also remember that you have to restart Visual Studio if you want to have the icons/dlls update, as it caches the functoid assembly from its path at <drive>:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Mapper Extensions.

Using a background color for the Functoid icons is good practice, to avoid confusing yours with the built-in ones.

Catch Up in 2007

In the last two years I have been feeling a ever largest difficulty in following the rhythm of technological evolution in my area. When there was only BizTalk 2000/2002 and .Net 1.0, the world was simple. Now there is .Net 3.0, with WCF and WF, Dsl Tools and several Software Factories, BizTalk itself with its R2 evolutions, the notorious SharePoint/Office 2007, ever more frequent contributions in software architecture, more and more podcasts and videos, magazines, newsletters, hundreds of emails ... and still only 24 hours every day (they'll have to solve that one of these days).

It's not possible to stay up to day on everything, it's not even worth trying.

One of my decisions for 2007 concerns this Information Management issue. My first step was to identity the topics and technologies (I picked 3+1) I really want to follow in depth. Anything outside these bounds I will not focus on. I could have opted for "knowing little about everything", but somehow that doesn't feel right :-). I already started unsubscribing from blogs (from my list of 250 feeds), newsletters, and deleting podcasts. It's sad to see them go, but there is no other option.

I also did a quick re-read of "Getting Things Done", and printed out the poster freely available at David Allen's store (you have to register, but it's a free purchase). It really helps, having this in front of you during your workday. One of the hints I value most is: if you get contacted about something that takes less than 2 minutes to do, don't procrastinate, do it immediately. This applies to all those emails asking for "Can you please send me document X?". Sites like 43 Folders occasionally give you helpful hints to better manage your time. I personally tend to multitask a lot, and get distracted by multiple things of interest, so some of the resources here might help. Some time ago someone posted a method to keep you on track on something you are doing: write it down on a post it note, and stick it in your computer next to the screen. People can look at you sideways, but it seems to work. :-)

The day I'll feel happy is when I can get my Outlook Inbox from 500 to 0 emails, however.

DSL Tools v1 (Windows SDK Set/2006) and Modelling

Last week I went back to the V1 of the Dsl Tools, and re-did the tutorials. Much simpler than the beta ones, the entire platform is much stabler and parts of it were simplified, being easier to use. The unification of the DSL definition with its presentation definitions in a single file is very welcome. The lack of intellisense/syntax coloring support while writting the templates is one of my complains. The inability to use the DLS's outside Visual Studio (in scenarios where you want the business user to at least prototype the model) is another serious limitation. Finally, there are also some concepts that are not easy to understand on the first approach, and there seems to be too much "visible plumbing" in the design of languages and its later use.

I personally find the whole Software Factories/Modelling idea very powerfull, and with some ingredients that can help solve this whole quality issue in the Software industry, but while activity in the Software Factories has been plentiful (also in the Architecture Journal issue 9), not much new has been coming up on the web concerning DSL's and modeling. MS's DSL blogs also have little activity and there's no news on the expected book.

Most of the work Create It and myself do involve work around integration and custom software development, frequently around products such as BizTalk or SharePoint, and we don't market our own products or specialize in any vertical industry. Given this, I've tried to find uses for DSL's in what we do, and mostly I came out with what I call "technical" scenarios. For example, modeling a biztalk schema so that it's easier to create, or model a structure of sites in SharePoint to automatically provision/update them. The Software Factories that came out also work in this "technical" space, so this helps explaining why they are easier to come up with and develop.
I found very few uses of DSL's in real "business" scenarios, considering the kind of work we do. The most obvious case is perhaps in building workflows, which is Windows Workflow's space, and WF in itself is a "technical" DSL without busines specific activities. WF in SharePoint is closer to what I am looking for, specially with its activities to do content approval and routing, focused on the document management space.

This is a topic I would like to discuss with other people interested in modeling. Any feedback?