Category Archives: .Net

Debugging Home Run – Problem Step Recorder in Windows 7

4E38RY7KZA4J

I just got an email about a really cool new tool built into Windows 7 that Microsoft used to debug their new platform. It is called Problem Step Recorder. The best thing to do is to post a snippet of the email right here. I think it says everything perfectly:

“In case you’re not aware of this, here is a little known Microsoft tool bundled with Windows 7 that can be extremely useful to illustrate a problem when testing an application. The diagnostic tool called “Problem Step Recorder” was originally produced by Microsoft during the development of Windows 7 Beta to assist their Quality Assurance team in debugging the OS. It uses a combination of screen captures with mouse tracking to record your actions and can be a great way of describing a problem to others. The program is launched from the Start menu by typing ‘psr’ or ‘psr.exe’ in the search field. You’ll get a floating applet that looks like this: When you hit the Record button, the applet tracks your mouse and keyboard input while taking screenshots that correspond to each new action. When you stop recording your session is saved to an HTML slide show that recreates your steps. It also allows you to add comments to further document the problem. I think it can be very useful as an attachment in [your bug tracking tool] for those hard to describe issues or as a “How To” document for end users.”

Which leads to other ways of doing this… you could youse WebEx or Windows Media Encoder to document any bug as a step-by-step. If you use WatiN, Selenium, or VS2010, you can also use their recorders to document any bugs you may find in a web application, hand that to the dev team, and then there is no guessing how to reproduce the bug.

Kudos to Microsoft, and to the folks who uncovered this!

Blogroll – SEO, Web Analytics, Usability, Upcoming Conferences, and Other Interesting Stuff

These are just some of the articles I have read in Google Reader over the last month and a half that I have found interesting.  I thought maybe you would too…

SEO

Web Analytics

Usability

Upcoming Conferences

Other Interesting Stuff

Dynamic sitemap.xml Files in ASP.Net

I know this is not a new topic. It is not even a new topic for me. I have posted on defining what a sitemap.xml file is for, and on dynamic sitemap.xml files in C#. But my team is finally ready to start implementing this as part of our custom development platform for the external brand sites.

When one searches for dynamic sitemap.xml creators in Google, you get a plethora of sites back. Some are code, some are online based tools. Since we are looking to create our file dynamically from within the site on demand, that helps narrow down our search. I have found a small number of code sources we can use to start with.

There is still the HTTP Handler from my original post. This project, ASP.Net Google Sitemap Provider by Bruce Chapman, is available on CodeProject. You can also read about it in a blog post on his iFinity site. It still looks like the most flexible solution.

There is a great looking solution on the ASP.Net site by Bertrand Le Roy called Google Sitemaps for ASP.NET 2.0. It has been ported over into the ASP.Net Futures July 2007 package. This solution is an HTTP Handler that uses the Web.sitemap file to generate a sitemap.xml file on the fly.

Another interesting idea I found in my searches was some code that shows a site map when a user gets a 404 error. This solution is also implemented as an HTTP Handler, but is only for 404 Page Not Found server errors. This code is also available on CodeProject in an article called Generate a Google Site Map Using the HTTP 404 Handler.

Here are some other sites of note to look at. They have similar solutions to the ones above, and it is always a good idea to see what other people have come up with.

If anyone has any additional resources, ideas, or suggestions, please leave me a comment and let me know what you think.

Generating sitemap.xml files in C#

One of the things that I would like to tackle before the end of the year is including sitemap.xml files with all of the new sites that my team develops. We could generate these files manually, but this would be tedious at best. There are a number of tools that will generate these files for you. Some of them are stand-alone desktop applications (Sitemap XML). Some web-based tools are built in PHP (AutoSitemap), Perl (TM Google Sitemap Generator), Python (Google WebMaster Tools), etc., and you can use in your own local environments. There is even a web site that you can submit your URL and it will generate the sitemap.xml file for you (XML Sitemaps).

My requirements for this feature are pretty simple:

  • Something built in C#
  • Something we can include in our projects
  • Something that can be run as part of our build process
  • Something that can be completely hands-free

So far, the only thing that I have found is the GoogleSiteMapProvider on the CodeProject web site. This project:

  • [Is] instantly useable with the majority of ASP.NET applications
  • [Is] a full ‘binary’ solution – no integration of code or compiling – just drop in a binary, modify the web.config and go
  • [Is] extendable so that more complicated ASP.NET applications could redefine the provider without restriction

It seems like this is a great fit for our architecture. The solution was to have a single assembly with three main types:

  1. An HTTP Handler which would return the XML on request (called GoogleSiteMapHandler)
  2. A Provider Type (called GoogleSiteMapProvider)
  3. A Controller class to glue the Handler and Provider together

This is a great place for us to start. The source code is available, it seems to fit my needs, and is simple to use.

Anyone else using something different? Do you have any other ideas? Have you found any other tools that might be useful for this? Leave a comment and let me know.

Week(s) in Review – Test, Test, Test!

It has been a bit of time since I have posted, and over that same period of time, I have been lax in reading the blogs I am subscribed to. The last 2 weeks the team has spent lots of time implementing Watin UI tests on one of our new sites. We have started to flush out a shared reusable library and leveraging that to develop site-specific unit tests. Roy Osherove has written three articles over these past two weeks that are very interesting, and directly relevant to the realm of Automated Unit Tests. One article is about A New Unit Test Platform called XUnit, which has many improvements over nUnit. The second article is about Code Reuse in Unit Tests. And, the third article is about Throw Away Test vs Tests That Last.

Scott Guthrie and Scott Hanselman have also written two great articles in the Continuous Integration arena. ScottGu’s article was regarding Automating Environment Specific Web Config Settings. Scott Hanselman wrote an article about Managing Multiple Configuration File Environments With Pre-Build Events.

Take a look at these articles They are great reads.

Infragistics shows off their .Net Wares

Infragistics came to the office yesterday to show us their shiny new products and to talk about their roadmap for development. We scheduled the meeting as part of the .Net Working Group series, and was the first working group meeting of 2007. Jack Schwinn, one of our Sales Reps, brought in Devin Rader and Andrew Flick, Product Managers for Web Client and Rich Content respectively. The demo was led by Tony Lombardo, their Infragistics Evangelist. They covered a wide variety of topics and did a great job answering our questions. Here is a run-down of my notes from the demo:

ASP.Net Controls

Tony walked us through the controls that we have not seen since our last volume release. He walked us through the Excel, XPS and PDF Exporters, with support for formulas and multiple tabs. There is also an Excel Importer control. I think we will have a lot of use for these controls in our internal projects. They explained the Calc Manager, which is an easy way to add Excel functionality (like a mortgage calculator) very simply to the page. They also gave us a demo of the new WebGauges graph controls. The demo he showed was 101 different variations of the radial gauge and the linear gauge. In terms of their roadmap, they will be supporting .Net 2.0, 3.0 and 3.5 in the future, with both their native Ajax platform and with the ASP.Net Ajax platform from Microsoft.

WinForms

Since we do not work a lot on WinForms, we spent only a few brief moments on the new controls released since our last purchase. There has been a new WinDesktopAlert control (think “Toast Control”), which is a small popup window control, similar to the Outlook mail notification window, in the lower right corner of your screen. The second control they discussed is a new Ribbon control, which works within the ribbon functionality in Microsoft Office 2007.

XAM Showcase

Their XAM Showcase is the sandbox work that Infragistics is doing with WPF. They gave us a preview of their Carousel Control, Data Carousel control, and WPF charting controls. You can see some of their preliminary work at http://xamples.infragistics.com . These work with XBAP (or XAML Browser Applications), the browser based application model for WPF. MSDN has put together a great WPF XBAP video about it. And, if you are wondering what is the difference between XBAP and Silverlight, read this great forum chain on http://silverlight.net .

Silverlight

There are dramatic differences working with Silverlight 1.0 (which is still not released) and Silverlight 1.1 (which is much more exciting). In a nutshell, Silverlight 1.1 will come with its own lightweight version of the .Net Framework. This will provide more possibilities to the developer. And so it is with Infragistics. They are ramping up to leverage Silverlight 1.1. Their first set of sandbox controls will be a text box control, a graph control, and a scrolling toolbar panel control.

The meeting was very exciting, and I see lots of possibilities for future development. The controls I am most excited about are the Excel Exporter controls, the WebGauges, and the soon-to-be-developed Silverlight controls. What excites you about these new controls, or about the Infragistics roadmap?

Microsoft Has Entered the Building!

Microsoft came to the office today to walk us through their Technology Roadmap. David Solivan, our Architect Evangelist, came in and spent 4 hours walking through the future vision of Microsoft and their products and services. His presentation was split into two sections – Enterprise Product Roadmap and Enterprise Developer Roadmap. Below are my notes from the meeting.

Enterprise Product Roadmap

Office Suite

  • The focus in the mid nineties was on productivity. Now that vision has been achieved, the focus has shifted:
    • Collaboration
    • Content Management
    • Search
    • Business Intelligence
    • Streamlined Processes
    • Portals

Windows Mobile

  • The Windows Mobile team is working on delivering the following new features and functionality for the Tablet PC, Pocket PC, and Smartphone platforms:
    • Maps – Pocket Streets, MapPoint
    • Development Tools – Visual Studio, .Net CompactFramework
    • Security – ISA Server
    • Data Management – SQL Server CE, Notification Services
    • Content – MS Reader, Media Player
    • PIM and E-mail – Exchange, ActiveSync, Outlook
    • Thin Client – Terminal Services
    • Business Solutions – Great Plains, Microsoft CRM
    • Web Services – MSN Mobile, Pocket MSN, etc

Server System

  • The Microsoft Server System is expanding, with a focus on providing solutions in these areas
    • Security Infrastructure – Refocus to make sure that security is first and foremost in Microsoft Server software.
    • IT Operations Infrastructure – Operations Manager, System center, want to manage software on the server, both applications and OS, after launch, for the enterprise.
    • Application Infrastructure – SQL Server, BizTalk Server
    • Collaboration Infrastructure – Exchange, SharePoint, Live Communications

Visual Studio

  • Visual Studio 2008 is currently in Beta, and the improvements in the next version have been focused on the following trouble spots:
    • Team Collaboration
    • Performance and Analysis Tools
    • Secure Applications
    • Integrated Quality
    • Real Time Visibility

Business Solutions

  • There are so many different silo and matrix products that Microsoft is working on that they were too numerous to deliver. Here is a list of a few that were mentioned briefly:
    • Axapta
    • Great Plains
    • Navision
    • Solomon
    • CRM

Partner Solutions

  • Microsoft has connect with other suppliers, leveraging their experience and deeply embedded applications in their industries.
  • They have worked out consulting services with these partners to leverage their experiences with Microsoft products

People Ready Business

  • This is Microsoft understanding that they are not delivering their products and services to corporations, but to the people in those companies. Microsoft’s vision is to leverage their software and services to:
    • Advance Business with IT Solutions
    • Deliver Services Oriented Architecture
    • Manage Complexity, Achieve Agility
    • Protect Information and Control Access
    • Productivity Evolution

Enterprise Developer Roadmap

.Net Framework 3.0

  • The next version of Visual Studio more tightly integrates the New Framework 2.0 Classes – WPF, WCF, WF, and CardSpace.
  • It is not really as big a leap forward as the .Net 3.5 release will be.
  • Why a small improvement gets a full release, and a big improvement will be a small release is a mystery except to the developers.

Visual Studio 2005, Team Studio, and Team Foundation Server

Visual Studio Team Studio has only been released since 2005, and will be getting a major overhaul with the next version.

  • Transparency into project Status
  • Manage Distributed teams and collaborate more easily
  • Lightweight, agile process
  • Integrated automated unit testing and improve software quality (similar to nUnit, nCover, FXCop, LoadRunner)
    • dashboard for results
      • bug discovery rate
      • code churn
    • database change management
    • integration
    • database unit testing
    • Process Templates – Agile and CMMI
    • Team Foundation Source Control – database based, not file based
  • VS Team System 2008
    • Integration for Database professionals
    • AJAX support for web tests
    • Continuous Integration and build
    • improved testing performance
    • Newer code metrics (i.e. cyclomatic complexity, maintainability index)

Enterprise Library and Software Factories

  • This is where Microsoft sees their biggest innovation. Writing software that will write software is not new… but implementing that idea on this scale is an interesting idea.
    • Reusable code library
    • Part of Patterns & Practices
    • Application Blocks
    • Wizards, Templates, Recipes
    • Metropolis Concept – Software Development mirrors Manufacturing
    • Templates
    • Software Factory is a way to leverage all of these pieces to generate tools, applications, web sites, etc. like a manufacturing plant

Popfly

  • This is a cool web site that allows you to integrate a suite of services in new and interesting ways…
    • Service Mash-ups
    • Microsoft’s focus of software + services
    • The demo linked a Yahoo Image Search service with a Whack-A-Mole display service, and within a few clicks we were looking at a Whack-a-Terrell-Owens game
    • Can it be used Internally (Enterprise) as well as External (Internet)

Summary

This was definitely a long meeting! It was great to have Microsoft come in and walk us through their roadmap. This gives us great insight as to what is coming up next.

For me, a portion of the content was a repeat from the Microsoft Healthcare Conference in Atlantic City and from the Mix 07 conference in Las Vegas. Those conferences each had a Roadmap session, and discussed the future of Presentation, Communication, and Workflow Foundation, CardSpaces, and Silverlight. The Enterprise Product Roadmap that David covered was new material for me, and I was glad to see it. The idea of software factories was very interesting from the first time I heard David mention it a few months back, and hearing more piqued my interest again.

The most interesting topic to me, though, was the collaboration and continuous integration improvements in Team Studio. It looks like it is leaps and bounds ahead of where it was, and I would love to be able to pilot that with my team. Maybe that sounds like an objective for 2008… hint hint…