Rants, rambles, news and notes from another geek

Architecture Testing Guide Released


We have just released another excellent guidance offering… this time focused on testing. Here is the abstract:

The patterns & practices Architecture Testing Guide is designed to help project stakeholders, software designers, developers, and testers understand the process of testing software architecture before the code is implemented. The paper describes an approach and methodology for testing the design of a system, and describes the user-specific viewpoints that you must consider during the testing process. The Architecture Testing Guide walks through the process of testing a system from each viewpoint, and provides instructions, examples, and best practices along the way. A draft version of the paper is for download here.

You can download it from GDN.

Now playing: Nelly - Nelly- St. Louie

Geek Notes 2005-08-28

Now that Finn is basically a full time walker and is starting to show that famous attitude that all of the Provost’s seem to possess, we finally decided to turn his room into a real little boy’s room. Out with the “guest room” furniture and in with the little boy stuff. We took a trip to Ikea yesterday to start scouting furniture and colors. I’m&nbsp_place_holder;sure Emily will be posting more details as we proceed.

Here are a few things that have been collecting in my “blog this” collection…

  • Enterprise Library for .NET August CTP - Many congrats to the EntLib team. They’ve been busting their asses getting this ready for all of you. Enjoy!
  • Monad Team Blog - Yes, I’m still hooked on Msh (aka Monad). Now the team has a shared blog so those who don’t have their own spout can share the Monad goodness.
  • Freedom Languages - An excellent philosophical article that compares “safety languages” with “freedon languages”. A quote: “Freedom languages are those languages that put the individual programmer at the center of their philosophical world.&nbsp_place_holder; They work hard to remove any language constructs that reduce programmer freedom, and add the most powerful constructs available.”
  • OpenSpace - Martin Fowler explains some of the history and background of Open Space… a very cool ‘agile’ way of doing conferences and get-togethers.
  • Cracking Software To Run Non-Admin&nbsp_place_holder;- Lee Holmes does something I’ve always wanted to do… actually crack someone’s binaries to fix their LUA stupidity. Yeah, it may be a violatio of the license agreement, but as far as I’m concerned it isn’t being done for profit or to steal IP but to fix a bug.
  • Mio GPS SmartPhone - Hmmm… I was thinking I was gonna wait for a Q-Phone, but I may have to get one of these instead. [via Rory]
  • OQO 01&nbsp_place_holder;- While browsing the comments on Rory’s Mio GPS Smartphone post, I found someone talking about this… the smallest self-contained PC&nbsp_place_holder;ever built. Oooooh. I want one.

Now playing: Who - I’ve Had Enough

Enterprise Update Scan Tools

Here at Microsoft, the IT people frequently scan every computer connected to the corporate network, checking to see if it has all the required patches and whatnot. This is a good idea and not something I would ever say I was opposed to. But strangely, there are a few patches that [Microsoft Update](http://go.microsoft.com/fwlink/?LinkId=40747), [MBSA](http://www.microsoft.com/technet/security/tools/mbsahome.mspx), etc. can not detect. And if they can't detect them, it makes it rather difficult to know if you are fully patched. And here is where my rant begins... you wouldn't believe how much time in the past 6 months I've spent on the phone with tech support after getting my port turned off. You see, I have a Virtual Server running in my office. I use it to host anything new and exciting that I'm unwilling to install on my laptop. In the run up to Whidbey Beta 2, I was taking fresh drops every couple of days and putting them in fresh new guest images. I've been doing similar things with Vista (formerly Longhorn), Avalon, Indigo, etc. And apparently my base image, which I made back in late '05, wasn't patched for [MS05-009](http://www.microsoft.com/technet/security/bulletin/MS05-009.mspx) (the PNG exploit). So every time I brought a new image up, I either a) had to remember which download to get to fix the base image or b) wait for them to shut my port down. (Yes, yes... you are all now wondering why I didn't just fix the base image, but there is a certain amount of laziness inertia to contend with here...) Each time they shut my port down I have to spent 10-15 minutes I'm on the phone with corporate IT support. And each time, I ask, "Hey, how can I detect these things? I'm fully patched as far as I can tell. There has to be a way for me to know this without you guys shutting down my port." But they always come back with, "Well, the only way is to check this EXE for its version, do a search for that DLL and check its version, look in this registry key, etc." I thought Windows Update (and now Microsoft Update) were supposed to solve this for us... but apparently there is something about checking file versions that it can't do. ![](http://www.peterprovost.org/Files/smile12.gif) Now for the worst part... _place_holder;It turns out that there _are_ scan tools for all of these "undetectable" issues. They just aren't advertised much (and are apparently unknown by our own tech support people). So, if you want to be 100% sure that you don't have any of these issues, go and get the [Enterprise Update Scan Tools](http://support.microsoft.com/kb/894193) _place_holder;from Microsoft Downloads and scan your machines. They aren't quite as easy to use as MBSA and Microsoft Update, but there aren't many of them _place_holder;and you won't have to do them very often.

PDC BoF Voting

If you are attending PDC this year, please go vote for the Birds of Feather sessions you would like to see happen. Here is a summary from the submission page:

A “Birds of a Feather” session is a one-hour open, moderated discussion on a topic of interest to the Microsoft PDC05 conference attendees. Anyone attending the conference (except Microsoft employees) is eligible to propose a topic using the submission form below. You are encouraged to vote for the topics that you’d most like to see at the conference.

Here are the seven I voted for… go pick yours today!

  • Agile vs. Non-agile Development
  • Extensibility Architectures for Applications
  • Future of the Deep Coder
  • Help! I Have To Manage Programmers!
  • Team Development with NTeam
  • Using Enterprise Library in the Real World
  • Visual Studio 2005 Team System – Blessing or Anathema?

TSHAK is moderating the EntLib talk, and he was on the team with us for the v1.0 release so you know it will be a good chat. I thought the rest looked pretty interesting too. Go vote: http://commnet.microsoftpdc.com/bof/bofvoting.aspx

Geek Notes 2005-08-21

I’m really looking forward to this next week in the PAG War Room. For the first time, everyone from all three teams (CAB, CBA and EntLib) will be there at the same time. This will be where we prove whether this muti-team-war-room experiment works or fails. My hypothesis: Amazing Success.

  • Python to Lose Lambdas? - Brad Wilson sent me this via email. He and I have been Ruby-heads for a while now, but recently saw an Iron Python&nbsp_place_holder;demo by Jim Huygins. From this post it sounds like Guido is simplifying things a bit and getting rid of lambdas. Now if only he’d include Ruby-style blocks and Python will move up a notch in my world. Then he can get rid of that ‘self’ parameter and the ‘tabs as syntactic elements’ thing and I’ll be really happy.
  • Multiple Monitors w/ Virtual PC - I played around with MaxiVista and VPC a while back but for some reason I didn’t come up with this trick. Very nice.&nbsp_place_holder;
  • Urlograph 1.2 - I’ve been using this URL shortener for a long time now, but one thing it has always lacked is that when you used it on an Amazon URL,&nbsp_place_holder;you had to add you Associates ID yourself. I suggested to Kim that he fix it and now it is done. One click Associates links in addition to all the other link help. Sweet.
  • HOWTO Put an Elevator into Express Mode - I love trivia like this. Press “Door Close” and your destination floor at the same time and some elevators will go into express mode.
  • The Whitespace Programming Language - Speaking of Python, the Python-heads should love this. Whitespace as the ultimate syntactice element. [via Don Box]
  • Enterprise Library Series on DotNetJunkies - The first of a series of articles on DotNetJunkies about EntLib. [via TSHAK]

Now playing: The Breeders - New Year

CAB Hands on Labs Now Online

Many thanks to all the people who showed up for the CAB webcast last week. Ron Jacobs went through the first couple of labs from the CAB Hands on Labs while Brad, Ed and myself joked and heckled from the sidelines. It was a blast to do.

Now you can play along on your own computer! The CAB Hands on Labs are now up on our GDN Workspace. There really is no better way to learn than with labs like these, so go check ‘em out.

VB6 Updgrade Guide Now Available

Eugenio Pace, the Product Manager for the p&p Smart Client program just posted this to his blog

For those thinking about moving forward those VB6 applications to the .NET platform, but have doubts where to start or how; or simply need some help in estimating the effort of such project, check this new guide from patterns & practices.

Published in this community site you will be able to download a draft of the guide (almost 14 chapters); and the team will be publishing additional content as it becomes available (like the assessment tool to estimate effort and perform an analysis of the code you need to migrate).

The Guide covers many technical challenges (like COM+, unsupported featues, API call, etc.) but also addresses the process of migration: asessment, planning and effort estimation, preparation for migration, application advancement, etc.

Experience has shown us that an appropriate assessment and preparation of an application prior to running the upgrade wizard inreases the success or the “efficiency” of the tool very significantly.

As any other offering from patterns & practices, this guide is being built with heavy input from real experience, so if you have something to tell us, please do! Send us an e-mail to vbmigfb AT microsoft.com


Check it out!

Updated MSH Syntax Highlighting for VIM


After posting my VIM MSH syntax file on the internal Monad discussion list, I got a great reply from Tommy Williams who obviously knows more about how to tweak VIM than I do. Tommy showed me the right way to add a custom syntax file to your VIM setup without potentially screwing up your upgradability. He also added support for comments, which in itself is worth the update. Thanks Tommy!

Here is the new msh.vim file. If you followed my previous instructions, then begin by undoing all of it. &nbsp_place_holder;Then download this new msh.vim file and follow Tommy’s instructions:

The best explanation I can find for it in the help files is with :help runtimepath. That shows you the directories and files.

In this case, there are two directories and three files involved:


Msh.vim is the file you supplied as monad.vim.


For me, this is just a series of blocks of the form:

	augroup filetypedetect
	au BufNewFile,BufRead *.<extension>&nbsp_place_holder;&nbsp_place_holder;&nbsp_place_holder;&nbsp_place_holder; setf <extension>
	augroup END

In the case of MSH:

	augroup filetypedetect
	au BufNewFile,BufRead, *.msh&nbsp_place_holder;&nbsp_place_holder;&nbsp_place_holder; setf msh
	augroup END


This is a file where I set things like indenting, textwidth, etc. for that filetype: things you can’t - or shouldn’t - do in a syntax file. So far it’s just a shell. I’ll tweak it to add more options later, but it should give you a feel for things:

	" Only do this when not done yet for this buffer
	if exists("b:did_ftplugin") | finish | endif
	" Don't load another plug-in for this buffer
	let b:did_ftplugin = 1
	setlocal tw=0
	"setlocal comments=#
	setlocal commentstring=#%s
	setlocal formatoptions=tcqro
	"setlocal iskeyword+=#
	" Change the browse dialog on Win32 to show mainly MSH-related files
	if has("gui_win32")
	let b:browsefilter = "MSH Files (*.msh)\t*.msh\n" .
	\ "All Files (*.*)\t*.*\n"
	" Undo the stuff we changed.
	let b:undo_ftplugin = "setlocal tw< cms< fo<" .
	\ " | unlet! b:browsefilter"
	" vim: ts=4:tw=0

And, of course, the syntax\msh.vim file is the one you made.

Now playing: AC/DC - Rocker

UPDATE 2005-08-12: Posted it to the vim.org scripts section.
UPDATE 2005-08-13: I made a small change to the syntax file that fixed a problem with foreach and while. The current version is 1.2. I will also be re-posting it to the vim.org scripts board.

Geek Notes 2005-08-11

Got a little bit of vaca coming up… my sister Michelle is coming to town with her son Julien. Hadley is really excited to have her cousin here, which is fun. They haven’t seen each other in more than a year, so it should be a blast. The weather has been wonderful lately and hopefully it will stay good for their visit.

  • Back Compat in EntLib - Ed Jezierski, architect for patterns & practices has written a detailed post talking about the issues around backwards compatibility in Enterprise Library and other p&p deliverables. When you’re done with that one, you need to read Scott Densmore’s post on the topic that explains some of the specifics around EntLib 1.x and 2.0.
  • Currying w/ Generics in C# 2.0 - Very very cool technique here. The example is a bit contrived (as these things always are), but think a bit and you’ll see that there are a number of interesting uses for this kind of thing.
  • PDC BoF Suggestions Now Open - If you’re going, and have something interesting that you want to get a group of people together to talk about, you should suggest a topic. They are always fun… sometimes even more fun than the conference sessions.
  • Web Accessibility Toolbar - Wow this is cool. Page validation, browser resizing, CSS validation & manipulation, image&nbsp_place_holder; lists, color manipulation, page structure, and more tools. Looks like a must for anyone doing web development.
  • Sample Monad Scripts - A nice collection of sample MSH scripts to get you started in Monad. I’ve been writing a few myself, so it is cool to see how others are using it. There are some really interesting ones that do crazy things like pull RSS feeds, pull info from WMI, interop with Outlook, etc. Good stuff. There is even more information one page up. [via Adam Barr]

CAB Webcast This Thursday

Ron Jacobs, Brad Wilson and myself will be hosting a CAB Webcast this Thursday the 11th. at 10:30 am (PST, GMT -8)

Don’t miss this opportunity to understand the block’s goals and architecture with the team members that are building it. We are planning to do some of the soon-to-be released Hands on Labs, so come check it out.

Please register here&nbsp_place_holder;if you’re interested.