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

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

Thursday, November 16, 2006

Visual Studio Team Edition rules!!!

I've been working for some time with Team System, but whenever I enabled Code Coverage and Code Analysis over old projects, I always ended up disabling these, as too much noise appeared.

Now that I'm starting a new project with new methodologies, enabling these make all the sense. I'm specially impressed on how disciplinary Code Analysis can be for me!

By the way, I'm an old time NUnit user that just got converted into Visual Studio Unit Testing. The one I cannot loose for now is good old log4net. But the day will come, sooner or latter...

Visual Studio on Windows Vista

The release of the Windows Vista operating system represents a significant opportunity for developers to build the next generation of applications that deliver compelling user experiences. We want to help you take advantage of this opportunity and assist you in developing and delivering Windows Vista based software faster, more cost effectively, and with greater impact than ever before.

During the development of Windows Vista, several key investments were made to vastly improve overall quality, security, and reliability from previous versions of Windows. We’re also testing to ensure that your .NET Framework 1.1 and 2.0 applications will work on Windows Vista so that your existing applications will continue to run as expected.

While we have made tremendous investments in Windows Vista to ensure backwards compatibility, some of the system enhancements, such as User Access Control, changes to the networking stack, and the new graphics model, make Windows Vista behave differently from previous versions of Windows.

The changes will impact Visual Studio and thus we're unable to support Visual Studio .NET 2002 or Visual Studio .NET 2003 on Windows Vista.

However, your existing .NET Framework 1.1 and 2.0 based applications will continue to work on Windows Vista, and will be able to take advantage of many of the new features available to Windows Vista applications.

For more information about the impact of Windows Vista on Visual Studio please check:

.Net Framework 3.0 Guide

Don't know where to start? Just start here!

NetFXGuide is a community website about the revolutionary world of the .NET Framework 3.0 (formerly WinFX).

NetFXGuide is the new name for WinFXGuide, a website created in May 2006 by two experienced technical architects, Francesco Lomonaco and Stuart Snaddon. They both have contributed to the amazing growth of IPT Ltd, the UK's leading online marketing group.

Wednesday, November 15, 2006

Posting from Windows Live Writer

I'm posting from Windows Live Writer. The experience is really awesome - very rich from the user interface perspective.

Will my errors in English finally stop?

Technorati tags:

Tuesday, November 14, 2006

REF: Prescription for an I.T. Disaster?

Oops, here's a project manager in trouble...

In 2002, the English government embarked on a $12 billion effort to transform its health-care system with information technology. But the country's oversight agency now puts that figure at $24 billion, and two Members of Parliament say the project is "sleepwalking toward disaster."


The difficulty was that the programmers, systems developers and architects involved didn't comprehend some of the terminology used by the British health system a

Technorati tags:

nd, more important, how the system actually operated, the CfH conceded. The solution: In August 2005, the CfH announced it was looking for at least 100 clinicians to spend several weeks in India and Seattle working hand-in-hand with developers to anglicize the new software and "make sure their product is fit for purpose."

REF: C# pulling ahead of Java (and VB)

At last week's Tech-Ed conference in Barcelona, C#'s lead architect Anders Hejlsberg drew large audiences for his sessions on the future of the language. Read all about it here.

C# has come a long way since it emerged from Microsoft's mythical "Project Cool" back in 2000. It is the primary language of Microsoft .NET, and has pulled ahead of Visual Basic among professional Windows programmers.

Web Development Helper

Web Development Helper is an Internet Explorer plugin that provides a set of useful tools to both Ajax/JavaScript developers as well as ASP.NET page and control developers.

Web Development Helper is an Internet Explorer plugin that provides a set of useful tools to both Ajax/JavaScript developers as well as ASP.NET page and control developers.

For client-side script-based development, Web Development Helper provides HTTP tracing capabilities, as well as much improved script diagnostics, and tracing facilities, as well as an immediate window.

For ASP.NET developers, when developing against your site on your local development machine, this tool provides the ability to view ViewState, ASP.NET trace messages, contents of your cache etc.

The following is a list of features offered by the tool:

  • A warning when either debug or trace have been turned on. Ability to hide trace information from the page, and view it in a separate dialog, so it does not get in the way of your page's layout.
  • Ability to view the page's view state (in various forms: raw, parsed, and decoded) to help you optimize your state management logic.
  • Ability to view items stored in cache, and remove them for testing purposes.
  • Ability to shutdown the application (unloading the associated appdomain), in order to test starting it from a clean state.
  • Ability to log all HTTP (and HTTPS) traffic between the browser and your server, and view request and response details, including those performed via XMLHttpRequest.
  • Ability to view the live HTML DOM using a DOM Inspector that allows viewing all elements, selected elements, or elements matching ID or CSS class. For each element, you can see the markup, attributes, and style attributes.
  • Ability to view rich error information for script errors (full call stack, script URL and line number), as well as a script immediate window to execute some script against the current document.

Saturday, November 11, 2006

And the Iron Architect winner is...

João Martins (Jota) won the TechEd Iron Architect hosted at TechEd Developers.

The solution Jota presented was based on interest tagging taken from sessions previously attended, thus creating a tag cloud capable of representing interest correlation between attendees. Congratulations for this awesome design!

So, if the next TechEd is under heavy rain, don't forget who's responsible for the cloudy days :)

Thursday, November 09, 2006

Vista has just been RTMed!

Finally, it's here. Read all about it. Here's what we really want to know:

That being said, Windows Vista’s journey is not yet done. PC makers, device manufacturers and software developers can finalize work on their products and applications to ensure great customer experiences when Windows Vista becomes available -- to our volume license customers this month and consumers on January 30, 2007.

Wednesday, November 08, 2006

TechEd2006 Day 1 - Keynote

Day1 from TechEd 2006 is done.

I'm afraid I haven't seen much new stuff to tell you about, but day 1 is kind of an introduction.

My first session for today was:

KEY01: Windows Vista, the 2007 System and AJAX

The presentation was a normal marketing one. It would pass unnoticed except for the appearance of a 10 year old Microsoft certified girl from India showing a calculator she designed in C#. For most respect that I hold for that girl, I think it was somewhat paternalist and unnecessary.

A note for Hejlsberg presentation on Linq, a very efective one - man, the guy wrote a lot of coding without intellisense, and it mostly run with no errors! Eh, eh, eh, great!

New goodies

.NET Framework 3 is out! Finally my development systems will get stable, and will be easier to install CTPs on the same system.

Office 2007 is now in RTM. Hopefully Sharepoint 2007 will be out soon.

Sunday, November 05, 2006

TxF, TxR and KTM : ACID File System

TxF is a Vista technology that allows you to manipulate files and the registry in a transacted way, in concert with other transactional operations on the system or the network. It stands for Transactional NTFS. TxR is the registry counterpart. Both of them are managed by KTM (Kernel Transaction Manager).

It was about time! By the way, hope nobody has forgotten to include WebDAV in the deal.

Read more about it here.

Dynamic languages in ASP.NET performance

In The New Dynamic Language Extensibility Model for ASP.NET, David Ebbo claims statically compiled languages often loose their natural performance advantage during the lengthy and costly process of the HTTP request.

This is, to some extent, true. Let me present you with some arguments about when this claim may fail.

First, let's not forget MTS and Microsoft MTS evangelization. Back in the late 90s, Microsoft convinced many of us (myself included!) to use MTS for data tier in general, whether multiple database access was involved or not. They also claimed that the out-of-proc and MTS overhead was limited by the rest of the pipeline, and they were wrong.

Now for simple demos, I believe David has a point. But for simple demos, even Microsoft demos work, and we wouldn't want to build most of our corporate over those, would we?

My worries goes to the layers we often need to produce when architecting corporate applications. We have to build instrumentation and exception management, we have to enrich the ASP.NET controller and we want to know the soonest possible (even before unit and integration tests) if something breaks.

For last, let's not forget next version of Perl, the duct tape of the internet, the king of dynamic languages, who's strategy passes along with bytecode compiling and the addition of static types.

REF: Tips/Tricks and LINQ Slides+Demos

Scott Guthrie post his LINQ Slides+Demos from my Talk in Dallas.

He compiles a few in particular worth reviewing:

  • Building and using a LINQ for SQL Class Library with ASP.NET 2.0
  • Building a Photo Tagging Application using ASP.NET 2.0, LINQ, and Atlas
  • Using LINQ with ASP.NET
  • Using DLINQ with ASP.NET
  • DLINQ with Stored Procedures
  • Understanding LINQ to SQL Query Translations
  • Saturday, November 04, 2006

    Dina Programming Font

    Here's an interessant font. Dina is a font designed for programmers.

    In designing a programming font the following guidelines were followed:

    • Needs to be monospaced
    • It has to be easy to see the difference between i, l, 1, I
    • It has to be easy to see the difference between o, O, 0
    • The symbols used in programming languages have to look 'right'
    • Braces should line up nicely
    • Still has to be pleasant to read passages of text

    Friday, November 03, 2006

    Microsoft Office Outlook Connector

    With Outlook Connector, you can use Microsoft® Office Outlook® 2002(XP), Outlook® 2003 or Outlook® 2007 to access and manage your Windows Live Mail or Office Live Mail accounts, including e-mail messages, calendar, tasks, notes, and contacts.

    Writing Accessible Web Applications

    Microsoft has just release Writing Accessible Web Applications, a white paper intended to help readers better understand the issues involved in making Web applications accessible to people with disabilities.

    Funny how Microsoft's ASP.NET server controls don't follow most of this rules. Something in the line of "do what i say, don't do what i do". Biblical.

    Thursday, November 02, 2006

    REF: So you think you write unit tests? Think again

    A must! Please don't loose this very brief list of some of the different kinds of tests compiled by Chris Ashto, who is mad about the wrong naming of unit tests. You're right, Cris, often what most people call unit tests are in fact integration tests.

    • Unit test: tests a function or class in complete isolation from other code in the system. If the item under test has dependencies, those dependencies are replaced by fake ("mock") objects. If it touches the filesystem, hits a database, access a network, or displays UI, it's not a unit test. Unit tests have practically no setup and run extremely fast.
    • Integration test: tests the interaction of two or more classes and functions working together. Multiple layers are usually involved. Whereas unit tests ensure that the "bricks" in your system are square, solid, and uniform, integration tests ensure that they are stacked up correctly and glued together the right way. A test that verifies data entering one end of a pipeline will come out the other end is an integration test. So is a test that verifies that data is unchanged when round-tripped through a reversible process.
    • Characterization test: tests unknown or "legacy" code for response to stimuli. Often used during refactoring to ensure that the behavior of the code is unchanged. Characterization tests are often written in total ignorance of the inner workings of the code, and the expected results are often completely unknown as well.
    • Developer test: any sort of test (unit test, integration test, acceptance test, stress test) written by a developer as a design and development aid, as opposed to a QA engineer ensuring the correct operation of the code after the it has been "thrown over the wall" to Test.
    • Automated UI test: a test that simulates a fixed series of user interactions, such as mouse clicks and key presses, and the resulting UI is then compared to an expected result.
    • Regression test: a test which ensures that bugs that get fixed stay fixed.
    • Checkin test: a series of tests used to verify that the product is not accidentally broken by new features or bugfixes, prior to the change being submitted. Checkin tests do not exhaustively test everything (they still need to run in a reasonable amount of time), but they should give good coverage over certain areas. Checkin test suites are usually mostly unit tests, because unit tests execute so quickly. But integration tests and regression tests can be good candidates for inclusion as well.

    Project Management Integration with Visual Studio Team System

    Microsoft efforts towards the integration of the software life-cycle is starting to pay up.

    Here's a very brief case study from Infosys: Infosys Demonstrates Project Management Integration with Visual Studio Team System.

    Another very interesting from Avanade, which has a solution that adds value to the Visual Studio Team System: Building the Avanade® Software Lifecycle Platform using Visual Studio 2005 Team System.

    Wednesday, November 01, 2006

    The risks of obtaining and using pirated software

    I found this article at bink.nu:

    This white paper from international market-research firm IDC presents the results of an investigation by IDC into the prevalence of malicious code and unwanted software from Web sites offering counterfeit product keys, pirated software, key generators, or crack tools for Microsoft Windows XP and the Microsoft Office System.

    The investigation also examined the presence of malicious code in key generators and crack tools that are available for download from various Web sites and peer-to-peer networks.

    The intent of the research was to determine the security risks of obtaining and using pirated software.

    Key findings

    • 25 percent of the Web sites we accessed offering counterfeit product keys, pirated software, key generators or crack tools attempted to install either malicious software or potentially unwanted software. A significant number of these Web sites attempted to install malicious or unwanted code.

    • 11 percent of the key generators and crack tools downloaded from Web sites contained either malicious or potentially unwanted software.

    • 59 percent of the key generators and crack tools downloaded from peer-to-peer networks contained either malicious software or potentially unwanted software. A significant amount of malicious or unwanted code was present in the key generators and crack tools.

    • The cost of recovering from an incident of malicious software on a single workstation could exceed one thousand dollars (USD). The cost of lost or compromised data could exceed tens of thousands of dollars (USD) per incident. Thus, the cost savings of using pirated software could be eradicated with a single security breach.

    • The malicious and unwanted code found is indicative of the shift noted by security professionals in attackers' motivations. Attacks have evolved from hacking for fun to seeking confidential information assets and other malisiouc intent. By offering pirated software, crack tools, and key generators, attackers could lure potential victims.

    • There are several methods for obtaining and using counterfeit software, including acquiring counterfeit product keys, obtaining "key generator" programs, and using crack tools to bypass licensing and activation mechanisms. IDC investigated the security risks of visiting the Web sites and peer-to-peer networks that use these methods to distribute counterfeit software.

    • Simple Web searches often led to Web sites that offered pirated software, key generators, crack tools, and so on. Furthermore, it was easy to locate key generators and crack tools for Microsoft Windows and the Microsoft Office System.

    Nothing new here. My advise to you: if you ever need to retrieve that serial that you lost when you threw away the CD case (it happened to me!), please use an isolated virtual machine and throw away the snapshot.

    Microsoft Application Verifier

    I just found this link, but haven't tried yet. Is this a BoundsChecker's like application? If anyone has used this, please leave a comment.

    Here's some info from Microsoft:


    Application Verifier is a runtime verification tool for unmanaged code that assists in finding subtle programming errors that can be difficult to identify with normal application testing. Run the Application Verifier tests on your code to identify issues within heaps, handles, and locks.


    Application Verifier is a runtime verification tool for unmanaged code that assists in quickly finding subtle programming errors that can be extremely difficult to identify with normal application testing.

    Application Verifier is designed specifically to detect and help debug memory corruptions and critical security vulnerabilities. It makes it easier to create reliable applications by monitoring an application's interaction with the Windows operating system, profiling its use of objects, the registry, the file system, and Win32 APIs (including heaps, handles, locks, and more). It also includes checks to predict how well the application will perform under Least-privileged User Account operation, compatibility tests to be used in logoing, and print tests to verify your usage of the print subsystem.

    Running Application Verifier is easy; simply turn on the tool then run your project and go through your normal testing scenarios with a debugger attached. When your tests are completed, view the Application Verifier logs for any errors that may have been detected

    REF: The law of leaky abstractions

    Today I'm recovering an old article from Joel Spolsky, the law of leaky abstractions.

    Joel states:

    All non-trivial abstractions, to some degree, are leaky.

    And continues:

    The law of leaky abstractions means that whenever somebody comes up with a wizzy new code-generation tool that is supposed to make us all ever-so-efficient, you hear a lot of people saying "learn how to do it manually first, then use the wizzy tool to save time." Code generation tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don't save us time learning.

    And all this means that paradoxically, even as we have higher and higher level programming tools with better and better abstractions, becoming a proficient programmer is getting harder and harder.

    He ends with a very disappointed view about this law dragging us down. Though I can understand some of the new problems we encounter when moving up the abstraction level, I absolutely believe that this benefits surpass the costs.

    For one thing we agree, as stated above: "learn how to do it manually first, then use the wizzy tool to save time." That seems like the smart thing to do.

    Development Catharsis :: Copyright 2006 Mário Romano