Just sharing some of my inconsequential lunch conversations with you... RSS  

Friday, December 29, 2006

The role of software architect

After a very interesting debate over the role of software architecture over lunch, where we compared it against the role of the building architect, I friend of mine sent me this link: Worldwide Institute of Software Architecture.

I particularly liked the definition (straight from the dictionary), the philosophy (and contextualizing with the building architecture evolution), and a very nice tool which I have to try one of this days, Simon Tool.

Thursday, December 28, 2006

How often our predictions fail..

A long time ago, when I was still in college back in the late 80's, early 90's, I firmly believed that the relational database would lost their market share in the year 2000, and the object persistence models (like db4o) and the rest of the object oriented databases family would naturally take their place.

I was obviously wrong. No mater how much we know about the ORM dificulties, we are still using the relational paradigm. And quit rightly, because it as been proven to work. And maybe because we are used to those...

I also failed in the following predictions for the end of the century:

  • "in the early 90s, I predicted the fax would not make it to the 2oth century";
  • "in the early 90s, I predicted voice would be only transported over data channels until the end of the century".
Man, was I wrong :)

Tuesday, December 26, 2006

Enterprise Library for .NET Framework 3.0

Here's P&P Christmas gift for the geeks: a partial implementation of the Validation Application Block, Application Block Software Factory, Visual Studio-integrated config tool, DAAB enhancements and more.

Thursday, December 21, 2006

Frequently Asked Questions About the Home Use Program available to qualifying Microsoft Volume Licensing customers

The Home Use Program is a benefit of Software Assurance, one of Microsoft’s volume licensing programs. It provides a simple way for employers to enable employees to work at home with the same Microsoft® products they use at work.

Answers to frequently asked questions about the Home Use Program available to qualifying Microsoft Volume Licensing customers.

REF: "Google kills SOAP!"

Vasters posted a very interesting article about the Google search API change. Rather than observing from the technological view, he rather analyze it by the business side.

Tuesday, December 19, 2006

The Mythical Man-Month

I'm revisiting an old friend of ours, The Mythical Man-Month.

From wikipedia:

The Mythical Man-Month: Essays on Software Engineering is a book on software project management by Fred Brooks, whose central theme is that "Adding manpower to a late software project makes it later." This idea is known as Brooks' law, and is presented along with the second-system effect and advocacy of prototyping. The work was first published in 1975, and republished as an anniversary edition in 1995 (ISBN 0-201-83595-9) with the essay No Silver Bullet and commentary by the author.

I'm recovering this old issue after earing a podcast (from DotnetRocks, if I remember), where this concept was very well illustrated as: "9 women can't make a baby in 1 month".

Now seriously, I should now explain why this article is labeled as "architecture": it's because one of the goals we should pursuit when architecting and choosing methodologies should be the contention of the mythical man-month issue.

Monday, December 18, 2006

Where's i-Technology Headed in 2007, Java people say?

Here are the trends, as Java people see it.

Some of my references and comments:

  • 'A slowdown in the AJAX hype': yeap!
  • 'The open-sourcing of Java will have no effect whatsoever on Java's slow decline in favor of dynamic languages (Ruby, Python) and C#'. More, I don't think there will be as many defections from C# to the dynamic languages, as from Java.
  • 'IE 7 will have a fast adoption curve and so Firefox will cease gaining market share' - Yeap.
  • 'IT finally admits that there is no silver bullet'. Eh, eh, eh, I agree. But I must confess, I was once young and I did believe on new silver bullets every year.
  • 'The enterprise will embrace ways to simplify development by continuing to embrace open source software and Agile Development strategies'. Yeap, not in a "all I need is open source", but more like "open source has it's place". As most definitely, alse Agile development strategies!
  • 'Dynamic languages and frameworks will continue to make leaps in popularity and adoption. Given the current squeeze on technology talent in the US, companies are going to have to learn how to do more with fewer resources. Moving to dynamic languages and frameworks as well as other simplification such as varying Agile software development practices will enable this to take place.' This is the american development community response to foreign outsourcing. And this is the way to go - I'm only sorry that this was not the answer for many people when their jobs weren't at risk...

VMware to Microsoft Virtual Machine Conversion

Here is a pretty little tool: VMDK(VMWare) to VHD Converter.

From bink.nu:

Anyway I've run through a conversion and it worked a treat. I used the 'Dugie-thumb-in-the-air' guide below:
  • 'Scrub' the VMware Image using the first half of that very fine guide from Chris Wolf over at SearchServerVirtualization.com
  • Use VMDK2VHD to convert the VMDK virtual disk to to a VHD
  • Create a new VMC with roughly the same hardware (IDE drives, etc, etc) in Virtual PC 2007
  • Attach your newly created and converted VHD
  • Power up you new VMC, login and wait (a few minutes) for *all* the new hardware to be detected
  • I clicked cancel to the new hardware driver wizard
  • I also clicked no to the reboot - hey livin on the edge here
  • Install the Virtual Machine additions (v13.724)
  • Reboot
  • Let the hardware wizard run
  • Tada!

The VMDK was 1,986 Mb and it converted to a 2,001 Mb VHD in about 15 minutes on my aging T41p laptop.
Overall with VM reboots, coffee, etc, etc the whole conversion took about 40 minutes (I really should have done a screen cast of the whole process!?)

REF: Using the Rake Build Language

Despite my visceral hate for languages like Ruby, here is an good example of (internal) DSL usage, from Fowler's site:

Rake is a build language, similar in purpose to make and ant. Like make and
ant it's a Domain Specific Language, unlike those two it's an internal DSL programmed in the Ruby language. In this article I introduce rake and describe some interesting things that came out of my use of rake to build this web site: dependency models, synthesized tasks, custom build routines and debugging the build script.

Very interesting from the DSL perspective. Hope I will never have to use it :)

Visual Studio 2005 Service Pack 1 now available

I know, this is old news from last friday, but I've only read it now. Here's the reference from theserverside.net, and my personal comment: Visual Studio 2005 Team Suite SP1 is 431MB! Is this a reasonable size for an SP?!?!

More than a year after the release of Visual Studio 2005, Microsoft has finished VS 2005 SP 1. The service pack addresses issues Microsoft discovered through both internal testing and customer feedback.

In all, there are more than 70 enhancements, ranging from support for mobile devices and the SQL Sever Compact Edition to integration with Excel 2007 and Project 2007. In addition, the service pack includes the Web Application Project, which is a previously released tool for migrating Web apps from ASP.NET 1.x to ASP.NET 2.0.

Three service packs are available now:

Finally, there is a Visual Studio 2005 SP1 Update for Windows Vista Beta. This service pack, aimed at developers using VS 2005 in conjunction with Vista, will officially ship after the new operating system ships in early 2007.

If you're having trouble installing SP1, please check out this link.

Tuesday, December 12, 2006

Windows development chief: 'I would buy a Mac if I didn't work for Microsoft'

And you would be very well served, it's a beautiful OS. But so is XP and Vista. And Linux. If I had James Allchin 's budget, I would get a bunch of different OSs, and installed them on a bunch of machines.

But that's not the issue. According to this article, Allchin was caught with is pants down on his mails.

"In my view, we lost our way," Allchin, the co-president of Microsoft's platform and services division, wrote in an e-mail dated Jan. 7, 2004. The e-mail was presented as evidence late last week in the Iowa antitrust trial, Comes v. Microsoft Corp.

"I think our teams lost sight of what bug-free means, what resilience means, what full scenarios mean, what security means, what performance means, how important current applications are, and really understanding what the most important problems our customers face are. I see lots of random features and some great vision, but that does not translate into great products."

The article end with this funny statement:
Conlin also presented evidence of a job description for Bill Gates' technical assistant, whose primary duty was to make sure no permanent record of Gates' e-mail existed, Conlin said, according to transcripts.

Well, maybe Microsoft's success is based on this actions: when pushed, they react and respond like hell breaking loose!... And so the Linux threat seems under control. But watch out for Apple...

[update] Allchin Explains the "Buy a Mac" Statement

Anders Hejlsberg on dynamic/static religious wars

Hejlsberg in his best:

'When you ask why people like dynamic language, people often say it's because [they] have to write less or because it’s terser or succinct and you try and dig a little bit…and often one of the reasons that gets cited is there are no types there, and therefore types get in the way. We all know that strong typing is a sort of a lever. And the further you dial it up the more painful it gets.'

'However, one of the things that we are learning a lot from functional programming languages is in the area of type inference. It is one of those … 'have your cake and eat it too' kind of things. It is actually strongly typed'

'When types are gone, there are just a lot of things a tool can no longer do for you,'' Hejlsberg advised, adding that his approach was to look for ''the happy medium.'

I couldn't agree more!

Monday, December 11, 2006

REF: Lambda expressions explained like nowhere else!

B# .NET has posted a great article about lambda expressions, and a real case of usage evolution. The goal is to eliminate noise using a feature in C# 3.0, based on functional programming concepts (lambda calculus).

Check out the rest of the series:

Title: C# 3.0 Feature Focus - Part 1 - Local Type Inference
Title: C# 3.0 Feature Focus - Part 2 - Object Initializers
Title: C# 3.0 Feature Focus - Part 3 - Collection Initializers
Title: C# 3.0 Feature Focus - Part 4 - Extension Methods

Microsoft and McLaren Electronic Systems Win Race to Provide Electronic Technology to the FIA Formula One World Championship

Yeap, it looks like crazy, but the ECUs in F1 cars will be shipped by Microsoft.

PARIS — Dec. 11, 2006 Microsoft Corp. and McLaren Electronic Systems (MES) today formally announced that they are to be the official suppliers of engine control units (ECUs) to the Fédèration Internationale de l’Automobile (FIA) Formula One World Championship for the 2008, 2009 and 2010 racing seasons.

Ok, this is not the NT kernel that will ship in the ECUs, and yes, it's probably a marketing operation, but one thing's for sure: slowly but steadily, the market in recognizing Microsoft's ability to ship quality products and services. It's about time. Good for you, Microsoft.

PS: ok, Microsoft still ships lots of crappy products, the question is: who doesn't?...

Saturday, December 09, 2006

NDAS - 2ª generation of great technology for the poor

Some days ago I stumbled upon this cool technology: NDAS (Network Direct Attached Storage) is Ximeta's patented technology which enables all digital storage devices(HDD, ODD, Memory, Tape Drives) direct connection into standard Ethernet networks. All users or systems on the network can directly control, use and share those devices.

I can't help seeing NDAS as:

 NDAS = coolVersionForThePoor (
iSCSI = (
coolVersionForThePoor (SAN)

Comparing NDAS to NAS, Ximeta got something like:

NDAS system
NAS system
Next generation advanced technology
Based on old technology (PC file sharing)
Higher performance (up to 6 times faster)
Lower and limited performance
RAID, Aggregation, Mirroring, unlimited expansion
Not possible between multiple NAS systems
Simple, easy, no need IP setting
Complex, difficult, IP setting, DHCP setting required
Strong security (Limited to local network, safe from internet hacking)
Weak security (Open to the Internet)
Block level storage (user has full control of storage)
Folder sharing (users can not format, partition or choose other file systems, etc.)
Multimedia application, most suitable for
Can not support enough performance for multimedia
Consumer electronics compatibility
More difficult to use with consumer electronics
Cost-effective, simple structure, fewer sources of problems
High cost, complex structure, more sources of problems

Cool, hum? I particulary liked the block level storage - wouldn't it be cool to have a bunch of this drives in RAID0 serving for SQL Server or Oracle storage over a Gigabit LAN? And pay €179 for a 400GB storage facility?

Peaty this is a propriety solution, not an open and supported one. Maybe one day...

How the solution will be based on solutions, not projects

I've started my career doing projects for a year or so. Then I switched to products for some years. Then back to projects. And again to products. And I'm currently back on projects. Do you notice a trend, or just an inconsistent career?

Now seriously, as so many things in live, the trends come tend to be circular. And we all have experience the cycle:

  • a) this is the way to go, let's just use/build a product
  • b) oops, the product customization is harder then we thought
  • c) arghh, I'll never choose a product as long as I live
  • d) projects are just too expensive, why not give products a chance?
Though circular, my opinion is that the cycle's trend tend to the product side. And the balance will finally start favoring product with the SaaS trend we are experiencing. After Salesforce success, Microsoft is jumping over the SaaS market with the Office Live, a small business web site (external) and collaborative (internal) service. The SaaS rush will finally start!

Even the information systems will soon be implemented over solutions, not as custom-from-ground-up projects. And they won't be implemented by consultants, but by the business people - well, the very geek business people, but nevertheless, business people. And yes, one of the greater problem we have, the extraction of business processes will finally go away! But then so will our most of our jobs, won't they?

Wednesday, December 06, 2006

Windows Vista Volume Activation 2.0 Technical Guidance

As much as I agree with stopping piracy, I'm not so sure making Vista VLK hard to install is a good thing for Microsoft. But well, here's the documentation:

  • Volume Activation 2.0 Step by Step Guide - This guide provides planning, deployment and operational guidance for activating volume editions of the Windows Vista operating system.
  • Volume Activation 2.0 FAQ - This document provides answers to frequently asked questions about Windows Vista Volume Activation 2.0.
  • Volume Activation 2.0 Technical Attributes - This spreadsheet lists WMI properties, WMI methods, KMS registry keys and values, KMS log events, KMS error codes and KMS PRC messages.
  • StandardUserProductActivation.zip - This contains the Standard User Product Activation webpage. This webpage is used for simplifying Standard User recovery from Reduced Functionality Mode (RFM). Refer to Volume Activation 2.0 Step-by-Step Guide for instructions.

Sysinternals Suite

Probably not news, but news to me! Sysinternals has a AllInOne download package - they call it suite. Here's the link.

Tuesday, December 05, 2006

REF: Script#

Will we finally have a decent scripting language on our browsers?

The latest release of Script# (, also published today, contains a code-behind model that allows me to add c# code-behind to a page, and have that converted into script. I'll blog more about that in the coming days, but this post is mostly about WPF/E.

Here is a portion of my Scriptlet class, which contains c# code-behind for the page. The code in bold shows the scriptlet instantiating a WPF/E plugin instance with some XAML markup.

using System;
using System.DHTML;
using System.WPFE;
using ScriptFX.UI;

namespace PhotoViewer {

public sealed class PhotoViewerScriptlet : IDisposable {
private PhotoViewerControl _photoViewerControl;

public static void Main(Dictionary arguments) {
PhotoViewerScriptlet scriptlet = new PhotoViewerScriptlet(arguments);

private PhotoViewerScriptlet(Dictionary arguments) {
Button searchButton = new Button((DOMElement)arguments["SearchButtonElement"]);
searchButton.Click += OnSearchLinkClick;

WPFEPlayer player =
"Black", /* windowLess */ true);
_photoViewerControl =
new PhotoViewerControl(player, (string)arguments["FlickrKey"]);

private void OnSearchLinkClick(object sender, EventArgs e) {
string[] tags = _tagsTextBox.Text.Trim().Split(' ');


And here is some code from the PhotoViewerControl that wraps the WPF/E plugin and implements the functionality to make requests to Flickr and progress the presentation from one photo to the next.

internal sealed class PhotoViewerControl : IDisposable {

private WPFEPlayer _player;
private string _flickrKey;

private Image _photo1;
private TextBlock _title1;
private Storyboard _storyboard1;

private HTTPRequest _request;

private Photo[] _photos;
private int _nextPhoto1;

public PhotoViewerControl(WPFEPlayer player, string flickrKey) {
_player = player;
_flickrKey = flickrKey;

public void Initialize() {
_photo1 = (Image)_player.FindName("image1");
_title1 = (TextBlock)_player.FindName("title1");
_storyboard1 = (Storyboard)_player.FindName("storyboard1");

public void Start(string[] tags) {
Dictionary scriptTransportParams = new Dictionary();
scriptTransportParams["callbackParameterName"] = "jsoncallback";

string uri = String.Format(FlickrSearchURLFormat, _flickrKey, tags.Join("+"));
uri = HTTPTransport.CreateURI(uri, typeof(ScriptTransport), scriptTransportParams);

_request = HTTPRequest.CreateRequest(uri, HTTPVerb.GET);
_request.Invoke(OnRequestComplete, null);

private void OnRequestComplete(HTTPRequest request, object userContext) {
IHTTPResponse response = request.Response;

if (response.StatusCode == HTTPStatusCode.OK) {
PhotoSearchResponse searchResponse = (PhotoSearchResponse)response.GetObject();
_photos = searchResponse.photos.photo;

private static string CreateFlickrPhotoURL(Photo photo) {
return String.Format(FlickrPhotoURLFormat, photo.server, photo.id, photo.secret);

private void ShowFirstPhoto() {
_photo1.Source = CreateFlickrPhotoURL(_photos[_nextPhoto1]);
_title1.Text = _photos[_nextPhoto1].title;
Window.SetTimeout(StartFirstTimeline, 1000);

_nextPhoto1 += 2;
if (_nextPhoto1 >= _photos.Length) {
_nextPhoto1 = 0;

private void StartInternal() {
_nextPhoto1 = 0;

Window.SetTimeout(ShowSecondPhoto, 8000);

private void StartFirstTimeline() {
Window.SetTimeout(ShowFirstPhoto, 14000);

One other thing to observe in the sample... the sample makes requests to the Flickr service directly without going through a server-side proxy. To make these cross-domain calls successfully, It uses

tags rather than XMLHttp to work against Flickr, and uses the JSONP support provided by the service. Script# provides a mechanism to work against this protocol transparently by hiding away the plumbing in the ScriptTransport class that is referenced in the code above. If this is of interest, drop me a comment, and I'll blog about it further.

The sample is packaged into the Script# msi that you can download to delve into the code. In addition to this sample, the msi contains the Script# compiler, and various other samples. There is also a document with a how-to guide on using Script# with a lot of new content, that should help you get up and running using the installed project templates.

in: nikhilt.net

Monday, December 04, 2006

Flash Killer is on his way - WPF/E

"WPF/E" is the Microsoft solution for delivering rich, cross-platform, interactive experiences including animation, graphics, audio, and video for the Web and beyond. Utilizing a subset of XAML (eXtensible Application Markup Language)-based Windows Presentation Foundation technology, “WPF/E” will enable the creation of content and applications that run within multiple browsers and operating systems (Windows and Macintosh) using Web standards for programmability. Consistent with Web architecture, the XAML markup is programmable using JavaScript and works well with ASP.NET AJAX. Broadly available for customers in the first half of 2007, “WPF/E” experiences will require a lightweight browser plug-in made freely available by Microsoft.

SQL Server Best Practices

Microsoft has announced a new web site for database administrators and developers called SQL Server - Best Practices. This site offers a wide range of material from top 10 lists suitable for novices to the in-depth technical white papers needed by seasoned professionals.


in: infoq.com

The Linux Equivalent Project

The goal is to provide an informational and available website for all linux users.

As of today, this is what's loaded:

Windows Software Linux Equivalent
Adobe Audition
Audacity ( http://audacity.sourceforge.net/ )
Adobe Illustrator
Inkscape ( http://www.inkscape.org/ )
Sodipodi ( http://www.sodipodi.com/index.php3 )
Adobe PageMaker
Scribus ( http://www.scribus.net/ )
Adobe PhotoAlbum
F-Spot ( http://f-spot.org/Main_Page )
Adobe Photoshop
GIMP ( http://www.gimp.org/ )
Adobe Premier
LiVES ( http://lives.sourceforge.net/ )
Cinelerra ( http://cvs.cinelerra.org/ )
kdenlive ( http://kdenlive.sourceforge.net/ )
AOL Instant Messenger (AIM)
Kopete ( http://kopete.kde.org/ )
Gaim ( http://gaim.sourceforge.net )
Sound Juicer ( http://www.burtonini.com/blog/computers/sound-juicer )
Grip ( http://nostatic.org/grip/ )
Quanta Plus ( http://quanta.kdewebdev.org/ )
Nvu ( http://www.nvu.com/index.php )
Bluefish ( http://bluefish.openoffice.nl/index.html )
k9copy ( http://k9copy.sourceforge.net/ )
OGMRip ( http://ogmrip.sourceforge.net/ )
xdvdshrink ( http://dvdshrink.sourceforge.net/ )
qVamps ( http://vamps.sourceforge.net/ )
dvd::rip ( http://www.exit1.org/dvdrip/ )
AcidRip ( http://untrepid.com/acidrip/ )
Banshee ( http://banshee-project.org/Main_Page )
Amarok ( http://amarok.kde.org/ )
Microsoft Frontpage
Quanta Plus ( http://quanta.kdewebdev.org/ )
Nvu ( http://www.nvu.com/index.php )
Bluefish ( http://bluefish.openoffice.nl/index.html )
Microsoft HyperTerminal
minicom ( http://alioth.debian.org/projects/minicom/ )
Microsoft Internet Explorer
Firefox ( http://www.mozilla.com/firefox/ )
Microsoft Office
KOffice ( http://www.koffice.org/ )
OpenOffice ( http://www.openoffice.org/ )
Microsoft Windows Media Center
Freevo ( http://freevo.sourceforge.net/ )
Elisa Media Center ( http://www.fluendo.com/elisa/ )
MythTV ( http://www.mythtv.org )
BitchX ( http://www.bitchx.org/ )
Xchat ( http://www.xchat.org/ )
ChatZilla! ( http://chatzilla.hacksrus.com/ )
irssi ( http://www.irssi.org/ )
Gaim ( http://gaim.sourceforge.net )
EasyTAG ( http://easytag.sourceforge.net/ )
Nero Burning Rom
X-CD-Roast ( http://www.xcdroast.org/ )
K3b ( http://www.k3b.org/ )
tpad ( http://tclpad.sourceforge.net/ )
KMyMoney ( http://kmymoney2.sourceforge.net/ )
GNUcash ( http://www.gnucash.org/ )
Gnofin ( http://gnofin.sourceforge.net/ )
Grisbi ( http://www.grisbi.org/ )
Nicotine ( http://nicotine.thegraveyard.org/ )
mplayer ( http://www.mplayerhq.hu/design7/news.html )
XMMS ( http://www.xmms.org/ )
Windows Movie Maker
LiVES ( http://lives.sourceforge.net/ )
Cinelerra ( http://cvs.cinelerra.org/ )
kdenlive ( http://kdenlive.sourceforge.net/ )
gFTP ( http://gftp.seul.org/ )
FireFTP ( http://fireftp.mozdev.org/ )

Sunday, December 03, 2006

Management in the Portuguese Public Sector

[This post's addressing is broader to Project Management - I just didn't find necessary to open a 'Management' label.]

My father is taking a course in public administration management. The course is 'FORGEP - Formação em Gestão Pública', targets middle management and consists of:

  • 120 hours of classes
  • 60 hours of e-learning
  • hundred of hours in reading material
  • workgroup projects
  • a final certification exam
The program is very interesting:

1. Ethics, Public Administration and Public Administration Management
2. Leadership and Leadership Management
3. Budget and Resource Management
4. Technological Management
5. Innovation and Quality
6. Internationalization and prospective

I found the course very appealing, and I'm very pleased to find the Portuguese Public Sector is narrowing the gap to us in the private world :)

Good luck for your exam, dad :)

Friday, December 01, 2006

The importance of Project Management Certification

I was just chatting with a customer this morning, an IT department manager on a large portuguese organization, when he mentioned how much he valued the project management certification process that is taking place on another consulting company that is working for them. I was glad to tell him that the consulting company where I work was one of the first ones to certify project managers at APOGEP, and remains one of the top portuguese companies on regard to certified managers.

This was the first time I felt the Project Management Certification was meaningful for a client. There will be a day in the future were Project Management Certification will be a must in most projects, no doubt about it. But after this morning, this day looks a lot closer :)

Thursday, November 30, 2006

Microsoft beats Oracle in security showdown

Uau, someone is getting beaten by Microsoft on security? This I've got to see!

Taken from vnunet.

TFS Permission Manager 1.0

This is one of the costs of the community model: overlapping. The TFS Permission Manager is out, and some overlapping with TFSAdmin is expected. Let the best win :)

Working with Team Foundation Server we have to perform various repeating task related to user declaration and permission setting. I already wrote about TFS permission and tools. Managing permissions is complicated, and from time to time quite frustrating. I've decided that it would be a better use of my time to assemble such a tool than just manually applying permissions again and again...

REF: Table of Cool .NET Tools

Here some some cool .NET tools from MSDN / codeplex Mike Stall's as selected:

Tool Summary Where to get it Links
CLR Profiler Easy way to measure memory performance for managed apps. Download for .NET 2.0, .NET 1.1 Tutorial
Perf Console Awesome for analyzing performance issues for apps.
This makes perf analysis surprisingly easy to do and is perfect for the non-perf person.
Download Demo, details
Power Shell A shell scripting language that's infinitely better than batch files. Download Tutorial, Blog, MSDN
Iron Python Python on .NET See link on homepage. Source code Homepage, Tutorial included in download.
MS Build Way better than NMake. Included in .NET redist. Tutorial, Blog, Forum
MDbg Managed wrappers for debugging managed apps. Download (Also in the SDK) Forum, Other Links

Wednesday, November 29, 2006

Windows Vista on an old laptop

After several installations on some up to date machines, I decided to have a go on an old laptop.

The Specs
Celeron 600MHz, 512 MB RAM

The Pre-Instalation Process
The installation started asking for:

  • Documents and Settings Transfer
  • Hardware advisor application
The Instalation Process
I chose to upgrade from XP, and the installer throw me the exact number of few question I was expecting. This was an fresh XP installation I did a month ago. I used Office and Visual Studio, and was quite pleased with the response I got from such an old CPU.

The installation process was, as expected, lengthy (over 6H!). The installer didn't try to predict the ETA, just said something like "Your upgrade may take several hours to complete". Well done, Microsoft, nobody will accuse you of failing the installations ETAs again :)

Software upgrade results
The upgrade went smoothly except for Visual Studio 2005 that stop working, forcing a repair.

Hardware upgrade results
The hardware recognition was satisfactory. It failed to recognize my BlueTooth dongle, and some of the notebook utilities.

The real problem was the video adapter - it's using the SVGA standart driver. So we cannot expect much for video performance. I would call it a fair performance for a standart SVGA driver.

The Veredict
From a not so slow as expected XP installation, I successfully upgraded it to a not too much slower Vista.

I specially noticed some overhead on explorer itself - much of it probably dued to the SVGA standart driver and the fact that this was an upgrade, not a clean install - please note that the hard disk is an old 4200 rpm.

I know this notebook has way too much memory for what a Celeron at 600 were used to. But the fact is that in much of the time, it works better than my other XP notebook, a Celeron 1100 with 128MB of memory (this was the notebook were I've tried to install Ubunto in quest of better responsiveness , only to rollback to XP again...)

Bottom line is: I'll stick with Vista! But XP still has an advantage, at least on memory consumption. So let there be memory.

[update information]
One huge overhead I've been experiencing over XP is on file system access. For instance, the security information change does something like 2 changes per second! Copy from and to the same disk displays 40 bytes/sec!... And yes, advanced performance is enabled - in despair...

TeamWord 1.0beta

Here's a must for Project Managers who hasn't Visual Studio Installed not want to use the Web Interface:

TeamWord is add-in created with .NET 2.0 for Microsoft Word 2003 to enable users (analytics, programmers, project managers etc.) that use Microsoft Team Foundation Server for work item tracking to use Word as the front-end for editing work items. TeamWord allows user to insert work item directly in an existing document, thus allowing tracking work item status from the place of their origin.

For example - when writing a meeting summary, you can add a work item for each problem, each of it in a different Team Project, assign these work items to the corresponding persons etc. And after that, to see if everything has been done, you don’t have to open up Team Explorer or other application - just open the same Word document and it will load all information for these work items right back in your document.

Tuesday, November 28, 2006

Managing distance

I've been retained at home with a food intoxication for a couple of days.

Has I was still able to work, I've been trying the remote work paradigm. This are my first impressions:


  • much lesser interruptions - I could actually clean up my inbox :)
  • communication over teleconference or IM is hardly a substitute for direct contact
  • seriously missed the human contact - I frequently ended up over asking for project status!

I don't remember where I got it, but somewhere I read something like "there's a distance limit to manage teams, and this limit is about 30 feet". Ok, now seriously, this limit was for a specific type of team (a team developing a new product, if I remember it correctly).

For over 30 feet, big cultural changes must happen...

New Application Block: Validation Application Block

Tom Hollander is announcing the Validation Application Block.

This is one of the blocks I believe most enterprise libs has implemented, so I'm looking forward to port our implementation to p&p's one.

Monday, November 27, 2006

Anders Hejlsberg and Chris McConnell's reflections

Anders Hejlsberg and Chris McConnell: Reflections on LINQ, Desktop Search, WinFS, Functional and Intentional Programming is a video you just can't miss.

This interview started justifying WinFS dropout. McConnell identifies WinFS keypoints as:
. SQL Engine
. standart Schema
. Object Mapping 'stuff'

McConnell advocates LINQ as a better Object Mapping, and Desktop Search Engine as providing a schema that is a lot more practical at this point.

Hejlsberg is also on a pragmatic mood. He believes the smooth introduction of new paradigms to the programming model people already are familiarized ("mainstream more statically typed languages like C#") is the way to go. He also believes that "one of the really interesting aspects of functional programming is that for a certain class of problems if you can express them functionally you stand in a much better chance of executing them efficiently on many core machines."

One last thing worth mentioning on the Intentional Programming arena: "to what extend we can teach programmers not to write instances of the program, but rather write the classes (the code generators)". Yeap, I can relate to that.

Sunday, November 26, 2006

Can a Manager Be a Techie and Survive?

Though in an different perspective from my posting, the article that triggered it was this one.

Some people say that good managers should not be technical at all. Others say the exact opposite. I say: it depends...

Yes is true, throwing to much attention to technical issues can divert you from a broader management view. But it's also true that on some particular areas the technical baggage can help you creating the perspective view some managers lack.

And yes, as a general rule of thumb, managers should have their masters in management, not in technology. But don't we all know excellent managers that are still mad about technology?

One thing is for sure: when overlapping management and technical roles, be sure to "change your role hat" accordingly with what you are doing - messing this hats can and will be harmful to your projects.

Friday, November 24, 2006

What the World is saying about LINQ

I was following some treads about LINQ, when I stumbled uppon this article.

The reference that I just loved is:

LINQ is divine but DLINQ is a delinquent. It gives programmers too much power and makes programming against data way too easy. Is nothing sacred anymore?

Ned Flanders

Thursday, November 23, 2006

GUI Architectures

In this fabulous article (presently as WIP), Fowler presents us with different approaches over rich client architectures.

He ends the article stating:

In the past few years there's been a strong fashion for writing self-testing code. Despite being the last person to ask about fashion sense, this is a movement that I'm thoroughly immersed in. Many of my colleagues are big fans of xUnit frameworks, automated regression tests, Test-Driven Development, Continuous Integration and similar buzzwords.

When people talk about self-testing code user-interfaces quickly raise their head as a problem. Many people find that testing GUIs to be somewhere between tough and impossible. This is largely because UIs are tightly coupled into the overall UI environment and difficult to tease apart and test in pieces.

Sometimes this test difficulty is over-stated. You can often get surprisingly far by creating widgets and manipulating them in test code. But there are occasions where this is impossible, you miss important interactions, there are threading issues, and the tests are too slow to run.

As a result there's been a steady movement to design UIs in such a way that minimizes the behavior in objects that are awkward to test. Michael Feathers crisply summed up this approach in The Humble Dialog Box. Gerard Meszaros generalized this notion to idea of a Humble Object - any object that is difficult to test should have minimal behavior. That way if we are unable to include it in our test suites we minimize the chances of an undetected failure.

The Humble Dialog Box paper uses a presenter, but in a much deeper way than the original MVP. Not just does the presenter decide how to react to user events, it also handles the population of data in the UI widgets themselves. As a result the widgets no longer have, nor need, visibility to the model; they form a Passive View, manipulated by the presenter.

This isn't the only way to make the UI humble. Another approach is to use Presentation Model, although then you do need a bit more behavior in the widgets, enough for the widgets to know how to map themselves to the Presentation Model.

The key to both approaches is that by testing the presenter or by testing the presentation model, you test most of the risk of the UI without having to touch the hard-to-test widgets.

With Presentation Model you do this by having all the actual decision making made by the Presentation Model. All user events and display logic is routed to the Presentation Model, so that all the widgets have to do is map themselves to properties of the Presentation Model. You can then test most of the behavior of the Presentation Model without any widgets being present - the only remaining risk lies in the widget mapping. Provided that this is simple you can live with not testing it. In this case the screen isn't quite as humble as with the Passive View approach, but the difference is small.

Since Passive View makes the widgets entirely humble, without even a mapping present, Passive View eliminates even the small risk present with Presentation Model. The cost however is that you need a Test Double to mimic the screen during your test runs - which is extra machinery you need to build.

A similar trade-off exists with Supervising Controller. Having the view do simple mappings introduces some risk but with the benefit (as with Presentation Model) of being able to specify simple mapping declaratively. Mappings will tend to be smaller for Supervising Controller than for Presentation Model as even complex updates will be determined by the Presentation Model and mapped, while a Supervising Controller will manipulate the widgets for complex cases without any mapping involved.

And finally, don't miss this contribution from acknowledgements:

... Many people in those days considered it impractical to use a virtual machine. I wonder what our prior selves would have thought to see me running Smalltalk 80 in a virtual machine written in VisualWorks running in the VisualWorks virtual machine on Windows XP running in a VMware virtual machine running on Ubuntu.

Here's virtual to you :)

Concepts behind the C# 3.0 language

Tomas Petricek has just posted this article where he presents the influence presence from previous research and experimental languages developed at Microsoft Research - namely F# and Cω.

Wednesday, November 22, 2006

Top 3 Free Product Key Finder Programs

If you're preparing to reinstall Microsoft Windows or Microsoft Office you will need to locate your copy of the software's product key (CD key). Normally this product key is located with the manual or CD that came with your software.

If you've lost your product key you can often times find it in the registry but this can be very difficult to impossible to retrieve manually. Luckily, there are many free key finder programs available to help.

Below are the top 3 free key finder programs.

1) Magical Jelly Bean Keyfinder

The Magical Jelly Bean Keyfinder program is a free utility that retrieves product keys from the registry. It also has the ability to change the product key for the Windows XP operating system if need be.

Advantages include very small size, ease of use, no installation required, instant display of product keys and multiple product key saving options.

Finds Keys for Operating Systems: Microsoft Windows 95, Windows 98, Windows ME, Windows NT4, Windows 2000, Windows XP, Windows Server 2003 and Windows Vista.

Finds Keys for Other Software: Microsoft Office 97, Office XP and Office 2003.

2) WinKeyFinder

The WinKeyFinder program is another free utility that retrieves product keys from the Windows registry.

Advantages include small program size, no installation required, and additional features such as a password generator and registered user information.

Finds Keys for Operating Systems: Microsoft Windows 98, Windows ME, Windows 2000, Windows XP and Windows Server 2003.

Finds Keys for Other Software: Microsoft Office 97, Office 2000, Office XP and Office 2003.

3) RockXP

RockXP is another free program that retrieves lost product keys from the registry.

Advantages include small program size, no installation required, and additional features such as a password generator and password retriever.

Finds Keys for Operating Systems: Microsoft Windows XP.

Finds Keys for Other Software: Microsoft Office 2003.

An introductory guide to Windows Memory Management

Now that Vista's Task Manager changed over good old XP, I deeply recommend reading a good article about Windows Memory Management. I've just found this one.

Tuesday, November 21, 2006

2007 Trends, according to Evdemon

Here are Evdemon's 2007 trends - well, mostly BPM trends, but nevertheless, trends :)

I specially like the last:

10. IT finally admits that there is no silver bullet. Every year I hope to see this happen and every year my hopes are crushed by buzz-word of the minute hype machines. Hey I can dream, can’t I?

Monday, November 20, 2006

Ending SQL dependency

Yes, I know, this is one of those articles that surely will make many people angry.

For years I want to stop seeing so much SQL in the applications I architect!

Why? Because I believe that DBAs are too much a limited and expensive resource to use for most of our application design. And because SQL by itself doesn't promote strongly typing, or Intellisense discoverability. Among others.

And so I'm a firm believer on ORMs. More, I believe that the problems stated in the The Vietnam of Computer Science will be largely surpassed by the benefits it brings - even before the arrival of the LINQ initiative.

So I keep dreaming on applications where only 5% of the relational algebra is made in SQL - 0% in the long term. And the dream is feasible for most of my application. Except for the #&%$"&%$# most applications must have: the migration!

Yes, for the migration we still must depend heavily on SQL. When the ORM war is over, we'll still have this one to battle.

And even those are nothing but intermediate steps on a much broader roadmap. But that's a story for a future posting...

Comunidade MOSS Portuguesa (MOSS Portuguese community)

A new MOSS community is born, the Comunidade MOSS Portuguesa (MOSS Portuguese Community) is created with the objective of providing MOSS articles, opinions and contents in Portuguese.

The blog is divided in 4 main categories:

  • MOSS (Microsoft Office Sharepoint Server 2007)
  • WSS (Windows Sharepoint Services 3.0)
  • WCM (Web Content Management)
  • Shared Services

The founders are my good friends Ricardo Magalhães and Bruno Valente, from Link Consulting and Microsoft Portugal.

Announcing SDLC-in-a-Box version 2.0

Announcing SDLC-in-a-Box version 2.0!


We [they] are pleased to announce the release of SDLC-in-a-Box version 2.0! With more than 75 partners in over 10 countries already signed up, we are excited about partners being more prepared than ever to deliver Visual Studio Team System deep-dive and implementation training for customers. We encourage you to visit the site, become familiar with the program, and engage your Microsoft account team and Training or Consulting Partner to begin the Application Lifecycle Management assessment within your own organization. If you are a partner, sign up now, download SDLC-in-a-Box, and start training now!

Program Highlights

One of the most demanded features for this release was the inclusion of complimentary Visual Studio Partner products for functional areas such as Requirements Management, that when combined into a single demo, illustrate the richness of the Microsoft Application Lifecycle Management tools platform. SDLC-in-a-Box version 2.0 includes product integrations from Sparx Systems, Personify, TeamLook and DevBiz, not to mention the inclusion of RASK, a Microsoft Requirements Authoring Starter Kit project. This comprehensive demonstration environment makes this program one of the most compelling examples of a customer’s real-world ALM implementation.

Join the Groove Workspace

Problems installing Office 2007

Before installing Office 2007, please review 2007 Microsoft Office System Known Issues/ReadMe.

Office setup continues to lack the assertive it needed, so I'm afraid the reading of this document cannot be avoid for the most of us that are installing Office on an long-time production desktop :)

Important update:
After reading the previous link, I still couldn't install Office 2K7 until I ran into this great link from Scott Hanselman. Following the link, I found myUninst, a nice tool for uninstalling those unlisted zoombies...

If it still doesn't work, try the following links:

Saturday, November 18, 2006

For much that I hatted Monad..

Let's start making sure I make my self clear: I still hate the Windows Powershell. Probably because each time I think about Monad, silly scripting languages like bash and VBScript come to my mind. And surely because I hate the easiness that is sold with these technologies, on which I don't believe. Did I mention I also hate the over-simplification and sourcecode savings that annoy me so much?

But as much anti PowerShell as I am, I could't help test driving it. Here's the story:

When I VPN to my company, I usually maintain my previous gateway and add the routing entries I need to work on my company's network. So I decided to do automate the operation using the Powershell. Here's the script:

# start VPN


# get my VPN IP

$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" -computername .
$myIP = ""

foreach ($objItem in $colItems)
if ($objItem.Description -like "*PPP*")
$myIP = $objItem.IPAddress

write-host "my IP: " $myIP

# establish necessary manual routing

route add mySubnet0 MASK $myIP
route add
mySubnet1 MASK $myIP
route add
mySubnet2 MASK $myIP

My conclusion is: for most silly Monad seems to be, there is a really need for scripting in this area. And for much it bothers me, not only to the IT people...

Project Management Certification - The Workshop

I've just concluded my level 'C' certification workshop. It was a lot more fun then the previous exam I did for the level 'D' certification. It's the final stage for the APOGEP level 'C' certification. Earier I posted the certification stages.

The certification had 8 candidates - 7 to 'C' level and a 'B' level one, and almost as much people from APOGEP. It was an all day event in a nice hotel in Lisboa's downtown.

The workshop had the 3 components:

  • a project audit
  • a project role playing
  • an interview
They were all very fun to do. In the project audit, we were given a project documentation folder, and had to identify problems and correspondent solutions. Then did a couple of role playing, were we were casted into the roles involved in project management, in pairs, in front of a jury.

Has this was part of an examination, obviously only the auditing capabilities of the process were involved. These processes have an educational potential I feal we have to unleash - project auditing and role playing seems like a great way to share project management best practices, and to help us correcting some limitations we all have.

Finally the workshop ended with an interview, where we defended the report we been working on in the last months. The report was a resumee of our project management experience.

And so my project management workshop is over. Hope that the results of the exam will be positive for all of us.

Enterprise Library for .NET Framework 2.0: Performance Comparison 64-bit vs. 32-bit

P&P team has just release this analysis of the Enterprise Library deployment in both a 32-bit (2 and 4 processor) and 64-bit (2 and 4 processor) environment, where they examine their relative performance to a 32-bit 2 processor server.

The Analysis
The following analysis is of the Enterprise Library deployment in both a 32-bit (2 and 4 processor) and 64-bit (2 and 4 processor) environment and examines their relative performance to a 32-bit 2 processor server. To get a realistic comparison to measure since the 32-bit and 64-bit worlds have differences, the setups used were designed to be as equivalent as possible. The goal was to obtain the relative performance measurements of the Enterprise Library Logging Application Block, Caching Application Block, Data Access Application Block and the scalability from going from a 2 to a 4 bit processor arrangement in each environment. The various configurations and measurement results are below.

Some Fast Answers

  • Q: How long did it take to convert Enterprise Library from 32 bit to 64 bit?
  • A: None, since the .NET Framework uses an intermediate language which is processor independent and uses a just-in-time compiler to convert it to machine code as required by the deployment environment. So it's not a recompile—rather just run it on a 64-bit .NET-based machine—although, there can be specific issues see the section "Moving to the 64-Bit World."

  • Q: Does the Enterprise Library scale?
  • A: Yes, the results show a 50 to 70 % gain in the tested scenarios going from a 2 to 4 processor environment regardless if it's 32 bit or 64 bit, see section 4 for details.

  • Q: What are the gains in going 64 bit?
  • A: Scabililty, see section "Scabililty View of the Caching Block" for details

Friday, November 17, 2006

Starter Kits for Visual Web Developer

Starter Kits for Visual Web Developer

The ASP.NET 2.0 Starter Kits for Visual Web Developer are fully functional sample applications to help you learn ASP.NET 2.0 and accomplish common Web development scenarios. Each sample is complete and well-documented so that you can use the code to kick start your Web projects today!

These kits, once downloaded are integrated directly into the Visual Web Developer 2005 Express Edition or Visual Studio 2005 experience. After downloading and installing the starter kits, please provide feedback on the ASP.NET forums.

Small Business Site Starter Kit (New!)

Small Business Starter Kit

The Small Business Starter Kit provides a sample of a business promotion website suitable for small and medium-sized businesses. It provides a template for customizing and creating a site for your own business out-of-the-box, with advanced features including integration with SQL and XML data sources for content and data management.

» Download the Small Business Site Starter Kit

» Try it Live!

Personal Web Site Starter Kit

Personal Web Site Starter Kit

A typical personal site that includes a photo album system. Also included are static pages for a resume and links. Comes in your choice of white or black... just change the theme!

» Download the Personal Web Site Starter Kit

» Try it Live!

Administrator login:

Username: Admin
Password: 1.admin.1

Member login:

Username: Friend
Password: 1.friend.1

Club Web Site Starter Kit

Club Site Starter Kit

A starting point for creating a web site for your club or organization. Includes a news posting, calendaring, member directory, and photo album systems. Create news announcements and news articles with photos or links to a photo album. Create and view Membership lists of club members. Create photo albums and share the photos from your club activities.

» Download the Club Web Site Starter Kit

» Try it Live!

Administrator login:

Username: Admin
Password: 1.admin.1

Visit the By the Community, For the Community page and view the Extended Club Site Starter Kit created by Brendon Schwartz.

Time Tracker Starter Kit

Time Tracker Starter Kit

A business web application for keeping track of hours spent on a project with the ability to handle multiple resources as well as multiple projects.

» Download the Time Tracker Starter Kit

» Try it Live!

Manager login:

Username: Manager
Password: 1.manager.1

Consultant login:

Username: Consultant
Password: 1.consultant.1

Classifieds Web Site Starter Kit

Classifieds Site Starter Kit

The Classifieds Site Starter Kit provides a complete, ready to run, fully customizable, Web site for listing and managing classified advertisements.

» Download the Classifieds Web Site Starter Kit

TheBeerHouse: CMS & E-commerce Site Starter Kit

Download TheBeerHouse Starter Kit

TheBeerHouse starter kit enables you to implement a website with functionality typically associated with a CMS/e-commerce site. This website demonstrates key features of ASP.NET 2.0 and is the sample used in the book, “ASP.NET 2.0 Website Programming / Problem - Design - Solution.”

» Download TheBeerHouse Site Starter Kit

Paypal eCommerce Site Starter Kit

Download PayPal-enabled eCommerce Starter Kit

The PayPal-enabled eCommerce Starter Kit is an extensible open source web application that allows you to setup and manage your own ecommerce Web site.

» Download the PayPal eCommerce Site Starter Kit

DotNetNuke® Portal Starter Kit

Download DotNetNuke Starter Kit

DotNetNuke is a Web Application Framework ideal for creating and deploying projects such as commercial web sites, corporate intranets and extranets, online publishing portals, and custom vertical applications.

» Download the DotNetNuke Portal Starter Kit

Job Site Starter Kit

Job Site Starter Kit

Job Site Starter Kit is a web application that provides a platform for candidates seeking job and the employers to share their needs. The starter kit demonstrates many new features of ASP.NET 2.0 including themes, master pages, new data controls, membership, roles and profiles

» Download the Job Site Starter Kit

Media Library Starter Kit

Media Library Starter Kit

The Media Share Library Starter Kit enables you to easily create an application that allows registered users to present a collection of media items (such as movie DVD's, music CDs, books, and more) for other registered users to borrow.

» Download the Media Library Starter Kit

Development Catharsis :: Copyright 2006 Mário Romano