May 2008 - Posts
A colleague of mine showed me this and looked around for some information about it. Here it is:
Sysinternals Live: We're excited to announce the beta of Sysinternals Live, a service that enables you to execute Sysinternals tools directly from the Web without hunting for and manually downloading them. Simply enter a tool's Sysinternals Live path into Windows Explorer or a command prompt as \\live.sysinternals.com\tools\<toolname> or view the entire Sysinternals Live tools directory in a browser at http://live.sysinternals.com.
Everyone knows (or, should know) that values values retrieved from the GetHashCode method should not be persisted for later use, specially with strings, because:
The behavior of GetHashCode is dependent on its implementation, which might change from one version of the common language runtime to another. A reason why this might happen is to improve the performance of GetHashCode. [^]
Nevertheless, code that persist values retrieved from the GetHashCode method for later use can fall on your lap. And if you need to upgrade your code to, for example, use WCF or WF, you have a problem.
The usual solution would be to use Reflector to see how it was done in the 1.1 CLR and implement the same algorithm in the 2.0 runtime.
Unfortunately, the 1.1 implantation isn't managed.
Today, thanks to Nicole, I found System.Collections.Specialized.BackCompatibleStringComparer on the 2.0 CLR. This class implements the 1.1 CLR String.GetHashCode algorithm and can be found in the System.dll and System.Windows.Forms.dll assemblies. You can't use it because it's internal but you can see its implementation using Reflector. You can also see it here.
Now I have a few questions:
Typemock has updated its Developers Community Site with new sections.
Besides the forums, there's a new add-ons page where anyone can share her/his tools or snippets (I guess I'll have to brush up my Typemock Snippets For Visual Studio to add there) and an experts page (guess who's there).

Justin Van Patten has posted on BCL Team Blog about the .NET Framework Client Profile.
In this post he goes through the list of the assemblies that will and will not be part of this client profile.
If you know how classes are packaged in the .NET Framework, you know that sometimes they are packaged, often, not by concern but by ownership. That's why you find a provider model on System.Web.dll, as well as HttpUtility, or even the Cache (that can be very useful in non-web applications).
If you read through the comments you'll come to the conclusion that there is a need to several client profiles (or a bootstrapper that will be cooked up by the developer, which is worst). Some of these profiles could be (loose definition):
-
Application Foundation - mscorlib.dll, System.dll, System.Core.dll
-
Windows Forms - System.Windows.Forms.dll
-
Windows Communication Foundation (client) - System.ServiceModel.dll (broken in core and client only classes)
-
Windows Communication Foundation (server) - System.ServiceModel.dll (broken in core and server only classes)
-
Web - System.Web.dll (not the full fledged
ASP.NET just because you need
HttpUtility)
-
...
This could be taken to a level that the Silverlight, XNA, Robotics, Compact Framework would become profiles of the framework. Something like the concept of server roles for server operating systems.
I think that more important than what each one of us would like to see in this Client Profile is that the team is analyzing it.
Until recent I had never used FireFox (FF) because Internet Explorer (IE) was good enough for me.
I don't do much web page development and because I own licenses for Visual Studio (VS), HTTPWatch and IEWatch (tried the Internet Explorer Developer Toolbar but it keeps bowing up and killing IE and I've seen Nikhil Kothari's Web Development Helper installed and doesn't work well when non US English characters are displayed) I never needed anything else.
Over the years I've seen all the campaigning against IE and promoting FF as a better, more standards compliant, more secure and what else.
A few days back I had to do some work with ASP.NET validation summary and validators and needed to check if it worked on FF.
Talk about disappointment:
- FireBug is by far no better than the tools I've been using.
- FF needs its own proxy configurations - For me, any application running on Windows that needs its own proxy settings it's just a badly developed application.
- (I'm sure I'd find much more if I used it.)
IE isn't a good developer tool yet (not even in IE8 at this time [^]) and it should have been for a long time. Or, at least, VS should have better support HTML and CSS debugging.
But, on the other hand, Windows Internet Explorer is just another application built on top of the Web Browser Control[^] (which is part of the IE installation, but can be used by itself). You can build any Windows application that uses a Web Browser Control (I've built more than one). Looks like the same is not as simple with FF [^].
I don't intend to start a web browser war. I just wanted to state my disappointment. I guess FF fans set my expectation too high.
I used to share my podcast watching through a feed created using FeedDemon, NewsGator and FeedBurner.
It was very easy. All it took was to adding he post to a clipping folder created to that purpose. That folder was shared as an RSS feed and I ran it through FeedBurner to get some statistics and a more friendly URL. For downloading the webcast/pocast, I used FeedBurner's companion: FeedStation.
Because I listen to a fair amount of podcasts, I got myself an 8GB Zune. The Zune uses it's own software to load content and that software is capable handling podcast subscriptions, so I won't be needing FeedDemon and FeedStation for subscribing downloading podcasts.
Because I have a few subscribers to my feed, I wanted to keep it. Then I found PodShow [^][^] a created my onw profile and changed the source of the feed.
So, if you already are one of my followers you don't need to do anything. If you aren't and would like to be, go ahead and subscribe it.
Lately I've been analyzing various solutions for resource (applications, desktops and servers) virtualization, pooling and provisioning from the various players in this market (Microsoft, Citrix , VMware , Sun , HP).
There are many advantages to virtualization:
- Hardware consolidation with out the need for server consolidation.
- Energy cost reduction.
- Servers and desktops can be instantiated on demand. No more need to have machines turned on waiting for users.
- Hardware cost reduction.
- One big machine can host many servers and desktops.
- Ease of deployment and maintenance.
- Deploying is just copying a file.
- Patching can de done on a copy that is deployed after.
- Ease of diagnostics.
- If a problem occurs, it can be diagnosed on a copy that will be then patched and redeployed.
- Ease of development.
- When development teams need a new environment for a new application they just need to deploy and start up a copy of a pre-existing environment.
- Business continuity
- If a data center is taken offline for any reason, all it takes is new machines and the latest backup and you're up and running. (It's not that easy, but a lot easier than installing all the applications in the data center).
- ... and much more.
Lately there has been some discussions on database virtualization. Database systems are very resource intensive (both memory and I/O), but the advantages for business continuity purposes are starting to weigh in some IT departments' decisions.
When a co-worker and good friend of mine told me that Microsoft had virtualized MSDN and TechNet, I couldn't believe it. You can get the detailed report from here.
Like many people, I exchange a lot of e-mail.
Since I first read about Xobni, I've been thinking about installing it. When I read that Eric Legault (an Outlook MVP) uses it, I decided to install it. Looks like a good improvement to Outlook.
Eric Legault (an Outlook MVP) has released version 2.0 of his Picture Attachments Wizard. I was a big fan of this Outlook add-in when I was using Outlook 2003 and, even though Outlook 2007 comes with a preview feature, Eric managed to improve the Outlook 2007 experience with this new version.
Typemock released version 4.2.4 of its Isolator mock framework.
You can check out the release notes in The Typemock Insider blog and download it from the Typemock Isolator Download page.
When I installed my new machine I considered installing Windows Server 2008 with Hyper-V. But this my desktop not my server and I like desktopy things on my desktop and I don't need virtual machines running all the time, I thought Windows Vista plus Virtual PC 2007 (although x64 support on virtual machines would be nice) would be the right choice.
Yesterday I was trying the Developer Interface from InnerWorkings and I couldn't get it to work because Internet Explorer kept popping up Internet Explorer Enhanced Security Configuration errors from the InnerWorkings' Visual Studio add-in which blocked Visual Studio.
I know Rui uses Windows Server 2008 as his laptop operating system (as well as António) and I asked Rui how I could get rid of Internet Explorer Enhanced Security Configuration. Rui pointed me to this blog posts:
Looking through Systweak's series of posts about the Windows Server 2008 Desktop (see below) almost made me regret having installed Windows Vista instead of Windows Server 2008. But my next laptop will definitely be running on Windows Server 2008.
Windows Server 2008 Desktop
Yesterday I blogged about the cause of ASP.NET validators and validation summary slowness.
At that point I wasn't aware of the existence of the XHTML conformance configuration (thanks Nuno).
With the XHTML conformance configuration set to Legacy, the rendering of controls works like it worked in ASP.NET 1.1.
When building ASP.NET pages, if you use too many validators and validation summaries your pages can become very slow. Have you ever wondered why?
Lets build a simple page web page with a few validators. Something like this:
The page is composed of:
ASP.NET renders the ValidationSummary as a DIV and each validator as a SPAN and uses expando attributes to add properties to those elements.
According to the documentation, expando attributes are set dynamically from JavaScript to preserve XHTML compatibility for the rendered control's markup.
The problem is that all that JavaScript makes the HTML document larger and slower to execute than if the properties were rendered in HTML as attributes of the elements.
For such a small page, the difference in size approaches 2k bytes. If you add a few dozen validators to he page, the slowness is noticeable.
I'm all in favor of strict standards and standards compliance, but in this case, I wish XHTML would allow arbitrary attributes.
Mehfuz has been building a toolkit for creating LINQ providers and it's available at CodePlex: LINQExtender
He has even built a LINQ provider for flickr with it: LINQ.Flickr
Software development is still a very human oriented task. High level programing languages are some form of human readable language.
At some point you'll need to compare one or more files and see what changed.
This is a list of file and folder comparison tools that I came across at some point in time.
WinDiff
WindDiff is a free tool that comes with Microsoft support tools or software development kits.
It's old and doesn't have many features, but it's still able to compare files and folders.
WinMerge
Also a free tool, WinMerge has a few more features than WinDiff.
KDIff3
KDiff3 is also a free tool and can handle two or three files or folders.
Unlike the others, KDiff3 is a multi platform tool.
Compare It!
Compare It!, from Grig Software, it's not free (unless you own a licence for ApexSQL Diff), although not very expensive. This tool can recognize a few file formats like MS Word, Excel, PDF and RTF and has syntax highlighting for C++, Java, C#, Delphi and HTML.
Araxis Merge
Merge, from Araxis, is, in my opinion, the best file and folder comparison tool in the market. Imagine that it can even compare images. It also has a Virtual File System (VFS) API and comes with plugins for Perforce and Visual SourceSafe (a TFS plugin is overdue).
It's not free, but the feature set is rich.
The tool space for software architecture has been growing. There are new tools and continuous improvement in the existing ones.
Framework Design Studio
Last month Krzysztof Cwalina from Microsoft released the Framework Design Studio at MSDN Code Gallery.
The tool allows comparing two versions of an assembly to identify API differences: API additions and removals. Comparing versions of APIs comes very handy during API design process. Often you want to ensure that things did not get removed accidentally (which can cause incompatibilities), and as APIs grow, you want to review the addition without having to re-review APIs that were already reviewed. The tool, called Framework Design Studio (FDS) supports these scenarios. - from Krzysztof's blog post
Lattix
Lattix keeps improving its Architecture Management System composed of two tools:
The Lattix tools can be used in the following environments:
The site has lots of resources on its getting started section that can be used to evaluate the tools:
- Download a trial version of Lattix LDM
- Take the tour
- See a live Demonstration
- Assess your software
- Try a JumpStart project
The latest release (Lattix 4.1) was released on April 21, 2008.
NDepend
NDepend, from fellow C# MVP Patrick Smacchia, targets only the .NET Framework (stay tuned for more) is also in continuous development. Its UI is more familiar for Microsoft Visual Studio and Microsoft Office users than Lattix's UI and a really cool feature:
The site has lots of videos (both on the Home page and Getting Started page) and documentation on all the concepts used by the tool.
The latest release (NDepend 2.8.1) was released on April 26, 2008.
ApexSQL Enforce
ApexSQL Enforce, from ApexSQL, targets SQL Server databases allows to:
-
Ensure adherence to design standards in "real time"
-
Facilitate upgrades to new versions of SQL Server by identifying potential conversion problems before the database is ported
-
Automatically reverse or fix detected violations using generated "FixSQL" scripts
-
Enforce Naming conventions and ensure that SQL reserved words and special characters are not used
The site has lots of product information:
The latest release (2008.02) was released on Marsh 26, 2008.