Added the ability to get trackback pings

by Mike Linnen 23. June 2006 15:31
Added the ability to get trackback pings

I added in the ability for my site to receive track back pings.  The pings get logged into a database table.  I only allow one trackback per Url and Blog Unique Id.  I also added the ability to only allow trackbacks if the Url is really referencing the blog identifier it is attempting to ping.  This should hold down spam some.  I still need to do the following around trackbacks:

  • Add in the ability for this site to ping other sites. 
  • Add the ability to remove trackbacks in the admin pages
  • List trackbacks on the Blog Detail page
  • Add the ability to show a count of all trackbacks 

Completed tutorial 1 and 2

by Mike Linnen 22. June 2006 00:49
Completed tutorial 1 and 2

I just completed the MyTutorial1 and MyTutorial2 tutorials for the Microsoft Robotics Studio.  I used the Lego RSX 2.0 hardware for the tutorials.  I noticed a couple things that stumbled me for a short time.

Problem #1
When you launch the tutorials from the visual studio IDE the services never seem to communicate with the RSX.  I was able to get the service to work using the DSSHOST executable passing in the manifest file.  So I looked at the parameters that the IDE is passing to the DSHOST when you debug and it was using the contract command line option instead of the manifest option.  So I changed it to use the manifest and the service ran fine.

So change the command line debug argument -contract from:

-manifest:"C:\Microsoft Robotics Studio (June 2006)\samples\

And you should be able to launch the service from the IDE

Problem #2
On tutorial number two there is no step to add in the legorcxmotor service to the manifest, so the service never gets started correctly when you run the application from the IDE.  So add the following to the MyTutorial2.manifest.xml file:


Overall I found the two tutorials informative. I at least got my feet wet with using the framework. I might try a few more tutorials before I attempt to write a driver for the BX24.

Microsoft Robotics group?

by Mike Linnen 20. June 2006 10:25
Microsoft Robotics group?

Wow, did you know that Microsoft has a robotics group?  I just noticed that they released a Microsoft Robotics Studio.  I am downloading this technical preview now to check it out.  This to me is a huge leap for the robotics industry.  Putting the power of Microsoft development tools to build robotic applications is a win win solution.  I finally can merge my two passions of software development with Microsoft technologies and building robots!  I am very excited about this project.  Make sure you check out the Channel 9 video about the group.  Keep an eye open for your favorite robot somewhere in the background of the video.

Some projects the group is working on.

Key features of the platform

  • Concurrency and Coordination Runtime (CCR) - An asynchronous messaging library that makes managing state changes easy to the developer.
  • Robotic remote control via a web browser
  • Scripting robotic commands via jscript to create complex robot movements
  • Multiple hardware platforms.  Currently supporting Lego Mindstorms (RSX and NXT) and fischertechnik.
  • Support for 8, 16 and 32 bit processors
  • Separating state from behavior
  • DSS - A services layer
    • Support for service contract programming where multiple input or output devices can be used by simply altering what device is bound to the contract.  Example:  A contract could be established that controls the robots movement.  A keyboard device could be bound to the contract to provide the input that moves the robot.  Or a joystick device could be bound to the contract to provide the input to move the robot.  The point here is that support is in place for a pluggable architecture or re-usable components.
  • Subscribe publish model that allows for a lot of autonomous agents to react to state changes.  This promotes a decoupled environment.  You can create a published event like bumper touched and later build a component that subscribes to that event and reacts to it.  There can be multiple subscribers to the event. 
  • Model simulation - You can model your environment and run your software without any hardware.
  • Since the applications are service based you could distribute services across multiple machines. 
    • Example if I create a service that monitors my door bell and expose the service to the public you could subscribe to my service and perform some action when my door bell is rung.

Well I could go on and on about this new platform but I want to get started on using it.  I will first go through the tutorials to gain an understanding of how it works.  Luckly I have a Lego Mindstorms RSX kit.  After the tutorials are complete I will try extending the services to support a BX24 bassed hardware device.

Using Virtual PC

by Mike Linnen 14. June 2006 14:48
Using Virtual PC

I have been using Virtual PC for various reasons around software development.  I find it very useful to maintain old development environments.  One of the big gotchas that I have run across is copying virtuals and attempting to use them on the network at the same time.  A copied virtual assumes the same machine identity so it ends up colliding with the original virtual on the network.  I know you can prepare a virtual image to prompt you for a new machine name when it first comes up but I have never looked into how it is done.  I found this article on using Virtual PC in a development environment.  It has a number of tips and tricks I have been using for a while but more importantly it has the instructions on how to make a virtual unique on the network.



Another Wiki

by Mike Linnen 14. June 2006 11:03
Another Wiki
Even MSDN is using a wiki to share information.  I like the fact that you can use the tree control to quickly navigate the content.



Added RSS Feed to the site

by Mike Linnen 8. June 2006 02:39
Added RSS Feed to the site

I went ahead and added a single RSS feed to my site.  I ended up using the RSS Toolkit that can be found on Dmitryr's blog.  It was very easy to get the tool kit to publish RSS.  I need to bounce the RSS XML format against the 2.0 specifications to be sure I am emitting decent RSS. 

I had one problem with the control that comes with the tool kit.  I attempted to create multiple channels based on the Blog Catagories that I have defined in case someone would want to subscribe to only a specific catagory.  However when I placed this control in a repeater whenever a post back occurs I get an error stating this "is not a valid virtual path".  I suspect it has something to do with the control when it is trying to append the ChannelName to the query string.  For now I just removed the subcatagory RSS feeds.

Moving off of .Text blogging software

by Mike Linnen 7. June 2006 03:33
Moving off of .Text blogging software

Well I decided to move my blog off of .Text and onto a custom blog application that I am writting from scratch.  I didn't really have any problems with .Text but I wanted to create some new features and I did not have the source.  So as it stands right now I have limited blogging features in my custom solution.  I was able to migrate my data out of .Text and into the new schema without much issue.  I have some old links to the old blog that will have to be changed.

I will be slowly adding the following features:

  • RSS Feeds - Done 6/4/2006
  • Ability to add comments
  • Blog search
  • Support for blogging API so that I can add blog entries from a smart client application
  • Submit blog entry by email
  • Ability to create blog entries but delay the publishing of the entries - Done 6/10/2006

Code Coverage of web applications in .Net 2.0

by Mike Linnen 2. May 2006 22:36
Code Coverage of web applications in .Net 2.0

In my day job at JDA Software I have been looking at code coverage options for determining the effectiveness of our testing.  My team uses four types of tests to test the software we write.

  • Unit Tests - Tests focused on a single component of the application.  These tests are MSTests that exercise a specific software component and typically mock out any dependant components.
  • Integration Tests -  Tests focused on multiple components of the application.  These tests are MSTests that exercise a component and it's dependencies to ensure the components work together.
  • Manual Tests - Tests that are executed by are testers manually from a GUI interface. 
  • Automated functional test - Tests that are scripted in a fashion that can be repeated build after build to ensure the build is still functional.  Sometimes referred to regression testing.

The goal of implementing a code coverage process was to determine the effectiveness of the types of tests listed above.  Visual Studio 2005 Team Edition (for testers and developers) provides some nice code coverage features we wanted to tap into.  Code coverage of unit tests and some integration tests worked fine from the visual studio IDE.  But for the integration, manual and automation tests that used web services we began to run into problems.  The web services that where hosted under IIS where not getting covered.  After some research I determined that code coverage under ISS was not going to work.  So I started looking into alternatives.  One thing I noticed is that web service projects that where not hosted under IIS had no problem getting covered.  These types of projects used the development web server that comes with ASP.NET 2.0.   So I decided to look into using the same development web server in place of IIS for code coverage purposes.


The generic steps for establishing code coverage for web services is as follows:

  1. Turn on instrumentation for the binaries that you want to cover
  2. Start the coverage monitor
  3. Start the development web server for a specified unused port pointing to the folder that is supposed to represent the web service.
  4. Execute your tests
  5. Stop the development web server
  6. Stop the coverage monitor
  7. Review the results in Visual Studio 2005

For the following commands use the Visual Studio Command prompt.


Turning on instrumentation of assemblies from the command line is done by the following command:

vsinstr -coverage myassembly.dll


To start the coverage monitor you use the follwoing command:

start vsperfmon -coverage -output:mytestrun.coverage


To start the development web server use the following command:

start WebDev.WebServer /port:8080 /path:c:\mypath


To stop the development web server simply right click on the task bar icon for the web server and select stop


To shutdown the coverage monitor use the following command:

vsperfcmd -shutdown


We were now able to do code coverage of all types of tests that we planned on implementing.  Some of our test runs are going to executed by the build and some will be executed by the testers.  Since VS.Net 2005 supports the ability to merge code coverage results this should not be a problem to combine all runs into a single report that now shows how effective our tests really are.


Some references to articles that help me come to this conclusion:

Command Line code coverage:


Using WebDev.WebServer from the command line:,1895,1886246,00.asp

Putting XP on a USB key

by Mike Linnen 3. March 2006 00:36
Putting XP on a USB key

I found this today

I have not tried it myself but if I get a chance I might give it a whirl.



More updates on copy podcasts program

by Mike Linnen 2. March 2006 00:16
More updates on copy podcasts program
Well I have been using my Copy Podcast to memory card utility for over 6 months now.  Even though it is only a command line program I have enjoyed using it because it makes moving the podcasts I like to listen to onto my Pocket PC a lot easier.  Only thing I wish I had is a feature to rank some of the podcasts higher than others so that they would get onto my player faster than the podcasts I rank lower.  I think I will go ahead and migrate the program to .Net 2.0 and add in this feature.

About the author

Mike Linnen

Software Engineer specializing in Microsoft Technologies

Month List